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 -versionTo compile and install all modules:
mvn clean installTo 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:javaTo run the name server, the following command can be performed in the respective name server folder:
python server.pyTo run the sequencer, the following command can be performed in the respective sequencer folder:
mvn exec:javaTo 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:checkOr, alternatively, actually format the code:
mvn spotless:apply