Example #1
0
    def test__get_sflow_manager_with_container(self):
        Container.instance = None
        c = Container()     # ensure an instance
        e = RPCRequestEndpointUnit()
        self.assertEquals(e._get_sflow_manager(), c.sflow_manager)

        Container.instance = None
Example #2
0
    def test__build_sample(self):
        e = RPCRequestEndpointUnit()

        heads = {
            "conv-id": sentinel.conv_id,
            "ts": "1",
            "op": "remove_femur",
            "sender": sentinel.sender,
            "receiver": sentinel.receiver,
        }
        resp_heads = {"sender-service": "theservice"}

        samp = e._build_sample(sentinel.name, 200, "Ok", "msg", heads, "response", resp_heads)

        self.assertEquals(
            samp,
            {
                "app_name": sentinel.name,
                "op": "theservice.remove_femur",
                "attrs": {"conv-id": sentinel.conv_id, "service": "theservice"},
                "status_descr": "Ok",
                "status": "0",
                "req_bytes": len("msg"),
                "resp_bytes": len("response"),
                "uS": 999000,  # it's in microseconds!
                "initiator": sentinel.sender,
                "target": sentinel.receiver,
            },
        )
Example #3
0
    def test_build_msg(self):
        e = RPCRequestEndpointUnit()
        fakemsg = {'fake': 'content'}
        msg = e._build_msg(fakemsg, {})

        # er in json now, how to really check
        self.assertNotEquals(str(msg), str(fakemsg))
Example #4
0
    def test_build_msg(self):
        e = RPCRequestEndpointUnit()
        fakemsg = {'fake':'content'}
        msg = e._build_msg(fakemsg, {})

        # er in json now, how to really check
        self.assertNotEquals(str(msg), str(fakemsg))
Example #5
0
    def test__build_sample(self):
        e = RPCRequestEndpointUnit()

        heads = {
            'conv-id': sentinel.conv_id,
            'ts': '1',
            'op': 'remove_femur',
            'sender': sentinel.sender,
            'receiver': sentinel.receiver
        }
        resp_heads = {'sender-service': 'theservice'}

        samp = e._build_sample(sentinel.name, 200, "Ok", "msg", heads,
                               "response", resp_heads)

        self.assertEquals(
            samp,
            {
                'app_name': sentinel.name,
                'op': 'theservice.remove_femur',
                'attrs': {
                    'conv-id': sentinel.conv_id,
                    'service': 'theservice'
                },
                'status_descr': "Ok",
                'status': '0',
                'req_bytes': len('msg'),
                'resp_bytes': len('response'),
                'uS': 999000,  # it's in microseconds!
                'initiator': sentinel.sender,
                'target': sentinel.receiver
            })
Example #6
0
    def test__sample_request(self):
        e = RPCRequestEndpointUnit()

        e._get_sflow_manager = Mock(return_value=Mock(spec=SFlowManager))
        e._get_sflow_manager.return_value.should_sample = True
        e._build_sample = Mock(return_value={"test": sentinel.test})

        e._sample_request(
            sentinel.status,
            sentinel.status_descr,
            sentinel.msg,
            sentinel.headers,
            sentinel.response,
            sentinel.response_headers,
        )

        e._get_sflow_manager.assert_called_once_with()
        e._build_sample.assert_called_once_with(
            ANY,
            sentinel.status,
            sentinel.status_descr,
            sentinel.msg,
            sentinel.headers,
            sentinel.response,
            sentinel.response_headers,
        )

        e._get_sflow_manager.return_value.transaction.assert_called_once_with(test=sentinel.test)
Example #7
0
    def test__get_sflow_manager_with_container(self):
        Container.instance = None
        c = Container()  # ensure an instance
        e = RPCRequestEndpointUnit()
        self.assertEquals(e._get_sflow_manager(), c.sflow_manager)

        Container.instance = None
Example #8
0
    def test_endpoint_send_errors(self):
        errlist = [exception.BadRequest, exception.Unauthorized, exception.NotFound, exception.Timeout, exception.Conflict, exception.ServerError, exception.ServiceUnavailable]

        for err in errlist:
            e = RPCRequestEndpointUnit(interceptors={})
            ch = self._setup_mock_channel(status_code=err.status_code, error_message=str(err.status_code))
            e.attach_channel(ch)
            self.assertRaises(err, e.send, {})
Example #9
0
    def test_endpoint_send_errors(self):
        errlist = [exception.BadRequest, exception.Unauthorized, exception.NotFound, exception.Timeout, exception.Conflict, exception.ServerError, exception.ServiceUnavailable]

        for err in errlist:
            e = RPCRequestEndpointUnit()
            ch = self._setup_mock_channel(status_code=err.status_code, error_message=str(err.status_code))
            e.attach_channel(ch)

            self.assertRaises(err, e.send, 'payload')
Example #10
0
    def test_timeout_makes_sflow_sample(self):
        e = RPCRequestEndpointUnit()
        e._sample_request = Mock()

        self.assertRaises(exception.Timeout,
                          e._send,
                          sentinel.msg,
                          sentinel.headers,
                          timeout=1)
        e._sample_request.assert_called_once_with(-1, 'Timeout', sentinel.msg,
                                                  sentinel.headers, '', {})
Example #11
0
    def test__sample_request_exception(self, mocklog):

        e = RPCRequestEndpointUnit(interceptors={})

        e._get_sflow_manager = Mock(return_value=Mock(spec=SFlowManager))
        e._get_sflow_manager.return_value.should_sample = True
        e._build_sample = Mock(side_effect=TestError)

        e._sample_request(sentinel.status, sentinel.status_descr, sentinel.msg, sentinel.headers, sentinel.response, sentinel.response_headers)

        mocklog.exception.assert_called_once_with("Could not sample, ignoring")
Example #12
0
    def test__sample_request_no_sample(self, mocklog):
        e = RPCRequestEndpointUnit(interceptors={})

        e._get_sflow_manager = Mock(return_value=Mock(spec=SFlowManager))
        e._get_sflow_manager.return_value.should_sample = False
        e._get_sample_name = Mock()

        e._sample_request(sentinel.status, sentinel.status_descr, sentinel.msg, sentinel.headers, sentinel.response, sentinel.response_headers)

        self.assertEquals(mocklog.debug.call_count, 1)
        self.assertIn("not to sample", mocklog.debug.call_args[0][0])
Example #13
0
    def test__build_sample_uses_last_name_for_op(self):
        e = RPCRequestEndpointUnit()

        heads = {'conv-id': sentinel.conv_id,
                 'ts': '1',
                 'op': 'remove_femur',
                 'sender': sentinel.sender,
                 'receiver': sentinel.receiver}
        resp_heads = {'sender-service': 'service1,service2,service3'}

        samp = e._build_sample(sentinel.name, 200, "Ok", "msg", heads, "response", resp_heads)

        self.assertIn('op', samp)
        self.assertEquals(samp['op'], 'service3.remove_femur')
Example #14
0
    def test__build_sample_uses_last_name_for_op(self):
        e = RPCRequestEndpointUnit(interceptors={})

        heads = {'conv-id': sentinel.conv_id,
                 'ts': '1',
                 'op': 'remove_femur',
                 'sender': sentinel.sender,
                 'receiver': sentinel.receiver}
        resp_heads = {'sender-service': 'service1,service2,service3'}

        samp = e._build_sample(sentinel.name, 200, "Ok", "msg", heads, "response", resp_heads)

        self.assertIn('op', samp)
        self.assertEquals(samp['op'], 'service3.remove_femur')
Example #15
0
    def test__build_sample_uses_last_name_for_op(self):
        e = RPCRequestEndpointUnit()

        heads = {
            "conv-id": sentinel.conv_id,
            "ts": "1",
            "op": "remove_femur",
            "sender": sentinel.sender,
            "receiver": sentinel.receiver,
        }
        resp_heads = {"sender-service": "service1,service2,service3"}

        samp = e._build_sample(sentinel.name, 200, "Ok", "msg", heads, "response", resp_heads)

        self.assertIn("op", samp)
        self.assertEquals(samp["op"], "service3.remove_femur")
Example #16
0
    def test_endpoint_send(self):
        e = RPCRequestEndpointUnit()
        ch = self._setup_mock_channel()
        e.attach_channel(ch)

        ret, heads = e.send("rpc call")
        self.assertEquals(ret, 'bidirmsg')      # we just get payload back due to success RPC code 200

        e.close()
Example #17
0
    def _build_header(self, raw_msg):
        """
        Override to direct the calls in _build_header - first the RPCRequest side, then the Process mixin.
        """

        header1 = RPCRequestEndpointUnit._build_header(self, raw_msg)
        header2 = ProcessEndpointUnitMixin._build_header(self, raw_msg)

        header1.update(header2)

        return header1
Example #18
0
    def _build_header(self, raw_msg):
        """
        Override to direct the calls in _build_header - first the RPCRequest side, then the Process mixin.
        """

        header1 = RPCRequestEndpointUnit._build_header(self, raw_msg)
        header2 = ProcessEndpointUnitMixin._build_header(self, raw_msg)

        header1.update(header2)

        return header1
Example #19
0
    def test_endpoint_send(self):
        e = RPCRequestEndpointUnit(interceptors={})
        ch = self._setup_mock_channel()
        e.attach_channel(ch)

        ret, heads = e.send("rpc call")
        self.assertEquals(ret, 'bidirmsg') # we just get payload back due to success RPC code 200

        e.close()
Example #20
0
    def test__build_sample(self):
        e = RPCRequestEndpointUnit(interceptors={})

        heads = {'conv-id': sentinel.conv_id,
                 'ts': '1',
                 'op': 'remove_femur',
                 'sender': sentinel.sender,
                 'receiver': sentinel.receiver}
        resp_heads = {'sender-service': 'theservice'}

        samp = e._build_sample(sentinel.name, 200, "Ok", "msg", heads, "response", resp_heads)

        self.assertEquals(samp, {
            'app_name' : sentinel.name,
            'op' : 'theservice.remove_femur',
            'attrs' : {'conv-id': sentinel.conv_id, 'service': 'theservice'},
            'status_descr' : "Ok",
            'status' : '0',
            'req_bytes' : len('msg'),
            'resp_bytes': len('response'),
            'uS' : 999000, # it's in microseconds!
            'initiator' : sentinel.sender,
            'target' : sentinel.receiver
        })
Example #21
0
    def test__sample_request_exception(self, mocklog):

        e = RPCRequestEndpointUnit()

        e._get_sflow_manager = Mock(return_value=Mock(spec=SFlowManager))
        e._get_sflow_manager.return_value.should_sample = True
        e._build_sample = Mock(side_effect=TestError)

        e._sample_request(sentinel.status, sentinel.status_descr, sentinel.msg, sentinel.headers, sentinel.response, sentinel.response_headers)

        mocklog.exception.assert_called_once_with("Could not sample, ignoring")
Example #22
0
    def test__sample_request_no_sample(self, mocklog):
        e = RPCRequestEndpointUnit()

        e._get_sflow_manager = Mock(return_value=Mock(spec=SFlowManager))
        e._get_sflow_manager.return_value.should_sample = False
        e._get_sample_name = Mock()

        e._sample_request(sentinel.status, sentinel.status_descr, sentinel.msg, sentinel.headers, sentinel.response, sentinel.response_headers)

        self.assertEquals(mocklog.debug.call_count, 1)
        self.assertIn("not to sample", mocklog.debug.call_args[0][0])
Example #23
0
    def test__sample_request(self):
        e = RPCRequestEndpointUnit()

        e._get_sflow_manager = Mock(return_value=Mock(spec=SFlowManager))
        e._get_sflow_manager.return_value.should_sample = True
        e._build_sample = Mock(return_value={'test':sentinel.test})

        e._sample_request(sentinel.status, sentinel.status_descr, sentinel.msg, sentinel.headers, sentinel.response, sentinel.response_headers)

        e._get_sflow_manager.assert_called_once_with()
        e._build_sample.assert_called_once_with(ANY, sentinel.status, sentinel.status_descr, sentinel.msg, sentinel.headers, sentinel.response, sentinel.response_headers)

        e._get_sflow_manager.return_value.transaction.assert_called_once_with(test=sentinel.test)
Example #24
0
 def test__raise_exception_unknown(self):
     e = RPCRequestEndpointUnit()
     self.assertRaises(exception.ServerError, e._raise_exception, 999, "no")
Example #25
0
 def __init__(self, process=None, **kwargs):
     ProcessEndpointUnitMixin.__init__(self, process=process)
     RPCRequestEndpointUnit.__init__(self, **kwargs)
Example #26
0
    def test_timeout_makes_sflow_sample(self):
        e = RPCRequestEndpointUnit()
        e._sample_request = Mock()

        self.assertRaises(exception.Timeout, e._send, sentinel.msg, sentinel.headers, timeout=1)
        e._sample_request.assert_called_once_with(-1, "Timeout", sentinel.msg, sentinel.headers, "", {})
Example #27
0
 def test__get_sample_name(self):
     e = RPCRequestEndpointUnit()
     self.assertEquals(e._get_sample_name(), "unknown-rpc-client")
Example #28
0
 def test__get_sflow_manager(self):
     Container.instance = None
     e = RPCRequestEndpointUnit()
     self.assertIsNone(e._get_sflow_manager())
Example #29
0
 def test__raise_exception_known(self):
     e = RPCRequestEndpointUnit()
     self.assertRaises(exception.NotFound, e._raise_exception, 404, "no")
Example #30
0
 def __init__(self, process=None, **kwargs):
     ProcessEndpointUnitMixin.__init__(self, process=process)
     RPCRequestEndpointUnit.__init__(self, **kwargs)
Example #31
0
 def test__get_sample_name(self):
     e = RPCRequestEndpointUnit()
     self.assertEquals(e._get_sample_name(), "unknown-rpc-client")
Example #32
0
 def test__get_sflow_manager(self):
     Container.instance = None
     e = RPCRequestEndpointUnit()
     self.assertIsNone(e._get_sflow_manager())