mirror of https://github.com/asterisk/asterisk
				
				
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							141 lines
						
					
					
						
							3.4 KiB
						
					
					
				
			
		
		
	
	
							141 lines
						
					
					
						
							3.4 KiB
						
					
					
				| #!/usr/bin/python
 | |
| import os
 | |
| import sys
 | |
| import time
 | |
| import datetime
 | |
| import ccdash
 | |
| 
 | |
| INTERVAL = 300
 | |
| DELAY = 0
 | |
| ONCE = False
 | |
| SUFFIX = ""
 | |
| FORCE = False
 | |
| 
 | |
| def run_scenarios(scenarios, group):
 | |
| 	# Run each scenario
 | |
| 	rc = 0
 | |
| 	for scenario in scenarios:
 | |
| 		argv = []
 | |
| 		argv.append("ccdash.py")
 | |
| 		argv.append("scenario")
 | |
| 		argv.append(scenario)
 | |
| 		argv.append("--group")
 | |
| 		argv.append(group)
 | |
| 		thisrc = ccdash.main(argv)
 | |
| 		if rc==0 and thisrc:
 | |
| 			rc = thisrc
 | |
| 	return rc
 | |
| 
 | |
| 
 | |
| def usage():
 | |
| 	print """Periodically monitor working directory for Continuous and Nightly builds
 | |
| 
 | |
| Usage:
 | |
|   run_continuous.py [options] scenario1.xml [scenario2.xml ...]
 | |
| 
 | |
| options:
 | |
|   These are options which will be processed by run_continuous.py:
 | |
| 
 | |
|   --delay MIN   Delay both Continuous and Nightly builds by MIN minutes. 
 | |
|   		This is useful to coordinate the build with other build 
 | |
| 		machines. By default, Continuous build will be done right
 | |
| 		after changes are detected, and Nightly build will be done
 | |
| 		at 00:00 GMT. MIN is a float number.
 | |
| 
 | |
|   --once        Just run one loop to see if anything needs to be done and
 | |
|                 if so just do it once. Quit after that.
 | |
| 
 | |
|   --suffix SFX  Set group suffix to SFX. For example, if SFX is "-2.x", then
 | |
|                 tests will be submitted to "Nightly-2.x", "Continuous-2.x",
 | |
| 		and "Experimental-2.x"
 | |
| 
 | |
|   --force	Force running the test even when nothing has changed.
 | |
| """
 | |
| 	sys.exit(1)
 | |
| 
 | |
| if __name__ == "__main__":
 | |
| 	if len(sys.argv)<=1 or sys.argv[1]=="-h" or sys.argv[1]=="--h" or sys.argv[1]=="--help" or sys.argv[1]=="/h":
 | |
| 		usage()
 | |
| 
 | |
| 	# Splice list
 | |
| 	scenarios = []
 | |
| 	i = 1
 | |
| 	while i < len(sys.argv):
 | |
| 		if sys.argv[i]=="--delay":
 | |
| 			i = i + 1
 | |
| 			if i >= len(sys.argv):
 | |
| 				print "Error: missing argument"
 | |
| 				sys.exit(1)
 | |
| 			DELAY = float(sys.argv[i]) * 60
 | |
| 			print "Delay is set to %f minute(s)" % (DELAY / 60)
 | |
| 		elif sys.argv[i]=="--suffix":
 | |
| 			i = i + 1
 | |
| 			if i >= len(sys.argv):
 | |
| 				print "Error: missing argument"
 | |
| 				sys.exit(1)
 | |
| 			SUFFIX = sys.argv[i]
 | |
| 			print "Suffix is set to %s" % (SUFFIX)
 | |
| 		elif sys.argv[i]=="--once":
 | |
| 			ONCE = True
 | |
| 		elif sys.argv[i]=="--force":
 | |
| 			FORCE = True
 | |
| 		else:
 | |
| 			# Check if scenario exists
 | |
| 			scenario = sys.argv[i]
 | |
| 			if not os.path.exists(scenario):
 | |
| 				print "Error: file " + scenario + " does not exist"
 | |
| 				sys.exit(1)
 | |
| 			scenarios.append(scenario)
 | |
| 			print "Scenario %s added" % (scenario)
 | |
| 		i = i + 1
 | |
| 
 | |
| 	if len(scenarios) < 1:
 | |
| 		print "Error: scenario is required"
 | |
| 		sys.exit(1)
 | |
| 
 | |
| 	# Current date
 | |
| 	utc = time.gmtime(None)
 | |
| 	day = utc.tm_mday
 | |
| 
 | |
| 	# Loop foreva
 | |
| 	while True:
 | |
| 		argv = []
 | |
| 
 | |
| 		# Anything changed recently?
 | |
| 		argv.append("ccdash.py")
 | |
| 		argv.append("status")
 | |
| 		argv.append("-w")
 | |
| 		argv.append("../..")
 | |
| 		rc = ccdash.main(argv)
 | |
| 
 | |
| 		utc = time.gmtime(None)
 | |
| 
 | |
| 		if utc.tm_mday != day or rc != 0 or FORCE:
 | |
| 			group = ""
 | |
| 			if utc.tm_mday != day:
 | |
| 				day = utc.tm_mday
 | |
| 				group = "Nightly" + SUFFIX
 | |
| 			elif rc != 0:
 | |
| 				group = "Continuous" + SUFFIX
 | |
| 			else:
 | |
| 				group = "Experimental" + SUFFIX
 | |
| 			if DELAY > 0:
 | |
| 				print "Will run %s after %f s.." % (group, DELAY)
 | |
| 				time.sleep(DELAY)
 | |
| 			rc = run_scenarios(scenarios, group)
 | |
| 			msg = str(datetime.datetime.now()) + \
 | |
| 				  ": done running " + group + \
 | |
| 				  "tests, will check again in " + str(INTERVAL) + "s.."
 | |
| 			if ONCE:
 | |
| 				sys.exit(0)
 | |
| 		else:
 | |
| 			# Nothing changed
 | |
| 			msg = str(datetime.datetime.now()) + \
 | |
| 				  ": No update, will check again in " + str(INTERVAL) + "s.."
 | |
| 			if ONCE:
 | |
| 				sys.exit(1)
 | |
| 
 | |
| 		print msg
 | |
| 		time.sleep(INTERVAL)
 | |
| 
 |