Search in sources :

Example 1 with PureSingleExecution

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

the class ServiceTestRunner method executeSingleExecutionTest.

private RichServiceTestResult executeSingleExecutionTest(PureSingleExecution execution, String testData, List<TestContainer> asserts, String noAssertMessage, PureModelContextData pureModelContextData, PureModel pureModel, Scope scope) throws IOException, JavaCompileException {
    if (asserts == null || asserts.isEmpty()) {
        scope.span().log(noAssertMessage);
        return new RichServiceTestResult(service.getPath(), Collections.emptyMap(), Collections.emptyMap(), null, null, null);
    } else {
        Runtime testRuntime = ServiceTestGenerationHelper.buildTestRuntime(execution.runtime, execution.mapping, testData, pureModelContextData, pureModel);
        RichIterable<? extends String> sqlStatements = extractSetUpSQLFromTestRuntime(testRuntime);
        PureSingleExecution testPureSingleExecution = shallowCopySingleExecution(execution);
        testPureSingleExecution.runtime = testRuntime;
        ExecutionPlan executionPlan = generatePlan(testPureSingleExecution);
        SingleExecutionPlan singleExecutionPlan = (SingleExecutionPlan) executionPlan;
        compilePlan(singleExecutionPlan);
        return executeTestAsserts(singleExecutionPlan, asserts, sqlStatements, scope);
    }
}
Also used : Runtime(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.runtime.Runtime) EngineRuntime(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.runtime.EngineRuntime) LegacyRuntime(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.runtime.LegacyRuntime) SingleExecutionPlan(org.finos.legend.engine.protocol.pure.v1.model.executionPlan.SingleExecutionPlan) ExecutionPlan(org.finos.legend.engine.protocol.pure.v1.model.executionPlan.ExecutionPlan) PureSingleExecution(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.PureSingleExecution) SingleExecutionPlan(org.finos.legend.engine.protocol.pure.v1.model.executionPlan.SingleExecutionPlan)

Example 2 with PureSingleExecution

use of org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.PureSingleExecution 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 3 with PureSingleExecution

use of org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.PureSingleExecution 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 4 with PureSingleExecution

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

the class TestServicePlanGenerator method testSingleExecutionServiceGenerationJSON.

@Test
public void testSingleExecutionServiceGenerationJSON() {
    PureModelContextData data = loadModelDataFromResource("simpleJsonService.json");
    PureModel pureModel = new PureModel(data, null, DeploymentMode.TEST);
    Service service = data.getElementsOfType(Service.class).get(0);
    Assert.assertTrue(service.execution instanceof PureSingleExecution);
    ExecutionPlan plan = ServicePlanGenerator.generateServiceExecutionPlan(service, null, pureModel, "vX_X_X", PlanPlatform.JAVA, Lists.mutable.empty(), LegendPlanTransformers.transformers);
    Assert.assertTrue(plan instanceof SingleExecutionPlan);
}
Also used : SingleExecutionPlan(org.finos.legend.engine.protocol.pure.v1.model.executionPlan.SingleExecutionPlan) ExecutionPlan(org.finos.legend.engine.protocol.pure.v1.model.executionPlan.ExecutionPlan) PureSingleExecution(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.PureSingleExecution) Service(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.Service) PureModel(org.finos.legend.engine.language.pure.compiler.toPureGraph.PureModel) SingleExecutionPlan(org.finos.legend.engine.protocol.pure.v1.model.executionPlan.SingleExecutionPlan) PureModelContextData(org.finos.legend.engine.protocol.pure.v1.model.context.PureModelContextData) Test(org.junit.Test)

Example 5 with PureSingleExecution

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

the class HelperServiceBuilder method processServiceExecution.

public static Root_meta_legend_service_metamodel_Execution processServiceExecution(Execution execution, CompileContext context) {
    if (execution instanceof PureSingleExecution) {
        PureSingleExecution pureSingleExecution = (PureSingleExecution) execution;
        Mapping mapping = context.resolveMapping(pureSingleExecution.mapping, pureSingleExecution.mappingSourceInformation);
        inferEmbeddedRuntimeMapping(pureSingleExecution.runtime, pureSingleExecution.mapping);
        org.finos.legend.pure.m3.coreinstance.meta.pure.runtime.Runtime runtime = HelperRuntimeBuilder.buildPureRuntime(pureSingleExecution.runtime, context);
        HelperRuntimeBuilder.checkRuntimeMappingCoverage(runtime, Lists.fixedSize.of(mapping), context, pureSingleExecution.runtime.sourceInformation);
        return new Root_meta_legend_service_metamodel_PureSingleExecution_Impl("")._func(HelperValueSpecificationBuilder.buildLambda(pureSingleExecution.func, context))._mapping(mapping)._runtime(runtime);
    } else if (execution instanceof PureMultiExecution) {
        PureMultiExecution pureMultiExecution = (PureMultiExecution) execution;
        if (pureMultiExecution.executionParameters.isEmpty()) {
            throw new EngineException("Service multi execution must not be empty", pureMultiExecution.sourceInformation, EngineErrorType.COMPILATION);
        }
        Set<String> executionKeyValues = new HashSet<>();
        return new Root_meta_legend_service_metamodel_PureMultiExecution_Impl("")._executionKey(pureMultiExecution.executionKey)._func(HelperValueSpecificationBuilder.buildLambda(pureMultiExecution.func, context))._executionParameters(ListIterate.collect(pureMultiExecution.executionParameters, executionParameter -> processServiceKeyedExecutionParameter(executionParameter, context, executionKeyValues)));
    }
    return getServiceCompilerExtensions(context).stream().flatMap(extension -> extension.getExtraServiceExecutionProcessors().stream()).map(processor -> processor.value(execution, context)).filter(Objects::nonNull).findFirst().orElseThrow(() -> new UnsupportedOperationException("Unsupported service execution type '" + execution.getClass().getSimpleName() + "'"));
}
Also used : EngineErrorType(org.finos.legend.engine.protocol.pure.v1.model.context.EngineErrorType) 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) StringUtils(org.apache.commons.lang3.StringUtils) org.finos.legend.engine.language.pure.compiler.toPureGraph(org.finos.legend.engine.language.pure.compiler.toPureGraph) Root_meta_legend_service_metamodel_Execution(org.finos.legend.pure.generated.Root_meta_legend_service_metamodel_Execution) HashSet(java.util.HashSet) PackageableElementPointer(org.finos.legend.engine.protocol.pure.v1.model.context.PackageableElementPointer) EngineRuntime(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.runtime.EngineRuntime) Root_meta_legend_service_metamodel_KeyedSingleExecutionTest(org.finos.legend.pure.generated.Root_meta_legend_service_metamodel_KeyedSingleExecutionTest) Root_meta_legend_service_metamodel_KeyedExecutionParameter_Impl(org.finos.legend.pure.generated.Root_meta_legend_service_metamodel_KeyedExecutionParameter_Impl) Root_meta_legend_service_metamodel_MultiExecutionTest_Impl(org.finos.legend.pure.generated.Root_meta_legend_service_metamodel_MultiExecutionTest_Impl) Root_meta_legend_service_metamodel_KeyedExecutionParameter(org.finos.legend.pure.generated.Root_meta_legend_service_metamodel_KeyedExecutionParameter) Root_meta_legend_service_metamodel_SingleExecutionTest_Impl(org.finos.legend.pure.generated.Root_meta_legend_service_metamodel_SingleExecutionTest_Impl) Root_meta_legend_service_metamodel_TestContainer(org.finos.legend.pure.generated.Root_meta_legend_service_metamodel_TestContainer) Root_meta_legend_service_metamodel_KeyedSingleExecutionTest_Impl(org.finos.legend.pure.generated.Root_meta_legend_service_metamodel_KeyedSingleExecutionTest_Impl) Execution(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.Execution) Set(java.util.Set) ListIterate(org.eclipse.collections.impl.utility.ListIterate) Collectors(java.util.stream.Collectors) Root_meta_legend_service_metamodel_TestContainer_Impl(org.finos.legend.pure.generated.Root_meta_legend_service_metamodel_TestContainer_Impl) Root_meta_legend_service_metamodel_MultiExecutionTest(org.finos.legend.pure.generated.Root_meta_legend_service_metamodel_MultiExecutionTest) Root_meta_legend_service_metamodel_PureMultiExecution_Impl(org.finos.legend.pure.generated.Root_meta_legend_service_metamodel_PureMultiExecution_Impl) Objects(java.util.Objects) PackageableElementType(org.finos.legend.engine.protocol.pure.v1.model.context.PackageableElementType) 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) Mapping(org.finos.legend.pure.m3.coreinstance.meta.pure.mapping.Mapping) PureSingleExecution(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.PureSingleExecution) Lists(org.eclipse.collections.impl.factory.Lists) SingleExecutionTest(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.SingleExecutionTest) TestContainer(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.TestContainer) EngineException(org.finos.legend.engine.shared.core.operational.errorManagement.EngineException) Root_meta_legend_service_metamodel_Test(org.finos.legend.pure.generated.Root_meta_legend_service_metamodel_Test) Root_meta_legend_service_metamodel_PureSingleExecution_Impl(org.finos.legend.pure.generated.Root_meta_legend_service_metamodel_PureSingleExecution_Impl) Root_meta_legend_service_metamodel_PureSingleExecution_Impl(org.finos.legend.pure.generated.Root_meta_legend_service_metamodel_PureSingleExecution_Impl) HashSet(java.util.HashSet) Set(java.util.Set) PureMultiExecution(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.PureMultiExecution) PureSingleExecution(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.PureSingleExecution) EngineException(org.finos.legend.engine.shared.core.operational.errorManagement.EngineException) Mapping(org.finos.legend.pure.m3.coreinstance.meta.pure.mapping.Mapping) Objects(java.util.Objects) Root_meta_legend_service_metamodel_PureMultiExecution_Impl(org.finos.legend.pure.generated.Root_meta_legend_service_metamodel_PureMultiExecution_Impl)

Aggregations

PureSingleExecution (org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.PureSingleExecution)9 ExecutionPlan (org.finos.legend.engine.protocol.pure.v1.model.executionPlan.ExecutionPlan)5 SingleExecutionPlan (org.finos.legend.engine.protocol.pure.v1.model.executionPlan.SingleExecutionPlan)5 PureModel (org.finos.legend.engine.language.pure.compiler.toPureGraph.PureModel)4 PureModelContextData (org.finos.legend.engine.protocol.pure.v1.model.context.PureModelContextData)4 EngineRuntime (org.finos.legend.engine.protocol.pure.v1.model.packageableElement.runtime.EngineRuntime)4 Service (org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.Service)4 Test (org.junit.Test)4 PureMultiExecution (org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.PureMultiExecution)3 SingleExecutionTest (org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.SingleExecutionTest)3 List (java.util.List)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 KeyedSingleExecutionTest (org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.KeyedSingleExecutionTest)2 MultiExecutionTest (org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.MultiExecutionTest)2 TestContainer (org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.TestContainer)2 Scope (io.opentracing.Scope)1 IOException (java.io.IOException)1 HashSet (java.util.HashSet)1 Objects (java.util.Objects)1