package de.hftstuttgart.junitlauncher.rest; import de.hftstuttgart.junitlauncher.models.UserResult; import de.hftstuttgart.junitlauncher.utils.JUnitTestHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; import org.springframework.web.client.RestTemplate; import javax.annotation.PostConstruct; import java.io.IOException; @Component public class TaskUpload { public final String backendUrl; private final JUnitTestHelper jUnitTestHelper; private static final Logger LOG = LoggerFactory.getLogger(TaskUpload.class); public TaskUpload(@Value("${junitlauncher.backend.url}") String backendUrl, JUnitTestHelper jUnitTestHelper) { this.backendUrl = backendUrl; this.jUnitTestHelper = jUnitTestHelper; } @PostConstruct public void startTest() { String env = System.getenv("job_id"); if(env == null || env.equals("")) { throw new IllegalArgumentException("Environment variable env not set"); } LOG.info("Running jobId: " + env); UserResult jUnitResult = null; try { jUnitResult = jUnitTestHelper.runUnitTests(); LOG.info("jUnitResult: " + jUnitResult.getCompilationErrors() + jUnitResult.getTestResults()); } catch (IOException | ClassNotFoundException e) { LOG.error("Error while compiling or testing", e); } LOG.info("Posting UserResult to backend at: " + this.backendUrl); ResponseEntity response = null; try { response = new RestTemplate().postForEntity(this.backendUrl + "?jobID=" + env, jUnitResult, Void.class); } catch (Exception e) { LOG.error("Error while Posting to backend: " + e.getMessage()); System.exit(0); } if (response.getStatusCode() != HttpStatus.OK) { LOG.error("Error while Posting to backend: " + response.toString()); } else { LOG.info("Successfully tested and sent"); } System.exit(0); } }