Enclosed in this repository is the code and the project documents we will be using for this project. See project specification part 1 and part 2 for details
Clone this repository to your disk, then enter the project directory.
javac src/*.java
java src/TCPServeRouter.java
OR
docker-compose up --force-recreate -t 1
javac src/*.java
java src/TCPServer.java <router IP> <client IP> <port number>
javac src/*.java
java src/TCPClient.java localfilename.txt <router IP> <server IP> <port number>
javac src/*.java
java src/TCPClient.java song.mp3 <router IP> <server IP> <port number>
Running all parts locally requires Docker and docker-compose to be installed first.
docker-compose up -d --force-recreate -t 1
docker-compose -f docker-compose-test-local-txt-mode.yml up --force-recreate -t 1
docker-compose -f docker-compose-test-local-base64-mode-audio.yml up --force-recreate -t 1
If your shell complains about a network address not being available, run the following:
docker-compose -f docker-compose-test-local-txt-mode.yml down -t 1
docker network prune
If containers are erroring out, rebuild them from source (bypassing the stale cache):
docker-compose -f docker-compose-test-local-txt-mode.yml build --no-cache
The responsibilities of the documentation working group include:
Audit the codebase and add inline comments (Javadoc or otherwise)
Fork this repository to your account, add your comments, then commit, push, and create a pull request from your fork to this repository. See this link detailing the process
Provide the benchmarking working group with actionable insights for standing up a lab environment
Create a user guide document describing the process for running the lab environment (see sample document here)
Write a report based on the benchmarking data from the lab environment, according to the project specification
Assemble the final deliverable as a .zip archive, due Mon 02/13 at 11:59pm
The responsibilities of the benchmarking working group include:
Fix bugs and make the project executable in a lab environment
Containerize and automate the build process
Make a process which can be run entirely local for testing
Bring up a lab environment and test using multiple computers
Benchmark performance and statistics in a lab environment using multiple computers
Provide context and assistance to the documentation working group as they assemble the report and user guide