mirror of
https://github.com/micropython/micropython.git
synced 2025-09-07 10:20:52 +02:00
Test is for an issue reported on the micropython-lib Discord as effecting the rp2 port umqtt.simple interface when reconnecting with TLS, however it's a more generic problem. Currently this test fails on RPI_PICO_W and ESP32_GENERIC_C3 (and no doubt others). Fixes are in the subsequent commits. This work was funded through GitHub Sponsors. Signed-off-by: Angus Gratton <angus@redyak.com.au>
51 lines
1.1 KiB
Python
51 lines
1.1 KiB
Python
# Ensure that SSLSockets can be allocated sequentially
|
|
# without running out of available memory.
|
|
try:
|
|
import io
|
|
import tls
|
|
except ImportError:
|
|
print("SKIP")
|
|
raise SystemExit
|
|
|
|
import unittest
|
|
|
|
|
|
class TestSocket(io.IOBase):
|
|
def write(self, buf):
|
|
return len(buf)
|
|
|
|
def readinto(self, buf):
|
|
return 0
|
|
|
|
def ioctl(self, cmd, arg):
|
|
return 0
|
|
|
|
def setblocking(self, value):
|
|
pass
|
|
|
|
|
|
ITERS = 128
|
|
|
|
|
|
class TLSNoLeaks(unittest.TestCase):
|
|
def test_unique_context(self):
|
|
for n in range(ITERS):
|
|
print(n)
|
|
s = TestSocket()
|
|
ctx = tls.SSLContext(tls.PROTOCOL_TLS_CLIENT)
|
|
ctx.verify_mode = tls.CERT_NONE
|
|
s = ctx.wrap_socket(s, do_handshake_on_connect=False)
|
|
|
|
def test_shared_context(self):
|
|
# Single SSLContext, multiple sockets
|
|
ctx = tls.SSLContext(tls.PROTOCOL_TLS_CLIENT)
|
|
ctx.verify_mode = tls.CERT_NONE
|
|
for n in range(ITERS):
|
|
print(n)
|
|
s = TestSocket()
|
|
s = ctx.wrap_socket(s, do_handshake_on_connect=False)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|