diff options
| author | Roman Smrž <roman.smrz@seznam.cz> | 2021-12-30 22:35:02 +0100 | 
|---|---|---|
| committer | Roman Smrž <roman.smrz@seznam.cz> | 2021-12-30 22:35:02 +0100 | 
| commit | 76319277261ac2d894921eeedf3a359d8353344e (patch) | |
| tree | c9e1ca24c7025ff066c73a9a45a73c1f6c42ae03 | |
| parent | 1c23f04929d90acd8bccce91ca974f4ef7fc0927 (diff) | |
Test: distinct attach commands instead of boolean parameters
| -rw-r--r-- | src/main.cpp | 31 | ||||
| -rw-r--r-- | test/attach.test | 28 | ||||
| -rw-r--r-- | 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<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 |