mirror of
				https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
				synced 2025-10-31 18:58:01 +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 | 	return json_response | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| parser = argparse.ArgumentParser(description="Create max stations for each radio") | 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("--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_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_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("--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") | parser.add_argument("--email", type=str, help="Email address of recipient") | ||||||
|  |  | ||||||
|  |  | ||||||
| args = None | args = None | ||||||
| try: | try: | ||||||
| 	args = parser.parse_args() | 	args = parser.parse_args() | ||||||
| @@ -59,19 +59,41 @@ try: | |||||||
| 		if td != None: | 		if td != None: | ||||||
| 			durTime = int(td.group(1)) | 			durTime = int(td.group(1)) | ||||||
| 			durMeasure = str(td.group(2)) | 			durMeasure = str(td.group(2)) | ||||||
|  | 			now = datetime.datetime.now() | ||||||
| 			if durMeasure == "d": | 			if durMeasure == "d": | ||||||
| 				durationSec = durTime * 60 * 60 * 24 | 				durationTime = datetime.timedelta(days = durTime) | ||||||
| 			elif durMeasure == "h": | 			elif durMeasure == "h": | ||||||
| 				durationSec = durTime * 60 * 60 | 				durationTime = datetime.timedelta(hours = durTime) | ||||||
| 			elif durMeasure == "m": | 			elif durMeasure == "m": | ||||||
| 				durationSec = durTime * 60 | 				durationTime = datetime.timedelta(minutes = durTime) | ||||||
| 			else: | 			else: | ||||||
| 				durationSec = durTime | 				durationTime = datetime.timedelta(seconds = durTime) | ||||||
| 		else: | 		else: | ||||||
| 			parser.print_help() | 			parser.print_help() | ||||||
| 			parser.exit() | 			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): | 	if (args.report_interval is not None): | ||||||
| 		pattern = re.compile("^(\d+)([dhms])$") | 		pattern = re.compile("^(\d+)([dhms])$") | ||||||
| 		ri = pattern.match(args.report_interval) | 		ri = pattern.match(args.report_interval) | ||||||
| @@ -80,16 +102,19 @@ try: | |||||||
| 			intMeasure = str(ri.group(2)) | 			intMeasure = str(ri.group(2)) | ||||||
|  |  | ||||||
| 			if intMeasure == "d": | 			if intMeasure == "d": | ||||||
|                         	intervalSec = intTime * 60 * 60 * 24 |                         	intervalTime = datetime.timedelta(days = intTime) | ||||||
| 			elif intMeasure == "h": | 			elif intMeasure == "h": | ||||||
| 				intervalSec = intTime * 60 * 60 | 				intervalTime = datetime.timedelta(hours = intTime) | ||||||
| 			elif intMeasure == "m": | 			elif intMeasure == "m": | ||||||
| 				intervalSec = intTime * 60 | 				intervalTime = datetime.timedelta(minutes = intTime) | ||||||
| 			else: | 			else: | ||||||
| 				intervalSec = intTime | 				intervalTime = datetime.timedelta(seconds = intTime) | ||||||
| 		else: | 		else: | ||||||
| 			parser.print_help() | 			parser.print_help() | ||||||
| 			parser.exit() | 			parser.exit() | ||||||
|  | 	else: | ||||||
|  | 		parser.print_help() | ||||||
|  | 		parser.exit() | ||||||
|  |  | ||||||
| 	if (args.output_dir != None): | 	if (args.output_dir != None): | ||||||
| 		outputDir = args.output_dir | 		outputDir = args.output_dir | ||||||
| @@ -116,7 +141,11 @@ except Exception as e: | |||||||
|  |  | ||||||
|  |  | ||||||
| stations = [] | 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", | radio_ssid_map = {"wiphy0":"jedway-wpa2-x2048-4-1", | ||||||
| 		  "wiphy1":"jedway-wpa2-x2048-5-3", | 		  "wiphy1":"jedway-wpa2-x2048-5-3", | ||||||
| 		  "wiphy2":"jedway-wpa2-x2048-5-1", | 		  "wiphy2":"jedway-wpa2-x2048-5-1", | ||||||
| @@ -305,9 +334,10 @@ emailHelper.sendEmail(email, sender, recipient, subject) | |||||||
|  |  | ||||||
| print("Logging Info to {}".format(webLog)) | print("Logging Info to {}".format(webLog)) | ||||||
|  |  | ||||||
| timesLoop = math.ceil(durationSec / intervalSec) | curTime = datetime.datetime.now() | ||||||
| #print("Looping {} times".format(timesLoop)) | endTime = curTime + durationTime | ||||||
| for min in range(timesLoop): |  | ||||||
|  | while curTime <= (endTime): | ||||||
| 	f.write("<tr>\n") | 	f.write("<tr>\n") | ||||||
| 	for radio, numStations in radios.items(): | 	for radio, numStations in radios.items(): | ||||||
| 		withoutIP = 0 | 		withoutIP = 0 | ||||||
| @@ -317,6 +347,7 @@ for min in range(timesLoop): | |||||||
| 		for i in range(0,numStations): | 		for i in range(0,numStations): | ||||||
| 			staName = "sta" + radio[-1:] + str(paddingNum + i)[1:] | 			staName = "sta" + radio[-1:] + str(paddingNum + i)[1:] | ||||||
| 			staStatus = getJsonInfo(mgrURL, "port/1/1/" + staName) | 			staStatus = getJsonInfo(mgrURL, "port/1/1/" + staName) | ||||||
|  | 			#print(staName) | ||||||
| 			if staStatus['interface']['ip'] == "0.0.0.0": | 			if staStatus['interface']['ip'] == "0.0.0.0": | ||||||
| 				withoutIP += 1 | 				withoutIP += 1 | ||||||
| 				if staStatus['interface']['ap'] == None: | 				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("<td>{}</td>\n".format(datetime.datetime.now().strftime("%Y-%m-%d %H:%M"))) | ||||||
| 	f.write("</tr>\n") | 	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.write("</table></body></html>\n") | ||||||
| f.close() | f.close() | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Logan Lipke
					Logan Lipke