From 8489dfac8bbfc9ce0917a15860680d13b7158a65 Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Tue, 2 Mar 2021 09:12:22 +0100 Subject: [PATCH] add test part timeout option for node server test --- .../HTTPInterface/AdminNodeServerTestPage.cpp | 1723 +++++++++-------- .../HTTPInterface/AdminNodeServerTestPage.h | 36 +- src/cpsp/adminNodeServerTest.cpsp | 842 ++++---- 3 files changed, 1308 insertions(+), 1293 deletions(-) diff --git a/src/cpp/HTTPInterface/AdminNodeServerTestPage.cpp b/src/cpp/HTTPInterface/AdminNodeServerTestPage.cpp index 0f06b8c79..84c63a508 100644 --- a/src/cpp/HTTPInterface/AdminNodeServerTestPage.cpp +++ b/src/cpp/HTTPInterface/AdminNodeServerTestPage.cpp @@ -1,857 +1,866 @@ -#include "AdminNodeServerTestPage.h" -#include "Poco/Net/HTTPServerRequest.h" -#include "Poco/Net/HTTPServerResponse.h" -#include "Poco/Net/HTMLForm.h" -#include "Poco/DeflatingStream.h" - - -#line 6 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - - -#include "../controller/NodeServer.h" -#include "../controller/User.h" -#include "../controller/HederaTopic.h" -#include "../lib/DataTypeConverter.h" -#include "../lib/Profiler.h" -#include "../lib/JsonRPCRequest.h" -#include "../model/gradido/Transaction.h" - -#include "Poco/Thread.h" -#include "Poco/DateTime.h" -#include "Poco/JSON/Stringifier.h" - -enum PageType -{ - PAGE_CHOOSE_TEST, - PAGE_RUN_4_SET_TEST, - PAGE_GET_TRANSACTION_RPC_CALL -}; - -#line 1 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_large.cpsp" - -#include "../ServerConfig.h" - - -void AdminNodeServerTestPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::HTTPServerResponse& response) -{ - response.setChunkedTransferEncoding(true); - response.setContentType("text/html"); - bool _compressResponse(request.hasToken("Accept-Encoding", "gzip")); - if (_compressResponse) response.set("Content-Encoding", "gzip"); - - Poco::Net::HTMLForm form(request, request.stream()); -#line 28 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - - const char* pageName = "Node Server Test"; - PageType page = PAGE_CHOOSE_TEST; - Poco::AutoPtr node_server; - Poco::AutoPtr node_server2; - Poco::AutoPtr user; - Poco::AutoPtr hedera_topic; - Poco::AutoPtr hedera_topic2; - int hedera_timeout = 4; - int sleep_ms_between_transactions = 1000; - - bool steps[8]; memset(steps, 1, 8 * sizeof(bool)); - - - if(!form.empty()) - { - auto node_server_id_string = form.get("test-node-servers", ""); - if(node_server_id_string != "") { - int node_server_id = 0; - if(DataTypeConverter::NUMBER_PARSE_OKAY == DataTypeConverter::strToInt(node_server_id_string, node_server_id )) { - node_server = controller::NodeServer::load(node_server_id); - } - } - node_server_id_string = form.get("test-node-servers2", ""); - if(node_server_id_string != "") { - int node_server_id = 0; - if(DataTypeConverter::NUMBER_PARSE_OKAY == DataTypeConverter::strToInt(node_server_id_string, node_server_id )) { - node_server2 = controller::NodeServer::load(node_server_id); - } - } - auto topic_id_string = form.get("test-hedera-topic", ""); - if(topic_id_string != "") { - int topic_id = 0; - if(DataTypeConverter::NUMBER_PARSE_OKAY == DataTypeConverter::strToInt(topic_id_string, topic_id)) { - hedera_topic = controller::HederaTopic::load(topic_id); - } - } - topic_id_string = form.get("test-hedera-topic2", ""); - if(topic_id_string != "") { - int topic_id = 0; - if(DataTypeConverter::NUMBER_PARSE_OKAY == DataTypeConverter::strToInt(topic_id_string, topic_id)) { - hedera_topic2 = controller::HederaTopic::load(topic_id); - } - } - auto test_timeout_string = form.get("test-timeout", ""); - if(test_timeout_string != "") { - DataTypeConverter::strToInt(test_timeout_string, hedera_timeout); - } - auto submit = form.get("submit", ""); - if(submit == "Run 6-Test") { - page = PAGE_RUN_4_SET_TEST; - } else if(submit == "json-rpc getTransactions") { - page = PAGE_GET_TRANSACTION_RPC_CALL; - } - std::string step_temp; - for(int i = 0; i < 8; i++) { - std::string name = "step-"; - name += std::to_string(i+2); - step_temp = form.get(name, ""); - if(step_temp == "1") { - steps[i] = true; - } else { - steps[i] = false; - } - } - } - - auto node_servers = controller::NodeServer::load(model::table::NODE_SERVER_GRADIDO_NODE); - auto hedera_topics = controller::HederaTopic::listAll(); - -#line 3 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_large.cpsp" - - bool withMaterialIcons = false; - std::ostream& _responseStream = response.send(); - Poco::DeflatingOutputStream _gzipStream(_responseStream, Poco::DeflatingStreamBuf::STREAM_GZIP, 1); - std::ostream& responseStream = _compressResponse ? _gzipStream : _responseStream; - responseStream << "\n"; - // begin include header_large.cpsp - responseStream << "\n"; - responseStream << "\n"; - responseStream << "\n"; - responseStream << "\n"; - responseStream << "\n"; - responseStream << "\n"; - responseStream << "Gradido Login Server: "; -#line 11 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_large.cpsp" - responseStream << ( pageName ); - responseStream << "\n"; - responseStream << "\n"; -#line 13 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_large.cpsp" - if(withMaterialIcons) { responseStream << "\n"; - responseStream << "\n"; -#line 15 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_large.cpsp" - } responseStream << "\n"; - responseStream << "\n"; - responseStream << "\n"; - responseStream << "
\n"; - responseStream << "\t\t
\n"; - responseStream << "\t\t\t
\n"; - responseStream << "\t\t\t\t
    \n"; - responseStream << "\t\t\t\t\t"; -#line 22 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_large.cpsp" - if(!user.isNull()) { responseStream << "\n"; - responseStream << "\t\t\t\t\t\t
  • getGroupBaseUrl() ); - responseStream << "/\">Startseite
  • \n"; - responseStream << "\t\t\t\t\t"; -#line 24 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_large.cpsp" - } responseStream << "\n"; - responseStream << "\t\t\t\t\t
  • Gruppen
  • \n"; - responseStream << "\t\t\t\t\t
  • Node Server
  • \n"; - responseStream << "\t\t\t\t\t
  • Hedera Accounts
  • \n"; - responseStream << "\t\t\t\t\t
  • Hedera Topics
  • \n"; - responseStream << "\t\t\t\t
\n"; - responseStream << "\t\t\t
\n"; - responseStream << "\t\t
\n"; - responseStream << "\t\t
"; - // end include header_large.cpsp - responseStream << "\n"; -#line 99 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - responseStream << ( getErrorsHtml() ); - responseStream << "\n"; - responseStream << "
\n"; - responseStream << "\t\n"; - responseStream << "\t
\n"; - responseStream << "\t \n"; - responseStream << "\t \n"; - responseStream << "\t
\n"; - responseStream << "\t
\n"; - responseStream << "\t\t
\n"; - responseStream << "\t\t\t

Test 6-Set (3 AddMember, Creation, 2 Transfer)\n"; - responseStream << "\t\t

\n"; - responseStream << "\t\t
\n"; - responseStream << "\t\t\t
\n"; - responseStream << "\t\t\t\t

1. Create three new accounts and show user public keys for comparisation

\n"; - responseStream << "\t\t\t\t

2. Send a add-member transaction to hedera topic with one signature (first user)

\n"; - responseStream << "\t\t\t\t

3. Send a add-member transaction to hedera topic with two signatures (first user and second user)

\n"; - responseStream << "\t\t\t\t

4. Send a creation transaction to second user, signed by first user

\n"; - responseStream << "\t\t\t\t

5. Send a transfer transaction from second user to first user signed by second user

\n"; - responseStream << "\t\t\t\t

6. Send a add-member transaction to hedera topic 2 with one signature (third user)

\n"; - responseStream << "\t\t\t\t

7. Send a cross group transfer from second user to third user signed by second user

\n"; - responseStream << "\t\t\t\t

8. Wait x seconds to give hedera time to process transactions

\n"; - responseStream << "\t\t\t\t

9. Ask choosen node for transaction and print result

\n"; - responseStream << "\t\t\t\t
\n"; - responseStream << "\t\t\t\t\tGroup 1 \n"; - responseStream << "\t\t\t\t\t\n"; - responseStream << "\t\t\t\t\t"; -#line 124 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - if(node_servers.size() == 0) { responseStream << "\n"; - responseStream << "\t\t\t\t\t\tEdit Node-Servers\n"; - responseStream << "\t\t\t\t\t"; -#line 126 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - } responseStream << "\n"; - responseStream << "\t\t\t\t\t\n"; - responseStream << "\t\t\t\t\t\n"; - responseStream << "\t\t\t\t\t"; -#line 135 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - if(hedera_topics.size() == 0) { responseStream << "\n"; - responseStream << "\t\t\t\t\t\tEdit Hedera-Topics\n"; - responseStream << "\t\t\t\t\t"; -#line 137 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - } responseStream << "\n"; - responseStream << "\t\t\t\t\t\n"; - responseStream << "\t\t\t\t
\n"; - responseStream << "\t\t\t\t
\n"; - responseStream << "\t\t\t\t\tGroup 2 \n"; - responseStream << "\t\t\t\t\t\n"; - responseStream << "\t\t\t\t\t"; -#line 153 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - if(node_servers.size() == 0) { responseStream << "\n"; - responseStream << "\t\t\t\t\t\tEdit Node-Servers\n"; - responseStream << "\t\t\t\t\t"; -#line 155 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - } responseStream << "\n"; - responseStream << "\t\t\t\t\t\n"; - responseStream << "\t\t\t\t\t\n"; - responseStream << "\t\t\t\t\t"; -#line 164 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - if(hedera_topics.size() == 0) { responseStream << "\n"; - responseStream << "\t\t\t\t\t\tEdit Hedera-Topics\n"; - responseStream << "\t\t\t\t\t"; -#line 166 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - } responseStream << "\n"; - responseStream << "\t\t\t\t\t\n"; - responseStream << "\t\t\t\t
\n"; - responseStream << "\t\t\t\t\n"; - responseStream << "\t\t\t\t\n"; - responseStream << "\t\t\t\t seconds \n"; - responseStream << "\t\t\t\t\n"; - responseStream << "\t\t\t
\n"; - responseStream << "\t\t
\n"; - responseStream << "\t
\n"; - responseStream << "\t
\n"; - responseStream << "\t\t
\n"; - responseStream << "\t\t\t

Test 4-Set (2 AddMember, Creation, Transfer)\n"; - responseStream << "\t\t

\n"; - responseStream << "\t\t
\n"; - responseStream << "\t\t\t
\n"; - responseStream << "\t\t\t\t\n"; - responseStream << "\t\t\t\t"; -#line 193 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - if(node_servers.size() == 0) { responseStream << "\n"; - responseStream << "\t\t\t\t\tEdit Node-Servers\n"; - responseStream << "\t\t\t\t"; -#line 195 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - } responseStream << "\n"; - responseStream << "\t\t\t\t\n"; - responseStream << "\t\t\t\t\n"; - responseStream << "\t\t\t
\n"; - responseStream << "\t\t
\n"; - responseStream << "\t
\n"; - responseStream << "\t"; -#line 207 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - if(PAGE_RUN_4_SET_TEST == page && !hedera_topic.isNull() && !node_server.isNull()) { responseStream << "\n"; - responseStream << "\t
    \n"; - responseStream << "\t\t
  • \n"; - responseStream << "\t\t\t

    1. Create three new accounts and show user public keys for comparisation:

    \n"; - responseStream << "\t\t\t"; -#line 211 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - - Profiler time2; - auto group_id = hedera_topic->getModel()->getGroupId(); - auto group_id2 = hedera_topic2->getModel()->getGroupId(); - auto user_group = controller::Group::load(group_id); - auto user_group2 = controller::Group::load(group_id2); - auto mnemonic_type = ServerConfig::MNEMONIC_BIP0039_SORTED_ORDER; - - std::string password1 = "hsaj(2askaslASlllak3wjjeudsaj"; - auto user_1 = controller::User::create("testEmail@google.de", "Max", "Mustermann", group_id); - auto passphrase_1 = Passphrase::generate(&ServerConfig::g_Mnemonic_WordLists[mnemonic_type]); - auto gradido_key_pair_1 = KeyPairEd25519::create(passphrase_1); - user_1->setGradidoKeyPair(gradido_key_pair_1); - user_1->login(password1); - - std::string password2 = "uweia8saiSale,dsasA"; - auto user_2 = controller::User::create("testEmail2@google.de", "MJax", "Mustrermann", group_id); - auto passphrase_2 = Passphrase::generate(&ServerConfig::g_Mnemonic_WordLists[mnemonic_type]); - auto gradido_key_pair_2 = KeyPairEd25519::create(passphrase_2); - user_2->setGradidoKeyPair(gradido_key_pair_2); - user_2->login(password2); - - std::string password3 = "jaue_skaiellasealaK"; - auto user_3 = controller::User::create("testEmail3@gmail.com", "Morpheus", "Miaufull", group_id2); - auto passphrase_3 = Passphrase::generate(&ServerConfig::g_Mnemonic_WordLists[mnemonic_type]); - auto gradido_key_pair_3 = KeyPairEd25519::create(passphrase_3); - user_3->setGradidoKeyPair(gradido_key_pair_3); - user_3->login(password3); - responseStream << "\t\t\t\n"; - responseStream << "\t\t\t
    "; -#line 240 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - responseStream << ( user_group->getModel()->getName() ); - responseStream << "\n"; - responseStream << "\t\t\t\t

    User 1: "; -#line 241 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - responseStream << ( user_1->getPublicHex() ); - responseStream << "

    \n"; - responseStream << "\t\t\t\t

    User 2: "; -#line 242 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - responseStream << ( user_2->getPublicHex() ); - responseStream << "

    \n"; - responseStream << "\t\t\t
    \n"; - responseStream << "\t\t\t
    "; -#line 244 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - responseStream << ( user_group2->getModel()->getName() ); - responseStream << "\n"; - responseStream << "\t\t\t\t

    User 3: "; -#line 245 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - responseStream << ( user_3->getPublicHex() ); - responseStream << "

    \n"; - responseStream << "\t\t\t
    \n"; - responseStream << "\t\t\t

    Time: "; -#line 247 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - responseStream << ( time2.string() ); - responseStream << "\n"; - responseStream << "\t\t

  • \n"; - responseStream << "\t\t
  • \n"; - responseStream << "\t\t\t

    2. Send a add-member transaction to hedera topic with one signature (first user)

    \n"; - responseStream << "\t\t\t"; -#line 251 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - - time2.reset(); - if(!steps[0]) { responseStream << "\n"; - responseStream << "\t\t\t\t

    skipped

    \n"; - responseStream << "\t\t\t"; -#line 255 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - } else { - auto transaction1 = model::gradido::Transaction::createGroupMemberUpdate(user_1, user_group); - transaction1->getTransactionBody()->getGroupMemberUpdate()->setMinSignatureCount(1); - transaction1->sign(user_1); - auto transaction1_json = transaction1->getTransactionAsJson(true); - responseStream << "\n"; - responseStream << "\t\t\t

    "; -#line 261 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - responseStream << ( DataTypeConverter::replaceNewLineWithBr(transaction1_json) ); - responseStream << "

    \n"; - responseStream << "\t\t\t"; -#line 262 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - } responseStream << "\n"; - responseStream << "\t\t\t

    Time: "; -#line 263 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - responseStream << ( time2.string() ); - responseStream << "\n"; - responseStream << "\t\t

  • \n"; - responseStream << "\t\t
  • \n"; - responseStream << "\t\t\t

    3. Send a add-member transaction to hedera topic with two signatures (first user and second user)

    \n"; - responseStream << "\t\t\t"; -#line 267 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - - time2.reset(); - if(!steps[1]) { responseStream << "\n"; - responseStream << "\t\t\t\t

    skipped

    \n"; - responseStream << "\t\t\t"; -#line 271 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - } else { - auto transaction2 = model::gradido::Transaction::createGroupMemberUpdate(user_2, user_group); - transaction2->getTransactionBody()->getGroupMemberUpdate()->setMinSignatureCount(2); - transaction2->sign(user_2); - // wait before sending fourth transaction, gn seems to crash by more than 3 transaction at nearly the same time - Poco::Thread::sleep(sleep_ms_between_transactions); - transaction2->sign(user_1); - auto transaction2_json = transaction2->getTransactionAsJson(true); - responseStream << "\n"; - responseStream << "\t\t\t

    "; -#line 280 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - responseStream << ( DataTypeConverter::replaceNewLineWithBr(transaction2_json) ); - responseStream << "

    \n"; - responseStream << "\t\t\t"; -#line 281 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - } responseStream << "\n"; - responseStream << "\t\t\t

    Time: "; -#line 282 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - responseStream << ( time2.string() ); - responseStream << "\n"; - responseStream << "\t\t

  • \n"; - responseStream << "\t\t
  • \n"; - responseStream << "\t\t\t

    4. Send a creation transaction to second user, signed by first user

    \n"; - responseStream << "\t\t\t"; -#line 286 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - - time2.reset(); - if(!steps[2]) { responseStream << "\n"; - responseStream << "\t\t\t\t

    skipped

    \n"; - responseStream << "\t\t\t"; -#line 290 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - } else { - auto transaction3 = model::gradido::Transaction::createCreation(user_2, 10000000, Poco::DateTime(), "Test Creation"); - // wait before sending fourth transaction, gn seems to crash by more than 3 transaction at nearly the same time - Poco::Thread::sleep(sleep_ms_between_transactions); - transaction3->sign(user_1); - auto transaction3_json = transaction3->getTransactionAsJson(true); - responseStream << "\n"; - responseStream << "\t\t\t

    "; -#line 297 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - responseStream << ( DataTypeConverter::replaceNewLineWithBr(transaction3_json) ); - responseStream << "

    \n"; - responseStream << "\t\t\t"; -#line 298 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - } responseStream << "\n"; - responseStream << "\t\t\t

    Time: "; -#line 299 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - responseStream << ( time2.string() ); - responseStream << "

    \n"; - responseStream << "\t\t
  • \n"; - responseStream << "\t\t
  • \n"; - responseStream << "\t\t\t

    5. Send a transfer transaction from second user to first user signed by second user

    \n"; - responseStream << "\t\t\t"; -#line 303 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - - time2.reset(); - if(!steps[3]) { responseStream << "\n"; - responseStream << "\t\t\t\t

    skipped

    \n"; - responseStream << "\t\t\t"; -#line 307 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - } else { - auto user_1_pubkey = user_1->getModel()->getPublicKeyCopy(); - auto transaction4 = model::gradido::Transaction::createTransfer(user_2, user_1_pubkey, user_group, 5000000, "Test Transfer"); - // wait before sending fourth transaction, gn seems to crash by more than 3 transaction at nearly the same time - Poco::Thread::sleep(sleep_ms_between_transactions); - transaction4[0]->sign(user_2); - auto transaction4_json = transaction4[0]->getTransactionAsJson(true); - responseStream << "\n"; - responseStream << "\t\t\t

    "; -#line 315 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - responseStream << ( DataTypeConverter::replaceNewLineWithBr(transaction4_json) ); - responseStream << "

    \n"; - responseStream << "\t\t\t"; -#line 316 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - } responseStream << "\n"; - responseStream << "\t\t\t

    Time: "; -#line 317 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - responseStream << ( time2.string() ); - responseStream << "

    \n"; - responseStream << "\t\t
  • \n"; - responseStream << "\t\t
  • \n"; - responseStream << "\t\t\t

    6. Send a add-member transaction to hedera topic 2 with one signature (third user)

    \n"; - responseStream << "\t\t\t"; -#line 321 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - - time2.reset(); - if(!steps[4]) { responseStream << "\n"; - responseStream << "\t\t\t\t

    skipped

    \n"; - responseStream << "\t\t\t"; -#line 325 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - } else { - auto transaction5 = model::gradido::Transaction::createGroupMemberUpdate(user_3, user_group2); - transaction5->getTransactionBody()->getGroupMemberUpdate()->setMinSignatureCount(1); - Poco::Thread::sleep(sleep_ms_between_transactions); - transaction5->sign(user_3); - auto transaction5_json = transaction5->getTransactionAsJson(true); - responseStream << "\n"; - responseStream << "\t\t\t

    "; -#line 332 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - responseStream << ( DataTypeConverter::replaceNewLineWithBr(transaction5_json) ); - responseStream << "

    \n"; - responseStream << "\t\t\t"; -#line 333 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - } responseStream << "\n"; - responseStream << "\t\t\t

    Time: "; -#line 334 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - responseStream << ( time2.string() ); - responseStream << "

    \n"; - responseStream << "\t\t
  • \n"; - responseStream << "\t\t
  • \n"; - responseStream << "\t\t\t

    7. Send a cross group transfer from second user to third user signed by second user

    \n"; - responseStream << "\t\t\t"; -#line 338 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - - time2.reset(); - if(!steps[5]) { responseStream << "\n"; - responseStream << "\t\t\t\t

    skipped

    \n"; - responseStream << "\t\t\t"; -#line 342 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - } else { - auto user_3_pubkey = user_3->getModel()->getPublicKeyCopy(); - auto transaction6 = model::gradido::Transaction::createTransfer(user_2, user_3_pubkey, user_group2, 4000000, "Test Group Transfer", false); - if(!transaction6.size()) { - responseStream << "\n"; - responseStream << "\t\t\t\t
    \n"; - responseStream << "\t\t\t\t\treport_problem\n"; - responseStream << "\t\t\t\t\tError creating Transaction\n"; - responseStream << "\t\t\t\t
    \n"; - responseStream << "\t\t\t\t"; -#line 351 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - - } else { - Poco::Thread::sleep(sleep_ms_between_transactions); - transaction6[0]->sign(user_2); - auto transaction6_json = transaction6[0]->getTransactionAsJson(true); - auto paired_transaction = transaction6[0]->getPairedTransaction(); - responseStream << "\n"; - responseStream << "\t\t\t\t\t

    "; -#line 358 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - responseStream << ( DataTypeConverter::replaceNewLineWithBr(transaction6_json) ); - responseStream << "

    \t\t\n"; - responseStream << "\t\t\t\t\t"; -#line 359 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - if(!paired_transaction.isNull()) { - auto transaction6_2_json = paired_transaction->getTransactionAsJson(true); - responseStream << "

    "; -#line 361 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - responseStream << ( DataTypeConverter::replaceNewLineWithBr(transaction6_2_json) ); - responseStream << "

    \n"; - responseStream << "\t\t\t\t\t"; -#line 362 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - } responseStream << "\n"; - responseStream << "\t\t\t\t"; -#line 363 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - } responseStream << "\n"; - responseStream << "\t\t\t"; -#line 364 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - } responseStream << " \n"; - responseStream << "\t\t\t

    Time: "; -#line 365 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - responseStream << ( time2.string() ); - responseStream << "

    \n"; - responseStream << "\t\t
  • \n"; - responseStream << "\t\t
  • \n"; - responseStream << "\t\t\t

    8. Wait "; -#line 368 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - responseStream << ( hedera_timeout ); - responseStream << " seconds to give hedera time to process transactions

    \n"; - responseStream << "\t\t\t"; -#line 369 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - if(!steps[6]) { responseStream << "\n"; - responseStream << "\t\t\t\t

    skipped

    \n"; - responseStream << "\t\t\t"; -#line 371 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - } else { - Poco::Thread::sleep(hedera_timeout * 1000); - } responseStream << "\n"; - responseStream << "\t\t
  • \n"; - responseStream << "\t\t
  • \n"; - responseStream << "\t\t\t

    9. Ask choosen node for transaction and print result

    \n"; - responseStream << "\t\t\t"; -#line 377 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - time2.reset(); - if(!steps[7] || node_server.isNull()) { - responseStream << "

    skipped

    \n"; - responseStream << "\t\t\t"; -#line 380 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - } else { - auto node_server_model = node_server->getModel(); - JsonRPCRequest jsonrpc(node_server_model->getUrl(), node_server_model->getPort()); - Poco::JSON::Object params; - params.set("groupAlias", user_group->getModel()->getAlias()); - params.set("lastKnownSequenceNumber", 0); - auto gn_answear = jsonrpc.request("getTransactions", params); - if(!gn_answear.isNull()) { - std::stringstream ss; - Poco::JSON::Stringifier::stringify(gn_answear, ss, 4, -1, Poco::JSON_PRESERVE_KEY_ORDER); - std::string answear_string = ss.str(); responseStream << "\n"; - responseStream << "\t\t\t\t\t"; -#line 391 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - responseStream << ( DataTypeConverter::replaceNewLineWithBr(answear_string) ); -#line 391 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - - } - } responseStream << "\n"; - responseStream << "\t\t\t

    Time: "; -#line 394 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - responseStream << ( time2.string() ); - responseStream << "

    \n"; - responseStream << "\t\t
  • \n"; - responseStream << "\t
\n"; - responseStream << "\t"; -#line 397 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - } else if(PAGE_GET_TRANSACTION_RPC_CALL == page && !node_server.isNull()) { - Profiler time3; - auto node_server_model = node_server->getModel(); - auto user_group = controller::Group::load(node_server_model->getGroupId()); - JsonRPCRequest jsonrpc(node_server_model->getUrl(), node_server_model->getPort()); - Poco::JSON::Object params; - params.set("groupAlias", user_group->getModel()->getAlias()); - params.set("lastKnownSequenceNumber", 0); - auto gn_answear = jsonrpc.request("getTransactions", params); - if(!gn_answear.isNull()) { - std::stringstream ss; - Poco::JSON::Stringifier::stringify(gn_answear, ss, 4, -1, Poco::JSON_PRESERVE_KEY_ORDER); - std::string answear_string = ss.str(); responseStream << "\n"; - responseStream << "\t\t\t"; -#line 410 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - responseStream << ( DataTypeConverter::replaceNewLineWithBr(answear_string) ); -#line 410 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - - } - responseStream << "\n"; - responseStream << "\t\t

Time: "; -#line 413 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - responseStream << ( time3.string() ); - responseStream << "

\n"; - responseStream << "\t"; -#line 414 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - } responseStream << "\n"; - responseStream << "\t\n"; - responseStream << "
\n"; - responseStream << "\n"; - // begin include footer.cpsp - responseStream << "
\n"; - responseStream << "

Copyright © Gradido 2020

\n"; - responseStream << "
\n"; - responseStream << "
\n"; - responseStream << "
\n"; - responseStream << " "; -#line 6 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\footer.cpsp" - responseStream << ( mTimeProfiler.string() ); - responseStream << "\n"; - responseStream << "
\n"; - responseStream << "
\n"; - responseStream << "

Login Server in Entwicklung

\n"; - responseStream << "

Alpha "; -#line 10 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\footer.cpsp" - responseStream << ( ServerConfig::g_versionString ); - responseStream << "

\n"; - responseStream << "
\n"; - responseStream << "
\n"; - responseStream << "\n"; - responseStream << "\n"; - responseStream << ""; - // end include footer.cpsp - responseStream << "\n"; - if (_compressResponse) _gzipStream.close(); -} +#include "AdminNodeServerTestPage.h" +#include "Poco/Net/HTTPServerRequest.h" +#include "Poco/Net/HTTPServerResponse.h" +#include "Poco/Net/HTMLForm.h" +#include "Poco/DeflatingStream.h" + + +#line 6 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + + +#include "../controller/NodeServer.h" +#include "../controller/User.h" +#include "../controller/HederaTopic.h" +#include "../lib/DataTypeConverter.h" +#include "../lib/Profiler.h" +#include "../lib/JsonRPCRequest.h" +#include "../model/gradido/Transaction.h" + +#include "Poco/Thread.h" +#include "Poco/DateTime.h" +#include "Poco/JSON/Stringifier.h" + +enum PageType +{ + PAGE_CHOOSE_TEST, + PAGE_RUN_4_SET_TEST, + PAGE_GET_TRANSACTION_RPC_CALL +}; + +#line 1 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_large.cpsp" + +#include "../ServerConfig.h" + + +void AdminNodeServerTestPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::HTTPServerResponse& response) +{ + response.setChunkedTransferEncoding(true); + response.setContentType("text/html"); + bool _compressResponse(request.hasToken("Accept-Encoding", "gzip")); + if (_compressResponse) response.set("Content-Encoding", "gzip"); + + Poco::Net::HTMLForm form(request, request.stream()); +#line 28 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + + const char* pageName = "Node Server Test"; + PageType page = PAGE_CHOOSE_TEST; + Poco::AutoPtr node_server; + Poco::AutoPtr node_server2; + Poco::AutoPtr user; + Poco::AutoPtr hedera_topic; + Poco::AutoPtr hedera_topic2; + int hedera_timeout = 4; + int sleep_ms_between_transactions = 1000; + + bool steps[8]; memset(steps, 1, 8 * sizeof(bool)); + + + if(!form.empty()) + { + auto node_server_id_string = form.get("test-node-servers", ""); + if(node_server_id_string != "") { + int node_server_id = 0; + if(DataTypeConverter::NUMBER_PARSE_OKAY == DataTypeConverter::strToInt(node_server_id_string, node_server_id )) { + node_server = controller::NodeServer::load(node_server_id); + } + } + node_server_id_string = form.get("test-node-servers2", ""); + if(node_server_id_string != "") { + int node_server_id = 0; + if(DataTypeConverter::NUMBER_PARSE_OKAY == DataTypeConverter::strToInt(node_server_id_string, node_server_id )) { + node_server2 = controller::NodeServer::load(node_server_id); + } + } + auto topic_id_string = form.get("test-hedera-topic", ""); + if(topic_id_string != "") { + int topic_id = 0; + if(DataTypeConverter::NUMBER_PARSE_OKAY == DataTypeConverter::strToInt(topic_id_string, topic_id)) { + hedera_topic = controller::HederaTopic::load(topic_id); + } + } + topic_id_string = form.get("test-hedera-topic2", ""); + if(topic_id_string != "") { + int topic_id = 0; + if(DataTypeConverter::NUMBER_PARSE_OKAY == DataTypeConverter::strToInt(topic_id_string, topic_id)) { + hedera_topic2 = controller::HederaTopic::load(topic_id); + } + } + auto test_timeout_string = form.get("test-timeout", ""); + if(test_timeout_string != "") { + DataTypeConverter::strToInt(test_timeout_string, hedera_timeout); + } + auto test_part_timeout_string = form.get("test-part-timeout", ""); + if(test_part_timeout_string != "") { + DataTypeConverter::strToInt(test_part_timeout_string, sleep_ms_between_transactions); + } + auto submit = form.get("submit", ""); + if(submit == "Run 6-Test") { + page = PAGE_RUN_4_SET_TEST; + } else if(submit == "json-rpc getTransactions") { + page = PAGE_GET_TRANSACTION_RPC_CALL; + } + std::string step_temp; + for(int i = 0; i < 8; i++) { + std::string name = "step-"; + name += std::to_string(i+2); + step_temp = form.get(name, ""); + if(step_temp == "1") { + steps[i] = true; + } else { + steps[i] = false; + } + } + } + + auto node_servers = controller::NodeServer::load(model::table::NODE_SERVER_GRADIDO_NODE); + auto hedera_topics = controller::HederaTopic::listAll(); + +#line 3 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_large.cpsp" + + bool withMaterialIcons = false; + std::ostream& _responseStream = response.send(); + Poco::DeflatingOutputStream _gzipStream(_responseStream, Poco::DeflatingStreamBuf::STREAM_GZIP, 1); + std::ostream& responseStream = _compressResponse ? _gzipStream : _responseStream; + responseStream << "\n"; + // begin include header_large.cpsp + responseStream << "\n"; + responseStream << "\n"; + responseStream << "\n"; + responseStream << "\n"; + responseStream << "\n"; + responseStream << "\n"; + responseStream << "Gradido Login Server: "; +#line 11 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_large.cpsp" + responseStream << ( pageName ); + responseStream << "\n"; + responseStream << "\n"; +#line 13 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_large.cpsp" + if(withMaterialIcons) { responseStream << "\n"; + responseStream << "\n"; +#line 15 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_large.cpsp" + } responseStream << "\n"; + responseStream << "\n"; + responseStream << "\n"; + responseStream << "
\n"; + responseStream << "\t\t
\n"; + responseStream << "\t\t\t
\n"; + responseStream << "\t\t\t\t
    \n"; + responseStream << "\t\t\t\t\t"; +#line 22 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_large.cpsp" + if(!user.isNull()) { responseStream << "\n"; + responseStream << "\t\t\t\t\t\t
  • getGroupBaseUrl() ); + responseStream << "/\">Startseite
  • \n"; + responseStream << "\t\t\t\t\t"; +#line 24 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_large.cpsp" + } responseStream << "\n"; + responseStream << "\t\t\t\t\t
  • Gruppen
  • \n"; + responseStream << "\t\t\t\t\t
  • Node Server
  • \n"; + responseStream << "\t\t\t\t\t
  • Hedera Accounts
  • \n"; + responseStream << "\t\t\t\t\t
  • Hedera Topics
  • \n"; + responseStream << "\t\t\t\t
\n"; + responseStream << "\t\t\t
\n"; + responseStream << "\t\t
\n"; + responseStream << "\t\t
"; + // end include header_large.cpsp + responseStream << "\n"; +#line 103 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + responseStream << ( getErrorsHtml() ); + responseStream << "\n"; + responseStream << "
\n"; + responseStream << "\t\n"; + responseStream << "\t
\n"; + responseStream << "\t \n"; + responseStream << "\t \n"; + responseStream << "\t
\n"; + responseStream << "\t
\n"; + responseStream << "\t\t
\n"; + responseStream << "\t\t\t

Test 6-Set (3 AddMember, Creation, 2 Transfer)\n"; + responseStream << "\t\t

\n"; + responseStream << "\t\t
\n"; + responseStream << "\t\t\t
\n"; + responseStream << "\t\t\t\t

1. Create three new accounts and show user public keys for comparisation

\n"; + responseStream << "\t\t\t\t

2. Send a add-member transaction to hedera topic with one signature (first user)

\n"; + responseStream << "\t\t\t\t

3. Send a add-member transaction to hedera topic with two signatures (first user and second user)

\n"; + responseStream << "\t\t\t\t

4. Send a creation transaction to second user, signed by first user

\n"; + responseStream << "\t\t\t\t

5. Send a transfer transaction from second user to first user signed by second user

\n"; + responseStream << "\t\t\t\t

6. Send a add-member transaction to hedera topic 2 with one signature (third user)

\n"; + responseStream << "\t\t\t\t

7. Send a cross group transfer from second user to third user signed by second user

\n"; + responseStream << "\t\t\t\t

8. Wait x seconds to give hedera time to process transactions

\n"; + responseStream << "\t\t\t\t

9. Ask choosen node for transaction and print result

\n"; + responseStream << "\t\t\t\t
\n"; + responseStream << "\t\t\t\t\tGroup 1 \n"; + responseStream << "\t\t\t\t\t\n"; + responseStream << "\t\t\t\t\t"; +#line 128 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + if(node_servers.size() == 0) { responseStream << "\n"; + responseStream << "\t\t\t\t\t\tEdit Node-Servers\n"; + responseStream << "\t\t\t\t\t"; +#line 130 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + } responseStream << "\n"; + responseStream << "\t\t\t\t\t\n"; + responseStream << "\t\t\t\t\t\n"; + responseStream << "\t\t\t\t\t"; +#line 139 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + if(hedera_topics.size() == 0) { responseStream << "\n"; + responseStream << "\t\t\t\t\t\tEdit Hedera-Topics\n"; + responseStream << "\t\t\t\t\t"; +#line 141 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + } responseStream << "\n"; + responseStream << "\t\t\t\t\t\n"; + responseStream << "\t\t\t\t
\n"; + responseStream << "\t\t\t\t
\n"; + responseStream << "\t\t\t\t\tGroup 2 \n"; + responseStream << "\t\t\t\t\t\n"; + responseStream << "\t\t\t\t\t"; +#line 157 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + if(node_servers.size() == 0) { responseStream << "\n"; + responseStream << "\t\t\t\t\t\tEdit Node-Servers\n"; + responseStream << "\t\t\t\t\t"; +#line 159 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + } responseStream << "\n"; + responseStream << "\t\t\t\t\t\n"; + responseStream << "\t\t\t\t\t\n"; + responseStream << "\t\t\t\t\t"; +#line 168 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + if(hedera_topics.size() == 0) { responseStream << "\n"; + responseStream << "\t\t\t\t\t\tEdit Hedera-Topics\n"; + responseStream << "\t\t\t\t\t"; +#line 170 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + } responseStream << "\n"; + responseStream << "\t\t\t\t\t\n"; + responseStream << "\t\t\t\t
\n"; + responseStream << "\t\t\t\t\n"; + responseStream << "\t\t\t\t\n"; + responseStream << "\t\t\t\t seconds \n"; + responseStream << "\t\t\t\t\n"; + responseStream << "\t\t\t\t ms\n"; + responseStream << "\t\t\t\t\n"; + responseStream << "\t\t\t
\n"; + responseStream << "\t\t
\n"; + responseStream << "\t
\n"; + responseStream << "\t
\n"; + responseStream << "\t\t
\n"; + responseStream << "\t\t\t

Test 4-Set (2 AddMember, Creation, Transfer)\n"; + responseStream << "\t\t

\n"; + responseStream << "\t\t
\n"; + responseStream << "\t\t\t
\n"; + responseStream << "\t\t\t\t\n"; + responseStream << "\t\t\t\t"; +#line 199 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + if(node_servers.size() == 0) { responseStream << "\n"; + responseStream << "\t\t\t\t\tEdit Node-Servers\n"; + responseStream << "\t\t\t\t"; +#line 201 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + } responseStream << "\n"; + responseStream << "\t\t\t\t\n"; + responseStream << "\t\t\t\t\n"; + responseStream << "\t\t\t
\n"; + responseStream << "\t\t
\n"; + responseStream << "\t
\n"; + responseStream << "\t"; +#line 213 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + if(PAGE_RUN_4_SET_TEST == page && !hedera_topic.isNull() && !node_server.isNull()) { responseStream << "\n"; + responseStream << "\t
    \n"; + responseStream << "\t\t
  • \n"; + responseStream << "\t\t\t

    1. Create three new accounts and show user public keys for comparisation:

    \n"; + responseStream << "\t\t\t"; +#line 217 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + + Profiler time2; + auto group_id = hedera_topic->getModel()->getGroupId(); + auto group_id2 = hedera_topic2->getModel()->getGroupId(); + auto user_group = controller::Group::load(group_id); + auto user_group2 = controller::Group::load(group_id2); + auto mnemonic_type = ServerConfig::MNEMONIC_BIP0039_SORTED_ORDER; + + std::string password1 = "hsaj(2askaslASlllak3wjjeudsaj"; + auto user_1 = controller::User::create("testEmail@google.de", "Max", "Mustermann", group_id); + auto passphrase_1 = Passphrase::generate(&ServerConfig::g_Mnemonic_WordLists[mnemonic_type]); + auto gradido_key_pair_1 = KeyPairEd25519::create(passphrase_1); + user_1->setGradidoKeyPair(gradido_key_pair_1); + user_1->login(password1); + + std::string password2 = "uweia8saiSale,dsasA"; + auto user_2 = controller::User::create("testEmail2@google.de", "MJax", "Mustrermann", group_id); + auto passphrase_2 = Passphrase::generate(&ServerConfig::g_Mnemonic_WordLists[mnemonic_type]); + auto gradido_key_pair_2 = KeyPairEd25519::create(passphrase_2); + user_2->setGradidoKeyPair(gradido_key_pair_2); + user_2->login(password2); + + std::string password3 = "jaue_skaiellasealaK"; + auto user_3 = controller::User::create("testEmail3@gmail.com", "Morpheus", "Miaufull", group_id2); + auto passphrase_3 = Passphrase::generate(&ServerConfig::g_Mnemonic_WordLists[mnemonic_type]); + auto gradido_key_pair_3 = KeyPairEd25519::create(passphrase_3); + user_3->setGradidoKeyPair(gradido_key_pair_3); + user_3->login(password3); + responseStream << "\t\t\t\n"; + responseStream << "\t\t\t
    "; +#line 246 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + responseStream << ( user_group->getModel()->getName() ); + responseStream << "\n"; + responseStream << "\t\t\t\t

    User 1: "; +#line 247 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + responseStream << ( user_1->getPublicHex() ); + responseStream << "

    \n"; + responseStream << "\t\t\t\t

    User 2: "; +#line 248 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + responseStream << ( user_2->getPublicHex() ); + responseStream << "

    \n"; + responseStream << "\t\t\t
    \n"; + responseStream << "\t\t\t
    "; +#line 250 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + responseStream << ( user_group2->getModel()->getName() ); + responseStream << "\n"; + responseStream << "\t\t\t\t

    User 3: "; +#line 251 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + responseStream << ( user_3->getPublicHex() ); + responseStream << "

    \n"; + responseStream << "\t\t\t
    \n"; + responseStream << "\t\t\t

    Time: "; +#line 253 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + responseStream << ( time2.string() ); + responseStream << "\n"; + responseStream << "\t\t

  • \n"; + responseStream << "\t\t
  • \n"; + responseStream << "\t\t\t

    2. Send a add-member transaction to hedera topic with one signature (first user)

    \n"; + responseStream << "\t\t\t"; +#line 257 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + + time2.reset(); + if(!steps[0]) { responseStream << "\n"; + responseStream << "\t\t\t\t

    skipped

    \n"; + responseStream << "\t\t\t"; +#line 261 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + } else { + auto transaction1 = model::gradido::Transaction::createGroupMemberUpdate(user_1, user_group); + transaction1->getTransactionBody()->getGroupMemberUpdate()->setMinSignatureCount(1); + transaction1->sign(user_1); + auto transaction1_json = transaction1->getTransactionAsJson(true); + responseStream << "\n"; + responseStream << "\t\t\t

    "; +#line 267 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + responseStream << ( DataTypeConverter::replaceNewLineWithBr(transaction1_json) ); + responseStream << "

    \n"; + responseStream << "\t\t\t"; +#line 268 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + } responseStream << "\n"; + responseStream << "\t\t\t

    Time: "; +#line 269 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + responseStream << ( time2.string() ); + responseStream << "\n"; + responseStream << "\t\t

  • \n"; + responseStream << "\t\t
  • \n"; + responseStream << "\t\t\t

    3. Send a add-member transaction to hedera topic with two signatures (first user and second user)

    \n"; + responseStream << "\t\t\t"; +#line 273 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + + time2.reset(); + if(!steps[1]) { responseStream << "\n"; + responseStream << "\t\t\t\t

    skipped

    \n"; + responseStream << "\t\t\t"; +#line 277 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + } else { + auto transaction2 = model::gradido::Transaction::createGroupMemberUpdate(user_2, user_group); + transaction2->getTransactionBody()->getGroupMemberUpdate()->setMinSignatureCount(2); + transaction2->sign(user_2); + // wait before sending fourth transaction, gn seems to crash by more than 3 transaction at nearly the same time + Poco::Thread::sleep(sleep_ms_between_transactions); + transaction2->sign(user_1); + auto transaction2_json = transaction2->getTransactionAsJson(true); + responseStream << "\n"; + responseStream << "\t\t\t

    "; +#line 286 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + responseStream << ( DataTypeConverter::replaceNewLineWithBr(transaction2_json) ); + responseStream << "

    \n"; + responseStream << "\t\t\t"; +#line 287 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + } responseStream << "\n"; + responseStream << "\t\t\t

    Time: "; +#line 288 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + responseStream << ( time2.string() ); + responseStream << "\n"; + responseStream << "\t\t

  • \n"; + responseStream << "\t\t
  • \n"; + responseStream << "\t\t\t

    4. Send a creation transaction to second user, signed by first user

    \n"; + responseStream << "\t\t\t"; +#line 292 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + + time2.reset(); + if(!steps[2]) { responseStream << "\n"; + responseStream << "\t\t\t\t

    skipped

    \n"; + responseStream << "\t\t\t"; +#line 296 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + } else { + auto transaction3 = model::gradido::Transaction::createCreation(user_2, 10000000, Poco::DateTime(), "Test Creation"); + // wait before sending fourth transaction, gn seems to crash by more than 3 transaction at nearly the same time + Poco::Thread::sleep(sleep_ms_between_transactions); + transaction3->sign(user_1); + auto transaction3_json = transaction3->getTransactionAsJson(true); + responseStream << "\n"; + responseStream << "\t\t\t

    "; +#line 303 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + responseStream << ( DataTypeConverter::replaceNewLineWithBr(transaction3_json) ); + responseStream << "

    \n"; + responseStream << "\t\t\t"; +#line 304 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + } responseStream << "\n"; + responseStream << "\t\t\t

    Time: "; +#line 305 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + responseStream << ( time2.string() ); + responseStream << "

    \n"; + responseStream << "\t\t
  • \n"; + responseStream << "\t\t
  • \n"; + responseStream << "\t\t\t

    5. Send a transfer transaction from second user to first user signed by second user

    \n"; + responseStream << "\t\t\t"; +#line 309 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + + time2.reset(); + if(!steps[3]) { responseStream << "\n"; + responseStream << "\t\t\t\t

    skipped

    \n"; + responseStream << "\t\t\t"; +#line 313 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + } else { + auto user_1_pubkey = user_1->getModel()->getPublicKeyCopy(); + auto transaction4 = model::gradido::Transaction::createTransfer(user_2, user_1_pubkey, user_group, 5000000, "Test Transfer"); + // wait before sending fourth transaction, gn seems to crash by more than 3 transaction at nearly the same time + Poco::Thread::sleep(sleep_ms_between_transactions); + transaction4[0]->sign(user_2); + auto transaction4_json = transaction4[0]->getTransactionAsJson(true); + responseStream << "\n"; + responseStream << "\t\t\t

    "; +#line 321 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + responseStream << ( DataTypeConverter::replaceNewLineWithBr(transaction4_json) ); + responseStream << "

    \n"; + responseStream << "\t\t\t"; +#line 322 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + } responseStream << "\n"; + responseStream << "\t\t\t

    Time: "; +#line 323 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + responseStream << ( time2.string() ); + responseStream << "

    \n"; + responseStream << "\t\t
  • \n"; + responseStream << "\t\t
  • \n"; + responseStream << "\t\t\t

    6. Send a add-member transaction to hedera topic 2 with one signature (third user)

    \n"; + responseStream << "\t\t\t"; +#line 327 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + + time2.reset(); + if(!steps[4]) { responseStream << "\n"; + responseStream << "\t\t\t\t

    skipped

    \n"; + responseStream << "\t\t\t"; +#line 331 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + } else { + auto transaction5 = model::gradido::Transaction::createGroupMemberUpdate(user_3, user_group2); + transaction5->getTransactionBody()->getGroupMemberUpdate()->setMinSignatureCount(1); + Poco::Thread::sleep(sleep_ms_between_transactions); + transaction5->sign(user_3); + auto transaction5_json = transaction5->getTransactionAsJson(true); + responseStream << "\n"; + responseStream << "\t\t\t

    "; +#line 338 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + responseStream << ( DataTypeConverter::replaceNewLineWithBr(transaction5_json) ); + responseStream << "

    \n"; + responseStream << "\t\t\t"; +#line 339 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + } responseStream << "\n"; + responseStream << "\t\t\t

    Time: "; +#line 340 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + responseStream << ( time2.string() ); + responseStream << "

    \n"; + responseStream << "\t\t
  • \n"; + responseStream << "\t\t
  • \n"; + responseStream << "\t\t\t

    7. Send a cross group transfer from second user to third user signed by second user

    \n"; + responseStream << "\t\t\t"; +#line 344 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + + time2.reset(); + if(!steps[5]) { responseStream << "\n"; + responseStream << "\t\t\t\t

    skipped

    \n"; + responseStream << "\t\t\t"; +#line 348 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + } else { + auto user_3_pubkey = user_3->getModel()->getPublicKeyCopy(); + auto transaction6 = model::gradido::Transaction::createTransfer(user_2, user_3_pubkey, user_group2, 4000000, "Test Group Transfer", false); + if(!transaction6.size()) { + responseStream << "\n"; + responseStream << "\t\t\t\t
    \n"; + responseStream << "\t\t\t\t\treport_problem\n"; + responseStream << "\t\t\t\t\tError creating Transaction\n"; + responseStream << "\t\t\t\t
    \n"; + responseStream << "\t\t\t\t"; +#line 357 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + + } else { + Poco::Thread::sleep(sleep_ms_between_transactions); + transaction6[0]->sign(user_2); + auto transaction6_json = transaction6[0]->getTransactionAsJson(true); + auto paired_transaction = transaction6[0]->getPairedTransaction(); + responseStream << "\n"; + responseStream << "\t\t\t\t\t

    "; +#line 364 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + responseStream << ( DataTypeConverter::replaceNewLineWithBr(transaction6_json) ); + responseStream << "

    \t\t\n"; + responseStream << "\t\t\t\t\t"; +#line 365 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + if(!paired_transaction.isNull()) { + auto transaction6_2_json = paired_transaction->getTransactionAsJson(true); + responseStream << "

    "; +#line 367 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + responseStream << ( DataTypeConverter::replaceNewLineWithBr(transaction6_2_json) ); + responseStream << "

    \n"; + responseStream << "\t\t\t\t\t"; +#line 368 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + } responseStream << "\n"; + responseStream << "\t\t\t\t"; +#line 369 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + } responseStream << "\n"; + responseStream << "\t\t\t"; +#line 370 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + } responseStream << " \n"; + responseStream << "\t\t\t

    Time: "; +#line 371 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + responseStream << ( time2.string() ); + responseStream << "

    \n"; + responseStream << "\t\t
  • \n"; + responseStream << "\t\t
  • \n"; + responseStream << "\t\t\t

    8. Wait "; +#line 374 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + responseStream << ( hedera_timeout ); + responseStream << " seconds to give hedera time to process transactions

    \n"; + responseStream << "\t\t\t"; +#line 375 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + if(!steps[6]) { responseStream << "\n"; + responseStream << "\t\t\t\t

    skipped

    \n"; + responseStream << "\t\t\t"; +#line 377 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + } else { + Poco::Thread::sleep(hedera_timeout * 1000); + } responseStream << "\n"; + responseStream << "\t\t
  • \n"; + responseStream << "\t\t
  • \n"; + responseStream << "\t\t\t

    9. Ask choosen node for transaction and print result

    \n"; + responseStream << "\t\t\t"; +#line 383 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + time2.reset(); + if(!steps[7] || node_server.isNull()) { + responseStream << "

    skipped

    \n"; + responseStream << "\t\t\t"; +#line 386 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + } else { + auto node_server_model = node_server->getModel(); + JsonRPCRequest jsonrpc(node_server_model->getUrl(), node_server_model->getPort()); + Poco::JSON::Object params; + params.set("groupAlias", user_group->getModel()->getAlias()); + params.set("lastKnownSequenceNumber", 0); + auto gn_answear = jsonrpc.request("getTransactions", params); + if(!gn_answear.isNull()) { + std::stringstream ss; + Poco::JSON::Stringifier::stringify(gn_answear, ss, 4, -1, Poco::JSON_PRESERVE_KEY_ORDER); + std::string answear_string = ss.str(); responseStream << "\n"; + responseStream << "\t\t\t\t\t"; +#line 397 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + responseStream << ( DataTypeConverter::replaceNewLineWithBr(answear_string) ); +#line 397 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + + } + } responseStream << "\n"; + responseStream << "\t\t\t

    Time: "; +#line 400 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + responseStream << ( time2.string() ); + responseStream << "

    \n"; + responseStream << "\t\t
  • \n"; + responseStream << "\t
\n"; + responseStream << "\t"; +#line 403 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + } else if(PAGE_GET_TRANSACTION_RPC_CALL == page && !node_server.isNull()) { + Profiler time3; + auto node_server_model = node_server->getModel(); + auto user_group = controller::Group::load(node_server_model->getGroupId()); + JsonRPCRequest jsonrpc(node_server_model->getUrl(), node_server_model->getPort()); + Poco::JSON::Object params; + params.set("groupAlias", user_group->getModel()->getAlias()); + params.set("lastKnownSequenceNumber", 0); + auto gn_answear = jsonrpc.request("getTransactions", params); + if(!gn_answear.isNull()) { + std::stringstream ss; + Poco::JSON::Stringifier::stringify(gn_answear, ss, 4, -1, Poco::JSON_PRESERVE_KEY_ORDER); + std::string answear_string = ss.str(); responseStream << "\n"; + responseStream << "\t\t\t"; +#line 416 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + responseStream << ( DataTypeConverter::replaceNewLineWithBr(answear_string) ); +#line 416 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + + } + responseStream << "\n"; + responseStream << "\t\t

Time: "; +#line 419 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + responseStream << ( time3.string() ); + responseStream << "

\n"; + responseStream << "\t"; +#line 420 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + } responseStream << "\n"; + responseStream << "\t\n"; + responseStream << "
\n"; + responseStream << "\n"; + // begin include footer.cpsp + responseStream << "
\n"; + responseStream << "

Copyright © Gradido 2020

\n"; + responseStream << "
\n"; + responseStream << "
\n"; + responseStream << "
\n"; + responseStream << " "; +#line 6 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\footer.cpsp" + responseStream << ( mTimeProfiler.string() ); + responseStream << "\n"; + responseStream << "
\n"; + responseStream << "
\n"; + responseStream << "

Login Server in Entwicklung

\n"; + responseStream << "

Alpha "; +#line 10 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\footer.cpsp" + responseStream << ( ServerConfig::g_versionString ); + responseStream << "

\n"; + responseStream << "
\n"; + responseStream << "
\n"; + responseStream << "\n"; + responseStream << "\n"; + responseStream << ""; + // end include footer.cpsp + responseStream << "\n"; + if (_compressResponse) _gzipStream.close(); +} diff --git a/src/cpp/HTTPInterface/AdminNodeServerTestPage.h b/src/cpp/HTTPInterface/AdminNodeServerTestPage.h index a1ff3ad1d..12e550efa 100644 --- a/src/cpp/HTTPInterface/AdminNodeServerTestPage.h +++ b/src/cpp/HTTPInterface/AdminNodeServerTestPage.h @@ -1,18 +1,18 @@ -#ifndef AdminNodeServerTestPage_INCLUDED -#define AdminNodeServerTestPage_INCLUDED - - -#include "Poco/Net/HTTPRequestHandler.h" - - -#include "PageRequestMessagedHandler.h" - - -class AdminNodeServerTestPage: public PageRequestMessagedHandler -{ -public: - void handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::HTTPServerResponse& response); -}; - - -#endif // AdminNodeServerTestPage_INCLUDED +#ifndef AdminNodeServerTestPage_INCLUDED +#define AdminNodeServerTestPage_INCLUDED + + +#include "Poco/Net/HTTPRequestHandler.h" + + +#include "PageRequestMessagedHandler.h" + + +class AdminNodeServerTestPage: public PageRequestMessagedHandler +{ +public: + void handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::HTTPServerResponse& response); +}; + + +#endif // AdminNodeServerTestPage_INCLUDED diff --git a/src/cpsp/adminNodeServerTest.cpsp b/src/cpsp/adminNodeServerTest.cpsp index 59d5430d2..a1cc0a295 100644 --- a/src/cpsp/adminNodeServerTest.cpsp +++ b/src/cpsp/adminNodeServerTest.cpsp @@ -1,418 +1,424 @@ -<%@ page class="AdminNodeServerTestPage" %> -<%@ page form="true" %> -<%@ page compressed="true" %> -<%@ page baseClass="PageRequestMessagedHandler" %> -<%@ header include="PageRequestMessagedHandler.h" %> -<%! - -#include "../controller/NodeServer.h" -#include "../controller/User.h" -#include "../controller/HederaTopic.h" -#include "../lib/DataTypeConverter.h" -#include "../lib/Profiler.h" -#include "../lib/JsonRPCRequest.h" -#include "../model/gradido/Transaction.h" - -#include "Poco/Thread.h" -#include "Poco/DateTime.h" -#include "Poco/JSON/Stringifier.h" - -enum PageType -{ - PAGE_CHOOSE_TEST, - PAGE_RUN_4_SET_TEST, - PAGE_GET_TRANSACTION_RPC_CALL -}; - -%> -<%% - const char* pageName = "Node Server Test"; - PageType page = PAGE_CHOOSE_TEST; - Poco::AutoPtr node_server; - Poco::AutoPtr node_server2; - Poco::AutoPtr user; - Poco::AutoPtr hedera_topic; - Poco::AutoPtr hedera_topic2; - int hedera_timeout = 4; - int sleep_ms_between_transactions = 1000; - - bool steps[8]; memset(steps, 1, 8 * sizeof(bool)); - - - if(!form.empty()) - { - auto node_server_id_string = form.get("test-node-servers", ""); - if(node_server_id_string != "") { - int node_server_id = 0; - if(DataTypeConverter::NUMBER_PARSE_OKAY == DataTypeConverter::strToInt(node_server_id_string, node_server_id )) { - node_server = controller::NodeServer::load(node_server_id); - } - } - node_server_id_string = form.get("test-node-servers2", ""); - if(node_server_id_string != "") { - int node_server_id = 0; - if(DataTypeConverter::NUMBER_PARSE_OKAY == DataTypeConverter::strToInt(node_server_id_string, node_server_id )) { - node_server2 = controller::NodeServer::load(node_server_id); - } - } - auto topic_id_string = form.get("test-hedera-topic", ""); - if(topic_id_string != "") { - int topic_id = 0; - if(DataTypeConverter::NUMBER_PARSE_OKAY == DataTypeConverter::strToInt(topic_id_string, topic_id)) { - hedera_topic = controller::HederaTopic::load(topic_id); - } - } - topic_id_string = form.get("test-hedera-topic2", ""); - if(topic_id_string != "") { - int topic_id = 0; - if(DataTypeConverter::NUMBER_PARSE_OKAY == DataTypeConverter::strToInt(topic_id_string, topic_id)) { - hedera_topic2 = controller::HederaTopic::load(topic_id); - } - } - auto test_timeout_string = form.get("test-timeout", ""); - if(test_timeout_string != "") { - DataTypeConverter::strToInt(test_timeout_string, hedera_timeout); - } - auto submit = form.get("submit", ""); - if(submit == "Run 6-Test") { - page = PAGE_RUN_4_SET_TEST; - } else if(submit == "json-rpc getTransactions") { - page = PAGE_GET_TRANSACTION_RPC_CALL; - } - std::string step_temp; - for(int i = 0; i < 8; i++) { - std::string name = "step-"; - name += std::to_string(i+2); - step_temp = form.get(name, ""); - if(step_temp == "1") { - steps[i] = true; - } else { - steps[i] = false; - } - } - } - - auto node_servers = controller::NodeServer::load(model::table::NODE_SERVER_GRADIDO_NODE); - auto hedera_topics = controller::HederaTopic::listAll(); - -%><%@ include file="header_large.cpsp" %> -<%= getErrorsHtml() %> -
- -
- - -
-
style="display:block" <% } %>> -
-

Test 6-Set (3 AddMember, Creation, 2 Transfer) -

-
-
-

1. Create three new accounts and show user public keys for comparisation

-

checked="checked" <% } %> name="step-2" value="1"/> 2. Send a add-member transaction to hedera topic with one signature (first user)

-

checked="checked" <% } %> name="step-3" value="1"/> 3. Send a add-member transaction to hedera topic with two signatures (first user and second user)

-

checked="checked" <% } %> name="step-4" value="1"/> 4. Send a creation transaction to second user, signed by first user

-

checked="checked" <% } %> name="step-5" value="1"/> 5. Send a transfer transaction from second user to first user signed by second user

-

checked="checked" <% } %> name="step-6" value="1"/> 6. Send a add-member transaction to hedera topic 2 with one signature (third user)

-

checked="checked" <% } %> name="step-7" value="1"/> 7. Send a cross group transfer from second user to third user signed by second user

-

checked="checked" <% } %> name="step-8" value="1"/> 8. Wait x seconds to give hedera time to process transactions

-

checked="checked" <% } %> name="step-9" value="1"/> 9. Ask choosen node for transaction and print result

-
- Group 1 - - <% if(node_servers.size() == 0) { %> - Edit Node-Servers - <% } %> - - - <% if(hedera_topics.size() == 0) { %> - Edit Hedera-Topics - <% } %> - -
-
- Group 2 - - <% if(node_servers.size() == 0) { %> - Edit Node-Servers - <% } %> - - - <% if(hedera_topics.size() == 0) { %> - Edit Hedera-Topics - <% } %> - -
- - - seconds - -
-
-
-
style="display:block" <% } %>> -
-

Test 4-Set (2 AddMember, Creation, Transfer) -

-
-
- - <% if(node_servers.size() == 0) { %> - Edit Node-Servers - <% } %> - - -
-
-
- <% if(PAGE_RUN_4_SET_TEST == page && !hedera_topic.isNull() && !node_server.isNull()) { %> -
    -
  • -

    1. Create three new accounts and show user public keys for comparisation:

    - <% - Profiler time2; - auto group_id = hedera_topic->getModel()->getGroupId(); - auto group_id2 = hedera_topic2->getModel()->getGroupId(); - auto user_group = controller::Group::load(group_id); - auto user_group2 = controller::Group::load(group_id2); - auto mnemonic_type = ServerConfig::MNEMONIC_BIP0039_SORTED_ORDER; - - std::string password1 = "hsaj(2askaslASlllak3wjjeudsaj"; - auto user_1 = controller::User::create("testEmail@google.de", "Max", "Mustermann", group_id); - auto passphrase_1 = Passphrase::generate(&ServerConfig::g_Mnemonic_WordLists[mnemonic_type]); - auto gradido_key_pair_1 = KeyPairEd25519::create(passphrase_1); - user_1->setGradidoKeyPair(gradido_key_pair_1); - user_1->login(password1); - - std::string password2 = "uweia8saiSale,dsasA"; - auto user_2 = controller::User::create("testEmail2@google.de", "MJax", "Mustrermann", group_id); - auto passphrase_2 = Passphrase::generate(&ServerConfig::g_Mnemonic_WordLists[mnemonic_type]); - auto gradido_key_pair_2 = KeyPairEd25519::create(passphrase_2); - user_2->setGradidoKeyPair(gradido_key_pair_2); - user_2->login(password2); - - std::string password3 = "jaue_skaiellasealaK"; - auto user_3 = controller::User::create("testEmail3@gmail.com", "Morpheus", "Miaufull", group_id2); - auto passphrase_3 = Passphrase::generate(&ServerConfig::g_Mnemonic_WordLists[mnemonic_type]); - auto gradido_key_pair_3 = KeyPairEd25519::create(passphrase_3); - user_3->setGradidoKeyPair(gradido_key_pair_3); - user_3->login(password3); - %> -
    <%= user_group->getModel()->getName() %> -

    User 1: <%= user_1->getPublicHex() %>

    -

    User 2: <%= user_2->getPublicHex() %>

    -
    -
    <%= user_group2->getModel()->getName() %> -

    User 3: <%= user_3->getPublicHex() %>

    -
    -

    Time: <%= time2.string() %> -

  • -
  • -

    2. Send a add-member transaction to hedera topic with one signature (first user)

    - <% - time2.reset(); - if(!steps[0]) { %> -

    skipped

    - <% } else { - auto transaction1 = model::gradido::Transaction::createGroupMemberUpdate(user_1, user_group); - transaction1->getTransactionBody()->getGroupMemberUpdate()->setMinSignatureCount(1); - transaction1->sign(user_1); - auto transaction1_json = transaction1->getTransactionAsJson(true); - %> -

    <%= DataTypeConverter::replaceNewLineWithBr(transaction1_json) %>

    - <% } %> -

    Time: <%= time2.string() %> -

  • -
  • -

    3. Send a add-member transaction to hedera topic with two signatures (first user and second user)

    - <% - time2.reset(); - if(!steps[1]) { %> -

    skipped

    - <% } else { - auto transaction2 = model::gradido::Transaction::createGroupMemberUpdate(user_2, user_group); - transaction2->getTransactionBody()->getGroupMemberUpdate()->setMinSignatureCount(2); - transaction2->sign(user_2); - // wait before sending fourth transaction, gn seems to crash by more than 3 transaction at nearly the same time - Poco::Thread::sleep(sleep_ms_between_transactions); - transaction2->sign(user_1); - auto transaction2_json = transaction2->getTransactionAsJson(true); - %> -

    <%= DataTypeConverter::replaceNewLineWithBr(transaction2_json) %>

    - <% } %> -

    Time: <%= time2.string() %> -

  • -
  • -

    4. Send a creation transaction to second user, signed by first user

    - <% - time2.reset(); - if(!steps[2]) { %> -

    skipped

    - <% } else { - auto transaction3 = model::gradido::Transaction::createCreation(user_2, 10000000, Poco::DateTime(), "Test Creation"); - // wait before sending fourth transaction, gn seems to crash by more than 3 transaction at nearly the same time - Poco::Thread::sleep(sleep_ms_between_transactions); - transaction3->sign(user_1); - auto transaction3_json = transaction3->getTransactionAsJson(true); - %> -

    <%= DataTypeConverter::replaceNewLineWithBr(transaction3_json) %>

    - <% } %> -

    Time: <%= time2.string() %>

    -
  • -
  • -

    5. Send a transfer transaction from second user to first user signed by second user

    - <% - time2.reset(); - if(!steps[3]) { %> -

    skipped

    - <% } else { - auto user_1_pubkey = user_1->getModel()->getPublicKeyCopy(); - auto transaction4 = model::gradido::Transaction::createTransfer(user_2, user_1_pubkey, user_group, 5000000, "Test Transfer"); - // wait before sending fourth transaction, gn seems to crash by more than 3 transaction at nearly the same time - Poco::Thread::sleep(sleep_ms_between_transactions); - transaction4[0]->sign(user_2); - auto transaction4_json = transaction4[0]->getTransactionAsJson(true); - %> -

    <%= DataTypeConverter::replaceNewLineWithBr(transaction4_json) %>

    - <% } %> -

    Time: <%= time2.string() %>

    -
  • -
  • -

    6. Send a add-member transaction to hedera topic 2 with one signature (third user)

    - <% - time2.reset(); - if(!steps[4]) { %> -

    skipped

    - <% } else { - auto transaction5 = model::gradido::Transaction::createGroupMemberUpdate(user_3, user_group2); - transaction5->getTransactionBody()->getGroupMemberUpdate()->setMinSignatureCount(1); - Poco::Thread::sleep(sleep_ms_between_transactions); - transaction5->sign(user_3); - auto transaction5_json = transaction5->getTransactionAsJson(true); - %> -

    <%= DataTypeConverter::replaceNewLineWithBr(transaction5_json) %>

    - <% } %> -

    Time: <%= time2.string() %>

    -
  • -
  • -

    7. Send a cross group transfer from second user to third user signed by second user

    - <% - time2.reset(); - if(!steps[5]) { %> -

    skipped

    - <% } else { - auto user_3_pubkey = user_3->getModel()->getPublicKeyCopy(); - auto transaction6 = model::gradido::Transaction::createTransfer(user_2, user_3_pubkey, user_group2, 4000000, "Test Group Transfer", false); - if(!transaction6.size()) { - %> - - <% - } else { - Poco::Thread::sleep(sleep_ms_between_transactions); - transaction6[0]->sign(user_2); - auto transaction6_json = transaction6[0]->getTransactionAsJson(true); - auto paired_transaction = transaction6[0]->getPairedTransaction(); - %> -

    <%= DataTypeConverter::replaceNewLineWithBr(transaction6_json) %>

    - <% if(!paired_transaction.isNull()) { - auto transaction6_2_json = paired_transaction->getTransactionAsJson(true); - %>

    <%= DataTypeConverter::replaceNewLineWithBr(transaction6_2_json) %>

    - <% } %> - <% } %> - <% } %> -

    Time: <%= time2.string() %>

    -
  • -
  • -

    8. Wait <%= hedera_timeout %> seconds to give hedera time to process transactions

    - <% if(!steps[6]) { %> -

    skipped

    - <% } else { - Poco::Thread::sleep(hedera_timeout * 1000); - } %> -
  • -
  • -

    9. Ask choosen node for transaction and print result

    - <% time2.reset(); - if(!steps[7] || node_server.isNull()) { - %>

    skipped

    - <% } else { - auto node_server_model = node_server->getModel(); - JsonRPCRequest jsonrpc(node_server_model->getUrl(), node_server_model->getPort()); - Poco::JSON::Object params; - params.set("groupAlias", user_group->getModel()->getAlias()); - params.set("lastKnownSequenceNumber", 0); - auto gn_answear = jsonrpc.request("getTransactions", params); - if(!gn_answear.isNull()) { - std::stringstream ss; - Poco::JSON::Stringifier::stringify(gn_answear, ss, 4, -1, Poco::JSON_PRESERVE_KEY_ORDER); - std::string answear_string = ss.str(); %> - <%= DataTypeConverter::replaceNewLineWithBr(answear_string) %><% - } - } %> -

    Time: <%= time2.string() %>

    -
  • -
- <% } else if(PAGE_GET_TRANSACTION_RPC_CALL == page && !node_server.isNull()) { - Profiler time3; - auto node_server_model = node_server->getModel(); - auto user_group = controller::Group::load(node_server_model->getGroupId()); - JsonRPCRequest jsonrpc(node_server_model->getUrl(), node_server_model->getPort()); - Poco::JSON::Object params; - params.set("groupAlias", user_group->getModel()->getAlias()); - params.set("lastKnownSequenceNumber", 0); - auto gn_answear = jsonrpc.request("getTransactions", params); - if(!gn_answear.isNull()) { - std::stringstream ss; - Poco::JSON::Stringifier::stringify(gn_answear, ss, 4, -1, Poco::JSON_PRESERVE_KEY_ORDER); - std::string answear_string = ss.str();%> - <%= DataTypeConverter::replaceNewLineWithBr(answear_string) %><% - } - %> -

Time: <%= time3.string() %>

- <% } %> - -
- -<%@ include file="footer.cpsp" %> +<%@ page class="AdminNodeServerTestPage" %> +<%@ page form="true" %> +<%@ page compressed="true" %> +<%@ page baseClass="PageRequestMessagedHandler" %> +<%@ header include="PageRequestMessagedHandler.h" %> +<%! + +#include "../controller/NodeServer.h" +#include "../controller/User.h" +#include "../controller/HederaTopic.h" +#include "../lib/DataTypeConverter.h" +#include "../lib/Profiler.h" +#include "../lib/JsonRPCRequest.h" +#include "../model/gradido/Transaction.h" + +#include "Poco/Thread.h" +#include "Poco/DateTime.h" +#include "Poco/JSON/Stringifier.h" + +enum PageType +{ + PAGE_CHOOSE_TEST, + PAGE_RUN_4_SET_TEST, + PAGE_GET_TRANSACTION_RPC_CALL +}; + +%> +<%% + const char* pageName = "Node Server Test"; + PageType page = PAGE_CHOOSE_TEST; + Poco::AutoPtr node_server; + Poco::AutoPtr node_server2; + Poco::AutoPtr user; + Poco::AutoPtr hedera_topic; + Poco::AutoPtr hedera_topic2; + int hedera_timeout = 4; + int sleep_ms_between_transactions = 1000; + + bool steps[8]; memset(steps, 1, 8 * sizeof(bool)); + + + if(!form.empty()) + { + auto node_server_id_string = form.get("test-node-servers", ""); + if(node_server_id_string != "") { + int node_server_id = 0; + if(DataTypeConverter::NUMBER_PARSE_OKAY == DataTypeConverter::strToInt(node_server_id_string, node_server_id )) { + node_server = controller::NodeServer::load(node_server_id); + } + } + node_server_id_string = form.get("test-node-servers2", ""); + if(node_server_id_string != "") { + int node_server_id = 0; + if(DataTypeConverter::NUMBER_PARSE_OKAY == DataTypeConverter::strToInt(node_server_id_string, node_server_id )) { + node_server2 = controller::NodeServer::load(node_server_id); + } + } + auto topic_id_string = form.get("test-hedera-topic", ""); + if(topic_id_string != "") { + int topic_id = 0; + if(DataTypeConverter::NUMBER_PARSE_OKAY == DataTypeConverter::strToInt(topic_id_string, topic_id)) { + hedera_topic = controller::HederaTopic::load(topic_id); + } + } + topic_id_string = form.get("test-hedera-topic2", ""); + if(topic_id_string != "") { + int topic_id = 0; + if(DataTypeConverter::NUMBER_PARSE_OKAY == DataTypeConverter::strToInt(topic_id_string, topic_id)) { + hedera_topic2 = controller::HederaTopic::load(topic_id); + } + } + auto test_timeout_string = form.get("test-timeout", ""); + if(test_timeout_string != "") { + DataTypeConverter::strToInt(test_timeout_string, hedera_timeout); + } + auto test_part_timeout_string = form.get("test-part-timeout", ""); + if(test_part_timeout_string != "") { + DataTypeConverter::strToInt(test_part_timeout_string, sleep_ms_between_transactions); + } + auto submit = form.get("submit", ""); + if(submit == "Run 6-Test") { + page = PAGE_RUN_4_SET_TEST; + } else if(submit == "json-rpc getTransactions") { + page = PAGE_GET_TRANSACTION_RPC_CALL; + } + std::string step_temp; + for(int i = 0; i < 8; i++) { + std::string name = "step-"; + name += std::to_string(i+2); + step_temp = form.get(name, ""); + if(step_temp == "1") { + steps[i] = true; + } else { + steps[i] = false; + } + } + } + + auto node_servers = controller::NodeServer::load(model::table::NODE_SERVER_GRADIDO_NODE); + auto hedera_topics = controller::HederaTopic::listAll(); + +%><%@ include file="header_large.cpsp" %> +<%= getErrorsHtml() %> +
+ +
+ + +
+
style="display:block" <% } %>> +
+

Test 6-Set (3 AddMember, Creation, 2 Transfer) +

+
+
+

1. Create three new accounts and show user public keys for comparisation

+

checked="checked" <% } %> name="step-2" value="1"/> 2. Send a add-member transaction to hedera topic with one signature (first user)

+

checked="checked" <% } %> name="step-3" value="1"/> 3. Send a add-member transaction to hedera topic with two signatures (first user and second user)

+

checked="checked" <% } %> name="step-4" value="1"/> 4. Send a creation transaction to second user, signed by first user

+

checked="checked" <% } %> name="step-5" value="1"/> 5. Send a transfer transaction from second user to first user signed by second user

+

checked="checked" <% } %> name="step-6" value="1"/> 6. Send a add-member transaction to hedera topic 2 with one signature (third user)

+

checked="checked" <% } %> name="step-7" value="1"/> 7. Send a cross group transfer from second user to third user signed by second user

+

checked="checked" <% } %> name="step-8" value="1"/> 8. Wait x seconds to give hedera time to process transactions

+

checked="checked" <% } %> name="step-9" value="1"/> 9. Ask choosen node for transaction and print result

+
+ Group 1 + + <% if(node_servers.size() == 0) { %> + Edit Node-Servers + <% } %> + + + <% if(hedera_topics.size() == 0) { %> + Edit Hedera-Topics + <% } %> + +
+
+ Group 2 + + <% if(node_servers.size() == 0) { %> + Edit Node-Servers + <% } %> + + + <% if(hedera_topics.size() == 0) { %> + Edit Hedera-Topics + <% } %> + +
+ + + seconds + + ms + +
+
+
+
style="display:block" <% } %>> +
+

Test 4-Set (2 AddMember, Creation, Transfer) +

+
+
+ + <% if(node_servers.size() == 0) { %> + Edit Node-Servers + <% } %> + + +
+
+
+ <% if(PAGE_RUN_4_SET_TEST == page && !hedera_topic.isNull() && !node_server.isNull()) { %> +
    +
  • +

    1. Create three new accounts and show user public keys for comparisation:

    + <% + Profiler time2; + auto group_id = hedera_topic->getModel()->getGroupId(); + auto group_id2 = hedera_topic2->getModel()->getGroupId(); + auto user_group = controller::Group::load(group_id); + auto user_group2 = controller::Group::load(group_id2); + auto mnemonic_type = ServerConfig::MNEMONIC_BIP0039_SORTED_ORDER; + + std::string password1 = "hsaj(2askaslASlllak3wjjeudsaj"; + auto user_1 = controller::User::create("testEmail@google.de", "Max", "Mustermann", group_id); + auto passphrase_1 = Passphrase::generate(&ServerConfig::g_Mnemonic_WordLists[mnemonic_type]); + auto gradido_key_pair_1 = KeyPairEd25519::create(passphrase_1); + user_1->setGradidoKeyPair(gradido_key_pair_1); + user_1->login(password1); + + std::string password2 = "uweia8saiSale,dsasA"; + auto user_2 = controller::User::create("testEmail2@google.de", "MJax", "Mustrermann", group_id); + auto passphrase_2 = Passphrase::generate(&ServerConfig::g_Mnemonic_WordLists[mnemonic_type]); + auto gradido_key_pair_2 = KeyPairEd25519::create(passphrase_2); + user_2->setGradidoKeyPair(gradido_key_pair_2); + user_2->login(password2); + + std::string password3 = "jaue_skaiellasealaK"; + auto user_3 = controller::User::create("testEmail3@gmail.com", "Morpheus", "Miaufull", group_id2); + auto passphrase_3 = Passphrase::generate(&ServerConfig::g_Mnemonic_WordLists[mnemonic_type]); + auto gradido_key_pair_3 = KeyPairEd25519::create(passphrase_3); + user_3->setGradidoKeyPair(gradido_key_pair_3); + user_3->login(password3); + %> +
    <%= user_group->getModel()->getName() %> +

    User 1: <%= user_1->getPublicHex() %>

    +

    User 2: <%= user_2->getPublicHex() %>

    +
    +
    <%= user_group2->getModel()->getName() %> +

    User 3: <%= user_3->getPublicHex() %>

    +
    +

    Time: <%= time2.string() %> +

  • +
  • +

    2. Send a add-member transaction to hedera topic with one signature (first user)

    + <% + time2.reset(); + if(!steps[0]) { %> +

    skipped

    + <% } else { + auto transaction1 = model::gradido::Transaction::createGroupMemberUpdate(user_1, user_group); + transaction1->getTransactionBody()->getGroupMemberUpdate()->setMinSignatureCount(1); + transaction1->sign(user_1); + auto transaction1_json = transaction1->getTransactionAsJson(true); + %> +

    <%= DataTypeConverter::replaceNewLineWithBr(transaction1_json) %>

    + <% } %> +

    Time: <%= time2.string() %> +

  • +
  • +

    3. Send a add-member transaction to hedera topic with two signatures (first user and second user)

    + <% + time2.reset(); + if(!steps[1]) { %> +

    skipped

    + <% } else { + auto transaction2 = model::gradido::Transaction::createGroupMemberUpdate(user_2, user_group); + transaction2->getTransactionBody()->getGroupMemberUpdate()->setMinSignatureCount(2); + transaction2->sign(user_2); + // wait before sending fourth transaction, gn seems to crash by more than 3 transaction at nearly the same time + Poco::Thread::sleep(sleep_ms_between_transactions); + transaction2->sign(user_1); + auto transaction2_json = transaction2->getTransactionAsJson(true); + %> +

    <%= DataTypeConverter::replaceNewLineWithBr(transaction2_json) %>

    + <% } %> +

    Time: <%= time2.string() %> +

  • +
  • +

    4. Send a creation transaction to second user, signed by first user

    + <% + time2.reset(); + if(!steps[2]) { %> +

    skipped

    + <% } else { + auto transaction3 = model::gradido::Transaction::createCreation(user_2, 10000000, Poco::DateTime(), "Test Creation"); + // wait before sending fourth transaction, gn seems to crash by more than 3 transaction at nearly the same time + Poco::Thread::sleep(sleep_ms_between_transactions); + transaction3->sign(user_1); + auto transaction3_json = transaction3->getTransactionAsJson(true); + %> +

    <%= DataTypeConverter::replaceNewLineWithBr(transaction3_json) %>

    + <% } %> +

    Time: <%= time2.string() %>

    +
  • +
  • +

    5. Send a transfer transaction from second user to first user signed by second user

    + <% + time2.reset(); + if(!steps[3]) { %> +

    skipped

    + <% } else { + auto user_1_pubkey = user_1->getModel()->getPublicKeyCopy(); + auto transaction4 = model::gradido::Transaction::createTransfer(user_2, user_1_pubkey, user_group, 5000000, "Test Transfer"); + // wait before sending fourth transaction, gn seems to crash by more than 3 transaction at nearly the same time + Poco::Thread::sleep(sleep_ms_between_transactions); + transaction4[0]->sign(user_2); + auto transaction4_json = transaction4[0]->getTransactionAsJson(true); + %> +

    <%= DataTypeConverter::replaceNewLineWithBr(transaction4_json) %>

    + <% } %> +

    Time: <%= time2.string() %>

    +
  • +
  • +

    6. Send a add-member transaction to hedera topic 2 with one signature (third user)

    + <% + time2.reset(); + if(!steps[4]) { %> +

    skipped

    + <% } else { + auto transaction5 = model::gradido::Transaction::createGroupMemberUpdate(user_3, user_group2); + transaction5->getTransactionBody()->getGroupMemberUpdate()->setMinSignatureCount(1); + Poco::Thread::sleep(sleep_ms_between_transactions); + transaction5->sign(user_3); + auto transaction5_json = transaction5->getTransactionAsJson(true); + %> +

    <%= DataTypeConverter::replaceNewLineWithBr(transaction5_json) %>

    + <% } %> +

    Time: <%= time2.string() %>

    +
  • +
  • +

    7. Send a cross group transfer from second user to third user signed by second user

    + <% + time2.reset(); + if(!steps[5]) { %> +

    skipped

    + <% } else { + auto user_3_pubkey = user_3->getModel()->getPublicKeyCopy(); + auto transaction6 = model::gradido::Transaction::createTransfer(user_2, user_3_pubkey, user_group2, 4000000, "Test Group Transfer", false); + if(!transaction6.size()) { + %> + + <% + } else { + Poco::Thread::sleep(sleep_ms_between_transactions); + transaction6[0]->sign(user_2); + auto transaction6_json = transaction6[0]->getTransactionAsJson(true); + auto paired_transaction = transaction6[0]->getPairedTransaction(); + %> +

    <%= DataTypeConverter::replaceNewLineWithBr(transaction6_json) %>

    + <% if(!paired_transaction.isNull()) { + auto transaction6_2_json = paired_transaction->getTransactionAsJson(true); + %>

    <%= DataTypeConverter::replaceNewLineWithBr(transaction6_2_json) %>

    + <% } %> + <% } %> + <% } %> +

    Time: <%= time2.string() %>

    +
  • +
  • +

    8. Wait <%= hedera_timeout %> seconds to give hedera time to process transactions

    + <% if(!steps[6]) { %> +

    skipped

    + <% } else { + Poco::Thread::sleep(hedera_timeout * 1000); + } %> +
  • +
  • +

    9. Ask choosen node for transaction and print result

    + <% time2.reset(); + if(!steps[7] || node_server.isNull()) { + %>

    skipped

    + <% } else { + auto node_server_model = node_server->getModel(); + JsonRPCRequest jsonrpc(node_server_model->getUrl(), node_server_model->getPort()); + Poco::JSON::Object params; + params.set("groupAlias", user_group->getModel()->getAlias()); + params.set("lastKnownSequenceNumber", 0); + auto gn_answear = jsonrpc.request("getTransactions", params); + if(!gn_answear.isNull()) { + std::stringstream ss; + Poco::JSON::Stringifier::stringify(gn_answear, ss, 4, -1, Poco::JSON_PRESERVE_KEY_ORDER); + std::string answear_string = ss.str(); %> + <%= DataTypeConverter::replaceNewLineWithBr(answear_string) %><% + } + } %> +

    Time: <%= time2.string() %>

    +
  • +
+ <% } else if(PAGE_GET_TRANSACTION_RPC_CALL == page && !node_server.isNull()) { + Profiler time3; + auto node_server_model = node_server->getModel(); + auto user_group = controller::Group::load(node_server_model->getGroupId()); + JsonRPCRequest jsonrpc(node_server_model->getUrl(), node_server_model->getPort()); + Poco::JSON::Object params; + params.set("groupAlias", user_group->getModel()->getAlias()); + params.set("lastKnownSequenceNumber", 0); + auto gn_answear = jsonrpc.request("getTransactions", params); + if(!gn_answear.isNull()) { + std::stringstream ss; + Poco::JSON::Stringifier::stringify(gn_answear, ss, 4, -1, Poco::JSON_PRESERVE_KEY_ORDER); + std::string answear_string = ss.str();%> + <%= DataTypeConverter::replaceNewLineWithBr(answear_string) %><% + } + %> +

Time: <%= time3.string() %>

+ <% } %> + +
+ +<%@ include file="footer.cpsp" %>