diff options
Diffstat (limited to 'runtime-controlloop')
18 files changed, 313 insertions, 247 deletions
diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/Application.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/Application.java index a9b45c589..64d1393ac 100644 --- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/Application.java +++ b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/Application.java @@ -22,16 +22,21 @@ package org.onap.policy.clamp.controlloop.runtime; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.domain.EntityScan; import org.springframework.boot.context.properties.ConfigurationPropertiesScan; import org.springframework.context.annotation.ComponentScan; +import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import org.springframework.scheduling.annotation.EnableScheduling; @EnableScheduling @SpringBootApplication +@EnableJpaRepositories({"org.onap.policy.clamp.controlloop.models.controlloop.persistence.repository"}) @ComponentScan({"org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider", "org.onap.policy.clamp.controlloop.runtime", "org.onap.policy.clamp.controlloop.common.rest"}) @ConfigurationPropertiesScan("org.onap.policy.clamp.controlloop.runtime.main.parameters") +@EntityScan({"org.onap.policy.models.tosca.simple.concepts", + "org.onap.policy.clamp.controlloop.models.controlloop.concepts"}) public class Application { public static void main(String[] args) { diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/config/JpaConfiguration.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/config/JpaConfiguration.java new file mode 100644 index 000000000..290b74e3a --- /dev/null +++ b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/config/JpaConfiguration.java @@ -0,0 +1,119 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2021 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.clamp.controlloop.runtime.config; + +import java.util.HashMap; +import java.util.Map; +import javax.persistence.EntityManagerFactory; +import javax.sql.DataSource; +import org.eclipse.persistence.config.BatchWriting; +import org.eclipse.persistence.config.PersistenceUnitProperties; +import org.eclipse.persistence.logging.SessionLog; +import org.onap.policy.clamp.controlloop.runtime.main.parameters.ClRuntimeParameterGroup; +import org.springframework.beans.factory.ObjectProvider; +import org.springframework.boot.autoconfigure.orm.jpa.JpaBaseConfiguration; +import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties; +import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import org.springframework.orm.jpa.JpaTransactionManager; +import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; +import org.springframework.orm.jpa.vendor.AbstractJpaVendorAdapter; +import org.springframework.orm.jpa.vendor.EclipseLinkJpaVendorAdapter; +import org.springframework.transaction.PlatformTransactionManager; +import org.springframework.transaction.annotation.EnableTransactionManagement; +import org.springframework.transaction.jta.JtaTransactionManager; + +@Configuration +@EnableTransactionManagement +public class JpaConfiguration extends JpaBaseConfiguration { + + protected JpaConfiguration(DataSource dataSource, JpaProperties properties, + ObjectProvider<JtaTransactionManager> jtaTransactionManager) { + super(dataSource, properties, jtaTransactionManager); + } + + @Override + protected AbstractJpaVendorAdapter createJpaVendorAdapter() { + return new EclipseLinkJpaVendorAdapter(); + } + + @Override + protected Map<String, Object> getVendorProperties() { + return Map.of(PersistenceUnitProperties.BATCH_WRITING, BatchWriting.JDBC); + } + + /** + * Create EntityManagerFactory. + * + * @param builder EntityManagerFactoryBuilder + * @param dataSource DataSource + * @return LocalContainerEntityManagerFactoryBean + */ + @Bean("entityManagerFactory") + public LocalContainerEntityManagerFactoryBean localContainerEntityManagerFactory( + EntityManagerFactoryBuilder builder, DataSource dataSource, + ClRuntimeParameterGroup clRuntimeParameterGroup) { + + return builder.dataSource(dataSource) + .persistenceUnit(clRuntimeParameterGroup.getDatabaseProviderParameters().getPersistenceUnit()) + .properties(initJpaProperties()).build(); + } + + /** + * create a PlatformTransactionManager. + * + * @param emf EntityManagerFactory + * @return PlatformTransactionManager + */ + @Bean + public static PlatformTransactionManager transactionManager(EntityManagerFactory emf) { + final var transactionManager = new JpaTransactionManager(); + transactionManager.setEntityManagerFactory(emf); + return transactionManager; + } + + /** + * create Jpa Properties. + * + * @return JpaProperties + */ + @Bean + @Primary + public static JpaProperties properties(ClRuntimeParameterGroup clRuntimeParameterGroup) { + final var jpaProperties = new JpaProperties(); + jpaProperties.setShowSql(clRuntimeParameterGroup.isShowSql()); + jpaProperties.setDatabasePlatform(clRuntimeParameterGroup.getDatabasePlatform()); + return jpaProperties; + } + + private static Map<String, ?> initJpaProperties() { + final Map<String, Object> ret = new HashMap<>(); + // Add any JpaProperty you are interested in and is supported by your Database and JPA implementation + ret.put(PersistenceUnitProperties.BATCH_WRITING, BatchWriting.JDBC); + ret.put(PersistenceUnitProperties.LOGGING_LEVEL, SessionLog.INFO_LABEL); + ret.put(PersistenceUnitProperties.WEAVING, "false"); + ret.put(PersistenceUnitProperties.DDL_GENERATION, PersistenceUnitProperties.CREATE_ONLY); + ret.put(PersistenceUnitProperties.DDL_GENERATION_MODE, PersistenceUnitProperties.DDL_DATABASE_GENERATION); + return ret; + } +} diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/parameters/ClRuntimeParameterGroup.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/parameters/ClRuntimeParameterGroup.java index 86473caa8..9211ca211 100644 --- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/parameters/ClRuntimeParameterGroup.java +++ b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/parameters/ClRuntimeParameterGroup.java @@ -22,6 +22,7 @@ package org.onap.policy.clamp.controlloop.runtime.main.parameters; import javax.validation.Valid; import javax.validation.constraints.Min; +import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import lombok.Getter; import lombok.Setter; @@ -65,4 +66,8 @@ public class ClRuntimeParameterGroup { private long participantDeregisterAckIntervalSec; private long participantUpdateIntervalSec; + @NotBlank + private String databasePlatform; + + private boolean showSql = false; } diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionHandler.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionHandler.java index 2a1f9082f..f011d9392 100644 --- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionHandler.java +++ b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionHandler.java @@ -40,6 +40,7 @@ import org.onap.policy.clamp.controlloop.models.controlloop.concepts.Participant import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ParticipantUtils; import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ControlLoopProvider; import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ParticipantProvider; +import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ServiceTemplateProvider; import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ControlLoopAck; import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantDeregister; import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantMessage; @@ -54,7 +55,6 @@ import org.onap.policy.clamp.controlloop.runtime.supervision.comm.ParticipantReg import org.onap.policy.clamp.controlloop.runtime.supervision.comm.ParticipantUpdatePublisher; import org.onap.policy.models.base.PfModelException; import org.onap.policy.models.base.PfModelRuntimeException; -import org.onap.policy.models.provider.PolicyModelsProvider; import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier; import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate; import org.slf4j.Logger; @@ -80,7 +80,7 @@ public class SupervisionHandler { private final ControlLoopProvider controlLoopProvider; private final ParticipantProvider participantProvider; private final MonitoringProvider monitoringProvider; - private final PolicyModelsProvider modelsProvider; + private final ServiceTemplateProvider serviceTemplateProvider; // Publishers for participant communication private final ControlLoopUpdatePublisher controlLoopUpdatePublisher; @@ -427,7 +427,7 @@ public class SupervisionHandler { private int getFirstStartPhase(ControlLoop controlLoop) { ToscaServiceTemplate toscaServiceTemplate = null; try { - toscaServiceTemplate = modelsProvider.getServiceTemplateList(null, null).get(0); + toscaServiceTemplate = serviceTemplateProvider.getServiceTemplateList(null, null).get(0); } catch (PfModelException e) { throw new PfModelRuntimeException(Status.BAD_REQUEST, "Canont load ToscaServiceTemplate from DB", e); } diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionScanner.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionScanner.java index 48e06010d..900a117bd 100644 --- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionScanner.java +++ b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionScanner.java @@ -34,13 +34,13 @@ import org.onap.policy.clamp.controlloop.models.controlloop.concepts.Participant import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ParticipantUtils; import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ControlLoopProvider; import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ParticipantProvider; +import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ServiceTemplateProvider; import org.onap.policy.clamp.controlloop.runtime.main.parameters.ClRuntimeParameterGroup; import org.onap.policy.clamp.controlloop.runtime.supervision.comm.ControlLoopStateChangePublisher; import org.onap.policy.clamp.controlloop.runtime.supervision.comm.ControlLoopUpdatePublisher; import org.onap.policy.clamp.controlloop.runtime.supervision.comm.ParticipantStatusReqPublisher; import org.onap.policy.clamp.controlloop.runtime.supervision.comm.ParticipantUpdatePublisher; import org.onap.policy.models.base.PfModelException; -import org.onap.policy.models.provider.PolicyModelsProvider; import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier; import org.onap.policy.models.tosca.authorative.concepts.ToscaNodeTemplate; import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate; @@ -63,7 +63,7 @@ public class SupervisionScanner { private final Map<ToscaConceptIdentifier, Integer> phaseMap = new HashMap<>(); private final ControlLoopProvider controlLoopProvider; - private final PolicyModelsProvider modelsProvider; + private final ServiceTemplateProvider serviceTemplateProvider; private final ControlLoopStateChangePublisher controlLoopStateChangePublisher; private final ControlLoopUpdatePublisher controlLoopUpdatePublisher; private final ParticipantProvider participantProvider; @@ -74,7 +74,7 @@ public class SupervisionScanner { * Constructor for instantiating SupervisionScanner. * * @param controlLoopProvider the provider to use to read control loops from the database - * @param modelsProvider the Policy Models Provider + * @param serviceTemplateProvider the Policy Models Provider * @param controlLoopStateChangePublisher the ControlLoop StateChange Publisher * @param controlLoopUpdatePublisher the ControlLoopUpdate Publisher * @param participantProvider the Participant Provider @@ -82,14 +82,15 @@ public class SupervisionScanner { * @param participantUpdatePublisher the Participant Update Publisher * @param clRuntimeParameterGroup the parameters for the control loop runtime */ - public SupervisionScanner(final ControlLoopProvider controlLoopProvider, PolicyModelsProvider modelsProvider, + public SupervisionScanner(final ControlLoopProvider controlLoopProvider, + ServiceTemplateProvider serviceTemplateProvider, final ControlLoopStateChangePublisher controlLoopStateChangePublisher, ControlLoopUpdatePublisher controlLoopUpdatePublisher, ParticipantProvider participantProvider, ParticipantStatusReqPublisher participantStatusReqPublisher, ParticipantUpdatePublisher participantUpdatePublisher, final ClRuntimeParameterGroup clRuntimeParameterGroup) { this.controlLoopProvider = controlLoopProvider; - this.modelsProvider = modelsProvider; + this.serviceTemplateProvider = serviceTemplateProvider; this.controlLoopStateChangePublisher = controlLoopStateChangePublisher; this.controlLoopUpdatePublisher = controlLoopUpdatePublisher; this.participantProvider = participantProvider; @@ -130,7 +131,7 @@ public class SupervisionScanner { } try { - var list = modelsProvider.getServiceTemplateList(null, null); + var list = serviceTemplateProvider.getServiceTemplateList(null, null); if (list != null && !list.isEmpty()) { ToscaServiceTemplate toscaServiceTemplate = list.get(0); diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ControlLoopUpdatePublisher.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ControlLoopUpdatePublisher.java index 06fbcd649..32c0638af 100644 --- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ControlLoopUpdatePublisher.java +++ b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/ControlLoopUpdatePublisher.java @@ -31,9 +31,9 @@ import org.onap.policy.clamp.controlloop.common.utils.CommonUtils; import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoop; import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopElement; import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ParticipantUpdates; +import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ServiceTemplateProvider; import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ControlLoopUpdate; import org.onap.policy.models.base.PfModelException; -import org.onap.policy.models.provider.PolicyModelsProvider; import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -47,7 +47,7 @@ import org.springframework.stereotype.Component; public class ControlLoopUpdatePublisher extends AbstractParticipantPublisher<ControlLoopUpdate> { private static final Logger LOGGER = LoggerFactory.getLogger(ControlLoopUpdatePublisher.class); - private final PolicyModelsProvider modelsProvider; + private final ServiceTemplateProvider serviceTemplateProvider; /** * Send ControlLoopUpdate to Participant. @@ -72,7 +72,7 @@ public class ControlLoopUpdatePublisher extends AbstractParticipantPublisher<Con controlLoopUpdateMsg.setTimestamp(Instant.now()); ToscaServiceTemplate toscaServiceTemplate; try { - toscaServiceTemplate = modelsProvider.getServiceTemplateList(null, null).get(0); + toscaServiceTemplate = serviceTemplateProvider.getServiceTemplateList(null, null).get(0); } catch (PfModelException pfme) { LOGGER.warn("Get of tosca service template failed, cannot send participantupdate", pfme); return; diff --git a/runtime-controlloop/src/main/resources/META-INF/persistence.xml b/runtime-controlloop/src/main/resources/META-INF/persistence.xml index e5d2cab11..a4e9a56e9 100644 --- a/runtime-controlloop/src/main/resources/META-INF/persistence.xml +++ b/runtime-controlloop/src/main/resources/META-INF/persistence.xml @@ -69,53 +69,5 @@ <shared-cache-mode>NONE</shared-cache-mode> </persistence-unit> - <persistence-unit name="ToscaConceptTest" transaction-type="RESOURCE_LOCAL"> - <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> - - <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaCapabilityAssignment</class> - <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaCapabilityAssignments</class> - <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaCapabilityType</class> - <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaCapabilityTypes</class> - <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaDataType</class> - <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaDataTypes</class> - <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaNodeTemplate</class> - <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaNodeTemplates</class> - <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaNodeType</class> - <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaNodeTypes</class> - <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaParameter</class> - <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicies</class> - <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicy</class> - <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicyType</class> - <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicyTypes</class> - <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaProperty</class> - <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaRelationshipType</class> - <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaRelationshipTypes</class> - <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaRequirement</class> - <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaRequirements</class> - <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate</class> - <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaTopologyTemplate</class> - <class>org.onap.policy.clamp.controlloop.models.controlloop.persistence.concepts.JpaControlLoop</class> - <class>org.onap.policy.clamp.controlloop.models.controlloop.persistence.concepts.JpaControlLoopElement</class> - <class>org.onap.policy.clamp.controlloop.models.controlloop.persistence.concepts.JpaParticipant</class> - <class>org.onap.policy.clamp.controlloop.models.controlloop.persistence.concepts.JpaParticipantStatistics</class> - <class>org.onap.policy.clamp.controlloop.models.controlloop.persistence.concepts.JpaClElementStatistics</class> - <properties> - <property name="eclipselink.ddl-generation" value="drop-and-create-tables" /> - <property name="eclipselink.ddl-generation.output-mode" value="database" /> - <property name="eclipselink.logging.level" value="INFO" /> - - <!-- property name="eclipselink.logging.level" value="ALL" /> - <property name="eclipselink.logging.level.jpa" value="ALL" /> - <property name="eclipselink.logging.level.ddl" value="ALL" /> - <property name="eclipselink.logging.level.connection" value="ALL" /> - <property name="eclipselink.logging.level.sql" value="ALL" /> - <property name="eclipselink.logging.level.transaction" value="ALL" /> - <property name="eclipselink.logging.level.sequencing" value="ALL" /> - <property name="eclipselink.logging.level.server" value="ALL" /> - <property name="eclipselink.logging.level.query" value="ALL" /> - <property name="eclipselink.logging.level.properties" value="ALL" /--> - </properties> - <shared-cache-mode>NONE</shared-cache-mode> - </persistence-unit> </persistence> diff --git a/runtime-controlloop/src/main/resources/application.yaml b/runtime-controlloop/src/main/resources/application.yaml index aa9434b97..bae4b9695 100644 --- a/runtime-controlloop/src/main/resources/application.yaml +++ b/runtime-controlloop/src/main/resources/application.yaml @@ -6,6 +6,16 @@ spring: http: converters: preferred-json-mapper: gson + datasource: + url: jdbc:mariadb://${mariadb.host:localhost}:${mariadb.port:3306}/controlloop + driverClassName: org.mariadb.jdbc.Driver + username: policy + password: P01icY + hikari: + connectionTimeout: 30000 + idleTimeout: 600000 + maxLifetime: 1800000 + maximumPoolSize: 10 security: enable-csrf: false @@ -28,6 +38,7 @@ runtime: updateParameters: maxRetryCount: 4 maxWaitMs: 20000 + databasePlatform: org.eclipse.persistence.platform.database.MySQLPlatform databaseProviderParameters: name: PolicyProviderParameterGroup implementation: org.onap.policy.models.provider.impl.DatabasePolicyModelsProviderImpl diff --git a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/commissioning/rest/CommissioningControllerTest.java b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/commissioning/rest/CommissioningControllerTest.java index 4a5a6e2a3..9d1435e7c 100644 --- a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/commissioning/rest/CommissioningControllerTest.java +++ b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/commissioning/rest/CommissioningControllerTest.java @@ -39,12 +39,10 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.parallel.Execution; import org.junit.jupiter.api.parallel.ExecutionMode; +import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ServiceTemplateProvider; import org.onap.policy.clamp.controlloop.models.messages.rest.commissioning.CommissioningResponse; import org.onap.policy.clamp.controlloop.runtime.instantiation.InstantiationUtils; -import org.onap.policy.clamp.controlloop.runtime.main.parameters.ClRuntimeParameterGroup; import org.onap.policy.clamp.controlloop.runtime.util.rest.CommonRestController; -import org.onap.policy.models.provider.PolicyModelsProvider; -import org.onap.policy.models.provider.PolicyModelsProviderFactory; import org.onap.policy.models.tosca.authorative.concepts.ToscaNodeTemplate; import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate; import org.springframework.beans.factory.annotation.Autowired; @@ -70,7 +68,7 @@ class CommissioningControllerTest extends CommonRestController { private static ToscaServiceTemplate commonPropertiesServiceTemplate = new ToscaServiceTemplate(); @Autowired - private ClRuntimeParameterGroup clRuntimeParameterGroup; + private ServiceTemplateProvider serviceTemplateProvider; @LocalServerPort private int randomServerPort; @@ -282,37 +280,25 @@ class CommissioningControllerTest extends CommonRestController { Response resp = invocationBuilder.delete(); assertEquals(Response.Status.OK.getStatusCode(), resp.getStatus()); - try (PolicyModelsProvider modelsProvider = new PolicyModelsProviderFactory() - .createPolicyModelsProvider(clRuntimeParameterGroup.getDatabaseProviderParameters())) { - List<ToscaServiceTemplate> templatesInDB = modelsProvider.getServiceTemplateList(null, null); - assertThat(templatesInDB).isEmpty(); - } + List<ToscaServiceTemplate> templatesInDB = serviceTemplateProvider.getServiceTemplateList(null, null); + assertThat(templatesInDB).isEmpty(); } private synchronized void createEntryInDB() throws Exception { - try (PolicyModelsProvider modelsProvider = new PolicyModelsProviderFactory() - .createPolicyModelsProvider(clRuntimeParameterGroup.getDatabaseProviderParameters())) { - deleteEntryInDB(commonPropertiesServiceTemplate.getName(), commonPropertiesServiceTemplate.getVersion()); - modelsProvider.createServiceTemplate(serviceTemplate); - } + deleteEntryInDB(commonPropertiesServiceTemplate.getName(), commonPropertiesServiceTemplate.getVersion()); + serviceTemplateProvider.createServiceTemplate(serviceTemplate); } // Delete entries from the DB after relevant tests private synchronized void deleteEntryInDB(String name, String version) throws Exception { - try (PolicyModelsProvider modelsProvider = new PolicyModelsProviderFactory() - .createPolicyModelsProvider(clRuntimeParameterGroup.getDatabaseProviderParameters())) { - if (!modelsProvider.getServiceTemplateList(null, null).isEmpty()) { - modelsProvider.deleteServiceTemplate(name, version); - } + if (!serviceTemplateProvider.getServiceTemplateList(null, null).isEmpty()) { + serviceTemplateProvider.deleteServiceTemplate(name, version); } } private synchronized void createFullEntryInDbWithCommonProps() throws Exception { - try (PolicyModelsProvider modelsProvider = new PolicyModelsProviderFactory() - .createPolicyModelsProvider(clRuntimeParameterGroup.getDatabaseProviderParameters())) { - deleteEntryInDB(commonPropertiesServiceTemplate.getName(), commonPropertiesServiceTemplate.getVersion()); - modelsProvider.createServiceTemplate(commonPropertiesServiceTemplate); - } + deleteEntryInDB(commonPropertiesServiceTemplate.getName(), commonPropertiesServiceTemplate.getVersion()); + serviceTemplateProvider.createServiceTemplate(commonPropertiesServiceTemplate); } } diff --git a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/instantiation/ControlLoopInstantiationProviderTest.java b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/instantiation/ControlLoopInstantiationProviderTest.java index ae1c59851..564109e5d 100644 --- a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/instantiation/ControlLoopInstantiationProviderTest.java +++ b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/instantiation/ControlLoopInstantiationProviderTest.java @@ -26,6 +26,7 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; +import static org.mockito.Mockito.mock; import java.io.IOException; import java.util.ArrayList; @@ -124,10 +125,8 @@ class ControlLoopInstantiationProviderTest { clProvider = new ControlLoopProvider(controlLoopParameters.getDatabaseProviderParameters()); participantProvider = new ParticipantProvider(controlLoopParameters.getDatabaseProviderParameters()); - var participantStatisticsProvider = - new ParticipantStatisticsProvider(controlLoopParameters.getDatabaseProviderParameters()); - var clElementStatisticsProvider = - new ClElementStatisticsProvider(controlLoopParameters.getDatabaseProviderParameters()); + var participantStatisticsProvider = Mockito.mock(ParticipantStatisticsProvider.class); + var clElementStatisticsProvider = mock(ClElementStatisticsProvider.class); commissioningProvider = new CommissioningProvider(new ServiceTemplateProvider(modelsProvider), clProvider, null, participantProvider); var monitoringProvider = @@ -138,11 +137,11 @@ class ControlLoopInstantiationProviderTest { var participantRegisterAckPublisher = Mockito.mock(ParticipantRegisterAckPublisher.class); var participantDeregisterAckPublisher = Mockito.mock(ParticipantDeregisterAckPublisher.class); var participantUpdatePublisher = Mockito.mock(ParticipantUpdatePublisher.class); - var modelsProvider = Mockito.mock(PolicyModelsProvider.class); + var serviceTemplateProvider = Mockito.mock(ServiceTemplateProvider.class); - supervisionHandler = new SupervisionHandler(clProvider, participantProvider, monitoringProvider, modelsProvider, - controlLoopUpdatePublisher, controlLoopStateChangePublisher, participantRegisterAckPublisher, - participantDeregisterAckPublisher, participantUpdatePublisher); + supervisionHandler = new SupervisionHandler(clProvider, participantProvider, monitoringProvider, + serviceTemplateProvider, controlLoopUpdatePublisher, controlLoopStateChangePublisher, + participantRegisterAckPublisher, participantDeregisterAckPublisher, participantUpdatePublisher); } @BeforeEach diff --git a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/instantiation/rest/InstantiationControllerTest.java b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/instantiation/rest/InstantiationControllerTest.java index 2e01be289..e361ff469 100644 --- a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/instantiation/rest/InstantiationControllerTest.java +++ b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/instantiation/rest/InstantiationControllerTest.java @@ -37,17 +37,15 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoop; import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoops; import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ParticipantProvider; +import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ServiceTemplateProvider; import org.onap.policy.clamp.controlloop.models.messages.rest.instantiation.ControlLoopPrimedResponse; import org.onap.policy.clamp.controlloop.models.messages.rest.instantiation.InstantiationCommand; import org.onap.policy.clamp.controlloop.models.messages.rest.instantiation.InstantiationResponse; import org.onap.policy.clamp.controlloop.runtime.instantiation.ControlLoopInstantiationProvider; import org.onap.policy.clamp.controlloop.runtime.instantiation.InstantiationUtils; -import org.onap.policy.clamp.controlloop.runtime.main.parameters.ClRuntimeParameterGroup; import org.onap.policy.clamp.controlloop.runtime.main.rest.InstantiationController; import org.onap.policy.clamp.controlloop.runtime.util.CommonTestData; import org.onap.policy.clamp.controlloop.runtime.util.rest.CommonRestController; -import org.onap.policy.models.provider.PolicyModelsProvider; -import org.onap.policy.models.provider.PolicyModelsProviderFactory; import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier; import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate; import org.springframework.beans.factory.annotation.Autowired; @@ -86,7 +84,7 @@ class InstantiationControllerTest extends CommonRestController { private static ToscaServiceTemplate serviceTemplate = new ToscaServiceTemplate(); @Autowired - private ClRuntimeParameterGroup clRuntimeParameterGroup; + private ServiceTemplateProvider serviceTemplateProvider; @Autowired private ControlLoopInstantiationProvider instantiationProvider; @@ -177,8 +175,8 @@ class InstantiationControllerTest extends CommonRestController { assertEquals(controlLoopFromRsc, controlLoopsFromDb.getControlLoopList().get(0)); } - invocationBuilder = super.sendRequest(PRIMING_ENDPOINT + "?name=" - + "PMSHInstance0Create" + "&version=" + "1.0.1"); + invocationBuilder = + super.sendRequest(PRIMING_ENDPOINT + "?name=" + "PMSHInstance0Create" + "&version=" + "1.0.1"); Response rawresp = invocationBuilder.buildGet().invoke(); assertEquals(Response.Status.OK.getStatusCode(), rawresp.getStatus()); ControlLoopPrimedResponse primResponse = rawresp.readEntity(ControlLoopPrimedResponse.class); @@ -349,19 +347,13 @@ class InstantiationControllerTest extends CommonRestController { } private synchronized void deleteEntryInDB(String name, String version) throws Exception { - try (PolicyModelsProvider modelsProvider = new PolicyModelsProviderFactory() - .createPolicyModelsProvider(clRuntimeParameterGroup.getDatabaseProviderParameters())) { - if (!modelsProvider.getServiceTemplateList(null, null).isEmpty()) { - modelsProvider.deleteServiceTemplate(name, version); - } + if (!serviceTemplateProvider.getServiceTemplateList(null, null).isEmpty()) { + serviceTemplateProvider.deleteServiceTemplate(name, version); } } private synchronized void createEntryInDB() throws Exception { - try (PolicyModelsProvider modelsProvider = new PolicyModelsProviderFactory() - .createPolicyModelsProvider(clRuntimeParameterGroup.getDatabaseProviderParameters())) { - deleteEntryInDB(serviceTemplate.getName(), serviceTemplate.getVersion()); - modelsProvider.createServiceTemplate(serviceTemplate); - } + deleteEntryInDB(serviceTemplate.getName(), serviceTemplate.getVersion()); + serviceTemplateProvider.createServiceTemplate(serviceTemplate); } } diff --git a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/monitoring/TestMonitoringProvider.java b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/monitoring/TestMonitoringProvider.java index 2fcbf1297..2233e862c 100644 --- a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/monitoring/TestMonitoringProvider.java +++ b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/monitoring/TestMonitoringProvider.java @@ -24,13 +24,19 @@ package org.onap.policy.clamp.controlloop.runtime.monitoring; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyMap; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import java.io.File; import java.time.Instant; import java.util.LinkedHashMap; +import java.util.List; import java.util.Map; import java.util.UUID; +import javax.ws.rs.core.Response; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @@ -47,6 +53,7 @@ import org.onap.policy.clamp.controlloop.runtime.util.CommonTestData; import org.onap.policy.common.utils.coder.Coder; import org.onap.policy.common.utils.coder.CoderException; import org.onap.policy.common.utils.coder.StandardCoder; +import org.onap.policy.models.base.PfModelRuntimeException; import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier; class TestMonitoringProvider { @@ -61,14 +68,23 @@ class TestMonitoringProvider { "src/test/resources/rest/monitoring/TestClElementStatistics_Invalid.json"; private static final Coder CODER = new StandardCoder(); - private static final String LIST_IS_NULL = ".*StatisticsList is marked .*ull but is null"; + private static final String STAT_LIST_IS_NULL = ".*StatisticsList is marked .*ull but is null"; + private static final String PARTICIPANT_STAT_LIST_IS_NULL = + "participantStatisticsList is marked .*null but is null"; + private static final String NAME_IS_NULL = "name is marked .*null but is null"; + private static final String CL_LIST_IS_NULL = "clElementStatisticsList is marked .*null but is null"; + private static final String ID_VERSION1 = "1.001"; + private static final String ID_VERSION2 = "1.002"; + private static final String ID_NAME1 = "name1"; + private static final String ID_NAME2 = "name2"; + private static final String SORT_DESC = "DESC"; + private static final String ID_NAME3 = "testCLName"; + private static final String ID_INVALID_NAME = "invalidCLName"; private static ParticipantStatisticsList inputParticipantStatistics; private static ParticipantStatisticsList invalidParticipantInput; private static ClElementStatisticsList inputClElementStatistics; private static ClElementStatisticsList invalidClElementInput; - private ParticipantStatisticsProvider participantStatisticsProvider = null; - private ClElementStatisticsProvider clElementStatisticsProvider = null; private ControlLoopProvider clProvider = null; @BeforeAll @@ -84,12 +100,6 @@ class TestMonitoringProvider { @AfterEach void close() throws Exception { - if (participantStatisticsProvider != null) { - participantStatisticsProvider.close(); - } - if (clElementStatisticsProvider != null) { - clElementStatisticsProvider.close(); - } if (clProvider != null) { clProvider.close(); } @@ -97,20 +107,28 @@ class TestMonitoringProvider { @Test void testCreateParticipantStatistics() throws Exception { + var participantStatisticsProvider = mock(ParticipantStatisticsProvider.class); + var clElementStatisticsProvider = mock(ClElementStatisticsProvider.class); ClRuntimeParameterGroup parameters = CommonTestData.geParameterGroup("createparStat"); - participantStatisticsProvider = new ParticipantStatisticsProvider(parameters.getDatabaseProviderParameters()); - clElementStatisticsProvider = new ClElementStatisticsProvider(parameters.getDatabaseProviderParameters()); clProvider = new ControlLoopProvider(parameters.getDatabaseProviderParameters()); MonitoringProvider provider = new MonitoringProvider(participantStatisticsProvider, clElementStatisticsProvider, clProvider); + + when(participantStatisticsProvider.createParticipantStatistics(any())) + .thenReturn(inputParticipantStatistics.getStatisticsList()); + + when(participantStatisticsProvider.createParticipantStatistics(eq(null))) + .thenThrow(new PfModelRuntimeException(Response.Status.BAD_REQUEST, PARTICIPANT_STAT_LIST_IS_NULL)); + // Creating statistics data in db with null input + assertThatThrownBy(() -> { provider.createParticipantStatistics(null); - }).hasMessageMatching(LIST_IS_NULL); + }).hasMessageMatching(STAT_LIST_IS_NULL); assertThatThrownBy(() -> { provider.createParticipantStatistics(invalidParticipantInput.getStatisticsList()); - }).hasMessageMatching("participantStatisticsList is marked .*null but is null"); + }).hasMessageMatching(PARTICIPANT_STAT_LIST_IS_NULL); // Creating statistics data from input json ParticipantStatisticsList createResponse = @@ -123,32 +141,41 @@ class TestMonitoringProvider { @Test void testGetParticipantStatistics() throws Exception { + var participantStatisticsProvider = mock(ParticipantStatisticsProvider.class); + when(participantStatisticsProvider.getFilteredParticipantStatistics(eq(ID_NAME1), any(), any(), any(), eq(null), + eq(SORT_DESC), eq(0))).thenReturn(List.of(inputParticipantStatistics.getStatisticsList().get(0))); + + when(participantStatisticsProvider.getFilteredParticipantStatistics(eq(ID_NAME1), any(), + eq(Instant.parse("2021-01-11T12:00:00.000Z")), eq(Instant.parse("2021-01-11T16:00:00.000Z")), eq(null), + eq(SORT_DESC), eq(0))).thenReturn(List.of()); + + when(participantStatisticsProvider.getFilteredParticipantStatistics(eq(ID_NAME2), any(), any(), any(), eq(null), + eq(SORT_DESC), eq(1))).thenReturn(List.of(inputParticipantStatistics.getStatisticsList().get(2))); + ClRuntimeParameterGroup parameters = CommonTestData.geParameterGroup("getparStat"); - participantStatisticsProvider = new ParticipantStatisticsProvider(parameters.getDatabaseProviderParameters()); - clElementStatisticsProvider = new ClElementStatisticsProvider(parameters.getDatabaseProviderParameters()); clProvider = new ControlLoopProvider(parameters.getDatabaseProviderParameters()); + var clElementStatisticsProvider = mock(ClElementStatisticsProvider.class); MonitoringProvider provider = new MonitoringProvider(participantStatisticsProvider, clElementStatisticsProvider, clProvider); - provider.createParticipantStatistics(inputParticipantStatistics.getStatisticsList()); assertThatThrownBy(() -> { provider.fetchFilteredParticipantStatistics(null, null, 0, null, null); - }).hasMessageMatching("name is marked .*null but is null"); + }).hasMessageMatching(NAME_IS_NULL); // Fetch specific statistics record with name, version and record count ParticipantStatisticsList getResponse = - provider.fetchFilteredParticipantStatistics("name2", "1.001", 1, null, null); + provider.fetchFilteredParticipantStatistics(ID_NAME2, ID_VERSION1, 1, null, null); assertThat(getResponse.getStatisticsList()).hasSize(1); assertEquals(getResponse.getStatisticsList().get(0).toString().replaceAll("\\s+", ""), inputParticipantStatistics.getStatisticsList().get(2).toString().replaceAll("\\s+", "")); // Fetch statistics using timestamp - getResponse = provider.fetchFilteredParticipantStatistics("name1", "1.001", 0, null, + getResponse = provider.fetchFilteredParticipantStatistics(ID_NAME1, ID_VERSION1, 0, null, Instant.parse("2021-01-10T15:00:00.000Z")); assertThat(getResponse.getStatisticsList()).hasSize(1); - getResponse = provider.fetchFilteredParticipantStatistics("name1", "1.001", 0, + getResponse = provider.fetchFilteredParticipantStatistics(ID_NAME1, ID_VERSION1, 0, Instant.parse("2021-01-11T12:00:00.000Z"), Instant.parse("2021-01-11T16:00:00.000Z")); assertThat(getResponse.getStatisticsList()).isEmpty(); @@ -156,21 +183,27 @@ class TestMonitoringProvider { @Test void testCreateClElementStatistics() throws Exception { + var clElementStatisticsProvider = mock(ClElementStatisticsProvider.class); + when(clElementStatisticsProvider.createClElementStatistics(any())) + .thenReturn(inputClElementStatistics.getClElementStatistics()); + + when(clElementStatisticsProvider.createClElementStatistics(eq(null))) + .thenThrow(new PfModelRuntimeException(Response.Status.BAD_REQUEST, CL_LIST_IS_NULL)); + ClRuntimeParameterGroup parameters = CommonTestData.geParameterGroup("createelemstat"); - participantStatisticsProvider = new ParticipantStatisticsProvider(parameters.getDatabaseProviderParameters()); - clElementStatisticsProvider = new ClElementStatisticsProvider(parameters.getDatabaseProviderParameters()); clProvider = new ControlLoopProvider(parameters.getDatabaseProviderParameters()); + var participantStatisticsProvider = mock(ParticipantStatisticsProvider.class); MonitoringProvider provider = new MonitoringProvider(participantStatisticsProvider, clElementStatisticsProvider, clProvider); // Creating statistics data in db with null input assertThatThrownBy(() -> { provider.createClElementStatistics(null); - }).hasMessageMatching(LIST_IS_NULL); + }).hasMessageMatching(STAT_LIST_IS_NULL); assertThatThrownBy(() -> { provider.createClElementStatistics(invalidClElementInput.getClElementStatistics()); - }).hasMessageMatching("clElementStatisticsList is marked .*null but is null"); + }).hasMessageMatching(CL_LIST_IS_NULL); // Creating clElement statistics data from input json ClElementStatisticsList createResponse = @@ -183,42 +216,46 @@ class TestMonitoringProvider { @Test void testGetClElementStatistics() throws Exception { + var participantStatisticsProvider = mock(ParticipantStatisticsProvider.class); + var clElementStatisticsProvider = mock(ClElementStatisticsProvider.class); ClRuntimeParameterGroup parameters = CommonTestData.geParameterGroup("getelemstat"); - participantStatisticsProvider = new ParticipantStatisticsProvider(parameters.getDatabaseProviderParameters()); - clElementStatisticsProvider = new ClElementStatisticsProvider(parameters.getDatabaseProviderParameters()); clProvider = new ControlLoopProvider(parameters.getDatabaseProviderParameters()); + when(clElementStatisticsProvider.getFilteredClElementStatistics(eq(ID_NAME1), any(), any(), any(), anyMap(), + eq(SORT_DESC), eq(0))) + .thenReturn(List.of(inputClElementStatistics.getClElementStatistics().get(0), + inputClElementStatistics.getClElementStatistics().get(1))); + MonitoringProvider provider = new MonitoringProvider(participantStatisticsProvider, clElementStatisticsProvider, clProvider); assertThatThrownBy(() -> { provider.fetchFilteredClElementStatistics(null, null, null, null, null, 0); - }).hasMessageMatching("name is marked .*null but is null"); + }).hasMessageMatching(NAME_IS_NULL); provider.createClElementStatistics(inputClElementStatistics.getClElementStatistics()); ClElementStatisticsList getResponse = - provider.fetchFilteredClElementStatistics("name1", null, null, null, null, 0); + provider.fetchFilteredClElementStatistics(ID_NAME1, null, null, null, null, 0); assertThat(getResponse.getClElementStatistics()).hasSize(2); assertEquals(getResponse.getClElementStatistics().get(0).toString().replaceAll("\\s+", ""), inputClElementStatistics.getClElementStatistics().get(0).toString().replaceAll("\\s+", "")); // Fetch specific statistics record with name, id and record count - getResponse = provider.fetchFilteredClElementStatistics("name1", "1.001", + getResponse = provider.fetchFilteredClElementStatistics(ID_NAME1, ID_VERSION1, "709c62b3-8918-41b9-a747-d21eb79c6c20", null, null, 0); assertThat(getResponse.getClElementStatistics()).hasSize(2); // Fetch statistics using timestamp - getResponse = provider.fetchFilteredClElementStatistics("name1", "1.001", null, + getResponse = provider.fetchFilteredClElementStatistics(ID_NAME1, ID_VERSION1, null, Instant.parse("2021-01-10T13:45:00.000Z"), null, 0); assertThat(getResponse.getClElementStatistics()).hasSize(2); } @Test void testGetParticipantStatsPerCL() throws Exception { - ClRuntimeParameterGroup parameters = CommonTestData.geParameterGroup("getparStatCL"); - participantStatisticsProvider = new ParticipantStatisticsProvider(parameters.getDatabaseProviderParameters()); - clElementStatisticsProvider = new ClElementStatisticsProvider(parameters.getDatabaseProviderParameters()); + var participantStatisticsProvider = mock(ParticipantStatisticsProvider.class); + var clElementStatisticsProvider = mock(ClElementStatisticsProvider.class); var mockClProvider = Mockito.mock(ControlLoopProvider.class); var provider = new MonitoringProvider(participantStatisticsProvider, clElementStatisticsProvider, mockClProvider); @@ -227,56 +264,63 @@ class TestMonitoringProvider { var controlLoop = new ControlLoop(); var element = new ControlLoopElement(); - element.setParticipantId(new ToscaConceptIdentifier("name1", "1.001")); + element.setParticipantId(new ToscaConceptIdentifier(ID_NAME1, ID_VERSION1)); controlLoop.setElements(Map.of(UUID.randomUUID(), element)); - when(mockClProvider.getControlLoop(new ToscaConceptIdentifier("testName", "1.001"))) - .thenReturn(controlLoop); + when(mockClProvider.getControlLoop(new ToscaConceptIdentifier(ID_NAME2, ID_VERSION1))).thenReturn(controlLoop); + + when(participantStatisticsProvider.getFilteredParticipantStatistics(eq(ID_NAME1), eq(ID_VERSION1), any(), any(), + eq(null), eq(SORT_DESC), eq(0))) + .thenReturn(List.of(inputParticipantStatistics.getStatisticsList().get(0), + inputParticipantStatistics.getStatisticsList().get(1))); - ParticipantStatisticsList getResponse = provider.fetchParticipantStatsPerControlLoop("testName", "1.001"); + ParticipantStatisticsList getResponse = provider.fetchParticipantStatsPerControlLoop(ID_NAME2, ID_VERSION1); assertThat(getResponse.getStatisticsList()).hasSize(2); assertEquals(getResponse.getStatisticsList().get(0).toString().replaceAll("\\s+", ""), inputParticipantStatistics.getStatisticsList().get(0).toString().replaceAll("\\s+", "")); - assertThat(provider.fetchParticipantStatsPerControlLoop("invalidCLName", "1.002").getStatisticsList()) + assertThat(provider.fetchParticipantStatsPerControlLoop(ID_INVALID_NAME, ID_VERSION2).getStatisticsList()) .isEmpty(); } @Test void testClElementStatsPerCL() throws Exception { // Setup a dummy Control loop data - ControlLoopElement mockClElement = new ControlLoopElement(); + var mockClElement = new ControlLoopElement(); mockClElement.setId(inputClElementStatistics.getClElementStatistics().get(0).getId()); mockClElement.setParticipantId(new ToscaConceptIdentifier( inputClElementStatistics.getClElementStatistics().get(0).getParticipantId().getName(), inputClElementStatistics.getClElementStatistics().get(0).getParticipantId().getVersion())); - ControlLoop mockCL = new ControlLoop(); + var mockCL = new ControlLoop(); mockCL.setElements(new LinkedHashMap<>()); mockCL.getElements().put(mockClElement.getId(), mockClElement); - ClRuntimeParameterGroup parameters = CommonTestData.geParameterGroup("getelemstatPerCL"); - participantStatisticsProvider = new ParticipantStatisticsProvider(parameters.getDatabaseProviderParameters()); - clElementStatisticsProvider = new ClElementStatisticsProvider(parameters.getDatabaseProviderParameters()); - ControlLoopProvider mockClProvider = Mockito.mock(ControlLoopProvider.class); + var participantStatisticsProvider = mock(ParticipantStatisticsProvider.class); + var clElementStatisticsProvider = mock(ClElementStatisticsProvider.class); + var mockClProvider = Mockito.mock(ControlLoopProvider.class); var monitoringProvider = new MonitoringProvider(participantStatisticsProvider, clElementStatisticsProvider, mockClProvider); // Mock controlloop data to be returned for the given CL Id - when(mockClProvider.getControlLoop(new ToscaConceptIdentifier("testCLName", "1.001"))).thenReturn(mockCL); + when(mockClProvider.getControlLoop(new ToscaConceptIdentifier(ID_NAME3, ID_VERSION1))).thenReturn(mockCL); + + when(clElementStatisticsProvider.getFilteredClElementStatistics(eq(ID_NAME1), eq(ID_VERSION1), any(), any(), + anyMap(), eq(SORT_DESC), eq(0))) + .thenReturn(List.of(inputClElementStatistics.getClElementStatistics().get(0), + inputClElementStatistics.getClElementStatistics().get(1))); monitoringProvider.createClElementStatistics(inputClElementStatistics.getClElementStatistics()); ClElementStatisticsList getResponse = - monitoringProvider.fetchClElementStatsPerControlLoop("testCLName", "1.001"); + monitoringProvider.fetchClElementStatsPerControlLoop(ID_NAME3, ID_VERSION1); assertThat(getResponse.getClElementStatistics()).hasSize(2); assertEquals(getResponse.getClElementStatistics().get(1).toString().replaceAll("\\s+", ""), inputClElementStatistics.getClElementStatistics().get(1).toString().replaceAll("\\s+", "")); - assertThat( - monitoringProvider.fetchClElementStatsPerControlLoop("invalidCLName", "1.002").getClElementStatistics()) - .isEmpty(); + assertThat(monitoringProvider.fetchClElementStatsPerControlLoop(ID_INVALID_NAME, ID_VERSION2) + .getClElementStatistics()).isEmpty(); Map<String, ToscaConceptIdentifier> clElementIds = - monitoringProvider.getAllClElementsIdPerControlLoop("testCLName", "1.001"); + monitoringProvider.getAllClElementsIdPerControlLoop(ID_NAME3, ID_VERSION1); assertThat(clElementIds) .containsKey(inputClElementStatistics.getClElementStatistics().get(0).getId().toString()); } diff --git a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/monitoring/rest/MonitoringQueryControllerTest.java b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/monitoring/rest/MonitoringQueryControllerTest.java index 77742aea9..eaf824623 100644 --- a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/monitoring/rest/MonitoringQueryControllerTest.java +++ b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/monitoring/rest/MonitoringQueryControllerTest.java @@ -141,7 +141,12 @@ class MonitoringQueryControllerTest extends CommonRestController { assertNotNull(result1); assertThat(result1.getClElementStatistics()).hasSize(2); - assertEquals(result1.getClElementStatistics().get(0), clElementStatisticsList.getClElementStatistics().get(0)); + + var clElementStat0 = clElementStatisticsList.getClElementStatistics().get(0); + for (var clElement : result1.getClElementStatistics()) { + assertEquals(clElement.getParticipantId().asConceptKey(), clElementStat0.getParticipantId().asConceptKey()); + assertEquals(clElement.getId(), clElementStat0.getId()); + } // Filter statistics based on timestamp Invocation.Builder invokeRequest2 = super.sendRequest(CLELEMENT_STATS_ENDPOINT + "?name=" @@ -155,7 +160,7 @@ class MonitoringQueryControllerTest extends CommonRestController { assertNotNull(result2); assertThat(result2.getClElementStatistics()).hasSize(1); - assertEquals(result1.getClElementStatistics().get(0), clElementStatisticsList.getClElementStatistics().get(0)); + assertEquals(result2.getClElementStatistics().get(0), clElementStat0); } @Test @@ -178,7 +183,7 @@ class MonitoringQueryControllerTest extends CommonRestController { assertNotNull(result1); assertThat(result1.getStatisticsList()).hasSize(2); - assertEquals(result1.getStatisticsList().get(0), participantStatisticsList.getStatisticsList().get(0)); + assertThat(result1.getStatisticsList()).contains(participantStatisticsList.getStatisticsList().get(0)); // Filter statistics based on timestamp Invocation.Builder invokeRequest2 = super.sendRequest(PARTICIPANT_STATS_ENDPOINT + "?name=" @@ -191,7 +196,7 @@ class MonitoringQueryControllerTest extends CommonRestController { assertNotNull(result2); assertThat(result2.getStatisticsList()).hasSize(1); - assertEquals(result1.getStatisticsList().get(0), participantStatisticsList.getStatisticsList().get(0)); + assertEquals(result2.getStatisticsList().get(0), participantStatisticsList.getStatisticsList().get(0)); } @Test diff --git a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionHandlerTest.java b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionHandlerTest.java index bbc4deec1..a314b30a0 100644 --- a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionHandlerTest.java +++ b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionHandlerTest.java @@ -41,6 +41,7 @@ import org.onap.policy.clamp.controlloop.models.controlloop.concepts.Participant import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ParticipantStatistics; import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ControlLoopProvider; import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ParticipantProvider; +import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ServiceTemplateProvider; import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ControlLoopAck; import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantDeregister; import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantMessageType; @@ -56,7 +57,6 @@ import org.onap.policy.clamp.controlloop.runtime.supervision.comm.ParticipantReg import org.onap.policy.clamp.controlloop.runtime.supervision.comm.ParticipantUpdatePublisher; import org.onap.policy.common.utils.coder.CoderException; import org.onap.policy.models.base.PfModelException; -import org.onap.policy.models.provider.PolicyModelsProvider; import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier; class SupervisionHandlerTest { @@ -265,13 +265,13 @@ class SupervisionHandlerTest { when(controlLoopProvider.getControlLoop(identifier)).thenReturn(controlLoop); - var modelsProvider = Mockito.mock(PolicyModelsProvider.class); - when(modelsProvider.getServiceTemplateList(any(), any())) + var serviceTemplateProvider = Mockito.mock(ServiceTemplateProvider.class); + when(serviceTemplateProvider.getServiceTemplateList(any(), any())) .thenReturn(List.of(InstantiationUtils.getToscaServiceTemplate(TOSCA_TEMPLATE_YAML))); - return new SupervisionHandler(controlLoopProvider, participantProvider, monitoringProvider, modelsProvider, - controlLoopUpdatePublisher, controlLoopStateChangePublisher, participantRegisterAckPublisher, - participantDeregisterAckPublisher, participantUpdatePublisher); + return new SupervisionHandler(controlLoopProvider, participantProvider, monitoringProvider, + serviceTemplateProvider, controlLoopUpdatePublisher, controlLoopStateChangePublisher, + participantRegisterAckPublisher, participantDeregisterAckPublisher, participantUpdatePublisher); } } diff --git a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionScannerTest.java b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionScannerTest.java index f884e0129..50672a84e 100644 --- a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionScannerTest.java +++ b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/supervision/SupervisionScannerTest.java @@ -39,6 +39,7 @@ import org.onap.policy.clamp.controlloop.models.controlloop.concepts.Participant import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ParticipantState; import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ControlLoopProvider; import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ParticipantProvider; +import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ServiceTemplateProvider; import org.onap.policy.clamp.controlloop.runtime.instantiation.InstantiationUtils; import org.onap.policy.clamp.controlloop.runtime.supervision.comm.ControlLoopStateChangePublisher; import org.onap.policy.clamp.controlloop.runtime.supervision.comm.ControlLoopUpdatePublisher; @@ -47,7 +48,6 @@ import org.onap.policy.clamp.controlloop.runtime.supervision.comm.ParticipantUpd import org.onap.policy.clamp.controlloop.runtime.util.CommonTestData; import org.onap.policy.common.utils.coder.CoderException; import org.onap.policy.models.base.PfModelException; -import org.onap.policy.models.provider.PolicyModelsProvider; import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier; import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate; @@ -57,12 +57,12 @@ class SupervisionScannerTest { "src/test/resources/rest/servicetemplates/tosca-for-smoke-testing.yaml"; private static final String CONTROLLOOP_JSON = "src/test/resources/rest/controlloops/ControlLoopsSmoke.json"; - private static PolicyModelsProvider modelsProvider = mock(PolicyModelsProvider.class); + private static ServiceTemplateProvider serviceTemplateProvider = mock(ServiceTemplateProvider.class); @BeforeAll public static void setUpBeforeAll() throws Exception { ToscaServiceTemplate serviceTemplate = InstantiationUtils.getToscaServiceTemplate(TOSCA_SERVICE_TEMPLATE_YAML); - when(modelsProvider.getServiceTemplateList(null, null)).thenReturn(List.of(serviceTemplate)); + when(serviceTemplateProvider.getServiceTemplateList(null, null)).thenReturn(List.of(serviceTemplate)); } @Test @@ -79,7 +79,7 @@ class SupervisionScannerTest { InstantiationUtils.getControlLoopsFromResource(CONTROLLOOP_JSON, "Crud").getControlLoopList(); when(controlLoopProvider.getControlLoops(null, null)).thenReturn(controlLoops); - var supervisionScanner = new SupervisionScanner(controlLoopProvider, modelsProvider, + var supervisionScanner = new SupervisionScanner(controlLoopProvider, serviceTemplateProvider, controlLoopStateChangePublisher, controlLoopUpdatePublisher, participantProvider, participantStatusReqPublisher, participantUpdatePublisher, clRuntimeParameterGroup); supervisionScanner.run(false); @@ -103,7 +103,7 @@ class SupervisionScannerTest { var participantUpdatePublisher = mock(ParticipantUpdatePublisher.class); var clRuntimeParameterGroup = CommonTestData.geParameterGroup("dbScanner"); - var supervisionScanner = new SupervisionScanner(controlLoopProvider, modelsProvider, + var supervisionScanner = new SupervisionScanner(controlLoopProvider, serviceTemplateProvider, controlLoopStateChangePublisher, controlLoopUpdatePublisher, participantProvider, participantStatusReqPublisher, participantUpdatePublisher, clRuntimeParameterGroup); supervisionScanner.run(false); @@ -129,7 +129,7 @@ class SupervisionScannerTest { var participantUpdatePublisher = mock(ParticipantUpdatePublisher.class); var clRuntimeParameterGroup = CommonTestData.geParameterGroup("dbScanner"); - var supervisionScanner = new SupervisionScanner(controlLoopProvider, modelsProvider, + var supervisionScanner = new SupervisionScanner(controlLoopProvider, serviceTemplateProvider, controlLoopStateChangePublisher, controlLoopUpdatePublisher, participantProvider, participantStatusReqPublisher, participantUpdatePublisher, clRuntimeParameterGroup); @@ -166,7 +166,7 @@ class SupervisionScannerTest { var participantUpdatePublisher = mock(ParticipantUpdatePublisher.class); var clRuntimeParameterGroup = CommonTestData.geParameterGroup("dbScanner"); - var supervisionScanner = new SupervisionScanner(controlLoopProvider, modelsProvider, + var supervisionScanner = new SupervisionScanner(controlLoopProvider, serviceTemplateProvider, controlLoopStateChangePublisher, controlLoopUpdatePublisher, participantProvider, participantStatusReqPublisher, participantUpdatePublisher, clRuntimeParameterGroup); @@ -200,7 +200,7 @@ class SupervisionScannerTest { var controlLoopStateChangePublisher = mock(ControlLoopStateChangePublisher.class); var participantUpdatePublisher = mock(ParticipantUpdatePublisher.class); - var supervisionScanner = new SupervisionScanner(controlLoopProvider, modelsProvider, + var supervisionScanner = new SupervisionScanner(controlLoopProvider, serviceTemplateProvider, controlLoopStateChangePublisher, controlLoopUpdatePublisher, participantProvider, participantStatusReqPublisher, participantUpdatePublisher, clRuntimeParameterGroup); diff --git a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/SupervisionMessagesTest.java b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/SupervisionMessagesTest.java index 4dfb8a9fd..93433f59c 100644 --- a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/SupervisionMessagesTest.java +++ b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/SupervisionMessagesTest.java @@ -41,6 +41,7 @@ import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ControlLoopProvider; import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ParticipantProvider; import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ParticipantStatisticsProvider; +import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ServiceTemplateProvider; import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantDeregister; import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantDeregisterAck; import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantRegisterAck; @@ -53,7 +54,6 @@ import org.onap.policy.clamp.controlloop.runtime.util.rest.CommonRestController; import org.onap.policy.common.endpoints.event.comm.Topic.CommInfrastructure; import org.onap.policy.common.endpoints.event.comm.TopicSink; import org.onap.policy.models.base.PfModelException; -import org.onap.policy.models.provider.PolicyModelsProvider; import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier; class SupervisionMessagesTest extends CommonRestController { @@ -64,7 +64,6 @@ class SupervisionMessagesTest extends CommonRestController { private static final String TOPIC = "my-topic"; private static SupervisionHandler supervisionHandler; private static ControlLoopProvider clProvider; - private static PolicyModelsProvider modelsProvider; /** * setup Db Provider Parameters. @@ -75,31 +74,27 @@ class SupervisionMessagesTest extends CommonRestController { public static void setupDbProviderParameters() throws PfModelException { ClRuntimeParameterGroup controlLoopParameters = CommonTestData.geParameterGroup("instantproviderdb"); - modelsProvider = CommonTestData.getPolicyModelsProvider(controlLoopParameters.getDatabaseProviderParameters()); clProvider = new ControlLoopProvider(controlLoopParameters.getDatabaseProviderParameters()); - var participantStatisticsProvider = - new ParticipantStatisticsProvider(controlLoopParameters.getDatabaseProviderParameters()); - var clElementStatisticsProvider = - new ClElementStatisticsProvider(controlLoopParameters.getDatabaseProviderParameters()); + var participantStatisticsProvider = mock(ParticipantStatisticsProvider.class); + var clElementStatisticsProvider = mock(ClElementStatisticsProvider.class); var monitoringProvider = new MonitoringProvider(participantStatisticsProvider, clElementStatisticsProvider, clProvider); var participantProvider = new ParticipantProvider(controlLoopParameters.getDatabaseProviderParameters()); - var modelsProvider = Mockito.mock(PolicyModelsProvider.class); + var serviceTemplateProvider = Mockito.mock(ServiceTemplateProvider.class); var controlLoopUpdatePublisher = Mockito.mock(ControlLoopUpdatePublisher.class); var controlLoopStateChangePublisher = Mockito.mock(ControlLoopStateChangePublisher.class); var participantRegisterAckPublisher = Mockito.mock(ParticipantRegisterAckPublisher.class); var participantDeregisterAckPublisher = Mockito.mock(ParticipantDeregisterAckPublisher.class); var participantUpdatePublisher = Mockito.mock(ParticipantUpdatePublisher.class); - supervisionHandler = new SupervisionHandler(clProvider, participantProvider, monitoringProvider, modelsProvider, - controlLoopUpdatePublisher, controlLoopStateChangePublisher, participantRegisterAckPublisher, - participantDeregisterAckPublisher, participantUpdatePublisher); + supervisionHandler = new SupervisionHandler(clProvider, participantProvider, monitoringProvider, + serviceTemplateProvider, controlLoopUpdatePublisher, controlLoopStateChangePublisher, + participantRegisterAckPublisher, participantDeregisterAckPublisher, participantUpdatePublisher); } @AfterAll public static void closeDbProvider() throws PfModelException { clProvider.close(); - modelsProvider.close(); } @Test diff --git a/runtime-controlloop/src/test/resources/META-INF/persistence.xml b/runtime-controlloop/src/test/resources/META-INF/persistence.xml index c4e2e8d55..fe460ff4b 100644 --- a/runtime-controlloop/src/test/resources/META-INF/persistence.xml +++ b/runtime-controlloop/src/test/resources/META-INF/persistence.xml @@ -19,64 +19,6 @@ ============LICENSE_END========================================================= --> <persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0"> - <persistence-unit name="CommissioningMariaDb" transaction-type="RESOURCE_LOCAL"> - <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> - - <class>org.onap.policy.models.base.PfConceptKey</class> - <class>org.onap.policy.models.dao.converters.CDataConditioner</class> - <class>org.onap.policy.models.dao.converters.Uuid2String</class> - <class>org.onap.policy.models.pdp.persistence.concepts.JpaPdp</class> - <class>org.onap.policy.models.pdp.persistence.concepts.JpaPdpGroup</class> - <class>org.onap.policy.models.pdp.persistence.concepts.JpaPdpStatistics</class> - <class>org.onap.policy.models.pdp.persistence.concepts.JpaPdpSubGroup</class> - <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaCapabilityAssignment</class> - <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaCapabilityAssignments</class> - <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaCapabilityType</class> - <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaCapabilityTypes</class> - <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaDataType</class> - <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaDataTypes</class> - <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaNodeTemplate</class> - <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaNodeTemplates</class> - <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaNodeType</class> - <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaNodeTypes</class> - <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaParameter</class> - <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicies</class> - <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicy</class> - <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicyType</class> - <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicyTypes</class> - <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaProperty</class> - <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaRelationshipType</class> - <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaRelationshipTypes</class> - <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaRequirement</class> - <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaRequirements</class> - <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate</class> - <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaTopologyTemplate</class> - <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaTrigger</class> - <class>org.onap.policy.clamp.controlloop.models.controlloop.persistence.concepts.JpaControlLoop</class> - <class>org.onap.policy.clamp.controlloop.models.controlloop.persistence.concepts.JpaControlLoopElement</class> - <class>org.onap.policy.clamp.controlloop.models.controlloop.persistence.concepts.JpaParticipant</class> - <class>org.onap.policy.clamp.controlloop.models.controlloop.persistence.concepts.JpaParticipantStatistics</class> - <class>org.onap.policy.clamp.controlloop.models.controlloop.persistence.concepts.JpaClElementStatistics</class> - - <properties> - <property name="eclipselink.ddl-generation" value="create-or-extend-tables" /> - <property name="eclipselink.ddl-generation.output-mode" value="database" /> - <property name="eclipselink.logging.level" value="INFO" /> - - <!-- property name="eclipselink.logging.level" value="ALL" /> - <property name="eclipselink.logging.level.jpa" value="ALL" /> - <property name="eclipselink.logging.level.ddl" value="ALL" /> - <property name="eclipselink.logging.level.connection" value="ALL" /> - <property name="eclipselink.logging.level.sql" value="ALL" /> - <property name="eclipselink.logging.level.transaction" value="ALL" /> - <property name="eclipselink.logging.level.sequencing" value="ALL" /> - <property name="eclipselink.logging.level.server" value="ALL" /> - <property name="eclipselink.logging.level.query" value="ALL" /> - <property name="eclipselink.logging.level.properties" value="ALL" /--> - </properties> - <shared-cache-mode>NONE</shared-cache-mode> - </persistence-unit> - <persistence-unit name="ToscaConceptTest" transaction-type="RESOURCE_LOCAL"> <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> @@ -109,7 +51,6 @@ <class>org.onap.policy.clamp.controlloop.models.controlloop.persistence.concepts.JpaClElementStatistics</class> <properties> - <property name="eclipselink.target-database" value="MySQL" /> <property name="eclipselink.ddl-generation" value="drop-and-create-tables" /> <property name="eclipselink.ddl-generation.output-mode" value="database" /> <property name="eclipselink.logging.level" value="INFO" /> diff --git a/runtime-controlloop/src/test/resources/application_test.properties b/runtime-controlloop/src/test/resources/application_test.properties index 4b0c3b7a5..26822db44 100644 --- a/runtime-controlloop/src/test/resources/application_test.properties +++ b/runtime-controlloop/src/test/resources/application_test.properties @@ -2,6 +2,16 @@ spring.security.user.name=runtimeUser spring.security.user.password=zb!XztG34 security.enable-csrf=false +spring.datasource.url=jdbc:h2:mem:testdb +spring.datasource.driverClassName=org.h2.Driver +spring.datasource.username=policy +spring.datasource.password=P01icY + +spring.datasource.hikari.connectionTimeout=30000 +spring.datasource.hikari.idleTimeout=600000 +spring.datasource.hikari.maxLifetime=1800000 +spring.datasource.hikari.maximumPoolSize=3 + server.port=6969 server.servlet.context-path=/onap/controlloop server.error.path=/error @@ -9,6 +19,7 @@ server.error.path=/error runtime.supervisionScannerIntervalSec=1000 runtime.participantClUpdateIntervalSec=1000 runtime.participantClStateChangeIntervalSec=1000 +runtime.showSql=true runtime.participantParameters.heartBeatMs=20000 runtime.participantParameters.maxStatusWaitMs=100000 runtime.participantParameters.updateParameters.maxRetryCount=3 |