From 76319277261ac2d894921eeedf3a359d8353344e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Thu, 30 Dec 2021 22:35:02 +0100 Subject: Test: distinct attach commands instead of boolean parameters --- src/main.cpp | 31 ++++++++++++++++++++----------- test/attach.test | 28 +++++++++++++++++++++------- test/sync.test | 18 +++++++++--------- 3 files changed, 50 insertions(+), 27 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 690f7fb..d403d29 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -128,24 +128,25 @@ void createIdentity(const vector & args) } } -void printAttachResult(Peer peer, future && success) +void printAttachResult(string prefix, Peer peer, future && success) { - bool s = success.get(); ostringstream ss; - ss << "attach-result " << getPeer(peer).id << " " << s; + ss << prefix << + (success.get() ? "-done " : "-failed ") << + getPeer(peer).id; printLine(ss.str()); } -future confirmAttach(const Peer & peer, string confirm, future && success) +future confirmPairing(string prefix, const Peer & peer, string confirm, future && success) { - thread(printAttachResult, peer, move(success)).detach(); + thread(printAttachResult, prefix, peer, move(success)).detach(); promise promise; auto input = promise.get_future(); getPeer(peer).attachAnswer = move(promise); ostringstream ss; - ss << "attach-confirm " << getPeer(peer).id << " " << confirm; + ss << prefix << " " << getPeer(peer).id << " " << confirm; printLine(ss.str()); return input; } @@ -154,9 +155,11 @@ void startServer(const vector &) { vector> services; + using namespace std::placeholders; + auto atts = make_unique(); - atts->onRequest(confirmAttach); - atts->onResponse(confirmAttach); + atts->onRequest(bind(confirmPairing, "attach-request", _1, _2, _3)); + atts->onResponse(bind(confirmPairing, "attach-response", _1, _2, _3)); services.push_back(move(atts)); services.push_back(make_unique()); @@ -246,14 +249,19 @@ void updateSharedIdentity(const vector & params) *h = *nh; } -void attach(const vector & params) +void attachTo(const vector & params) { server->svc().attachTo(getPeer(params.at(0)).peer); } void attachAccept(const vector & params) { - getPeer(params.at(0)).attachAnswer.set_value(params[1] == "1"); + getPeer(params.at(0)).attachAnswer.set_value(true); +} + +void attachReject(const vector & params) +{ + getPeer(params.at(0)).attachAnswer.set_value(false); } vector commands = { @@ -263,8 +271,9 @@ vector commands = { { "watch-local-identity", watchLocalIdentity }, { "watch-shared-identity", watchSharedIdentity }, { "update-shared-identity", updateSharedIdentity }, - { "attach", attach }, + { "attach-to", attachTo }, { "attach-accept", attachAccept }, + { "attach-reject", attachReject }, }; } diff --git a/test/attach.test b/test/attach.test index 35fbde4..e43cd10 100644 --- a/test/attach.test +++ b/test/attach.test @@ -16,14 +16,28 @@ test: /peer 1 addr 192.168.0.11 29665/ /peer 1 id Device1 Owner/ - send "attach 1" to p2 - expect /attach-confirm 1 .*/ from p1 - expect /attach-confirm 1 .*/ from p2 + send "attach-to 1" to p2 + expect /attach-request 1 .*/ from p1 + expect /attach-response 1 .*/ from p2 + send "attach-reject 1" to p1 + expect /attach-request-failed 1/ from p1 + expect /attach-response-failed 1/ from p2 + + send "attach-to 1" to p2 + expect /attach-request 1 .*/ from p1 + expect /attach-response 1 .*/ from p2 + send "attach-reject 1" to p2 + expect /attach-request-failed 1/ from p1 + expect /attach-response-failed 1/ from p2 + + send "attach-to 1" to p2 + expect /attach-request 1 .*/ from p1 + expect /attach-response 1 .*/ from p2 # TODO: check code match - send "attach-accept 1 1" to p1 - send "attach-accept 1 1" to p2 - expect /attach-result 1 1/ from p1 - expect /attach-result 1 1/ from p2 + send "attach-accept 1" to p1 + send "attach-accept 1" to p2 + expect /attach-request-done 1/ from p1 + expect /attach-response-done 1/ from p2 expect /local-identity Device2 Owner/ from p2 expect /peer 1 id Device2 Owner/ from p1 diff --git a/test/sync.test b/test/sync.test index 9ae22dc..34b7cc0 100644 --- a/test/sync.test +++ b/test/sync.test @@ -1,12 +1,12 @@ test: spawn on node1 as p1 spawn on node2 as p2 + send "create-identity Device1 Owner" to p1 + send "create-identity Device2" to p2 send "watch-local-identity" to p1 send "watch-local-identity" to p2 send "watch-shared-identity" to p1 send "watch-shared-identity" to p2 - send "create-identity Device1 Owner" to p1 - send "create-identity Device2" to p2 send "start-server" to p1 send "start-server" to p2 expect from p1: @@ -19,15 +19,15 @@ test: /peer 1 addr 192.168.0.11 29665/ /peer 1 id Device1 Owner/ - send "attach 1" to p2 - expect /attach-confirm 1 .*/ from p1 - expect /attach-confirm 1 .*/ from p2 + send "attach-to 1" to p2 + expect /attach-request 1 .*/ from p1 + expect /attach-response 1 .*/ from p2 # TODO: check code match - send "attach-accept 1 1" to p1 - send "attach-accept 1 1" to p2 - expect /attach-result 1 1/ from p1 - expect /attach-result 1 1/ from p2 + send "attach-accept 1" to p1 + send "attach-accept 1" to p2 + expect /attach-request-done 1/ from p1 + expect /attach-response-done 1/ from p2 expect /local-identity Device2 Owner/ from p2 expect /shared-identity Owner/ from p2 expect /peer 1 id Device2 Owner/ from p1 -- cgit v1.2.3