Exemple #1
0
 def build_multi_enb_magma_service(cls) -> MagmaService:
     event_loop = asyncio.get_event_loop()
     mconfig = EnodebConfigBuilder.get_multi_enb_mconfig()
     service_config = EnodebConfigBuilder.get_service_config()
     with mock.patch('magma.common.service.MagmaService') as MockService:
         MockService.config = service_config
         MockService.mconfig = mconfig
         MockService.loop = event_loop
         return MockService
Exemple #2
0
    def test_get_enb_config(self):
        mconfig = EnodebConfigBuilder.get_mconfig()
        enb_config = _get_enb_config(mconfig, self.device_cfg)
        self.assertTrue(enb_config.earfcndl == 39150,
                        "Should give earfcndl from default eNB config")

        mconfig = EnodebConfigBuilder.get_multi_enb_mconfig()
        self.device_cfg.set_parameter(ParameterName.SERIAL_NUMBER,
                                      '120200002618AGP0003')
        enb_config = _get_enb_config(mconfig, self.device_cfg)
        self.assertTrue(enb_config.earfcndl == 39151,
                        "Should give earfcndl from specific eNB config")
Exemple #3
0
 def build_magma_service(
     cls,
     device: EnodebDeviceName = EnodebDeviceName.BAICELLS,
 ) -> MagmaService:
     event_loop = asyncio.get_event_loop()
     mconfig = EnodebConfigBuilder.get_mconfig(device)
     service_config = EnodebConfigBuilder.get_service_config()
     with mock.patch('magma.common.service.MagmaService') as MockService:
         MockService.config = service_config
         MockService.mconfig = mconfig
         MockService.loop = event_loop
         return MockService
 def build_freedomfi_one_acs_state_machine(self):
     service = EnodebAcsStateMachineBuilder.build_magma_service(
         mconfig=EnodebConfigBuilder.get_mconfig(),
         service_config=self._get_service_config(),
     )
     handler_class = get_device_handler_from_name(
         EnodebDeviceName.FREEDOMFI_ONE, )
     acs_state_machine = handler_class(service)
     return acs_state_machine
Exemple #5
0
    def _check_postprocessing(self, expected, service_cfg):
        cfg_desired = Mock()
        acs_state_machine = EnodebAcsStateMachineBuilder.build_acs_state_machine(
            EnodebDeviceName.FREEDOMFI_ONE)
        acs_state_machine.device_cfg.set_parameter(
            ParameterName.SERIAL_NUMBER,
            "2006CW5000023",
        )

        cfg_init = FreedomFiOneConfigurationInitializer(acs_state_machine)
        cfg_init.postprocess(
            EnodebConfigBuilder.get_mconfig(),
            service_cfg,
            cfg_desired,
        )

        cfg_desired.assert_has_calls(expected)
 def setUp(self) -> None:
     service = EnodebConfigBuilder.get_service_config()
     self.enb_acs_manager = StateMachineManager(service)
     self.mgr = StatsManager(self.enb_acs_manager)
     self.is_clear_stats_called = False
Exemple #7
0
    def test_post_processing(self) -> None:
        """ Test FreedomFi One specific post processing functionality"""

        acs_state_machine = self.build_freedomfi_one_acs_state_machine()
        cfg_desired = Mock()
        acs_state_machine.device_cfg.set_parameter(
            ParameterName.SERIAL_NUMBER,
            "2006CW5000023",
        )

        cfg_init = FreedomFiOneConfigurationInitializer(acs_state_machine)
        cfg_init.postprocess(
            EnodebConfigBuilder.get_mconfig(),
            self._get_service_config(), cfg_desired,
        )
        expected = [
            call.delete_parameter('EARFCNDL'),
            call.delete_parameter('DL bandwidth'),
            call.delete_parameter('UL bandwidth'),
            call.set_parameter(
                'tunnel_ref',
                'Device.IP.Interface.1.IPv4Address.1.',
            ),
            call.set_parameter('prim_src', 'GNSS'),
            call.set_parameter('carrier_agg_enable', True),
            call.set_parameter('carrier_number', 2),
            call.set_parameter('contiguous_cc', 0),
            call.set_parameter('web_ui_enable', False),
            call.set_parameter('sas_enabled', True),
            call.set_parameter(
                'sas_server_url',
                'https://spectrum-connect.federatedwireless.com/v1.2/',
            ),
            call.set_parameter('sas_uid', 'M0LK4T'),
            call.set_parameter('sas_category', 'A'),
            call.set_parameter('sas_channel_type', 'GAA'),
            call.set_parameter(
                'sas_cert_subject',
                '/C=TW/O=Sercomm/OU=WInnForum CBSD Certificate/CN=P27-SCE4255W:%s',
            ),
            call.set_parameter('sas_location', 'indoor'),
            call.set_parameter('sas_height_type', 'AMSL'),
        ]
        self.assertEqual(cfg_desired.mock_calls.sort(), expected.sort())

        # Check without sas config
        service_cfg = {
            "tr069": {
                "interface": "eth1",
                "port": 48080,
                "perf_mgmt_port": 8081,
                "public_ip": "192.88.99.142",
            },
            "reboot_enodeb_on_mme_disconnected": True,
            "s1_interface": "eth1",
        }
        cfg_desired = Mock()
        cfg_init.postprocess(
            EnodebConfigBuilder.get_mconfig(),
            service_cfg, cfg_desired,
        )
        expected = [
            call.delete_parameter('EARFCNDL'),
            call.delete_parameter('DL bandwidth'),
            call.delete_parameter('UL bandwidth'),
            call.set_parameter(
                'tunnel_ref',
                'Device.IP.Interface.1.IPv4Address.1.',
            ),
            call.set_parameter('prim_src', 'GNSS'),
            call.set_parameter('carrier_agg_enable', True),
            call.set_parameter('carrier_number', 2),
            call.set_parameter('contiguous_cc', 0),
            call.set_parameter('web_ui_enable', False),
        ]
        self.assertEqual(cfg_desired.mock_calls.sort(), expected.sort())

        service_cfg['web_ui_enable_list'] = ["2006CW5000023"]

        expected = [
            call.delete_parameter('EARFCNDL'),
            call.delete_parameter('DL bandwidth'),
            call.delete_parameter('UL bandwidth'),
            call.set_parameter(
                'tunnel_ref',
                'Device.IP.Interface.1.IPv4Address.1.',
            ),
            call.set_parameter('prim_src', 'GNSS'),
            call.set_parameter('carrier_agg_enable', True),
            call.set_parameter('carrier_number', 2),
            call.set_parameter('contiguous_cc', 0),
            call.set_parameter('web_ui_enable', False),
            call.set_parameter('web_ui_enable', True),
        ]
        cfg_desired = Mock()
        cfg_init.postprocess(
            EnodebConfigBuilder.get_mconfig(),
            service_cfg, cfg_desired,
        )
        print(cfg_desired.mock_calls)
        print(type(cfg_desired.mock_calls))
        self.assertEqual(cfg_desired.mock_calls.sort(), expected.sort())
    def test_post_processing(self, sas_enabled, prim_src) -> None:
        """ Test FreedomFi One specific post processing functionality"""

        acs_state_machine = EnodebAcsStateMachineBuilder.build_acs_state_machine(
            EnodebDeviceName.FREEDOMFI_ONE)
        cfg_desired = Mock()
        acs_state_machine.device_cfg.set_parameter(
            ParameterName.SERIAL_NUMBER,
            "2006CW5000023",
        )

        cfg_init = FreedomFiOneConfigurationInitializer(acs_state_machine)
        cfg_init.postprocess(
            EnodebConfigBuilder.get_mconfig(),
            get_service_config(sas_enabled=sas_enabled, prim_src=prim_src),
            cfg_desired,
        )
        expected = [
            call.delete_parameter('EARFCNDL'),
            call.delete_parameter('DL bandwidth'),
            call.delete_parameter('UL bandwidth'),
            call.set_parameter(
                'tunnel_ref',
                value='Device.IP.Interface.1.IPv4Address.1.',
            ),
            call.set_parameter('prim_src', prim_src),
            call.set_parameter('carrier_agg_enable', value=True),
            call.set_parameter('carrier_number', value=2),
            call.set_parameter('contiguous_cc', value=0),
            call.set_parameter('web_ui_enable', value=False),
            call.set_parameter('sas_enabled', sas_enabled),
            call.set_parameter_for_object(
                param_name='PLMN 1 cell reserved',
                value=True,
                object_name='PLMN 1',
            ),
        ]
        if sas_enabled:
            expected += [
                call.set_parameter(
                    'sas_server_url',
                    'https://spectrum-connect.federatedwireless.com/v1.2/',
                ),
                call.set_parameter('sas_uid', 'M0LK4T'),
                call.set_parameter('sas_category', 'A'),
                call.set_parameter('sas_channel_type', 'GAA'),
                call.set_parameter(
                    'sas_cert_subject',
                    '/C=TW/O=Sercomm/OU=WInnForum CBSD Certificate/CN=P27-SCE4255W:%s',
                ),
                call.set_parameter('sas_location', 'indoor'),
                call.set_parameter('sas_height_type', 'AMSL'),
            ]

        cfg_desired.assert_has_calls(expected, any_order=True)

        # Check without sas config
        service_cfg = {
            "tr069": {
                "interface": "eth1",
                "port": 48080,
                "perf_mgmt_port": 8081,
                "public_ip": "192.88.99.142",
            },
            "prim_src": prim_src,
            "reboot_enodeb_on_mme_disconnected": True,
            "s1_interface": "eth1",
        }
        cfg_desired = Mock()
        cfg_init.postprocess(
            EnodebConfigBuilder.get_mconfig(),
            service_cfg,
            cfg_desired,
        )
        expected = [
            call.delete_parameter('EARFCNDL'),
            call.delete_parameter('DL bandwidth'),
            call.delete_parameter('UL bandwidth'),
            call.set_parameter(
                'tunnel_ref',
                value='Device.IP.Interface.1.IPv4Address.1.',
            ),
            call.set_parameter('sas_enabled', False),
            call.set_parameter('prim_src', prim_src),
            call.set_parameter('carrier_agg_enable', value=True),
            call.set_parameter('carrier_number', value=2),
            call.set_parameter('contiguous_cc', value=0),
            call.set_parameter('web_ui_enable', value=False),
            call.set_parameter_for_object(
                param_name='PLMN 1 cell reserved',
                value=True,
                object_name='PLMN 1',
            ),
        ]
        cfg_desired.assert_has_calls(expected, any_order=True)

        service_cfg['web_ui_enable_list'] = ["2006CW5000023"]

        expected = [
            call.delete_parameter('EARFCNDL'),
            call.delete_parameter('DL bandwidth'),
            call.delete_parameter('UL bandwidth'),
            call.set_parameter(
                'tunnel_ref',
                value='Device.IP.Interface.1.IPv4Address.1.',
            ),
            call.set_parameter('sas_enabled', False),
            call.set_parameter('prim_src', prim_src),
            call.set_parameter('carrier_agg_enable', value=True),
            call.set_parameter('carrier_number', value=2),
            call.set_parameter('contiguous_cc', value=0),
            call.set_parameter('web_ui_enable', value=False),
            call.set_parameter('web_ui_enable', value=True),
            call.set_parameter_for_object(
                param_name='PLMN 1 cell reserved',
                value=True,
                object_name='PLMN 1',
            ),
        ]
        cfg_desired = Mock()
        cfg_init.postprocess(
            EnodebConfigBuilder.get_mconfig(),
            service_cfg,
            cfg_desired,
        )
        cfg_desired.assert_has_calls(expected, any_order=True)