示例#1
0
 def SanityNICCheck(self, request, context):
     """
     Check either NIC PCI ids are Correctly placed or not
     """
     if self.tgen_check != 0:
         return vsperf_pb2.StatusReply(message="TGen-Host is not Connected [!]" \
                                                "\nMake sure to establish connection with" \
                                                " TGen-Host.")
     trex_conf_path = "cat /etc/trex_cfg.yaml | grep interfaces"
     trex_conf_read = self.tgen_client.execute(trex_conf_path)[1]
     nic_pid_ids_list = [
         trex_conf_read.split("\"")[1],
         trex_conf_read.split("\"")[3]
     ]
     trex_nic_pic_id_cmd = "lspci | egrep -i --color 'network|ethernet'"
     trex_nic_pic_id = str(
         self.tgen_client.execute(trex_nic_pic_id_cmd)[1]).split('\n')
     acheck = 0
     for k in trex_nic_pic_id:
         for j in nic_pid_ids_list:
             if j in k:
                 acheck += 1
             else:
                 pass
     if acheck == 2:
         self.sanity_check_done_list.append(int(3))
         return vsperf_pb2.StatusReply(message="Both the NIC PCI Ids are Correctly "\
             "configured on TGen-Host..............")
     return vsperf_pb2.StatusReply(message="You configured NIC PCI Ids Wrong in "\
             "TGen-Host............................[OK]\n")
示例#2
0
 def VsperfInstall(self, request, context):
     """
     Handle VSPERF install command from client
     """
     # print("Installing VSPERF")
     if self.dut_check != 0:
         return vsperf_pb2.StatusReply(message="DUT-Host is not Connected [!]" \
                                                "\nMake sure to establish connection with" \
                                                " DUT-Host.")
     vsperf_check_cmd = "source ~/vsperfenv/bin/activate ; cd vswitchperf* && ./vsperf --help"
     vsperf_check_cmd_result = str(self.client.execute(vsperf_check_cmd)[1])
     vsperf_verify_list = [
         'usage',
         'positional arguments',
         'optional arguments',
         'test selection options',
         'test behavior options']
     for idx, i in enumerate(vsperf_verify_list, start=1):
         if str(i) in vsperf_check_cmd_result:
             if idx < 5:
                 continue
             elif idx == 5:
                 return vsperf_pb2.StatusReply(
                     message="VSPERF is Already Installed on DUT-Host")
     self.install_vsperf()
     return vsperf_pb2.StatusReply(message="VSPERF Successfully Installed DUT-Host")
示例#3
0
 def SanityVSPERFCheck(self, request, context):
     """
     We have to make sure that VSPERF install correctly
     """
     if self.dut_check != 0:
         return vsperf_pb2.StatusReply(message="DUT-Host is not Connected [!]" \
                                                "\nMake sure to establish connection with" \
                                                " DUT-Host.")
     vsperf_check_command = "source ~/vsperfenv/bin/activate ; cd vswitchperf* && "
     vsperf_check_command += "./vsperf --help"
     vsperf_check_cmd_result = str(
         self.client.execute(vsperf_check_command)[1])
     vsperf_verify_list = [
         'usage', 'positional arguments', 'optional arguments',
         'test selection options', 'test behavior options'
     ]
     for idx, i in enumerate(vsperf_verify_list, start=1):
         if str(i) in vsperf_check_cmd_result:
             if idx < 5:
                 continue
             elif idx == 5:
                 self.sanity_check_done_list.append(int(1))
                 return vsperf_pb2.StatusReply(
                     message="VSPERF Installed Correctly and Working fine")
         return vsperf_pb2.StatusReply(message="VSPERF Does Not Installed Correctly ," \
                                       "INSTALL IT AGAIN..............[Critical]")
     return vsperf_pb2.StatusReply(message="VSPERF Does Not Installed Correctly ," \
                                   "INSTALL IT AGAIN..............[Critical]")
示例#4
0
 def SanityVNFpath(self, request, context):
     """
     Check if VNF image available on the mention path in Test Config File
     """
     # fetch the VNF path we placed in vsperf.conf file
     if self.dut_check != 0:
         return vsperf_pb2.StatusReply(message="DUT-Host is not Connected [!]" \
                                                "\nMake sure to establish connection with" \
                                                " DUT-Host.")
     if self.test_upload_check == 0:
         return vsperf_pb2.StatusReply(message="Test File is not uploaded yet [!] " \
                      "\nUpload Test Configuration File.")
     vsperf_conf_path = 'cat ~/{} | grep "GUEST_IMAGE"'.format(
         self.conffile)
     vsperf_conf_read = self.client.execute(vsperf_conf_path)[1]
     vnf_image_path = vsperf_conf_read.split("'")[1]
     vnf_path_check_cmd = "find {}".format(vnf_image_path)
     vfn_path_check_result = str(self.client.execute(vnf_path_check_cmd)[1])
     if vnf_image_path in vfn_path_check_result:
         self.sanity_check_done_list.append(int(2))
         return vsperf_pb2.StatusReply(message="Test Configratuion file has Correct "\
             "VNF path information on DUT-Host.....[OK]")
     return vsperf_pb2.StatusReply(message='Test Configuration file has wrongly placed VNF '\
         'path information \n'\
         'VNF is not available on DUT-Host................................[Failed]\n ')
示例#5
0
 def SanityCollectdCheck(self, request, context):
     """
     Check and verify collectd is able to run and start properly
     """
     if self.dut_check != 0:
         return vsperf_pb2.StatusReply(message="DUT-Host is not Connected [!]" \
                                                "\nMake sure to establish connection with" \
                                                " DUT-Host.")
     check_collectd_cmd = "find /opt -maxdepth 1 -name 'collectd'"
     check_test_result = str(self.client.execute(check_collectd_cmd)[1])
     if "collectd" in check_test_result:
         check_collectd_run_cmd = "echo {} | sudo -S service collectd start".format(
             self.pwd)
         self.client.run(check_collectd_run_cmd, pty=True)
         check_collectd_status_cmd = "ps aux | grep collectd"
         check_collectd_status = str(
             self.client.execute(check_collectd_status_cmd)[1])
         if "/sbin/collectd" in check_collectd_status:
             self.sanity_check_done_list.append(int(5))
             return vsperf_pb2.StatusReply(
                 message="Collectd is working Fine")
         return vsperf_pb2.StatusReply(message="Collectd Fail to Start, \
                                                Install correctly before running Test"
                                       )
     return vsperf_pb2.StatusReply(message="Collectd is not installed yet.")
示例#6
0
 def RemoveVsperf(self, request, context):
     """
     Handle VSPERF removal command from client
     """
     if self.dut_check != 0:
         return vsperf_pb2.StatusReply(message="DUT-Host is not Connected [!]" \
                                                "\nMake sure to establish connection with" \
                                                " DUT-Host.")
     self.vsperf_remove()
     return vsperf_pb2.StatusReply(message="Successfully VSPERF Removed")
示例#7
0
 def CollectdInstall(self, request, context):
     """
     Install Collectd on DUT
     """
     if self.dut_check != 0:
         return vsperf_pb2.StatusReply(message="DUT-Host is not Connected [!]" \
                                                "\nMake sure to establish connection with" \
                                                " DUT-Host.")
     self.install_collectd()
     return vsperf_pb2.StatusReply(
         message="Collectd Successfully Installed on DUT-Host")
示例#8
0
 def RemoveCollectd(self, request, context):
     """
     Handle collectd removal command from client
     """
     if self.dut_check != 0:
         return vsperf_pb2.StatusReply(message="DUT-Host is not Connected [!]" \
                                                "\nMake sure to establish connection with" \
                                                " DUT-Host.")
     self.collectd_remove()
     return vsperf_pb2.StatusReply(
         message="Successfully Collectd Removed From DUT-Host")
示例#9
0
 def cpu_allocation_check(self, list1, list2):
     """compare to cpu_map list"""
     if len(list1) >= len(list2):
         if all(elem in list1 for elem in list2):
             self.sanity_check_done_list.append(int(4))
             return vsperf_pb2.StatusReply(message="CPU allocation properly done on" \
                 " DUT-Host.................[OK]")
         return vsperf_pb2.StatusReply(message="CPU allocation not done properly on " \
             "DUT-Host............[Failed]")
     return vsperf_pb2.StatusReply(message="CPU allocation not done properly on" \
         " DUT-Host............[Failed]")
示例#10
0
 def StartBeats(self, request, context):
     """
     Start fileBeats on DUT
     """
     if self.dut_check != 0:
         return vsperf_pb2.StatusReply(message="DUT-Host is not Connected [!]" \
                                                "\nMake sure to establish connection with" \
                                                " DUT-Host.")
     run_cmd = "echo '{}' | sudo -S service filebeat start".format(self.pwd)
     #run_cmd = "sudo service filebeat start"
     self.client.run(run_cmd, pty=True)
     return vsperf_pb2.StatusReply(message="Beats are started on DUT-Host")
示例#11
0
 def GetVSPERFConffromDUT(self, request, context):
     """
     This will extract the vsperf test configuration from DUT-Host
     """
     if self.dut_check != 0:
         return vsperf_pb2.StatusReply(message="DUT-Host is not Connected [!]" \
                                                "\nMake sure to establish connection with" \
                                                " DUT-Host.")
     if self.test_upload_check == 0:
         return vsperf_pb2.StatusReply(message="Test File is not uploaded yet [!] " \
                      "\nUpload Test Configuration File.")
     read_cmd = "cat ~/{}".format(self.conffile)
     read_cmd_output = str(self.client.execute(read_cmd)[1])
     return vsperf_pb2.StatusReply(message="{}".format(read_cmd_output))
示例#12
0
 def StartTGen(self, request, context):
     """
     Handle start-Tgen command from client
     """
     if self.tgen_check != 0:
         return vsperf_pb2.StatusReply(message="TGen-Host is not Connected [!]" \
                                                "\nMake sure to establish connection with" \
                                                " TGen-Host.")
     self.trex_params = request.params
     run_cmd = "cd trex_2.37/scripts ; "
     run_cmd += "./t-rex-64 "
     run_cmd += self.trex_params
     self.tgen_client.send_command(run_cmd)
     self.tgen_start_check = 1
     return vsperf_pb2.StatusReply(message="T-Rex Successfully running...")
示例#13
0
 def TestStatus(self, request, context):
     """
     Chechk for the test status after performing test
     """
     if self.dut_check != 0:
         return vsperf_pb2.StatusReply(message="DUT-Host is not Connected [!]" \
                                                "\nMake sure to establish connection with" \
                                                " DUT-Host.")
     if self.tests_run_check != 1:
         return vsperf_pb2.StatusReply(message="No test have ran yet. [!]")
     testtype_list = request.testtype.split(",")
     test_success = []
     test_failed = []
     testtype_list_len = len(testtype_list)
     for test in testtype_list:
         #latest_result_cmd = "find /tmp -mindepth 1 -type d -cmin -5 -printf '%f'"
         test_result_dir = str((self.client.\
                           execute("find /tmp -mindepth 1 -type d -cmin -5 -printf '%f'")[1]).\
                           split('find')[0])
         #test_date_cmd = "date +%F"
         test_date = str(self.client.execute("date +%F")[1]).replace(
             "\n", "")
         if test_date in test_result_dir:
             testcase_check_cmd = "cd /tmp && cd `ls -t | grep results | head -{} | tail -1`".\
                                   format(testtype_list_len)
             testcase_check_cmd += " && find . -maxdepth 1 -name '*{}*'".\
                                     format(test)
             testcase_check_output = str(self.client.execute(testcase_check_cmd)[1]).\
                                     split('\n', 2)
             check = 0
             for i in testcase_check_output:
                 if (".csv" in i) or (".md" in i) or (".rst" in i):
                     check += 1
             if check == 3:
                 test_success.append(test)
             else:
                 test_failed.append(test)
             testtype_list_len -= 1
     if len(testtype_list) == len(test_success):
         return vsperf_pb2.StatusReply(message="All Test Successfully Completed on DUT-Host" \
                                       "\nResults... [OK]")
     if not test_success:
         return vsperf_pb2.StatusReply(
             message="All Test Failed on DUT-Host \nResults... [Failed]")
     return vsperf_pb2.StatusReply(message="Only {} Test failed   Results ... [Failed]\n"\
             "All other Test Successfully Completed on DUT-Host     Results... [OK] ".\
             format(test_failed))
示例#14
0
 def DUTvsperfTestAvailability(self, request, context):
     """
     Before running test we have to make sure there is no other test running
     """
     if self.dut_check != 0:
         return vsperf_pb2.StatusReply(message="DUT-Host is not Connected [!]" \
                                                "\nMake sure to establish connection with" \
                                                " DUT-Host.")
     vsperf_ava_cmd = "ps -ef | grep -v grep | grep ./vsperf | awk '{print $2}'"
     vsperf_ava_result = len(
         (self.client.execute(vsperf_ava_cmd)[1]).split("\n"))
     if vsperf_ava_result == 1:
         return vsperf_pb2.StatusReply(message="DUT-Host is available for performing" \
                                               " VSPERF Test\nYou can perform Test!")
     return vsperf_pb2.StatusReply(
         message="DUT-Host is busy right now, Wait for some time\n\
         Always Check availability before Running Test!")
示例#15
0
 def RemoveUploadedConfig(self, request, context):
     """
     Handle all configuration file removal command from client
     """
     if self.dut_check != 0:
         return vsperf_pb2.StatusReply(message="DUT-Host is not Connected [!]" \
                                                "\nMake sure to establish connection with" \
                                                " DUT-Host.")
     if self.tgen_check != 0:
         return vsperf_pb2.StatusReply(message="TGen-Host is not Connected [!]" \
                                                "\nMake sure to establish connection with" \
                                                " TGen-Host.")
     if self.test_upload_check == 0:
         return vsperf_pb2.StatusReply(message="Test File is not uploaded yet [!] " \
                      "\nUpload Test Configuration File.")
     self.remove_uploaded_config()
     return vsperf_pb2.StatusReply(
         message="Successfully All Uploaded Config Files Removed")
示例#16
0
 def RemoveEverything(self, request, context):
     """
     Handle of removing everything from DUT command from client
     """
     if self.dut_check != 0:
         return vsperf_pb2.StatusReply(message="DUT-Host is not Connected [!]" \
                                                "\nMake sure to establish connection with" \
                                                " DUT-Host.")
     if self.tgen_check != 0:
         return vsperf_pb2.StatusReply(message="TGen-Host is not Connected [!]" \
                                                "\nMake sure to establish connection with" \
                                                " TGen-Host.")
     self.vsperf_remove()
     self.result_folder_remove()
     self.remove_uploaded_config()
     self.collectd_remove()
     return vsperf_pb2.StatusReply(
         message="Successfully Everything Removed From DUT-Host")
示例#17
0
    def SanityCPUAllocationCheck(self, request, context):
        """
        check for cpu-allocation on DUT-Host
        """
        if self.dut_check != 0:
            return vsperf_pb2.StatusReply(message="DUT-Host is not Connected [!]" \
                                                   "\nMake sure to establish connection with" \
                                                   " DUT-Host.")
        if self.test_upload_check == 0:
            return vsperf_pb2.StatusReply(message="Test File is not uploaded yet [!] " \
                         "\nUpload Test Configuration File.")
        read_setting_cmd = "source vsperfenv/bin/activate ; cd vswitchperf* && "
        read_setting_cmd += './vsperf --list-settings'
        default_vsperf_settings = ast.literal_eval(
            str(self.client.execute(read_setting_cmd)[1]))
        default_cpu_map = default_vsperf_settings["VSWITCH_VHOST_CPU_MAP"]
        default_vswitch_pmd_cpu_mask = str(
            default_vsperf_settings["VSWITCH_PMD_CPU_MASK"])
        default_vswitch_vhost_cpu_map = [str(x) for x in default_cpu_map]
        vswitch_pmd_cpu_mask = self.variable_from_test_config(
            "VSWITCH_PMD_CPU_MASK")
        vswitch_cpu_map = (
            self.variable_from_test_config("VSWITCH_VHOST_CPU_MAP"))
        vswitch_vhost_cpu_map = 0

        if vswitch_cpu_map != 0:
            vswitch_vhost_cpu_map = [
                str(x) for x in ast.literal_eval(vswitch_cpu_map)
            ]

        if vswitch_pmd_cpu_mask == 0 and vswitch_vhost_cpu_map == 0:
            self.sanity_check_done_list.append(int(4))
            return vsperf_pb2.StatusReply(message="CPU allocation Check Done,"\
                "\nNo vswitch_pmd_cpu_mask or vswitch_vhost_cpu_map assign in test " \
                "configuration file.\nUsing Default Settings..[OK]\n")
        if vswitch_pmd_cpu_mask != 0 and vswitch_vhost_cpu_map == 0:
            core_id = self.cpumask2coreids(vswitch_pmd_cpu_mask)
            return self.cpu_allocation_check(default_vswitch_vhost_cpu_map,
                                             core_id)
        if vswitch_pmd_cpu_mask == 0 and vswitch_vhost_cpu_map != 0:
            core_id_1 = self.cpumask2coreids(default_vswitch_pmd_cpu_mask)
            return self.cpu_allocation_check(vswitch_vhost_cpu_map, core_id_1)
        core_id_2 = self.cpumask2coreids(vswitch_pmd_cpu_mask)
        return self.cpu_allocation_check(vswitch_vhost_cpu_map, core_id_2)
示例#18
0
    def TerminateVsperf(self, request, context):
        """
        Terminate the VSPERF and kill processes
        """
        if self.dut_check != 0:
            return vsperf_pb2.StatusReply(message="DUT-Host is not Connected [!]" \
                                                   "\nMake sure to establish connection with" \
                                                   " DUT-Host.")
        stress_kill_cmd = "pkill stress"
        python3_kill_cmd = "pkill python3"
        qemu_kill_cmd = "killall -9 qemu-system-x86_64"
        self.client.send_command(stress_kill_cmd)
        self.client.send_command(python3_kill_cmd)
        self.client.send_command(qemu_kill_cmd)

        # sometimes qemu resists to terminate, so wait a bit and kill it again
        qemu_check_cmd = "pgrep qemu-system-x86_64"
        qemu_cmd_response = self.client.execute(qemu_check_cmd)[1]

        if qemu_cmd_response != '':
            time.sleep(5)
            self.client.send_command(qemu_kill_cmds)
            time.sleep(5)

        ovs_kill_cmd = "pkill ovs-vswitchd"
        ovsdb_kill_cmd = "pkill ovsdb-server"
        vppctl_kill_cmd = "pkill vppctl"
        vpp_kill_cmd = "pkill vpp"
        vpp_cmd = "pkill -9".format(self.pwd)

        self.client.send_command(ovs_kill_cmd)
        time.sleep(1)
        self.client.send_command(ovsdb_kill_cmd)
        time.sleep(1)
        self.client.send_command(vppctl_kill_cmd)
        time.sleep(1)
        self.client.send_command(vpp_kill_cmd)
        time.sleep(1)
        self.client.send_command(vpp_cmd)
        time.sleep(1)

        return vsperf_pb2.StatusReply(
            message="All the VSPERF related process terminated successfully")
示例#19
0
 def TGenHostConnect(self, request, context):
     """
     Connect to TGen-Node
     """
     self.tgen = request.ip
     self.tgen_user = request.uname
     self.tgenpwd = request.pwd
     self.tgen_setup()
     check_tgen_cmd = "ls"
     self.tgen_check = int(self.tgen_client.execute(check_tgen_cmd)[0])
     return vsperf_pb2.StatusReply(message="Successfully Connected")
示例#20
0
 def HostConnect(self, request, context):
     """
     Handle host connectivity command from client
     """
     self.dut = request.ip
     self.user = request.uname
     self.pwd = request.pwd
     self.setup()
     check_cmd = "ls -l"
     self.dut_check = int(self.client.execute(check_cmd)[0])
     return vsperf_pb2.StatusReply(message="Successfully Connected")
示例#21
0
    def CheckDependecies(self, request, context):
        """
        Check and Install required packages on DUT
        """
        if self.dut_check != 0:
            return vsperf_pb2.StatusReply(message="DUT-Host is not Connected [!]" \
                                                   "\nMake sure to establish connection with" \
                                                   " DUT-Host.")
        packages = ['python34-tkinter', 'sysstat', 'bc']
        for pkg in packages:
            # pkg_check_cmd = "dpkg -s {}".format(pkg) for ubuntu
            pkg_check_cmd = "rpm -q {}".format(pkg)
            pkg_cmd_response = self.client.execute(pkg_check_cmd)[0]
            if pkg_cmd_response == 1:
                install_pkg_cmd = "echo '{}' | sudo -S yum install -y {}".format(
                    self.pwd, pkg)
                #install_pkg_cmd = "echo '{}' | sudo -S apt-get install -y {}".format(self.pwd,pkg)
                self.client.run(install_pkg_cmd, pty=True)

        return vsperf_pb2.StatusReply(message="Python34-tkinter, sysstat and bc Packages"\
                                    "are now Installed")
示例#22
0
 def StartTest(self, request, context):
     """
     Handle start-test command from client
     """
     if self.dut_check != 0:
         return vsperf_pb2.StatusReply(message="DUT-Host is not Connected [!]" \
                                                "\nMake sure to establish connection with" \
                                                " DUT-Host.")
     sanity_dict = {
         1: "Check installed VSPERF",
         2: "Check Test Config's VNF path is available on DUT-Host",
         3: "Check NIC PCIs is available on Traffic Generator",
         4: "Check CPU allocation on DUT-Host",
         5: "Check installed Collectd",
         6: "Check Connection between DUT-Host and Traffic Generator Host"
     }
     sanity_dict_option_list = list(sanity_dict.keys())
     remaining_sanity = [item for item in sanity_dict_option_list if item not in \
                         self.sanity_check_done_list]
     if remaining_sanity:
         sanity_return_msg = ""
         for i_sanity in remaining_sanity:
             sanity_return_msg += sanity_dict[i_sanity] + "\n"
         return vsperf_pb2.StatusReply(message="The following sanity checks are either not"\
                 " performed yet or Does not satisfy test requirements" \
                 "\n{}".format(sanity_return_msg))
     if self.test_upload_check == 0:
         return vsperf_pb2.StatusReply(message="Test File is not uploaded yet [!] " \
                      "\nUpload Test Configuration File.")
     if self.tgen_start_check != 1:
         return vsperf_pb2.StatusReply(
             message="Traffic Generator has not started yet [!]")
     self.vsperf_conf = request.conffile
     self.testtype = request.testtype
     testtype_list = self.testtype.split(",")
     self.tests_run_check = 1
     for test in testtype_list:
         self.scenario = test
         self.run_test()
     return vsperf_pb2.StatusReply(message="Test Successfully Completed")
示例#23
0
 def CollectdUploadConfig(self, request, context):
     """
     Upload collectd config-file on DUT
     """
     if self.dut_check != 0:
         return vsperf_pb2.StatusReply(message="DUT-Host is not Connected [!]" \
                                                "\nMake sure to establish connection with" \
                                                " DUT-Host.")
     filename = self.collectd_conffile
     self.save_chunks_to_file(request, filename)
     self.upload_collectd_config()
     return vsperf_pb2.UploadStatus(
         Message="Successfully Collectd Configuration Uploaded", Code=1)
示例#24
0
    def DutHugepageConfig(self, request, context):
        """
        Configure the DUT system hugepage parameter from client
        """
        if self.dut_check != 0:
            return vsperf_pb2.StatusReply(message="DUT-Host is not Connected [!]" \
                                                   "\nMake sure to establish connection with" \
                                                   " DUT-Host.")
        self.hpmax = int(request.hpmax)
        self.hprequested = int(request.hprequested)
        hugepage_cmd = "echo '{}' | sudo -S mkdir -p /mnt/huge ; ".format(
            self.pwd)
        hugepage_cmd += "echo '{}' | sudo -S mount -t hugetlbfs nodev /mnt/huge".format(
            self.pwd)
        self.client.run(hugepage_cmd, pty=True)
        hp_nr_cmd = "cat /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages"
        hp_free_cmd = "cat /sys/devices/system/node/node0/hugepages/hugepages-2048kB/free_hugepages"
        hp_nr = int(self.client.execute(hp_nr_cmd)[1])
        hp_free = int(self.client.execute(hp_free_cmd)[1])
        if hp_free <= self.hprequested:
            hp_nr_new = hp_nr + (self.hprequested - hp_free)
            if hp_nr_new > self.hpmax:
                hp_nr_new = self.hpmax

        nr_hugepage_cmd = "echo '{}' | sudo -S bash -c \"echo 'vm.nr_hugepages={}' >>".\
                           format(self.pwd, hp_nr_new)
        nr_hugepage_cmd += " /etc/sysctl.conf\""
        self.client.run(nr_hugepage_cmd, pty=True)

        dict_cmd = "cat /sys/devices/system/node/node1/hugepages/hugepages-2048kB/nr_hugepages"
        dict_check = int(self.client.execute(dict_cmd)[0])
        if dict_check == 0:
            node1_hugepage_cmd = "echo '{}' | sudo -s bash -c \"echo 0 >".format(self.pwd)
            node1_hugepage_cmd += " /sys/devices/system/node/node1/"
            node1_hugepage_cmd += "hugepages/hugepages-2048kB/nr_hugepages\""
        return vsperf_pb2.StatusReply(
            message="DUT-Host system configured with {} No of Hugepages".format(hp_nr_new))
示例#25
0
 def SanityTgenConnDUTCheck(self, request, context):
     """
     We should confirm the DUT connectivity with the Tgen and Traffic Generator is working or not
     """
     if self.dut_check != 0:
         return vsperf_pb2.StatusReply(message="DUT-Host is not Connected [!]" \
                                                "\nMake sure to establish connection with" \
                                                " DUT-Host.")
     self.tgen_ip_address = request.ip
     tgen_connectivity_check_cmd = "ping {} -c 1".format(
         self.tgen_ip_address)
     tgen_connectivity_check_result = int(
         self.client.execute(tgen_connectivity_check_cmd)[0])
     if tgen_connectivity_check_result == 0:
         self.sanity_check_done_list.append(int(6))
         return vsperf_pb2.StatusReply(
             message=
             "DUT-Host is successfully reachable to Traffic Generator......"
         )
     return vsperf_pb2.StatusReply(
         message="DUT-Host is unsuccessful to reach the \
                                   Traffic Generator \nMake sure to establish connection \
                                   between DUT-Host and TGen-Host before running Test\
                                    ............... ")
示例#26
0
 def TGenInstall(self, request, context):
     """
     Install Traffic generator on the node.
     """
     if self.tgen_check != 0:
         return vsperf_pb2.StatusReply(message="TGen-Host is not Connected [!]" \
                                                "\nMake sure to establish connection with" \
                                                " TGen-Host.")
     kill_cmd = "pkill -f t-rex"
     self.tgen_client.send_command(kill_cmd)
     tgen_start_cmd = "cd trex_2.37/scripts && ./t-rex-64 -f cap2/dns.yaml -d 100 -m 1 --nc"
     tgen_start_cmd_result = int(self.tgen_client.execute(tgen_start_cmd)[0])
     kill_cmd = "pkill -f t-rex"
     self.tgen_client.send_command(kill_cmd)
     if tgen_start_cmd_result == 0:
         return vsperf_pb2.StatusReply(
             message="Traffic Generetor has T-rex Installed")
     download_cmd = "git clone https://github.com/cisco-system-traffic-generator/trex-core"
     self.tgen_client.run(download_cmd)
     install_cmd = "cd trex-core/linux_dpdk ; ./b configure ; ./b build"
     self.tgen_client.run(install_cmd)
     # before you setup your trex_cfg.yml make sure to do sanity check
     # NIC PICs and establish route between your DUT and Test Device.
     return vsperf_pb2.StatusReply(message="Traffic Generetor has now T-rex Installed")
示例#27
0
 def TGenUploadConfigFile(self, request, context):
     """
     Handle upload config-file command from client
     """
     if self.tgen_check != 0:
         return vsperf_pb2.StatusReply(message="TGen-Host is not Connected [!]" \
                                                "\nMake sure to establish connection with" \
                                                " TGen-Host.")
     filename = self.trex_conffile
     self.save_chunks_to_file(request, filename)
     check_trex_config_cmd = "echo {} | sudo -S find /etc -maxdepth 1 -name trex_cfg.yaml".\
                              format(self.tgenpwd)
     check_test_result = str(
         self.tgen_client.execute(check_trex_config_cmd)[1])
     if "trex_cfg.yaml" in check_test_result:
         self.tgen_client.run("rm -f /etc/trex_cfg.yaml")
     self.upload_tgen_config()
     self.tgen_client.run(
         "echo {} | sudo -S mv ~/trex_cfg.yaml /etc/".format(self.tgenpwd), pty=True)
     return vsperf_pb2.UploadStatus(Message="Successfully Uploaded",
                                    Code=1)
示例#28
0
 def UploadConfigFile(self, request, context):
     """
     Handle upload config-file command from client
     """
     if self.dut_check != 0:
         return vsperf_pb2.StatusReply(message="DUT-Host is not Connected [!]" \
                                                "\nMake sure to establish connection with" \
                                                " DUT-Host.")
     chunks = request.Content
     filename = request.Filename
     self.conffile = filename
     self.save_chunks_to_file(chunks, filename)
     # This is chechking if vsperf.conf already exist first remove that and
     # then upload the new file.
     check_test_config_cmd = "find ~/ -maxdepth 1 -name {}".format(filename)
     check_test_result = str(self.client.execute(check_test_config_cmd)[1])
     if "{}".format(filename) in check_test_result:
         self.client.run("rm -f {}".format(filename))
     self.upload_config()
     self.test_upload_check = 1
     print("Hello")
     return vsperf_pb2.UploadStatus(Message="Successfully Uploaded", Code=1)