summaryrefslogtreecommitdiff
path: root/manual
diff options
context:
space:
mode:
authorLoic Guegan <manzerbredes@mailbox.org>2022-09-12 13:22:46 +0200
committerLoic Guegan <manzerbredes@mailbox.org>2022-09-12 13:22:46 +0200
commit47c71c85c9d018fc42a7182fc7f6265e3a4e5388 (patch)
treedc1f0a2860349e8bfe85f4f6f9cce202fbbe604d /manual
parentc75fbe854de2a0a881045fbd19a79eb8dcc898e2 (diff)
Update manual
Diffstat (limited to 'manual')
-rw-r--r--manual/assets/components.pdf (renamed from manual/components.pdf)bin8704 -> 8704 bytes
-rw-r--r--manual/assets/node.py6
-rw-r--r--manual/assets/output.txt3
-rw-r--r--manual/assets/platform.yaml19
-rw-r--r--manual/manual.pdfbin116782 -> 280551 bytes
-rw-r--r--manual/manual.tex43
6 files changed, 63 insertions, 8 deletions
diff --git a/manual/components.pdf b/manual/assets/components.pdf
index 49afc21..49afc21 100644
--- a/manual/components.pdf
+++ b/manual/assets/components.pdf
Binary files differ
diff --git a/manual/assets/node.py b/manual/assets/node.py
new file mode 100644
index 0000000..4c03dbf
--- /dev/null
+++ b/manual/assets/node.py
@@ -0,0 +1,6 @@
+def execute(api):
+ role=api.args # "sender" or "receiver" cf. platform.yaml
+ if role == "sender":
+ api.send("wlan0","MY MESSAGE",10,None)
+ else:
+ api.receive("wlan0")
diff --git a/manual/assets/output.txt b/manual/assets/output.txt
new file mode 100644
index 0000000..858bd83
--- /dev/null
+++ b/manual/assets/output.txt
@@ -0,0 +1,3 @@
+[t=0.000,src=n0] Send 10 bytes on wlan0
+[t=0.016,src=n1] Receive 10 bytes on wlan0
+[t=0.016,src=esds] Simulation ends
diff --git a/manual/assets/platform.yaml b/manual/assets/platform.yaml
new file mode 100644
index 0000000..ca5cd91
--- /dev/null
+++ b/manual/assets/platform.yaml
@@ -0,0 +1,19 @@
+general:
+ interferences: on # Turns on interferences
+
+nodes:
+ count: 2
+ implementations:
+ - all node.py
+ arguments: {
+ "0": "sender",
+ "1": "receiver"
+ }
+
+interfaces:
+ wlan0:
+ type: "wireless"
+ links:
+ - all 50kbps 0s all # All nodes are reachable by each other
+ txperfs:
+ - all 50kbps 0s \ No newline at end of file
diff --git a/manual/manual.pdf b/manual/manual.pdf
index 0fe5cd8..d8877e2 100644
--- a/manual/manual.pdf
+++ b/manual/manual.pdf
Binary files differ
diff --git a/manual/manual.tex b/manual/manual.tex
index 0de486b..9300e72 100644
--- a/manual/manual.tex
+++ b/manual/manual.tex
@@ -9,12 +9,16 @@
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{svg}
-\usepackage{listings}
+\usepackage[most]{tcolorbox}
+
+% Packages setups
+\graphicspath{{./assets}}
% Commands
\newcommand{\stateoff}{"\textit{off}"\xspace}
\newcommand{\stateon}{"\textit{on}"\xspace}
\newcommand{\version}{\InputIfFileExists{version}{}{version}}
+\newcommand*{\addsource}[2]{\vspace{0.3cm}\begin{tcolorbox}[breakable,enhanced,arc=1.4mm,arc is angular,title=\textbf{\small#1}]\inputminted[fontsize=\scriptsize]{#2}{#1}\end{tcolorbox}}
% Document
\begin{document}
@@ -26,16 +30,16 @@
\Huge
\textbf{\fontsize{90}{60}\selectfont User Manual\\}
\vspace{0.6cm}
- \textbf{\LARGE - ESDS v\version - \\}
+ \textbf{\LARGE --- ESDS v\version --- \\}
{\Large \today}
\vspace{2cm}
{\includesvg[scale=0.8]{../icon.svg}}
- \vspace{2cm}
+ \vspace{1.5cm}
\LARGE
\textbf{ESDS an Extensible Simulator for Distributed Systems\\}
- \vspace{0.5cm}
+ \vspace{1cm}
\textit{Written by Loic Guegan and Issam Raïs}
\end{center}
\end{titlepage}
@@ -54,10 +58,33 @@
ESDS simulator comprises two major components: 1) The Simulation Orchestrator(SO) 2) The Simulated
Nodes (SN). This architecture is depicted in Figure \ref{architecture}. The SO is the main process
in charge of implementing the simulation main loop. It instantiates the network (e.g bandwidths
-andlatencies), collects and processes the events (e.g communications,turn on/off). The nodes on the
-other hand are threads that simulate the nodes behaviors.
-
-%\inputminted[autogobble]{yaml}{../example/platform.yaml}
+andlatencies), collects and processes the events (e.g communications,turn on/off). On the
+other hand, nodes are threads that implement the nodes behaviors.
+
+\section{Running your first simulation}
+
+To run a simulation, at least 2 files are required: 1) a platform file 2) a node implementation
+source code. The platform file defines the simulated network platform and sets various simulation
+parameters. The node implementation source code simply provide the logic of the simulated nodes.
+
+\subsection{Platform file}
+Platform files are written in YAML and contains 3 sections: 1) \textit{general} 2) \textit{nodes} 3) \textit{interfaces}.
+The \textit{general} section is optional but all the others must be present. Here is a simple platform file to simulate 2 wireless nodes:
+\addsource{assets/platform.yaml}{yaml}
+
+\subsection{Node implementation file}
+Nodes implementations are written using python. Here is the implementation of the node used in the previous platform.yaml file:
+\addsource{assets/node.py}{python}
+
+\subsection{Execution}
+To execute our first simulation, the following command should be executed from the same folder
+that contains \verb|platform.yaml| and \verb|node.py|:
+\begin{verbatim}
+ > esds run platform.yaml
+\end{verbatim}
+Here is the output of the simulation:
+\verbatiminput{assets/output.txt}
+In this case, simulation tooks $0.016s$ and $10$ bytes were sent on the wlan0 interface from node 0 (src=n0) to node 1 (src=n1).
\end{document}