63 lines
2.0 KiB
Python
63 lines
2.0 KiB
Python
#
|
|
# OtterTune - upload_data.py
|
|
#
|
|
# Copyright (c) 2017-18, Carnegie Mellon University Database Group
|
|
#
|
|
'''
|
|
Created on Nov 30, 2017
|
|
|
|
@author: dvanaken
|
|
'''
|
|
|
|
import argparse
|
|
import glob
|
|
import logging
|
|
import os
|
|
import requests
|
|
|
|
# Logging
|
|
LOG = logging.getLogger(__name__)
|
|
LOG.addHandler(logging.StreamHandler())
|
|
LOG.setLevel(logging.INFO)
|
|
|
|
|
|
def upload(basedir, upload_code, upload_url):
|
|
for wkld_dir in sorted(glob.glob(os.path.join(basedir, '*'))):
|
|
LOG.info('Uploading sample for workload %s...', wkld_dir)
|
|
sample_idx = 0
|
|
while True:
|
|
samples = glob.glob(os.path.join(wkld_dir, 'sample-{}__*').format(sample_idx))
|
|
if len(samples) == 0:
|
|
break
|
|
assert len(samples) == 4
|
|
basename = samples[0].split('__')[0]
|
|
params = {
|
|
'summary': open(basename + '__summary.json', 'r'),
|
|
'knobs': open(basename + '__knobs.json', 'r'),
|
|
'metrics_before': open(basename + '__metrics_start.json', 'r'),
|
|
'metrics_after': open(basename + '__metrics_end.json', 'r'),
|
|
}
|
|
|
|
response = requests.post(upload_url + "/new_result/",
|
|
files=params,
|
|
data={'upload_code': upload_code})
|
|
LOG.info("Response: %s\n", response.content.decode())
|
|
sample_idx += 1
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(description="Upload generated data to the website")
|
|
parser.add_argument('basedir', type=str, nargs=1,
|
|
help='Directory containing the generated data')
|
|
parser.add_argument('upload_code', type=str, nargs=1,
|
|
help='The website\'s upload code')
|
|
parser.add_argument('upload_url', type=str, default='http://0.0.0.0:8000',
|
|
nargs='?', help='The website\'s URL')
|
|
|
|
args = parser.parse_args()
|
|
upload(args.basedir[0], args.upload_code[0], args.upload_url)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|