#!/usr/bin/python
import sys, string, json, urllib
import requests
import optparse

def test_time(target, test_name, runtime):
  r = requests.post(target + "/record/%s/%f" % (urllib.quote(test_name, safe=""), runtime))
  print r.text
  assert r.status_code == 204

def test_sched(target, test_run, shard_count, shard_id):
  tests = json.dumps({'tests': string.split(sys.stdin.read())})
  r = requests.post(target + "/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 (--target=...) <cmd> <args..>" % sys.argv[0]
  print "   time <test name> <run time>"
  print "   sched <test run> <num shards> <shard id>"

def main():
  parser = optparse.OptionParser()
  parser.add_option('--target', default="http://positive-cocoa-90213.appspot.com")
  options, args = parser.parse_args()
  if len(args) < 3:
    usage()
    sys.exit(1)

  if args[0] == "time":
    test_time(options.target, args[1], float(args[2]))
  elif args[0] == "sched":
    test_sched(options.target, args[1], int(args[2]), int(args[3]))
  else:
    usage()

if __name__ == '__main__':
  main()
