From 29d101fa093a865027f8efba535a320ab2b2f560 Mon Sep 17 00:00:00 2001 From: markiantorno Date: Thu, 23 Apr 2020 17:02:54 -0400 Subject: [PATCH] wip --- org.hl7.fhir.validation/pom.xml | 1 + .../conversion/tests/R3R4ConversionTests.java | 111 +++++++----------- .../tests/CDAValidationTestCase.java | 4 +- .../validation/tests/TransformationTests.java | 4 +- 4 files changed, 48 insertions(+), 72 deletions(-) diff --git a/org.hl7.fhir.validation/pom.xml b/org.hl7.fhir.validation/pom.xml index e9e7c1ea8..99a370de1 100644 --- a/org.hl7.fhir.validation/pom.xml +++ b/org.hl7.fhir.validation/pom.xml @@ -138,6 +138,7 @@ ${validator_test_case_version} test + diff --git a/org.hl7.fhir.validation/src/test/java/org/hl7/fhir/conversion/tests/R3R4ConversionTests.java b/org.hl7.fhir.validation/src/test/java/org/hl7/fhir/conversion/tests/R3R4ConversionTests.java index 9f20328d3..8827d42ab 100644 --- a/org.hl7.fhir.validation/src/test/java/org/hl7/fhir/conversion/tests/R3R4ConversionTests.java +++ b/org.hl7.fhir.validation/src/test/java/org/hl7/fhir/conversion/tests/R3R4ConversionTests.java @@ -1,21 +1,6 @@ package org.hl7.fhir.conversion.tests; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.zip.ZipEntry; -import java.util.zip.ZipInputStream; - -import javax.xml.parsers.ParserConfigurationException; - +import com.google.gson.*; import org.hl7.fhir.convertors.R3ToR4Loader; import org.hl7.fhir.exceptions.DefinitionException; import org.hl7.fhir.exceptions.FHIRException; @@ -25,16 +10,8 @@ import org.hl7.fhir.r4.context.SimpleWorkerContext; import org.hl7.fhir.r4.elementmodel.Element; import org.hl7.fhir.r4.elementmodel.Manager; import org.hl7.fhir.r4.formats.IParser.OutputStyle; -import org.hl7.fhir.r4.model.Base; -import org.hl7.fhir.r4.model.Coding; -import org.hl7.fhir.r4.model.MetadataResource; -import org.hl7.fhir.r4.model.PractitionerRole; -import org.hl7.fhir.r4.model.Resource; -import org.hl7.fhir.r4.model.ResourceFactory; -import org.hl7.fhir.r4.model.StructureDefinition; +import org.hl7.fhir.r4.model.*; import org.hl7.fhir.r4.model.StructureDefinition.StructureDefinitionKind; -import org.hl7.fhir.r4.model.StructureMap; -import org.hl7.fhir.r4.model.UriType; import org.hl7.fhir.r4.test.utils.TestingUtilities; import org.hl7.fhir.r4.utils.IResourceValidator; import org.hl7.fhir.r4.utils.IResourceValidator.IValidatorResourceFetcher; @@ -48,30 +25,30 @@ import org.hl7.fhir.utilities.cache.PackageCacheManager; import org.hl7.fhir.utilities.cache.ToolsVersion; import org.hl7.fhir.utilities.validation.ValidationMessage; import org.hl7.fhir.utilities.validation.ValidationMessage.IssueSeverity; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; -import org.junit.runners.Parameterized.Parameters; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; import org.xml.sax.SAXException; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonArray; -import com.google.gson.JsonObject; -import com.google.gson.JsonPrimitive; +import javax.xml.parsers.ParserConfigurationException; +import java.io.*; +import java.util.*; +import java.util.stream.Stream; +import java.util.zip.ZipEntry; +import java.util.zip.ZipInputStream; -@RunWith(Parameterized.class) +@Disabled public class R3R4ConversionTests implements ITransformerServices, IValidatorResourceFetcher { private static final boolean SAVING = true; private PackageCacheManager pcm = null; - @Parameters(name = "{index}: id {0}") - public static Iterable data() throws ParserConfigurationException, SAXException, IOException { + public static Stream data() throws ParserConfigurationException, SAXException, IOException { if (!(new File(Utilities.path(TestingUtilities.home(), "implementations", "r3maps", "outcomes.json")).exists())) throw new Error("You must set the default directory to the build directory when you execute these tests"); r3r4Outcomes = (JsonObject) new com.google.gson.JsonParser().parse( - TextFile.fileToString(Utilities.path(TestingUtilities.home(), "implementations", "r3maps", "outcomes.json"))); + TextFile.fileToString(Utilities.path(TestingUtilities.home(), "implementations", "r3maps", "outcomes.json"))); rules = new IniFile(Utilities.path(TestingUtilities.home(), "implementations", "r3maps", "test-rules.ini")); String srcFile = Utilities.path(TestingUtilities.home(), "source", "release3", "examples.zip"); @@ -97,13 +74,13 @@ public class R3R4ConversionTests implements ITransformerServices, IValidatorReso names.addAll(examples.keySet()); Collections.sort(names); - List objects = new ArrayList(examples.size()); + List objects = new ArrayList<>(); for (String id : names) { - objects.add(new Object[] { id, examples.get(id) }); + objects.add(Arguments.of(id, examples.get(id))); } - return objects; + return objects.stream(); } private static SimpleWorkerContext contextR3; @@ -111,20 +88,14 @@ public class R3R4ConversionTests implements ITransformerServices, IValidatorReso private static JsonObject r3r4Outcomes; private static IniFile rules; private List extras; - private final byte[] content; - private final String name; private String workingid; private static Map loadErrors = new HashMap(); private static String filter; - public R3R4ConversionTests(String name, byte[] content) { - this.name = name; - this.content = content; - } - @SuppressWarnings("deprecation") - @Test - public void test() throws Exception { + @ParameterizedTest(name = "{index}: id {0}") + @MethodSource("data") + public void test(String name, byte[] content) throws Exception { checkLoad(); StructureMapUtilities smu4 = new StructureMapUtilities(contextR4, this); StructureMapUtilities smu3 = new StructureMapUtilities(contextR3, this); @@ -141,7 +112,7 @@ public class R3R4ConversionTests implements ITransformerServices, IValidatorReso // load the example (r3) org.hl7.fhir.r4.elementmodel.Element r3 = new org.hl7.fhir.r4.elementmodel.XmlParser(contextR3) - .parse(new ByteArrayInputStream(content)); + .parse(new ByteArrayInputStream(content)); tn = r3.fhirType(); workingid = r3.getChildValue("id"); if (SAVING) { @@ -150,10 +121,10 @@ public class R3R4ConversionTests implements ITransformerServices, IValidatorReso cnt = bso.toByteArray(); Utilities.createDirectory(Utilities.path(TestingUtilities.home(), "implementations", "r3maps", "test-output")); TextFile.bytesToFile(cnt, Utilities.path(TestingUtilities.home(), "implementations", "r3maps", "test-output", - tn + "-" + workingid + ".input.json")); + tn + "-" + workingid + ".input.json")); } - String mapFile = Utilities.path(TestingUtilities.home(), "implementations", "r3maps", "R3toR4", r3.fhirType()+".map"); + String mapFile = Utilities.path(TestingUtilities.home(), "implementations", "r3maps", "R3toR4", r3.fhirType() + ".map"); if (new File(mapFile).exists()) { StructureMap sm = smu4.parse(TextFile.fileToString(mapFile), mapFile); @@ -167,12 +138,12 @@ public class R3R4ConversionTests implements ITransformerServices, IValidatorReso new org.hl7.fhir.r4.formats.JsonParser().setOutputStyle(OutputStyle.PRETTY).compose(bs, r4); if (SAVING) { TextFile.bytesToFile(bs.toByteArray(), Utilities.path(TestingUtilities.home(), "implementations", "r3maps", - "test-output", tn + "-" + workingid + ".r4.json")); + "test-output", tn + "-" + workingid + ".r4.json")); for (Resource r : extras) { bs = new ByteArrayOutputStream(); new org.hl7.fhir.r4.formats.JsonParser().setOutputStyle(OutputStyle.PRETTY).compose(bs, r); TextFile.bytesToFile(bs.toByteArray(), Utilities.path(TestingUtilities.home(), "implementations", "r3maps", - "test-output", r.fhirType() + "-" + r.getId() + ".r4.json")); + "test-output", r.fhirType() + "-" + r.getId() + ".r4.json")); } } @@ -183,7 +154,7 @@ public class R3R4ConversionTests implements ITransformerServices, IValidatorReso validator.validate(null, r4validationErrors, r4); // load the R4 to R3 map - mapFile = Utilities.path(TestingUtilities.home(), "implementations", "r3maps", "R4toR3", getMapFor(r4.fhirType(), r3.fhirType())+".map"); + mapFile = Utilities.path(TestingUtilities.home(), "implementations", "r3maps", "R4toR3", getMapFor(r4.fhirType(), r3.fhirType()) + ".map"); sm = smu3.parse(TextFile.fileToString(mapFile), mapFile); // convert to R3 @@ -196,11 +167,11 @@ public class R3R4ConversionTests implements ITransformerServices, IValidatorReso new org.hl7.fhir.r4.elementmodel.JsonParser(contextR3).compose(ro3, bs, OutputStyle.PRETTY, null); if (SAVING) TextFile.bytesToFile(bs.toByteArray(), Utilities.path(TestingUtilities.home(), "implementations", "r3maps", - "test-output", tn + "-" + workingid + ".output.json")); + "test-output", tn + "-" + workingid + ".output.json")); // check(errors, tn, workingid); roundTripError = TestingUtilities.checkJsonSrcIsSame(new String(cnt), new String(bs.toByteArray()), - filter != null); + filter != null); if (roundTripError != null && roundTripError.equals(rules.getStringProperty(tn + "/" + workingid, "roundtrip"))) roundTripError = null; } else { @@ -227,7 +198,7 @@ public class R3R4ConversionTests implements ITransformerServices, IValidatorReso } private void updateOutcomes(String tn, String id, Exception executionError, - List r4validationErrors, String roundTripError) throws IOException { + List r4validationErrors, String roundTripError) throws IOException { JsonObject r = r3r4Outcomes.getAsJsonObject(tn); if (r == null) { r = new JsonObject(); @@ -264,7 +235,7 @@ public class R3R4ConversionTests implements ITransformerServices, IValidatorReso Gson gson = new GsonBuilder().setPrettyPrinting().create(); String json = gson.toJson(r3r4Outcomes); TextFile.stringToFile(json, - (Utilities.path(TestingUtilities.home(), "implementations", "r3maps", "outcomes.json"))); + (Utilities.path(TestingUtilities.home(), "implementations", "r3maps", "outcomes.json"))); } @@ -305,10 +276,10 @@ public class R3R4ConversionTests implements ITransformerServices, IValidatorReso * Supporting multiple versions at once is a little tricky. We're going to have * 2 contexts: - an R3 context which is used to read/write R3 instances - an R4 * context which is used to perform the transforms - * + * * R3 structure definitions are cloned into R3 context with a modified URL (as * 3.0/) - * + * */ private void checkLoad() throws IOException, FHIRException, Exception { if (contextR3 != null) @@ -321,7 +292,7 @@ public class R3R4ConversionTests implements ITransformerServices, IValidatorReso contextR3 = new SimpleWorkerContext(); contextR3.setAllowLoadingDuplicates(true); contextR3.setOverrideVersionNs("http://hl7.org/fhir/3.0/StructureDefinition"); - contextR3.loadFromPackage(pcm.loadPackage("hl7.fhir.core", "3.0.1"), ldr, new String[] {}); + contextR3.loadFromPackage(pcm.loadPackage("hl7.fhir.core", "3.0.1"), ldr, new String[]{}); System.out.println("loading R4"); contextR4 = new SimpleWorkerContext(); @@ -341,7 +312,7 @@ public class R3R4ConversionTests implements ITransformerServices, IValidatorReso StructureDefinition sdn = sd.copy(); sdn.setUrl(sdn.getUrl().replace("http://hl7.org/fhir/", "http://hl7.org/fhir/3.0/")); sdn.addExtension().setUrl("http://hl7.org/fhir/StructureDefinition/elementdefinition-namespace") - .setValue(new UriType("http://hl7.org/fhir")); + .setValue(new UriType("http://hl7.org/fhir")); contextR3.cacheResource(sdn); contextR4.cacheResource(sdn); } @@ -352,7 +323,7 @@ public class R3R4ConversionTests implements ITransformerServices, IValidatorReso contextR3.setName("R3"); contextR4.setName("R4"); - // contextR4.setValidatorFactory(new InstanceValidatorFactory()); + // contextR4.setValidatorFactory(new InstanceValidatorFactory()); // TODO: this has to be R% now... contextR4.setValidatorFactory(new InstanceValidatorFactory()); System.out.println("loading Maps"); @@ -389,13 +360,13 @@ public class R3R4ConversionTests implements ITransformerServices, IValidatorReso @Override public void log(String message) { - System.out.println(message); + System.out.println(message); } @Override public Base createResource(Object appInfo, Base res, boolean atRootofTransform) { if (res instanceof Resource && (res.fhirType().equals("CodeSystem") || res.fhirType().equals("CareTeam") - || res.fhirType().equals("PractitionerRole"))) { + || res.fhirType().equals("PractitionerRole"))) { Resource r = (Resource) res; extras.add(r); r.setId(workingid + "-" + extras.size()); @@ -413,7 +384,7 @@ public class R3R4ConversionTests implements ITransformerServices, IValidatorReso BaseWorkerContext context = (BaseWorkerContext) appInfo; if (context == contextR3) { StructureDefinition sd = context.fetchResource(StructureDefinition.class, - "http://hl7.org/fhir/3.0/StructureDefinition/" + name); + "http://hl7.org/fhir/3.0/StructureDefinition/" + name); if (sd == null) throw new FHIRException("Type not found: '" + name + "'"); return Manager.build(context, sd); @@ -445,7 +416,7 @@ public class R3R4ConversionTests implements ITransformerServices, IValidatorReso if (vals.length == 2 && vals[0].equals("practitioner")) for (Resource r : extras) { if (r instanceof PractitionerRole - && ((PractitionerRole) r).getPractitioner().getReference().equals("Practitioner/" + vals[1])) { + && ((PractitionerRole) r).getPractitioner().getReference().equals("Practitioner/" + vals[1])) { results.add(r); } } @@ -455,7 +426,7 @@ public class R3R4ConversionTests implements ITransformerServices, IValidatorReso @Override public Element fetch(Object appContext, String url) - throws FHIRFormatError, DefinitionException, IOException, FHIRException { + throws FHIRFormatError, DefinitionException, IOException, FHIRException { return null; } diff --git a/org.hl7.fhir.validation/src/test/java/org/hl7/fhir/validation/tests/CDAValidationTestCase.java b/org.hl7.fhir.validation/src/test/java/org/hl7/fhir/validation/tests/CDAValidationTestCase.java index c1735254a..181e9e414 100644 --- a/org.hl7.fhir.validation/src/test/java/org/hl7/fhir/validation/tests/CDAValidationTestCase.java +++ b/org.hl7.fhir.validation/src/test/java/org/hl7/fhir/validation/tests/CDAValidationTestCase.java @@ -3,8 +3,10 @@ package org.hl7.fhir.validation.tests; import org.hl7.fhir.r4.context.SimpleWorkerContext; import org.hl7.fhir.r5.test.utils.TestingUtilities; import org.hl7.fhir.validation.Validator; -import org.junit.Test; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +@Disabled public class CDAValidationTestCase { private SimpleWorkerContext context; diff --git a/org.hl7.fhir.validation/src/test/java/org/hl7/fhir/validation/tests/TransformationTests.java b/org.hl7.fhir.validation/src/test/java/org/hl7/fhir/validation/tests/TransformationTests.java index e695dd8b5..25ae9cc75 100644 --- a/org.hl7.fhir.validation/src/test/java/org/hl7/fhir/validation/tests/TransformationTests.java +++ b/org.hl7.fhir.validation/src/test/java/org/hl7/fhir/validation/tests/TransformationTests.java @@ -5,8 +5,10 @@ import java.io.File; import org.hl7.fhir.r4.test.utils.TestingUtilities; import org.hl7.fhir.validation.Validator; import org.hl7.fhir.utilities.Utilities; -import org.junit.Test; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +@Disabled public class TransformationTests { @Test