+ vDbResult.setOptional(testInfo.gettest_info().getOptional());
+ }
+ List<WRobotNexusTestResult> wTestResults = getWRobotTestResults(name, version, siloText, timestamp);
+ if (wTestResults.size() < 1) {
+ throw new RuntimeException("No robot test results could be obtained.");
+ }
+ vDbResult.setResult(determineResult(wTestResults));
+ List<WRobotDbTestResult> wDbResults = new ArrayList<WRobotDbTestResult>();
+ for (WRobotNexusTestResult wTestResult : wTestResults) {
+ WRobotDbTestResult wDbResult = new WRobotDbTestResult();
+ wDbResult.setLayer(wTestResult.getLayer());
+ ObjectMapper mapper = new ObjectMapper();
+ wDbResult.setRobotTestResults(mapper.writeValueAsString(wTestResult.getRobotNexusTestResults()));
+ wDbResults.add(wDbResult);
+ }
+ vDbResult.setWRobotDbTestResults(new HashSet<WRobotDbTestResult>(wDbResults));
+ return vDbResult;
+ }
+
+ public List<ValidationDbTestResult> getResults(@Nonnull String name, @Nonnull String version,
+ @Nonnull String siloText, int noOfLastElements)
+ throws ClientHandlerException, UniformInterfaceException, JsonParseException, JsonMappingException,
+ IOException, KeyManagementException, NoSuchAlgorithmException, ParseException {
+ String nexusUrl = this.baseurl + "/" + siloText + "/" + "bluval_results/" + name + "/" + version;
+ LOGGER.info(EELFLoggerDelegate.applicationLogger, "Trying to get validation Nexus test results");
+ WebResource webResource = this.client.resource(nexusUrl + "/");
+ LOGGER.debug(EELFLoggerDelegate.debugLogger, "Request URI of get: " + webResource.getURI().toString());
+ ClientResponse response = webResource.get(ClientResponse.class);
+ if (response.getStatus() != 200) {
+ throw new HttpException("Could not retrieve validation Nexus test results. HTTP error code : "
+ + response.getStatus() + " and message: " + response.getEntity(String.class));
+ }
+ List<ValidationDbTestResult> vDbResults = new ArrayList<ValidationDbTestResult>();
+ Document document = Jsoup.parse(response.getEntity(String.class));
+ List<Element> elements = document.getElementsByTag("body").get(0).getElementsByTag("table").get(0)
+ .getElementsByTag("tbody").get(0).getElementsByTag("tr");
+ elements = findLastElementsByDate(elements.subList(2, elements.size()), noOfLastElements);
+ for (int i = 0; i < elements.size(); i++) {
+ String timestamp = null;
+ try {
+ timestamp = elements.get(i).getElementsByTag("td").get(0).getElementsByTag("a").get(0).text();
+ timestamp = timestamp.substring(0, timestamp.length() - 1);
+ ValidationDbTestResult vDbResult = dbAdapter.getValidationTestResult(siloText, timestamp);
+ if (vDbResult == null || vDbResult.getDateStorage() == null) {
+ vDbResults.add(this.getResult(name, version, siloText, timestamp));
+ } else {
+ // Just to avoid deletion of already received validation timestamp results
+ vDbResult = new ValidationDbTestResult();
+ Blueprint blueprint = new Blueprint();
+ blueprint.setBlueprintName(name);
+ BlueprintInstance blueInst = new BlueprintInstance();
+ blueInst.setBlueprint(blueprint);
+ blueInst.setVersion(version);
+ vDbResult.setBlueprintInstance(blueInst);
+ LabInfo lab = new LabInfo();
+ lab.setSilo(siloText);
+ vDbResult.setLab(lab);
+ vDbResult.setTimestamp(timestamp);
+ vDbResults.add(vDbResult);
+ }
+ } catch (IllegalArgumentException | HttpException | NullPointerException | NoSuchElementException ex) {
+ LOGGER.warn(EELFLoggerDelegate.auditLogger, "Exception occured while retrieving timestamp : "
+ + timestamp + " result." + UserUtils.getStackTrace(ex));
+ continue;
+ }
+ }
+ return vDbResults;
+ }
+
+ public List<ValidationDbTestResult> getResults(@Nonnull String name, @Nonnull String version,
+ @Nonnull String siloText, @Nonnull Date date)
+ throws ClientHandlerException, UniformInterfaceException, JsonParseException, JsonMappingException,
+ IOException, KeyManagementException, NoSuchAlgorithmException, ParseException, NullPointerException {
+ String nexusUrl = this.baseurl + "/" + siloText + "/" + "bluval_results/" + name + "/" + version;
+ LOGGER.debug(EELFLoggerDelegate.applicationLogger, "Trying to get validation Nexus results based on date");
+ WebResource webResource = this.client.resource(nexusUrl + "/");
+ LOGGER.debug(EELFLoggerDelegate.debugLogger, "Request URI of get: " + webResource.getURI().toString());
+ ClientResponse response = webResource.get(ClientResponse.class);
+ if (response.getStatus() != 200) {
+ throw new HttpException("Could not retrieve validation Nexus results based on date. HTTP error code : "
+ + response.getStatus() + " and message: " + response.getEntity(String.class));
+ }
+ List<ValidationDbTestResult> vDbResults = new ArrayList<ValidationDbTestResult>();
+ Document document = Jsoup.parse(response.getEntity(String.class));
+ List<Element> elements = document.getElementsByTag("body").get(0).getElementsByTag("table").get(0)
+ .getElementsByTag("tbody").get(0).getElementsByTag("tr");
+ elements = findElementsBasedOnDate(elements.subList(2, elements.size()), date);
+ for (int i = 0; i < elements.size(); i++) {
+ try {
+ String timestamp = elements.get(i).getElementsByTag("td").get(0).getElementsByTag("a").get(0).text();
+ timestamp = timestamp.substring(0, timestamp.length() - 1);
+ ValidationDbTestResult vDbResult = this.getResult(name, version, siloText, timestamp);
+ vDbResults.add(vDbResult);
+ } catch (IllegalArgumentException | HttpException | NullPointerException ex) {
+ LOGGER.warn(EELFLoggerDelegate.auditLogger,
+ "Exception occured while retrieving timestamp results. " + UserUtils.getStackTrace(ex));
+ continue;