def test_rpc_handler_export_multiple_packets(self): requests = [] event = threading.Event() def _helper(request_iterator, context): # Ensure a stream has not been started before accepting a request. if len(requests) != 0: return for request in request_iterator: requests.append(request) if len(requests) == 2: event.set() yield self._add_and_start_service(GenericRpcHandler(_helper)) r1 = metrics_service_pb2.ExportMetricsServiceRequest( node=common_pb2.Node(service_info=common_pb2.ServiceInfo( name='request1'))) r2 = metrics_service_pb2.ExportMetricsServiceRequest( node=common_pb2.Node(service_info=common_pb2.ServiceInfo( name='request2'))) handler = _create_rpc_handler(self._create_stub()) handler.send(r1) handler.send(r2) self.assertTrue(event.wait(timeout=1)) self.assertListEqual(requests, [r1, r2])
def generate_metrics_requests( self, metrics: Sequence[MetricRecord] ) -> metrics_service_pb2.ExportMetricsServiceRequest: collector_metrics = translate_to_collector(metrics) service_request = metrics_service_pb2.ExportMetricsServiceRequest( node=self.node, metrics=collector_metrics) yield service_request
def test_export_node(self): requests = [] event = threading.Event() def _helper(request_iterator, context): for request in request_iterator: requests.append(request) event.set() yield self._add_and_start_service(GenericRpcHandler(_helper)) _create_rpc_handler( self._create_stub(), service_name=SERVICE_NAME).send( metrics_service_pb2.ExportMetricsServiceRequest()) self.assertTrue(event.wait(timeout=1)) request = requests[0] self.assertEqual(request.node.service_info.name, SERVICE_NAME) self.assertEqual(request.node.library_info.language, 8) self.assertIsNotNone(request.node.library_info.exporter_version) self.assertEqual(request.node.library_info.core_library_version, opencensus_version) self.assertEqual(request.node.identifier.host_name, socket.gethostname()) self.assertEqual(request.node.identifier.pid, os.getpid()) self.assertIsNotNone(request.node.identifier.start_timestamp) self.assertGreater(request.node.identifier.start_timestamp.seconds, 0)
def test_rpc_handler_stream_restart_on_error(self): initialized = [] requests = [] event = threading.Event() def _helper(request_iterator, context): initialized.append(True) for request in request_iterator: requests.append(request) if len(requests) == 2: event.set() context.abort(grpc.StatusCode.INTERNAL, '') self._add_and_start_service(GenericRpcHandler(_helper)) request = metrics_service_pb2.ExportMetricsServiceRequest() handler = _create_rpc_handler(self._create_stub()) handler.send(request) # Give server time to propagate failure to client time.sleep(0.1) handler.send(request) self.assertTrue(event.wait(timeout=1)) self.assertEqual(len(initialized), 2) self.assertEqual(len(requests), 2)
def export_metrics(self, metrics): """ Exports given metrics to target metric service. """ metric_protos = [_get_metric_proto(metric) for metric in metrics] self._rpc_handler.send( metrics_service_pb2.ExportMetricsServiceRequest( metrics=metric_protos))
def test_export_node_with_hostname(self): requests = [] event = threading.Event() def _helper(request_iterator, context): for request in request_iterator: requests.append(request) event.set() yield self._add_and_start_service(GenericRpcHandler(_helper)) ocagent.ExportRpcHandler( self._create_stub(), service_name=SERVICE_NAME, host_name='my host').send( metrics_service_pb2.ExportMetricsServiceRequest()) self.assertTrue(event.wait(timeout=1)) self.assertEqual(requests[0].node.identifier.host_name, 'my host')
def test_rpc_handler_initialization(self): requests = [] event = threading.Event() def _helper(request_iterator, context): for request in request_iterator: requests.append(request) event.set() yield self._add_and_start_service(GenericRpcHandler(_helper)) request = metrics_service_pb2.ExportMetricsServiceRequest( node=common_pb2.Node(service_info=common_pb2.ServiceInfo( name='test-service'))) _create_rpc_handler(self._create_stub()).send(request) self.assertTrue(event.wait(timeout=1)) self.assertListEqual(requests, [request])
def test_export_with_no_resource_found(self, mock_get_instance): event = threading.Event() requests = [] def _helper(request_iterator, context): for r in request_iterator: requests.append(r) event.set() yield self._add_and_start_service(GenericRpcHandler(_helper)) mock_get_instance.return_value = None _create_rpc_handler(self._create_stub()).send( metrics_service_pb2.ExportMetricsServiceRequest()) self.assertTrue(event.wait(timeout=1)) self.assertEqual(requests[0].resource, resource_pb2.Resource(type='global'))