class DefaultPrometheusFactory(Factory):
    """
    Creates Prometheus components by their descriptors.

    See :class:`Factory <pip_services3_components.build.Factory.Factory>`,
    :class:`PrometheusCounters <pip_services3_prometheus.count.PrometheusCounters.PrometheusCounters>`,
    :class:`PrometheusMetricsService <pip_services3_prometheus.services.PrometheusMetricsService.PrometheusMetricsService>`
    """
    PrometheusCountersDescriptor = Descriptor("pip-services", "counters",
                                              "prometheus", "*", "1.0")
    PrometheusMetricsServiceDescriptor = Descriptor("pip-services",
                                                    "metrics-service",
                                                    "prometheus", "*", "1.0")

    def __init__(self):
        """
        Create a new instance of the factory.
        """
        super(DefaultPrometheusFactory, self).__init__()
        self.register_as_type(
            DefaultPrometheusFactory.PrometheusCountersDescriptor,
            PrometheusCounters)
        self.register_as_type(
            DefaultPrometheusFactory.PrometheusMetricsServiceDescriptor,
            PrometheusMetricsService)
class DefaultStateStoreFactory(Factory):
    """
    Creates :class:`IStateStore <pip_services3_components.state.IStateStore.IStateStore>` components by their descriptors.

    See: :class:`Factory <pip_services3_components.build.Factory.Factory>`,
    :class:`IStateStore <pip_services3_components.state.IStateStore.IStateStore>`,
    :class:`MemoryStateStore <pip_services3_components.state.MemoryStateStore.MemoryStateStore>`,
    :class:`NullStateStore <pip_services3_components.state.NullStateStore.NullStateStore>`
    """
    descriptor = Descriptor("pip-services", "factory", "state-store",
                            "default", "1.0")
    NullStateStoreDescriptor = Descriptor("pip-services", "state-store",
                                          "null", "*", "1.0")
    MemoryStateStoreDescriptor = Descriptor("pip-services", "state-store",
                                            "memory", "*", "1.0")

    def __init__(self):
        """
        Create a new instance of the factory.
        """
        super().__init__()

        self.register_as_type(
            DefaultStateStoreFactory.MemoryStateStoreDescriptor,
            MemoryStateStore)
        self.register_as_type(
            DefaultStateStoreFactory.NullStateStoreDescriptor, NullStateStore)
コード例 #3
0
class DefaultTracerFactory(Factory):
    """
    Creates :class:`ITracer <pip_services3_components.trace.ITracer.ITracer>` components by their descriptors.

    See :class:`Factory <pip_services3_components.build.Factory.Factory>`,
    :class:`NullTracer <pip_services3_components.trace.NullTracer.NullTracer>`,
    :class:`ConsoleTracer <pip_services3_components.trace.ConsoleTracer.ConsoleTracer>`,
    :class:`CompositeTracer <pip_services3_components.trace.CompositeTracer.CompositeTracer>`

    """

    NullTracerDescriptor = Descriptor("pip-services", "tracer", "null", "*",
                                      "1.0")
    LogTracerDescriptor = Descriptor("pip-services", "tracer", "log", "*",
                                     "1.0")
    CompositeTracerDescriptor = Descriptor("pip-services", "tracer",
                                           "composite", "*", "1.0")

    def __init__(self):
        """
        Create a new instance of the factory.
        """
        super(DefaultTracerFactory, self).__init__()
        self.register_as_type(DefaultTracerFactory.NullTracerDescriptor,
                              NullTracer)
        self.register_as_type(DefaultTracerFactory.LogTracerDescriptor,
                              LogTracer)
        self.register_as_type(DefaultTracerFactory.CompositeTracerDescriptor,
                              CompositeTracer)
    def test_get_open_api_override(self):
        open_api_content = "swagger yaml content"

        # recreate service with new configuration
        self.service.close(None)

        config = rest_config.set_defaults(
            ConfigParams.from_tuples("swagger.auto", False))

        ctrl = DummyController()

        self.service = DummyCommandableHttpService()
        self.service.configure(config)

        references = References.from_tuples(
            Descriptor('pip-services-dummies', 'controller', 'default',
                       'default', '1.0'), ctrl,
            Descriptor('pip-services-dummies', 'service', 'http', 'default',
                       '1.0'), self.service)
        self.service.set_references(references)

        try:
            self.service.open(None)

            response = requests.request('GET',
                                        'http://localhost:3005/dummy/swagger')
            assert response.text == open_api_content
        finally:
            self.service.close(None)
    def setup_class(cls):
        cls.controller = BeaconsController()
        cls.persistence = BeaconsMemoryPersistence()

        cls.service = BeaconsHttpServiceV1()
        cls.service.configure(http_config)

        cls.client = BeaconsHttpClientV1()
        cls.client.configure(http_config)

        cls.references = References.from_tuples(
            Descriptor('beacons', 'persistence', 'memory', 'default', '1.0'), cls.persistence,
            Descriptor('beacons', 'controller', 'default', 'default', '1.0'), cls.controller,
            Descriptor('beacons', 'service', 'http', 'default', '1.0'), cls.service,
            Descriptor('beacons', 'client', 'http', 'default', '1.0'), cls.client
        )
        cls.controller.set_references(cls.references)
        cls.client.set_references(cls.references)
        cls.service.set_references(cls.references)

        cls.fixture = BeaconsClientV1Fixture(cls.client)

        cls.persistence.open(None)
        cls.service.open(None)
        cls.client.open(None)
コード例 #6
0
    def test_to_string(self):
        descriptor1 = Descriptor("pip-services-dummies", "controller",
                                 "default", "default", "1.0")
        assert "pip-services-dummies:controller:default:default:1.0" == str(
            descriptor1)

        descriptor2 = Descriptor(None, None, None, None, None)
        assert "*:*:*:*:*" == str(descriptor2)
コード例 #7
0
    def setup_class(cls):
        cls._persistence = BeaconsMemoryPersistence()
        cls._controller = BeaconsController()
        references = References.from_tuples(Descriptor('beacons', 'persistence', 'memory', 'default', '1.0'), cls._persistence,
                                            Descriptor('beacons', 'controller', 'default', 'default', '1.0'), cls._controller)

        cls._controller.set_references(references)
        cls._persistence.open(None)
    def __init__(self):
        super(HelloWorldServiceFactory, self).__init__()

        ControllerDescriptor = Descriptor('hello-world', 'controller', 'default', '*', '1.0')
        HttpServiceDescriptor = Descriptor('hello-world', 'service', 'http', '*', '1.0')

        self.register_as_type(ControllerDescriptor, HelloWorldController)
        self.register_as_type(HttpServiceDescriptor, HelloWorldRestService)
コード例 #9
0
    def __init__(self):
        super().__init__()

        self.__roles_client: IRolesClientV1 = None
        self.__sessions_client: ISessionsClientV1 = None
        self.__sites_client: ISitesClientV1 = None

        self._dependency_resolver.put('roles', Descriptor('pip-services-roles', 'client', '*', '*', '1.0'))
        self._dependency_resolver.put('sessions', Descriptor('pip-services-sessions', 'client', '*', '*', '1.0'))
        self._dependency_resolver.put('sites', Descriptor('pip-services-sites', 'client', '*', '*', '1.0'))
    def test_from_string(self):
        descriptor = Descriptor.from_string(None)
        assert descriptor is None

        descriptor = Descriptor.from_string(
            "pip-dummies:controller:default:default:1.0")
        assert descriptor.exact_match(
            Descriptor("pip-dummies", "controller", "default", "default",
                       "1.0"))

        with pytest.raises(ConfigException) as ex:
            Descriptor.from_string('xxx')
コード例 #11
0
    def setup_class(cls):
        cls.controller = DummyController()
        
        cls.client = DummyDirectClient()

        cls.references = References.from_tuples(
            Descriptor("pip-services-dummies", "controller", "default", "default", "1.0"), cls.controller, 
            Descriptor("pip-services-dummies", "client", "direct", "default", "1.0"), cls.client
        )
        cls.client.set_references(cls.references)

        cls.fixture = DummyClientFixture(cls.client)
コード例 #12
0
    def setup_class(cls):
        cls.controller = DummyController()

        cls.service = DummyRestService()
        cls.service.configure(rest_config)

        references = References.from_tuples(
            Descriptor("pip-services-dummies", "controller", "default",
                       "default", "1.0"), cls.controller,
            Descriptor("pip-services-dummies", "service", "http", "default",
                       "1.0"), cls.service)

        cls.service.set_references(references)
コード例 #13
0
    def setup_class(cls):
        cls.controller = DummyController()

        cls.service = DummyCommandableGrpcService()
        cls.service.configure(grpc_config)

        cls.references = References.from_tuples(
            Descriptor('pip-services-dummies', 'controller', 'default',
                       'default', '1.0'), cls.controller,
            Descriptor('pip-services-dummies', 'service', 'grpc', 'default',
                       '1.0'), cls.service)

        cls.service.set_references(cls.references)
        cls.service.open(None)
コード例 #14
0
    def setup_class(cls):
        cls.service = StatusRestService()
        cls.service.configure(rest_config)

        contextInfo = ContextInfo()
        contextInfo.name = "Test"
        contextInfo.description = "This is a test container"

        cls.references = References.from_tuples(
            Descriptor("pip-services", "context-info", "default", "default",
                       "1.0"), contextInfo,
            Descriptor("pip-services-dummies", "service", "http", "default",
                       "1.0"), cls.service)

        cls.service.set_references(cls.references)
コード例 #15
0
class ClientFacadeFactory(Factory):
    SettingsNullClientV1Descriptor = Descriptor("pip-services-settings",
                                                "client", "null", "*", "1.0")
    AccountsMemoryClientV1Descriptor = Descriptor("pip-services-accounts",
                                                  "client", "memory", "*",
                                                  "1.0")
    PasswordNullClientV1Descriptor = Descriptor("pip-services-passwords",
                                                "client", "null", "*", "1.0")
    RolesMemoryClientV1Descriptor = Descriptor("pip-services-roles", "client",
                                               "memory", "*", "1.0")
    SessionsMemoryClientV1Descriptor = Descriptor("pip-services-sessions",
                                                  "client", "memory", "*",
                                                  "1.0")
    EmailSettingsMemoryClientV1Descriptor = Descriptor(
        "pip-services-emailsettings", "client", "memory", "*", "1.0")
    SitesMemoryClientV1Descriptor = Descriptor("pip-services-sites", "client",
                                               "memory", "*", "1.0")
    InvitationsNullClientV1Descriptor = Descriptor("pip-services-invitations",
                                                   "client", "null", "*",
                                                   "1.0")
    BeaconsMemoryClientV1Descriptor = Descriptor("beacons", "client", "memory",
                                                 "*", "1.0")

    def __init__(self):
        super(ClientFacadeFactory, self).__init__()

        self.register_as_type(
            ClientFacadeFactory.SettingsNullClientV1Descriptor,
            SettingsNullClientV1)
        self.register_as_type(
            ClientFacadeFactory.AccountsMemoryClientV1Descriptor,
            AccountsMemoryClientV1)
        self.register_as_type(
            ClientFacadeFactory.PasswordNullClientV1Descriptor,
            PasswordsNullClientV1)
        self.register_as_type(
            ClientFacadeFactory.RolesMemoryClientV1Descriptor,
            RolesMemoryClientV1)
        self.register_as_type(
            ClientFacadeFactory.SessionsMemoryClientV1Descriptor,
            SessionsMemoryClientV1)
        self.register_as_type(
            ClientFacadeFactory.EmailSettingsMemoryClientV1Descriptor,
            EmailSettingsMemoryClientV1)
        self.register_as_type(
            ClientFacadeFactory.SitesMemoryClientV1Descriptor,
            SitesMemoryClientV1)
        self.register_as_type(
            ClientFacadeFactory.InvitationsNullClientV1Descriptor,
            InvitationsNullClientV1)
        self.register_as_type(
            ClientFacadeFactory.BeaconsMemoryClientV1Descriptor,
            BeaconsMemoryClientV1)
コード例 #16
0
class MemoryMessageQueueFactory(MessageQueueFactory):
    """
    Creates :class:`MemoryMessageQueue <pip_services3_messaging.queues.MemoryMessageQueue.MemoryMessageQueue>` components by their descriptors.
    Name of created message queue is taken from its descriptor.
    """

    MemoryQueueDescriptor = Descriptor("pip-services", "message-queue", "memory", "*", "*")

    def __init__(self):
        """
        Create a new instance of the factory.
        """
        super(MemoryMessageQueueFactory, self).__init__()

        self.register(MemoryMessageQueueFactory.MemoryQueueDescriptor,
                      lambda locator: self.create_queue(
                          None if not callable(locator.get_name) else locator.get_name()
                      ))

    def create_queue(self, name: str) -> IMessageQueue:
        """
        Creates a message queue component and assigns its name.

        :param name: a name of the created message queue.
        :return: IMessageQueue instance
        """
        queue = MemoryMessageQueue(name)

        if self._config is not None:
            queue.configure(self._config)

        if self._references is not None:
            queue.set_references(self._references)

        return queue
コード例 #17
0
    def open(self, correlation_id):
        """
        Opens the component.

        :param correlation_id: (optional) transaction id to trace execution through call chain.
        """
        if self._references is not None:
            raise InvalidStateException(correlation_id, "ALREADY_OPENED",
                                        "Container was already opened")

        try:
            self._logger.trace(correlation_id, "Starting container.")

            # Create references with configured components
            self._references = ContainerReferences()
            self._init_references(self._references)
            self._references.put_from_config(self._config)
            self.set_references(self._references)

            # Get custom description if available
            info_descriptor = Descriptor("*", "context-info", "*", "*", "*")
            self._info = self._references.get_one_optional(info_descriptor)

            # Reference and open components
            self._references.open(correlation_id)

            # Get reference to logger
            self._logger = CompositeLogger(self._references)
            self._logger.info(correlation_id,
                              "Container " + self._info.name + " started.")
        except Exception as ex:
            self._logger.error(correlation_id, ex, "Failed to start container")
            traceback.print_exc()
            raise ex
コード例 #18
0
    def test_resolve_depedencies(self):
        ref1 = "AAA"
        ref2 = "BBB"
        refs = References.from_tuples(
            "Reference1", ref1,
            Descriptor("pip-services-commons", "reference", "object", "ref2",
                       "1.0"), ref2)

        resolver = DependencyResolver.from_tuples(
            "ref1", "Reference1", "ref2",
            Descriptor("pip-services-commons", "reference", "*", "*", "*"))
        resolver.set_references(refs)

        assert ref1 == resolver.get_one_required("ref1")
        assert ref2 == resolver.get_one_required("ref2")
        assert None == resolver.get_one_optional("ref3")
コード例 #19
0
class BeaconsServiceFactory(Factory):

    MemoryPersistenceDescriptor = Descriptor('beacons', 'persistence', 'memory', '*', '1.0')
    FilePersistenceDescriptor = Descriptor('beacons', 'persistence', 'file', '*', '1.0')
    MongoDbPersistenceDescriptor = Descriptor('beacons', 'persistence', 'mongodb', '*', '1.0')
    ControllerDescriptor = Descriptor('beacons', 'controller', 'default', '*', '1.0')
    HttpServiceV1Descriptor = Descriptor('beacons', 'service', 'http', '*', '1.0')

    def __init__(self):
        super(BeaconsServiceFactory, self).__init__()

        self.register_as_type(BeaconsServiceFactory.MemoryPersistenceDescriptor, BeaconsMemoryPersistence)
        self.register_as_type(BeaconsServiceFactory.FilePersistenceDescriptor, BeaconsFilePersistence)
        self.register_as_type(BeaconsServiceFactory.MongoDbPersistenceDescriptor, BeaconsMongoDbPersistence)
        self.register_as_type(BeaconsServiceFactory.ControllerDescriptor, BeaconsController)
        self.register_as_type(BeaconsServiceFactory.HttpServiceV1Descriptor, BeaconsHttpServiceV1)
コード例 #20
0
    def __init__(self):
        """
        Creates a new instance of this service.
        """
        super(PrometheusMetricsService, self).__init__()

        self.__cached_counters: CachedCounters = None
        self.__source: str = None
        self.__instance: str = None

        self._dependency_resolver.put(
            "cached-counters",
            Descriptor("pip-services", "counters", "cached", "*", "1.0"))
        self._dependency_resolver.put(
            "prometheus-counters",
            Descriptor("pip-services", "counters", "prometheus", "*", "1.0"))
コード例 #21
0
    def setup_class(cls):
        cls.rest = RestClientTest()
        cls.references = ReferencesTest()
        cls.references.put(Descriptor('beacons', 'client', 'memory', 'default', '1.0'),
                           BeaconsMemoryClientV1())

        cls.references.open(None)
    def test_descriptor(self):
        component_config = ComponentConfig()
        assert None == component_config.descriptor

        descriptor = Descriptor("group", "type", "kind", "name", "version")
        component_config.descriptor = descriptor
        assert component_config.descriptor == descriptor
コード例 #23
0
    def setup_class(cls):
        controller = DummyController()

        cls.service = DummyCommandableHttpService()
        cls.service.configure(rest_config)

        references = References.from_tuples(
            Descriptor("pip-services-dummies", "controller", "default", "default", "1.0"), controller,
            Descriptor("pip-services-dummies", "service", "http", "default", "1.0"), cls.service
        )

        cls.service.set_references(references)

        cls.service.open(None)

        time.sleep(0.5)
 def setup_method(self):
     self.rest = RestClientTest()
     self.references = ReferencesTest()
     self.references.put(
         Descriptor('iqs-services-facade', 'operations', 'invitations',
                    'default', '1.0'), InvitationsOperationsV1())
     self.references.open(None)
コード例 #25
0
class DefaultRpcFactory(Factory):
    """
    Creates RPC components by their descriptors.
    """

    HttpEndpointDescriptor = Descriptor("pip-services", "endpoint", "http", "*", "1.0")
    StatusServiceDescriptor = Descriptor("pip-services", "status-service", "http", "*", "1.0")
    HeartbeatServiceDescriptor = Descriptor("pip-services", "heartbeat-service", "http", "*", "1.0")

    def __init__(self):
        """
        Create a new instance of the factory.
        """
        super(DefaultRpcFactory, self).__init__()
        self.register_as_type(self.HttpEndpointDescriptor, HttpEndpoint)
        self.register_as_type(self.StatusServiceDescriptor, StatusRestService)
        self.register_as_type(self.HeartbeatServiceDescriptor, HeartbeatRestService)
コード例 #26
0
    def setup_class(cls):
        cls.controller = DummyController()

        cls.service = DummyGrpcService()
        cls.service.configure(grpc_config)

        cls.references = References.from_tuples(
            Descriptor('pip-services-dummies', 'controller', 'default',
                       'default', '1.0'), cls.controller,
            Descriptor('pip-services-dummies', 'service', 'grpc', 'default',
                       '1.0'), cls.service)

        cls.service.set_references(cls.references)
        cls.service.open(None)

        cls.chanel = grpc.insecure_channel('localhost:' + str(port))
        cls.client = dummies_pb2_grpc.DummiesStub(cls.chanel)
コード例 #27
0
    def test_autocreate_component(self):
        refs = ManagedReferences()

        factory = DefaultLoggerFactory()
        refs.put(None, factory)

        logger = refs.get_one_required(Descriptor("*", "logger", "*", "*", "*"))
        assert None != logger
コード例 #28
0
 def __init__(self):
     """
     Creates a new instance of this service.
     """
     super(StatusRestService, self).__init__()
     self._dependency_resolver.put(
         "context-info",
         Descriptor("pip-services", "context-info", "default", "*", "1.0"))
    def __init__(self):
        super(HelloWorldRestService, self).__init__()

        self._base_route = "/hello_world"

        ControllerDescriptor = Descriptor('hello-world', 'controller', '*',
                                          '*', '1.0')
        self._dependency_resolver.put('controller', ControllerDescriptor)
        self._controller = None
コード例 #30
0
    def set_references(self, references: IReferences):
        """
        Sets references to dependent components.

        :param references: references to locate the component dependencies.
        """
        context_info = references.get_one_optional(Descriptor("pip-services", "context-info", "*", "*", "1.0"))
        if context_info is not None and self._source is None:
            self._source = context_info.name