コード例 #1
0
    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])
コード例 #2
0
 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
コード例 #3
0
    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)
コード例 #4
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)
コード例 #5
0
 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))
コード例 #6
0
    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')
コード例 #7
0
    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])
コード例 #8
0
    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'))