try: sys.path.append( os.path.join(os.path.dirname(__file__), '..', 'MessageTemplates', 'Util')) from loadMessage import * #required message templates initial_ue_service_request = json.loads( open('../MessageTemplates/S1AP/init_ue_servicerequest.json').read()) uecontextrelease_request = json.loads( open('../MessageTemplates/S1AP/uecontextrelease_request.json').read()) nas_service_request = json.loads( open('../MessageTemplates/NAS/service_request.json').read()) msgHierarchy, downlink_data_notification = icu.loadMessageData( "../MessageTemplates/GTP/downlink_data_notification.json") msgHierarchy, release_bearer_response = icu.loadMessageData( "../MessageTemplates/GTP/release_access_bearers_response.json") print( "\n-------------------------------------\nPaging Timeout Execution Started\n---------------------------------------" ) igniteLogger.logger.info( "\n---------------------------------------\nSend Attach Request to MME\n---------------------------------------" ) s1.sendS1ap('attach_request', initial_ue, enbues1ap_id, nas_attach_request, imsi) igniteLogger.logger.info( "\n---------------------------------------\nHSS receives AIR from MME\n---------------------------------------"
erabmodification_indication = json.loads(open('../MessageTemplates/S1AP/erabmodification_indication.json').read()) # Load NAS Symbols nas_attach_request = json.loads(open('../MessageTemplates/NAS/attach_request.json').read()) nas_authentication_response = json.loads(open('../MessageTemplates/NAS/authentication_response.json').read()) nas_authentication_failure = json.loads(open('../MessageTemplates/NAS/authentication_failure.json').read()) nas_securitymode_complete = json.loads(open('../MessageTemplates/NAS/security_mode_complete.json').read()) nas_securitymode_reject = json.loads(open('../MessageTemplates/NAS/security_mode_reject.json').read()) nas_esm_information_response = json.loads(open('../MessageTemplates/NAS/esm_information_response.json').read()) nas_attach_complete = json.loads(open('../MessageTemplates/NAS/attach_complete.json').read()) nas_detach_request = json.loads(open('../MessageTemplates/NAS/detach_request.json').read()) nas_tau_request = json.loads(open('../MessageTemplates/NAS/tau_request.json').read()) nas_tau_complete = json.loads(open('../MessageTemplates/NAS/tau_complete.json').read()) nas_tau_reject = json.loads(open('../MessageTemplates/NAS/tau_reject.json').read()) # Load GTP Symbols msg_hierarchy, create_session_response = icu.loadMessageData("../MessageTemplates/GTP/create_session_response.json") msg_hierarchy, modify_bearer_response = icu.loadMessageData("../MessageTemplates/GTP/modify_bearer_response.json") msg_hierarchy, delete_session_response = icu.loadMessageData("../MessageTemplates/GTP/delete_session_response.json") # Load Diameter Symbols protocol_aia, msg_data_aia = icu.loadMessageData("../MessageTemplates/Diameter/aia.json") protocol_ula, msg_data_ula = icu.loadMessageData("../MessageTemplates/Diameter/ula.json") protocol_clr, msg_data_clr = icu.loadMessageData("../MessageTemplates/Diameter/clr.json") protocol_pua, msg_data_pua= icu.loadMessageData("../MessageTemplates/Diameter/pua.json") igniteLogger.logger.info("Messages are loaded successfully") except Exception as e: igniteLogger.logger.error("Printing Exception : "f"{e}")
def runProxy(self): size = 5120 running_inputList = [self.sut_socket] running_outputList = [] global output global outFlag global PROTOCOLMESSAGE sut_address = (self.sut_ip, self.sut_port) running = 1 sut_diam_conn_socket = 1 while running: try: if PROTOCOLMESSAGE: if self.type_of_proxy == "diameter": igniteLogger.logger.info( "Diameter data from Test-Case being sent to SUT : " f"{PROTOCOLMESSAGE}") # Encode the message length, e_data = diameterEncoder.encodeDiameter( PROTOCOLMESSAGE["diameter"]["msg"]) PROTOCOLMESSAGE = None igniteLogger.logger.info("Encoded Diameter data: " f"{e_data[0:length]}") sut_diam_conn_socket.send(e_data[0:length]) elif self.type_of_proxy == "gtp": # Encode the message igniteLogger.logger.info( "GTP data from Test-Case being sent to SUT : " f"{PROTOCOLMESSAGE}") e_data, length = gtpEncoder.encodeGTP( PROTOCOLMESSAGE["gtpv2"]["msg"], ieLocation) PROTOCOLMESSAGE = None igniteLogger.logger.info("Encoded GTP data: " f"{e_data[0:length]}") self.sut_socket.sendto(e_data[0:length], sut_address) elif self.type_of_proxy == "s1ap": # Encode the message igniteLogger.logger.info( "S1AP data from Test-Case being sent to SUT : " f"{PROTOCOLMESSAGE}") nas_data = PROTOCOLMESSAGE["NAS-MESSAGE"] e_data = s1apEncoder.s1apEncoding( PROTOCOLMESSAGE, asn1_obj_encoder, nas_data) PROTOCOLMESSAGE = None e_byte = bytearray.fromhex(e_data) igniteLogger.logger.info("Encoded S1AP data: " f"{e_byte}") self.sut_socket.send(e_byte) input_ready, output_ready, except_ready = select.select( running_inputList, running_outputList, [], 0.0005) if input_ready: print("input ready:", input_ready) for sock in input_ready: if sock == self.sut_socket: if self.type_of_proxy == "diameter": print(self.sut_socket) sut_diam_conn_socket, sut_address = self.sut_socket.accept( ) sut_diam_conn_socket.setblocking(0) running_inputList.append(sut_diam_conn_socket) elif (self.type_of_proxy == "gtp") or (self.type_of_proxy == "s1ap"): sut_data = self.sut_socket.recv(size) if sut_data: if self.type_of_proxy == "s1ap": igniteLogger.logger.info( "S1AP Data from SUT to Test-Case: " f"{hexlify(sut_data).decode('utf-8')}" ) decoded_msg = s1apDecoder.Decoding( hexlify(sut_data).decode("utf-8"), asn1_obj_decoder) msg = list(decoded_msg) decoded_msg = {} decoded_msg['S1AP-PDU'] = msg igniteLogger.logger.info( "Decoded S1AP data: " f"{decoded_msg}") elif self.type_of_proxy == "gtp": igniteLogger.logger.info( "GTP Data from SUT to Test-Case: " f"{hexlify(sut_data).decode('utf-8')}" ) decoded_msg, length = gtpDecoder.decodeGTP( sut_data, self.ieLocation) igniteLogger.logger.info( "Decoded GTP data: " f"{decoded_msg}") msg_buf = json.dumps(decoded_msg) output.append(msg_buf) outFlag = True elif sock == sut_diam_conn_socket: data = sut_diam_conn_socket.recv(size) if data: length, msg = diameterDecoder.decodeDiameter( data) if du.get(msg, "diameter", "command-code") == 257: igniteLogger.logger.info( "Received CER Diameter Packet with command-code : 257" ) igniteLogger.logger.info( "The data from diamSocket : " f"{hexlify(data)}") igniteLogger.logger.info( f"The data to diamSocket : f{msg}") igniteLogger.logger.info( "Send CEA Diameter Packet with command-code: 257" ) msg_heirarchy, msg_data = igniteCommonUtil.loadMessageData( "../../../Test/MessageTemplates/Diameter/cea.json" ) origin_state_id = du.get( msg, "diameter", "origin-state-id") hbh = du.get(msg, "diameter", "hop-by-hop-identifier") ete = du.get(msg, "diameter", "end-to-end-identifier") msg_data = du.replace( msg_data, "diameter", "hop-by-hop-identifier", hbh) msg_data = du.replace( msg_data, "diameter", "end-to-end-identifier", ete) msg_data = du.replace( msg_data, "diameter", "origin-state-id", origin_state_id) msg_data = du.replace( msg_data, "diameter", "host-ip-address", self.ignite_ip) msg_data = du.replace( msg_data, "diameter", "origin-host", config_file["diameter"]["ignite_host"]) msg_data = du.replace( msg_data, "diameter", "origin-realm", config_file["diameter"] ["ignite_realm"]) igniteLogger.logger.info("The msg_data : " f"{msg_data}") self.sendDiamDataToSut( sut_diam_conn_socket, msg_data) elif du.get(msg, "diameter", "command-code") == 280: igniteLogger.logger.info( "Received CER Diameter Packet with command-code : 280" ) igniteLogger.logger.info( "The data from diamSocket : " f"{hexlify(data)}") igniteLogger.logger.info( f"The data to diamSocket : f{msg}") igniteLogger.logger.info( "Send CEA Diameter Packet with command-code: 280" ) msg_heirarchy, msg_data = igniteCommonUtil.loadMessageData( "../../../Test/MessageTemplates/Diameter/dwa.json" ) hbh = du.get(msg, "diameter", "hop-by-hop-identifier") ete = du.get(msg, "diameter", "end-to-end-identifier") msg_data = du.replace( msg_data, "diameter", "hop-by-hop-identifier", hbh) msg_data = du.replace( msg_data, "diameter", "end-to-end-identifier", ete) msg_data = du.replace( msg_data, "diameter", "origin-host", config_file["diameter"]["ignite_host"]) msg_data = du.replace( msg_data, "diameter", "origin-realm", config_file["diameter"] ["ignite_realm"]) igniteLogger.logger.info("The msg_data : " f"{msg_data}") self.sendDiamDataToSut( sut_diam_conn_socket, msg_data) else: igniteLogger.logger.info( "Diameter Data from SUT sent to Test-Case: " f"{hexlify(data)}") length, decoded_msg = diameterDecoder.decodeDiameter( igniteCommonUtil. convertBytesToIntArray(hexlify(data))) data = None igniteLogger.logger.info( "Decoded Diameter Data: " f"{decoded_msg}") msg_buf = json.dumps(decoded_msg) output.append(msg_buf) outFlag = True else: continue except Exception as e: if PROTOCOLMESSAGE != None: PROTOCOLMESSAGE = None if sut_diam_conn_socket in running_inputList: running_inputList.remove(sut_diam_conn_socket) sut_diam_conn_socket.close() igniteLogger.logger.info("Printing exception : " f"{e}") except KeyboardInterrupt: igniteLogger.logger.error( "keyboard interrupt, closing Sockets") self.sut_socket.close() except: continue
sys.path.append( os.path.join(os.path.dirname(__file__), '..', 'ROBOTCs', 'keywords', 'systemkeywords')) import dictOperations as do clr_flag = False ssh_client = None try: sys.path.append( os.path.join(os.path.dirname(__file__), '..', 'MessageTemplates', 'Util')) from loadMessage import * protocol_ula_failure, msg_data_ula_failure = icu.loadMessageData( "../MessageTemplates/Diameter/ula_exp_failure.json") command = "export LD_LIBRARY_PATH=" + mme_lib_path + " && " + mme_grpc_client_path + "/mme-grpc-client mme-app show procedure-stats" ssh_client = su.sshConnect(mmeIP, mme_username, mme_password, "ssh-password", timeout=10, port=None) proc_stat = su.executeCommand(command, ssh_client) ue_count_before_attach = int( do.splitProcStats(proc_stat, stats_type["subs_attached"])) print( "\n-------------------------------------\nULA Exp Result Code Failure Execution Started\n---------------------------------------"
do.splitProcStats(proc_stat, stats_type["processed_ula"])) num_of_del_session_resp = int( do.splitProcStats(proc_stat, stats_type["del_session_resp"])) num_of_handled_esm_info_resp = int( do.splitProcStats(proc_stat, stats_type["esm_info_resp"])) num_of_processed_sec_mode_resp = int( do.splitProcStats(proc_stat, stats_type["processed_sec_mode"])) num_of_processed_init_ctxt_resp = int( do.splitProcStats(proc_stat, stats_type["init_ctxt_resp"])) num_of_processed_purge_resp = int( do.splitProcStats(proc_stat, stats_type["purge_resp"])) # required message templates uecontextrelease_request = json.loads( open('../MessageTemplates/S1AP/uecontextrelease_request.json').read()) msgHierarchy, release_bearer_response = icu.loadMessageData( "../MessageTemplates/GTP/release_access_bearers_response.json") print( "\n-------------------------------------\nIMSI Attach-TAU-Detach Execution Started\n---------------------------------------" ) igniteLogger.logger.info( "\n---------------------------------------\nSend Attach Request to MME\n---------------------------------------" ) s1.sendS1ap('attach_request', initial_ue, enbues1ap_id, nas_attach_request, imsi) igniteLogger.logger.info( "\n---------------------------------------\nHSS receives AIR from MME\n---------------------------------------" ) ds.receiveS6aMsg()