Skip to content

Instantly share code, notes, and snippets.

@mstead
Last active August 29, 2015 14:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mstead/b800c7d133e2f03b42fa to your computer and use it in GitHub Desktop.
Save mstead/b800c7d133e2f03b42fa to your computer and use it in GitHub Desktop.
Gutterball Report Test Script
#!/usr/bin/env python
import sys
from optparse import OptionParser
import json
import urllib2
import urllib
import time
parser = OptionParser()
parser.add_option('-t', '--time', action="store_true", dest='show_time')
parser.add_option('-d', '--on-date', dest="on_date")
parser.add_option('-u', '--uuid', action="append", dest="uuids")
parser.add_option('-o', '--owner', action="append", dest="owners")
parser.add_option("-p", '--status', action="append", dest="status")
parser.add_option('-i', '--describe', action="store_true", dest="describe")
parser.add_option("-a", "--api", action="store_true", dest="show_api")
parser.add_option("-j", "--json", action="store_true", dest="json_only")
(options, args) = parser.parse_args()
if options.show_api:
base_url = "https://localhost:8443/gutterball/reports"
print ""
print "======================="
print "Gutterball's Report API"
print "======================="
print ""
print "GET %s" % base_url
print " Print the details of all reports."
print ""
print "GET %s/:report_key" % base_url
print " Print the details of the report specified by :report_key"
print ""
print "GET %s/:report_key/run?my_arg=arg_value&..." % base_url
print " Run the report specified by :report_key with the specifed query parameters"
print 2 * "\n"
sys.exit(0)
if options.describe:
url = 'https://localhost:8443/gutterball/reports'
print ""
print url
print ""
data = json.load(urllib2.urlopen(url))
if options.json_only:
print json.dumps(data, sort_keys=True, indent=4)
sys.exit(0)
# Print each parameter description
for report_data in data:
print "==============================="
print report_data['key']
print "==============================="
print report_data["description"]
print ""
print "Parameters:"
print ""
for param in report_data["parameters"]:
print " %s: %s" % (param["name"], param["description"])
print " Mandatory: %s" % param["mandatory"]
print " Multi-valued: %s" % param["multiValued"]
print ""
sys.exit(0)
params = []
if options.on_date:
on_date = urllib.quote_plus(options.on_date)
params.append("on_date=%s" % on_date)
if options.uuids:
for uuid in options.uuids:
params.append("consumer_uuid=%s" % uuid)
if options.owners:
for owner in options.owners:
params.append("owner=%s" % owner)
if options.status:
for s in options.status:
params.append("status=%s" % s)
#url = 'https://localhost:8443/gutterball/reports/consumer_status_report/run?hours=240&owner=admin'
url = 'https://localhost:8443/gutterball/reports/consumer_status_report/run?%s' % ("&".join(params))
print ""
print url
print ""
start = time.time()
data = json.load(urllib2.urlopen(url))
end = time.time()
if options.show_time:
print ' Request took %0.3f ms' % ((end - start) * 1000.0)
if options.json_only:
print json.dumps(data, sort_keys=True, indent=4)
sys.exit(0)
print ""
print "======================"
print "Consumer Status Report"
print "======================"
for row in data:
consumer = row['consumer']
owner = consumer['owner']
status = row['status']
print "%s | %s | %s | %s" % (consumer['uuid'], owner['key'], status['status'], status['date'])
#for reason in status["reasons"]:
# print " - %s" % reason["message"]
print "\n"
print "%s results found." % len(data)
if options.show_time:
print ' Request took %0.3f ms' % ((end - start) * 1000.0)
print "\n"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment