summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoman Smrž <roman.smrz@seznam.cz>2021-12-30 22:35:02 +0100
committerRoman Smrž <roman.smrz@seznam.cz>2021-12-30 22:35:02 +0100
commit76319277261ac2d894921eeedf3a359d8353344e (patch)
treec9e1ca24c7025ff066c73a9a45a73c1f6c42ae03
parent1c23f04929d90acd8bccce91ca974f4ef7fc0927 (diff)
Test: distinct attach commands instead of boolean parameters
-rw-r--r--src/main.cpp31
-rw-r--r--test/attach.test28
-rw-r--r--test/sync.test18
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<string> & args)
}
}
-void printAttachResult(Peer peer, future<bool> && success)
+void printAttachResult(string prefix, Peer peer, future<bool> && 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<bool> confirmAttach(const Peer & peer, string confirm, future<bool> && success)
+future<bool> confirmPairing(string prefix, const Peer & peer, string confirm, future<bool> && success)
{
- thread(printAttachResult, peer, move(success)).detach();
+ thread(printAttachResult, prefix, peer, move(success)).detach();
promise<bool> 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<string> &)
{
vector<unique_ptr<Service>> services;
+ using namespace std::placeholders;
+
auto atts = make_unique<AttachService>();
- 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<SyncService>());
@@ -246,14 +249,19 @@ void updateSharedIdentity(const vector<string> & params)
*h = *nh;
}
-void attach(const vector<string> & params)
+void attachTo(const vector<string> & params)
{
server->svc<AttachService>().attachTo(getPeer(params.at(0)).peer);
}
void attachAccept(const vector<string> & params)
{
- getPeer(params.at(0)).attachAnswer.set_value(params[1] == "1");
+ getPeer(params.at(0)).attachAnswer.set_value(true);
+}
+
+void attachReject(const vector<string> & params)
+{
+ getPeer(params.at(0)).attachAnswer.set_value(false);
}
vector<Command> commands = {
@@ -263,8 +271,9 @@ vector<Command> 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