add integration test

This commit is contained in:
Bohan Zhang
2019-10-23 19:46:33 -07:00
committed by Dana Van Aken
parent a5bb6597b6
commit dd05e2c63c
41 changed files with 14495 additions and 6 deletions

View File

@@ -264,9 +264,10 @@ def free_cache():
@task
def upload_result(result_dir=None, prefix=None):
def upload_result(result_dir=None, prefix=None, upload_code=None):
result_dir = result_dir or os.path.join(CONF['controller_home'], 'output')
prefix = prefix or ''
upload_code = upload_code or CONF['upload_code']
files = {}
for base in ('summary', 'knobs', 'metrics_before', 'metrics_after'):
@@ -286,7 +287,7 @@ def upload_result(result_dir=None, prefix=None):
files[base] = open(fpath, 'rb')
response = requests.post(CONF['upload_url'] + '/new_result/', files=files,
data={'upload_code': CONF['upload_code']})
data={'upload_code': upload_code})
if response.status_code != 200:
raise Exception('Error uploading result.\nStatus: {}\nMessage: {}\n'.format(
response.status_code, response.content))
@@ -300,10 +301,11 @@ def upload_result(result_dir=None, prefix=None):
@task
def get_result(max_time_sec=180, interval_sec=5):
def get_result(max_time_sec=180, interval_sec=5, upload_code=None):
max_time_sec = int(max_time_sec)
interval_sec = int(interval_sec)
url = CONF['upload_url'] + '/query_and_get/' + CONF['upload_code']
upload_code = upload_code or CONF['upload_code']
url = CONF['upload_url'] + '/query_and_get/' + upload_code
elapsed = 0
response_dict = None
response = ''
@@ -378,7 +380,7 @@ def add_udf():
@task
def upload_batch(result_dir=None, sort=True):
def upload_batch(result_dir=None, sort=True, upload_code=None):
result_dir = result_dir or CONF['save_path']
sort = _parse_bool(sort)
results = glob.glob(os.path.join(result_dir, '*__summary.json'))
@@ -391,7 +393,7 @@ def upload_batch(result_dir=None, sort=True):
prefix = os.path.basename(result)
prefix_len = os.path.basename(result).find('_') + 2
prefix = prefix[:prefix_len]
upload_result(result_dir=result_dir, prefix=prefix)
upload_result(result_dir=result_dir, prefix=prefix, upload_code=upload_code)
LOG.info('Uploaded result %d/%d: %s__*.json', i + 1, count, prefix)
@@ -643,3 +645,46 @@ def run_loops(max_iter=1):
LOG.info('The %s-th Loop Starts / Total Loops %s', i + 1, max_iter)
loop(i % RELOAD_INTERVAL)
LOG.info('The %s-th Loop Ends / Total Loops %s', i + 1, max_iter)
@task
def rename_batch(result_dir=None):
result_dir = result_dir or CONF['save_path']
results = glob.glob(os.path.join(result_dir, '*__summary.json'))
results = sorted(results)
count = len(results)
for i, result in enumerate(results):
prefix = os.path.basename(result)
prefix_len = os.path.basename(result).find('_') + 2
prefix = prefix[:prefix_len]
new_prefix = str(i) + '__'
files = {}
for base in ('summary', 'knobs', 'metrics_before', 'metrics_after'):
fpath = os.path.join(result_dir, prefix + base + '.json')
rename_path = os.path.join(result_dir, new_prefix + base + '.json')
os.rename(fpath, rename_path)
@task
def integration_tests():
# Create test website
response = requests.get(CONF['upload_url'] + '/test/create/')
LOG.info(response.content)
# Upload training data
LOG.info('Upload training data to no tuning session')
upload_batch(result_dir='../../integrationTests/data/',upload_code='ottertuneTestNoTuning')
# TO DO: BG ready
# Test DNN
LOG.info('Test DNN (deep neural network)')
upload_result(result_dir='../../integrationTests/data/', prefix='0__', upload_code='ottertuneTestTuningDNN')
response = get_result(upload_code='ottertuneTestTuningDNN')
assert response['status'] == 'good'
# Test GPR
LOG.info('Test GPR (gaussian process regression)')
upload_result(result_dir='../../integrationTests/data/', prefix='0__', upload_code='ottertuneTestTuningGPR')
response = get_result(upload_code='ottertuneTestTuningGPR')
assert response['status'] == 'good'