-[Running batch simulations with Built-in daemons](#org26c2c5b)
-[Running batch simulations with manual daemons](#org90f958f)
-[Running batch simulations with `lurette`](#orgc332df1)
-[Viewing Results](#org76d3f38)
-[The `sasa` CLI](#orge649a65)
-[Interactive mode](#org8e72f9f)
-[Example: use `rdbg` from the `test/alea-coloring/` directory](#org31927a0)
-[The exemples of test directory](#org94d1131)
-[Running interactive sessions with `rdbg`](#orge89a030)
-[Getting `rdbg` on-line help](#org2c11b7f)
-[Useful Modules](#org743efca)
-[Install](#org3b08da5)
-[Via opam 2 (prefered method)](#org3c0ec86)
-[Via docker](#org6f38193)
-[From source](#orgdc4be6f)
-[More](#org666d974)
-[FAQ](#orgc12b460)
-[Is there a FAQ?](#org3ef8a2c)
<aid="orgd851639"></a>
-[TL;DR](#orgc2cabd3)
-[Topology](#org4b585e5)
-[Algorithms](#org64c16fc)
-[Examples](#orgd093f23)
-[Batch mode](#org341c3c0)
-[Running batch simulations with Built-in daemons](#orgd196033)
-[Running batch simulations with manual daemons](#orgad24fb9)
-[Running batch simulations with `lurette`](#org063119a)
-[Viewing Results](#org17ee087)
-[The `sasa` CLI](#orgd22c6eb)
-[Interactive mode](#org7e42662)
-[Example: use `rdbg` from the `test/alea-coloring/` directory](#org77d4010)
-[The exemples of test directory](#org2c0dc88)
-[Running interactive sessions with `rdbg`](#org88109e3)
-[Getting `rdbg` on-line help](#orgc9897b0)
-[Useful Modules](#orgcfdcf07)
-[Install](#orgdc4beab)
-[Via opam 2 (prefered method for linux users)](#orge971f77)
-[Via docker (prefered method for mac users)](#orgcc52ef1)
-[From source](#org5fed492)
-[More](#orgd027067)
-[FAQ](#orgff3477e)
-[Is there a FAQ?](#org7d94f98)
<aid="orgc2cabd3"></a>
# TL;DR
<aid="orgab95120"></a> SASA is a **Self-stabilizing Algorithms SimulAtor**, based on the so-called **Atomic State model** (ASM) introduced by <spanclass="underline">Dijkstra</span> in its seminal article on [Self-stabilizing distributed algorithms](http://www.cs.utexas.edu/~EWD/ewd04xx/EWD426.PDF).
<aid="org357fa28"></a> SASA is a **Self-stabilizing Algorithms SimulAtor**, based on the so-called **Atomic State model** (ASM) introduced by <spanclass="underline">Dijkstra</span> in its seminal article on [Self-stabilizing distributed algorithms](http://www.cs.utexas.edu/~EWD/ewd04xx/EWD426.PDF).
Basically, one needs to provide:
...
...
@@ -50,7 +50,7 @@ The source code is available at <https://gricad-gitlab.univ-grenoble-alpes.fr/ve
@@ -113,11 +113,11 @@ Such parameters can be retreived in Algorithms using the `Algo.get_graph_attribu
nb: a `Algo.diameter: unit -> int` function is provided, but it can be expensive to use.
<aid="org06dc33c"></a>
<aid="org64c16fc"></a>
# Algorithms
<aid="org16f664a"></a>
<aid="org6d64c78"></a>
The following has been generated from [algo.mli](https://gricad-gitlab.univ-grenoble-alpes.fr/verimag/synchrone/sasa/blob/master/lib/algo/algo.mli)
...
...
@@ -127,7 +127,7 @@ The following has been generated from [algo.mli](https://gricad-gitlab.univ-gren
</div>
<a id="orgd0c4a0f"></a>
<a id="orgd093f23"></a>
# Examples
...
...
@@ -155,14 +155,14 @@ The `test` directory also contains sub-directories which gathers programs shared
-`test/*/my-rdbg-tuning.ml`: includes `test/my-rdbg-tuning.ml` and defines commands specific to the example of the directory. Indeed, `rdbg`, once launched, first tries to read the content of the file name `my-rdbg-tuning.ml` (it it exists).
<aid="org2483f76"></a>
<aid="org341c3c0"></a>
# Batch mode

<aid="org26c2c5b"></a>
<aid="orgd196033"></a>
## Running batch simulations with Built-in daemons
...
...
@@ -187,7 +187,7 @@ sasa -h | grep "\-daemon"
--custom-daemon, -custd
<aid="org90f958f"></a>
<aid="orgad24fb9"></a>
## Running batch simulations with manual daemons
...
...
@@ -214,7 +214,7 @@ It can also by simulated by [`lutin`](http://www-verimag.imag.fr/DIST-TOOLS/SYNC
Built-in daemons can of course be programmed in Lutin. One can generate such daemons using the `--gen-lutin-daemon` option: `sasa --gen-lutin-daemon a_graph.dot`. It can be handy at least to get the daemons variables names in the good order if one to write its own daemon.
<aid="orgc332df1"></a>
<aid="org063119a"></a>
## Running batch simulations with `lurette`
...
...
@@ -237,14 +237,14 @@ lurette \
```
<aid="org76d3f38"></a>
<aid="org17ee087"></a>
## Viewing Results
`sasa -rif` and `lurette` generates `.rif` files that can be viewed with `gnuplot-rif` or `sim2chro`; cf <http://www-verimag.imag.fr/DIST-TOOLS/SYNCHRONE/lustre-v6/>
`sasa -rif` and `lurette` generates `.rif` files that can be viewed with `gnuplot-rif` or `sim2chro`; cf <http://www-verimag.imag.fr/DIST-TOOLS/SYNCHRONE/reactive-toolbox/>
<aid="orge649a65"></a>
<aid="orgd22c6eb"></a>
## The `sasa` CLI
...
...
@@ -307,14 +307,14 @@ sasa --more
Display the version ocaml version sasa was compiled with and exit.
<aid="org8e72f9f"></a>
<aid="org7e42662"></a>
# Interactive mode
<aid="orge81af28"></a> If you want to perform interactive session, you can launch `sasa` under the control of [rdbg](http://www-verimag.imag.fr/DIST-TOOLS/SYNCHRONE/rdbg/). Before reading this section, please read at least the [Basic usage Section if the rdbg documentation](http://www-verimag.imag.fr/DIST-TOOLS/SYNCHRONE/rdbg/README.html#Level0).
<aid="org707dffe"></a> If you want to perform interactive session, you can launch `sasa` under the control of [rdbg](http://www-verimag.imag.fr/DIST-TOOLS/SYNCHRONE/rdbg/). Before reading this section, please read at least the [Basic usage Section if the rdbg documentation](http://www-verimag.imag.fr/DIST-TOOLS/SYNCHRONE/rdbg/README.html#Level0).
<aid="org31927a0"></a>
<aid="org77d4010"></a>
## Example: use `rdbg` from the `test/alea-coloring/` directory
...
...
@@ -367,7 +367,7 @@ $ rdbg
Typing `[Enter]` will therefore also load the `rdbg_session.ml` file we have just been using.
<aid="org94d1131"></a>
<aid="org2c0dc88"></a>
## The exemples of test directory
...
...
@@ -378,7 +378,7 @@ The [test](https://gricad-gitlab.univ-grenoble-alpes.fr/verimag/synchrone/sasa/t
-`test/*/my-rdbg-tuning.ml`: includes `test/my-rdbg-tuning.ml` and defines commands specific to the example of the directory. Indeed, `rdbg`, once launched, first tries to read the content of the file name `my-rdbg-tuning.ml` (it it exists).
<aid="orge89a030"></a>
<aid="org88109e3"></a>
## Running interactive sessions with `rdbg`
...
...
@@ -395,7 +395,7 @@ The [test](https://gricad-gitlab.univ-grenoble-alpes.fr/verimag/synchrone/sasa/t
All those commands are defined in (the common) [test/my-rdbg-tuning.ml](https://gricad-gitlab.univ-grenoble-alpes.fr/verimag/synchrone/sasa/tree/master/test/my-rdbg-tuning.ml) that is included in (locals) `test/*/my-rdbg-tuning.ml` that are included in (generated) `test/*/rdbg-session.ml` files. `my-rdbg-tuning.ml` contains straigthforward `ocaml` code that defines various `rdbg` shortcuts to ease the simulation of `sasa` systems. Feel free to tailor those command to yours needs by modyfying the local `my-rdbg-tuning.ml`!
<aid="org2c11b7f"></a>
<aid="orgc9897b0"></a>
## Getting `rdbg` on-line help
...
...
@@ -408,10 +408,10 @@ Here are 2 useful entry-points to rdbg on-line help:
(rdbg) l
```
f01b12af88000136e82fb79fe9e8bd74
9bf78f64b677001b1010261a371e4e6f
<aid="org743efca"></a>
<aid="orgcfdcf07"></a>
## Useful Modules
...
...
@@ -438,14 +438,18 @@ Some modules, used by the sasa core engine, can be useful from `rdbg`.
</div>
<a id="org3b08da5"></a>
<a id="orgdc4beab"></a>
# Install
<aid="org3c0ec86"></a>
<aid="orge971f77"></a>
## Via opam 2 (prefered method)
## Via opam 2 (prefered method for linux users)
One way to install `sasa` is via [opam](http://opam.ocaml.org/doc/Install.html), a package manager for ocaml programs. opam works out of the box with most Linux distributions and OSX (mac). opam ougth to work on windows too [(follow this link for instructions)](http://protz.github.io/ocaml-installer/).
In order to install the tools mentionned in this documentation that can be used with `sasa` (namely, `gnuplot-rif`, `sim2chro`, `luciole-rif`, `lutin`, `lurette`, `rdbg`):
In order to install the tools mentionned in this documentation that can be used with `sasa` (namely, `gnuplot-rif`, `lutin`, `lurette`, `rdbg`, `lv6`)):
```sh
opam depext -y rdbg lutin
opam install-y rdbg lutin
opam depext -y rdbg lutin lustre-v6
opam install-y rdbg lutin lustre-v6
```
In order to be able to use `luciole` and `sim2chro`, you need to install the Lustre V4 distribution: <http://www-verimag.imag.fr/DIST-TOOLS/SYNCHRONE/lustre-v4/distrib/index.html>
<aid="org6f38193"></a>
<aid="orgcc52ef1"></a>
## Via docker
## Via docker (prefered method for mac users)
cf the Docker Install section of the [Synchrone Reactive Tool Box](http://www-verimag.imag.fr/DIST-TOOLS/SYNCHRONE/lustre-v6/#docker).
One can mimick the content of the `test` job in the project [.gitlab-ci.yml Gitlab CI script](https://gricad-gitlab.univ-grenoble-alpes.fr/verimag/synchrone/sasa/tree/master/.gitlab-ci.yml).
<aid="org666d974"></a>
<aid="orgd027067"></a>
# More
...
...
@@ -504,12 +510,12 @@ One can mimick the content of the `test` job in the project [.gitlab-ci.yml Gitl