mirror of
https://github.com/IT4Change/gradido.git
synced 2025-12-13 07:45:54 +00:00
adjust for cross group transaction test and also fix false order for real version
This commit is contained in:
parent
ae096e2d2e
commit
95cb35129b
@ -45,11 +45,14 @@ void AdminNodeServerTestPage::handleRequest(Poco::Net::HTTPServerRequest& reques
|
||||
const char* pageName = "Node Server Test";
|
||||
PageType page = PAGE_CHOOSE_TEST;
|
||||
Poco::AutoPtr<controller::NodeServer> node_server;
|
||||
Poco::AutoPtr<controller::NodeServer> node_server2;
|
||||
Poco::AutoPtr<controller::User> user;
|
||||
Poco::AutoPtr<controller::HederaTopic> hedera_topic;
|
||||
int hedera_timeout = 9;
|
||||
Poco::AutoPtr<controller::HederaTopic> hedera_topic2;
|
||||
int hedera_timeout = 4;
|
||||
int sleep_ms_between_transactions = 1000;
|
||||
|
||||
bool steps[6]; memset(steps, 1, 6 * sizeof(bool));
|
||||
bool steps[8]; memset(steps, 1, 8 * sizeof(bool));
|
||||
|
||||
|
||||
if(!form.empty())
|
||||
@ -61,6 +64,13 @@ void AdminNodeServerTestPage::handleRequest(Poco::Net::HTTPServerRequest& reques
|
||||
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;
|
||||
@ -68,18 +78,25 @@ void AdminNodeServerTestPage::handleRequest(Poco::Net::HTTPServerRequest& reques
|
||||
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 4-Test") {
|
||||
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 < 6; i++) {
|
||||
for(int i = 0; i < 8; i++) {
|
||||
std::string name = "step-";
|
||||
name += std::to_string(i+2);
|
||||
step_temp = form.get(name, "");
|
||||
@ -162,206 +179,302 @@ void AdminNodeServerTestPage::handleRequest(Poco::Net::HTTPServerRequest& reques
|
||||
responseStream << "\t\t<div class=\"content\">";
|
||||
// end include header_large.cpsp
|
||||
responseStream << "\n";
|
||||
#line 82 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 99 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( getErrorsHtml() );
|
||||
responseStream << "\n";
|
||||
responseStream << "<div class=\"center-form-container\">\n";
|
||||
responseStream << "\t<!-- Tab links -->\n";
|
||||
responseStream << "\t<div class=\"tab\">\n";
|
||||
responseStream << "\t <button class=\"tablinks ";
|
||||
#line 86 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 103 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
if(PAGE_RUN_4_SET_TEST == page) { responseStream << " active ";
|
||||
#line 86 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
} responseStream << "\" onclick=\"openTab(event, 'test-4')\">Test 4-Set (2 AddMember, Creation, Transfer)</button>\n";
|
||||
#line 103 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
} responseStream << "\" onclick=\"openTab(event, 'test-4')\">Test 6-Set (3 AddMember, Creation, 2 Transfer)</button>\n";
|
||||
responseStream << "\t <button class=\"tablinks ";
|
||||
#line 87 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 104 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
if(PAGE_GET_TRANSACTION_RPC_CALL == page) { responseStream << " active ";
|
||||
#line 87 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 104 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
} responseStream << "\" onclick=\"openTab(event, 'gn-jsonrpc')\" title=\"call via json-rpc to gradido node with getTransactions\">getTransactions</button>\n";
|
||||
responseStream << "\t</div>\n";
|
||||
responseStream << "\t<div id=\"test-4\" class=\"tabcontent\" ";
|
||||
#line 89 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 106 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
if(PAGE_RUN_4_SET_TEST == page) { responseStream << " style=\"display:block\" ";
|
||||
#line 89 "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<div class=\"center-form-title\">\n";
|
||||
responseStream << "\t\t\t<h3>Test 4-Set (2 AddMember, Creation, Transfer)</</h3>\n";
|
||||
responseStream << "\t\t\t<h3>Test 6-Set (3 AddMember, Creation, 2 Transfer)</</h3>\n";
|
||||
responseStream << "\t\t</div>\n";
|
||||
responseStream << "\t\t<div class=\"center-form-form\">\n";
|
||||
responseStream << "\t\t\t<form method=\"POST\" action=\"";
|
||||
#line 94 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 111 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( getBaseUrl() );
|
||||
responseStream << "/adminNodeServerTest\">\n";
|
||||
responseStream << "\t\t\t\t<p>1. Create two new accounts and show user public keys for comparisation</p>\n";
|
||||
responseStream << "\t\t\t\t<p>1. Create three new accounts and show user public keys for comparisation</p>\n";
|
||||
responseStream << "\t\t\t\t<p><input class=\"form-checkbox\" type=\"checkbox\" ";
|
||||
#line 96 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 113 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
if(steps[0]) { responseStream << " checked=\"checked\" ";
|
||||
#line 96 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 113 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
} responseStream << " name=\"step-2\" value=\"1\"/> 2. Send a add-member transaction to hedera topic with one signature (first user)</p>\n";
|
||||
responseStream << "\t\t\t\t<p><input class=\"form-checkbox\" type=\"checkbox\" ";
|
||||
#line 97 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 114 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
if(steps[1]) { responseStream << " checked=\"checked\" ";
|
||||
#line 97 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 114 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
} responseStream << " name=\"step-3\" value=\"1\"/> 3. Send a add-member transaction to hedera topic with two signatures (first user and second user)</p>\n";
|
||||
responseStream << "\t\t\t\t<p><input class=\"form-checkbox\" type=\"checkbox\" ";
|
||||
#line 98 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 115 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
if(steps[2]) { responseStream << " checked=\"checked\" ";
|
||||
#line 98 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 115 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
} responseStream << " name=\"step-4\" value=\"1\"/> 4. Send a creation transaction to second user, signed by first user</p>\n";
|
||||
responseStream << "\t\t\t\t<p><input class=\"form-checkbox\" type=\"checkbox\" ";
|
||||
#line 99 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 116 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
if(steps[3]) { responseStream << " checked=\"checked\" ";
|
||||
#line 99 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 116 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
} responseStream << " name=\"step-5\" value=\"1\"/> 5. Send a transfer transaction from second user to first user signed by second user</p>\n";
|
||||
responseStream << "\t\t\t\t<p><input class=\"form-checkbox\" type=\"checkbox\" ";
|
||||
#line 100 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 117 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
if(steps[4]) { responseStream << " checked=\"checked\" ";
|
||||
#line 100 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
} responseStream << " name=\"step-6\" value=\"1\"/> 6. Wait x seconds to give hedera time to process transactions</p>\n";
|
||||
#line 117 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
} responseStream << " name=\"step-6\" value=\"1\"/> 6. Send a add-member transaction to hedera topic 2 with one signature (third user)</p>\n";
|
||||
responseStream << "\t\t\t\t<p><input class=\"form-checkbox\" type=\"checkbox\" ";
|
||||
#line 101 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 118 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
if(steps[5]) { responseStream << " checked=\"checked\" ";
|
||||
#line 101 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
} responseStream << " name=\"step-7\" value=\"1\"/> 7. Ask choosen node for transaction and print result</p>\n";
|
||||
responseStream << "\t\t\t\n";
|
||||
responseStream << "\t\t\t\t<label class=\"form-label\" for=\"test-node-servers\">Node Server for tests</label>\n";
|
||||
responseStream << "\t\t\t\t";
|
||||
#line 104 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 118 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
} responseStream << " name=\"step-7\" value=\"1\"/> 7. Send a cross group transfer from second user to third user signed by second user</p>\n";
|
||||
responseStream << "\t\t\t\t<p><input class=\"form-checkbox\" type=\"checkbox\" ";
|
||||
#line 119 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
if(steps[6]) { responseStream << " checked=\"checked\" ";
|
||||
#line 119 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
} responseStream << " name=\"step-8\" value=\"1\"/> 8. Wait x seconds to give hedera time to process transactions</p>\n";
|
||||
responseStream << "\t\t\t\t<p><input class=\"form-checkbox\" type=\"checkbox\" ";
|
||||
#line 120 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
if(steps[7]) { responseStream << " checked=\"checked\" ";
|
||||
#line 120 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
} responseStream << " name=\"step-9\" value=\"1\"/> 9. Ask choosen node for transaction and print result</p>\n";
|
||||
responseStream << "\t\t\t\t<fieldset>\n";
|
||||
responseStream << "\t\t\t\t\t<legend>Group 1 </legend>\n";
|
||||
responseStream << "\t\t\t\t\t<label class=\"form-label\" for=\"test-node-servers\">Node Server for tests</label>\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<a href=\"";
|
||||
#line 105 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << "\t\t\t\t\t\t<a href=\"";
|
||||
#line 125 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( getBaseUrl() );
|
||||
responseStream << "/nodes\"><span class=\"link-title\">Edit Node-Servers</span></a>\n";
|
||||
responseStream << "\t\t\t\t";
|
||||
#line 106 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
} responseStream << "\n";
|
||||
responseStream << "\t\t\t\t<select name=\"test-node-servers\" id=\"test-node-servers\">\n";
|
||||
responseStream << "\t\t\t\t\t";
|
||||
#line 108 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 126 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
} responseStream << "\n";
|
||||
responseStream << "\t\t\t\t\t<select name=\"test-node-servers\" id=\"test-node-servers\">\n";
|
||||
responseStream << "\t\t\t\t\t\t";
|
||||
#line 128 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
for(auto it = node_servers.begin(); it != node_servers.end(); it++) {
|
||||
auto model = (*it)->getModel();
|
||||
responseStream << "\n";
|
||||
responseStream << "\t\t\t\t\t\t<option title=\"";
|
||||
#line 111 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
auto model = (*it)->getModel();
|
||||
responseStream << "\n";
|
||||
responseStream << "\t\t\t\t\t\t\t<option title=\"";
|
||||
#line 131 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( model->toString() );
|
||||
responseStream << "\" value=\"";
|
||||
#line 111 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 131 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( model->getID() );
|
||||
responseStream << "\" ";
|
||||
#line 111 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 131 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
if(!node_server.isNull() && node_server->getModel()->getID() == model->getID()) { responseStream << "selected=\"selected\"";
|
||||
#line 111 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 131 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
} responseStream << ">";
|
||||
#line 111 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 131 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( model->getUrlWithPort() );
|
||||
responseStream << ", group: ";
|
||||
#line 111 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 131 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( model->getGroupId() );
|
||||
responseStream << "</option>\n";
|
||||
responseStream << "\t\t\t\t\t";
|
||||
#line 112 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << "\t\t\t\t\t\t";
|
||||
#line 132 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
} responseStream << "\n";
|
||||
responseStream << "\t\t\t\t</select>\n";
|
||||
responseStream << "\t\t\t\t<label class=\"form-label\" for=\"test-hedera-topic\">Hedera Topic for tests</label>\n";
|
||||
responseStream << "\t\t\t\t";
|
||||
#line 115 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << "\t\t\t\t\t</select>\n";
|
||||
responseStream << "\t\t\t\t\t<label class=\"form-label\" for=\"test-hedera-topic\">Hedera Topic for tests</label>\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<a href=\"";
|
||||
#line 116 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << "\t\t\t\t\t\t<a href=\"";
|
||||
#line 136 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( getBaseUrl() );
|
||||
responseStream << "/topic\"><span class=\"link-title\">Edit Hedera-Topics</span></a>\n";
|
||||
responseStream << "\t\t\t\t";
|
||||
#line 117 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
} responseStream << "\n";
|
||||
responseStream << "\t\t\t\t<select name=\"test-hedera-topic\" id=\"test-hedera-topic\">\n";
|
||||
responseStream << "\t\t\t\t\t";
|
||||
#line 119 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 137 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
} responseStream << "\n";
|
||||
responseStream << "\t\t\t\t\t<select name=\"test-hedera-topic\" id=\"test-hedera-topic\">\n";
|
||||
responseStream << "\t\t\t\t\t\t";
|
||||
#line 139 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
for(auto it = hedera_topics.begin(); it != hedera_topics.end(); it++) {
|
||||
auto model = (*it)->getModel();
|
||||
auto hedera_account = (*it)->getAutoRenewAccount();
|
||||
if(hedera_account->getModel()->getNetworkType() != ServerConfig::HEDERA_TESTNET) {
|
||||
continue;
|
||||
}
|
||||
responseStream << "\n";
|
||||
responseStream << "\t\t\t\t\t\t<option title=\"";
|
||||
#line 126 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
auto model = (*it)->getModel();
|
||||
auto hedera_account = (*it)->getAutoRenewAccount();
|
||||
if(hedera_account->getModel()->getNetworkType() != ServerConfig::HEDERA_TESTNET) {
|
||||
continue;
|
||||
}
|
||||
responseStream << "\n";
|
||||
responseStream << "\t\t\t\t\t\t\t<option title=\"";
|
||||
#line 146 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( model->toString() );
|
||||
responseStream << "\" value=\"";
|
||||
#line 126 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 146 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( model->getID() );
|
||||
responseStream << "\" ";
|
||||
#line 126 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 146 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
if(!hedera_topic.isNull() && hedera_topic->getModel()->getID() == model->getID()) { responseStream << "selected=\"selected\"";
|
||||
#line 126 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 146 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
} responseStream << ">";
|
||||
#line 126 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 146 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( model->getName() );
|
||||
responseStream << ", group: ";
|
||||
#line 126 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 146 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( model->getGroupId() );
|
||||
responseStream << "</option>\n";
|
||||
responseStream << "\t\t\t\t\t";
|
||||
#line 127 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << "\t\t\t\t\t\t";
|
||||
#line 147 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
} responseStream << "\n";
|
||||
responseStream << "\t\t\t\t</select>\n";
|
||||
responseStream << "\t\t\t\t\t</select>\n";
|
||||
responseStream << "\t\t\t\t</fieldset>\n";
|
||||
responseStream << "\t\t\t\t<fieldset>\n";
|
||||
responseStream << "\t\t\t\t\t<legend>Group 2 </legend>\n";
|
||||
responseStream << "\t\t\t\t\t<label class=\"form-label\" for=\"test-node-servers2\">Node Server for tests</label>\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\t<a href=\"";
|
||||
#line 154 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( getBaseUrl() );
|
||||
responseStream << "/nodes\"><span class=\"link-title\">Edit Node-Servers</span></a>\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<select name=\"test-node-servers2\" id=\"test-node-servers2\">\n";
|
||||
responseStream << "\t\t\t\t\t\t";
|
||||
#line 157 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
for(auto it = node_servers.begin(); it != node_servers.end(); it++) {
|
||||
auto model = (*it)->getModel();
|
||||
responseStream << "\n";
|
||||
responseStream << "\t\t\t\t\t\t\t<option title=\"";
|
||||
#line 160 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( model->toString() );
|
||||
responseStream << "\" value=\"";
|
||||
#line 160 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( model->getID() );
|
||||
responseStream << "\" ";
|
||||
#line 160 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
if(!node_server2.isNull() && node_server2->getModel()->getID() == model->getID()) { responseStream << "selected=\"selected\"";
|
||||
#line 160 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
} responseStream << ">";
|
||||
#line 160 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( model->getUrlWithPort() );
|
||||
responseStream << ", group: ";
|
||||
#line 160 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( model->getGroupId() );
|
||||
responseStream << "</option>\n";
|
||||
responseStream << "\t\t\t\t\t\t";
|
||||
#line 161 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
} responseStream << "\n";
|
||||
responseStream << "\t\t\t\t\t</select>\n";
|
||||
responseStream << "\t\t\t\t\t<label class=\"form-label\" for=\"test-hedera-topic2\">Hedera Topic for tests</label>\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\t<a href=\"";
|
||||
#line 165 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( getBaseUrl() );
|
||||
responseStream << "/topic\"><span class=\"link-title\">Edit Hedera-Topics</span></a>\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<select name=\"test-hedera-topic2\" id=\"test-hedera-topic2\">\n";
|
||||
responseStream << "\t\t\t\t\t\t";
|
||||
#line 168 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
for(auto it = hedera_topics.begin(); it != hedera_topics.end(); it++) {
|
||||
auto model = (*it)->getModel();
|
||||
auto hedera_account = (*it)->getAutoRenewAccount();
|
||||
if(hedera_account->getModel()->getNetworkType() != ServerConfig::HEDERA_TESTNET) {
|
||||
continue;
|
||||
}
|
||||
responseStream << "\n";
|
||||
responseStream << "\t\t\t\t\t\t\t<option title=\"";
|
||||
#line 175 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( model->toString() );
|
||||
responseStream << "\" value=\"";
|
||||
#line 175 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( model->getID() );
|
||||
responseStream << "\" ";
|
||||
#line 175 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
if(!hedera_topic2.isNull() && hedera_topic2->getModel()->getID() == model->getID()) { responseStream << "selected=\"selected\"";
|
||||
#line 175 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
} responseStream << ">";
|
||||
#line 175 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( model->getName() );
|
||||
responseStream << ", group: ";
|
||||
#line 175 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( model->getGroupId() );
|
||||
responseStream << "</option>\n";
|
||||
responseStream << "\t\t\t\t\t\t";
|
||||
#line 176 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
} responseStream << "\n";
|
||||
responseStream << "\t\t\t\t\t</select>\n";
|
||||
responseStream << "\t\t\t\t</fieldset>\n";
|
||||
responseStream << "\t\t\t\t\n";
|
||||
responseStream << "\t\t\t\t<label class=\"form-label\" for=\"test-timeout\">Timeout waiting for hedera in seconds</label>\n";
|
||||
responseStream << "\t\t\t\t<input name=\"test-timeout\" id=\"test-timeout\" type=\"number\" value=\"";
|
||||
#line 130 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 181 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( hedera_timeout );
|
||||
responseStream << "\"> seconds \n";
|
||||
responseStream << "\t\t\t\t<input class=\"center-form-submit form-button\" type=\"submit\" name=\"submit\" value=\"Run 4-Test\">\n";
|
||||
responseStream << "\t\t\t\t<input class=\"center-form-submit form-button\" type=\"submit\" name=\"submit\" value=\"Run 6-Test\">\n";
|
||||
responseStream << "\t\t\t</form>\n";
|
||||
responseStream << "\t\t</div>\n";
|
||||
responseStream << "\t</div>\n";
|
||||
responseStream << "\t<div id=\"gn-jsonrpc\" class=\"tabcontent\" ";
|
||||
#line 135 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 186 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
if(PAGE_GET_TRANSACTION_RPC_CALL == page) { responseStream << " style=\"display:block\" ";
|
||||
#line 135 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 186 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
} responseStream << ">\n";
|
||||
responseStream << "\t\t<div class=\"center-form-title\">\n";
|
||||
responseStream << "\t\t\t<h3>Test 4-Set (2 AddMember, Creation, Transfer)</</h3>\n";
|
||||
responseStream << "\t\t</div>\n";
|
||||
responseStream << "\t\t<div class=\"center-form-form\">\n";
|
||||
responseStream << "\t\t\t<form method=\"POST\" action=\"";
|
||||
#line 140 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 191 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( getBaseUrl() );
|
||||
responseStream << "/adminNodeServerTest\">\n";
|
||||
responseStream << "\t\t\t\t<label class=\"form-label\" for=\"test-node-servers\">Node Server to call</label>\n";
|
||||
responseStream << "\t\t\t\t";
|
||||
#line 142 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 193 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
if(node_servers.size() == 0) { responseStream << "\n";
|
||||
responseStream << "\t\t\t\t\t<a href=\"";
|
||||
#line 143 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 194 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( getBaseUrl() );
|
||||
responseStream << "/nodes\"><span class=\"link-title\">Edit Node-Servers</span></a>\n";
|
||||
responseStream << "\t\t\t\t";
|
||||
#line 144 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 195 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
} responseStream << "\n";
|
||||
responseStream << "\t\t\t\t<select name=\"test-node-servers\" id=\"test-node-servers\">\n";
|
||||
responseStream << "\t\t\t\t\t";
|
||||
#line 146 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 197 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
for(auto it = node_servers.begin(); it != node_servers.end(); it++) {
|
||||
auto model = (*it)->getModel();
|
||||
responseStream << "\n";
|
||||
responseStream << "\t\t\t\t\t\t<option title=\"";
|
||||
#line 149 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 200 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( model->toString() );
|
||||
responseStream << "\" value=\"";
|
||||
#line 149 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 200 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( model->getID() );
|
||||
responseStream << "\" ";
|
||||
#line 149 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 200 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
if(!node_server.isNull() && node_server->getModel()->getID() == model->getID()) { responseStream << "selected=\"selected\"";
|
||||
#line 149 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 200 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
} responseStream << ">";
|
||||
#line 149 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 200 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( model->getUrlWithPort() );
|
||||
responseStream << ", group: ";
|
||||
#line 149 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 200 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( model->getGroupId() );
|
||||
responseStream << "</option>\n";
|
||||
responseStream << "\t\t\t\t\t";
|
||||
#line 150 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 201 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
} responseStream << "\n";
|
||||
responseStream << "\t\t\t\t</select>\n";
|
||||
responseStream << "\t\t\t\t<input class=\"center-form-submit form-button\" type=\"submit\" name=\"submit\" value=\"json-rpc getTransactions\">\n";
|
||||
@ -369,17 +482,19 @@ void AdminNodeServerTestPage::handleRequest(Poco::Net::HTTPServerRequest& reques
|
||||
responseStream << "\t\t</div>\n";
|
||||
responseStream << "\t</div>\n";
|
||||
responseStream << "\t";
|
||||
#line 156 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#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<ul>\n";
|
||||
responseStream << "\t\t<li>\n";
|
||||
responseStream << "\t\t\t<p>1. Create two new accounts and show user public keys for comparisation: </p>\n";
|
||||
responseStream << "\t\t\t<p>1. Create three new accounts and show user public keys for comparisation: </p>\n";
|
||||
responseStream << "\t\t\t";
|
||||
#line 160 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#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";
|
||||
@ -395,30 +510,51 @@ void AdminNodeServerTestPage::handleRequest(Poco::Net::HTTPServerRequest& reques
|
||||
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<p>User 1: ";
|
||||
#line 180 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << "\t\t\t<fieldset><legend>";
|
||||
#line 240 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( user_group->getModel()->getName() );
|
||||
responseStream << "</legend>\n";
|
||||
responseStream << "\t\t\t\t<p>User 1: ";
|
||||
#line 241 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( user_1->getPublicHex() );
|
||||
responseStream << "</p>\n";
|
||||
responseStream << "\t\t\t<p>User 2: ";
|
||||
#line 181 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << "\t\t\t\t<p>User 2: ";
|
||||
#line 242 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( user_2->getPublicHex() );
|
||||
responseStream << "</p>\n";
|
||||
responseStream << "\t\t\t</fieldset>\n";
|
||||
responseStream << "\t\t\t<fieldset><legend>";
|
||||
#line 244 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( user_group2->getModel()->getName() );
|
||||
responseStream << "</legend>\n";
|
||||
responseStream << "\t\t\t\t<p>User 3: ";
|
||||
#line 245 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( user_3->getPublicHex() );
|
||||
responseStream << "</p>\n";
|
||||
responseStream << "\t\t\t</fieldset>\n";
|
||||
responseStream << "\t\t\t<p>Time: ";
|
||||
#line 182 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 247 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( time2.string() );
|
||||
responseStream << "\n";
|
||||
responseStream << "\t\t</li>\n";
|
||||
responseStream << "\t\t<li>\n";
|
||||
responseStream << "\t\t\t<p>2. Send a add-member transaction to hedera topic with one signature (first user)</p>\n";
|
||||
responseStream << "\t\t\t";
|
||||
#line 186 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 251 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
|
||||
time2.reset();
|
||||
if(!steps[0]) { responseStream << "\n";
|
||||
responseStream << "\t\t\t\t<p>skipped</p>\n";
|
||||
responseStream << "\t\t\t";
|
||||
#line 190 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#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);
|
||||
@ -426,127 +562,202 @@ void AdminNodeServerTestPage::handleRequest(Poco::Net::HTTPServerRequest& reques
|
||||
auto transaction1_json = transaction1->getTransactionAsJson(true);
|
||||
responseStream << "\n";
|
||||
responseStream << "\t\t\t<p>";
|
||||
#line 196 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 261 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( DataTypeConverter::replaceNewLineWithBr(transaction1_json) );
|
||||
responseStream << "</p>\n";
|
||||
responseStream << "\t\t\t";
|
||||
#line 197 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 262 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
} responseStream << "\n";
|
||||
responseStream << "\t\t\t<p>Time: ";
|
||||
#line 198 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 263 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( time2.string() );
|
||||
responseStream << "\n";
|
||||
responseStream << "\t\t</li>\n";
|
||||
responseStream << "\t\t<li>\n";
|
||||
responseStream << "\t\t\t<p>3. Send a add-member transaction to hedera topic with two signatures (first user and second user)</p>\n";
|
||||
responseStream << "\t\t\t";
|
||||
#line 202 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 267 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
|
||||
time2.reset();
|
||||
if(!steps[1]) { responseStream << "\n";
|
||||
responseStream << "\t\t\t\t<p>skipped</p>\n";
|
||||
responseStream << "\t\t\t";
|
||||
#line 206 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#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<p>";
|
||||
#line 213 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 280 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( DataTypeConverter::replaceNewLineWithBr(transaction2_json) );
|
||||
responseStream << "</p>\n";
|
||||
responseStream << "\t\t\t";
|
||||
#line 214 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 281 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
} responseStream << "\n";
|
||||
responseStream << "\t\t\t<p>Time: ";
|
||||
#line 215 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 282 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( time2.string() );
|
||||
responseStream << "\n";
|
||||
responseStream << "\t\t</li>\n";
|
||||
responseStream << "\t\t<li>\n";
|
||||
responseStream << "\t\t\t<p>4. Send a creation transaction to second user, signed by first user</p>\n";
|
||||
responseStream << "\t\t\t";
|
||||
#line 219 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 286 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
|
||||
time2.reset();
|
||||
if(!steps[2]) { responseStream << "\n";
|
||||
responseStream << "\t\t\t\t<p>skipped</p>\n";
|
||||
responseStream << "\t\t\t";
|
||||
#line 223 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#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<p>";
|
||||
#line 228 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 297 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( DataTypeConverter::replaceNewLineWithBr(transaction3_json) );
|
||||
responseStream << "</p>\n";
|
||||
responseStream << "\t\t\t";
|
||||
#line 229 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 298 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
} responseStream << "\n";
|
||||
responseStream << "\t\t\t<p>Time: ";
|
||||
#line 230 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 299 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( time2.string() );
|
||||
responseStream << "</p>\n";
|
||||
responseStream << "\t\t</li>\n";
|
||||
responseStream << "\t\t<li>\n";
|
||||
responseStream << "\t\t\t<p>5. Send a transfer transaction from second user to first user signed by second user</p>\n";
|
||||
responseStream << "\t\t\t";
|
||||
#line 234 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 303 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
|
||||
time2.reset();
|
||||
if(!steps[3]) { responseStream << "\n";
|
||||
responseStream << "\t\t\t\t<p>skipped</p>\n";
|
||||
responseStream << "\t\t\t";
|
||||
#line 238 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#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(hedera_timeout * 100);
|
||||
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<p>";
|
||||
#line 246 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 315 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( DataTypeConverter::replaceNewLineWithBr(transaction4_json) );
|
||||
responseStream << "</p>\n";
|
||||
responseStream << "\t\t\t";
|
||||
#line 247 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 316 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
} responseStream << "\n";
|
||||
responseStream << "\t\t\t<p>Time: ";
|
||||
#line 248 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 317 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( time2.string() );
|
||||
responseStream << "</p>\n";
|
||||
responseStream << "\t\t</li>\n";
|
||||
responseStream << "\t\t<li>\n";
|
||||
responseStream << "\t\t\t<p>6. Wait ";
|
||||
#line 251 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << "\t\t\t<p>6. Send a add-member transaction to hedera topic 2 with one signature (third user)</p>\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<p>skipped</p>\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<p>";
|
||||
#line 332 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( DataTypeConverter::replaceNewLineWithBr(transaction5_json) );
|
||||
responseStream << "</p>\n";
|
||||
responseStream << "\t\t\t";
|
||||
#line 333 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
} responseStream << "\n";
|
||||
responseStream << "\t\t\t<p>Time: ";
|
||||
#line 334 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( time2.string() );
|
||||
responseStream << "</p>\n";
|
||||
responseStream << "\t\t</li>\n";
|
||||
responseStream << "\t\t<li>\n";
|
||||
responseStream << "\t\t\t<p>7. Send a cross group transfer from second user to third user signed by second user</p>\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<p>skipped</p>\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<div class=\"alert alert-error\" role=\"alert\">\n";
|
||||
responseStream << "\t\t\t\t\t<i class=\"material-icons-outlined\">report_problem</i>\n";
|
||||
responseStream << "\t\t\t\t\t<span>Error creating Transaction</span>\n";
|
||||
responseStream << "\t\t\t\t</div>\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);
|
||||
responseStream << "\n";
|
||||
responseStream << "\t\t\t\t\t<p>";
|
||||
#line 357 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( DataTypeConverter::replaceNewLineWithBr(transaction6_json) );
|
||||
responseStream << "</p>\t\t\n";
|
||||
responseStream << "\t\t\t\t";
|
||||
#line 358 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
} responseStream << "\n";
|
||||
responseStream << "\t\t\t";
|
||||
#line 359 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
} responseStream << " \n";
|
||||
responseStream << "\t\t\t<p>Time: ";
|
||||
#line 360 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( time2.string() );
|
||||
responseStream << "</p>\n";
|
||||
responseStream << "\t\t</li>\n";
|
||||
responseStream << "\t\t<li>\n";
|
||||
responseStream << "\t\t\t<p>8. Wait ";
|
||||
#line 363 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( hedera_timeout );
|
||||
responseStream << " seconds to give hedera time to process transactions</p>\n";
|
||||
responseStream << "\t\t\t";
|
||||
#line 252 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
if(!steps[4]) { responseStream << "\n";
|
||||
#line 364 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
if(!steps[6]) { responseStream << "\n";
|
||||
responseStream << "\t\t\t\t<p>skipped</p>\n";
|
||||
responseStream << "\t\t\t";
|
||||
#line 254 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 366 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
} else {
|
||||
Poco::Thread::sleep(hedera_timeout * 1000);
|
||||
} responseStream << "\n";
|
||||
responseStream << "\t\t</li>\n";
|
||||
responseStream << "\t\t<li>\n";
|
||||
responseStream << "\t\t\t<p>7. Ask choosen node for transaction and print result</p>\n";
|
||||
responseStream << "\t\t\t<p>9. Ask choosen node for transaction and print result</p>\n";
|
||||
responseStream << "\t\t\t";
|
||||
#line 260 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 372 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
time2.reset();
|
||||
if(!steps[5] || node_server.isNull()) {
|
||||
if(!steps[7] || node_server.isNull()) {
|
||||
responseStream << "<p>skipped</p>\n";
|
||||
responseStream << "\t\t\t";
|
||||
#line 263 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 375 "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());
|
||||
@ -559,20 +770,20 @@ void AdminNodeServerTestPage::handleRequest(Poco::Net::HTTPServerRequest& reques
|
||||
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 274 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 386 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( DataTypeConverter::replaceNewLineWithBr(answear_string) );
|
||||
#line 274 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 386 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
|
||||
}
|
||||
} responseStream << "\n";
|
||||
responseStream << "\t\t\t<p>Time: ";
|
||||
#line 277 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 389 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( time2.string() );
|
||||
responseStream << "</p>\n";
|
||||
responseStream << "\t\t</li>\n";
|
||||
responseStream << "\t</ul>\n";
|
||||
responseStream << "\t";
|
||||
#line 280 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 392 "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();
|
||||
@ -587,23 +798,23 @@ void AdminNodeServerTestPage::handleRequest(Poco::Net::HTTPServerRequest& reques
|
||||
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 293 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 405 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( DataTypeConverter::replaceNewLineWithBr(answear_string) );
|
||||
#line 293 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 405 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
|
||||
}
|
||||
responseStream << "\n";
|
||||
responseStream << "\t\t<p>Time: ";
|
||||
#line 296 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 408 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( time3.string() );
|
||||
responseStream << "</p>\n";
|
||||
responseStream << "\t";
|
||||
#line 297 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 409 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
} responseStream << "\n";
|
||||
responseStream << "\t\n";
|
||||
responseStream << "</div>\n";
|
||||
responseStream << "<script type=\"text/javascript\" src=\"";
|
||||
#line 300 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
#line 412 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp"
|
||||
responseStream << ( ServerConfig::g_php_serverPath );
|
||||
responseStream << "/js/tabs.js\"></script>\n";
|
||||
// begin include footer.cpsp
|
||||
|
||||
@ -304,6 +304,13 @@ namespace DataTypeConverter
|
||||
return microseconds;
|
||||
}
|
||||
|
||||
Poco::Timestamp convertFromProtoTimestamp(const proto::gradido::Timestamp& timestamp)
|
||||
{
|
||||
// microseconds
|
||||
google::protobuf::int64 microseconds = timestamp.seconds() * (google::protobuf::int64)10e5 + (google::protobuf::int64)(timestamp.nanos()) / (google::protobuf::int64)10e2;
|
||||
return microseconds;
|
||||
}
|
||||
|
||||
void convertToProtoTimestamp(const Poco::Timestamp pocoTimestamp, proto::Timestamp* protoTimestamp)
|
||||
{
|
||||
auto microsecondsTotal = pocoTimestamp.epochMicroseconds();
|
||||
|
||||
@ -56,6 +56,7 @@ namespace DataTypeConverter {
|
||||
std::string convertTimespanToLocalizedString(Poco::Timespan duration, LanguageCatalog* lang);
|
||||
|
||||
Poco::Timestamp convertFromProtoTimestamp(const proto::Timestamp& timestamp);
|
||||
Poco::Timestamp convertFromProtoTimestamp(const proto::gradido::Timestamp& timestamp);
|
||||
void convertToProtoTimestamp(const Poco::Timestamp pocoTimestamp, proto::Timestamp* protoTimestamp);
|
||||
void convertToProtoTimestamp(const Poco::Timestamp pocoTimestamp, proto::gradido::Timestamp* protoTimestamp);
|
||||
Poco::Timestamp convertFromProtoTimestampSeconds(const proto::gradido::TimestampSeconds& timestampSeconds);
|
||||
|
||||
@ -136,17 +136,24 @@ namespace model {
|
||||
else
|
||||
{
|
||||
auto sender_group = controller::Group::load(sender_model->getGroupId());
|
||||
if (sender_group.isNull())
|
||||
{
|
||||
em->addError(new ParamError(function_name, "couldn't find group with id: ", sender_model->getGroupId()));
|
||||
em->sendErrorsAsEmail();
|
||||
return results;
|
||||
}
|
||||
Poco::AutoPtr<controller::Group> transaction_group;
|
||||
Poco::AutoPtr<controller::Group> topic_group;
|
||||
// default constructor set it to now
|
||||
Poco::Timestamp pairedTransactionId;
|
||||
// create only inbound transaction, and outbound before sending to hedera
|
||||
//for (int i = 0; i < 1; i++) {
|
||||
if (inbound) {
|
||||
if (!inbound) {
|
||||
transaction_group = receiverGroup;
|
||||
topic_group = sender_group;
|
||||
}
|
||||
else if(!inbound) {
|
||||
// transaction send to receiver blockchain
|
||||
else if(inbound) {
|
||||
transaction_group = sender_group;
|
||||
topic_group = receiverGroup;
|
||||
}
|
||||
@ -166,20 +173,107 @@ namespace model {
|
||||
auto body = TransactionBody::create(memo, sender, receiverPubkey, amount, pairedTransactionId, transaction_group);
|
||||
Poco::AutoPtr<Transaction> transaction = new Transaction(body);
|
||||
transaction->getModel()->setHederaId(topic_id->getModel()->getID());
|
||||
auto transfer_transaction = transaction->getTransactionBody()->getTransferTransaction();
|
||||
transfer_transaction->setOwnGroupAlias(sender_group->getModel()->getAlias());
|
||||
transfer_transaction->setTargetGroupAlias(receiverGroup->getModel()->getAlias());
|
||||
|
||||
results.push_back(transaction);
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
for (auto it = results.begin(); it != results.end(); it++) {
|
||||
(*it)->insertPendingTaskIntoDB(sender, model::table::TASK_TYPE_TRANSFER);
|
||||
PendingTasksManager::getInstance()->addTask(*it);
|
||||
if (!(*it)->getTransactionBody()->getTransferTransaction()->isInbound()) {
|
||||
(*it)->insertPendingTaskIntoDB(sender, model::table::TASK_TYPE_TRANSFER);
|
||||
PendingTasksManager::getInstance()->addTask(*it);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return results;
|
||||
|
||||
}
|
||||
|
||||
|
||||
bool Transaction::setTopicIdByGroup(const std::string& alias)
|
||||
{
|
||||
static const char* function_name = "Transaction::setTopicIdByGroup";
|
||||
auto topic_groups = controller::Group::load(alias);
|
||||
if (topic_groups.size() != 1) {
|
||||
addError(new ParamError(function_name, "not one group found for alias: ", alias));
|
||||
sendErrorsAsEmail();
|
||||
return false;
|
||||
}
|
||||
auto topic = controller::HederaId::find(topic_groups[0]->getModel()->getID(), ServerConfig::g_HederaNetworkType);
|
||||
if (topic.isNull()) {
|
||||
addError(new ParamError(function_name, "no topic found for group id", topic_groups[0]->getModel()->getID()));
|
||||
addError(new ParamError(function_name, "and network type: ", ServerConfig::g_HederaNetworkType));
|
||||
sendErrorsAsEmail();
|
||||
return false;
|
||||
}
|
||||
getModel()->setHederaId(topic->getModel()->getID());
|
||||
return true;
|
||||
}
|
||||
|
||||
Poco::AutoPtr<Transaction> Transaction::createTransfer(const MemoryBin* senderPubkey, Poco::AutoPtr<controller::User> receiver, std::string senderGroupAlias, Poco::UInt32 amount, const std::string& memo)
|
||||
{
|
||||
Poco::AutoPtr<Transaction> result;
|
||||
auto em = ErrorManager::getInstance();
|
||||
static const char* function_name = "Transaction::create transfer 2";
|
||||
|
||||
if (receiver.isNull() || !receiver->getModel() || !senderPubkey || !amount) {
|
||||
return result;
|
||||
}
|
||||
|
||||
//std::vector<Poco::AutoPtr<TransactionBody>> bodys;
|
||||
auto receiver_model = receiver->getModel();
|
||||
auto network_type = ServerConfig::g_HederaNetworkType;
|
||||
|
||||
auto sender_groups = controller::Group::load(senderGroupAlias);
|
||||
if (!sender_groups.size()) {
|
||||
em->addError(new ParamError(function_name, "couldn't find group", senderGroupAlias));
|
||||
em->sendErrorsAsEmail();
|
||||
return result;
|
||||
}
|
||||
Poco::AutoPtr<controller::Group> transaction_group;
|
||||
Poco::AutoPtr<controller::Group> topic_group = controller::Group::load(receiver_model->getGroupId());
|
||||
if (topic_group.isNull()) {
|
||||
em->addError(new ParamError(function_name, "topic group not found", receiver_model->getGroupId()));
|
||||
em->sendErrorsAsEmail();
|
||||
return result;
|
||||
}
|
||||
// default constructor set it to now
|
||||
Poco::Timestamp pairedTransactionId;
|
||||
// create only inbound transaction, and outbound before sending to hedera
|
||||
//for (int i = 0; i < 1; i++) {
|
||||
|
||||
//transaction_group = receiverGroup;
|
||||
//topic_group = sender_group;
|
||||
|
||||
auto topic_id = controller::HederaId::find(topic_group->getModel()->getID(), network_type);
|
||||
if (topic_id.isNull()) {
|
||||
em->addError(new ParamError(function_name, "could'n find topic for group: ", receiver_model->getGroupId()));
|
||||
em->addError(new ParamError(function_name, "network type: ", network_type));
|
||||
em->sendErrorsAsEmail();
|
||||
return result;
|
||||
}
|
||||
if (transaction_group.isNull()) {
|
||||
em->addError(new Error(function_name, "transaction group is zero, inbound"));
|
||||
em->sendErrorsAsEmail();
|
||||
return result;
|
||||
}
|
||||
|
||||
auto body = TransactionBody::create(memo, senderPubkey, receiver, amount, pairedTransactionId, transaction_group);
|
||||
result = new Transaction(body);
|
||||
result->getModel()->setHederaId(topic_id->getModel()->getID());
|
||||
|
||||
// }
|
||||
|
||||
//result->insertPendingTaskIntoDB(receiver, model::table::TASK_TYPE_TRANSFER);
|
||||
//PendingTasksManager::getInstance()->addTask(result);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
Poco::AutoPtr<Transaction> Transaction::load(model::table::PendingTask* dbModel)
|
||||
{
|
||||
@ -313,9 +407,18 @@ namespace model {
|
||||
{
|
||||
if (getTransactionBody()->isTransfer()) {
|
||||
auto transfer = getTransactionBody()->getTransferTransaction();
|
||||
if (transfer->isInbound()) {
|
||||
auto transaction = transfer->createOutbound(getTransactionBody()->getMemo());
|
||||
transaction->sign(user);
|
||||
if (transfer->isOutbound()) {
|
||||
auto transaction = transfer->createInbound(getTransactionBody()->getMemo());
|
||||
if (!transaction.isNull()) {
|
||||
transaction->sign(user);
|
||||
// dirty hack because gn crashes if its get transactions out of order
|
||||
Poco::Thread::sleep(1000);
|
||||
}
|
||||
else {
|
||||
addError(new Error(function_name, "Error creating outbound transaction"));
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
UniLib::controller::TaskPtr transaction_send_task(new SendTransactionTask(Poco::AutoPtr<Transaction>(this, true)));
|
||||
|
||||
@ -31,6 +31,7 @@ namespace model {
|
||||
//! \brief transfer
|
||||
//! \return for cross group transaction return two transactions
|
||||
static std::vector<Poco::AutoPtr<Transaction>> createTransfer(Poco::AutoPtr<controller::User> sender, const MemoryBin* receiverPubkey, Poco::AutoPtr<controller::Group> receiverGroup, Poco::UInt32 amount, const std::string& memo, bool inbound = true);
|
||||
Poco::AutoPtr<Transaction> createTransfer(const MemoryBin* senderPubkey, Poco::AutoPtr<controller::User> receiver, std::string senderGroupAlias, Poco::UInt32 amount, const std::string& memo);
|
||||
//! \brief creation transaction
|
||||
static Poco::AutoPtr<Transaction> createCreation(Poco::AutoPtr<controller::User> receiver, Poco::UInt32 amount, Poco::DateTime targetDate, const std::string& memo);
|
||||
static Poco::AutoPtr<Transaction> load(model::table::PendingTask* dbModel);
|
||||
@ -60,6 +61,8 @@ namespace model {
|
||||
|
||||
std::string getTransactionAsJson(bool replaceBase64WithHex = false);
|
||||
|
||||
bool setTopicIdByGroup(const std::string& alias);
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
@ -61,7 +61,7 @@ namespace model {
|
||||
{
|
||||
auto group_model = group->getModel();
|
||||
proto::gradido::CrossGroupTransfer* cross_group_transfer = nullptr;
|
||||
if (group->getModel()->getID() == sender->getModel()->getGroupId()) {
|
||||
if (group->getModel()->getID() != sender->getModel()->getGroupId()) {
|
||||
cross_group_transfer = gradido_transfer->mutable_outbound();
|
||||
}
|
||||
else {
|
||||
@ -84,6 +84,95 @@ namespace model {
|
||||
return obj;
|
||||
}
|
||||
|
||||
Poco::AutoPtr<TransactionBody> TransactionBody::create(const std::string& memo, const MemoryBin* senderPublicKey, Poco::AutoPtr<controller::User> receiver, Poco::UInt32 amount, Poco::Timestamp pairedTransactionId /*= Poco::Timestamp()*/, Poco::AutoPtr<controller::Group> group/* = nullptr*/)
|
||||
{
|
||||
if (receiver.isNull() || !receiver->getModel()) {
|
||||
return nullptr;
|
||||
}
|
||||
auto receiver_model = receiver->getModel();
|
||||
|
||||
|
||||
Poco::AutoPtr<TransactionBody> obj = new TransactionBody;
|
||||
obj->mTransactionBody.set_memo(memo);
|
||||
auto gradido_transfer = obj->mTransactionBody.mutable_transfer();
|
||||
proto::gradido::TransferAmount* transfer_amount = nullptr;
|
||||
std::string* sender = nullptr;
|
||||
|
||||
auto group_model = group->getModel();
|
||||
proto::gradido::CrossGroupTransfer* cross_group_transfer = nullptr;
|
||||
|
||||
cross_group_transfer = gradido_transfer->mutable_inbound();
|
||||
|
||||
transfer_amount = cross_group_transfer->mutable_sender();
|
||||
sender = transfer_amount->mutable_pubkey();
|
||||
auto paired_transaction_id = cross_group_transfer->mutable_paired_transaction_id();
|
||||
DataTypeConverter::convertToProtoTimestamp(pairedTransactionId, paired_transaction_id);
|
||||
cross_group_transfer->set_other_group(group_model->getAlias());
|
||||
|
||||
transfer_amount->set_amount(amount);
|
||||
transfer_amount->set_pubkey(senderPublicKey, KeyPairEd25519::getPublicKeySize());
|
||||
cross_group_transfer->set_receiver(receiver_model->getPublicKey(), receiver_model->getPublicKeySize());
|
||||
*sender = std::string((const char*)senderPublicKey->data(), senderPublicKey->size());
|
||||
|
||||
obj->mType = TRANSACTION_TRANSFER;
|
||||
obj->mTransactionSpecific = new TransactionTransfer(memo, obj->mTransactionBody.transfer());
|
||||
obj->mTransactionSpecific->prepare();
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
Poco::AutoPtr<TransactionBody> TransactionBody::create(const std::string& memo, const MemoryBin* senderPublicKey, const MemoryBin* receiverPublicKey, Poco::UInt32 amount, const std::string groupAlias, TransactionTransferType transferType, Poco::Timestamp pairedTransactionId/* = Poco::Timestamp()*/)
|
||||
{
|
||||
assert(transferType == TRANSFER_CROSS_GROUP_INBOUND || transferType == TRANSFER_CROSS_GROUP_OUTBOUND || transferType == TRANSFER_LOCAL);
|
||||
if (!senderPublicKey || !receiverPublicKey) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
Poco::AutoPtr<TransactionBody> obj = new TransactionBody;
|
||||
obj->mTransactionBody.set_memo(memo);
|
||||
auto gradido_transfer = obj->mTransactionBody.mutable_transfer();
|
||||
proto::gradido::TransferAmount* transfer_amount = nullptr;
|
||||
proto::gradido::CrossGroupTransfer* cross_group_transfer = nullptr;
|
||||
proto::gradido::LocalTransfer* local_transfer = nullptr;
|
||||
|
||||
switch (transferType)
|
||||
{
|
||||
case TRANSFER_CROSS_GROUP_INBOUND:
|
||||
cross_group_transfer = gradido_transfer->mutable_inbound();
|
||||
break;
|
||||
case TRANSFER_CROSS_GROUP_OUTBOUND:
|
||||
cross_group_transfer = gradido_transfer->mutable_outbound();
|
||||
break;
|
||||
case TRANSFER_LOCAL:
|
||||
local_transfer = gradido_transfer->mutable_local();
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
if (local_transfer) {
|
||||
transfer_amount = local_transfer->mutable_sender();
|
||||
local_transfer->set_receiver((const char*)receiverPublicKey->data(), receiverPublicKey->size());
|
||||
}
|
||||
else if (cross_group_transfer) {
|
||||
transfer_amount = cross_group_transfer->mutable_sender();
|
||||
auto paired_transaction_id = cross_group_transfer->mutable_paired_transaction_id();
|
||||
DataTypeConverter::convertToProtoTimestamp(pairedTransactionId, paired_transaction_id);
|
||||
cross_group_transfer->set_other_group(groupAlias);
|
||||
|
||||
cross_group_transfer->set_receiver((const char*)receiverPublicKey->data(), receiverPublicKey->size());
|
||||
}
|
||||
|
||||
|
||||
transfer_amount->set_amount(amount);
|
||||
transfer_amount->set_pubkey((const unsigned char*)senderPublicKey->data(), senderPublicKey->size());
|
||||
|
||||
obj->mType = TRANSACTION_TRANSFER;
|
||||
obj->mTransactionSpecific = new TransactionTransfer(memo, obj->mTransactionBody.transfer());
|
||||
obj->mTransactionSpecific->prepare();
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
Poco::AutoPtr<TransactionBody> TransactionBody::create(const std::string& memo, Poco::AutoPtr<controller::User> receiver, Poco::UInt32 amount, Poco::DateTime targetDate)
|
||||
{
|
||||
if (receiver.isNull() || !receiver->getModel()) {
|
||||
|
||||
@ -34,6 +34,8 @@ namespace model {
|
||||
//! \param group if group.isNull() it is a local transfer, else cross group transfer,
|
||||
//! \param group if group is same as sender group outbound, else inbound
|
||||
static Poco::AutoPtr<TransactionBody> create(const std::string& memo, Poco::AutoPtr<controller::User> sender, const MemoryBin* receiverPublicKey, Poco::UInt32 amount, Poco::Timestamp pairedTransactionId = Poco::Timestamp(), Poco::AutoPtr<controller::Group> group = nullptr);
|
||||
static Poco::AutoPtr<TransactionBody> create(const std::string& memo, const MemoryBin* senderPublicKey, Poco::AutoPtr<controller::User> receiver, Poco::UInt32 amount, Poco::Timestamp pairedTransactionId = Poco::Timestamp(), Poco::AutoPtr<controller::Group> group = nullptr);
|
||||
static Poco::AutoPtr<TransactionBody> create(const std::string& memo, const MemoryBin* senderPublicKey, const MemoryBin* receiverPublicKey, Poco::UInt32 amount, const std::string groupAlias, TransactionTransferType transferType, Poco::Timestamp pairedTransactionId = Poco::Timestamp());
|
||||
//! \brief GradidoCreation Transaction
|
||||
static Poco::AutoPtr<TransactionBody> create(const std::string& memo, Poco::AutoPtr<controller::User> receiver, Poco::UInt32 amount, Poco::DateTime targetDate);
|
||||
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
#include "TransactionTransfer.h"
|
||||
#include "Transaction.h"
|
||||
#include "../../SingletonManager/ErrorManager.h"
|
||||
#include "../../controller/HederaId.h"
|
||||
|
||||
namespace model {
|
||||
namespace gradido {
|
||||
@ -204,26 +206,63 @@ namespace model {
|
||||
{
|
||||
const char* function_name = "TransactionTransfer::createOutbound";
|
||||
auto mm = MemoryManager::getInstance();
|
||||
auto em = ErrorManager::getInstance();
|
||||
if (!mProtoTransfer.has_inbound()) {
|
||||
return nullptr;
|
||||
}
|
||||
// Poco::AutoPtr<controller::User> sender, const MemoryBin* receiverPubkey, Poco::AutoPtr<controller::Group> receiverGroup, Poco::UInt32 amount, const std::string& memo
|
||||
//Transaction::createTransfer()
|
||||
auto inbound = mProtoTransfer.inbound();
|
||||
auto sender = controller::User::create();
|
||||
if (1 != sender->load((const unsigned char*)inbound.sender().pubkey().data())) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
auto sender_pubkey = mm->getFreeMemory(inbound.sender().pubkey().size());
|
||||
memcpy(*sender_pubkey, inbound.sender().pubkey().data(), inbound.sender().pubkey().size());
|
||||
auto receiver_pubkey = mm->getFreeMemory(inbound.receiver().size());
|
||||
memcpy(*receiver_pubkey, inbound.receiver().data(), inbound.receiver().size());
|
||||
auto groups = controller::Group::load(inbound.other_group());
|
||||
if (1 != groups.size()) {
|
||||
|
||||
auto body = TransactionBody::create(
|
||||
memo, sender_pubkey, receiver_pubkey,
|
||||
inbound.sender().amount(), mTargetGroupAlias, TRANSFER_CROSS_GROUP_OUTBOUND,
|
||||
DataTypeConverter::convertFromProtoTimestamp(inbound.paired_transaction_id())
|
||||
);
|
||||
|
||||
auto transaction = Poco::AutoPtr<Transaction>(new Transaction(body));
|
||||
transaction->setTopicIdByGroup(mOwnGroupAlias);
|
||||
|
||||
mm->releaseMemory(receiver_pubkey);
|
||||
mm->releaseMemory(sender_pubkey);
|
||||
return transaction;
|
||||
|
||||
}
|
||||
|
||||
Poco::AutoPtr<Transaction> TransactionTransfer::createInbound(const std::string& memo)
|
||||
{
|
||||
const char* function_name = "TransactionTransfer::createInbound";
|
||||
auto mm = MemoryManager::getInstance();
|
||||
|
||||
if (!mProtoTransfer.has_outbound()) {
|
||||
return nullptr;
|
||||
}
|
||||
auto transaction = Transaction::createTransfer(sender, receiver_pubkey, groups[0], inbound.sender().amount(), memo, false);
|
||||
mm->releaseMemory(receiver_pubkey);
|
||||
return transaction[0];
|
||||
// Poco::AutoPtr<controller::User> sender, const MemoryBin* receiverPubkey, Poco::AutoPtr<controller::Group> receiverGroup, Poco::UInt32 amount, const std::string& memo
|
||||
//Transaction::createTransfer()
|
||||
auto outbound = mProtoTransfer.outbound();
|
||||
|
||||
auto sender_pubkey = mm->getFreeMemory(outbound.sender().pubkey().size());
|
||||
memcpy(*sender_pubkey, outbound.sender().pubkey().data(), outbound.sender().pubkey().size());
|
||||
auto receiver_pubkey = mm->getFreeMemory(outbound.receiver().size());
|
||||
memcpy(*receiver_pubkey, outbound.receiver().data(), outbound.receiver().size());
|
||||
|
||||
auto body = TransactionBody::create(
|
||||
memo, sender_pubkey, receiver_pubkey,
|
||||
outbound.sender().amount(), mOwnGroupAlias, TRANSFER_CROSS_GROUP_INBOUND,
|
||||
DataTypeConverter::convertFromProtoTimestamp(outbound.paired_transaction_id())
|
||||
);
|
||||
|
||||
auto transaction = Poco::AutoPtr<Transaction>(new Transaction(body));
|
||||
transaction->setTopicIdByGroup(mTargetGroupAlias);
|
||||
|
||||
mm->releaseMemory(receiver_pubkey);
|
||||
mm->releaseMemory(sender_pubkey);
|
||||
return transaction;
|
||||
}
|
||||
|
||||
const std::string& TransactionTransfer::getKontoNameCell(int index)
|
||||
|
||||
@ -22,6 +22,13 @@ namespace model {
|
||||
|
||||
class Transaction;
|
||||
|
||||
enum TransactionTransferType
|
||||
{
|
||||
TRANSFER_LOCAL,
|
||||
TRANSFER_CROSS_GROUP_INBOUND,
|
||||
TRANSFER_CROSS_GROUP_OUTBOUND
|
||||
};
|
||||
|
||||
class TransactionTransfer : public TransactionBase
|
||||
{
|
||||
public:
|
||||
@ -37,10 +44,15 @@ namespace model {
|
||||
|
||||
std::string getTargetGroupAlias();
|
||||
bool isInbound() { return mProtoTransfer.has_inbound(); }
|
||||
bool isOutbound() { return mProtoTransfer.has_outbound(); }
|
||||
Poco::AutoPtr<Transaction> createOutbound(const std::string& memo);
|
||||
Poco::AutoPtr<Transaction> createInbound(const std::string& memo);
|
||||
|
||||
void transactionAccepted(Poco::AutoPtr<controller::User> user);
|
||||
|
||||
inline void setOwnGroupAlias(const std::string& ownGroupAlias) { mOwnGroupAlias = ownGroupAlias; }
|
||||
inline void setTargetGroupAlias(const std::string& targetGroupAlias) { mTargetGroupAlias = targetGroupAlias; }
|
||||
|
||||
protected:
|
||||
const static std::string mInvalidIndexMessage;
|
||||
|
||||
@ -62,6 +74,8 @@ namespace model {
|
||||
|
||||
const proto::gradido::GradidoTransfer& mProtoTransfer;
|
||||
std::vector<KontoTableEntry> mKontoTable;
|
||||
std::string mOwnGroupAlias;
|
||||
std::string mTargetGroupAlias;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@ -29,11 +29,14 @@ enum PageType
|
||||
const char* pageName = "Node Server Test";
|
||||
PageType page = PAGE_CHOOSE_TEST;
|
||||
Poco::AutoPtr<controller::NodeServer> node_server;
|
||||
Poco::AutoPtr<controller::NodeServer> node_server2;
|
||||
Poco::AutoPtr<controller::User> user;
|
||||
Poco::AutoPtr<controller::HederaTopic> hedera_topic;
|
||||
int hedera_timeout = 9;
|
||||
Poco::AutoPtr<controller::HederaTopic> hedera_topic2;
|
||||
int hedera_timeout = 4;
|
||||
int sleep_ms_between_transactions = 1000;
|
||||
|
||||
bool steps[6]; memset(steps, 1, 6 * sizeof(bool));
|
||||
bool steps[8]; memset(steps, 1, 8 * sizeof(bool));
|
||||
|
||||
|
||||
if(!form.empty())
|
||||
@ -45,6 +48,13 @@ enum PageType
|
||||
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;
|
||||
@ -52,18 +62,25 @@ enum PageType
|
||||
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 4-Test") {
|
||||
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 < 6; i++) {
|
||||
for(int i = 0; i < 8; i++) {
|
||||
std::string name = "step-";
|
||||
name += std::to_string(i+2);
|
||||
step_temp = form.get(name, "");
|
||||
@ -83,52 +100,86 @@ enum PageType
|
||||
<div class="center-form-container">
|
||||
<!-- Tab links -->
|
||||
<div class="tab">
|
||||
<button class="tablinks <% if(PAGE_RUN_4_SET_TEST == page) { %> active <% } %>" onclick="openTab(event, 'test-4')">Test 4-Set (2 AddMember, Creation, Transfer)</button>
|
||||
<button class="tablinks <% if(PAGE_RUN_4_SET_TEST == page) { %> active <% } %>" onclick="openTab(event, 'test-4')">Test 6-Set (3 AddMember, Creation, 2 Transfer)</button>
|
||||
<button class="tablinks <% if(PAGE_GET_TRANSACTION_RPC_CALL == page) { %> active <% } %>" onclick="openTab(event, 'gn-jsonrpc')" title="call via json-rpc to gradido node with getTransactions">getTransactions</button>
|
||||
</div>
|
||||
<div id="test-4" class="tabcontent" <% if(PAGE_RUN_4_SET_TEST == page) { %> style="display:block" <% } %>>
|
||||
<div class="center-form-title">
|
||||
<h3>Test 4-Set (2 AddMember, Creation, Transfer)</</h3>
|
||||
<h3>Test 6-Set (3 AddMember, Creation, 2 Transfer)</</h3>
|
||||
</div>
|
||||
<div class="center-form-form">
|
||||
<form method="POST" action="<%= getBaseUrl() %>/adminNodeServerTest">
|
||||
<p>1. Create two new accounts and show user public keys for comparisation</p>
|
||||
<p>1. Create three new accounts and show user public keys for comparisation</p>
|
||||
<p><input class="form-checkbox" type="checkbox" <% if(steps[0]) { %> checked="checked" <% } %> name="step-2" value="1"/> 2. Send a add-member transaction to hedera topic with one signature (first user)</p>
|
||||
<p><input class="form-checkbox" type="checkbox" <% if(steps[1]) { %> checked="checked" <% } %> name="step-3" value="1"/> 3. Send a add-member transaction to hedera topic with two signatures (first user and second user)</p>
|
||||
<p><input class="form-checkbox" type="checkbox" <% if(steps[2]) { %> checked="checked" <% } %> name="step-4" value="1"/> 4. Send a creation transaction to second user, signed by first user</p>
|
||||
<p><input class="form-checkbox" type="checkbox" <% if(steps[3]) { %> checked="checked" <% } %> name="step-5" value="1"/> 5. Send a transfer transaction from second user to first user signed by second user</p>
|
||||
<p><input class="form-checkbox" type="checkbox" <% if(steps[4]) { %> checked="checked" <% } %> name="step-6" value="1"/> 6. Wait x seconds to give hedera time to process transactions</p>
|
||||
<p><input class="form-checkbox" type="checkbox" <% if(steps[5]) { %> checked="checked" <% } %> name="step-7" value="1"/> 7. Ask choosen node for transaction and print result</p>
|
||||
|
||||
<label class="form-label" for="test-node-servers">Node Server for tests</label>
|
||||
<% if(node_servers.size() == 0) { %>
|
||||
<a href="<%= getBaseUrl() %>/nodes"><span class="link-title">Edit Node-Servers</span></a>
|
||||
<% } %>
|
||||
<select name="test-node-servers" id="test-node-servers">
|
||||
<% for(auto it = node_servers.begin(); it != node_servers.end(); it++) {
|
||||
auto model = (*it)->getModel();
|
||||
%>
|
||||
<option title="<%= model->toString() %>" value="<%= model->getID() %>" <% if(!node_server.isNull() && node_server->getModel()->getID() == model->getID()) {%>selected="selected"<% } %>><%= model->getUrlWithPort() %>, group: <%= model->getGroupId() %></option>
|
||||
<p><input class="form-checkbox" type="checkbox" <% if(steps[4]) { %> checked="checked" <% } %> name="step-6" value="1"/> 6. Send a add-member transaction to hedera topic 2 with one signature (third user)</p>
|
||||
<p><input class="form-checkbox" type="checkbox" <% if(steps[5]) { %> checked="checked" <% } %> name="step-7" value="1"/> 7. Send a cross group transfer from second user to third user signed by second user</p>
|
||||
<p><input class="form-checkbox" type="checkbox" <% if(steps[6]) { %> checked="checked" <% } %> name="step-8" value="1"/> 8. Wait x seconds to give hedera time to process transactions</p>
|
||||
<p><input class="form-checkbox" type="checkbox" <% if(steps[7]) { %> checked="checked" <% } %> name="step-9" value="1"/> 9. Ask choosen node for transaction and print result</p>
|
||||
<fieldset>
|
||||
<legend>Group 1 </legend>
|
||||
<label class="form-label" for="test-node-servers">Node Server for tests</label>
|
||||
<% if(node_servers.size() == 0) { %>
|
||||
<a href="<%= getBaseUrl() %>/nodes"><span class="link-title">Edit Node-Servers</span></a>
|
||||
<% } %>
|
||||
</select>
|
||||
<label class="form-label" for="test-hedera-topic">Hedera Topic for tests</label>
|
||||
<% if(hedera_topics.size() == 0) { %>
|
||||
<a href="<%= getBaseUrl() %>/topic"><span class="link-title">Edit Hedera-Topics</span></a>
|
||||
<% } %>
|
||||
<select name="test-hedera-topic" id="test-hedera-topic">
|
||||
<% for(auto it = hedera_topics.begin(); it != hedera_topics.end(); it++) {
|
||||
auto model = (*it)->getModel();
|
||||
auto hedera_account = (*it)->getAutoRenewAccount();
|
||||
if(hedera_account->getModel()->getNetworkType() != ServerConfig::HEDERA_TESTNET) {
|
||||
continue;
|
||||
}
|
||||
%>
|
||||
<option title="<%= model->toString() %>" value="<%= model->getID() %>" <% if(!hedera_topic.isNull() && hedera_topic->getModel()->getID() == model->getID()) {%>selected="selected"<% } %>><%= model->getName() %>, group: <%= model->getGroupId() %></option>
|
||||
<select name="test-node-servers" id="test-node-servers">
|
||||
<% for(auto it = node_servers.begin(); it != node_servers.end(); it++) {
|
||||
auto model = (*it)->getModel();
|
||||
%>
|
||||
<option title="<%= model->toString() %>" value="<%= model->getID() %>" <% if(!node_server.isNull() && node_server->getModel()->getID() == model->getID()) {%>selected="selected"<% } %>><%= model->getUrlWithPort() %>, group: <%= model->getGroupId() %></option>
|
||||
<% } %>
|
||||
</select>
|
||||
<label class="form-label" for="test-hedera-topic">Hedera Topic for tests</label>
|
||||
<% if(hedera_topics.size() == 0) { %>
|
||||
<a href="<%= getBaseUrl() %>/topic"><span class="link-title">Edit Hedera-Topics</span></a>
|
||||
<% } %>
|
||||
</select>
|
||||
<select name="test-hedera-topic" id="test-hedera-topic">
|
||||
<% for(auto it = hedera_topics.begin(); it != hedera_topics.end(); it++) {
|
||||
auto model = (*it)->getModel();
|
||||
auto hedera_account = (*it)->getAutoRenewAccount();
|
||||
if(hedera_account->getModel()->getNetworkType() != ServerConfig::HEDERA_TESTNET) {
|
||||
continue;
|
||||
}
|
||||
%>
|
||||
<option title="<%= model->toString() %>" value="<%= model->getID() %>" <% if(!hedera_topic.isNull() && hedera_topic->getModel()->getID() == model->getID()) {%>selected="selected"<% } %>><%= model->getName() %>, group: <%= model->getGroupId() %></option>
|
||||
<% } %>
|
||||
</select>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend>Group 2 </legend>
|
||||
<label class="form-label" for="test-node-servers2">Node Server for tests</label>
|
||||
<% if(node_servers.size() == 0) { %>
|
||||
<a href="<%= getBaseUrl() %>/nodes"><span class="link-title">Edit Node-Servers</span></a>
|
||||
<% } %>
|
||||
<select name="test-node-servers2" id="test-node-servers2">
|
||||
<% for(auto it = node_servers.begin(); it != node_servers.end(); it++) {
|
||||
auto model = (*it)->getModel();
|
||||
%>
|
||||
<option title="<%= model->toString() %>" value="<%= model->getID() %>" <% if(!node_server2.isNull() && node_server2->getModel()->getID() == model->getID()) {%>selected="selected"<% } %>><%= model->getUrlWithPort() %>, group: <%= model->getGroupId() %></option>
|
||||
<% } %>
|
||||
</select>
|
||||
<label class="form-label" for="test-hedera-topic2">Hedera Topic for tests</label>
|
||||
<% if(hedera_topics.size() == 0) { %>
|
||||
<a href="<%= getBaseUrl() %>/topic"><span class="link-title">Edit Hedera-Topics</span></a>
|
||||
<% } %>
|
||||
<select name="test-hedera-topic2" id="test-hedera-topic2">
|
||||
<% for(auto it = hedera_topics.begin(); it != hedera_topics.end(); it++) {
|
||||
auto model = (*it)->getModel();
|
||||
auto hedera_account = (*it)->getAutoRenewAccount();
|
||||
if(hedera_account->getModel()->getNetworkType() != ServerConfig::HEDERA_TESTNET) {
|
||||
continue;
|
||||
}
|
||||
%>
|
||||
<option title="<%= model->toString() %>" value="<%= model->getID() %>" <% if(!hedera_topic2.isNull() && hedera_topic2->getModel()->getID() == model->getID()) {%>selected="selected"<% } %>><%= model->getName() %>, group: <%= model->getGroupId() %></option>
|
||||
<% } %>
|
||||
</select>
|
||||
</fieldset>
|
||||
|
||||
<label class="form-label" for="test-timeout">Timeout waiting for hedera in seconds</label>
|
||||
<input name="test-timeout" id="test-timeout" type="number" value="<%= hedera_timeout %>"> seconds
|
||||
<input class="center-form-submit form-button" type="submit" name="submit" value="Run 4-Test">
|
||||
<input class="center-form-submit form-button" type="submit" name="submit" value="Run 6-Test">
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@ -156,11 +207,13 @@ enum PageType
|
||||
<% if(PAGE_RUN_4_SET_TEST == page && !hedera_topic.isNull() && !node_server.isNull()) { %>
|
||||
<ul>
|
||||
<li>
|
||||
<p>1. Create two new accounts and show user public keys for comparisation: </p>
|
||||
<p>1. Create three new accounts and show user public keys for comparisation: </p>
|
||||
<%
|
||||
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";
|
||||
@ -176,9 +229,21 @@ enum PageType
|
||||
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);
|
||||
%>
|
||||
<p>User 1: <%= user_1->getPublicHex() %></p>
|
||||
<p>User 2: <%= user_2->getPublicHex() %></p>
|
||||
<fieldset><legend><%= user_group->getModel()->getName() %></legend>
|
||||
<p>User 1: <%= user_1->getPublicHex() %></p>
|
||||
<p>User 2: <%= user_2->getPublicHex() %></p>
|
||||
</fieldset>
|
||||
<fieldset><legend><%= user_group2->getModel()->getName() %></legend>
|
||||
<p>User 3: <%= user_3->getPublicHex() %></p>
|
||||
</fieldset>
|
||||
<p>Time: <%= time2.string() %>
|
||||
</li>
|
||||
<li>
|
||||
@ -207,6 +272,8 @@ enum PageType
|
||||
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);
|
||||
%>
|
||||
@ -222,6 +289,8 @@ enum PageType
|
||||
<p>skipped</p>
|
||||
<% } 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);
|
||||
%>
|
||||
@ -239,7 +308,7 @@ enum PageType
|
||||
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(hedera_timeout * 100);
|
||||
Poco::Thread::sleep(sleep_ms_between_transactions);
|
||||
transaction4[0]->sign(user_2);
|
||||
auto transaction4_json = transaction4[0]->getTransactionAsJson(true);
|
||||
%>
|
||||
@ -248,17 +317,60 @@ enum PageType
|
||||
<p>Time: <%= time2.string() %></p>
|
||||
</li>
|
||||
<li>
|
||||
<p>6. Wait <%= hedera_timeout %> seconds to give hedera time to process transactions</p>
|
||||
<% if(!steps[4]) { %>
|
||||
<p>6. Send a add-member transaction to hedera topic 2 with one signature (third user)</p>
|
||||
<%
|
||||
time2.reset();
|
||||
if(!steps[4]) { %>
|
||||
<p>skipped</p>
|
||||
<% } 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);
|
||||
%>
|
||||
<p><%= DataTypeConverter::replaceNewLineWithBr(transaction5_json) %></p>
|
||||
<% } %>
|
||||
<p>Time: <%= time2.string() %></p>
|
||||
</li>
|
||||
<li>
|
||||
<p>7. Send a cross group transfer from second user to third user signed by second user</p>
|
||||
<%
|
||||
time2.reset();
|
||||
if(!steps[5]) { %>
|
||||
<p>skipped</p>
|
||||
<% } 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()) {
|
||||
%>
|
||||
<div class="alert alert-error" role="alert">
|
||||
<i class="material-icons-outlined">report_problem</i>
|
||||
<span>Error creating Transaction</span>
|
||||
</div>
|
||||
<%
|
||||
} else {
|
||||
Poco::Thread::sleep(sleep_ms_between_transactions);
|
||||
transaction6[0]->sign(user_2);
|
||||
auto transaction6_json = transaction6[0]->getTransactionAsJson(true);
|
||||
%>
|
||||
<p><%= DataTypeConverter::replaceNewLineWithBr(transaction6_json) %></p>
|
||||
<% } %>
|
||||
<% } %>
|
||||
<p>Time: <%= time2.string() %></p>
|
||||
</li>
|
||||
<li>
|
||||
<p>8. Wait <%= hedera_timeout %> seconds to give hedera time to process transactions</p>
|
||||
<% if(!steps[6]) { %>
|
||||
<p>skipped</p>
|
||||
<% } else {
|
||||
Poco::Thread::sleep(hedera_timeout * 1000);
|
||||
} %>
|
||||
</li>
|
||||
<li>
|
||||
<p>7. Ask choosen node for transaction and print result</p>
|
||||
<p>9. Ask choosen node for transaction and print result</p>
|
||||
<% time2.reset();
|
||||
if(!steps[5] || node_server.isNull()) {
|
||||
if(!steps[7] || node_server.isNull()) {
|
||||
%><p>skipped</p>
|
||||
<% } else {
|
||||
auto node_server_model = node_server->getModel();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user