Skip to content

Commit

Permalink
#79 Make Tests green
Browse files Browse the repository at this point in the history
  • Loading branch information
Mohamed Maza committed Jun 12, 2021
1 parent e8678c7 commit 38dfd6a
Show file tree
Hide file tree
Showing 23 changed files with 292 additions and 131 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,10 @@
import java.util.List;
import java.util.Map;

import de.kosit.validationtool.impl.tasks.DocumentParseAction;
import de.kosit.validationtool.impl.tasks.CreateReportAction;
import de.kosit.validationtool.impl.xvrl.XVRLBuilder;
import de.kosit.validationtool.model.reportInput.XMLSyntaxError;
import de.kosit.validationtool.model.xvrl.XVRLReport;
import org.apache.commons.lang3.StringUtils;

import lombok.AccessLevel;
Expand Down Expand Up @@ -65,28 +68,45 @@ private static boolean matches(final String key, final String name) {
@Override
public ProcessStepResult check(final Process results) {
log.info("Checking assertions for {}", results.getInput().getName());

ProcessStepResult processStepResult = new ProcessStepResult();
processStepResult.setType(CheckAssertionAction.class);

final List<AssertionType> toCheck = findAssertions(results.getName());
final List<String> errors = new ArrayList<>();
final List<XMLSyntaxError> errors = new ArrayList<>();
Result<Integer, XMLSyntaxError> assertionResult;
if (toCheck != null && !toCheck.isEmpty()) {
Result<XdmNode, Object> result = results.getResult(DocumentParseAction.class);
Result<XdmNode, Object> result = results.getResult(CreateReportAction.class);
final XdmNode node = result.getObject();
toCheck.forEach(a -> {
if (!check(node, a)) {
log.error("Assertion mismatch: {}", a.getValue());
errors.add(a.getValue());
XMLSyntaxError error = new XMLSyntaxError();
error.setMessage(a.getValue());
errors.add(error);
}
});
if (errors.isEmpty()) {
log.info("{} assertions successfully verified for {}", toCheck.size(), results.getName());
} else {
log.warn("{} assertion of {} failed while checking {}", errors.size(), toCheck.size(), results.getName());
}
results.setAssertionResult(new Result<>(toCheck.size(), errors));
assertionResult = new Result<>(toCheck.size(), errors);
} else {
log.warn("Can not find assertions for {}", results.getName());
XMLSyntaxError error = new XMLSyntaxError();
error.setMessage(String.format("Can not find assertions for %s", results.getName()));
errors.add(error);
assertionResult = new Result<>(-1, errors);
}
// TODO return Report
return new ProcessStepResult();
processStepResult.setResult(assertionResult);
processStepResult.setReport(generateXVRLReport(assertionResult));
return processStepResult;
}

private static XVRLReport generateXVRLReport(final Result<Integer, XMLSyntaxError> parserResult) {
// TODO create report here
return XVRLBuilder.builder().name("Assertions Validator").addErrors(parserResult.getErrors()).build();
}

private List<AssertionType> findAssertions(final String name) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,11 @@
import java.nio.file.Path;

import de.kosit.validationtool.impl.model.ProcessStepResult;
import de.kosit.validationtool.impl.model.Result;
import de.kosit.validationtool.impl.tasks.CreateReportAction;
import de.kosit.validationtool.impl.xvrl.XVRLBuilder;
import de.kosit.validationtool.model.reportInput.XMLSyntaxError;
import de.kosit.validationtool.model.xvrl.XVRLReport;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;

Expand Down Expand Up @@ -57,10 +62,20 @@ public ExtractHtmlContentAction(final Processor p, final Path outputDirectory) {

@Override
public ProcessStepResult check(final Process results) {
// TODO
this.htmlExtraction.extract(results.getXvrlFinalReport()).forEach(i -> print(results.getName(), i));
// TODO return Report
return new ProcessStepResult();
Result<XdmNode, Object> createReportResult = results.getResult(CreateReportAction.class);
this.htmlExtraction.extract(createReportResult.getObject()).forEach(i -> print(results.getName(), i));
ProcessStepResult processStepResult = new ProcessStepResult();
processStepResult.setType(ExtractHtmlContentAction.class);
// TODO result
Result<Object, XMLSyntaxError> stepResult = new Result<>();
processStepResult.setResult(stepResult);
processStepResult.setReport(generateXVRLReport(stepResult));
return processStepResult;
}

private static XVRLReport generateXVRLReport(final Result<Object, XMLSyntaxError> result) {
// TODO create report here
return XVRLBuilder.builder().name("Extract Html Content").addErrors(result.getErrors()).build();
}

private void print(final String origName, final XdmItem xdmItem) {
Expand All @@ -78,7 +93,8 @@ private void print(final String origName, final XdmItem xdmItem) {

@Override
public boolean isSkipped(final Process results) {
if (results.getXvrlFinalReport() == null) {
Result<XdmNode, Object> createReportResult = results.getResult(CreateReportAction.class);
if (createReportResult == null || createReportResult.getObject() == null) {
log.warn("Can not extract html content. No report document found");
return true;
}
Expand Down
16 changes: 14 additions & 2 deletions src/main/java/de/kosit/validationtool/cmd/PrintMemoryStats.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@
import java.text.NumberFormat;

import de.kosit.validationtool.impl.model.ProcessStepResult;
import de.kosit.validationtool.impl.model.Result;
import de.kosit.validationtool.impl.xvrl.XVRLBuilder;
import de.kosit.validationtool.model.reportInput.XMLSyntaxError;
import de.kosit.validationtool.model.xvrl.XVRLReport;
import lombok.extern.slf4j.Slf4j;

/**
Expand Down Expand Up @@ -46,7 +50,15 @@ public ProcessStepResult check(final Process results) {
final String totalFreeStr = format.format((freeMemory + (maxMemory - allocatedMemory)) / BYTES_PER_K);
log.info("free memory: {}MB; allocated memory: {}MB", freeStr, allocStr);
log.info("max memory: {}MB; total free memory: {}MB", maxStr, totalFreeStr);
// TODO return Report
return new ProcessStepResult();
ProcessStepResult processStepResult = new ProcessStepResult();
processStepResult.setType(PrintMemoryStats.class);
// TODO result
processStepResult.setReport(generateXVRLReport(new Result<>()));
return processStepResult;
}

private static XVRLReport generateXVRLReport(final Result<Object, XMLSyntaxError> result) {
// TODO create report here
return XVRLBuilder.builder().name("Print Memory Stats").addErrors(result.getErrors()).build();
}
}
22 changes: 18 additions & 4 deletions src/main/java/de/kosit/validationtool/cmd/PrintReportAction.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,10 @@

import de.kosit.validationtool.impl.model.ProcessStepResult;
import de.kosit.validationtool.impl.model.Result;
import de.kosit.validationtool.impl.tasks.DocumentParseAction;
import de.kosit.validationtool.impl.tasks.CreateReportAction;
import de.kosit.validationtool.impl.xvrl.XVRLBuilder;
import de.kosit.validationtool.model.reportInput.XMLSyntaxError;
import de.kosit.validationtool.model.xvrl.XVRLReport;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;

Expand Down Expand Up @@ -48,13 +51,24 @@ public ProcessStepResult check(final Process results) {
try {
final StringWriter writer = new StringWriter();
final Serializer serializer = this.processor.newSerializer(writer);
Result<XdmNode, Object> result = results.getResult(DocumentParseAction.class);
Result<XdmNode, Object> result = results.getResult(CreateReportAction.class);
serializer.serializeNode(result.getObject());
Printer.writeOut(writer.toString());
} catch (final SaxonApiException e) {
log.error("Error while printing result to stdout", e);
}
// TODO return Report
return new ProcessStepResult();

ProcessStepResult processStepResult = new ProcessStepResult();
processStepResult.setType(PrintReportAction.class);
// TODO result
Result<Object, XMLSyntaxError> stepResult = new Result<>();
processStepResult.setResult(stepResult);
processStepResult.setReport(generateXVRLReport(stepResult));
return processStepResult;
}

private static XVRLReport generateXVRLReport(final Result<Object, XMLSyntaxError> result) {
// TODO create report here
return XVRLBuilder.builder().name("Print Report").addErrors(result.getErrors()).build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,10 @@

import de.kosit.validationtool.impl.model.ProcessStepResult;
import de.kosit.validationtool.impl.model.Result;
import de.kosit.validationtool.impl.tasks.DocumentParseAction;
import de.kosit.validationtool.impl.tasks.CreateReportAction;
import de.kosit.validationtool.impl.xvrl.XVRLBuilder;
import de.kosit.validationtool.model.reportInput.XMLSyntaxError;
import de.kosit.validationtool.model.xvrl.XVRLReport;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;

Expand Down Expand Up @@ -53,18 +55,30 @@ public ProcessStepResult check(final Process results) {
try {
log.info("Serializing result to {}", file.toAbsolutePath());
final Serializer serializer = this.processor.newSerializer(file.toFile());
Result<XdmNode, XMLSyntaxError> result = results.getResult(DocumentParseAction.class);
serializer.serializeNode(result.getObject());
Result<XdmNode, XMLSyntaxError> result = results.getResult(CreateReportAction.class);
if (result != null && result.getObject() != null) {
serializer.serializeNode(result.getObject());
}
} catch (final SaxonApiException e) {
log.error("Can not serialize result report to {}", file.toAbsolutePath(), e);
}
// TODO return Report
return new ProcessStepResult();
ProcessStepResult processStepResult = new ProcessStepResult();
processStepResult.setType(SerializeReportAction.class);
// TODO result
Result<Object, XMLSyntaxError> stepResult = new Result<>();
processStepResult.setResult(stepResult);
processStepResult.setReport(generateXVRLReport(stepResult));
return processStepResult;
}

private static XVRLReport generateXVRLReport(final Result<Object, XMLSyntaxError> result) {
// TODO create report here
return XVRLBuilder.builder().name("Serialize Report").addErrors(result.getErrors()).build();
}

@Override
public boolean isSkipped(final Process results) {
if (results.getResult(DocumentParseAction.class) == null) {
if (results.getResult(CreateReportAction.class) == null) {
log.warn("Can not serialize result report. No document found");
return true;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@
import java.nio.file.Path;

import de.kosit.validationtool.impl.model.ProcessStepResult;
import de.kosit.validationtool.impl.model.Result;
import de.kosit.validationtool.impl.xvrl.XVRLBuilder;
import de.kosit.validationtool.model.reportInput.XMLSyntaxError;
import de.kosit.validationtool.model.xvrl.XVRLReport;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;

Expand Down Expand Up @@ -50,8 +54,19 @@ public ProcessStepResult check(final Process results) {
} catch (final IOException e) {
log.error("Can not serialize result report to {}", file.toAbsolutePath(), e);
}
// TODO return Report
return new ProcessStepResult();

ProcessStepResult processStepResult = new ProcessStepResult();
processStepResult.setType(SerializeReportInputAction.class);
// TODO result
Result<Object, XMLSyntaxError> stepResult = new Result<>();
processStepResult.setResult(stepResult);
processStepResult.setReport(generateXVRLReport(stepResult));
return processStepResult;
}

private static XVRLReport generateXVRLReport(final Result<Object, XMLSyntaxError> result) {
// TODO create report here
return XVRLBuilder.builder().name("Serialize Report Input").addErrors(result.getErrors()).build();
}

@Override
Expand Down
5 changes: 3 additions & 2 deletions src/main/java/de/kosit/validationtool/impl/DefaultCheck.java
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ protected Result runCheckInternal(final Process checkProcess) {
checkProcess.setFinished(true);
log.info("Finished check of {} in {}ms\n", checkProcess.getInput().getName(), System.currentTimeMillis() - started);
final Result result = createResult(checkProcess);
createXVRLResult(checkProcess);
// createXVRLResult(checkProcess);
return result;
}

Expand Down Expand Up @@ -179,7 +179,8 @@ private Result createXVRLResult(final Process process) {

de.kosit.validationtool.impl.model.Result<AcceptRecommendation, Object> acceptStatusResult = process
.getResult(ComputeAcceptanceAction.class);
final XVRLResult xvrlResult = new XVRLResult(process.getXvrlFinalReport(), acceptStatusResult.getObject(),
de.kosit.validationtool.impl.model.Result<XdmNode, Object> createReportResult = process.getResult(CreateReportAction.class);
final XVRLResult xvrlResult = new XVRLResult(createReportResult.getObject(), acceptStatusResult.getObject(),
new HtmlExtractor(this.processor));

final XVRLReport parserReport = process.getReport(DocumentParseAction.class);
Expand Down
22 changes: 11 additions & 11 deletions src/main/java/de/kosit/validationtool/impl/tasks/CheckAction.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,7 @@

package de.kosit.validationtool.impl.tasks;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;

import org.apache.commons.io.FilenameUtils;
Expand All @@ -37,8 +34,6 @@
import de.kosit.validationtool.model.xvrl.XVRLReport;
import de.kosit.validationtool.model.xvrl.XVRLReportSummary;

import net.sf.saxon.s9api.XdmNode;

/**
* Interface, welches von allen Prüfschritten implementiert wird. Der Parameter vom Typ {@link Process} dient dabei
* sowohl als Quellce für Eingabe Parameter als auch für die Aufnahme von Ergebnisse, die an weitere Schritte
Expand All @@ -60,9 +55,6 @@ class Process {

private List<ProcessStepResult> processStepResults = new ArrayList<>();

/** Das finale XVRL Ergebnis */
private XdmNode xvrlFinalReport;

@Setter(AccessLevel.NONE)
private CreateReportInput reportInput;

Expand All @@ -86,7 +78,15 @@ public Process(final Input input, final CreateReportInput reportInput, final XVR
}

public void addStepResult(final ProcessStepResult result) {
this.processStepResults.add(result);
Optional<ProcessStepResult> optional = this.processStepResults.stream()
.filter(processStepResult -> processStepResult.getType().equals(result.getType())).findFirst();
if (optional.isPresent()) {
ProcessStepResult currentStepResult = optional.get();
currentStepResult.setResult(result.getResult());
currentStepResult.setReport(result.getReport());
} else {
this.processStepResults.add(result);
}
}

public XVRLReport getReport(final Class<? extends CheckAction> callingAction) {
Expand All @@ -104,7 +104,7 @@ public XVRLReportSummary getXvrlReportSummary() {
public <D extends CheckAction, T, E> Result<T, E> getResult(final Class<D> type) {
// noinspection unchecked
return (Result<T, E>) this.processStepResults.stream().filter(b -> b.getType().equals(type)).findFirst()
.orElseThrow(IllegalArgumentException::new).getResult();
.orElse(new ProcessStepResult()).getResult();
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@

import java.util.Optional;

import de.kosit.validationtool.impl.xvrl.XVRLBuilder;
import de.kosit.validationtool.model.xvrl.XVRLReport;
import org.oclc.purl.dsdl.svrl.FailedAssert;

import lombok.RequiredArgsConstructor;
Expand Down Expand Up @@ -46,7 +48,7 @@ public class ComputeAcceptanceAction implements CheckAction {
@Override
public ProcessStepResult check(final Process results) {
AcceptRecommendation acceptRecommendation = AcceptRecommendation.UNDEFINED;
if (!results.isStopped() && !results.getResult(DocumentParseAction.class).isValid()) {
if (!results.isStopped() && results.getResult(DocumentParseAction.class).isValid()) {
if (preCondtionsMatch(results)) {
final Result<Scenario, String> scenarioSelection = results.getResult(ScenarioSelectionAction.class);
final Optional<XPathSelector> acceptMatch = scenarioSelection.getObject().getAcceptSelector();
Expand All @@ -60,12 +62,17 @@ public ProcessStepResult check(final Process results) {
}
}

final ProcessStepResult result = new ProcessStepResult();
result.setResult(new Result<>(acceptRecommendation));
result.setType(ComputeAcceptanceAction.class);
// TODO report
result.setReport(null);
return result;
final ProcessStepResult stepResult = new ProcessStepResult();
Result<Object, XMLSyntaxError> result = new Result<>(acceptRecommendation);
stepResult.setResult(result);
stepResult.setType(ComputeAcceptanceAction.class);
stepResult.setReport(generateXVRLReport(result));
return stepResult;
}

private static XVRLReport generateXVRLReport(final Result<Object, XMLSyntaxError> currentResult) {
// TODO create report here
return XVRLBuilder.builder().name("Compute Acceptance Validator").addErrors(currentResult.getErrors()).build();
}

private static AcceptRecommendation evaluateSchemaAndSchematron(final Process results) {
Expand Down
Loading

0 comments on commit 38dfd6a

Please sign in to comment.