mirror of
				https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
				synced 2025-11-03 20:27:54 +00:00 
			
		
		
		
	Monitor method now contains test logic, reports correctly
This commit is contained in:
		@@ -9,6 +9,7 @@ import csv
 | 
			
		||||
import pandas as pd
 | 
			
		||||
import time
 | 
			
		||||
import datetime
 | 
			
		||||
import json
 | 
			
		||||
 | 
			
		||||
class GenCXProfile(LFCliBase):
 | 
			
		||||
    def __init__(self, lfclient_host, lfclient_port, local_realm, debug_=False):
 | 
			
		||||
@@ -27,6 +28,9 @@ class GenCXProfile(LFCliBase):
 | 
			
		||||
        self.created_endp = []
 | 
			
		||||
        self.file_output = "/dev/null"
 | 
			
		||||
        self.loop_count = 1
 | 
			
		||||
        self.speedtest_min_dl = 0
 | 
			
		||||
        self.speedtest_min_up = 0
 | 
			
		||||
        self.speedtest_max_ping = 0
 | 
			
		||||
 | 
			
		||||
    def parse_command(self, sta_name, gen_name):
 | 
			
		||||
        if self.type == "lfping":
 | 
			
		||||
@@ -354,6 +358,69 @@ class GenCXProfile(LFCliBase):
 | 
			
		||||
            })
 | 
			
		||||
        time.sleep(sleep_time)
 | 
			
		||||
 | 
			
		||||
    def choose_ping_command(self):
 | 
			
		||||
        gen_results = self.json_get("generic/list?fields=name,last+results", debug_=self.debug)
 | 
			
		||||
        if self.debug:
 | 
			
		||||
            print(gen_results)
 | 
			
		||||
        if gen_results['endpoints'] is not None:
 | 
			
		||||
            for name in gen_results['endpoints']:
 | 
			
		||||
                for k, v in name.items():
 | 
			
		||||
                    if v['name'] in self.created_endp and not v['name'].endswith('1'):
 | 
			
		||||
                        if v['last results'] != "" and "Unreachable" not in v['last results']:
 | 
			
		||||
                            return True, v['name']
 | 
			
		||||
                        else:
 | 
			
		||||
                            return False, v['name']
 | 
			
		||||
 | 
			
		||||
    def choose_lfcurl_command(self):
 | 
			
		||||
        gen_results = self.json_get("generic/list?fields=name,last+results", debug_=self.debug)
 | 
			
		||||
        if self.debug:
 | 
			
		||||
            print(gen_results)
 | 
			
		||||
        if gen_results['endpoints'] is not None:
 | 
			
		||||
            for name in gen_results['endpoints']:
 | 
			
		||||
                for k, v in name.items():
 | 
			
		||||
                    if v['name'] != '':
 | 
			
		||||
                        results = v['last results'].split()
 | 
			
		||||
                        if 'Finished' in v['last results']:
 | 
			
		||||
                            if results[1][:-1] == results[2]:
 | 
			
		||||
                                return True, v['name']
 | 
			
		||||
                            else:
 | 
			
		||||
                                return False, v['name']
 | 
			
		||||
 | 
			
		||||
    def choose_iperf3_command(self):
 | 
			
		||||
        gen_results = self.json_get("generic/list?fields=name,last+results", debug_=self.debug)
 | 
			
		||||
        if gen_results['endpoints'] is not None:
 | 
			
		||||
            pprint.pprint(gen_results['endpoints'])
 | 
			
		||||
            #for name in gen_results['endpoints']:
 | 
			
		||||
               # pprint.pprint(name.items)
 | 
			
		||||
                #for k,v in name.items():
 | 
			
		||||
        exit(1)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    def choose_speedtest_command(self):
 | 
			
		||||
        gen_results = self.json_get("generic/list?fields=name,last+results", debug_=self.debug)
 | 
			
		||||
        if gen_results['endpoints'] is not None:
 | 
			
		||||
            for name in gen_results['endpoints']:
 | 
			
		||||
                for k, v in name.items():
 | 
			
		||||
                    if v['last results'] is not None and v['name'] in self.created_endp and v['last results'] != '':
 | 
			
		||||
                        last_results = json.loads(v['last results'])
 | 
			
		||||
                        if last_results['download'] is None and last_results['upload'] is None and last_results['ping'] is None:
 | 
			
		||||
                            return False, v['name']
 | 
			
		||||
                        elif last_results['download'] >= self.speedtest_min_dl and \
 | 
			
		||||
                             last_results['upload'] >= self.speedtest_min_up and \
 | 
			
		||||
                             last_results['ping'] <= self.speedtest_max_ping:
 | 
			
		||||
                            return True, v['name']
 | 
			
		||||
 | 
			
		||||
    def choose_generic_command(self):
 | 
			
		||||
        gen_results = self.json_get("generic/list?fields=name,last+results", debug_=self.debug)
 | 
			
		||||
        if (gen_results['endpoints'] is not None):
 | 
			
		||||
            for name in gen_results['endpoints']:
 | 
			
		||||
                for k, v in name.items():
 | 
			
		||||
                    if v['name'] in self.created_endp and not v['name'].endswith('1'):
 | 
			
		||||
                        if v['last results'] != "" and "not known" not in v['last results']:
 | 
			
		||||
                            return True, v['name']
 | 
			
		||||
                        else:
 | 
			
		||||
                            return False, v['name']
 | 
			
		||||
 | 
			
		||||
    def monitor(self,
 | 
			
		||||
                duration_sec=60,
 | 
			
		||||
                monitor_interval_ms=1,
 | 
			
		||||
@@ -442,7 +509,38 @@ class GenCXProfile(LFCliBase):
 | 
			
		||||
 | 
			
		||||
        # for x in range(0,int(round(iterations,0))):
 | 
			
		||||
        initial_starttime = datetime.datetime.now()
 | 
			
		||||
        print("Starting Test...")
 | 
			
		||||
        while datetime.datetime.now() < end_time:
 | 
			
		||||
 | 
			
		||||
            passes = 0
 | 
			
		||||
            expected_passes = 0
 | 
			
		||||
            time.sleep(15)
 | 
			
		||||
            result = False
 | 
			
		||||
            cur_time = datetime.datetime.now()
 | 
			
		||||
            if self.type == "lfping":
 | 
			
		||||
                result = self.choose_ping_command()
 | 
			
		||||
            elif self.type == "generic":
 | 
			
		||||
                result = self.choose_generic_command()
 | 
			
		||||
            elif self.type == "lfcurl":
 | 
			
		||||
                result = self.choose_lfcurl_command()
 | 
			
		||||
            elif self.type == "speedtest":
 | 
			
		||||
                result = self.choose_speedtest_command()
 | 
			
		||||
            elif self.type == "iperf3":
 | 
			
		||||
                result = self.choose_iperf3_command()
 | 
			
		||||
            else:
 | 
			
		||||
                continue
 | 
			
		||||
            expected_passes += 1
 | 
			
		||||
            if result is not None:
 | 
			
		||||
                if result[0]:
 | 
			
		||||
                    passes += 1
 | 
			
		||||
                else:
 | 
			
		||||
                    self._fail("%s Failed to ping %s " % (result[1], self.dest))
 | 
			
		||||
                    break
 | 
			
		||||
            time.sleep(1)
 | 
			
		||||
 | 
			
		||||
            if passes == expected_passes:
 | 
			
		||||
                self._pass("PASS: All tests passed")
 | 
			
		||||
 | 
			
		||||
            t = datetime.datetime.now()
 | 
			
		||||
            timestamp = t.strftime("%m/%d/%Y %I:%M:%S")
 | 
			
		||||
            t_to_millisec_epoch = int(self.get_milliseconds(t))
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user