diff --git a/client/upload_test_data.py b/client/upload_test_data.py new file mode 100644 index 0000000000000000000000000000000000000000..d00c3c15ec83b403328e3c24638f1a16f96250ba --- /dev/null +++ b/client/upload_test_data.py @@ -0,0 +1,71 @@ +#!/usr/bin/env python3 + +import argparse +import getpass +import json +from urllib.parse import urljoin +import sys + +import requests + +def login(server, user, password): + r = requests.post(urljoin(server, 'token'), + data={'username': user, 'password': password}) + + if r.status_code!=200: + print("Unable to authenticate. Breaking") + sys.exit(-1) + + token = r.json()['access_token'] + return {'Authorization': f"Bearer {token}"} + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description='Uploads data to apiserver') + parser.add_argument('-s', '--server', help='server url', + default='http://localhost:8000/') + parser.add_argument('-u', '--user', help='user name', required=True) + args = parser.parse_args() + + password = getpass.getpass(prompt='Password required') + auth_headers = login(args.server, args.user, password) + + lst = requests.get(urljoin(args.server, 'dataset')).json() + datasets = {a[0]: a[1] for a in lst} + + randomLetters = "aklsgjfcsajbdvlcckklsjdkvclaldfkvsbdfkvjfawyeudpqiugaghvsdbcvayuefpquersjdvlksdjfviahfsbdvluidgvbajdhflsfj" + + ds = [] + + for i in range(20): + for j in range(20): + ds.append( + { + "name" : "Test Set " + str(i) + " - " + str(j), + "url" : "http://localhost:100" + str(i) + "/home", + "metadata" : { + "firstKey" : randomLetters[i:i+j], + "secondKey" : randomLetters[j:] + } + + } + ) + + + for el in ds: + if el['name'] in datasets: + print(f"{el['name']} is already on sever (id={datasets[el['name']]}). Updating...") + r = requests.put(url=urljoin(args.server, f"dataset/{datasets[el['name']]}"), + json=el, headers=auth_headers) + else: + r = requests.post(urljoin(args.server, 'dataset'), + json=el, headers=auth_headers) + if r.status_code==200: + print(f"Sent {el['name']} -> {r.json()[0]}") + else: + print(r.url, r.status_code, r.text) + + print('Data sets on the server:') + r = requests.get(urljoin(args.server, 'dataset')) + for el in r.json(): + print(el)