예제 #1
0
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---------------------------------------"
예제 #2
0
    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}")

예제 #3
0
    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
예제 #4
0
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---------------------------------------"
예제 #5
0
        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()