From cfb24b52e46b7846fe67d0c9a631fa062622beb6 Mon Sep 17 00:00:00 2001 From: jkerdreux-imt <jerome.kerdreux@imt-atlantique.fr> Date: Sat, 11 Jan 2025 01:37:37 +0100 Subject: [PATCH] Patching several old test - This should works w/ new Python, and xAAL libs - Formatting done --- libs/lib/examples/args_kwargs.py | 26 ++++++------- libs/lib/examples/func_args.py | 24 ++++++------ libs/lib/examples/test_async.py | 52 +++++++++++++------------ libs/lib/examples/test_bloc_setattr.py | 13 ++++--- libs/lib/examples/test_cleanup.py | 8 ++-- libs/lib/examples/test_detect_gevent.py | 10 ++++- libs/lib/examples/test_event.py | 16 +++++--- libs/lib/examples/test_spawn.py | 8 ++-- libs/lib/examples/test_spawn_gevent.py | 11 +++--- libs/lib/examples/test_static_var.py | 4 +- libs/lib/examples/test_timer.py | 26 +++++++------ libs/lib/examples/udp_client.py | 7 ++-- libs/lib/examples/udp_serv.py | 33 +++++++++------- 13 files changed, 137 insertions(+), 101 deletions(-) diff --git a/libs/lib/examples/args_kwargs.py b/libs/lib/examples/args_kwargs.py index eee22374..5ee1e92b 100644 --- a/libs/lib/examples/args_kwargs.py +++ b/libs/lib/examples/args_kwargs.py @@ -1,28 +1,28 @@ - -from xaal.aiolib.core import Hook,HookType +from xaal.lib.aioengine import Hook, HookType import asyncio -async def test1(foo,bar=None): - print('='*78) + +async def test1(foo, bar=None): + print('=' * 78) print('Foo: %s' % foo) print('Bar: %s' % bar) -async def test2(*args,**kwargs): - print('='*78) +async def test2(*args, **kwargs): + print('=' * 78) print('Args: %s' % str(args)) print('Kwargs: %s' % str(kwargs)) - -async def goo(func,*args,**kwargs): +async def goo(func, *args, **kwargs): print("Args: %s" % args) print("kwarrgs: %s" % kwargs) - h = Hook(HookType.start,func,*args,**kwargs) - print('*'*78) + h = Hook(HookType.start, func, *args, **kwargs) + print('*' * 78) print("Args: %s" % h.args) print("kwarrgs: %s" % h.kwargs) - await h.func(*h.args,**h.kwargs) + await h.func(*h.args, **h.kwargs) + -asyncio.run(goo(test1,'Foo',bar=12)) -asyncio.run(goo(test2,'Foo',bar=12)) \ No newline at end of file +asyncio.run(goo(test1, 'Foo', bar=12)) +asyncio.run(goo(test2, 'Foo', bar=12)) diff --git a/libs/lib/examples/func_args.py b/libs/lib/examples/func_args.py index 764b4d35..49fc9bda 100644 --- a/libs/lib/examples/func_args.py +++ b/libs/lib/examples/func_args.py @@ -1,6 +1,5 @@ - -from xaal.lib import core,helpers -from xaal.lib import aiohelpers +from xaal.lib import core, helpers +from xaal.lib import aiohelpers import asyncio import time @@ -9,17 +8,20 @@ import logging logger = logging.getLogger(__name__) helpers.setup_console_logger() -def foo(arg0,arg1): + +def foo(arg0, arg1): print(f"{arg0} {arg1}") -async def goo(arg0,arg1): + +async def goo(arg0, arg1): print(f"{arg0} {arg1}") + @aiohelpers.spawn -def bar(arg0,arg1): +def bar(arg0, arg1): print(f"{arg0} {arg1}") logger.warning('sleep') - time.sleep(10) + time.sleep(5) logger.warning('eof sleep') @@ -30,11 +32,11 @@ if __name__ == '__main__': print(f" {core.get_args_method(goo)}") print(f" {core.get_args_method(bar)}") - t1=asyncio.ensure_future(goo('goo1','goo2')) - #t2=asyncio.ensure_future(bar('goo1','goo2')) - t2=bar('goo1','goo2') + t1 = asyncio.ensure_future(goo('goo1', 'goo2')) + # t2=asyncio.ensure_future(bar('goo1','goo2')) + t2 = bar('goo1', 'goo2') - futures = asyncio.wait([t1,]) + futures = asyncio.wait([t1]) logger.debug('Waiting..') asyncio.get_event_loop().run_until_complete(futures) diff --git a/libs/lib/examples/test_async.py b/libs/lib/examples/test_async.py index 83bd41d5..af698230 100644 --- a/libs/lib/examples/test_async.py +++ b/libs/lib/examples/test_async.py @@ -1,4 +1,4 @@ -from xaal.lib.core import Engine +from xaal.lib import Engine from xaal.lib.network import NetworkConnector from xaal.lib.helpers import setup_console_logger from xaal.schemas import devices @@ -6,24 +6,27 @@ import functools import asyncio from decorator import decorator + @decorator -def spawn(func,*args,**kwargs): +def spawn(func, *args, **kwargs): print(f"Calling {func.__name__}") - asyncio.ensure_future(func(*args,**kwargs)) + asyncio.ensure_future(func(*args, **kwargs)) def spawn0(func): @functools.wraps(func) - def spawn_future(*args,**kwargs): + def spawn_future(*args, **kwargs): print(f"Calling {func.__name__}") - asyncio.ensure_future(func(*args,**kwargs)) + asyncio.ensure_future(func(*args, **kwargs)) + return spawn_future + class AioNetworkConnector(NetworkConnector): async def receive(self): - data=NetworkConnector.receive(self) - #print(data) + data = NetworkConnector.receive(self) + # print(data) print("receive") return data @@ -38,17 +41,19 @@ class AioEngine(Engine): def handler(data): - #print(data) + # print(data) print("hanlder") + @spawn async def toggle(dev): print("Toggle") await asyncio.sleep(2) - dev.attributes['light']=False if dev.attributes['light'] else True + dev.attributes['light'] = False if dev.attributes['light'] else True + @spawn -async def test(dev,_foo): +async def test(dev, _foo): print(f"test.... {dev} {_foo}") @@ -57,8 +62,9 @@ async def foo(): print("Foo") await asyncio.sleep(30) + async def test_receive(): - net = AioNetworkConnector('224.0.29.200',1236,10) + net = AioNetworkConnector('224.0.29.200', 1236, 10) net.connect() while True: await net.receive() @@ -66,29 +72,28 @@ async def test_receive(): def main(): setup_console_logger() - #loop = asyncio.new_event_loop() + # loop = asyncio.new_event_loop() eng = AioEngine() - #eng.add_rx_handler(handler) + # eng.add_rx_handler(handler) - - import sys from xaal.lib import tools - dev = devices.lamp_toggle(tools.get_uuid(sys.argv[1])) + dev = devices.lamp_toggle(tools.get_random_uuid()) dev.info = 'FooBar' eng.add_device(dev) - ptr = functools.partial(toggle,dev) + ptr = functools.partial(toggle, dev) dev.methods['toggle'] = ptr - eng.add_timer(ptr,10) + eng.add_timer(ptr, 10) - ptr = functools.partial(test,dev) + ptr = functools.partial(test, dev) dev.methods['test'] = ptr - tasks = [ asyncio.ensure_future(eng.run()), - # asyncio.ensure_future(foo()), - # asyncio.ensure_future(test_receive()), - ] + tasks = [ + asyncio.ensure_future(eng.run()), + # asyncio.ensure_future(foo()), + # asyncio.ensure_future(test_receive()), + ] loop = asyncio.get_event_loop() loop.run_until_complete(asyncio.wait(tasks)) @@ -99,4 +104,3 @@ if __name__ == '__main__': main() except KeyboardInterrupt: print("Bye bye") - diff --git a/libs/lib/examples/test_bloc_setattr.py b/libs/lib/examples/test_bloc_setattr.py index efd5038c..111565e7 100644 --- a/libs/lib/examples/test_bloc_setattr.py +++ b/libs/lib/examples/test_bloc_setattr.py @@ -1,4 +1,3 @@ - class Foo: def __init__(self): self.goo = 'Goo' @@ -9,7 +8,7 @@ class Foo: return self.__bar @bar.setter - def bar(self,value): + def bar(self, value): self.__bar = value def __setattr__(self, name, value): @@ -18,18 +17,22 @@ class Foo: propobj.fset(self, value) return - if name not in ['goo','_Foo__bar']: + if name not in ['goo', '_Foo__bar', 'foo']: raise AttributeError(f'unknow attribute {name}') self.__dict__[name] = value def dump(self): print(self.__dict__) - + + a = Foo() print(a.bar) a.bar = 'boo' a.goo = 'goo' a.foo = 'foo' +try: + a.baz = 'baz' +except AttributeError as e: + print(e) a.dump() - diff --git a/libs/lib/examples/test_cleanup.py b/libs/lib/examples/test_cleanup.py index 9fda1e51..4983f4e7 100644 --- a/libs/lib/examples/test_cleanup.py +++ b/libs/lib/examples/test_cleanup.py @@ -1,12 +1,14 @@ -from xaal.lib import AsyncEngine,helpers +from xaal.lib import AsyncEngine, helpers import functools helpers.setup_console_logger() + def shutdown(eng): eng.shutdown() + eng = AsyncEngine() -ptr = functools.partial(shutdown,eng) -eng.add_timer(ptr,2) +ptr = functools.partial(shutdown, eng) +eng.add_timer(ptr, 2) eng.run() diff --git a/libs/lib/examples/test_detect_gevent.py b/libs/lib/examples/test_detect_gevent.py index 805a1894..706eb30e 100644 --- a/libs/lib/examples/test_detect_gevent.py +++ b/libs/lib/examples/test_detect_gevent.py @@ -1,7 +1,15 @@ +# from gevent import monkey +# monkey.patch_all() + + def is_gevent_monkey_patched(): try: from gevent import monkey except ImportError: + print("gevent is not installed") return False else: - return monkey.is_module_patched('__builtin__') \ No newline at end of file + return monkey.is_module_patched('__builtin__') + + +print(is_gevent_monkey_patched()) diff --git a/libs/lib/examples/test_event.py b/libs/lib/examples/test_event.py index 92b0192a..87500222 100644 --- a/libs/lib/examples/test_event.py +++ b/libs/lib/examples/test_event.py @@ -2,17 +2,20 @@ import asyncio event = asyncio.Event() + async def test1(): await event.wait() print('Test1') + async def test2(): await event.wait() print('Test2') + async def run(): print('running') - await asyncio.sleep(10) + await asyncio.sleep(5) event.set() print('event set') await asyncio.sleep(1) @@ -21,8 +24,11 @@ async def run(): loop = asyncio.get_event_loop() -t1=loop.create_task(test1()) -t2=loop.create_task(test2()) -t3=loop.create_task(run()) +t1 = loop.create_task(test1()) +t2 = loop.create_task(test2()) +t3 = loop.create_task(run()) -loop.run_forever() +try: + loop.run_forever() +except KeyboardInterrupt: + print('done') diff --git a/libs/lib/examples/test_spawn.py b/libs/lib/examples/test_spawn.py index 6cfc785b..52a43d74 100644 --- a/libs/lib/examples/test_spawn.py +++ b/libs/lib/examples/test_spawn.py @@ -1,21 +1,25 @@ """ Simple test to study the death the engine with a running thread. """ + import asyncio -from xaal.lib import AsyncEngine,helpers +from xaal.lib import AsyncEngine, helpers import time + @helpers.spawn def test1(event): while not event.is_set(): time.sleep(1) print('test1') + async def test2(): while 1: await asyncio.sleep(1) print('test2') + eng = AsyncEngine() print(eng.new_task(test2())) @@ -24,5 +28,3 @@ test1(ev) eng.on_stop(ev.set) # hit ctrl-c now eng.run() - - diff --git a/libs/lib/examples/test_spawn_gevent.py b/libs/lib/examples/test_spawn_gevent.py index 8c556ac1..8f5cbe2b 100644 --- a/libs/lib/examples/test_spawn_gevent.py +++ b/libs/lib/examples/test_spawn_gevent.py @@ -1,17 +1,18 @@ -from gevent import monkey;monkey.patch_all(thread=False) +from gevent import monkey + +monkey.patch_all(thread=False) import gevent -from xaal.lib import AsyncEngine,helpers +from xaal.lib import AsyncEngine, helpers helpers.setup_console_logger() + def loop(): while 1: print('loop') gevent.sleep(1) + eng = AsyncEngine() gevent.spawn(loop) eng.run() - - - diff --git a/libs/lib/examples/test_static_var.py b/libs/lib/examples/test_static_var.py index 9ff37519..a9d04035 100644 --- a/libs/lib/examples/test_static_var.py +++ b/libs/lib/examples/test_static_var.py @@ -2,7 +2,7 @@ from xaal.lib import helpers class Goo: - def test(self,name): + def test(self, name): self.test.counter = getattr(self.test, 'counter', 0) + 1 print(f"{name} => {self.test.counter}") @@ -12,6 +12,7 @@ def test_func(name='Foo'): print(f"{name} => {test_func.counter}") test_func.counter += 1 + test_func() test_func('Bar') test_func('Baz') @@ -22,4 +23,3 @@ try: goo.test('Goo') except AttributeError as e: print(f"AttributeError: {e}") - diff --git a/libs/lib/examples/test_timer.py b/libs/lib/examples/test_timer.py index ed3f819e..7727cdab 100644 --- a/libs/lib/examples/test_timer.py +++ b/libs/lib/examples/test_timer.py @@ -1,41 +1,45 @@ -from xaal.aiolib import Engine,helpers +from xaal.lib import AsyncEngine, helpers +from xaal.lib.aioengine import console + import asyncio import logging import functools - helpers.setup_console_logger() logger = logging.getLogger('test-timer') + async def sleep1(): logger.warning('Sleep1 start') await asyncio.sleep(15) logger.warning('Sleep1 done') + async def sleep2(): logger.warning('Sleep2 start') await asyncio.sleep(20) logger.warning('Sleep2 done') + async def _console(locals): await console(locals=locals) -async def test(foo,bar=None): - print('='*78) +async def test(foo, bar=None): + print('=' * 78) print('Foo: %s' % foo) print('Bar: %s' % bar) -eng = Engine() -eng.add_timer(sleep1,1,1) -eng.add_timer(sleep2,1,1) -eng.on_start(test,'Foo',bar=12) +eng = AsyncEngine() +eng.add_timer(sleep1, 1, 1) +eng.add_timer(sleep2, 1, 1) +eng.on_start(test, 'Foo', bar=12) -#ptr = functools.partial(_console,locals()) -#eng.add_timer(ptr,1,2) +ptr = functools.partial(_console, locals()) +eng.add_timer(ptr, 1, 2) -#asyncio.ensure_future(console(locals())) +# asyncio.ensure_future(console(locals())) try: eng.run() diff --git a/libs/lib/examples/udp_client.py b/libs/lib/examples/udp_client.py index 0db087c3..b4e81934 100644 --- a/libs/lib/examples/udp_client.py +++ b/libs/lib/examples/udp_client.py @@ -16,6 +16,7 @@ class EchoClientProtocol: print("Received:", data.decode()) print("Close the socket") + assert self.transport is not None self.transport.close() def error_received(self, exc): @@ -35,8 +36,8 @@ async def main(): message = "Hello World!" transport, protocol = await loop.create_datagram_endpoint( - lambda: EchoClientProtocol(message, on_con_lost), - remote_addr=('127.0.0.1', 9999)) + lambda: EchoClientProtocol(message, on_con_lost), remote_addr=('127.0.0.1', 9999) + ) try: await on_con_lost @@ -44,4 +45,4 @@ async def main(): transport.close() -asyncio.run(main()) \ No newline at end of file +asyncio.run(main()) diff --git a/libs/lib/examples/udp_serv.py b/libs/lib/examples/udp_serv.py index b58e67ed..40be68f7 100644 --- a/libs/lib/examples/udp_serv.py +++ b/libs/lib/examples/udp_serv.py @@ -6,9 +6,10 @@ import uuid ADDR = '224.0.29.200' PORT = 1230 + class EchoServerProtocol(asyncio.Protocol): - def __init__(self,on_con_lost): - #self.on_con_lost = on_con_lost + def __init__(self, on_con_lost): + # self.on_con_lost = on_con_lost pass def connection_made(self, transport): @@ -19,23 +20,24 @@ class EchoServerProtocol(asyncio.Protocol): def connection_lost(self, exc): print("Connection closed") - #self.on_con_lost.set_result(True) - - def datagram_send(self,data): - self.transport.sendto(data,(ADDR,PORT)) + # self.on_con_lost.set_result(True) + + def datagram_send(self, data): + self.transport.sendto(data, (ADDR, PORT)) def datagram_received(self, data, addr): print('Received %r from %s' % (data, addr)) -async def test_send(protocol,uid): +async def test_send(protocol, uid): while True: msg = f"msg from {uid}" protocol.datagram_send(msg.encode("utf-8")) await asyncio.sleep(5) + def new_sock(): - sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM,socket.IPPROTO_UDP) + sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP) try: # Linux + MacOS + BSD sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1) @@ -43,19 +45,20 @@ def new_sock(): # Windows sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) sock.bind(('0.0.0.0', PORT)) - mreq = struct.pack('4sl',socket.inet_aton(ADDR),socket.INADDR_ANY) - sock.setsockopt(socket.IPPROTO_IP,socket.IP_ADD_MEMBERSHIP,mreq) - sock.setsockopt(socket.IPPROTO_IP,socket.IP_MULTICAST_TTL,10) + mreq = struct.pack('4sl', socket.inet_aton(ADDR), socket.INADDR_ANY) + sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq) + sock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, 10) return sock + async def main(): loop = asyncio.get_running_loop() print("Starting UDP server") on_con_lost = loop.create_future() - transport, protocol = await loop.create_datagram_endpoint( lambda: EchoServerProtocol(on_con_lost,), sock=new_sock()) - #transport, protocol = await loop.create_datagram_endpoint( lambda: EchoServerProtocol(on_con_lost), local_addr=(ADDR, PORT),reuse_port=True) - asyncio.ensure_future(test_send(protocol,uuid.uuid1())) + transport, protocol = await loop.create_datagram_endpoint(lambda: EchoServerProtocol(on_con_lost), sock=new_sock()) + # transport, protocol = await loop.create_datagram_endpoint( lambda: EchoServerProtocol(on_con_lost), local_addr=(ADDR, PORT),reuse_port=True) + asyncio.ensure_future(test_send(protocol, uuid.uuid1())) try: await asyncio.sleep(3600) # Serve for 1 hour. @@ -67,4 +70,4 @@ if __name__ == '__main__': try: asyncio.run(main()) except KeyboardInterrupt: - print("Bye Bye") \ No newline at end of file + print("Bye Bye") -- GitLab