mirror of
https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
synced 2025-11-01 11:18:03 +00:00
Added specific end time argument for tests, rewrote timing logic to use datetime module
This commit is contained in:
@@ -41,15 +41,15 @@ def getJsonInfo(mgrURL, reqURL):
|
||||
return json_response
|
||||
|
||||
|
||||
|
||||
|
||||
parser = argparse.ArgumentParser(description="Create max stations for each radio")
|
||||
parser.add_argument("--test_duration", type=str, help="Full duration for the test to run. should be specified by a number followed by a character. d for days, h for hours, m for minutes, s for seconds")
|
||||
parser.add_argument("--report_interval", type=str, help="How often a report is made. should be specified by a number followed by a character. d for days, h for hours, m for minutes, s for seconds")
|
||||
parser.add_argument("--test_duration", type=str, help="Full duration for the test to run. Should be specified by a number followed by a character. d for days, h for hours, m for minutes, s for seconds")
|
||||
parser.add_argument("--test_end_time", type=str, help="Specify a time and date to end the test. Should be formatted as year-month-date_hour:minute. Date should be specified in numbers and time should be 24 hour format. Ex: 2020-5-14_14:30")
|
||||
parser.add_argument("--report_interval", type=str, help="How often a report is made. Should be specified by a number followed by a character. d for days, h for hours, m for minutes, s for seconds")
|
||||
parser.add_argument("--output_dir", type=str, help="Directory to ouptut to")
|
||||
parser.add_argument("--output_prefix", type=str, help="Name of the file. Timestamp and .html will be appended to the end")
|
||||
parser.add_argument("--email", type=str, help="Email address of recipient")
|
||||
|
||||
|
||||
args = None
|
||||
try:
|
||||
args = parser.parse_args()
|
||||
@@ -59,19 +59,41 @@ try:
|
||||
if td != None:
|
||||
durTime = int(td.group(1))
|
||||
durMeasure = str(td.group(2))
|
||||
|
||||
now = datetime.datetime.now()
|
||||
if durMeasure == "d":
|
||||
durationSec = durTime * 60 * 60 * 24
|
||||
durationTime = datetime.timedelta(days = durTime)
|
||||
elif durMeasure == "h":
|
||||
durationSec = durTime * 60 * 60
|
||||
durationTime = datetime.timedelta(hours = durTime)
|
||||
elif durMeasure == "m":
|
||||
durationSec = durTime * 60
|
||||
durationTime = datetime.timedelta(minutes = durTime)
|
||||
else:
|
||||
durationSec = durTime
|
||||
durationTime = datetime.timedelta(seconds = durTime)
|
||||
else:
|
||||
parser.print_help()
|
||||
parser.exit()
|
||||
|
||||
elif (args.test_end_time is not None):
|
||||
now = datetime.datetime.now()
|
||||
try:
|
||||
endTime = datetime.datetime.strptime(args.test_end_time,"%Y-%m-%d_%H:%M")
|
||||
if endTime < now:
|
||||
raise ValueError
|
||||
parser.print_help()
|
||||
parser.exit()
|
||||
else:
|
||||
curTime = datetime.datetime.now()
|
||||
durationTime = endTime - curTime
|
||||
|
||||
except ValueError as exception:
|
||||
print(exception)
|
||||
parser.print_help()
|
||||
parser.exit()
|
||||
|
||||
else:
|
||||
parser.print_help()
|
||||
parser.exit()
|
||||
|
||||
|
||||
if (args.report_interval is not None):
|
||||
pattern = re.compile("^(\d+)([dhms])$")
|
||||
ri = pattern.match(args.report_interval)
|
||||
@@ -80,16 +102,19 @@ try:
|
||||
intMeasure = str(ri.group(2))
|
||||
|
||||
if intMeasure == "d":
|
||||
intervalSec = intTime * 60 * 60 * 24
|
||||
intervalTime = datetime.timedelta(days = intTime)
|
||||
elif intMeasure == "h":
|
||||
intervalSec = intTime * 60 * 60
|
||||
intervalTime = datetime.timedelta(hours = intTime)
|
||||
elif intMeasure == "m":
|
||||
intervalSec = intTime * 60
|
||||
intervalTime = datetime.timedelta(minutes = intTime)
|
||||
else:
|
||||
intervalSec = intTime
|
||||
intervalTime = datetime.timedelta(seconds = intTime)
|
||||
else:
|
||||
parser.print_help()
|
||||
parser.exit()
|
||||
else:
|
||||
parser.print_help()
|
||||
parser.exit()
|
||||
|
||||
if (args.output_dir != None):
|
||||
outputDir = args.output_dir
|
||||
@@ -116,7 +141,11 @@ except Exception as e:
|
||||
|
||||
|
||||
stations = []
|
||||
radios = {"wiphy0":200, "wiphy1":200, "wiphy2":64, "wiphy3":200} #radioName:numStations
|
||||
radios = {"wiphy0":200, #max 200
|
||||
"wiphy1":200, #max 200
|
||||
"wiphy2":64, #max 64
|
||||
"wiphy3":200} #max 200
|
||||
#radioName:numStations
|
||||
radio_ssid_map = {"wiphy0":"jedway-wpa2-x2048-4-1",
|
||||
"wiphy1":"jedway-wpa2-x2048-5-3",
|
||||
"wiphy2":"jedway-wpa2-x2048-5-1",
|
||||
@@ -305,9 +334,10 @@ emailHelper.sendEmail(email, sender, recipient, subject)
|
||||
|
||||
print("Logging Info to {}".format(webLog))
|
||||
|
||||
timesLoop = math.ceil(durationSec / intervalSec)
|
||||
#print("Looping {} times".format(timesLoop))
|
||||
for min in range(timesLoop):
|
||||
curTime = datetime.datetime.now()
|
||||
endTime = curTime + durationTime
|
||||
|
||||
while curTime <= (endTime):
|
||||
f.write("<tr>\n")
|
||||
for radio, numStations in radios.items():
|
||||
withoutIP = 0
|
||||
@@ -317,6 +347,7 @@ for min in range(timesLoop):
|
||||
for i in range(0,numStations):
|
||||
staName = "sta" + radio[-1:] + str(paddingNum + i)[1:]
|
||||
staStatus = getJsonInfo(mgrURL, "port/1/1/" + staName)
|
||||
#print(staName)
|
||||
if staStatus['interface']['ip'] == "0.0.0.0":
|
||||
withoutIP += 1
|
||||
if staStatus['interface']['ap'] == None:
|
||||
@@ -333,9 +364,15 @@ for min in range(timesLoop):
|
||||
|
||||
f.write("<td>{}</td>\n".format(datetime.datetime.now().strftime("%Y-%m-%d %H:%M")))
|
||||
f.write("</tr>\n")
|
||||
#print("sleeping for {} seconds".format(intervalSec))
|
||||
time.sleep(intervalSec) #Sleeps for specified interval in seconds
|
||||
|
||||
curTime = datetime.datetime.now()
|
||||
intTime = curTime + intervalTime
|
||||
while curTime <= intTime:
|
||||
#print(curTime, intTime)
|
||||
time.sleep(1)
|
||||
curTime = datetime.datetime.now()
|
||||
#sleep(1)
|
||||
curTime = datetime.datetime.now()
|
||||
|
||||
f.write("</table></body></html>\n")
|
||||
f.close()
|
||||
|
||||
Reference in New Issue
Block a user