diff --git a/src/cpp/HTTPInterface/AdminNodeServerTestPage.cpp b/src/cpp/HTTPInterface/AdminNodeServerTestPage.cpp index d37c1c36c..de20674e2 100644 --- a/src/cpp/HTTPInterface/AdminNodeServerTestPage.cpp +++ b/src/cpp/HTTPInterface/AdminNodeServerTestPage.cpp @@ -47,9 +47,9 @@ void AdminNodeServerTestPage::handleRequest(Poco::Net::HTTPServerRequest& reques Poco::AutoPtr node_server; Poco::AutoPtr user; Poco::AutoPtr hedera_topic; - int hedera_timeout = 15; + int hedera_timeout = 9; - bool steps[6]; memset(steps, 0, 6 * sizeof(bool)); + bool steps[6]; memset(steps, 1, 6 * sizeof(bool)); if(!form.empty()) @@ -85,6 +85,8 @@ void AdminNodeServerTestPage::handleRequest(Poco::Net::HTTPServerRequest& reques step_temp = form.get(name, ""); if(step_temp == "1") { steps[i] = true; + } else { + steps[i] = false; } } } @@ -160,84 +162,120 @@ void AdminNodeServerTestPage::handleRequest(Poco::Net::HTTPServerRequest& reques responseStream << "\t\t
"; // end include header_large.cpsp responseStream << "\n"; -#line 80 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 82 "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
\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

1. Create two 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. Wait x seconds to give hedera time to process transactions

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

7. Ask choosen node for transaction and print result

\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. Wait x seconds to give hedera time to process transactions

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

7. Ask choosen node for transaction and print result

\n"; responseStream << "\t\t\t\n"; responseStream << "\t\t\t\t\n"; responseStream << "\t\t\t\t"; -#line 102 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 104 "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 104 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 106 "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\t"; -#line 113 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 115 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" if(hedera_topics.size() == 0) { responseStream << "\n"; responseStream << "\t\t\t\t\tEdit Hedera-Topics\n"; responseStream << "\t\t\t\t"; -#line 115 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 117 "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\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
\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 140 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 142 "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 142 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 144 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" } responseStream << "\n"; responseStream << "\t\t\t\t\n"; responseStream << "\t\t\t\t\n"; @@ -327,13 +369,13 @@ void AdminNodeServerTestPage::handleRequest(Poco::Net::HTTPServerRequest& reques responseStream << "\t\t
\n"; responseStream << "\t
\n"; responseStream << "\t"; -#line 154 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 156 "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 two new accounts and show user public keys for comparisation:

    \n"; responseStream << "\t\t\t"; -#line 158 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 160 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" Profiler time2; auto group_id = hedera_topic->getModel()->getGroupId(); @@ -355,138 +397,138 @@ void AdminNodeServerTestPage::handleRequest(Poco::Net::HTTPServerRequest& reques user_2->login(password2); responseStream << "\t\t\t\n"; responseStream << "\t\t\t

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

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

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

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

    Time: "; -#line 180 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 182 "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 184 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 186 "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 188 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 190 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" } else { auto transaction1 = model::gradido::Transaction::createGroupMemberUpdate(user_1, user_group); - transaction1->getTransactionBody()->getGroupMemberUpdate()->setMinSignatureCount(2); + transaction1->getTransactionBody()->getGroupMemberUpdate()->setMinSignatureCount(1); transaction1->sign(user_1); responseStream << "\n"; responseStream << "\t\t\t

    "; -#line 194 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 196 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" responseStream << ( DataTypeConverter::replaceNewLineWithBr(transaction1->getTransactionAsJson(true)) ); responseStream << "

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

    Time: "; -#line 196 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 198 "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 200 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 202 "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 204 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 206 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" } else { auto transaction2 = model::gradido::Transaction::createGroupMemberUpdate(user_2, user_group); - transaction2->getTransactionBody()->getGroupMemberUpdate()->setMinSignatureCount(3); + transaction2->getTransactionBody()->getGroupMemberUpdate()->setMinSignatureCount(2); transaction2->sign(user_2); transaction2->sign(user_1); responseStream << "\n"; responseStream << "\t\t\t

    "; -#line 211 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 213 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" responseStream << ( DataTypeConverter::replaceNewLineWithBr(transaction2->getTransactionAsJson(true)) ); responseStream << "

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

    Time: "; -#line 213 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 215 "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 217 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 219 "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 221 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 223 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" } else { - auto transaction3 = model::gradido::Transaction::createCreation(user_2, 1000, Poco::DateTime(), "Test Creation"); + auto transaction3 = model::gradido::Transaction::createCreation(user_2, 10000000, Poco::DateTime(), "Test Creation"); transaction3->sign(user_1); responseStream << "\n"; responseStream << "\t\t\t

    "; -#line 225 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 227 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" responseStream << ( DataTypeConverter::replaceNewLineWithBr(transaction3->getTransactionAsJson(true)) ); responseStream << "

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

    Time: "; -#line 227 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 229 "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 231 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 233 "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 235 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 237 "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, 500, "Test Transfer"); + auto transaction4 = model::gradido::Transaction::createTransfer(user_2, user_1_pubkey, user_group, 5000000, "Test Transfer"); responseStream << "\n"; responseStream << "\t\t\t

    "; -#line 239 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 241 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" responseStream << ( DataTypeConverter::replaceNewLineWithBr(transaction4[0]->getTransactionAsJson(true)) ); responseStream << "

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

    Time: "; -#line 241 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 243 "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. Wait "; -#line 244 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 246 "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 245 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" - if(!steps[3]) { responseStream << "\n"; +#line 247 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + if(!steps[4]) { responseStream << "\n"; responseStream << "\t\t\t\t

    skipped

    \n"; responseStream << "\t\t\t"; -#line 247 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 249 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" } else { Poco::Thread::sleep(hedera_timeout * 1000); } responseStream << "\n"; @@ -494,11 +536,12 @@ void AdminNodeServerTestPage::handleRequest(Poco::Net::HTTPServerRequest& reques responseStream << "\t\t
  • \n"; responseStream << "\t\t\t

    7. Ask choosen node for transaction and print result

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

    skipped

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

    skipped

    \n"; + responseStream << "\t\t\t"; +#line 258 "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()); @@ -510,17 +553,22 @@ void AdminNodeServerTestPage::handleRequest(Poco::Net::HTTPServerRequest& reques std::stringstream ss; Poco::JSON::Stringifier::stringify(gn_answear, ss, 4, -1, Poco::JSON_PRESERVE_KEY_ORDER); responseStream << "\n"; responseStream << "\t\t\t\t\t"; -#line 265 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 268 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" responseStream << ( DataTypeConverter::replaceNewLineWithBr(ss.str()) ); -#line 265 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 268 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" } } responseStream << "\n"; + responseStream << "\t\t\t

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

    \n"; responseStream << "\t\t
  • \n"; responseStream << "\t
\n"; responseStream << "\t"; -#line 270 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 274 "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()); @@ -533,16 +581,23 @@ void AdminNodeServerTestPage::handleRequest(Poco::Net::HTTPServerRequest& reques Poco::JSON::Stringifier::stringify(gn_answear, ss, 4, -1, Poco::JSON_PRESERVE_KEY_ORDER); //printf("result: %s\n", ss.str().data()); responseStream << "\n"; responseStream << "\t\t\t"; -#line 282 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 287 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" responseStream << ( DataTypeConverter::replaceNewLineWithBr(ss.str()) ); -#line 282 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 287 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" } - } responseStream << "\n"; + responseStream << "\n"; + responseStream << "\t\t

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

\n"; + responseStream << "\t"; +#line 291 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" + } responseStream << "\n"; responseStream << "\t\n"; responseStream << "
\n"; responseStream << "\n"; // begin include footer.cpsp diff --git a/src/cpp/lib/DataTypeConverter.cpp b/src/cpp/lib/DataTypeConverter.cpp index 6c56bdef2..c013cc17a 100644 --- a/src/cpp/lib/DataTypeConverter.cpp +++ b/src/cpp/lib/DataTypeConverter.cpp @@ -340,20 +340,19 @@ namespace DataTypeConverter for (auto it = json->begin(); it != json->end(); it++) { - if (it->first == "sigPair") - { - int zahl = 1; - } if (json->isObject(it)) { auto local_json = it->second.extract(); count_replacements += replaceBase64WithHex(local_json); json->set(it->first, local_json); } else if (json->isArray(it)) { - + auto local_json = it->second.extract(); + count_replacements += replaceBase64WithHex(local_json); + json->set(it->first, local_json); } else if (it->second.isString()) { + if (it->first == "amount") continue; auto field_value = it->second.extract(); if(!g_rexExpBase64.match(field_value)) continue; @@ -362,7 +361,7 @@ namespace DataTypeConverter auto hex = binToHex(bin); mm->releaseMemory(bin); - json->set(it->first, hex); + json->set(it->first, hex.substr(0, hex.size()-1)); count_replacements++; } } @@ -370,6 +369,43 @@ namespace DataTypeConverter return count_replacements; } + int replaceBase64WithHex(Poco::JSON::Array::Ptr json) + { + auto mm = MemoryManager::getInstance(); + int count_replacements = 0; + int count = 0; + for (auto it = json->begin(); it != json->end(); it++) + { + if (json->isObject(it)) { + + auto local_json = it->extract(); + count_replacements += replaceBase64WithHex(local_json); + json->set(count, local_json); + } + else if (json->isArray(it)) { + auto local_json = it->extract(); + count_replacements += replaceBase64WithHex(local_json); + json->set(count, local_json); + } + else if (it->isString()) + { + auto field_value = it->extract(); + if (!g_rexExpBase64.match(field_value)) continue; + + auto bin = base64ToBin(field_value); + if (!bin) continue; + + auto hex = binToHex(bin); + mm->releaseMemory(bin); + json->set(count, hex.substr(0, hex.size()-1)); + count_replacements++; + } + count++; + } + + return count_replacements; + } + std::string replaceNewLineWithBr(std::string& in) { diff --git a/src/cpp/lib/DataTypeConverter.h b/src/cpp/lib/DataTypeConverter.h index 1adc0f14b..e4a0487fe 100644 --- a/src/cpp/lib/DataTypeConverter.h +++ b/src/cpp/lib/DataTypeConverter.h @@ -8,6 +8,7 @@ #include "Poco/Nullable.h" #include "Poco/Data/LOB.h" #include "Poco/JSON/Object.h" +#include "Poco/JSON/Array.h" #include "../SingletonManager/LanguageManager.h" #include "../proto/hedera/Timestamp.pb.h" @@ -63,6 +64,7 @@ namespace DataTypeConverter { //! \brief go through json object and replace every string entry in base64 format into hex format //! \return count of replaced strings int replaceBase64WithHex(Poco::JSON::Object::Ptr json); + int replaceBase64WithHex(Poco::JSON::Array::Ptr json); std::string replaceNewLineWithBr(std::string& in); }; diff --git a/src/cpsp/adminNodeServerTest.cpsp b/src/cpsp/adminNodeServerTest.cpsp index ace5eb4e7..8d0a38f3e 100644 --- a/src/cpsp/adminNodeServerTest.cpsp +++ b/src/cpsp/adminNodeServerTest.cpsp @@ -31,9 +31,9 @@ enum PageType Poco::AutoPtr node_server; Poco::AutoPtr user; Poco::AutoPtr hedera_topic; - int hedera_timeout = 15; + int hedera_timeout = 9; - bool steps[6]; memset(steps, 0, 6 * sizeof(bool)); + bool steps[6]; memset(steps, 1, 6 * sizeof(bool)); if(!form.empty()) @@ -69,6 +69,8 @@ enum PageType step_temp = form.get(name, ""); if(step_temp == "1") { steps[i] = true; + } else { + steps[i] = false; } } } @@ -81,22 +83,22 @@ enum PageType
- - + +
-
+
style="display:block" <% } %>>

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

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

-

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

-

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

-

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

-

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

-

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

-

7. Ask choosen node for transaction and print result

+

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. Wait x seconds to give hedera time to process transactions

+

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

<% if(node_servers.size() == 0) { %> @@ -130,7 +132,7 @@ enum PageType
-
+
style="display:block" <% } %>>

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

@@ -187,7 +189,7 @@ enum PageType

skipped

<% } else { auto transaction1 = model::gradido::Transaction::createGroupMemberUpdate(user_1, user_group); - transaction1->getTransactionBody()->getGroupMemberUpdate()->setMinSignatureCount(2); + transaction1->getTransactionBody()->getGroupMemberUpdate()->setMinSignatureCount(1); transaction1->sign(user_1); %> @@ -203,7 +205,7 @@ enum PageType

skipped

<% } else { auto transaction2 = model::gradido::Transaction::createGroupMemberUpdate(user_2, user_group); - transaction2->getTransactionBody()->getGroupMemberUpdate()->setMinSignatureCount(3); + transaction2->getTransactionBody()->getGroupMemberUpdate()->setMinSignatureCount(2); transaction2->sign(user_2); transaction2->sign(user_1); @@ -219,7 +221,7 @@ enum PageType if(!steps[2]) { %>

skipped

<% } else { - auto transaction3 = model::gradido::Transaction::createCreation(user_2, 1000, Poco::DateTime(), "Test Creation"); + auto transaction3 = model::gradido::Transaction::createCreation(user_2, 10000000, Poco::DateTime(), "Test Creation"); transaction3->sign(user_1); %>

<%= DataTypeConverter::replaceNewLineWithBr(transaction3->getTransactionAsJson(true)) %>

@@ -234,7 +236,7 @@ enum PageType

skipped

<% } else { auto user_1_pubkey = user_1->getModel()->getPublicKeyCopy(); - auto transaction4 = model::gradido::Transaction::createTransfer(user_2, user_1_pubkey, user_group, 500, "Test Transfer"); + auto transaction4 = model::gradido::Transaction::createTransfer(user_2, user_1_pubkey, user_group, 5000000, "Test Transfer"); %>

<%= DataTypeConverter::replaceNewLineWithBr(transaction4[0]->getTransactionAsJson(true)) %>

<% } %> @@ -242,7 +244,7 @@ enum PageType
  • 6. Wait <%= hedera_timeout %> seconds to give hedera time to process transactions

    - <% if(!steps[3]) { %> + <% if(!steps[4]) { %>

    skipped

    <% } else { Poco::Thread::sleep(hedera_timeout * 1000); @@ -250,8 +252,9 @@ enum PageType
  • 7. Ask choosen node for transaction and print result

    - <% if(!steps[3] || node_server.isNull()) { %> -

    skipped

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

    skipped

    <% } else { auto node_server_model = node_server->getModel(); JsonRPCRequest jsonrpc(node_server_model->getUrl(), node_server_model->getPort()); @@ -265,9 +268,11 @@ enum PageType <%= DataTypeConverter::replaceNewLineWithBr(ss.str()) %><% } } %> +

    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()); @@ -281,7 +286,9 @@ enum PageType //printf("result: %s\n", ss.str().data());%> <%= DataTypeConverter::replaceNewLineWithBr(ss.str()) %><% } - } %> + %> +

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

    + <% } %>