From 3b716a044b58903e5e6aa6dc8773b7204bcbb4d6 Mon Sep 17 00:00:00 2001 From: UpstreamData Date: Mon, 18 Apr 2022 12:13:41 -0600 Subject: [PATCH] added online timer for testing --- tools/cfg_util/cfg_util_sg/func/miners.py | 4 +-- tools/web_testbench/_miners.py | 23 +++++++++++++--- tools/web_testbench/templates/index.html | 32 +++++++++++++++++++++-- 3 files changed, 51 insertions(+), 8 deletions(-) diff --git a/tools/cfg_util/cfg_util_sg/func/miners.py b/tools/cfg_util/cfg_util_sg/func/miners.py index 7ff9bfad..4ed78680 100644 --- a/tools/cfg_util/cfg_util_sg/func/miners.py +++ b/tools/cfg_util/cfg_util_sg/func/miners.py @@ -196,8 +196,8 @@ async def restart_miners_backend(ips: list): progress_bar_len += 1 asyncio.create_task(update_prog_bar(progress_bar_len)) - reboot_miners_generator = reboot_generator(all_miners) - async for _rebooter in reboot_miners_generator: + restart_backend_gen = restart_backend_generator(all_miners) + async for _rebooter in restart_backend_gen: progress_bar_len += 1 asyncio.create_task(update_prog_bar(progress_bar_len)) await update_ui_with_data("status", "") diff --git a/tools/web_testbench/_miners.py b/tools/web_testbench/_miners.py index d9419fd3..c78a0e97 100644 --- a/tools/web_testbench/_miners.py +++ b/tools/web_testbench/_miners.py @@ -2,6 +2,7 @@ from ipaddress import ip_address import asyncio import os import logging +import datetime from network import ping_miner from miners.miner_factory import MinerFactory @@ -22,6 +23,7 @@ class TestbenchMiner: self.host = host self.state = START self.latest_version = None + self.start_time = None async def get_bos_version(self): miner = await MinerFactory().get_miner(self.host) @@ -32,10 +34,20 @@ class TestbenchMiner: version = version_base[-2] return version + def get_online_time(self): + online_time = "0:00:00" + if self.start_time: + online_time = str(datetime.datetime.now() - self.start_time) + return online_time + async def add_to_output(self, message): - await ConnectionManager().broadcast_json( - {"IP": str(self.host), "text": str(message).replace("\r", "") + "\n"} - ) + data = { + "IP": str(self.host), + "text": str(message).replace("\r", "") + "\n", + "online": self.get_online_time(), + } + + await ConnectionManager().broadcast_json(data) return async def remove_from_cache(self): @@ -48,8 +60,9 @@ class TestbenchMiner: await asyncio.sleep(1) async def install_start(self): + self.start_time = datetime.datetime.now() await ConnectionManager().broadcast_json( - {"IP": str(self.host), "Light": "hide"} + {"IP": str(self.host), "Light": "hide", "online": self.get_online_time()} ) if not await ping_miner(self.host, 80): await self.add_to_output("Waiting for miner connection...") @@ -227,6 +240,7 @@ class TestbenchMiner: "Fans": fans_data, "HR": hr_data, "Temps": temps_data, + "online": self.get_online_time(), } # return stats @@ -252,6 +266,7 @@ class TestbenchMiner: self.latest_version = sorted(await get_local_versions(), reverse=True)[0] while True: if self.state == START: + self.start_time = None await self.install_start() if self.state == UNLOCK: await self.install_unlock() diff --git a/tools/web_testbench/templates/index.html b/tools/web_testbench/templates/index.html index cef3b1cf..0cbe10df 100644 --- a/tools/web_testbench/templates/index.html +++ b/tools/web_testbench/templates/index.html @@ -89,6 +89,20 @@ function lightMiner(ip, checkbox) { }; ws.onmessage = function(event) { var data = JSON.parse(event.data) + if (data.hasOwnProperty("online")) { + timer = document.getElementById(data["IP"] + "-timer") + if (data["online"] == "0:00:00") { + if (timer.className.contains("btn-success")) { + timer.className.remove("btn-success") + timer.className += ("btn-secondary") + } + } else { + if (timer.className.contains("btn-secondary")) { + timer.className.remove("btn-secondary") + timer.className += ("btn-success") + } + } + }; if (data.hasOwnProperty("miners")) { var container_all = document.getElementById('chart_container'); container_all.innerHTML = "" @@ -98,13 +112,27 @@ ws.onmessage = function(event) { column.className = "col border border-dark p-3" column.id = miner["IP"] + // create button group + var button_group = document.createElement("div"); + button_group.className = "btn-group w-100" + // create IP address header var header = document.createElement('button'); - header.className = "text-center btn btn-primary w-100" + header.className = "text-center btn btn-primary" header.onclick = function(){window.open("http://" + miner["IP"], '_blank');} header.innerHTML += miner["IP"] - column.append(header) + // create online timer + var timer = document.createElement('button'); + timer.className = "text-center btn btn-secondary" + timer.disabled = true + timer.innerHTML = "0:00:00" + timer.id = miner["IP"] + "-timer" + + button_group.append(header) + button_group.append(timer) + + column.append(button_group) // create install stdout var row_text = document.createElement('div');