Search in sources :

Example 1 with SingleExecutionTest

use of org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.SingleExecutionTest in project legend-engine by finos.

the class TestRuntimeGenerationForServiceTests method testRuntimeGenerationForModelChainConnection.

@Test
public void testRuntimeGenerationForModelChainConnection() {
    String pureGrammarWithModelChainConnection = "###Relational\n" + "Database demo::modelChainConnection::relationalDB\n" + "(\n" + "  Table Person\n" + "  (\n" + "    fullname VARCHAR(1000) PRIMARY KEY,\n" + "    firm VARCHAR(200)\n" + "  )\n" + ")\n" + "\n" + "\n" + "###Service\n" + "Service demo::modelChainConnection::testModelChainConnectionService\n" + "{\n" + "  pattern: '/maheha/testModelChainConnection/fromStudio/';\n" + "  owners:\n" + "  [\n" + "    'maheha'\n" + "  ];\n" + "  documentation: '';\n" + "  autoActivateUpdates: false;\n" + "  execution: Single\n" + "  {\n" + "    query: |demo::modelChainConnection::dest::Person.all()->project([f|$f.firstName, f|$f.lastName], ['firstName', 'lastName']);\n" + "    mapping: demo::modelChainConnection::simpleModelMappingWithAssociation;\n" + "    runtime:\n" + "    #{\n" + "      mappings:\n" + "      [\n" + "        demo::modelChainConnection::simpleModelMappingWithAssociation\n" + "      ];\n" + "      connections:\n" + "      [\n" + "        ModelStore:\n" + "        [\n" + "          connection_1: demo::modelChainConnection::modelChainConnection\n" + "        ],\n" + "        demo::modelChainConnection::relationalDB:\n" + "        [\n" + "          connection_2: demo::modelChainConnection::mySimpleConnection\n" + "        ]\n" + "      ];\n" + "    }#;\n" + "  }\n" + "  test: Single\n" + "  {\n" + "    data: 'default\\nPerson\\nfullname,firm\\nPierre DeBelen,A\\nA. Only One,A\\n\\n\\n\\n';\n" + "    asserts:\n" + "    [\n" + "    ];\n" + "  }\n" + "}\n" + "\n" + "\n" + "###Pure\n" + "Class demo::modelChainConnection::dest::Address\n" + "{\n" + "  street: String[0..1];\n" + "  extension: demo::modelChainConnection::dest::AddressExtension[0..1];\n" + "}\n" + "\n" + "Class demo::modelChainConnection::dest::AddressExtension\n" + "{\n" + "  stuff: String[1];\n" + "}\n" + "\n" + "Class demo::modelChainConnection::dest::Firm\n" + "{\n" + "  legalName: String[1];\n" + "  employees: demo::modelChainConnection::dest::Person[*];\n" + "  addresses: demo::modelChainConnection::dest::Address[*];\n" + "  count: Integer[1];\n" + "}\n" + "\n" + "Class demo::modelChainConnection::dest::Person\n" + "{\n" + "  firstName: String[1];\n" + "  lastName: String[1];\n" + "  addresses: demo::modelChainConnection::dest::Address[*];\n" + "  firm: demo::modelChainConnection::dest::Firm[0..1];\n" + "  description: String[0..1];\n" + "  type: String[0..1];\n" + "}\n" + "\n" + "Class demo::modelChainConnection::src::_Person\n" + "{\n" + "  fullName: String[1];\n" + "  addresses: demo::modelChainConnection::dest::Address[*];\n" + "}\n" + "\n" + "\n" + "###Mapping\n" + "Mapping demo::modelChainConnection::relationalMapping\n" + "(\n" + "  demo::modelChainConnection::src::_Person: Relational\n" + "  {\n" + "    ~primaryKey\n" + "    (\n" + "      [demo::modelChainConnection::relationalDB]Person.fullname\n" + "    )\n" + "    ~mainTable [demo::modelChainConnection::relationalDB]Person\n" + "    fullName: [demo::modelChainConnection::relationalDB]Person.fullname\n" + "  }\n" + ")\n" + "\n" + "Mapping demo::modelChainConnection::simpleModelMappingWithAssociation\n" + "(\n" + "  demo::modelChainConnection::dest::Person: Pure\n" + "  {\n" + "    ~src demo::modelChainConnection::src::_Person\n" + "    firstName: $src.fullName->substring(0, $src.fullName->indexOf(' ')),\n" + "    lastName: $src.fullName->substring($src.fullName->indexOf(' ') + 1, $src.fullName->length())\n" + "  }\n" + ")\n" + "\n" + "\n" + "###Connection\n" + "ModelChainConnection demo::modelChainConnection::modelChainConnection\n" + "{\n" + "  mappings: [\n" + "    demo::modelChainConnection::relationalMapping\n" + "  ];\n" + "}\n" + "\n" + "RelationalDatabaseConnection demo::modelChainConnection::mySimpleConnection\n" + "{\n" + "  store: demo::modelChainConnection::relationalDB;\n" + "  type: H2;\n" + "  specification: LocalH2\n" + "  {\n" + "    testDataSetupCSV: '';\n" + "  };\n" + "  auth: DefaultH2;\n" + "}\n" + "\n" + "\n" + "###Runtime\n" + "Runtime demo::modelChainConnection\n" + "{\n" + "  mappings:\n" + "  [\n" + "    demo::modelChainConnection::simpleModelMappingWithAssociation\n" + "  ];\n" + "  connections:\n" + "  [\n" + "    ModelStore:\n" + "    [\n" + "      connection_1: demo::modelChainConnection::modelChainConnection\n" + "    ],\n" + "    demo::modelChainConnection::relationalDB:\n" + "    [\n" + "      connection_2: demo::modelChainConnection::mySimpleConnection\n" + "    ]\n" + "  ];\n" + "}\n";
    PureModelContextData contextData = PureGrammarParser.newInstance().parseModel(pureGrammarWithModelChainConnection);
    PureModel pureModel = new PureModel(contextData, null, DeploymentMode.TEST);
    Service service = contextData.getElementsOfType(Service.class).get(0);
    EngineRuntime testRuntime = (EngineRuntime) ServiceTestGenerationHelper.buildSingleExecutionTestRuntime((PureSingleExecution) service.execution, (SingleExecutionTest) service.test, contextData, pureModel);
    Assert.assertEquals(testRuntime.connections.size(), 2);
    Assert.assertNotNull(testRuntime.getStoreConnections("ModelStore"));
    Assert.assertEquals(testRuntime.getStoreConnections("ModelStore").storeConnections.size(), 1);
    Assert.assertFalse((testRuntime.getStoreConnections("ModelStore").storeConnections.get(0).connection instanceof RelationalDatabaseConnection));
}
Also used : PureSingleExecution(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.PureSingleExecution) SingleExecutionTest(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.SingleExecutionTest) RelationalDatabaseConnection(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.store.relational.connection.RelationalDatabaseConnection) EngineRuntime(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.runtime.EngineRuntime) Service(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.Service) PureModel(org.finos.legend.engine.language.pure.compiler.toPureGraph.PureModel) PureModelContextData(org.finos.legend.engine.protocol.pure.v1.model.context.PureModelContextData) SingleExecutionTest(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.SingleExecutionTest) Test(org.junit.Test)

Example 2 with SingleExecutionTest

use of org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.SingleExecutionTest in project legend-engine by finos.

the class TestRuntimeGenerationForServiceTests method testRuntimeGenerationForServiceWithRuntimePointer.

@Test
public void testRuntimeGenerationForServiceWithRuntimePointer() {
    String pureGrammarWithModelChainConnection = "###Relational\n" + "Database test::relationalDB\n" + "(\n" + "  Table Person\n" + "  (\n" + "    fullname VARCHAR(1000) PRIMARY KEY\n" + "  )\n" + ")\n" + "\n" + "\n" + "###Service\n" + "Service test::serviceWithRuntimePointer\n" + "{\n" + "  pattern: '/garprat/test/fromStudio/';\n" + "  owners:\n" + "  [\n" + "    'garprat'\n" + "  ];\n" + "  documentation: '';\n" + "  autoActivateUpdates: false;\n" + "  execution: Single\n" + "  {\n" + "    query: |test::Person.all()->project([f|$f.fullName], ['fullName']);\n" + "    mapping: test::relationalMapping;\n" + "    runtime: test::runtimePointer;\n" + "  }\n" + "  test: Single\n" + "  {\n" + "    data: 'default\\nPerson\\nfullname\\nPierre DeBelen\\n';\n" + "    asserts:\n" + "    [\n" + "    ];\n" + "  }\n" + "}\n" + "\n" + "\n" + "###Pure\n" + "Class test::Person\n" + "{\n" + "  fullName: String[1];\n" + "}\n" + "\n" + "\n" + "###Mapping\n" + "Mapping test::relationalMapping\n" + "(\n" + "  test::Person: Relational\n" + "  {\n" + "    ~primaryKey\n" + "    (\n" + "      [test::relationalDB]Person.fullname\n" + "    )\n" + "    ~mainTable [test::relationalDB]Person\n" + "    fullName: [test::relationalDB]Person.fullname\n" + "  }\n" + ")\n" + "\n" + "###Connection\n" + "RelationalDatabaseConnection test::mySimpleConnection\n" + "{\n" + "  store: test::relationalDB;\n" + "  type: MemSQL;\n" + "  specification: Static\n" + "  {\n" + "    name: 'memsql_person_data';\n" + "    host: 'myserver_url';\n" + "    port: 80;\n" + "  };\n" + "  auth: DefaultH2;\n" + "}\n" + "\n" + "\n" + "###Runtime\n" + "Runtime test::runtimePointer\n" + "{\n" + "  mappings:\n" + "  [\n" + "     test::relationalMapping\n" + "  ];\n" + "  connections:\n" + "  [\n" + "    test::relationalDB:\n" + "    [\n" + "      connection_1: test::mySimpleConnection\n" + "    ]\n" + "  ];\n" + "}\n";
    PureModelContextData contextData = PureGrammarParser.newInstance().parseModel(pureGrammarWithModelChainConnection);
    PureModel pureModel = new PureModel(contextData, null, DeploymentMode.TEST);
    Service service = contextData.getElementsOfType(Service.class).get(0);
    EngineRuntime testRuntime = (EngineRuntime) ServiceTestGenerationHelper.buildSingleExecutionTestRuntime((PureSingleExecution) service.execution, (SingleExecutionTest) service.test, contextData, pureModel);
    Assert.assertEquals(testRuntime.connections.size(), 1);
}
Also used : PureSingleExecution(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.PureSingleExecution) SingleExecutionTest(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.SingleExecutionTest) EngineRuntime(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.runtime.EngineRuntime) Service(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.Service) PureModel(org.finos.legend.engine.language.pure.compiler.toPureGraph.PureModel) PureModelContextData(org.finos.legend.engine.protocol.pure.v1.model.context.PureModelContextData) SingleExecutionTest(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.SingleExecutionTest) Test(org.junit.Test)

Example 3 with SingleExecutionTest

use of org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.SingleExecutionTest in project legend-engine by finos.

the class ServiceParseTreeWalker method visitTest.

private ServiceTest visitTest(ServiceParserGrammar.ServiceTestContext ctx) {
    if (ctx.singleTest() != null) {
        ServiceParserGrammar.SingleTestContext singleTestContext = ctx.singleTest();
        SingleExecutionTest singleExecutionTest = new SingleExecutionTest();
        singleExecutionTest.sourceInformation = walkerSourceInformation.getSourceInformation(singleTestContext);
        // test data
        ServiceParserGrammar.TestDataContext testDataContext = PureGrammarParserUtility.validateAndExtractRequiredField(singleTestContext.testData(), "data", singleExecutionTest.sourceInformation);
        singleExecutionTest.data = PureGrammarParserUtility.fromGrammarString(testDataContext.STRING().getText(), true);
        // test asserts (optional)
        ServiceParserGrammar.TestAssertsContext assertsContext = PureGrammarParserUtility.validateAndExtractOptionalField(singleTestContext.testAsserts(), "asserts", singleExecutionTest.sourceInformation);
        singleExecutionTest.asserts = assertsContext != null ? ListIterate.collect(assertsContext.testAssert(), this::visitTestContainer) : new ArrayList<>();
        return singleExecutionTest;
    } else if (ctx.multiTest() != null) {
        ServiceParserGrammar.MultiTestContext multiTestContext = ctx.multiTest();
        MultiExecutionTest multiExecutionTest = new MultiExecutionTest();
        multiExecutionTest.sourceInformation = walkerSourceInformation.getSourceInformation(multiTestContext);
        // tests (indexed by execution key)
        multiExecutionTest.tests = ListIterate.collect(multiTestContext.multiTestElement(), this::visitKeyedSingleExecutionTest);
        return multiExecutionTest;
    }
    throw new UnsupportedOperationException();
}
Also used : MultiExecutionTest(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.MultiExecutionTest) KeyedSingleExecutionTest(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.KeyedSingleExecutionTest) SingleExecutionTest(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.SingleExecutionTest) ArrayList(java.util.ArrayList) ServiceParserGrammar(org.finos.legend.engine.language.pure.grammar.from.antlr4.ServiceParserGrammar)

Example 4 with SingleExecutionTest

use of org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.SingleExecutionTest in project legend-engine by finos.

the class HelperServiceGrammarComposer method renderServiceTest.

public static String renderServiceTest(ServiceTest serviceTest, PureGrammarComposerContext context) {
    int baseIndentation = 1;
    if (serviceTest instanceof SingleExecutionTest) {
        SingleExecutionTest singleExecutionTest = (SingleExecutionTest) serviceTest;
        StringBuilder builder = new StringBuilder().append("Single\n");
        appendTabString(builder, baseIndentation).append("{\n");
        appendTabString(builder, baseIndentation + 1).append("data: ").append(convertString(singleExecutionTest.data, true)).append(";\n");
        appendTabString(builder, baseIndentation + 1).append("asserts:\n").append(renderTestContainers(singleExecutionTest.asserts, baseIndentation + 1, context)).append("\n");
        return builder.append(getTabString(baseIndentation)).append("}\n").toString();
    } else if (serviceTest instanceof MultiExecutionTest) {
        MultiExecutionTest multiExecutionTest = (MultiExecutionTest) serviceTest;
        StringBuilder builder = new StringBuilder().append("Multi\n");
        appendTabString(builder, baseIndentation).append("{\n");
        builder.append(LazyIterate.collect(multiExecutionTest.tests, test -> renderKeyedSingleExecution(test, context)).makeString("\n"));
        return builder.append("\n").append(getTabString(baseIndentation)).append("}\n").toString();
    }
    return unsupported(serviceTest.getClass());
}
Also used : PureGrammarComposerUtility.convertString(org.finos.legend.engine.language.pure.grammar.to.PureGrammarComposerUtility.convertString) KeyedExecutionParameter(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.KeyedExecutionParameter) KeyedSingleExecutionTest(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.KeyedSingleExecutionTest) MultiExecutionTest(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.MultiExecutionTest) DEPRECATED_PureGrammarComposerCore(org.finos.legend.engine.language.pure.grammar.to.DEPRECATED_PureGrammarComposerCore) HelperRuntimeGrammarComposer(org.finos.legend.engine.language.pure.grammar.to.HelperRuntimeGrammarComposer) Runtime(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.runtime.Runtime) PureGrammarComposerUtility.unsupported(org.finos.legend.engine.language.pure.grammar.to.PureGrammarComposerUtility.unsupported) RuntimePointer(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.runtime.RuntimePointer) EngineRuntime(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.runtime.EngineRuntime) ServiceTest(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.ServiceTest) List(java.util.List) PureMultiExecution(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.PureMultiExecution) LazyIterate(org.eclipse.collections.impl.utility.LazyIterate) PureGrammarComposerContext(org.finos.legend.engine.language.pure.grammar.to.PureGrammarComposerContext) PureSingleExecution(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.PureSingleExecution) SingleExecutionTest(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.SingleExecutionTest) PureGrammarComposerUtility.getTabString(org.finos.legend.engine.language.pure.grammar.to.PureGrammarComposerUtility.getTabString) TestContainer(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.TestContainer) LegacyRuntime(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.runtime.LegacyRuntime) PureGrammarComposerUtility.appendTabString(org.finos.legend.engine.language.pure.grammar.to.PureGrammarComposerUtility.appendTabString) Execution(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.Execution) MultiExecutionTest(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.MultiExecutionTest) KeyedSingleExecutionTest(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.KeyedSingleExecutionTest) SingleExecutionTest(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.SingleExecutionTest)

Example 5 with SingleExecutionTest

use of org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.SingleExecutionTest in project legend-engine by finos.

the class ServiceTestRunner method executeTests.

public List<RichServiceTestResult> executeTests() throws IOException, JavaCompileException {
    Execution serviceExecution = this.service.execution;
    if (serviceExecution instanceof PureMultiExecution) {
        List<RichServiceTestResult> results = Lists.mutable.empty();
        try (Scope scope = GlobalTracer.get().buildSpan("Generate Tests And Run For MultiExecution Service").startActive(true)) {
            MutableMap<String, KeyedExecutionParameter> executionsByKey = Iterate.groupByUniqueKey(((PureMultiExecution) serviceExecution).executionParameters, e -> e.key);
            for (KeyedSingleExecutionTest es : ((MultiExecutionTest) service.test).tests) {
                List<TestContainer> asserts = es.asserts;
                KeyedExecutionParameter e = executionsByKey.get(es.key);
                PureMultiExecution pureExecution = (PureMultiExecution) service.execution;
                PureSingleExecution pureSingleExecution = new PureSingleExecution();
                pureSingleExecution.func = pureExecution.func;
                pureSingleExecution.mapping = e.mapping;
                pureSingleExecution.runtime = e.runtime;
                pureSingleExecution.executionOptions = e.executionOptions;
                String noAssertMessage = "No test assert found for key - " + es.key + "!!";
                RichServiceTestResult richServiceTestResult = executeSingleExecutionTest(pureSingleExecution, es.data, asserts, noAssertMessage, pureModelContextData, pureModel, scope);
                richServiceTestResult.setOptionalMultiExecutionKey(es.key);
                results.add(richServiceTestResult);
            }
            return results;
        }
    } else if (serviceExecution instanceof PureSingleExecution) {
        try (Scope scope = GlobalTracer.get().buildSpan("Generate Single Pure Tests And Run").startActive(true)) {
            List<TestContainer> asserts = ((SingleExecutionTest) service.test).asserts;
            String noAssertMessage = "No test assert found !!";
            return Collections.singletonList(executeSingleExecutionTest((PureSingleExecution) service.execution, ((SingleExecutionTest) service.test).data, asserts, noAssertMessage, pureModelContextData, pureModel, scope));
        }
    } else {
        try (Scope scope = GlobalTracer.get().buildSpan("Generate Extra Service Execution Tests and Run").startActive(true)) {
            MutableList<ServiceExecutionExtension> serviceExecutionExtensions = Lists.mutable.withAll(ServiceLoader.load(ServiceExecutionExtension.class));
            Pair<ExecutionPlan, RichIterable<? extends String>> testExecutor = getExtraServiceExecutionPlan(serviceExecutionExtensions, serviceExecution, ((Root_meta_legend_service_metamodel_SingleExecutionTest) this.pureService._test())._data());
            ExecutionPlan executionPlan = testExecutor.getOne();
            Assert.assertTrue(executionPlan instanceof SingleExecutionPlan, () -> "Only Single Execution Plan supported");
            List<TestContainer> containers = getExtraServiceTestContainers(serviceExecutionExtensions, service.test);
            return Collections.singletonList(executeTestAsserts((SingleExecutionPlan) executionPlan, containers, testExecutor.getTwo(), scope));
        }
    }
}
Also used : PureMultiExecution(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.PureMultiExecution) TestContainer(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.TestContainer) PureSingleExecution(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.PureSingleExecution) Root_meta_legend_service_metamodel_SingleExecutionTest(org.finos.legend.pure.generated.Root_meta_legend_service_metamodel_SingleExecutionTest) Execution(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.Execution) PureMultiExecution(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.PureMultiExecution) PureSingleExecution(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.PureSingleExecution) PureExecution(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.PureExecution) SingleExecutionPlan(org.finos.legend.engine.protocol.pure.v1.model.executionPlan.SingleExecutionPlan) ExecutionPlan(org.finos.legend.engine.protocol.pure.v1.model.executionPlan.ExecutionPlan) Scope(io.opentracing.Scope) TestExecutionScope(org.finos.legend.engine.plan.execution.stores.relational.TestExecutionScope) MultiExecutionTest(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.MultiExecutionTest) MutableList(org.eclipse.collections.api.list.MutableList) KeyedExecutionParameter(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.KeyedExecutionParameter) KeyedSingleExecutionTest(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.KeyedSingleExecutionTest) MutableList(org.eclipse.collections.api.list.MutableList) List(java.util.List) PureList(org.finos.legend.engine.protocol.pure.v1.model.valueSpecification.raw.PureList) SingleExecutionPlan(org.finos.legend.engine.protocol.pure.v1.model.executionPlan.SingleExecutionPlan) Pair(org.eclipse.collections.api.tuple.Pair)

Aggregations

PureSingleExecution (org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.PureSingleExecution)4 SingleExecutionTest (org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.SingleExecutionTest)4 EngineRuntime (org.finos.legend.engine.protocol.pure.v1.model.packageableElement.runtime.EngineRuntime)3 KeyedSingleExecutionTest (org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.KeyedSingleExecutionTest)3 MultiExecutionTest (org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.MultiExecutionTest)3 List (java.util.List)2 PureModel (org.finos.legend.engine.language.pure.compiler.toPureGraph.PureModel)2 PureModelContextData (org.finos.legend.engine.protocol.pure.v1.model.context.PureModelContextData)2 Execution (org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.Execution)2 KeyedExecutionParameter (org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.KeyedExecutionParameter)2 PureMultiExecution (org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.PureMultiExecution)2 Service (org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.Service)2 TestContainer (org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.TestContainer)2 Test (org.junit.Test)2 Scope (io.opentracing.Scope)1 ArrayList (java.util.ArrayList)1 MutableList (org.eclipse.collections.api.list.MutableList)1 Pair (org.eclipse.collections.api.tuple.Pair)1 LazyIterate (org.eclipse.collections.impl.utility.LazyIterate)1 ServiceParserGrammar (org.finos.legend.engine.language.pure.grammar.from.antlr4.ServiceParserGrammar)1