Search in sources :

Example 1 with SDLC

use of org.finos.legend.engine.protocol.pure.v1.model.context.SDLC in project legend-sdlc by finos.

the class PureModelContextDataResource method getPureModelContextData.

protected PureModelContextData getPureModelContextData(String projectId, String revisionOrVersionId, Iterable<? extends Entity> entities) {
    AlloySDLC sdlc = new AlloySDLC();
    sdlc.project = projectId;
    sdlc.baseVersion = revisionOrVersionId;
    return PureModelContextDataBuilder.newBuilder().withProtocol("pure", PureClientVersions.production).withSDLC(sdlc).withEntitiesIfPossible(entities).build();
}
Also used : AlloySDLC(org.finos.legend.engine.protocol.pure.v1.model.context.AlloySDLC)

Example 2 with SDLC

use of org.finos.legend.engine.protocol.pure.v1.model.context.SDLC in project legend-engine by finos.

the class TestServiceTestRunner method testMultiExecutionNoTestServiceFlow.

@Test
public void testMultiExecutionNoTestServiceFlow() throws Exception {
    URL url = Objects.requireNonNull(getClass().getClassLoader().getResource("legend-sdlc-test-services-multi-execution-without-tests.json"));
    PureModelContextData pureModelContextData = ObjectMapperFactory.getNewStandardObjectMapperWithPureProtocolExtensionSupports().readValue(url, PureModelContextData.class);
    PureModel pureModel = new PureModel(pureModelContextData, null, Thread.currentThread().getContextClassLoader(), DeploymentMode.PROD);
    Service service = pureModelContextData.getElementsOfType(Service.class).get(0);
    List<RichServiceTestResult> testResults = this.runTest(service, pureModel, pureModelContextData);
    Assert.assertNotNull(testResults);
    Assert.assertEquals(1, testResults.size());
    RichServiceTestResult testResult = testResults.get(0);
    Assert.assertEquals("my::Service", testResult.getServicePath());
    Assert.assertEquals("Env1", testResult.getOptionalMultiExecutionKey());
    Assert.assertNull(testResult.getExecutionPlan());
    Assert.assertNull(testResult.getJavaCodeString());
    Assert.assertEquals(Collections.emptyMap(), testResult.getAssertExceptions());
    Assert.assertEquals(Collections.emptyMap(), testResult.getResults());
}
Also used : Root_meta_legend_service_metamodel_Service(org.finos.legend.pure.generated.Root_meta_legend_service_metamodel_Service) Service(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.Service) PureModel(org.finos.legend.engine.language.pure.compiler.toPureGraph.PureModel) URL(java.net.URL) PureModelContextData(org.finos.legend.engine.protocol.pure.v1.model.context.PureModelContextData) Test(org.junit.Test)

Example 3 with SDLC

use of org.finos.legend.engine.protocol.pure.v1.model.context.SDLC in project legend-sdlc by finos.

the class TestServiceExecutionClassGenerator method loadAndCompileService.

private Class<?> loadAndCompileService(String packagePrefix, String servicePath) throws Exception {
    Service service = SERVICES.get(servicePath);
    if (service == null) {
        throw new RuntimeException("Could not find service: " + servicePath);
    }
    ServiceExecutionClassGenerator generator = ServiceExecutionClassGenerator.newGenerator(service, packagePrefix, "org/finos/legend/sdlc/generation/service/entities/" + servicePath.replace("::", "/").concat(".json"));
    ServiceExecutionClassGenerator.GeneratedJavaClass generatedJavaClass = generator.generate();
    String expectedClassName = ((packagePrefix == null) ? "" : (packagePrefix + ".")) + servicePath.replace("::", ".");
    Assert.assertEquals(expectedClassName, generatedJavaClass.getName());
    // Uncomment to update generated code
    // org.apache.commons.io.FileUtils.writeStringToFile(new java.io.File("src/test/resources/generation/service/" + service.name + ".generated.java"), generatedJavaClass.getCode(), StandardCharsets.UTF_8);
    Assert.assertEquals("Generated code matches expected formatting?", loadExpectedGeneratedServiceJavaFile(service.name), generatedJavaClass.getCode());
    Class<?> cls = compileGeneratedJavaClass(generatedJavaClass);
    Assert.assertTrue(AbstractServicePlanExecutor.class.isAssignableFrom(cls));
    Assert.assertTrue(ServiceRunner.class.isAssignableFrom(cls));
    assertRunMethodsExist(cls);
    return cls;
}
Also used : ServiceRunner(org.finos.legend.engine.language.pure.dsl.service.execution.ServiceRunner) AbstractServicePlanExecutor(org.finos.legend.engine.language.pure.dsl.service.execution.AbstractServicePlanExecutor) Service(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.Service)

Example 4 with SDLC

use of org.finos.legend.engine.protocol.pure.v1.model.context.SDLC in project legend-engine by finos.

the class TestServiceTestRunner method testNoTestServiceFlow.

@Test
public void testNoTestServiceFlow() throws Exception {
    URL url = Objects.requireNonNull(getClass().getClassLoader().getResource("legend-sdlc-test-services-without-tests.json"));
    PureModelContextData pureModelContextData = ObjectMapperFactory.getNewStandardObjectMapperWithPureProtocolExtensionSupports().readValue(url, PureModelContextData.class);
    PureModel pureModel = new PureModel(pureModelContextData, null, Thread.currentThread().getContextClassLoader(), DeploymentMode.PROD);
    Service service = pureModelContextData.getElementsOfType(Service.class).get(0);
    List<RichServiceTestResult> testResults = this.runTest(service, pureModel, pureModelContextData);
    Assert.assertNotNull(testResults);
    Assert.assertEquals(1, testResults.size());
    RichServiceTestResult testResult = testResults.get(0);
    Assert.assertEquals("test::legend::service::execution::test::m2m::simpleServiceNoTest", testResult.getServicePath());
    Assert.assertNull(testResult.getOptionalMultiExecutionKey());
    Assert.assertNull(testResult.getExecutionPlan());
    Assert.assertNull(testResult.getJavaCodeString());
    Assert.assertEquals(Collections.emptyMap(), testResult.getAssertExceptions());
    Assert.assertEquals(Collections.emptyMap(), testResult.getResults());
}
Also used : Root_meta_legend_service_metamodel_Service(org.finos.legend.pure.generated.Root_meta_legend_service_metamodel_Service) Service(org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.Service) PureModel(org.finos.legend.engine.language.pure.compiler.toPureGraph.PureModel) URL(java.net.URL) PureModelContextData(org.finos.legend.engine.protocol.pure.v1.model.context.PureModelContextData) Test(org.junit.Test)

Example 5 with SDLC

use of org.finos.legend.engine.protocol.pure.v1.model.context.SDLC in project legend-engine by finos.

the class SDLCLoader method loadMetadataFromHTTPURL.

public static PureModelContextData loadMetadataFromHTTPURL(MutableList<CommonProfile> pm, LoggingEventType startEvent, LoggingEventType stopEvent, String url) {
    Scope scope = GlobalTracer.get().scopeManager().active();
    CloseableHttpClient httpclient = (CloseableHttpClient) HttpClientBuilder.getHttpClient(new BasicCookieStore());
    long start = System.currentTimeMillis();
    LogInfo info = new LogInfo(pm, startEvent, "Requesting metadata");
    LOGGER.info(info.toString());
    Span span = GlobalTracer.get().activeSpan();
    if (span != null) {
        span.log(info.eventType + ": " + info.message);
        scope.span().setOperationName(startEvent.toString());
        span.log(url);
    }
    LOGGER.info(new LogInfo(pm, LoggingEventType.METADATA_LOAD_FROM_URL, "Loading from URL " + url).toString());
    HttpGet httpGet = new HttpGet(url);
    if (span != null) {
        GlobalTracer.get().inject(scope.span().context(), HTTP_HEADERS, new HttpRequestHeaderMap(httpGet));
    }
    try (CloseableHttpResponse response = httpclient.execute(httpGet)) {
        int statusCode = response.getStatusLine().getStatusCode();
        if (statusCode < 200 || statusCode >= 300) {
            throw new EngineException("Error response from " + url + ", HTTP" + statusCode + "\n" + EntityUtils.toString(response.getEntity()));
        }
        HttpEntity entity1 = response.getEntity();
        PureModelContextData modelContextData = objectMapper.readValue(entity1.getContent(), PureModelContextData.class);
        Assert.assertTrue(modelContextData.getSerializer() != null, () -> "Engine was unable to load information from the Pure SDLC <a href='" + url + "'>link</a>");
        LOGGER.info(new LogInfo(pm, stopEvent, (double) System.currentTimeMillis() - start).toString());
        if (span != null) {
            scope.span().log(String.valueOf(stopEvent));
        }
        return modelContextData;
    } catch (Exception e) {
        throw new EngineException("Engine was unable to load information from the Pure SDLC using: <a href='" + url + "' target='_blank'>link</a>", e);
    }
}
Also used : CloseableHttpClient(org.apache.http.impl.client.CloseableHttpClient) LogInfo(org.finos.legend.engine.shared.core.operational.logs.LogInfo) HttpRequestHeaderMap(org.finos.legend.engine.shared.core.operational.opentracing.HttpRequestHeaderMap) HttpEntity(org.apache.http.HttpEntity) HttpGet(org.apache.http.client.methods.HttpGet) EngineException(org.finos.legend.engine.shared.core.operational.errorManagement.EngineException) Span(io.opentracing.Span) EngineException(org.finos.legend.engine.shared.core.operational.errorManagement.EngineException) BasicCookieStore(org.apache.http.impl.client.BasicCookieStore) Scope(io.opentracing.Scope) CloseableHttpResponse(org.apache.http.client.methods.CloseableHttpResponse) PureModelContextData(org.finos.legend.engine.protocol.pure.v1.model.context.PureModelContextData)

Aggregations

PureModelContextData (org.finos.legend.engine.protocol.pure.v1.model.context.PureModelContextData)5 Service (org.finos.legend.engine.protocol.pure.v1.model.packageableElement.service.Service)3 EngineException (org.finos.legend.engine.shared.core.operational.errorManagement.EngineException)3 LogInfo (org.finos.legend.engine.shared.core.operational.logs.LogInfo)3 Scope (io.opentracing.Scope)2 Span (io.opentracing.Span)2 URL (java.net.URL)2 HttpEntity (org.apache.http.HttpEntity)2 CloseableHttpResponse (org.apache.http.client.methods.CloseableHttpResponse)2 HttpGet (org.apache.http.client.methods.HttpGet)2 BasicCookieStore (org.apache.http.impl.client.BasicCookieStore)2 CloseableHttpClient (org.apache.http.impl.client.CloseableHttpClient)2 ListIterate (org.eclipse.collections.impl.utility.ListIterate)2 PureModel (org.finos.legend.engine.language.pure.compiler.toPureGraph.PureModel)2 PureModelContextPointer (org.finos.legend.engine.protocol.pure.v1.model.context.PureModelContextPointer)2 PureSDLC (org.finos.legend.engine.protocol.pure.v1.model.context.PureSDLC)2 LoggingEventType (org.finos.legend.engine.shared.core.operational.logs.LoggingEventType)2 HttpRequestHeaderMap (org.finos.legend.engine.shared.core.operational.opentracing.HttpRequestHeaderMap)2 Logger (org.slf4j.Logger)2 ObjectMapper (com.fasterxml.jackson.databind.ObjectMapper)1