diff --git a/src/runtests/__init__.py b/src/runtests/__init__.py index 123c4e51..d8bac0bb 100644 --- a/src/runtests/__init__.py +++ b/src/runtests/__init__.py @@ -6,6 +6,7 @@ import os import logger from onionrutils import epoch +from onionrcrypto.cryptoutils.randomshuffle import random_shuffle from . import uicheck, inserttest, stresstest from . import ownnode @@ -50,6 +51,7 @@ class OnionrRunTestManager: self.run_date: int = 0 def run_tests(self): + tests = random_shuffle(RUN_TESTS) cur_time = epoch.get_epoch() logger.info(f"Doing runtime tests at {cur_time}") @@ -58,13 +60,18 @@ class OnionrRunTestManager: except FileNotFoundError: pass + done_count: int = 0 + total_to_do: int = len(tests) + try: - for i in RUN_TESTS: + for i in tests: last = i logger.info("[RUNTIME TEST] " + last.__name__ + " started", terminal=True, timestamp=True) i(self) - logger.info("[RUNTIME TEST] " + last.__name__ + " passed", + done_count += 1 + logger.info("[RUNTIME TEST] " + last.__name__ + + f" passed {done_count}/{total_to_do}", terminal=True, timestamp=True) except (ValueError, AttributeError): logger.error(last.__name__ + ' failed assertions', terminal=True) diff --git a/src/runtests/lanservertest.py b/src/runtests/lanservertest.py index 97347883..368238eb 100644 --- a/src/runtests/lanservertest.py +++ b/src/runtests/lanservertest.py @@ -3,20 +3,34 @@ import requests from lan.getip import best_ip from onionrblocks import insert, onionrblockapi +from gevent import sleep +from coredb import blockmetadb +from onionrutils.epoch import get_epoch +import logger def test_lan_server(testmanager): - + start_time = get_epoch() for i in range(1024, 65536): try: if requests.get(f"http://{best_ip}:{i}/ping").text == 'pong!': bl = insert('test data') + sleep(10) bl2 = insert('test data2') - l = requests.get(f"http://{best_ip}:{i}/blist/0").text - if bl not in l or bl2 not in l: + sleep(30) + bl3 = insert('test data3') + l = requests.get(f"http://{best_ip}:{i}/blist/0").text.split('\n') + if bl not in l or bl2 not in l or bl3 not in l: + logger.error('blocks not in blist ' + '-'.join(l), terminal=True) + raise ValueError + time = blockmetadb.get_block_date(bl3) - 1 + l = requests.get(f"http://{best_ip}:{i}/blist/{time}").text.split('\n') + + if (bl in l and bl2 in l and bl3 in l) or len(l) == 0: + logger.error('Failed to get appopriate time' + '-'.join(l), terminal=True) raise ValueError if onionrblockapi.Block(bl).raw != requests.get(f"http://{best_ip}:{i}/get/{bl}").content: raise ValueError - + break except requests.exceptions.ConnectionError: