Exemple #1
0
 def build_grant_state_data(self,
                            frequenzy_mhz=None,
                            bandwidth_mhz=None,
                            max_eirp=None) -> CBSDStateResult:
     frequenzy_mhz = frequenzy_mhz or self.frequency_mhz
     bandwidth_mhz = bandwidth_mhz or self.bandwidth_mhz
     max_eirp = max_eirp or self.max_eirp
     frequency_hz = int(1e6) * frequenzy_mhz
     half_bandwidth_hz = int(5e5) * bandwidth_mhz
     return CBSDStateResult(
         radio_enabled=True,
         carrier_aggregation_enabled=False,
         channel=LteChannel(
             low_frequency_hz=frequency_hz - half_bandwidth_hz,
             high_frequency_hz=frequency_hz + half_bandwidth_hz,
             max_eirp_dbm_mhz=max_eirp,
         ),
         channels=[
             LteChannel(
                 low_frequency_hz=frequency_hz - half_bandwidth_hz,
                 high_frequency_hz=frequency_hz + half_bandwidth_hz,
                 max_eirp_dbm_mhz=max_eirp,
             ),
         ],
     )
    def test_tx_parameters_with_eirp_within_range(
        self,
        low_frequency_hz,
        high_frequency_hz,
        max_eirp_dbm_mhz,
        expected_bw_rbs,
        expected_earfcn,
        expected_tx_power,
    ) -> None:
        """Test that tx parameters of the enodeb are calculated correctly when eirp received from SAS
        is within acceptable range for the given bandwidth"""
        desired_config = EnodebConfiguration(FreedomFiOneTrDataModel())
        channel = LteChannel(
            low_frequency_hz=low_frequency_hz,
            high_frequency_hz=high_frequency_hz,
            max_eirp_dbm_mhz=max_eirp_dbm_mhz,
        )
        state = CBSDStateResult(
            radio_enabled=True,
            channel=channel,
        )

        ff_one_update_desired_config_from_cbsd_state(state, desired_config)
        self.assert_config_updated(
            config=desired_config,
            bandwidth=expected_bw_rbs,
            earfcn=expected_earfcn,
            tx_power=expected_tx_power,
            radio_enabled=True,
        )
Exemple #3
0
 def _build_expected_result(grant: DBGrant) -> CBSDStateResult:
     return CBSDStateResult(
         radio_enabled=True,
         carrier_aggregation_enabled=False,
         channel=LteChannel(
             low_frequency_hz=grant.low_frequency,
             high_frequency_hz=grant.high_frequency,
             max_eirp_dbm_mhz=grant.max_eirp,
         ),
         channels=[
             LteChannel(
                 low_frequency_hz=grant.low_frequency,
                 high_frequency_hz=grant.high_frequency,
                 max_eirp_dbm_mhz=grant.max_eirp,
             ),
         ],
     )
 def _build_get_state_result() -> CBSDStateResult:
     return CBSDStateResult(
         radio_enabled=True,
         carrier_aggregation_enabled=False,
         channel=LteChannel(
             low_frequency_hz=3620_000_000,
             high_frequency_hz=3630_000_000,
             max_eirp_dbm_mhz=28.0,
         ),
         channels=[
             LteChannel(
                 low_frequency_hz=3620_000_000,
                 high_frequency_hz=3630_000_000,
                 max_eirp_dbm_mhz=28.0,
             ),
         ],
     )
Exemple #5
0
    def test_dp_log_created_from_grpc_response(self, with_cbsd, fcc_id,
                                               network_id):
        # Given
        cbsd = None
        if with_cbsd:
            cbsd = self.session.query(DBCbsd).first()
        channels = [
            LteChannel(
                low_frequency_hz=1,
                high_frequency_hz=2,
                max_eirp_dbm_mhz=3,
            ),
            LteChannel(
                low_frequency_hz=4,
                high_frequency_hz=5,
                max_eirp_dbm_mhz=6,
            ),
        ]
        message = CBSDStateResult(
            channels=channels,
            radio_enabled=True,
            carrier_aggregation_enabled=True,
        )

        # When
        actual_log = make_dp_log(
            method_name=CBSD_REGISTER,
            message=message,
            cbsd=cbsd,
            serial_number=SOME_SERIAL_NUMBER,
        )

        # Then
        expected_log = DPLog(
            event_timestamp=SOME_DATE,
            cbsd_serial_number=SOME_SERIAL_NUMBER,
            fcc_id=fcc_id,
            log_from=DP,
            log_message=str(message),
            log_name='CBSDRegisterResponse',
            log_to=CBSD,
            network_id=network_id,
            response_code=None,
        )
        self.assertEqual(expected_log, actual_log)
 def get_state_with_grant() -> CBSDStateResult:
     return CBSDStateResult(
         radio_enabled=True,
         channel=LteChannel(
             low_frequency_hz=3620_000_000,
             high_frequency_hz=3630_000_000,
             max_eirp_dbm_mhz=28.0,
         ),
     )
Exemple #7
0
 def _build_expected_result(channel: DBChannel) -> CBSDStateResult:
     return CBSDStateResult(
         radio_enabled=True,
         channel=LteChannel(
             low_frequency_hz=channel.low_frequency,
             high_frequency_hz=channel.high_frequency,
             max_eirp_dbm_mhz=channel.last_used_max_eirp,
         ),
     )
Exemple #8
0
 def _build_lte_channels(self, grants: List[DBChannel]) -> List[LteChannel]:
     channels = []
     for g in grants:
         channels.append(
             LteChannel(
                 low_frequency_hz=g.low_frequency,
                 high_frequency_hz=g.high_frequency,
                 max_eirp_dbm_mhz=g.max_eirp,
             ), )
     return channels
Exemple #9
0
 def _build_result(self, channel: DBChannel):
     if not channel:
         return CBSDStateResult(radio_enabled=False)
     return CBSDStateResult(
         radio_enabled=True,
         channel=LteChannel(
             low_frequency_hz=channel.low_frequency,
             high_frequency_hz=channel.high_frequency,
             max_eirp_dbm_mhz=channel.last_used_max_eirp,
         ),
     )
Exemple #10
0
 def build_grant_state_data(self) -> CBSDStateResult:
     frequency_hz = int(1e6) * self.frequency_mhz
     half_bandwidth_hz = int(5e5) * self.bandwidth_mhz
     return CBSDStateResult(
         radio_enabled=True,
         channel=LteChannel(
             low_frequency_hz=frequency_hz - half_bandwidth_hz,
             high_frequency_hz=frequency_hz + half_bandwidth_hz,
             max_eirp_dbm_mhz=self.max_eirp,
         ),
     )
Exemple #11
0
 def test_too_low_bandwidth(self) -> None:
     config = EnodebConfiguration(BaicellsQRTBTrDataModel())
     channel = LteChannel(
         low_frequency_hz=3550_000_000,
         high_frequency_hz=3551_000_000,
         max_eirp_dbm_mhz=10,
     )
     state = CBSDStateResult(
         radio_enabled=True,
         channel=channel,
     )
     with self.assertRaises(ConfigurationError):
         qrtb_update_desired_config_from_cbsd_state(state, config)
Exemple #12
0
 def test_bandwidth_non_default_MHz(self) -> None:
     config = EnodebConfiguration(BaicellsQRTBTrDataModel())
     channel = LteChannel(
         low_frequency_hz=3690_000_000,
         high_frequency_hz=3698_000_000,
         max_eirp_dbm_mhz=1,
     )
     state = CBSDStateResult(
         radio_enabled=True,
         channel=channel,
     )
     qrtb_update_desired_config_from_cbsd_state(state, config)
     self.assert_config_updated(config, '25', 56680, 1)
Exemple #13
0
 def test_power_spectral_density_above_range(self) -> None:
     config = EnodebConfiguration(BaicellsQRTBTrDataModel())
     channel = LteChannel(
         low_frequency_hz=3550_000_000,
         high_frequency_hz=3560_000_000,
         max_eirp_dbm_mhz=38,
     )
     state = CBSDStateResult(
         radio_enabled=True,
         channel=channel,
     )
     with self.assertRaises(ConfigurationError):
         qrtb_update_desired_config_from_cbsd_state(state, config)
Exemple #14
0
 def _build_result(self, cbsd: Optional[DBCbsd] = None, session: Optional[Session] = None):
     if not cbsd:
         return CBSDStateResult(radio_enabled=False)
     grant = self._get_authorized_grant(session, cbsd)
     if not grant or cbsd.is_deleted:
         return CBSDStateResult(radio_enabled=False)
     return CBSDStateResult(
         radio_enabled=True,
         channel=LteChannel(
             low_frequency_hz=grant.low_frequency,
             high_frequency_hz=grant.high_frequency,
             max_eirp_dbm_mhz=grant.max_eirp,
         ),
     )
Exemple #15
0
 def test_tx_params_with_unsupported_bandwidths(self, low_frequency_hz,
                                                high_frequency_hz) -> None:
     """Test that tx parameters calculations raise an exception for unsupported bandwidth ranges"""
     desired_config = EnodebConfiguration(FreedomFiOneTrDataModel())
     channel = LteChannel(
         low_frequency_hz=low_frequency_hz,
         high_frequency_hz=high_frequency_hz,
         max_eirp_dbm_mhz=5,
     )
     state = CBSDStateResult(
         radio_enabled=True,
         channel=channel,
     )
     with self.assertRaises(ConfigurationError):
         ff_one_update_desired_config_from_cbsd_state(state, desired_config)
Exemple #16
0
 def test_omit_other_params_when_radio_disabled(self) -> None:
     config = EnodebConfiguration(BaicellsQRTBTrDataModel())
     channel = LteChannel(
         low_frequency_hz=3550_000_000,
         high_frequency_hz=3560_000_000,
         max_eirp_dbm_mhz=-100,
     )
     state = CBSDStateResult(
         radio_enabled=False,
         channel=channel,
     )
     qrtb_update_desired_config_from_cbsd_state(state, config)
     self.assertEqual(
         config.get_parameter(ParameterName.SAS_RADIO_ENABLE, ),
         False,
     )
 def test_tx_parameters_with_eirp_out_of_range(self,
                                               max_eirp_dbm_mhz) -> None:
     """Test that tx parameters calculations raise an exception when eirp received from SAS
     is outside of acceptable range for the given bandwidth"""
     desired_config = EnodebConfiguration(FreedomFiOneTrDataModel())
     channel = LteChannel(
         low_frequency_hz=3550_000_000,
         high_frequency_hz=3570_000_000,
         max_eirp_dbm_mhz=max_eirp_dbm_mhz,
     )
     state = CBSDStateResult(
         radio_enabled=True,
         channel=channel,
     )
     with self.assertRaises(ConfigurationError):
         ff_one_update_desired_config_from_cbsd_state(state, desired_config)
Exemple #18
0
    def test_tx_params_not_set_when_radio_disabled(self):
        """Test that tx parameters of the enodeb are not set when ADMIN_STATE is disabled on the radio"""
        desired_config = EnodebConfiguration(FreedomFiOneTrDataModel())
        channel = LteChannel(
            low_frequency_hz=3550000000,
            high_frequency_hz=3570000000,
            max_eirp_dbm_mhz=20,
        )
        state = CBSDStateResult(
            radio_enabled=False,
            channel=channel,
        )

        ff_one_update_desired_config_from_cbsd_state(state, desired_config)
        self.assertEqual(1, len(desired_config.get_parameter_names()))
        self.assertFalse(
            desired_config.get_parameter(ParameterName.ADMIN_STATE))
Exemple #19
0
    EnodebAcsStateMachineBuilder, )
from magma.enodebd.tests.test_utils.enodeb_handler import EnodebHandlerTestCase
from magma.enodebd.tests.test_utils.tr069_msg_builder import Tr069MessageBuilder
from magma.enodebd.tr069 import models
from parameterized import parameterized

SRC_CONFIG_DIR = os.path.join(
    os.environ.get('MAGMA_ROOT'),
    'lte/gateway/configs',
)

MOCK_CBSD_STATE = CBSDStateResult(
    radio_enabled=True,
    channel=LteChannel(
        low_frequency_hz=3550000000,
        high_frequency_hz=3570000000,
        max_eirp_dbm_mhz=15,
    ),
)

TEST_SAS_URL = 'test_sas_url'
TEST_SAS_CERT_SUBJECT = 'test_sas_cert_subject'


class FreedomFiOneTests(EnodebHandlerTestCase):
    """Testing FreedomfiOne state machine"""
    def _get_ff_one_read_only_param_values_resp(
        self, ) -> models.GetParameterValuesResponse:
        msg = models.GetParameterValuesResponse()
        param_val_list = []
        param_val_list.append(
from magma.enodebd.tests.test_utils.config_builder import EnodebConfigBuilder
from magma.enodebd.tests.test_utils.enb_acs_builder import (
    EnodebAcsStateMachineBuilder, )
from magma.enodebd.tests.test_utils.enodeb_handler import EnodebHandlerTestCase
from magma.enodebd.tests.test_utils.tr069_msg_builder import Tr069MessageBuilder
from magma.enodebd.tr069 import models
from parameterized import parameterized

SRC_CONFIG_DIR = os.path.join(
    os.environ.get('MAGMA_ROOT'),
    'lte/gateway/configs',
)

MOCK_CBSD_STATE = CBSDStateResult(
    radio_enabled=True,
    channel=LteChannel(
        low_frequency_hz=3550_000_000,
        high_frequency_hz=3570_000_000,
        max_eirp_dbm_mhz=15,
    ),
)


class FreedomFiOneTests(EnodebHandlerTestCase):
    def _get_freedomfi_one_read_only_param_values_response(
        self, ) -> models.GetParameterValuesResponse:
        msg = models.GetParameterValuesResponse()
        param_val_list = []
        param_val_list.append(
            Tr069MessageBuilder.get_parameter_value_struct(
                name='Device.X_000E8F_DeviceFeature.X_000E8F_NEStatus'
                '.X_000E8F_Sync_Status',