README.md 2.1 KB
Newer Older
Jonathan Lejeune's avatar
Jonathan Lejeune committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# What is it ?

DiPLab (**D**istributed **P**rotocols **Lab**oratory) is a Java library providing a simple API to develop and to test experimentally distributed protocols (or distributed algorithms) following an event-based model while being independant of the API of the underlying distributed execution platform.


# Features
- Define distributed protocols with an event-based Java API
- Define your own experiment scenarios such as primitive call, node crashes or node recovery
- Choose the events to log during the experiment 
- Execute your experiment over a distributed platform regardless of its API whic can be a discrete event simulator or a real middleware
- Analyse the produced logs by the experiment execution in order to compute metrics or to verify invariants of the protocol
- Define your own diplab adapter if you need to use a specific distributed platform execution

# Provided components
- **DiPLab core** : the main component containing the engine of diplab (i.e. experiment definition, protocol API, reporting)
Jonathan Lejeune's avatar
Jonathan Lejeune committed
16
- **DiPLab adapter validator** : a component to validate adapters linking diplab core and a target platform
Jonathan Lejeune's avatar
Jonathan Lejeune committed
17
18
19
20
21
- **DiPLab peersim** : a platform adapter for the discrete event-based simulator  [peersim](http://peersim.sourceforge.net).
- **DiPLab multithread** : a platform adapter allowing to run experiment locally in a pseudo-distributed manner 
- **DiPLab MPI** : a platform adapter for the MPI standard (actually tested over [Open MPI](https://www.open-mpi.org/) implementation) 

# Building DipLab
Jonathan Lejeune's avatar
Jonathan Lejeune committed
22
23
24
25
26
27
28
29
30
31
32
33
34
35

prerequisites to build DiPLab component :
- Java version >= 11 
- [Apache Maven](https://maven.apache.org/)
- for the DiPLab MPI component, you need [Open MPI](https://www.open-mpi.org/) >= 4.1.1 configured and built for java applications (see [here](https://www.open-mpi.org/faq/?category=java))   

Take the whished component directory (parent compoment to compile all components) as current directory  and launch
`mvn install`

This will produce jar files and install them into your local maven repository.

# Testing Code
Use `mvn surefire:test` to test your installation by running a suite of unit tests.