-package org.simantics.tests.modelled;\r
-\r
-import java.io.BufferedReader;\r
-import java.io.IOException;\r
-import java.io.StringReader;\r
-import java.util.ArrayList;\r
-import java.util.Collection;\r
-import java.util.List;\r
-import java.util.regex.Pattern;\r
-\r
-import org.simantics.databoard.Bindings;\r
-import org.simantics.db.Resource;\r
-import org.simantics.db.WriteGraph;\r
-import org.simantics.db.common.utils.NameUtils;\r
-import org.simantics.db.exception.DatabaseException;\r
-import org.simantics.layer0.Layer0;\r
-import org.simantics.scl.compiler.commands.CommandSession;\r
-import org.simantics.scl.compiler.commands.TestScriptExecutor;\r
-import org.simantics.scl.compiler.module.Module;\r
-import org.simantics.scl.compiler.module.coverage.CombinedCoverage;\r
-import org.simantics.scl.compiler.module.coverage.CoverageUtils;\r
-import org.simantics.scl.compiler.module.options.ModuleCompilationOptions;\r
-import org.simantics.scl.compiler.module.options.ModuleCompilationOptionsAdvisor;\r
-import org.simantics.scl.compiler.module.repository.ModuleRepository;\r
-import org.simantics.scl.compiler.runtime.RuntimeModule;\r
-import org.simantics.scl.osgi.SCLOsgi;\r
-import org.simantics.scl.runtime.reporting.SCLReportingHandler;\r
-import org.simantics.tests.modelled.ontology.TestsResource;\r
-\r
-public class TestsGraphUtils {\r
-\r
- private static final String STS_TEST_PREFIX = "STSTest";\r
- private static final String STS_SUITE_PREFIX = "STSSuite";\r
- \r
- private TestsGraphUtils() {}\r
- \r
- public static Resource createSTSTest(WriteGraph graph, Resource parent) throws DatabaseException {\r
- String name = NameUtils.findFreshEscapedName(graph, STS_TEST_PREFIX, parent);\r
- Resource stsTest = graph.newResource();\r
- \r
- Layer0 L0 = Layer0.getInstance(graph);\r
- TestsResource TESTS = TestsResource.getInstance(graph);\r
- \r
- graph.claim(parent, L0.ConsistsOf, L0.PartOf, stsTest);\r
- graph.claim(stsTest, L0.InstanceOf, TESTS.STSTest);\r
- graph.claimLiteral(stsTest, L0.HasName, name, Bindings.STRING);\r
- graph.claimLiteral(stsTest, TESTS.STSTest_definition, "", Bindings.STRING);\r
- return stsTest;\r
- }\r
- \r
- public static Resource createSTSSuite(WriteGraph graph, Resource parent) throws DatabaseException {\r
- String name = NameUtils.findFreshEscapedName(graph, STS_SUITE_PREFIX, parent);\r
- Resource stsSuite = graph.newResource();\r
- \r
- Layer0 L0 = Layer0.getInstance(graph);\r
- TestsResource TESTS = TestsResource.getInstance(graph);\r
- \r
- graph.claim(parent, L0.ConsistsOf, L0.PartOf, stsSuite);\r
- graph.claim(stsSuite, L0.InstanceOf, TESTS.STSSuite);\r
- graph.claimLiteral(stsSuite, L0.HasName, name, Bindings.STRING);\r
- return stsSuite;\r
- }\r
-\r
- public static CombinedCoverage runSTSTestDefinition(String definition, List<Pattern> moduleNameFilters, SCLReportingHandler handler) throws IOException {\r
- \r
-// ModuleRepository repo = SCLOsgi.MODULE_REPOSITORY;\r
- ModuleRepository repo = new ModuleRepository(SCLOsgi.SOURCE_REPOSITORY);\r
- repo.setAdvisor(new ModuleCompilationOptionsAdvisor() {\r
- \r
- @Override\r
- public ModuleCompilationOptions getOptions(String moduleName) {\r
- boolean coverage = false;\r
- for (Pattern p : moduleNameFilters) {\r
- if (p.matcher(moduleName.toLowerCase()).find()) {\r
- coverage = true;\r
- break;\r
- }\r
- }\r
- return new ModuleCompilationOptions(coverage);\r
- }\r
- });\r
- \r
- CommandSession session = new CommandSession(repo, handler);\r
- TestScriptExecutor executor = new TestScriptExecutor(session, new BufferedReader(new StringReader(definition)), handler);\r
- try {\r
- executor.execute();\r
- } catch (Throwable t) {\r
- t.printStackTrace();\r
- }\r
- Collection<RuntimeModule> runtimeModules = session.getRuntimeEnvironment().getRuntimeModules();\r
- List<Module> modules = new ArrayList<>(runtimeModules.size());\r
- for (RuntimeModule module : runtimeModules) {\r
- modules.add(module.getModule());\r
- }\r
- CombinedCoverage coverage = CoverageUtils.getCoverage(modules);\r
- return coverage;\r
- }\r
-}\r
+package org.simantics.tests.modelled;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.StringReader;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.regex.Pattern;
+
+import org.simantics.databoard.Bindings;
+import org.simantics.db.ReadGraph;
+import org.simantics.db.Resource;
+import org.simantics.db.WriteGraph;
+import org.simantics.db.common.utils.NameUtils;
+import org.simantics.db.exception.DatabaseException;
+import org.simantics.layer0.Layer0;
+import org.simantics.scl.compiler.commands.CommandSession;
+import org.simantics.scl.compiler.commands.TestScriptExecutor;
+import org.simantics.scl.compiler.module.Module;
+import org.simantics.scl.compiler.module.coverage.CombinedCoverage;
+import org.simantics.scl.compiler.module.coverage.CoverageUtils;
+import org.simantics.scl.compiler.module.options.ModuleCompilationOptions;
+import org.simantics.scl.compiler.module.options.ModuleCompilationOptionsAdvisor;
+import org.simantics.scl.compiler.module.repository.ModuleRepository;
+import org.simantics.scl.compiler.runtime.RuntimeModule;
+import org.simantics.scl.osgi.SCLOsgi;
+import org.simantics.scl.runtime.reporting.SCLReportingHandler;
+import org.simantics.tests.modelled.ontology.TestsResource;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class TestsGraphUtils {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(TestsGraphUtils.class);
+
+ private static final String STS_TEST_PREFIX = "STSTest";
+ private static final String STS_SUITE_PREFIX = "STSSuite";
+ private static final String STS_VARIABLE_PREFIX = "STSVariable";
+
+ private TestsGraphUtils() {}
+
+ public static Resource createSTSVariable(WriteGraph graph, Resource parent) throws DatabaseException {
+ String name = NameUtils.findFreshEscapedName(graph, STS_VARIABLE_PREFIX, parent);
+ Resource stsVariable = graph.newResource();
+
+ Layer0 L0 = Layer0.getInstance(graph);
+ TestsResource TESTS = TestsResource.getInstance(graph);
+
+ graph.claim(parent, L0.ConsistsOf, L0.PartOf, stsVariable);
+ graph.claim(stsVariable, L0.InstanceOf, TESTS.STSVariable);
+ graph.claimLiteral(stsVariable, L0.HasName, name, Bindings.STRING);
+ graph.claimLiteral(stsVariable, TESTS.STSVariable_definition, "", Bindings.STRING);
+ return stsVariable;
+ }
+
+ public static Resource createSTSTest(WriteGraph graph, Resource parent) throws DatabaseException {
+ String name = NameUtils.findFreshEscapedName(graph, STS_TEST_PREFIX, parent);
+ Resource stsTest = graph.newResource();
+
+ Layer0 L0 = Layer0.getInstance(graph);
+ TestsResource TESTS = TestsResource.getInstance(graph);
+
+ graph.claim(parent, L0.ConsistsOf, L0.PartOf, stsTest);
+ graph.claim(stsTest, L0.InstanceOf, TESTS.STSTest);
+ graph.claimLiteral(stsTest, L0.HasName, name, Bindings.STRING);
+ graph.claimLiteral(stsTest, TESTS.STSTest_definition, "", Bindings.STRING);
+ return stsTest;
+ }
+
+ public static Resource createSTSSuite(WriteGraph graph, Resource parent) throws DatabaseException {
+ String name = NameUtils.findFreshEscapedName(graph, STS_SUITE_PREFIX, parent);
+ Resource stsSuite = graph.newResource();
+
+ Layer0 L0 = Layer0.getInstance(graph);
+ TestsResource TESTS = TestsResource.getInstance(graph);
+
+ graph.claim(parent, L0.ConsistsOf, L0.PartOf, stsSuite);
+ graph.claim(stsSuite, L0.InstanceOf, TESTS.STSSuite);
+ graph.claimLiteral(stsSuite, L0.HasName, name, Bindings.STRING);
+ return stsSuite;
+ }
+
+ public static CombinedCoverage runSTSTestDefinition(String definition, List<Pattern> moduleNameFilters, SCLReportingHandler handler) throws IOException {
+
+// ModuleRepository repo = SCLOsgi.MODULE_REPOSITORY;
+ ModuleRepository repo = new ModuleRepository(SCLOsgi.SOURCE_REPOSITORY);
+ repo.setAdvisor(new ModuleCompilationOptionsAdvisor() {
+
+ @Override
+ public ModuleCompilationOptions getOptions(String moduleName) {
+ boolean coverage = false;
+ for (Pattern p : moduleNameFilters) {
+ if (p.matcher(moduleName.toLowerCase()).find()) {
+ coverage = true;
+ break;
+ }
+ }
+ return new ModuleCompilationOptions(coverage);
+ }
+ });
+
+ CommandSession session = new CommandSession(repo, handler);
+ TestScriptExecutor executor = new TestScriptExecutor(session, new BufferedReader(new StringReader(definition)), handler);
+ try {
+ executor.execute();
+ } catch (Throwable t) {
+ LOGGER.error("Failed to execute test definition:\n{}", definition, t);
+ }
+ Collection<RuntimeModule> runtimeModules = session.getRuntimeEnvironment().getRuntimeModules();
+ List<Module> modules = new ArrayList<>(runtimeModules.size());
+ for (RuntimeModule module : runtimeModules) {
+ modules.add(module.getModule());
+ }
+ CombinedCoverage coverage = CoverageUtils.getCoverage(modules);
+ return coverage;
+ }
+
+ public static byte[] stsTestContentDump(ReadGraph graph, Resource test) throws DatabaseException {
+ TestsResource TESTS = TestsResource.getInstance(graph);
+ String def = graph.getRelatedValue(test, TESTS.STSTest_definition, Bindings.STRING);
+ return def.getBytes(StandardCharsets.UTF_8);
+ }
+
+}