diff --git a/README.md b/README.md index 85fdfeb39..32ddb57b1 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,8 @@ Included in this repo are tools shared by weave.git and scope.git. They include suffixed with the number of hosts it requires, and the hosts available are contained in the environment variable HOSTS, the tool will run tests in parallel, on different hosts. +- ```scheduler```: an appengine application that can be used to distribute + tests across different shards in CircleCI. ## Using build-tools.git diff --git a/sched b/sched new file mode 100755 index 000000000..e94e8af8f --- /dev/null +++ b/sched @@ -0,0 +1,38 @@ +#!/usr/bin/python +import sys, string, json, urllib +import requests + +BASE_URL="http://positive-cocoa-90213.appspot.com" + +def test_time(test_name, runtime): + r = requests.post(BASE_URL + "/record/%s/%f" % (urllib.quote(test_name, safe=""), runtime)) + print r.text + assert r.status_code == 204 + +def test_sched(test_run, shard_count, shard_id): + tests = json.dumps({'tests': string.split(sys.stdin.read())}) + r = requests.post(BASE_URL + "/schedule/%s/%d/%d" % (test_run, shard_count, shard_id), data=tests) + assert r.status_code == 200 + result = r.json() + for test in sorted(result['tests']): + print test + +def usage(): + print "%s " % sys.argv[0] + print " time " + print " sched " + +def main(): + if len(sys.argv) < 4: + usage() + sys.exit(1) + + if sys.argv[1] == "time": + test_time(sys.argv[2], float(sys.argv[3])) + elif sys.argv[1] == "sched": + test_sched(sys.argv[2], int(sys.argv[3]), int(sys.argv[4])) + else: + usage() + +if __name__ == '__main__': + main()