Commit b294c18e authored by Lückemeyer's avatar Lückemeyer
Browse files

refactor & extend url listener

No related merge requests found
Showing with 391 additions and 379 deletions
+391 -379
...@@ -30,6 +30,8 @@ ARG AGID=137 ...@@ -30,6 +30,8 @@ ARG AGID=137
ENV USER=$AUSER ENV USER=$AUSER
ENV GID=$AGID ENV GID=$AGID
ARG BUILD_NUMBER= ARG BUILD_NUMBER=
# Create docker group identical to host
RUN addgroup -g $GID -S docker RUN addgroup -g $GID -S docker
RUN adduser --no-create-home -u 1000 -G docker -D $USER RUN adduser --no-create-home -u 1000 -G docker -D $USER
......
...@@ -24,7 +24,7 @@ import jakarta.servlet.annotation.MultipartConfig; ...@@ -24,7 +24,7 @@ import jakarta.servlet.annotation.MultipartConfig;
* Rest controller for everything related to the TASK files * Rest controller for everything related to the TASK files
*/ */
@RestController @RestController
@RequestMapping("/v1/task") @RequestMapping("/v1/task/*")
@MultipartConfig @MultipartConfig
public class TaskUpload { public class TaskUpload {
private static final Logger LOG = LogManager.getLogger(TaskUpload.class); private static final Logger LOG = LogManager.getLogger(TaskUpload.class);
......
...@@ -3,14 +3,21 @@ package de.hftstuttgart.dtabackend.utils; ...@@ -3,14 +3,21 @@ package de.hftstuttgart.dtabackend.utils;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.FileReader; import java.io.FileReader;
import java.io.IOException; import java.io.IOException;
import java.net.MalformedURLException;
import java.nio.file.Path; import java.nio.file.Path;
import java.io.File; import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import com.fasterxml.jackson.core.exc.StreamReadException;
import com.fasterxml.jackson.databind.DatabindException;
import com.fasterxml.jackson.databind.ObjectMapper;
import de.hftstuttgart.dtabackend.models.Result; import de.hftstuttgart.dtabackend.models.Result;
import de.hftstuttgart.dtabackend.models.ResultSummary; import de.hftstuttgart.dtabackend.models.ResultSummary;
import de.hftstuttgart.dtabackend.models.TestCompetencyProfile; import de.hftstuttgart.dtabackend.models.TestCompetencyProfile;
...@@ -22,16 +29,11 @@ public class CompetencyAssessmentUtil { ...@@ -22,16 +29,11 @@ public class CompetencyAssessmentUtil {
public static String TEST_COMPETENCY_MANIFEST_FILE_NAME="competency-tests.mft"; public static String TEST_COMPETENCY_MANIFEST_FILE_NAME="competency-tests.mft";
/* public static void main(String[] args) throws StreamReadException, DatabindException, MalformedURLException, IOException { public static void main(String[] args) throws StreamReadException, DatabindException, MalformedURLException, IOException {
List<TestCompetencyProfile> testCompetencyProfiles=readTestCompetencyProfiles(Path.of(args[0]), args[1]); ResultSummary summary=ExecuteTestUtil.generateResult(Path.of(args[0]), Path.of(args[1]));
sumTestCompetencyProfiles(testCompetencyProfiles); System.out.println(summary.successfulTestCompetencyProfile);
ObjectMapper objectMapper = new ObjectMapper();
ResultSummary resultSummary = objectMapper.readValue(
new File(Path.of(args[0]).toFile(), args[2]).toURI().toURL(),
ResultSummary.class);
sumSuccessfulCompetencyProfiles(testCompetencyProfiles, resultSummary);
} }
*/
public static float[] sumTestCompetencyProfiles(List<TestCompetencyProfile> testCompetencyProfiles) { public static float[] sumTestCompetencyProfiles(List<TestCompetencyProfile> testCompetencyProfiles) {
float[] tcpTotalProfile=new float[TestCompetencyProfile.MAX_COMPETENCY_DIMENSIONS]; float[] tcpTotalProfile=new float[TestCompetencyProfile.MAX_COMPETENCY_DIMENSIONS];
for(TestCompetencyProfile currentProfile: testCompetencyProfiles) { for(TestCompetencyProfile currentProfile: testCompetencyProfiles) {
...@@ -87,4 +89,10 @@ public class CompetencyAssessmentUtil { ...@@ -87,4 +89,10 @@ public class CompetencyAssessmentUtil {
return testCompetencyProfiles; return testCompetencyProfiles;
} }
public static String packFloats(float[] array) {
return IntStream.range(0, array.length)
.mapToObj(i -> String.valueOf(array[i]))
.collect(Collectors.joining(";"));
}
} }
package de.hftstuttgart.dtabackend.utils; package de.hftstuttgart.dtabackend.utils;
import com.fasterxml.jackson.core.exc.StreamReadException;
import com.fasterxml.jackson.databind.DatabindException;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.github.dockerjava.api.model.Bind; import com.github.dockerjava.api.model.Bind;
import com.github.dockerjava.api.model.Volume; import com.github.dockerjava.api.model.Volume;
...@@ -12,13 +14,12 @@ import org.springframework.core.env.Environment; ...@@ -12,13 +14,12 @@ import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.io.*; import java.io.*;
import java.net.MalformedURLException;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.List; import java.util.List;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
@Component @Component
public class ExecuteTestUtil { public class ExecuteTestUtil {
...@@ -109,6 +110,13 @@ public class ExecuteTestUtil { ...@@ -109,6 +110,13 @@ public class ExecuteTestUtil {
new Bind(resultPathHost.toAbsolutePath().toString(), new Volume("/data/result")) new Bind(resultPathHost.toAbsolutePath().toString(), new Volume("/data/result"))
); );
ResultSummary resultSummary = generateResult(resultPath, testPathHost);
return resultSummary;
}
static ResultSummary generateResult(Path resultPath, Path testPathHost)
throws IOException, StreamReadException, DatabindException, MalformedURLException {
// define expected result file // define expected result file
File resultFile = Paths.get(resultPath.toAbsolutePath().toString(), "result.json").toFile(); File resultFile = Paths.get(resultPath.toAbsolutePath().toString(), "result.json").toFile();
...@@ -123,21 +131,15 @@ public class ExecuteTestUtil { ...@@ -123,21 +131,15 @@ public class ExecuteTestUtil {
ResultSummary resultSummary = objectMapper.readValue( ResultSummary resultSummary = objectMapper.readValue(
resultFile.toURI().toURL(), resultFile.toURI().toURL(),
ResultSummary.class); ResultSummary.class);
LOG.debug("result json returned time "+ resultSummary.timestamp + " with "+resultSummary.results.size()+ " test results.");
LOG.info("Checking for optional test competency profile information for paedagogical agent functionality..."); LOG.info("Checking for optional test competency profile information for paedagogical agent functionality...");
List<TestCompetencyProfile> testCompetencyProfiles=CompetencyAssessmentUtil.readTestCompetencyProfiles(testPathHost, CompetencyAssessmentUtil.TEST_COMPETENCY_MANIFEST_FILE_NAME); List<TestCompetencyProfile> testCompetencyProfiles=CompetencyAssessmentUtil.readTestCompetencyProfiles(testPathHost, CompetencyAssessmentUtil.TEST_COMPETENCY_MANIFEST_FILE_NAME);
if(testCompetencyProfiles!=null) { if(testCompetencyProfiles!=null) {
LOG.info("Found optional test competency profiles, generating agent profile data..."); LOG.info("Found optional test competency profiles, generating agent profile data...");
resultSummary.overallTestCompetencyProfile=packFloats(CompetencyAssessmentUtil.sumTestCompetencyProfiles(testCompetencyProfiles)); resultSummary.overallTestCompetencyProfile=CompetencyAssessmentUtil.packFloats(CompetencyAssessmentUtil.sumTestCompetencyProfiles(testCompetencyProfiles));
resultSummary.successfulTestCompetencyProfile=packFloats(CompetencyAssessmentUtil.sumSuccessfulCompetencyProfiles(testCompetencyProfiles, resultSummary)); resultSummary.successfulTestCompetencyProfile=CompetencyAssessmentUtil.packFloats(CompetencyAssessmentUtil.sumSuccessfulCompetencyProfiles(testCompetencyProfiles, resultSummary));
} }
return resultSummary; return resultSummary;
} }
private static String packFloats(float[] array) {
return IntStream.range(0, array.length)
.mapToObj(i -> String.valueOf(array[i]))
.collect(Collectors.joining(";"));
}
} }
...@@ -7,7 +7,7 @@ spring.http.multipart.max-file-size=5Mb ...@@ -7,7 +7,7 @@ spring.http.multipart.max-file-size=5Mb
############################################### ###############################################
# Holds the uploaded Zip-Files # Holds the uploaded Zip-Files
tests.tmp.dir=/tmp/dtt-tests tests.tmp.dir=~/dta-tests
host.tests.tmp.dir=${tests.tmp.dir} host.tests.tmp.dir=${tests.tmp.dir}
data.dir=/data data.dir=/data
data.dir.test.folder.name=UnitTests data.dir.test.folder.name=UnitTests
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment