summaryrefslogtreecommitdiff
path: root/tests/automated/run_continuous.py
blob: f3bef0a17ca5a8f973f177aded99e4e5ee4a07d0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#!/usr/bin/python
import os
import sys
import time
import datetime
import ccdash

INTERVAL = 300

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


if __name__ == "__main__":
	if len(sys.argv)<=1 or sys.argv[1]=="-h" or sys.argv[1]=="--h" or sys.argv[1]=="/h":
		print "This will run both Continuous and Nightly tests"
		print ""
		print "Usage: run_continuous.py scenario1.xml [scenario2.xml ...]"
		print ""
		sys.exit(1)

	# Splice list
	scenarios = sys.argv[1:]

	# Check if scenario exists
	for scenario in scenarios:
		if not os.path.exists(scenario):
			print "Error: file " + scenario + " does not exist"
			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:
				group = ""
				if utc.tm_mday != day:
					day = utc.tm_mday
					group = "Nightly"
				elif rc != 0:
					group = "Continuous"
				else:
					group = "Experimental"
				rc = run_scenarios(scenarios, group)
				# Sleep even if something does change
				print str(datetime.datetime.now()) + \
					  ": done running " + group + \
					  "tests, will check again in " + str(INTERVAL) + "s.."
				time.sleep(INTERVAL)
		else:
			# Nothing changed
			print str(datetime.datetime.now()) + \
				  ": No update, will check again in " + str(INTERVAL) + "s.."
			time.sleep(INTERVAL)