- Uses Spring Boot 2.0.0-M3 with Spring 5 Framework using Reactor Streams for Reactive REST endpoints
- Uses Spring MVC Style Resource push.
1.) Clone down this repository
2.) Ensure that all tests run successfully and the project can be built via Maven.
mvn install
3.) If you are going to use locally, ensure you have the correct file path set for the output files. These files generally will be
output to the desktop. To change the location change the static variable called RESEARCH_OUTPUT_FILE_NAME
in the file MetricsAggregator
to the location that you want saved. Right now it is set
to /Users/jravan/Desktop/research-output
. This will save 7 files to the Desktop under the names of each
test case (research-output1.csv
, research-output2.csv
, etc.)
4.) If you are going to use the Amazon S3 solution for storage, then set the variables in the application.properties
.
use_amazon_s3=true
s3_bucket_name=spring-boot-prediction-based-scheduler
s3_access_key_id={Client ID}
s3_access_secret={Client Secret}
If you are using the S3 solution, the output will only be saved when the simulation is terminated. A shutdown hook is used
to send out the recorded data to S3 before the temporary files are deleted. On S3 you will see a folder with the current timestamp
as the folder name. Within the folder there will be 7 files called output{testCaseNumber}
representing the data obtained from
each test case.
5.) If all tests succeed and the project can be built successfully, navigate to the Spring Boot
Application with the name PredictionBasedPrototypeApplication.java
. If you're using IntelliJ,
click on the file and click Run
.
1.) If you want to execute via Docker or use Docker to deploy in the cloud for more computing power, then you can use these commands to build a docker image.
First, to build an image run the command from the project root directory:
docker-compose build
This will build an image from the Dockerfile
and the docker-compose.yml
.
2.) To execute the Docker image run the command.
docker-compose up
With the Dockerfile
and the Amazon S3 configuration, you can deploy the app to the cloud to use more computing power in order
to execute longer tests.
I have a personal Docker Hub repository (https://cloud.docker.com/repository/docker/jtravan3/spring-boot-pbs-scheduler) with the latest image. You can pull this image down and run it directly. For access, email me directly at ravanj1@citadel.edu.
Install docker-compose
to your system
sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
Set the correct permissions for the executable
sudo chmod +x /usr/local/bin/docker-compose
Once you have access to the Docker Hub repository, copy the following docker-compose.yml
to the location you wish to run.
version: "3"
services:
spring-boot-pbs-scheduler:
image: jtravan3/spring-boot-pbs-scheduler
build:
context: .
dockerfile: Dockerfile
ports:
- 5000:5000
volumes:
- ./src:/usr/src/app/src
- ./target:/usr/src/app/target
- ./pom.xml:/usr/src/app/pom.xml
working_dir: /usr/src/app
command: ["java","-Xmx1024m","-jar","/spring-boot-pbs-scheduler.jar"]
After that run the following command from the same directory.
docker-compose pull jtravan3/spring-boot-pbs-scheduler
This will pull the latest image to your local machine. Once you have the latest image execute:
docker-compose up
You can perform these commands in a pre-built digital ocean container so that your resources are not consumed locally.
1.) With the application running navigate to a web browser and access the
URL http://localhost:5000/rest/pbs/start/difftrans/so/{testCaseNumber}
where testCaseNumber
is a number between 1 and 7. See the test cases mapped out below. The numbers represent the percentages
of the category of transactions in the batch tested.
Test Case # | HCHE | HCLE | LCHE | LCLE |
---|---|---|---|---|
1 | 100 | 0 | 0 | 0 |
2 | 75 | 25 | 0 | 0 |
3 | 50 | 25 | 25 | 0 |
4 | 25 | 25 | 25 | 25 |
5 | 0 | 25 | 25 | 50 |
6 | 0 | 0 | 25 | 75 |
7 | 0 | 0 | 0 | 100 |
2.) To run a loop of tests in order to continually produce results, use the URL http://localhost:5000/rest/pbs/start/difftrans/so/all
. This
will continually execute a loop of all test cases while trapping any errors. To stop the loop use http://localhost:5000/rest/pbs/endLoop
3.) Success! Now you can start generating results. If you have any questions, please contact me at ravanj1@citadel.edu or fill out an issue through this repository.