Experiments for the paper "Composable Models and Guarantees for Composable Distributed Systems" submitted to the FoMaC Special Issue for ReoCAS 2024 of the International Journal on Software Tools for Technology Transfer (STTT).
The FCPP implementation of all examples presented in the paper is available in file lib/examples.hpp. The executable simulation for the case study presented in the paper is available in file run/examples.cpp.
All commands below are assumed to be issued from the cloned git repository folder. For any issues, please contact Giorgio Audrito.
- FCPP main website: https://fcpp.github.io.
- FCPP documentation: http://fcpp-doc.surge.sh.
- FCPP presentation paper: http://giorgio.audrito.info/static/fcpp.pdf.
- FCPP sources: https://github.com/fcpp/fcpp.
The next sections contain the setup instructions for the various supported OSs. Jump to the section dedicated to your system of choice and ignore the others.
Pre-requisites:
At this point, run "MSYS2 MinGW x64" from the start menu; a terminal will appear. Run the following commands:
pacman -Syu
After updating packages, the terminal will close. Open it again, and then type:
pacman -Sy --noconfirm --needed base-devel mingw-w64-x86_64-toolchain mingw-w64-x86_64-cmake mingw-w64-x86_64-make git
The build system should now be available from the "MSYS2 MinGW x64" terminal.
Pre-requisites:
- Xorg-dev package (X11)
- G++ 9 (or higher)
- CMake 3.18 (or higher)
- Asymptote (for building the plots)
To install these packages in Ubuntu, type the following command:
sudo apt-get install xorg-dev g++ cmake asymptote
In Fedora, the xorg-dev package is not available. Instead, install the packages:
libX11-devel libXinerama-devel.x86_6 libXcursor-devel.x86_64 libXi-devel.x86_64 libXrandr-devel.x86_64 mesa-libGL-devel.x86_64
In Arch Linux, you can instead install the packages as follows:
sudo pacman -S xorg-server-devel gcc cmake
yay -S asymptote
Pre-requisites:
- Xcode Command Line Tools
- CMake 3.18 (or higher)
- Asymptote (for building the plots)
To install them, assuming you have the brew package manager, type the following commands:
xcode-select --install
brew install cmake asymptote
If you use a VM with a graphical interface, refer to the section for the operating system installed on it.
Warning: the graphical simulations are based on OpenGL, and common Virtual Machine software (e.g., VirtualBox) has faulty support for OpenGL. If you rely on a virtual machine for graphical simulations, it might work provided that you select hardware virtualization (as opposed to software virtualization). However, it is recommended to use the native OS whenever possible.
In order to execute the examples file, type the following command in a terminal:
./make.sh gui run -O examples
On newer Mac M1 computers, the -O argument may induce compilation errors: in that case, use the -O3 argument instead.
Running the above command, you should see output about building the executables then the graphical simulation should pop up while the console will show the most recent stdout and stderr outputs of the application, together with resource usage statistics (both on RAM and CPU). During the execution, log files will be generated in the output/ repository sub-folder. If a batch of multiple simulations is launched (which is not the case for the exercises target), individual simulation results will be logged in the output/raw/ subdirectory, with the overall resume in the output/ directory.
Executing a graphical simulation will open a window displaying the simulation scenario, initially still: you can start running the simulation by pressing P (current simulated time is displayed in the bottom-left corner). While the simulation is running, network statistics will be periodically printed in the console. You can interact with the simulation through the following keys:
Escto end the simulationPto stop/resumeO/Ito speed-up/slow-down simulated timeLto show/hide connection links between nodesGto show/hide the grid on the reference plane and node pinsMenables/disables the marker for selecting nodesleft-clickon a selected node to open a window with node detailsCresets the camera to the starting positionQ,W,E,A,S,Dto move the simulation area along orthogonal axesright-click+mouse dragto rotate the cameramouse scrollfor zooming in and outleft-shiftadded to the camera commands above for precision control- any other key will show/hide a legenda displaying this list
Hovering on a node will also display its UID in the top-left corner.