X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=models-sim%2Fpolicy-models-simulators%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fpolicy%2Fmodels%2Fsimulators%2FMain.java;h=1951ea3c51e16e290c4ac1adc715008e6a823468;hb=389c85c8e7213c10c17896f4c63d94e2b5e9d27a;hp=ed9ade562b1b1bb1162e68d1b81544ff052d729f;hpb=7452546571b4189154cbf4c435fc58cff4a6aebd;p=policy%2Fmodels.git diff --git a/models-sim/policy-models-simulators/src/main/java/org/onap/policy/models/simulators/Main.java b/models-sim/policy-models-simulators/src/main/java/org/onap/policy/models/simulators/Main.java index ed9ade562..1951ea3c5 100644 --- a/models-sim/policy-models-simulators/src/main/java/org/onap/policy/models/simulators/Main.java +++ b/models-sim/policy-models-simulators/src/main/java/org/onap/policy/models/simulators/Main.java @@ -1,6 +1,8 @@ /*- * ============LICENSE_START======================================================= - * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2020-2021 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2020-2021 Bell Canada. All rights reserved. + * Modifications Copyright 2023-2024 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,20 +23,14 @@ package org.onap.policy.models.simulators; import java.io.FileNotFoundException; -import java.lang.reflect.InvocationTargetException; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.io.IOException; import java.util.Properties; import java.util.concurrent.atomic.AtomicReference; import lombok.AccessLevel; import lombok.Getter; -import org.onap.policy.common.endpoints.event.comm.TopicEndpointManager; -import org.onap.policy.common.endpoints.event.comm.TopicSink; -import org.onap.policy.common.endpoints.event.comm.TopicSource; +import org.apache.commons.lang3.StringUtils; import org.onap.policy.common.endpoints.http.server.HttpServletServer; import org.onap.policy.common.endpoints.http.server.HttpServletServerFactoryInstance; -import org.onap.policy.common.endpoints.parameters.TopicParameters; import org.onap.policy.common.endpoints.properties.PolicyEndPointProperties; import org.onap.policy.common.gson.GsonMessageBodyHandler; import org.onap.policy.common.parameters.BeanValidationResult; @@ -43,12 +39,9 @@ import org.onap.policy.common.utils.coder.CoderException; import org.onap.policy.common.utils.coder.StandardCoder; import org.onap.policy.common.utils.network.NetworkUtil; import org.onap.policy.common.utils.resources.ResourceUtils; +import org.onap.policy.common.utils.services.Registry; import org.onap.policy.common.utils.services.ServiceManagerContainer; -import org.onap.policy.models.sim.dmaap.parameters.DmaapSimParameterGroup; -import org.onap.policy.models.sim.dmaap.provider.DmaapSimProvider; -import org.onap.policy.models.sim.dmaap.rest.CambriaMessageBodyHandler; -import org.onap.policy.models.sim.dmaap.rest.TextMessageBodyHandler; -import org.onap.policy.simulators.TopicServer; +import org.onap.policy.simulators.CdsSimulator; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -73,54 +66,27 @@ public class Main extends ServiceManagerContainer { super(Main.class.getPackage().getName()); SimulatorParameters params = readParameters(paramFile); - BeanValidationResult result = params.validate("simulators"); - if (!result.isValid()) { - logger.error("invalid parameters:\n{}", result.getResult()); - throw new IllegalArgumentException("invalid simulator parameters"); - } - DmaapSimParameterGroup dmaapProv = params.getDmaapProvider(); - String dmaapName = dmaapProv.getName(); - String provName = dmaapName.replace("simulator", "provider"); + CdsServerParameters cdsServer = params.getGrpcServer(); - // dmaap provider - AtomicReference provRef = new AtomicReference<>(); - addAction(provName, () -> provRef.set(buildDmaapProvider(dmaapProv)), () -> provRef.get().shutdown()); + // Cds Simulator + if (cdsServer != null) { + AtomicReference cdsSim = new AtomicReference<>(); + addAction(cdsServer.getName(), () -> cdsSim.set(buildCdsSimulator(cdsServer)), () -> cdsSim.get().stop()); + } // REST server simulators // @formatter:off for (ClassRestServerParameters restsim : params.getRestServers()) { AtomicReference ref = new AtomicReference<>(); + if (StringUtils.isNotBlank(restsim.getResourceLocation())) { + String resourceLocationId = restsim.getProviderClass() + "_RESOURCE_LOCATION"; + addAction(resourceLocationId, + () -> Registry.register(resourceLocationId, restsim.getResourceLocation()), + () -> Registry.unregister(resourceLocationId)); + } addAction(restsim.getName(), - () -> ref.set(buildRestServer(dmaapName, restsim)), - () -> ref.get().shutdown()); - } - - // NOTE: topics must be started AFTER the (dmaap) rest servers - - // topic sinks - Map sinks = new HashMap<>(); - for (TopicParameters topicParams : params.getTopicSinks()) { - String topic = topicParams.getTopic(); - addAction("Sink " + topic, - () -> sinks.put(topic, startSink(topicParams)), - () -> sinks.get(topic).shutdown()); - } - - // topic sources - Map sources = new HashMap<>(); - for (TopicParameters topicParams : params.getTopicSources()) { - String topic = topicParams.getTopic(); - addAction("Source " + topic, - () -> sources.put(topic, startSource(topicParams)), - () -> sources.get(topic).shutdown()); - } - - // topic server simulators - for (TopicServerParameters topicsim : params.getTopicServers()) { - AtomicReference> ref = new AtomicReference<>(); - addAction(topicsim.getName(), - () -> ref.set(buildTopicServer(topicsim, sinks, sources)), + () -> ref.set(buildRestServer(restsim)), () -> ref.get().shutdown()); } // @formatter:on @@ -152,7 +118,7 @@ public class Main extends ServiceManagerContainer { private SimulatorParameters readParameters(String paramFile) { try { - String paramsJson = getResourceAsString(paramFile); + var paramsJson = getResourceAsString(paramFile); if (paramsJson == null) { throw new IllegalArgumentException(new FileNotFoundException(paramFile)); } @@ -169,29 +135,17 @@ public class Main extends ServiceManagerContainer { } } - private DmaapSimProvider buildDmaapProvider(DmaapSimParameterGroup params) { - DmaapSimProvider prov = new DmaapSimProvider(params); - DmaapSimProvider.setInstance(prov); - prov.start(); - - return prov; + private CdsSimulator buildCdsSimulator(CdsServerParameters params) throws IOException { + var cdsSimulator = new CdsSimulator(params.getHost(), params.getPort(), params.getResourceLocation(), + params.getSuccessRepeatCount(), params.getRequestedResponseDelayMs()); + cdsSimulator.start(); + return cdsSimulator; } - private TopicSink startSink(TopicParameters params) { - TopicSink sink = TopicEndpointManager.getManager().addTopicSinks(List.of(params)).get(0); - sink.start(); - return sink; - } - private TopicSource startSource(TopicParameters params) { - TopicSource source = TopicEndpointManager.getManager().addTopicSources(List.of(params)).get(0); - source.start(); - return source; - } - - private HttpServletServer buildRestServer(String dmaapName, ClassRestServerParameters params) { + private HttpServletServer buildRestServer(ClassRestServerParameters params) { try { - Properties props = getServerProperties(dmaapName, params); + var props = getServerProperties(params); HttpServletServer testServer = makeServer(props); testServer.waitedStart(5000); @@ -210,40 +164,16 @@ public class Main extends ServiceManagerContainer { } } - private TopicServer buildTopicServer(TopicServerParameters params, Map sinks, - Map sources) { - try { - // find the desired sink - TopicSink sink = sinks.get(params.getSink()); - if (sink == null) { - throw new IllegalArgumentException("invalid sink topic " + params.getSink()); - } - - // find the desired source - TopicSource source = sources.get(params.getSource()); - if (source == null) { - throw new IllegalArgumentException("invalid source topic " + params.getSource()); - } - - // create the topic server - return (TopicServer) Class.forName(params.getProviderClass()) - .getDeclaredConstructor(TopicSink.class, TopicSource.class).newInstance(sink, source); - - } catch (InstantiationException | IllegalAccessException | InvocationTargetException | NoSuchMethodException - | SecurityException | ClassNotFoundException e) { - throw new IllegalArgumentException("cannot create TopicServer: " + params.getName(), e); - } - } /** * Creates a set of properties, suitable for building a REST server, from the * parameters. * * @param params parameters from which to build the properties - * @return a set of properties representing the given parameters + * @return a Map of properties representing the given parameters */ - private static Properties getServerProperties(String dmaapName, ClassRestServerParameters params) { - final Properties props = new Properties(); + private static Properties getServerProperties(ClassRestServerParameters params) { + final var props = new Properties(); props.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES, params.getName()); final String svcpfx = PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES + "." + params.getName(); @@ -258,17 +188,12 @@ public class Main extends ServiceManagerContainer { params.getProviderClass()); props.setProperty(svcpfx + PolicyEndPointProperties.PROPERTY_MANAGED_SUFFIX, "false"); props.setProperty(svcpfx + PolicyEndPointProperties.PROPERTY_HTTP_SWAGGER_SUFFIX, "false"); + props.setProperty(svcpfx + PolicyEndPointProperties.PROPERTY_HTTP_SNI_HOST_CHECK_SUFFIX, "false"); props.setProperty(svcpfx + PolicyEndPointProperties.PROPERTY_MANAGED_SUFFIX, "true"); - if (dmaapName.equals(params.getName())) { - props.setProperty(svcpfx + PolicyEndPointProperties.PROPERTY_HTTP_SERIALIZATION_PROVIDER, - String.join(",", CambriaMessageBodyHandler.class.getName(), - GsonMessageBodyHandler.class.getName(), - TextMessageBodyHandler.class.getName())); - } else { - props.setProperty(svcpfx + PolicyEndPointProperties.PROPERTY_HTTP_SERIALIZATION_PROVIDER, String.join(",", + props.setProperty(svcpfx + PolicyEndPointProperties.PROPERTY_HTTP_SERIALIZATION_PROVIDER, String.join(",", GsonMessageBodyHandler.class.getName(), TextMessageBodyHandler.class.getName())); - } + return props; }