Distributed Systems Project 2024
Group A06
Difficulty level: I am Death incarnate!
In all source files (namely in the groupIds of the POMs), replace GXX with your group identifier. The group identifier consists of either A or T followed by the group number - always two digits. This change is important for code dependency management, to ensure your code runs using the correct components and not someone else's.
Number | Name | User | |
---|---|---|---|
102533 | Vasco Paisana | https://github.com/vascopaisana | mailto:vasco.paisana@tecnico.ulisboa.pt |
102624 | Raquel Braunschweig | https://github.com/iquelli | mailto:raquel.braunschweig@tecnico.ulisboa.pt |
103124 | Gonçalo Bárias | https://github.com/goncalobarias | mailto:goncalo.barias@tecnico.ulisboa.pt |
The overall system is made up of several modules. The different types of servers are located in ServerRX (where X denotes stage 1, 2 or 3). The client is in Client. The definition of messages and services is in Contract. The name server is in NameServer. The sequencer is in Sequencer.
See the Project Statement for a complete domain and system description.
The Project is configured with Java 17 (which is only compatible with Maven >= 3.8), but if you want to use Java 11 you can too -- just downgrade the version in the POMs.
To confirm that you have them installed and which versions they are, run in the terminal:
javac -version
mvn -version
To compile and install all modules:
mvn clean install
To run the server, the following command can be performed in the respective server folder:
mvn exec:java -Dexec.args="<port> <qualifier>"
To run the client, the following command can be performed in the respective client folder:
mvn exec:java
To run the name server, the following command can be performed in the respective name server folder:
python server.py
To run the sequencer, the following command can be performed in the respective sequencer folder:
mvn exec:java
To execute any of the modules in debug mode, add -Ddebug
to the previous mvn
commands
and -log=DEBUG
to the previous python
command.
We used Spotless in this project to ensure code formatting rules are followed.
It is possible to check if the code adheres to the formatting rules by running:
mvn spotless:check
Or, alternatively, actually format the code:
mvn spotless:apply