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)
Example #2
0
    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)