From a2925011eda57dd9bf2ef0ae5b35ac10a36eb095 Mon Sep 17 00:00:00 2001 From: Proddy Date: Thu, 12 Jan 2023 11:04:24 +0100 Subject: [PATCH] update test runner --- scripts/run_memory_test.py | 77 +++++++++++++++++++++++++------------- src/test/test.cpp | 6 ++- 2 files changed, 56 insertions(+), 27 deletions(-) diff --git a/scripts/run_memory_test.py b/scripts/run_memory_test.py index 8c48ee988..5e732237d 100644 --- a/scripts/run_memory_test.py +++ b/scripts/run_memory_test.py @@ -1,39 +1,66 @@ +import argparse import requests -import json import time -WAIT_TIME = 10 # in seconds +# Setting go here +EMSESP_IP = "10.10.10.20" # IP or hostname.local of EMS-ESP +DEFAULT_TEST_NAME = "general" # default name of test +WAIT_TIME = 1 # in seconds -# url = "http://ems-esp.local/api/thermostat/temp" -# token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ8.eyJ1c2VybmFtZSI6ImFkbWluIiwiYWRtaW4iOnRydWUsInZlcnNpb24iOiIzLjEuMWIwIn0.qeGT53Aom4rDYeIT1Pr4BSMdeWyf4_zN9ue2c51ZnM0" -# body = json.dumps({ "value": 22.5 }) -# headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + token } -# response = requests.post(url, headers=headers, data=body, verify=False) +# fixed variables +INFO_URL = "http://" + EMSESP_IP + "/api/system/info" +TEST_URL = "http://" + EMSESP_IP + "/api?device=system&cmd=test&data=" +GET_HEADERS = { 'Content-Type': 'application/json'} +TOKEN = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ8.eyJ1c2VybmFtZSI6ImFkbWluIiwiYWRtaW4iOnRydWUsInZlcnNpb24iOiIzLjEuMWIwIn0.qeGT53Aom4rDYeIT1Pr4BSMdeWyf4_zN9ue2c51ZnM0" +POST_HEADERS = { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + TOKEN } -# curl http://10.10.10.20/api/system/info -response = requests.get("http://10.10.10.20/api/system/info", headers={ 'Content-Type': 'application/json'}, verify=False) +def run_test(test_name): -uptime_now = response.json()['System Info']['uptime (seconds)'] + # example for POSTs: + # BODY = json.dumps({ "value": 22.5 }) + # response = requests.post(url, headers=HEADERS, data=BODY, verify=False) -print("Before test: uptime=" + str(uptime_now) + " secs, Free mem/Max alloc= " + str(response.json()['System Info']['free mem']) + "/" + str(response.json()['System Info']['max alloc']) ) + print() + print("* Getting initial stats", end="") + response = requests.get(INFO_URL, headers=GET_HEADERS, verify=False) + uptime_a = response.json()['System Info']['uptime (seconds)'] + freemem_a = response.json()['System Info']['free mem'] + maxalloc_a = response.json()['System Info']['max alloc'] + print(" -> uptime is " + str(uptime_a) + " secs, Free mem/Max alloc is " + str(freemem_a) + "/" + str(maxalloc_a) ) -# run test -# curl http://10.10.10.20/api\?device\=system\&cmd\=test\&data\=memory -response = requests.get("http://10.10.10.20/api?device=system&cmd=test&data=memory", headers={ 'Content-Type': 'application/json'}, verify=False) -print("Running test, output: " + response.json()['message']) + # run test + print("* Running test '" + test_name + "'", end="") + response = requests.get(TEST_URL + test_name, headers=GET_HEADERS, verify=False) + test_output = response.json()['message'] + if (test_output != 'OK'): + print(" -> Test Failed!") + return -# wait 10 seconds -print("Waiting " + str(WAIT_TIME) + " seconds...") -time.sleep(WAIT_TIME) + print(" -> Test ran successfully, output: " + response.json()['message']) -response = requests.get("http://10.10.10.20/api/system/info", headers={ 'Content-Type': 'application/json'}, verify=False) + # wait 10 seconds + print("* Waiting for " + str(WAIT_TIME) + " seconds...") + time.sleep(WAIT_TIME) -new_uptime = response.json()['System Info']['uptime (seconds)'] + # get latest stats + print("* Getting refreshed stats", end="") + response = requests.get(INFO_URL, headers=GET_HEADERS, verify=False) + uptime_b = response.json()['System Info']['uptime (seconds)'] + freemem_b = response.json()['System Info']['free mem'] + maxalloc_b = response.json()['System Info']['max alloc'] + print(" -> uptime is " + str(uptime_b) + " secs, Free mem/Max alloc is " + str(freemem_b) + "/" + str(maxalloc_b) ) + print() -print(" After test: uptime=" + str(new_uptime) + " secs, Free mem/Max alloc= " + str(response.json()['System Info']['free mem']) + "/" + str(response.json()['System Info']['max alloc']) ) + # check if it worked and report back + if (uptime_b <= uptime_a): + print(" Error! EMS-ESP crashed and restarted :-(") + else: + print(" Success! The delta's are: uptime " + str(uptime_b - uptime_a) + " secs, Free mem/Max alloc " + str(freemem_a - freemem_b) + "/" + str(maxalloc_a - maxalloc_b) ) -if (new_uptime < uptime_now): - print("It crashed!") -else: - print("Success!") + print() +# main +parser = argparse.ArgumentParser() +parser.add_argument('test name', type=str, default=DEFAULT_TEST_NAME, help='Name of test to run') +args = parser.parse_args() +run_test(args.test) \ No newline at end of file diff --git a/src/test/test.cpp b/src/test/test.cpp index 66354eee4..f64fec0fb 100644 --- a/src/test/test.cpp +++ b/src/test/test.cpp @@ -37,8 +37,10 @@ bool Test::run_test(const char * command, int8_t id) { // simulate HansRemmerswaal's setup - see https://github.com/emsesp/EMS-ESP32/issues/859 add_device(0x08, 172); // 160 entities - boiler: Enviline/Compress 6000AW/Hybrid 3000-7000iAW/SupraEco/Geo 5xx/WLW196i - // add_device(0x10, 158); // 62 entities - thermostat: RC300/RC310/Moduline 3000/1010H/CW400/Sense II/HPC410 - // add_device(0x38, 200); // 4 entities - thermostat: RC100H + + // add_device(0x10, 158); // 62 entities - thermostat: RC300/RC310/Moduline 3000/1010H/CW400/Sense II/HPC410 + // add_device(0x38, 200); // 4 entities - thermostat: RC100H + return true; }