From f250a3b0e174aa1c8586f3dae2b871daeb04d4a8 Mon Sep 17 00:00:00 2001 From: Tom Wilkie Date: Tue, 3 Nov 2015 15:01:33 +0000 Subject: [PATCH] Add sched CLI and update readme. --- README.md | 2 ++ sched | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100755 sched 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()