/*-
* ============LICENSE_START=======================================================
- * Copyright (C) 2019-2020 Nordix Foundation.
+ * Copyright (C) 2019-2021, 2023-2024 Nordix Foundation.
+ * Modifications Copyright (C) 2020 Bell Canada. All rights reserved.
+ * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
package org.onap.policy.models.provider.impl;
import static org.assertj.core.api.Assertions.assertThatCode;
-import static org.awaitility.Awaitility.await;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
-import java.util.Base64;
import java.util.Set;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
-
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.onap.policy.models.provider.PolicyModelsProviderFactory;
import org.onap.policy.models.provider.PolicyModelsProviderParameters;
import org.onap.policy.models.tosca.authorative.concepts.ToscaEntityKey;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyType;
import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
/**
// H2, use "org.mariadb.jdbc.Driver" and "jdbc:mariadb://localhost:3306/policy" for locally installed MariaDB
PolicyModelsProviderParameters parameters = new PolicyModelsProviderParameters();
- parameters.setDatabaseDriver("org.h2.Driver");
- parameters.setDatabaseUrl("jdbc:h2:mem:testdb");
+
+ if (System.getProperty("USE-MARIADB") != null) {
+ parameters.setDatabaseDriver("org.mariadb.jdbc.Driver");
+ parameters.setDatabaseUrl("jdbc:mariadb://localhost:3306/policy");
+ } else {
+ parameters.setDatabaseDriver("org.h2.Driver");
+ parameters.setDatabaseUrl("jdbc:h2:mem:PolicyToscaPersistenceTest");
+ }
+
parameters.setDatabaseUser("policy");
- parameters.setDatabasePassword(Base64.getEncoder().encodeToString("P01icY".getBytes()));
+ parameters.setDatabasePassword("P01icY");
parameters.setPersistenceUnit("ToscaConceptTest");
databaseProvider = new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
for (int i = 0; i < 10; i++) {
new Thread() {
+ @Override
public void run() {
assertThatCode(() -> databaseProvider.createPolicyTypes(serviceTemplate))
.doesNotThrowAnyException();
assertTrue(resOptPolicyTypeSt.getPolicyTypesAsMap().containsKey(optimizationPtKey));
assertEquals(2, resOptPolicyTypeSt.getDataTypesAsMap().size());
+
+ deleteUnreferencedPolicyTypes();
+
+ assertThatThrownBy(() -> {
+ databaseProvider.getPolicyTypes(null, null);
+ }).hasMessageContaining("policy types for null:null do not exist");
+ }
+
+ private void deleteUnreferencedPolicyTypes() throws PfModelException {
+ ToscaServiceTemplate allPolicyTypes = databaseProvider.getPolicyTypes(null, null);
+
+ boolean deleteFailedDueToReference = false;
+
+ for (ToscaPolicyType policyType : allPolicyTypes.getPolicyTypes().values()) {
+ try {
+ ToscaServiceTemplate deletedServiceTemplate =
+ databaseProvider.deletePolicyType(policyType.getName(), policyType.getVersion());
+ assertEquals(1, deletedServiceTemplate.getPolicyTypesAsMap().size());
+ } catch (Exception pfModelRuntimeException) {
+ assertTrue(pfModelRuntimeException.getMessage().contains("is in use, it is referenced in policy type"));
+ deleteFailedDueToReference = true;
+ }
+ }
+
+ if (deleteFailedDueToReference) {
+ deleteUnreferencedPolicyTypes();
+ }
}
}