From 595b83b364263d11ce3ca2e7642606a716c6a517 Mon Sep 17 00:00:00 2001 From: Ninjaws Date: Fri, 1 Nov 2024 19:52:53 +0100 Subject: [PATCH] [Updated] Dockerfiles so everything runs using docker compose up, added the benchmark and speed tests --- backend/Dockerfile | 17 ++++++-- .../quiz/controllers/QuizController.java | 34 ++++++++++++---- .../com/ninjaws/quiz/services/ApiService.java | 17 ++++++++ .../services/ResponseHandlingService.java | 4 +- .../quiz/services/backupApiServiceTest.txt | 2 +- docker-compose.yml | 11 +++++- frontend/Dockerfile | 2 +- frontend/angular.json | 6 +++ .../src/app/Quiz/services/quiz.service.ts | 3 +- frontend/src/environments/environment.prod.ts | 6 +++ frontend/src/environments/environment.ts | 4 ++ scripts/LoadTestMultiple.sh | 17 ++++++++ scripts/LoadTestOne.sh | 37 ++++++++++++++++++ scripts/benchmarks/basic.png | Bin 0 -> 63314 bytes 14 files changed, 143 insertions(+), 17 deletions(-) create mode 100644 frontend/src/environments/environment.prod.ts create mode 100644 frontend/src/environments/environment.ts create mode 100755 scripts/LoadTestMultiple.sh create mode 100755 scripts/LoadTestOne.sh create mode 100644 scripts/benchmarks/basic.png diff --git a/backend/Dockerfile b/backend/Dockerfile index fc70432..fd634e1 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -16,11 +16,22 @@ ENV USER=dev RUN groupadd -g ${GID} ${USER} \ && useradd -m -u ${UID} -g ${USER} ${USER} USER ${USER} -EXPOSE 8080 +EXPOSE 9090 CMD ["tail","-f","/dev/null"] #---Building +FROM base AS build +COPY . . +RUN mvn clean package -DskipTests +#--Testing +FROM build AS testing +RUN mvn clean test - -#---Production \ No newline at end of file +#---Production +# Pulled again to get rid of maven, to decrease the size +FROM openjdk:17-jdk-slim AS production +WORKDIR /app +COPY --from=build /app/target/*.jar app.jar +EXPOSE 9090 +ENTRYPOINT ["java", "-jar", "app.jar"] \ No newline at end of file diff --git a/backend/src/main/java/com/ninjaws/quiz/controllers/QuizController.java b/backend/src/main/java/com/ninjaws/quiz/controllers/QuizController.java index 69b89b8..b9f592e 100644 --- a/backend/src/main/java/com/ninjaws/quiz/controllers/QuizController.java +++ b/backend/src/main/java/com/ninjaws/quiz/controllers/QuizController.java @@ -23,28 +23,46 @@ public class QuizController { @Autowired private QuizService quizService; + /** + * Start a session + * @param amount The amount of questsions + * @param category The desired category (or all) + * @param difficulty The desired difficulty (or all) + * @param type The desired type (or both) + * @return The sessionId, or statusCode 5 when the queue is full + */ @GetMapping("/questions") public String startSession( - @RequestParam(required = true) Integer amount, - @RequestParam(required = false) Integer category, - @RequestParam(required = false) String difficulty, - @RequestParam(required = false) String type + @RequestParam(required = true) Integer amount, + @RequestParam(required = false) Integer category, + @RequestParam(required = false) String difficulty, + @RequestParam(required = false) String type ) { QuizSettings quizSettings = new QuizSettings(amount, category, difficulty, type); Optional result = quizService.createSession(quizSettings); - if(result.isPresent()) { + if (result.isPresent()) { String jsonString = String.format("{\"statusCode\":0,\"sessionId\":\"%s\"}", result.get()); return jsonString; } - String jsonString = String.format("{\"statusCode\":5}"); - return jsonString; - } + String jsonString = String.format("{\"statusCode\":5}"); + return jsonString; + } + /** + * Checks if the questions have been retrieved + * @param sessionId The session that holds the questions + * @return The Session, or nothing if they are not ready yet + */ @GetMapping("/status/{sessionId}") public Optional checkStatus(@PathVariable String sessionId) { return quizService.checkSession(sessionId); } + /** + * Receive the chosen answers, calculate the score, and return it + * @param answers The chosen answers + * @return The score + */ @PostMapping("/score") public String checkAnswers(@RequestBody Answers answers) { String jsonString = String.format("{\"score\":\"%s\"}", quizService.getScore(answers)); diff --git a/backend/src/main/java/com/ninjaws/quiz/services/ApiService.java b/backend/src/main/java/com/ninjaws/quiz/services/ApiService.java index b91bf88..7918f4f 100644 --- a/backend/src/main/java/com/ninjaws/quiz/services/ApiService.java +++ b/backend/src/main/java/com/ninjaws/quiz/services/ApiService.java @@ -48,4 +48,21 @@ public class ApiService { logger.log(System.Logger.Level.ERROR, "Critical failure", e); } } + + /** + * Collect a chuck of 50 items + * Store them in the DataService + */ + public void collectBulk() { + String url = apiUrl + "?amount=50"; + try { + ResponseEntity response = restTemplate.getForEntity(url, String.class); + String json = response.getBody(); + ApiResponse apiResponse = cleanerService.extractApiResponse(json); + responseHandler.handleResponse(apiResponse); + + } catch (RestClientException | IOException e) { + logger.log(System.Logger.Level.ERROR, "Critical failure", e); + } + } } diff --git a/backend/src/main/java/com/ninjaws/quiz/services/ResponseHandlingService.java b/backend/src/main/java/com/ninjaws/quiz/services/ResponseHandlingService.java index e642039..af391f0 100644 --- a/backend/src/main/java/com/ninjaws/quiz/services/ResponseHandlingService.java +++ b/backend/src/main/java/com/ninjaws/quiz/services/ResponseHandlingService.java @@ -26,7 +26,7 @@ public class ResponseHandlingService { switch (response.getResponseCode()) { case 0: - // Nothing + // Success updateSessionInCache(session, response); break; case 1: @@ -58,7 +58,7 @@ public class ResponseHandlingService { /** * If the request was made by the scheduler during queue-downtime, there is no session */ - public void switchInternal(ApiResponse response) { + public void handleResponse(ApiResponse response) { switch (response.getResponseCode()) { case 0: // TODO: Store in DB diff --git a/backend/src/test/java/com/ninjaws/quiz/services/backupApiServiceTest.txt b/backend/src/test/java/com/ninjaws/quiz/services/backupApiServiceTest.txt index 56d112b..1b3f44e 100644 --- a/backend/src/test/java/com/ninjaws/quiz/services/backupApiServiceTest.txt +++ b/backend/src/test/java/com/ninjaws/quiz/services/backupApiServiceTest.txt @@ -30,7 +30,7 @@ public class ApiServiceTest { @Test public void testRequestQuestions() throws Exception { QuizSettings settings = new QuizSettings(); - String jsonResponse = apiService.requestQuestions(settings); + String jsonResponse = apiService.handleRequest(settings); JsonNode jsonNode = objectMapper.readTree(jsonResponse); // Check if the response code is as expected diff --git a/docker-compose.yml b/docker-compose.yml index 9e0016c..16dd208 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,4 +7,13 @@ services: image: quiz-frontend-prod container_name: quiz-frontend-prod-cont ports: - - "4200:80" \ No newline at end of file + - "4200:80" + backend: + build: + context: ./backend + dockerfile: Dockerfile + target: production + image: quiz-backend-prod + container_name: quiz-backend-prod-cont + ports: + - "9090:9090" \ No newline at end of file diff --git a/frontend/Dockerfile b/frontend/Dockerfile index 619be8d..b59de8b 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -22,7 +22,7 @@ COPY package*.json ./ RUN npm install # Copied here, since the the Development setup uses a bind volume instead COPY . . -RUN npm run build --prod +RUN ng build --configuration production #--- Production FROM nginx:alpine AS production diff --git a/frontend/angular.json b/frontend/angular.json index 6b938b9..c9654d3 100644 --- a/frontend/angular.json +++ b/frontend/angular.json @@ -50,6 +50,12 @@ "maximumError": "4kB" } ], + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.prod.ts" + } + ], "outputHashing": "all" }, "development": { diff --git a/frontend/src/app/Quiz/services/quiz.service.ts b/frontend/src/app/Quiz/services/quiz.service.ts index 67d1da2..5be7448 100644 --- a/frontend/src/app/Quiz/services/quiz.service.ts +++ b/frontend/src/app/Quiz/services/quiz.service.ts @@ -18,12 +18,13 @@ import { Answers } from '../models/answers'; import { StorageService } from './storage.service'; import { CleanerService } from './cleaner.service'; import { ResponseHandlerService } from './response-handler.service'; +import { environment } from '../../../environments/environment'; @Injectable({ providedIn: 'root', }) export class QuizService { - private apiUrl = 'http://localhost:9090/quiz'; + private apiUrl = environment.apiUrl + '/quiz'; constructor( private http: HttpClient, diff --git a/frontend/src/environments/environment.prod.ts b/frontend/src/environments/environment.prod.ts new file mode 100644 index 0000000..b605977 --- /dev/null +++ b/frontend/src/environments/environment.prod.ts @@ -0,0 +1,6 @@ +export const environment = { + production: true, + /** Connecting through the docker compose network is not working for now, so I'll have to use the localhost */ + // apiUrl: 'http://backend:9090', + apiUrl: 'http://localhost:9090', + }; \ No newline at end of file diff --git a/frontend/src/environments/environment.ts b/frontend/src/environments/environment.ts new file mode 100644 index 0000000..53a7aba --- /dev/null +++ b/frontend/src/environments/environment.ts @@ -0,0 +1,4 @@ +export const environment = { + production: false, + apiUrl: 'http://localhost:9090' + }; \ No newline at end of file diff --git a/scripts/LoadTestMultiple.sh b/scripts/LoadTestMultiple.sh new file mode 100755 index 0000000..9122900 --- /dev/null +++ b/scripts/LoadTestMultiple.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +start_time=$(date +%s) + +for i in {1..6}; do + ./LoadTestOne.sh & + sleep 0.1 +done + +wait # Wait for all background jobs to finish + +end_time=$(date +%s) # Capture the end time + +# Calculate and print the elapsed time +elapsed_time=$((end_time - start_time)) +echo "Done!" +echo "Total time taken: $elapsed_time seconds" diff --git a/scripts/LoadTestOne.sh b/scripts/LoadTestOne.sh new file mode 100755 index 0000000..1137ee1 --- /dev/null +++ b/scripts/LoadTestOne.sh @@ -0,0 +1,37 @@ +#!/bin/bash + +# Step 1: Get the sessionId from the questions endpoint +sessionIdJson=$(curl -s http://localhost:9090/quiz/questions?amount=5) + +statusCode=$(echo "$sessionIdJson" | grep -o '"statusCode":[0-9]*' | sed 's/"statusCode"://') + +if [ "$statusCode" -ne 0 ]; then + echo "Exiting: statusCode is not 0." + exit 1 +fi + +sessionId=$(echo "$sessionIdJson" | grep -o '"sessionId":"[^"]*"' | sed 's/"sessionId":"//;s/"//') + +if [ -z "$sessionId" ]; then + echo "Failed to get sessionId" + exit 1 +fi + +echo "Received sessionId: $sessionId" + +# Step 2: Poll the status endpoint every 2 seconds +while true; do + status_response=$(curl -s http://localhost:9090/quiz/status/"$sessionId") + + if [ $? -eq 0 ]; then + # Check if the response is JSON (starts with '{') + if [[ $status_response == \{* ]]; then + echo "$sessionId: done!" + break + fi + else + echo "Status check failed, retrying..." + fi + + sleep 2 +done diff --git a/scripts/benchmarks/basic.png b/scripts/benchmarks/basic.png new file mode 100644 index 0000000000000000000000000000000000000000..8d600d1f989a42d398cb50857a3e2c981c2559f6 GIT binary patch literal 63314 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 KU?s8-gZ~fduNdh7 literal 0 HcmV?d00001