Skip to content

fix device tests #6861

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 13 commits into from
Dec 3, 2019
10 changes: 8 additions & 2 deletions tests/device/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,7 @@ UPLOAD_BAUD ?= 460800
UPLOAD_BOARD ?= nodemcu
BS_DIR ?= libraries/BSTest
DEBUG_LEVEL ?= lvl=None____
#FQBN ?= esp8266com:esp8266:generic:CpuFrequency=80,FlashFreq=40,FlashMode=dio,UploadSpeed=115200,FlashSize=4M1M,LwIPVariant=v2mss536,ResetMethod=none,Debug=Serial,$(DEBUG_LEVEL)
FQBN ?= esp8266com:esp8266:generic:xtal=160,FlashFreq=40,FlashMode=dio,baud=115200,eesz=4M1M,ip=lm2f,ResetMethod=none,dbg=Serial,$(DEBUG_LEVEL)
FQBN ?= esp8266com:esp8266:generic:xtal=160,FlashFreq=40,FlashMode=dio,baud=115200,eesz=4M1M,ip=lm2f,ResetMethod=nodemcu,dbg=Serial,$(DEBUG_LEVEL)
BUILD_TOOL := $(ARDUINO_IDE_PATH)/arduino-builder
TEST_CONFIG := test_env.cfg
TEST_REPORT_XML := test_report.xml
Expand All @@ -29,6 +28,13 @@ else
#UPLOAD_VERBOSE_FLAG = -v
endif

help:
@echo 'make list - show list of tests'
@echo 'make [V=1] sometest/sometest.ino - run one test'
@echo 'make [V=1] all - run all tests'
@echo 'variables needed: $$ARDUINO_IDE_PATH'

list: showtestlist

all: count tests test_report

Expand Down
2 changes: 1 addition & 1 deletion tests/device/test_WiFiServer/test_WiFiServer.ino
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ TEST_CASE("Simple echo server", "[WiFiServer]")

int replyCount = 0;
while (millis() - start < timeout) {
delay(50);
MDNS.update();
WiFiClient client = server.available();
if (!client) {
continue;
Expand Down
4 changes: 2 additions & 2 deletions tests/device/test_WiFiServer/test_WiFiServer.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,11 @@ def echo_client_thread():
sock.connect((server_address, 5000))
sock.settimeout(1.0)
buf = 'a' * 1023 + '\n'
sock.sendall(buf)
sock.sendall(bytes(buf.encode('utf-8')))
data = ''
retries = 0
while len(data) < 1024 and retries < 3:
data += sock.recv(1024)
data += sock.recv(1024).decode('utf-8')
retries += 1
print('Received {} bytes'.format(len(data)))
if len(data) != 1024:
Expand Down
2 changes: 1 addition & 1 deletion tests/device/test_http_client/test_http_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ def redirect302():
return redirect("http://{}:8088/target".format(request.args['host']), code=302)
@app.route("/redirect303", methods = ['POST'])
def redirect303():
return redirect("http://{}:8088/target".format(request.data), code=303)
return redirect("http://{}:8088/target".format(request.data.decode()), code=303)
@app.route("/redirect307")
def redirect307():
return redirect("http://{}:8088/target".format(request.args['host']), code=307)
Expand Down
14 changes: 14 additions & 0 deletions tests/device/test_http_server/test_http_server.ino
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,10 @@ TEST_CASE("HTTP GET Parameters", "[HTTPServer]")
server.on("/get", HTTP_GET, &handle_request);
uint32_t startTime = millis();
while(siteHits == 0 && (millis() - startTime) < 10000)
{
MDNS.update();
server.handleClient();
}
REQUIRE(siteHits > 0 && siteData.equals("var1 = val with spaces\nva=r+ = so&me%"));
}
}
Expand All @@ -68,7 +71,10 @@ TEST_CASE("HTTP POST Parameters", "[HTTPServer]")
server.on("/post", HTTP_POST, &handle_request);
uint32_t startTime = millis();
while(siteHits == 0 && (millis() - startTime) < 10000)
{
MDNS.update();
server.handleClient();
}
REQUIRE(siteHits > 0 && siteData.equals("var2 = val with spaces"));
}
}
Expand All @@ -81,11 +87,15 @@ TEST_CASE("HTTP GET+POST Parameters", "[HTTPServer]")
server.on("/get_and_post", HTTP_POST, &handle_request);
uint32_t startTime = millis();
while(siteHits == 0 && (millis() - startTime) < 10000)
{
MDNS.update();
server.handleClient();
}
REQUIRE(siteHits > 0 && siteData.equals("var3 = val with spaces\nva&r+ = so=me%"));
}
}

#if 0
TEST_CASE("HTTP Upload", "[HTTPServer]")
{
{
Expand All @@ -103,10 +113,14 @@ TEST_CASE("HTTP Upload", "[HTTPServer]")
});
uint32_t startTime = millis();
while(siteHits == 0 && (millis() - startTime) < 10000)
{
MDNS.update();
server.handleClient();
}
REQUIRE(siteHits > 0 && siteData.equals("test.txt:16\nvar4 = val with spaces"));
}
}
#endif

void loop()
{
Expand Down
50 changes: 27 additions & 23 deletions tests/device/test_http_server/test_http_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,20 @@
from poster3.encode import MultipartParam
from poster3.encode import multipart_encode
from poster3.streaminghttp import register_openers
import sys
import urllib

def http_test(res, url, get=None, post=None):
response = ''
try:
if get:
url += '?' + urllib.urlencode(get)
url += '?' + urllib.parse.urlencode(get)
if post:
post = urllib.parse.quote(post)
post = bytes(urllib.parse.urlencode(post).encode('utf-8'))
request = urllib.request.urlopen(url, post, 2)
response = request.read()
except:
except Exception as e:
print('http_test: Exception: ', e, file=sys.stderr)
return 1
if response != res:
return 1
Expand Down Expand Up @@ -51,23 +53,25 @@ def testRun():
def teardown_http_getpost_params(e):
return 0

@setup('HTTP Upload')
def setup_http_upload(e):
def testRun():
response = ''
try:
register_openers()
p = MultipartParam("file", "0123456789abcdef", "test.txt", "text/plain; charset=utf8")
datagen, headers = multipart_encode( [("var4", "val with spaces"), p] )
request = urllib.request('http://etd.local/upload', datagen, headers)
response = urllib.request.urlopen(request, None, 2).read()
except:
return 1
if response != 'test.txt:16\nvar4 = val with spaces':
return 1
return 0
Thread(target=testRun).start()

@teardown('HTTP Upload')
def teardown_http_upload(e):
return 0
#@setup('HTTP Upload')
#def setup_http_upload(e):
# def testRun():
# response = ''
# try:
# register_openers()
# p = MultipartParam("file", "0123456789abcdef", "test.txt", "text/plain; charset=utf8")
# datagen, headers = multipart_encode( [("var4", "val with spaces"), p] )
# request = urllib.request.Request('http://etd.local/upload', datagen, headers)
# opener = urllib.request.build_opener()
# response = opener.open(request)
# except Exception as e:
# print('testRun: Exception: ', e, file=sys.stderr)
# return 1
# if response != 'test.txt:16\nvar4 = val with spaces':
# return 1
# return 0
# Thread(target=testRun).start()
#
#@teardown('HTTP Upload')
#def teardown_http_upload(e):
# return 0
2 changes: 1 addition & 1 deletion tests/device/test_overrides/test_overrides.ino
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ TEST_CASE("ADC_MODE override works", "[core]")
auto vcc = ESP.getVcc();
Serial.printf("VCC: %d\r\n", vcc);
Serial.printf("A0: %d\r\n", analogRead(A0));
CHECK(vcc > 3000 && vcc < 3600);
CHECK(vcc > 2500 && vcc < 3600);
}

TEST_CASE("RF_PRE_INIT override works", "[core]")
Expand Down
4 changes: 2 additions & 2 deletions tests/device/test_tests/test_tests.ino
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,15 @@ TEST_CASE("this test runs successfully", "[bs]")
REQUIRE(2 * 2 == 4);
}

TEST_CASE("another test which fails", "[bs][fail]")
TEST_CASE("another test which successfully fails", "[bs][fail]")
{
CHECK(true);
CHECK(false);
CHECK(true);
CHECK(false);
}

TEST_CASE("another test which fails and crashes", "[bs][fail]")
TEST_CASE("another test which successfully fails and crashes", "[bs][fail]")
{
CHECK(true);
REQUIRE(false);
Expand Down