From ef86bf3bcea23ec21b0b6e01bbecc8d6c8c9041e Mon Sep 17 00:00:00 2001 From: coffeepots Date: Thu, 13 Sep 2018 18:06:13 +0100 Subject: [PATCH 1/7] Add closeWait to socketServer --- json_rpc/servers/socketserver.nim | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/json_rpc/servers/socketserver.nim b/json_rpc/servers/socketserver.nim index 8d7cc89..65869a1 100644 --- a/json_rpc/servers/socketserver.nim +++ b/json_rpc/servers/socketserver.nim @@ -146,4 +146,9 @@ proc stop*(server: RpcSocketServer) = proc close*(server: RpcSocketServer) = ## Cleanup resources of RPC server. for item in server.servers: - item.close() \ No newline at end of file + item.close() + +proc closeWait*(server: RpcSocketServer) {.async.} = + ## Cleanup resources of RPC server. + for item in server.servers: + await item.closeWait() From bb9896d693f31b98d4b25127a82bc6e3bab4c712 Mon Sep 17 00:00:00 2001 From: coffeepots Date: Thu, 13 Sep 2018 18:06:33 +0100 Subject: [PATCH 2/7] Add closeWait to httpServer --- json_rpc/servers/httpserver.nim | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/json_rpc/servers/httpserver.nim b/json_rpc/servers/httpserver.nim index 59a98e8..4b10bc5 100644 --- a/json_rpc/servers/httpserver.nim +++ b/json_rpc/servers/httpserver.nim @@ -319,3 +319,8 @@ proc close*(server: RpcHttpServer) = ## Cleanup resources of RPC server. for item in server.servers: item.close() + +proc closeWait*(server: RpcHttpServer) {.async.} = + ## Cleanup resources of RPC server. + for item in server.servers: + await item.closeWait() From 0ba96afb13a9b53281729e96847b29997113f421 Mon Sep 17 00:00:00 2001 From: coffeepots Date: Thu, 13 Sep 2018 18:06:46 +0100 Subject: [PATCH 3/7] Update socket test to use closeWait --- tests/testserverclient.nim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/testserverclient.nim b/tests/testserverclient.nim index d8f8e58..381a71a 100644 --- a/tests/testserverclient.nim +++ b/tests/testserverclient.nim @@ -18,4 +18,4 @@ suite "Server/Client RPC": check r.result.getStr == "Hello abc data: [1, 2, 3, 4]" srv.stop() -srv.close() +waitFor srv.closeWait() From b8b38c53c98c67850f976105c4badd988aa0a3cd Mon Sep 17 00:00:00 2001 From: coffeepots Date: Thu, 13 Sep 2018 18:06:54 +0100 Subject: [PATCH 4/7] Update http test to use closeWait --- tests/testhttp.nim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/testhttp.nim b/tests/testhttp.nim index 3ea9dd8..ab912cb 100644 --- a/tests/testhttp.nim +++ b/tests/testhttp.nim @@ -177,4 +177,4 @@ suite "HTTP Server/HTTP Client RPC test suite": check waitFor(disconTest("localhost", Port(8545), 7, 200)) == true httpsrv.stop() -httpsrv.close() +waitFor httpsrv.closeWait() From f0eb9693afc6946a866c85fd5b674abafae468a9 Mon Sep 17 00:00:00 2001 From: coffeepots Date: Thu, 13 Sep 2018 18:46:15 +0100 Subject: [PATCH 5/7] Use different port for socket test --- tests/testserverclient.nim | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/testserverclient.nim b/tests/testserverclient.nim index 381a71a..e2fed8e 100644 --- a/tests/testserverclient.nim +++ b/tests/testserverclient.nim @@ -1,7 +1,7 @@ import unittest, json, chronicles import ../json_rpc/[rpcclient, rpcserver] -var srv = newRpcSocketServer(["localhost:8545"]) +var srv = newRpcSocketServer(["localhost:8546"]) var client = newRpcSocketClient() # Create RPC on server @@ -9,7 +9,7 @@ srv.rpc("myProc") do(input: string, data: array[0..3, int]): result = %("Hello " & input & " data: " & $data) srv.start() -waitFor client.connect("localhost", Port(8545)) +waitFor client.connect("localhost", Port(8546)) # TODO: When an error occurs during a test, stop the server suite "Server/Client RPC": From 7a27a78122fa6c58c8f2668421f92f3cce0e8e3f Mon Sep 17 00:00:00 2001 From: coffeepots Date: Thu, 13 Sep 2018 19:20:16 +0100 Subject: [PATCH 6/7] Update testEthCalls and testRpcMacro with closeWait --- tests/testethcalls.nim | 2 +- tests/testrpcmacro.nim | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/testethcalls.nim b/tests/testethcalls.nim index fc112ff..93f293a 100644 --- a/tests/testethcalls.nim +++ b/tests/testethcalls.nim @@ -74,4 +74,4 @@ suite "Generated from signatures": check sigResults[1] == "0x47173285A8D7341E5E972FC677286384F802F8EF42A5EC5F03BBFA254CB01FAD" server.stop() -server.close() +waitFor server.closeWait() diff --git a/tests/testrpcmacro.nim b/tests/testrpcmacro.nim index dd8687c..b052bd0 100644 --- a/tests/testrpcmacro.nim +++ b/tests/testrpcmacro.nim @@ -157,4 +157,4 @@ suite "Server types": check r == %"hello world" s.stop() -s.close() +waitFor s.closeWait() From 5da9ce78816dd91603050c7a4ad09c415e710bd9 Mon Sep 17 00:00:00 2001 From: coffeepots Date: Thu, 13 Sep 2018 19:27:51 +0100 Subject: [PATCH 7/7] Make all tests use port 8545 to check connection closing between tests --- tests/testerrors.nim | 4 ++-- tests/testethcalls.nim | 4 ++-- tests/testserverclient.nim | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/testerrors.nim b/tests/testerrors.nim index 7fe4d46..237c824 100644 --- a/tests/testerrors.nim +++ b/tests/testerrors.nim @@ -6,11 +6,11 @@ import unittest, debugclient, ../json_rpc/rpcserver import strformat, chronicles -var server = newRpcSocketServer("localhost", 8547.Port) +var server = newRpcSocketServer("localhost", Port(8545)) var client = newRpcSocketClient() server.start() -waitFor client.connect("localhost", Port(8547)) +waitFor client.connect("localhost", Port(8545)) server.rpc("rpc") do(a: int, b: int): result = %(&"a: {a}, b: {b}") diff --git a/tests/testethcalls.nim b/tests/testethcalls.nim index 93f293a..deb0177 100644 --- a/tests/testethcalls.nim +++ b/tests/testethcalls.nim @@ -7,7 +7,7 @@ from strutils import rsplit template sourceDir: string = currentSourcePath.rsplit(DirSep, 1)[0] var - server = newRpcSocketServer("localhost", Port(8546)) + server = newRpcSocketServer("localhost", Port(8545)) client = newRpcSocketClient() ## Generate Ethereum server RPCs @@ -49,7 +49,7 @@ proc testSigCalls: Future[seq[string]] = result = all(version, sha3) server.start() -waitFor client.connect("localhost", Port(8546)) +waitFor client.connect("localhost", Port(8545)) suite "Local calls": diff --git a/tests/testserverclient.nim b/tests/testserverclient.nim index e2fed8e..381a71a 100644 --- a/tests/testserverclient.nim +++ b/tests/testserverclient.nim @@ -1,7 +1,7 @@ import unittest, json, chronicles import ../json_rpc/[rpcclient, rpcserver] -var srv = newRpcSocketServer(["localhost:8546"]) +var srv = newRpcSocketServer(["localhost:8545"]) var client = newRpcSocketClient() # Create RPC on server @@ -9,7 +9,7 @@ srv.rpc("myProc") do(input: string, data: array[0..3, int]): result = %("Hello " & input & " data: " & $data) srv.start() -waitFor client.connect("localhost", Port(8546)) +waitFor client.connect("localhost", Port(8545)) # TODO: When an error occurs during a test, stop the server suite "Server/Client RPC":