diff --git a/demo_multi_client.py b/demo_multi_client.py new file mode 100644 index 0000000..e4a9d9e --- /dev/null +++ b/demo_multi_client.py @@ -0,0 +1,51 @@ +import matplotlib.pyplot as plt +import socket +import time +import threading + +from coapthon.client.helperclient import HelperClient +from coapthon.client.superviseur_local import SuperviseurLocal, SuperviseurLocalFiltre +from coapthon.utils import parse_uri + +N_rep = 100 +N_client = 25 + +host, port, path = parse_uri("coap://localhost:5683/basic") +try: + tmp = socket.gethostbyname(host) + host = tmp +except socket.gaierror: + pass + +clients = [HelperClient(server=(host, port)) for _ in range(N_client)] + +supers = [] +for client in clients: + client.protocol.superviseur = SuperviseurLocal(client) + supers.append(client.protocol.superviseur) + +def experience(client, N_rep): + for n_rep in range(N_rep): + response = client.get(path) + client.stop() + +threads = [threading.Thread(target=experience, args=[client, N_rep], name='Thread-experience-{}'.format(n)) for n, client in enumerate(clients)] + +for thread in threads : + thread.start() + +for thread in threads : + thread.join() + +fig, axs = plt.subplots(3, sharex=True) +for n, ax in enumerate(axs) : + ax.hist(supers[n].RTTs, 100, density=True) + +axs[-1].set_xlabel('RTT (s)') +# axs[-1].set_xlim(left=0) + +fig.tight_layout() +fig.savefig('demo.png') + +for super in supers: + print(super.min_RTT, super.avg_RTT, super.tau_retransmission, super._n_tokken) \ No newline at end of file