From 7f13c95e16a802d0706e9f5a6d5d845d7fd67631 Mon Sep 17 00:00:00 2001 From: Loic Guegan Date: Tue, 14 Jun 2022 17:13:46 +0200 Subject: [PATCH] Major refactoring: - Create pip package - Reorganized source code --- .gitignore | 2 ++ README.md | 14 +++++++++----- esds/__init__.py | 3 +++ esds.py => esds/esds.py | 0 {plugins => esds/plugins}/__init__.py | 0 {plugins => esds/plugins}/node_plugin.py | 0 {plugins => esds/plugins}/operating_states.py | 0 {plugins => esds/plugins}/power_states.py | 0 {plugins => esds/plugins}/wireless_area.py | 0 example/simulator.py | 1 - pyproject.toml | 3 +++ setup.cfg | 11 +++++++++++ tests/hidden_node_2s1r/simulator.py | 2 -- tests/mobility_eth0_bandwidth_1s1r/simulator.py | 2 -- tests/mobility_eth0_bandwidth_2s1r/simulator.py | 2 -- tests/mobility_eth0_latency_1s1r/simulator.py | 2 -- tests/mobility_eth0_latency_2s1r/simulator.py | 2 -- tests/mobility_wlan0_bandwidth_1s1r/simulator.py | 2 -- tests/mobility_wlan0_latency_1s1r/simulator.py | 2 -- tests/simple_breakpoints_auto_1n/simulator.py | 2 -- tests/simple_breakpoints_manual_1n/simulator.py | 2 -- .../simulator.py | 2 -- tests/simple_log_5n/simulator.py | 2 -- tests/simple_read_clock_2n/simulator.py | 2 -- tests/simple_read_eth0_ncom_2s1r/simulator.py | 2 -- tests/simple_read_wlan0_ncom_2s1r/simulator.py | 2 -- tests/simple_receivet_eth0_1s1r/simulator.py | 2 -- tests/simple_send_4interfaces_1s2r/simulator.py | 2 -- tests/simple_send_eth0_1s1r/simulator.py | 2 -- tests/simple_send_eth0_2s1r/simulator.py | 2 -- tests/simple_send_eth0_3s1r/simulator.py | 2 -- tests/simple_send_wlan0_1s2r/simulator.py | 2 -- tests/simple_send_wlan0_2s1r/simulator.py | 2 -- tests/simple_sendt_eth0_1s1r/simulator.py | 2 -- tests/simple_sendt_wlan0_1s2r/simulator.py | 2 -- tests/simple_wait_2n/simulator.py | 2 -- tests/simple_wait_end_3n/simulator.py | 2 -- 37 files changed, 28 insertions(+), 56 deletions(-) create mode 100644 esds/__init__.py rename esds.py => esds/esds.py (100%) rename {plugins => esds/plugins}/__init__.py (100%) rename {plugins => esds/plugins}/node_plugin.py (100%) rename {plugins => esds/plugins}/operating_states.py (100%) rename {plugins => esds/plugins}/power_states.py (100%) rename {plugins => esds/plugins}/wireless_area.py (100%) create mode 100644 pyproject.toml create mode 100644 setup.cfg diff --git a/.gitignore b/.gitignore index aabeefd..4bd1f01 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ __pycache__ esds.debug +dist +esds.egg* \ No newline at end of file diff --git a/README.md b/README.md index 44af7d6..88b03c0 100644 --- a/README.md +++ b/README.md @@ -2,12 +2,15 @@ # ESDS: An Extensible Simulator For Distributed Systems and Cyber-Physical Systems [![Dependency](https://img.shields.io/badge/Python-v3.10-blue)](https://www.python.org/) [![Pipeline](https://gitlab.com/manzerbredes/esds/badges/main/pipeline.svg)](https://gitlab.com/manzerbredes/esds/-/tree/main) -**What is ESDS ?** +### What is ESDS ? It is a short learning curve and coarse-grain network simulator. It contains the essential building blocks for the simulation of *Distributed Systems*, *Cyber-Physical Systems* (CPS), *Wireless Sensors Networks* (WSN) scenarios. It was originally designed to improve node implementation flexibility/faithfulness and mitigate the learning curve compare to existing network simulators. ESDS is part of a research project. Thus, studies and validation experiments are available online. For more details please visit http://todo.com. -**Features:** +### Installation +`> pip install esds` + +### Features - Easy to use - Small API - Agent-based: node implementations are in independant python files @@ -15,13 +18,13 @@ ESDS is part of a research project. Thus, studies and validation experiments are - Custom node mobility (by updating the network matrix) - Nodes plugins (e.g energy consumption) -**What ESDS does not implements (yet?) ?** +### What ESDS does not implements ? - Network protocols (e.g IP/TCP/UDP) - Wireless physical layer models (e.g Friis and Log-Distance models, modulation, RSSI) - Routing algorithms (e.g Shortest path) - And much more! -**Current API:** +### Simulation API - `api.args` - `api.send(,,,)` - `api.sendt(,,,,)` @@ -35,4 +38,5 @@ ESDS is part of a research project. Thus, studies and validation experiments are - `api.turn_off()` - *More details on the API in [example/sender.py](example/sender.py)* -**Documentation:** see `example/` and `tests/` +### Documentation +See `example/` and `tests/` diff --git a/esds/__init__.py b/esds/__init__.py new file mode 100644 index 0000000..bee183e --- /dev/null +++ b/esds/__init__.py @@ -0,0 +1,3 @@ +__all__ = ["simulator", "plugins"] + +from esds.esds import Simulator diff --git a/esds.py b/esds/esds.py similarity index 100% rename from esds.py rename to esds/esds.py diff --git a/plugins/__init__.py b/esds/plugins/__init__.py similarity index 100% rename from plugins/__init__.py rename to esds/plugins/__init__.py diff --git a/plugins/node_plugin.py b/esds/plugins/node_plugin.py similarity index 100% rename from plugins/node_plugin.py rename to esds/plugins/node_plugin.py diff --git a/plugins/operating_states.py b/esds/plugins/operating_states.py similarity index 100% rename from plugins/operating_states.py rename to esds/plugins/operating_states.py diff --git a/plugins/power_states.py b/esds/plugins/power_states.py similarity index 100% rename from plugins/power_states.py rename to esds/plugins/power_states.py diff --git a/plugins/wireless_area.py b/esds/plugins/wireless_area.py similarity index 100% rename from plugins/wireless_area.py rename to esds/plugins/wireless_area.py diff --git a/example/simulator.py b/example/simulator.py index aa8df54..12b7caa 100755 --- a/example/simulator.py +++ b/example/simulator.py @@ -2,7 +2,6 @@ # Load ESDS import sys -sys.path.append("../") import esds # Use numpy to construct bandwidth and latencies matrix diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..7fd26b9 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["setuptools"] +build-backend = "setuptools.build_meta" \ No newline at end of file diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 0000000..72e943a --- /dev/null +++ b/setup.cfg @@ -0,0 +1,11 @@ +[metadata] +name = esds +version = 0.0.1 +author = Loic Guegan +maintainer = Loic Guegan +description = Extensible Simulator of Distributed Systems +keywords = simulator, distributed systems, cyber-physical systems, network, wireless, wired +license = GNU LGPLv3 + +[options] +install_requires = numpy >= 1.22.4 diff --git a/tests/hidden_node_2s1r/simulator.py b/tests/hidden_node_2s1r/simulator.py index 4042e65..c8dd094 100755 --- a/tests/hidden_node_2s1r/simulator.py +++ b/tests/hidden_node_2s1r/simulator.py @@ -1,8 +1,6 @@ #!/usr/bin/env python # Load ESDS -import sys -sys.path.append("../../") import esds import numpy as np diff --git a/tests/mobility_eth0_bandwidth_1s1r/simulator.py b/tests/mobility_eth0_bandwidth_1s1r/simulator.py index 986a863..396c79e 100755 --- a/tests/mobility_eth0_bandwidth_1s1r/simulator.py +++ b/tests/mobility_eth0_bandwidth_1s1r/simulator.py @@ -1,8 +1,6 @@ #!/usr/bin/env python # Load ESDS -import sys -sys.path.append("../../") import esds import numpy as np diff --git a/tests/mobility_eth0_bandwidth_2s1r/simulator.py b/tests/mobility_eth0_bandwidth_2s1r/simulator.py index 261000c..ed58854 100755 --- a/tests/mobility_eth0_bandwidth_2s1r/simulator.py +++ b/tests/mobility_eth0_bandwidth_2s1r/simulator.py @@ -1,8 +1,6 @@ #!/usr/bin/env python # Load ESDS -import sys -sys.path.append("../../") import esds import numpy as np diff --git a/tests/mobility_eth0_latency_1s1r/simulator.py b/tests/mobility_eth0_latency_1s1r/simulator.py index bdb5d19..b03c5bc 100755 --- a/tests/mobility_eth0_latency_1s1r/simulator.py +++ b/tests/mobility_eth0_latency_1s1r/simulator.py @@ -1,8 +1,6 @@ #!/usr/bin/env python # Load ESDS -import sys -sys.path.append("../../") import esds import numpy as np diff --git a/tests/mobility_eth0_latency_2s1r/simulator.py b/tests/mobility_eth0_latency_2s1r/simulator.py index 9ed6d40..05dfee8 100755 --- a/tests/mobility_eth0_latency_2s1r/simulator.py +++ b/tests/mobility_eth0_latency_2s1r/simulator.py @@ -1,8 +1,6 @@ #!/usr/bin/env python # Load ESDS -import sys -sys.path.append("../../") import esds import numpy as np diff --git a/tests/mobility_wlan0_bandwidth_1s1r/simulator.py b/tests/mobility_wlan0_bandwidth_1s1r/simulator.py index 3f9dcf7..3826713 100755 --- a/tests/mobility_wlan0_bandwidth_1s1r/simulator.py +++ b/tests/mobility_wlan0_bandwidth_1s1r/simulator.py @@ -1,8 +1,6 @@ #!/usr/bin/env python # Load ESDS -import sys -sys.path.append("../../") import esds import numpy as np diff --git a/tests/mobility_wlan0_latency_1s1r/simulator.py b/tests/mobility_wlan0_latency_1s1r/simulator.py index f2a51f9..c28bf15 100755 --- a/tests/mobility_wlan0_latency_1s1r/simulator.py +++ b/tests/mobility_wlan0_latency_1s1r/simulator.py @@ -1,8 +1,6 @@ #!/usr/bin/env python # Load ESDS -import sys -sys.path.append("../../") import esds import numpy as np diff --git a/tests/simple_breakpoints_auto_1n/simulator.py b/tests/simple_breakpoints_auto_1n/simulator.py index 69da116..ac24a03 100755 --- a/tests/simple_breakpoints_auto_1n/simulator.py +++ b/tests/simple_breakpoints_auto_1n/simulator.py @@ -1,8 +1,6 @@ #!/usr/bin/env python # Load ESDS -import sys -sys.path.append("../../") import esds import numpy as np diff --git a/tests/simple_breakpoints_manual_1n/simulator.py b/tests/simple_breakpoints_manual_1n/simulator.py index 22e79fd..dd12ed3 100755 --- a/tests/simple_breakpoints_manual_1n/simulator.py +++ b/tests/simple_breakpoints_manual_1n/simulator.py @@ -1,8 +1,6 @@ #!/usr/bin/env python # Load ESDS -import sys -sys.path.append("../../") import esds import numpy as np diff --git a/tests/simple_breakpoints_manual_no_callback_1n/simulator.py b/tests/simple_breakpoints_manual_no_callback_1n/simulator.py index fbd8c49..fe4b491 100755 --- a/tests/simple_breakpoints_manual_no_callback_1n/simulator.py +++ b/tests/simple_breakpoints_manual_no_callback_1n/simulator.py @@ -1,8 +1,6 @@ #!/usr/bin/env python # Load ESDS -import sys -sys.path.append("../../") import esds import numpy as np diff --git a/tests/simple_log_5n/simulator.py b/tests/simple_log_5n/simulator.py index 749b699..d9346cd 100755 --- a/tests/simple_log_5n/simulator.py +++ b/tests/simple_log_5n/simulator.py @@ -1,8 +1,6 @@ #!/usr/bin/env python # Load ESDS -import sys -sys.path.append("../../") import esds import numpy as np diff --git a/tests/simple_read_clock_2n/simulator.py b/tests/simple_read_clock_2n/simulator.py index 1df5ae6..fc0e80d 100755 --- a/tests/simple_read_clock_2n/simulator.py +++ b/tests/simple_read_clock_2n/simulator.py @@ -1,8 +1,6 @@ #!/usr/bin/env python # Load ESDS -import sys -sys.path.append("../../") import esds import numpy as np diff --git a/tests/simple_read_eth0_ncom_2s1r/simulator.py b/tests/simple_read_eth0_ncom_2s1r/simulator.py index ac6fac7..85a0671 100755 --- a/tests/simple_read_eth0_ncom_2s1r/simulator.py +++ b/tests/simple_read_eth0_ncom_2s1r/simulator.py @@ -1,8 +1,6 @@ #!/usr/bin/env python # Load ESDS -import sys -sys.path.append("../../") import esds import numpy as np diff --git a/tests/simple_read_wlan0_ncom_2s1r/simulator.py b/tests/simple_read_wlan0_ncom_2s1r/simulator.py index ac6fac7..85a0671 100755 --- a/tests/simple_read_wlan0_ncom_2s1r/simulator.py +++ b/tests/simple_read_wlan0_ncom_2s1r/simulator.py @@ -1,8 +1,6 @@ #!/usr/bin/env python # Load ESDS -import sys -sys.path.append("../../") import esds import numpy as np diff --git a/tests/simple_receivet_eth0_1s1r/simulator.py b/tests/simple_receivet_eth0_1s1r/simulator.py index 40c5afa..7c3e389 100755 --- a/tests/simple_receivet_eth0_1s1r/simulator.py +++ b/tests/simple_receivet_eth0_1s1r/simulator.py @@ -1,8 +1,6 @@ #!/usr/bin/env python # Load ESDS -import sys -sys.path.append("../../") import esds import numpy as np diff --git a/tests/simple_send_4interfaces_1s2r/simulator.py b/tests/simple_send_4interfaces_1s2r/simulator.py index 9b35760..f7ebbf6 100755 --- a/tests/simple_send_4interfaces_1s2r/simulator.py +++ b/tests/simple_send_4interfaces_1s2r/simulator.py @@ -1,8 +1,6 @@ #!/usr/bin/env python # Load ESDS -import sys -sys.path.append("../../") import esds import numpy as np diff --git a/tests/simple_send_eth0_1s1r/simulator.py b/tests/simple_send_eth0_1s1r/simulator.py index 7156d78..ae5bbea 100755 --- a/tests/simple_send_eth0_1s1r/simulator.py +++ b/tests/simple_send_eth0_1s1r/simulator.py @@ -1,8 +1,6 @@ #!/usr/bin/env python # Load ESDS -import sys -sys.path.append("../../") import esds import numpy as np diff --git a/tests/simple_send_eth0_2s1r/simulator.py b/tests/simple_send_eth0_2s1r/simulator.py index 58d181d..4cce1d0 100755 --- a/tests/simple_send_eth0_2s1r/simulator.py +++ b/tests/simple_send_eth0_2s1r/simulator.py @@ -1,8 +1,6 @@ #!/usr/bin/env python # Load ESDS -import sys -sys.path.append("../../") import esds import numpy as np diff --git a/tests/simple_send_eth0_3s1r/simulator.py b/tests/simple_send_eth0_3s1r/simulator.py index 5b40961..84c0de0 100755 --- a/tests/simple_send_eth0_3s1r/simulator.py +++ b/tests/simple_send_eth0_3s1r/simulator.py @@ -1,8 +1,6 @@ #!/usr/bin/env python # Load ESDS -import sys -sys.path.append("../../") import esds import numpy as np diff --git a/tests/simple_send_wlan0_1s2r/simulator.py b/tests/simple_send_wlan0_1s2r/simulator.py index 3f007ba..e721a93 100755 --- a/tests/simple_send_wlan0_1s2r/simulator.py +++ b/tests/simple_send_wlan0_1s2r/simulator.py @@ -1,8 +1,6 @@ #!/usr/bin/env python # Load ESDS -import sys -sys.path.append("../../") import esds import numpy as np diff --git a/tests/simple_send_wlan0_2s1r/simulator.py b/tests/simple_send_wlan0_2s1r/simulator.py index 58d181d..4cce1d0 100755 --- a/tests/simple_send_wlan0_2s1r/simulator.py +++ b/tests/simple_send_wlan0_2s1r/simulator.py @@ -1,8 +1,6 @@ #!/usr/bin/env python # Load ESDS -import sys -sys.path.append("../../") import esds import numpy as np diff --git a/tests/simple_sendt_eth0_1s1r/simulator.py b/tests/simple_sendt_eth0_1s1r/simulator.py index 7156d78..ae5bbea 100755 --- a/tests/simple_sendt_eth0_1s1r/simulator.py +++ b/tests/simple_sendt_eth0_1s1r/simulator.py @@ -1,8 +1,6 @@ #!/usr/bin/env python # Load ESDS -import sys -sys.path.append("../../") import esds import numpy as np diff --git a/tests/simple_sendt_wlan0_1s2r/simulator.py b/tests/simple_sendt_wlan0_1s2r/simulator.py index 3f007ba..e721a93 100755 --- a/tests/simple_sendt_wlan0_1s2r/simulator.py +++ b/tests/simple_sendt_wlan0_1s2r/simulator.py @@ -1,8 +1,6 @@ #!/usr/bin/env python # Load ESDS -import sys -sys.path.append("../../") import esds import numpy as np diff --git a/tests/simple_wait_2n/simulator.py b/tests/simple_wait_2n/simulator.py index 1df5ae6..fc0e80d 100755 --- a/tests/simple_wait_2n/simulator.py +++ b/tests/simple_wait_2n/simulator.py @@ -1,8 +1,6 @@ #!/usr/bin/env python # Load ESDS -import sys -sys.path.append("../../") import esds import numpy as np diff --git a/tests/simple_wait_end_3n/simulator.py b/tests/simple_wait_end_3n/simulator.py index 5bc3c61..4d1763e 100755 --- a/tests/simple_wait_end_3n/simulator.py +++ b/tests/simple_wait_end_3n/simulator.py @@ -1,8 +1,6 @@ #!/usr/bin/env python # Load ESDS -import sys -sys.path.append("../../") import esds import numpy as np