use of org.finos.legend.pure.generated.Root_meta_legend_service_metamodel_Service in project legend-engine by finos.
the class ServiceModeling method testService.
@Prometheus(name = "service test model resolve", doc = "Model resolution duration summary within service test execution")
public List<TestResult> testService(MutableList<CommonProfile> profiles, PureModelContext context, String metricsContext) {
try {
long start = System.currentTimeMillis();
PureModelContextData data = ((PureModelContextData) context).shallowCopy();
Service service = (Service) Iterate.detect(data.getElements(), e -> e instanceof Service);
PureModelContextData dataWithoutService = PureModelContextData.newBuilder().withOrigin(data.getOrigin()).withSerializer(data.getSerializer()).withElements(LazyIterate.select(data.getElements(), e -> e != service)).build();
PureModel pureModel = new PureModel(dataWithoutService, profiles, deploymentMode);
Pair<PureModelContextData, PureModel> pureModelAndData = Tuples.pair(dataWithoutService, pureModel);
long end = System.currentTimeMillis();
MetricsHandler.observe("service test model resolve", start, end);
MetricsHandler.observeServerOperation("model_resolve", metricsContext, start, end);
if (service.execution instanceof PureMultiExecution) {
throw new UnsupportedOperationException("MultiExecutions not yet supported");
}
Root_meta_legend_service_metamodel_Service pureService = compileService(service, pureModel.getContext(service));
TestRun testRun = executeTests(service, pureService, pureModelAndData, PureClientVersions.production, metricsContext);
if (!(testRun instanceof SingleTestRun)) {
throw new UnsupportedOperationException("Expected a single test run result");
}
return ((SingleTestRun) testRun).results.entrySet().stream().map(x -> new TestResult(x.getKey(), x.getValue())).collect(Collectors.toList());
} catch (IOException | JavaCompileException e) {
MetricsHandler.incrementErrorCount("model_resolve", 0);
throw new RuntimeException(e);
}
}
use of org.finos.legend.pure.generated.Root_meta_legend_service_metamodel_Service in project legend-engine by finos.
the class ServiceModeling method compileService.
public Root_meta_legend_service_metamodel_Service compileService(Service service, CompileContext compileContext) {
// If we're recompiling an existing service remove the original first
Package pkg = compileContext.pureModel.getOrCreatePackage(service._package);
org.finos.legend.pure.m3.coreinstance.meta.pure.metamodel.PackageableElement existing = pkg._children().detect(c -> c._name().equals(service.name));
if (existing != null) {
pkg._childrenRemove(existing);
}
Root_meta_legend_service_metamodel_Service compiledService = (Root_meta_legend_service_metamodel_Service) service.accept(new PackageableElementFirstPassBuilder(compileContext));
service.accept(new PackageableElementSecondPassBuilder(compileContext));
return compiledService;
}
Aggregations