def test_subscribe_to_execute_with_payload(self): port = self.config.clientIpcPort subscribeProcess = tools_common.run_non_blocking(tools_common.CLIENT_SUBSCRIBE, "--verbose --ipcPort %i --waitCount 1 --waitTime 5 /3/0/4" % (port,)) # wait for subscribe process to start up self.assertEqual(tools_common.strip_prefix(subscribeProcess.stdout.readline()), "Session IPC configured for UDP: address 127.0.0.1, port %d" % (port,)) self.assertEqual(tools_common.strip_prefix(subscribeProcess.stdout.readline()), "Session connected") self.assertEqual(tools_common.strip_prefix(subscribeProcess.stdout.readline()), "Subscribe /3/0/4 Execute\n") self.assertEqual(tools_common.strip_prefix(subscribeProcess.stdout.readline()), "Waiting for 1 notifications over 5 seconds:\n") # do execute command expectedStdout = "Target /3/0/4 executed successfully\n" expectedStderr = "" expectedCode = 0 inputText = "QmFzZTY0IGlzIGEgZ2VuZXJpYyB0ZXJtIGZvciB" result = server_execute_stdin(self.config, inputText, "/3/0/4") self.assertEqual(expectedStdout, result.stdout) self.assertEqual(expectedStderr, result.stderr) self.assertEqual(expectedCode, result.code) # read subscribe output expectedStdout = "Execute 1:\nDATA: length 39, payload: [51 6d 46 7a 5a 54 59 30 49 47 6c 7a 49 47 45 67 5a 32 56 75 5a 58 4a 70 59 79 42 30 5a 58 4a 74 49 47 5a 76 63 69 42 ]\nSession disconnected\n" expectedStderr = "" expectedCode = 0 result = tools_common.non_blocking_get_run_result(subscribeProcess) self.assertEqual(expectedStdout, result.stdout) self.assertEqual(expectedStderr, result.stderr) self.assertEqual(expectedCode, result.code)
def test_client_subscribe_resource_server_execute_with_payload(self): # test that the client can subscribe to an executable resource and receive a notification # when that resource is executed by the server. Payload should be printed on the client # open client subscribe subprocess. Only wait for a single execute of the resource port = self.config.clientIpcPort subscribeProcess = tools_common.run_non_blocking( tools_common.CLIENT_SUBSCRIBE, "--verbose --ipcPort %i --waitCount 1 /3/0/4" % (port, )) # wait for subscribe process to start up self.assertEqual( tools_common.strip_prefix(subscribeProcess.stdout.readline()), "Session IPC configured for UDP: address 127.0.0.1, port %d" % (port, )) self.assertEqual( tools_common.strip_prefix(subscribeProcess.stdout.readline()), "Session connected") self.assertEqual( tools_common.strip_prefix(subscribeProcess.stdout.readline()), "Subscribe /3/0/4 Execute\n") self.assertEqual( tools_common.strip_prefix(subscribeProcess.stdout.readline()), "Waiting for 1 notifications:\n") # test we can execute a resource, specifying a payload of data expectedStdout = "Target /3/0/4 executed successfully\n" expectedStderr = "" expectedCode = 0 inputText = "QmFzZTY0IGlzIGEgZ2VuZXJpYyB0ZXJtIGZvciB" result = server_execute_stdin(self.config, inputText, "/3/0/4") self.assertEqual(expectedStdout, result.stdout) self.assertEqual(expectedStderr, result.stderr) self.assertEqual(expectedCode, result.code) hexBytes = "" for c in inputText: hexBytes += c.encode("hex") + " " # read subscribe output expectedStdout = "Execute 1:\nDATA: length 39, payload: [" + hexBytes + "]\nSession disconnected\n" expectedStderr = "" expectedCode = 0 result = tools_common.non_blocking_get_run_result(subscribeProcess) self.assertEqual(expectedStdout, result.stdout) self.assertEqual(expectedStderr, result.stderr) self.assertEqual(expectedCode, result.code)
def test_subscribe_to_execute_with_payload(self): port = self.config.clientIpcPort subscribeProcess = tools_common.run_non_blocking( tools_common.CLIENT_SUBSCRIBE, "--verbose --ipcPort %i --waitCount 1 --waitTime 5 /3/0/4" % (port, )) # wait for subscribe process to start up self.assertEqual( tools_common.strip_prefix(subscribeProcess.stdout.readline()), "Session IPC configured for UDP: address 127.0.0.1, port %d" % (port, )) self.assertEqual( tools_common.strip_prefix(subscribeProcess.stdout.readline()), "Session connected") self.assertEqual( tools_common.strip_prefix(subscribeProcess.stdout.readline()), "Subscribe /3/0/4 Execute\n") self.assertEqual( tools_common.strip_prefix(subscribeProcess.stdout.readline()), "Waiting for 1 notifications over 5 seconds:\n") # do execute command expectedStdout = "Target /3/0/4 executed successfully\n" expectedStderr = "" expectedCode = 0 inputText = "QmFzZTY0IGlzIGEgZ2VuZXJpYyB0ZXJtIGZvciB" result = server_execute_stdin(self.config, inputText, "/3/0/4") self.assertEqual(expectedStdout, result.stdout) self.assertEqual(expectedStderr, result.stderr) self.assertEqual(expectedCode, result.code) # read subscribe output expectedStdout = "Execute 1:\nDATA: length 39, payload: [51 6d 46 7a 5a 54 59 30 49 47 6c 7a 49 47 45 67 5a 32 56 75 5a 58 4a 70 59 79 42 30 5a 58 4a 74 49 47 5a 76 63 69 42 ]\nSession disconnected\n" expectedStderr = "" expectedCode = 0 result = tools_common.non_blocking_get_run_result(subscribeProcess) self.assertEqual(expectedStdout, result.stdout) self.assertEqual(expectedStderr, result.stderr) self.assertEqual(expectedCode, result.code)
def test_client_subscribe_resource_server_execute_with_payload(self): # test that the client can subscribe to an executable resource and receive a notification # when that resource is executed by the server. Payload should be printed on the client # open client subscribe subprocess. Only wait for a single execute of the resource port = self.config.clientIpcPort subscribeProcess = tools_common.run_non_blocking(tools_common.CLIENT_SUBSCRIBE, "--verbose --ipcPort %i --waitCount 1 /3/0/4" % (port,)) # wait for subscribe process to start up self.assertEqual(tools_common.strip_prefix(subscribeProcess.stdout.readline()), "Session IPC configured for UDP: address 127.0.0.1, port %d" % (port,)) self.assertEqual(tools_common.strip_prefix(subscribeProcess.stdout.readline()), "Session connected") self.assertEqual(tools_common.strip_prefix(subscribeProcess.stdout.readline()), "Subscribe /3/0/4 Execute\n") self.assertEqual(tools_common.strip_prefix(subscribeProcess.stdout.readline()), "Waiting for 1 notifications:\n") # test we can execute a resource, specifying a payload of data expectedStdout = "Target /3/0/4 executed successfully\n" expectedStderr = "" expectedCode = 0 inputText = "QmFzZTY0IGlzIGEgZ2VuZXJpYyB0ZXJtIGZvciB" result = server_execute_stdin(self.config, inputText, "/3/0/4") self.assertEqual(expectedStdout, result.stdout) self.assertEqual(expectedStderr, result.stderr) self.assertEqual(expectedCode, result.code) hexBytes = "" for c in inputText: hexBytes += c.encode("hex") + " " # read subscribe output expectedStdout = "Execute 1:\nDATA: length 39, payload: [" + hexBytes +"]\nSession disconnected\n" expectedStderr = "" expectedCode = 0 result = tools_common.non_blocking_get_run_result(subscribeProcess) self.assertEqual(expectedStdout, result.stdout) self.assertEqual(expectedStderr, result.stderr) self.assertEqual(expectedCode, result.code)