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
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, }, )
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))
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))
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 })
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)
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, {})
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')
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, '', {})
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")
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])
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')
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')
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")
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()
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
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()
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 })
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")
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])
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)
def test__raise_exception_unknown(self): e = RPCRequestEndpointUnit() self.assertRaises(exception.ServerError, e._raise_exception, 999, "no")
def __init__(self, process=None, **kwargs): ProcessEndpointUnitMixin.__init__(self, process=process) RPCRequestEndpointUnit.__init__(self, **kwargs)
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, "", {})
def test__get_sample_name(self): e = RPCRequestEndpointUnit() self.assertEquals(e._get_sample_name(), "unknown-rpc-client")
def test__get_sflow_manager(self): Container.instance = None e = RPCRequestEndpointUnit() self.assertIsNone(e._get_sflow_manager())
def test__raise_exception_known(self): e = RPCRequestEndpointUnit() self.assertRaises(exception.NotFound, e._raise_exception, 404, "no")