Example #1
0
class TestRequest(unittest.TestCase):
    def setUp(self):
        self.callback = MagicMock()
        self.o = Request(32)
        self.o.set_callback(self.callback)

    def test_init(self):
        assert self.o.id == 32
        assert self.o.callback == self.callback

    def test_respond_with_return(self):
        cb, response = self.o.return_response(value=5)
        assert cb == self.callback
        assert response.to_dict() == Return(id=32, value=5).to_dict()

    def test_respond_with_error(self):
        cb, response = self.o.error_response(
            exception=ValueError("Test Error"))
        assert cb == self.callback
        assert response.to_dict() == Error(id=32, message=ANY).to_dict()
        assert str(response.message) == "Test Error"

    def test_setters(self):
        self.o.set_callback(MagicMock())
        self.o.callback(888)
        self.callback.assert_not_called()
Example #2
0
class TestRequest(unittest.TestCase):
    def setUp(self):
        self.callback = MagicMock()
        self.o = Request(32, self.callback)

    def test_init(self):
        assert self.o.id == 32
        assert self.o.callback == self.callback

    def test_respond_with_return(self):
        cb, response = self.o.return_response(value=5)
        assert cb == self.callback
        assert response == Return(id=32, value=5)

    def test_respond_with_error(self):
        cb, response = self.o.error_response(
            exception=ValueError("Test Error"))
        assert cb == self.callback
        assert response == Error(id=32, message="ValueError: Test Error")

    def test_setters(self):
        self.o.set_id(123)
        assert 123 == self.o.id
        self.o.set_callback(None)
        self.o.callback(888)
        self.callback.assert_not_called()
Example #3
0
    def test_Post(self, request_mock):
        endpoint = ["BL18I:XSPRESS3", "configure"]
        post = Request.Post(self.context, self.response_queue, endpoint)

        request_mock.assert_called_once_with(self.context,
                                             self.response_queue,
                                             type_="Post")
Example #4
0
    def test_Get(self, request_mock):
        endpoint = ["BL18I:XSPRESS3", "state", "value"]
        get = Request.Get(self.context, self.response_queue, endpoint)

        request_mock.assert_called_once_with(self.context,
                                             self.response_queue,
                                             type_="Get")
Example #5
0
    def test_given_valid_attr_then_return(self):
        param_dict = dict(one=7, two=23)
        post = Request.Post(self.context,
                            self.response_queue, [""],
                            parameters=param_dict)

        self.assertEqual(param_dict, post.parameters)
Example #6
0
    def test_given_invalid_attr_then_raise_error(self):
        param_dict = dict(one=7, two=23)
        post = Request.Post(self.context,
                            self.response_queue, [""],
                            parameters=param_dict)

        with self.assertRaises(KeyError):
            post.null
Example #7
0
 def test_from_dict(self):
     serialized = {"id": 1, "type": "Put", "extra_1": "abc",
                   "extra_2": {"field": "data"}}
     request = Request.from_dict(serialized)
     self.assertEquals(1, request.id_)
     self.assertEquals("Put", request.type_)
     self.assertEquals("abc", request.fields["extra_1"])
     self.assertEquals({"field": "data"}, request.fields["extra_2"])
     self.assertIsNone(request.context)
     self.assertIsNone(request.response_queue)
Example #8
0
 def create_methods(self):
     """Get methods from remote block and mirror them internally"""
     request = Request.Get(None, self.q, [self.block.name])
     self.client_comms.q.put(request)
     self.log_debug("Waiting for response to Get %s", self.block.name)
     response = self.q.get()
     # Find all the methods
     for aname, amap in response.value.items():
         # TODO: If it has "takes" it's a method, flaky...
         if "takes" in amap:
             yield self.wrap_method(aname, amap)
Example #9
0
    def on_message(self, message):
        """
        Pass on received message to Process

        Args:
            message(str): Received message
        """

        d = json.loads(message, object_pairs_hook=OrderedDict)
        request = Request.from_dict(d)
        request.context = self
        self.servercomms.on_request(request)
Example #10
0
    def on_message(self, message):
        """
        Pass on received message to Process

        Args:
            message(str): Received message
        """

        d = json.loads(message, object_pairs_hook=OrderedDict)
        request = Request.from_dict(d)
        request.context = self
        self.servercomms.on_request(request)
Example #11
0
    def call_server_method(self, method_name, args):
        """Call method_name on the server

        Args:
            method_name (str): Name of the method
            args (dict): Map of arguments to be called with
        """
        request = Request.Post(None, self.q, [self.block.name, method_name],
                               args)
        self.client_comms.q.put(request)
        response = self.q.get()
        assert response.type_ == response.RETURN, \
            "Expected Return, got %s" % response.type_
        return response.value
Example #12
0
 def test_from_dict(self):
     serialized = {
         "id": 1,
         "type": "Put",
         "extra_1": "abc",
         "extra_2": {
             "field": "data"
         }
     }
     request = Request.from_dict(serialized)
     self.assertEquals(1, request.id_)
     self.assertEquals("Put", request.type_)
     self.assertEquals("abc", request.fields["extra_1"])
     self.assertEquals({"field": "data"}, request.fields["extra_2"])
     self.assertIsNone(request.context)
     self.assertIsNone(request.response_queue)
Example #13
0
 def test_hello_controller_with_process(self):
     sync_factory = SyncFactory("sched")
     process = Process("proc", sync_factory)
     block = Block("hello")
     HelloController(block)
     process.add_block(block)
     process.start()
     q = sync_factory.create_queue()
     req = Request.Post(response_queue=q, context="ClientConnection",
                        endpoint=["hello", "say_hello"],
                        parameters=dict(name="thing"))
     req.set_id(44)
     process.q.put(req)
     resp = q.get(timeout=1)
     self.assertEqual(resp.id_, 44)
     self.assertEqual(resp.context, "ClientConnection")
     self.assertEqual(resp.type_, "Return")
     self.assertEqual(resp.value, dict(greeting="Hello thing"))
class TestRequest(unittest.TestCase):
    def setUp(self):
        self.context = MagicMock()
        self.response_queue = MagicMock()
        self.request = Request(self.context, self.response_queue)

    def test_init(self):
        self.assertEqual(self.context, self.request.context)
        self.assertEqual(self.response_queue, self.request.response_queue)

    def test_repr(self):
        r = Request(MagicMock(), MagicMock())
        s = r.__repr__()
        self.assertTrue(isinstance(s, str))
        self.assertIn('id', s)

    def test_respond_with_return(self):

        self.request.respond_with_return(value=5)

        call_arg = self.response_queue.put.call_args_list[0][0][0].to_dict()

        expected_response = Return(self.request.id,
                                   self.request.context,
                                   value=5).to_dict()

        self.assertEqual(call_arg, expected_response)

    def test_respond_with_error(self):

        self.request.respond_with_error(message="Test Error")

        call_arg = self.response_queue.put.call_args_list[0][0][0].to_dict()

        expected_response = Error(self.request.id,
                                  self.request.context,
                                  message="Test Error").to_dict()

        self.assertEqual(call_arg, expected_response)

    def test_setters(self):
        self.request.set_id(123)
        self.assertEquals(123, self.request.id)
Example #15
0
class TestRequest(unittest.TestCase):

    def setUp(self):
        self.context = MagicMock()
        self.response_queue = MagicMock()
        self.response_queue.qsize.return_value = 0
        self.request = Request(self.context, self.response_queue)

    def test_init(self):
        self.assertEqual(self.context, self.request.context)
        self.assertEqual(self.response_queue, self.request.response_queue)

    def test_repr(self):
        r = Request(MagicMock(), MagicMock())
        s = r.__repr__()
        self.assertTrue(isinstance(s, str))
        self.assertIn('id', s)

    def test_respond_with_return(self):

        self.request.respond_with_return(value=5)

        call_arg = self.response_queue.put.call_args_list[0][0][0].to_dict()

        expected_response = Return(self.request.id, self.request.context, value=5).to_dict()

        self.assertEqual(call_arg, expected_response)

    def test_respond_with_error(self):

        self.request.respond_with_error(message="Test Error")

        call_arg = self.response_queue.put.call_args_list[0][0][0].to_dict()

        expected_response = Error(self.request.id, self.request.context,
                                  message="Test Error").to_dict()

        self.assertEqual(call_arg, expected_response)

    def test_setters(self):
        self.request.set_id(123)
        self.assertEquals(123, self.request.id)
Example #16
0
class TestRequest(unittest.TestCase):

    def setUp(self):
        self.context = MagicMock()
        self.response_queue = MagicMock()
        self.request = Request(self.context, self.response_queue, "Put")

    def test_init(self):
        self.assertEqual(self.context, self.request.context)
        self.assertEqual(self.response_queue, self.request.response_queue)
        self.assertEqual("Put", self.request.type_)

    def test_to_dict(self):
        expected_dict = OrderedDict()
        expected_dict['id'] = 1
        expected_dict['type'] = "Put"
        parameters = OrderedDict(x=2, y=10)
        expected_dict['parameters'] = parameters

        self.request.id_ = 1
        self.request.fields['parameters'] = parameters
        return_dict = self.request.to_dict()

        self.assertEqual(expected_dict, return_dict)

    def test_from_dict(self):
        serialized = {"id": 1, "type": "Put", "extra_1": "abc",
                      "extra_2": {"field": "data"}}
        request = Request.from_dict(serialized)
        self.assertEquals(1, request.id_)
        self.assertEquals("Put", request.type_)
        self.assertEquals("abc", request.fields["extra_1"])
        self.assertEquals({"field": "data"}, request.fields["extra_2"])
        self.assertIsNone(request.context)
        self.assertIsNone(request.response_queue)

    @patch("malcolm.core.response.Response.Return")
    def test_respond_with_return(self, return_mock):
        response = MagicMock()
        return_mock.return_value = response

        self.request.respond_with_return(value=5)

        return_mock.assert_called_once_with(self.request.id_, self.request.context, value=5)
        self.response_queue.put.assert_called_once_with(response)

    @patch("malcolm.core.response.Response.Error")
    def test_respond_with_error(self, return_mock):
        response = MagicMock()
        return_mock.return_value = response

        self.request.respond_with_error(message="Test Error")

        return_mock.assert_called_once_with(self.request.id_, self.request.context,
                                            message="Test Error")
        self.response_queue.put.assert_called_once_with(response)

    @patch("malcolm.core.request.Request")
    def test_Get(self, request_mock):
        endpoint = ["BL18I:XSPRESS3", "state", "value"]
        get = Request.Get(self.context, self.response_queue, endpoint)

        request_mock.assert_called_once_with(self.context, self.response_queue, type_="Get")

    @patch("malcolm.core.request.Request")
    def test_Post(self, request_mock):
        endpoint = ["BL18I:XSPRESS3", "configure"]
        post = Request.Post(self.context, self.response_queue, endpoint)

        request_mock.assert_called_once_with(self.context, self.response_queue, type_="Post")

    def test_given_valid_attr_then_return(self):
        param_dict = dict(one=7, two=23)
        post = Request.Post(self.context, self.response_queue, [""], parameters=param_dict)

        self.assertEqual(param_dict, post.parameters)

    def test_given_invalid_attr_then_raise_error(self):
        param_dict = dict(one=7, two=23)
        post = Request.Post(self.context, self.response_queue, [""], parameters=param_dict)

        with self.assertRaises(KeyError):
            post.null
Example #17
0
 def setUp(self):
     self.context = MagicMock()
     self.response_queue = MagicMock()
     self.request = Request(self.context, self.response_queue, "Put")
Example #18
0
 def setUp(self):
     self.context = MagicMock()
     self.response_queue = MagicMock()
     self.response_queue.qsize.return_value = 0
     self.request = Request(self.context, self.response_queue)
 def test_repr(self):
     r = Request(MagicMock(), MagicMock())
     s = r.__repr__()
     self.assertTrue(isinstance(s, str))
     self.assertIn('id', s)
Example #20
0
 def setUp(self):
     self.context = MagicMock()
     self.response_queue = MagicMock()
     self.request = Request(self.context, self.response_queue, "Put")
Example #21
0
class TestRequest(unittest.TestCase):
    def setUp(self):
        self.context = MagicMock()
        self.response_queue = MagicMock()
        self.request = Request(self.context, self.response_queue, "Put")

    def test_init(self):
        self.assertEqual(self.context, self.request.context)
        self.assertEqual(self.response_queue, self.request.response_queue)
        self.assertEqual("Put", self.request.type_)

    def test_to_dict(self):
        expected_dict = OrderedDict()
        expected_dict['id'] = 1
        expected_dict['type'] = "Put"
        parameters = OrderedDict(x=2, y=10)
        expected_dict['parameters'] = parameters

        self.request.id_ = 1
        self.request.fields['parameters'] = parameters
        return_dict = self.request.to_dict()

        self.assertEqual(expected_dict, return_dict)

    def test_from_dict(self):
        serialized = {
            "id": 1,
            "type": "Put",
            "extra_1": "abc",
            "extra_2": {
                "field": "data"
            }
        }
        request = Request.from_dict(serialized)
        self.assertEquals(1, request.id_)
        self.assertEquals("Put", request.type_)
        self.assertEquals("abc", request.fields["extra_1"])
        self.assertEquals({"field": "data"}, request.fields["extra_2"])
        self.assertIsNone(request.context)
        self.assertIsNone(request.response_queue)

    @patch("malcolm.core.response.Response.Return")
    def test_respond_with_return(self, return_mock):
        response = MagicMock()
        return_mock.return_value = response

        self.request.respond_with_return(value=5)

        return_mock.assert_called_once_with(self.request.id_,
                                            self.request.context,
                                            value=5)
        self.response_queue.put.assert_called_once_with(response)

    @patch("malcolm.core.response.Response.Error")
    def test_respond_with_error(self, return_mock):
        response = MagicMock()
        return_mock.return_value = response

        self.request.respond_with_error(message="Test Error")

        return_mock.assert_called_once_with(self.request.id_,
                                            self.request.context,
                                            message="Test Error")
        self.response_queue.put.assert_called_once_with(response)

    @patch("malcolm.core.request.Request")
    def test_Get(self, request_mock):
        endpoint = ["BL18I:XSPRESS3", "state", "value"]
        get = Request.Get(self.context, self.response_queue, endpoint)

        request_mock.assert_called_once_with(self.context,
                                             self.response_queue,
                                             type_="Get")

    @patch("malcolm.core.request.Request")
    def test_Post(self, request_mock):
        endpoint = ["BL18I:XSPRESS3", "configure"]
        post = Request.Post(self.context, self.response_queue, endpoint)

        request_mock.assert_called_once_with(self.context,
                                             self.response_queue,
                                             type_="Post")

    def test_given_valid_attr_then_return(self):
        param_dict = dict(one=7, two=23)
        post = Request.Post(self.context,
                            self.response_queue, [""],
                            parameters=param_dict)

        self.assertEqual(param_dict, post.parameters)

    def test_given_invalid_attr_then_raise_error(self):
        param_dict = dict(one=7, two=23)
        post = Request.Post(self.context,
                            self.response_queue, [""],
                            parameters=param_dict)

        with self.assertRaises(KeyError):
            post.null
Example #22
0
 def test_repr(self):
     r = Request(MagicMock(), MagicMock())
     s = r.__repr__()
     self.assertTrue(isinstance(s, str))
     self.assertIn('id', s)
Example #23
0
 def setUp(self):
     self.callback = MagicMock()
     self.o = Request(32)
     self.o.set_callback(self.callback)