def setUp(self):
        base_manager = base.BaseApplication(self.REALM, self.HOST,
                                            self.HOST_ADDR)
        s6a_manager = s6a_relay.S6AApplication(
            Mock(),
            self.REALM,
            self.HOST,
            self.HOST_ADDR,
        )
        base_manager.register(s6a_manager)
        self._server = server.S6aServer(
            base_manager,
            s6a_manager,
            self.REALM,
            self.HOST,
        )

        # Mock the writes to check responses
        self._writes = Mock()

        def convert_memview_to_bytes(memview):
            """ Deep copy the memoryview for checking later  """
            return self._writes(memview.tobytes())

        self._transport = asyncio.Transport()
        self._transport.write = Mock(side_effect=convert_memview_to_bytes)

        # Here goes nothing..
        self._server.connection_made(self._transport)
Esempio n. 2
0
    async def serve():  # noqa: WPS430
        if not store.list_subscribers():
            # Waiting for subscribers to be added to store
            await store.on_ready()

        if service.config['s6a_over_grpc']:
            logging.info('Running s6a over grpc')
            s6a_proxy_servicer = S6aProxyRpcServicer(
                processor,
                service.config.get('print_grpc_payload', False),
            )
            s6a_proxy_servicer.add_to_server(service.rpc_server)
        else:
            logging.info('Running s6a over DIAMETER')
            base_manager = base.BaseApplication(
                service.config['mme_realm'],
                service.config['mme_host_name'],
                service.config['mme_host_address'],
            )
            s6a_manager = _get_s6a_manager(service, processor)
            base_manager.register(s6a_manager)

            # Setup the Diameter/s6a MME
            s6a_server = service.loop.create_server(
                lambda: S6aServer(
                    base_manager,
                    s6a_manager,
                    service.config['mme_realm'],
                    service.config['mme_host_name'],
                    loop=service.loop,
                ),
                service.config['host_address'],
                service.config['mme_port'],
            )
            asyncio.ensure_future(s6a_server, loop=service.loop)
Esempio n. 3
0
    async def serve():  # noqa: WPS430
        if not store.list_subscribers():
            # Waiting for subscribers to be added to store
            await store.on_ready()

        if service.config.get('enable5g_features',
                              service.mconfig.enable5g_features):
            logging.info('Cater to 5G Authentication')
            m5g_subs_auth_servicer = M5GAuthRpcServicer(
                processor,
                service.config.get('print_grpc_payload', False),
            )
            m5g_subs_auth_servicer.add_to_server(service.rpc_server)

        if service.config.get('enable5g_features',
                              service.mconfig.enable5g_features):
            logging.info('Cater to 5G SUPI Registration')
            m5g_suci_reg_servicer = M5GSUCIRegRpcServicer(
                processor,
                suciprofile_db_dict,
                service.config.get('print_grpc_payload', False),
            )
            m5g_suci_reg_servicer.add_to_server(service.rpc_server)

        if service.config.get('s6a_over_grpc'):
            logging.info('Running s6a over grpc')
            s6a_proxy_servicer = S6aProxyRpcServicer(
                processor,
                service.config.get('print_grpc_payload', False),
            )
            s6a_proxy_servicer.add_to_server(service.rpc_server)
        else:
            logging.info('Running s6a over DIAMETER')
            base_manager = base.BaseApplication(
                service.config.get('mme_realm'),
                service.config.get('mme_host_name'),
                service.config.get('mme_host_address'),
            )
            s6a_manager = _get_s6a_manager(service, processor)
            base_manager.register(s6a_manager)

            # Setup the Diameter/s6a MME
            s6a_server = service.loop.create_server(
                lambda: S6aServer(
                    base_manager,
                    s6a_manager,
                    service.config.get('mme_realm'),
                    service.config.get('mme_host_name'),
                    loop=service.loop,
                ),
                service.config.get('host_address'),
                service.config.get('mme_port'),
            )
            asyncio.ensure_future(s6a_server, loop=service.loop)
Esempio n. 4
0
    def setUp(self):
        ServiceRegistry.add_service('s6a_proxy', '0.0.0.0', 0)
        proxy_config = {
            'local_port': 1234,
            'cloud_address': 'test',
            'proxy_cloud_connections': True,
        }

        self._base_manager = base.BaseApplication(
            self.REALM,
            self.HOST,
            self.HOST_ADDR,
        )
        self._proxy_client = Mock()
        self._s6a_manager = s6a_relay.S6ARelayApplication(
            Mock(),
            self.REALM,
            self.HOST,
            self.HOST_ADDR,
            proxy_client=self._proxy_client,
        )
        self._server = server.S6aServer(
            self._base_manager,
            self._s6a_manager,
            self.REALM,
            self.HOST,
        )

        self.get_proxy_config_patcher = patch.object(
            s6a_relay.ServiceRegistry,
            'get_proxy_config',
            Mock(return_value=proxy_config),
        )
        self.mock_get_proxy_config = self.get_proxy_config_patcher.start()
        self.addCleanup(self.get_proxy_config_patcher.stop)

        # Mock the writes to check responses
        self._writes = Mock()

        def convert_memview_to_bytes(memview):
            """ Deep copy the memoryview for checking later  """
            return self._writes(memview.tobytes())

        self._transport = MockTransport()
        self._transport.write = Mock(side_effect=convert_memview_to_bytes)

        # Here goes nothing..
        self._server.connection_made(self._transport)