Compare commits

..

No commits in common. "master" and "live-request-function" have entirely different histories.

7 changed files with 33 additions and 75 deletions

View file

@ -47,7 +47,7 @@ A local http file server of some kind.
Go into the correct directory with the code Go into the correct directory with the code
cd client cd watcher
with python's http server with python's http server

View file

@ -1,8 +0,0 @@
#!/bin/bash
RUN_NUMBER=0
LINK_NUMBER=0
SERVER_URL="10.1.0.155:5000"
curl http://${SERVER_URL}/link/handoff/${RUN_NUMBER}/${LINK_NUMBER}

View file

@ -9,7 +9,7 @@
<form name="link"> <form name="link">
<div class="input-group"> <div class="input-group">
<label for="url-field">Watch server url</label> <label for="url-field">Watch server url</label>
<input name="url-field" type="text" value="10.1.0.155:5000" required></input> <input name="url-field" type="text" value="localhost:5000" required></input>
</div> </div>
<div class="input-group"> <div class="input-group">
<label for="run-field">Run id</label> <label for="run-field">Run id</label>

8
client/start.sh Executable file → Normal file
View file

@ -1,8 +0,0 @@
#!/bin/bash
RUN_NUMBER=0
LINK_NUMBER=0
SERVER_URL="10.1.0.155:5000"
curl http://${SERVER_URL}/link/start/${RUN_NUMBER}/${LINK_NUMBER}

View file

@ -1,11 +1,8 @@
import asyncio import asyncio
import atexit import atexit
import datetime import datetime
import json
import os.path
import socket import socket
from functools import lru_cache from functools import lru_cache
from pathlib import Path
from time import sleep, time from time import sleep, time
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
@ -16,7 +13,7 @@ from flask_cors import CORS
sio = socketio.Server() sio = socketio.Server()
app = Flask(__name__) app = Flask(__name__)
CORS(app, resources={r"/*": {"origins": "*"}}) CORS(app)
app.wsgi_app = socketio.WSGIApp(sio, app.wsgi_app) app.wsgi_app = socketio.WSGIApp(sio, app.wsgi_app)
# We request users to send the run number to prevent accidentially getting old requests from a previous run # We request users to send the run number to prevent accidentially getting old requests from a previous run
@ -34,21 +31,6 @@ function_times = []
function_data = [] function_data = []
def save_data():
with open('data.json', 'w') as outfile:
json.dump(db, outfile)
def load_data():
with open('data.json', 'r') as infile:
db = json.load(infile)
data_file = Path("data.json")
if data_file.is_file():
load_data()
@app.route("/") @app.route("/")
def index(): def index():
return render_template('index.html') return render_template('index.html')
@ -56,22 +38,16 @@ def index():
@app.route("/start_run/<run_index>") @app.route("/start_run/<run_index>")
def start_run(run_index): def start_run(run_index):
if "Authorization" not in request.headers or request.headers[ request_data = live_request(f'/start_run/{run_index}') #make request show up on the live requests
'Authorization'] != "dsfqlkjmlkjls,,n":
return "Unauthorized"
request_data = live_request(
f'/start_run/{run_index}') #make request show up on the live requests
if not run_index.isdigit(): if not run_index.isdigit():
return f'{run_index} is not a number' return f'{run_index} is not a number'
if run_index in db["run_data"]:
return "This run is already ran, take another number."
db["current_run"] = run_index db["current_run"] = run_index
starttime = time() starttime = time()
if run_index in db["run_data"]:
return "This run is already ran, take another number."
db["run_data"][run_index] = {"starttime": starttime, "data": {}} db["run_data"][run_index] = {"starttime": starttime, "data": {}}
save_data()
# TODO send start request to the first person in the chain. Probably a zeus part already written as example # TODO send start request to the first person in the chain. Probably a zeus part already written as example
sio.emit('start_run', run_index) sio.emit('start_run', run_index)
return f'Run {run_index} started at {starttime}' return f'Run {run_index} started at {starttime}'
@ -79,13 +55,13 @@ def start_run(run_index):
@app.route("/link/start/<run>/<link_index>") @app.route("/link/start/<run>/<link_index>")
def link_start(run, link_index): def link_start(run, link_index):
request_data = live_request(f'/link/start/{run}/{link_index}' request_data = live_request(f'/link/start/{run}/{link_index}') #make request show up on the live requests
) #make request show up on the live requests
if not run.isdigit() or not link_index.isdigit(): if not run.isdigit() or not link_index.isdigit():
return f'{run} and/or {link_index} is not a number' return f'{run} and/or {link_index} is not a number'
start = time() start = time()
if db["current_run"] != run: if db["current_run"] != run:
response = "Wrong run number, check that you update your run", 404 response = "Wrong run number, check that you update your run", 404
@ -95,7 +71,6 @@ def link_start(run, link_index):
response = "you already started in this run. Ignoring this request." response = "you already started in this run. Ignoring this request."
else: else:
run_data[link_index] = {"id": link_index, "start": time()} run_data[link_index] = {"id": link_index, "start": time()}
save_data()
sio.emit('link_start', run_data[link_index]) sio.emit('link_start', run_data[link_index])
response = "Success." response = "Success."
stop = time() stop = time()
@ -104,21 +79,17 @@ def link_start(run, link_index):
return response return response
@app.route("/link/handoff/<run>/<link_index>") @app.route("/link/handoff/<run>/<index>")
def link_handoff(run, link_index): def link_handoff(run, index):
request_data = live_request(f'/link/handoff/{run}/{link_index}' request_data = live_request(f'/link/handoff/{run}/{link_index}') #make request show up on the live requests
) #make request show up on the live requests
if not run.isdigit() or not link_index.isdigit(): if not run.isdigit() or not index.isdigit():
return f'{run} and/or {link_index} is not a number' return f'{run} and/or {index} is not a number'
if db["current_run"] != run: if db["current_run"] != run:
return "Wrong run number, check that you updated you run", 404 return "Wrong run number, check that you updated you run", 404
else: else:
if index not in db["run_data"][run]["data"]: link_data = db["run_data"][run]["data"][index]
return "This link did not start yet..."
link_data = db["run_data"][run]["data"][link_index]
save_data()
if "handoff" in link_data: if "handoff" in link_data:
return "you already handed off control during this run. Ignoring this request" return "you already handed off control during this run. Ignoring this request"
else: else:
@ -163,7 +134,7 @@ if __name__ == '__main__':
# scheduler = BackgroundScheduler() # scheduler = BackgroundScheduler()
# scheduler.add_job(func=plot_graph, trigger="interval", seconds=5) # scheduler.add_job(func=plot_graph, trigger="interval", seconds=5)
# scheduler.start() # scheduler.start()
app.run(host="10.1.0.155", debug=True) app.run(host="0.0.0.0", debug=True)
# shut down the scheduler when exiting the app # shut down the scheduler when exiting the app
# atexit.register(lambda: scheduler.shutdown()) # atexit.register(lambda: scheduler.shutdown())

View file

@ -23,7 +23,7 @@ require(['jquery', 'socket.io'], function(jq, io) {
$(function() { $(function() {
const socket = io('10.1.0.155:5000'); const socket = io('localhost:5000');
socket.on('start_run', function(run_index) {}); socket.on('start_run', function(run_index) {});
socket.on('link_start', function(link_data) { socket.on('link_start', function(link_data) {

View file

@ -21,28 +21,31 @@
<body> <body>
<div class="container"> <div class="container">
<div id="current_run" class="card"> <div id="current_run" class="card">
<!-- <div class="item"> <div class="item">
<div> <div>
0 0
</div> </div>
<div> <div>
<button type="button" onclick="$.get('10.1.0.155:5000/start_run/0')">Start</button> <button type="button">Start</button>
</div> </div>
<div> <div>
<i class="fas fa-question" style="color:grey"></i> <i class="fas fa-question" style="color:grey"></i>
</div> </div>
</div> --> </div>
<div class="card__title">
Links <div class="card__title">
Links
</div> </div>
</div> </div>
<div class="card"> <div class="card">
<div class="card__title"> <div class="card__title">
Runs Runs
</div> </div>
</div> </div>
<div id="live_requests" class="card"> <div id="live_requests" class="card">
<div class="card__title"> <div class="card__title">
Live Requests Live Requests
</div> </div>