1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-04-22 21:23:07 +03:00
esp8266/tests/device/test_ClientContext/test_ClientContext.py
david gauchard d5cbd91775 device test for #4516 (WiFiClient leaking) (#4549)
* device test for #4516 (WiFiClient leaking)

* simply count the number of connections that do not change heap

* remove unused heapLost

* + python server (to not depend on gateway's opened tcp port)

* remove old&bad define

* fix another old address
2018-03-23 11:30:59 -03:00

61 lines
1.6 KiB
Python

from mock_decorators import setup, teardown
from flask import Flask, request
from threading import Thread
import socket
import select
import sys
import os
@setup('WiFi release ClientContext')
def setup_tcpsrv(e):
global thread
app = Flask(__name__)
def run():
global running
running = False
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
for port in range(8266, 8285 + 1):
try:
print >>sys.stderr, 'trying port', port
server_address = ("0.0.0.0", port)
sock.bind(server_address)
sock.listen(1)
running = True
break
except Exception:
print >>sys.stderr, 'busy'
if not running:
return
print >>sys.stderr, 'starting up on %s port %s' % server_address
print >>sys.stderr, 'waiting for connections'
while running:
print >>sys.stderr, 'loop'
readable, writable, errored = select.select([sock], [], [], 1.0)
if readable:
connection, client_address = sock.accept()
try:
print >>sys.stderr, 'client connected:', client_address
finally:
print >>sys.stderr, 'close'
connection.shutdown(socket.SHUT_RDWR)
connection.close()
thread = Thread(target=run)
thread.start()
@teardown('WiFi release ClientContext')
def teardown_tcpsrv(e):
global thread
global running
print >>sys.stderr, 'closing'
running = False
thread.join()
return 0