class TestActivateDeactivateMultipleDedicated(unittest.TestCase): def setUp(self): self._s1ap_wrapper = s1ap_wrapper.TestWrapper() self._spgw_util = SpgwUtil() def tearDown(self): self._s1ap_wrapper.cleanup() def test_activate_deactivate_multiplededicated(self): """ attach/detach + multiple dedicated bearer test with a single UE """ num_dedicated_bearers = 10 bearer_ids = [] self._s1ap_wrapper.configUEDevice(1) req = self._s1ap_wrapper.ue_req print( "********************** Running End to End attach for UE id", req.ue_id, ) # Now actually complete the attach self._s1ap_wrapper._s1_util.attach( req.ue_id, s1ap_types.tfwCmd.UE_END_TO_END_ATTACH_REQUEST, s1ap_types.tfwCmd.UE_ATTACH_ACCEPT_IND, s1ap_types.ueAttachAccept_t, ) # Wait on EMM Information from MME self._s1ap_wrapper._s1_util.receive_emm_info() time.sleep(2) for i in range(num_dedicated_bearers): print( "********************** Adding dedicated bearer to IMSI", "".join([str(i) for i in req.imsi]), ) self._spgw_util.create_bearer( "IMSI" + "".join([str(i) for i in req.imsi]), 5, rule_id=str(i) ) response = self._s1ap_wrapper.s1_util.get_response() self.assertEqual( response.msg_type, s1ap_types.tfwCmd.UE_ACT_DED_BER_REQ.value ) act_ded_ber_ctxt_req = response.cast( s1ap_types.UeActDedBearCtxtReq_t ) self._s1ap_wrapper.sendActDedicatedBearerAccept( req.ue_id, act_ded_ber_ctxt_req.bearerId ) bearer_ids.append(act_ded_ber_ctxt_req.bearerId) print( "********************** Added dedicated bearer with", "with bearer id", act_ded_ber_ctxt_req.bearerId, ) time.sleep(2) print( "********************** Deleting dedicated bearer for IMSI", "".join([str(i) for i in req.imsi]), ) self._spgw_util.delete_bearers( "IMSI" + "".join([str(i) for i in req.imsi]), 5, bearer_ids ) for i in range(num_dedicated_bearers): response = self._s1ap_wrapper.s1_util.get_response() self.assertEqual( response.msg_type, s1ap_types.tfwCmd.UE_DEACTIVATE_BER_REQ.value, ) print("******************* Received deactivate eps bearer context") self._s1ap_wrapper.sendDeactDedicatedBearerAccept( req.ue_id, bearer_ids[i] ) print( "********************** Deleted dedicated bearer with" "with bearer id", bearer_ids[i], ) time.sleep(2) print("********************** Running UE detach for UE id ", req.ue_id) # Now detach the UE self._s1ap_wrapper.s1_util.detach( req.ue_id, s1ap_types.ueDetachType_t.UE_NORMAL_DETACH.value )
class TestActivateDeactivateMultipleDedicated(unittest.TestCase): """attach/detach + multiple dedicated bearer test with a single UE""" def setUp(self): """Initialize""" self._s1ap_wrapper = s1ap_wrapper.TestWrapper() self._spgw_util = SpgwUtil() def tearDown(self): """Cleanup""" self._s1ap_wrapper.cleanup() def test_activate_deactivate_multiple_dedicated(self): """attach/detach + multiple dedicated bearer test with a single UE""" num_dedicated_bearers = 10 bearer_ids = [] flow_lists = [] self._s1ap_wrapper.configUEDevice(1) req = self._s1ap_wrapper.ue_req print( "********************** Running End to End attach for UE id", req.ue_id, ) # Now actually complete the attach attach = self._s1ap_wrapper._s1_util.attach( req.ue_id, s1ap_types.tfwCmd.UE_END_TO_END_ATTACH_REQUEST, s1ap_types.tfwCmd.UE_ATTACH_ACCEPT_IND, s1ap_types.ueAttachAccept_t, ) addr = attach.esmInfo.pAddr.addrInfo default_ip = ipaddress.ip_address(bytes(addr[:4])) # Wait on EMM Information from MME self._s1ap_wrapper._s1_util.receive_emm_info() time.sleep(2) for i in range(num_dedicated_bearers): print( "********************** Adding dedicated bearer to IMSI", "".join([str(i) for i in req.imsi]), ) flow_lists.append( self._spgw_util.create_default_ipv4_flows(port_idx=i), ) self._spgw_util.create_bearer( "IMSI" + "".join([str(i) for i in req.imsi]), attach.esmInfo.epsBearerId, flow_lists[i], rule_id=str(i), ) response = self._s1ap_wrapper.s1_util.get_response() self.assertEqual( response.msg_type, s1ap_types.tfwCmd.UE_ACT_DED_BER_REQ.value, ) act_ded_ber_ctxt_req = response.cast( s1ap_types.UeActDedBearCtxtReq_t, ) self._s1ap_wrapper.sendActDedicatedBearerAccept( req.ue_id, act_ded_ber_ctxt_req.bearerId, ) bearer_ids.append(act_ded_ber_ctxt_req.bearerId) print( "********************** Added dedicated bearer with", "with bearer id", act_ded_ber_ctxt_req.bearerId, ) # Verify if flow rules are created print("Sleeping for 5 seconds") time.sleep(5) # flow_lists for 10 dedicated bearers dl_flow_rules = {default_ip: flow_lists} # 1 default UL flow + 10 dedicated bearer UL flows num_ul_flows = 11 self._s1ap_wrapper.s1_util.verify_flow_rules( num_ul_flows, dl_flow_rules, ) print( "********************** Deleting dedicated bearer for IMSI", "".join([str(itr) for itr in req.imsi]), ) self._spgw_util.delete_bearers( "IMSI" + "".join([str(itr) for itr in req.imsi]), attach.esmInfo.epsBearerId, bearer_ids, ) for i in range(num_dedicated_bearers): time.sleep(0.1) response = self._s1ap_wrapper.s1_util.get_response() self.assertEqual( response.msg_type, s1ap_types.tfwCmd.UE_DEACTIVATE_BER_REQ.value, ) print("******************* Received deactivate eps bearer context") self._s1ap_wrapper.sendDeactDedicatedBearerAccept( req.ue_id, bearer_ids[i], ) print( "********************** Deleted dedicated bearer with " "bearer id", bearer_ids[i], ) # Verify if flow rules are deleted for dedicated bearers print("Sleeping for 5 seconds") time.sleep(5) dl_flow_rules = {default_ip: []} # 1 default UL flow num_ul_flows = 1 self._s1ap_wrapper.s1_util.verify_flow_rules( num_ul_flows, dl_flow_rules, ) print("********************** Running UE detach for UE id ", req.ue_id) # Now detach the UE self._s1ap_wrapper.s1_util.detach( req.ue_id, s1ap_types.ueDetachType_t.UE_NORMAL_DETACH.value, ) # Verify that all UL/DL flows are deleted self._s1ap_wrapper.s1_util.verify_flow_rules_deletion()