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
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")
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
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
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)