/*-
* ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
+ * Copyright (C) 2019-2020 Nordix Foundation.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.fail;
+import java.net.URISyntaxException;
import java.util.Base64;
import java.util.Map;
+import java.util.Set;
import lombok.NonNull;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
+import org.onap.policy.common.utils.coder.CoderException;
import org.onap.policy.common.utils.coder.StandardCoder;
import org.onap.policy.common.utils.resources.ResourceUtils;
import org.onap.policy.models.base.PfModelException;
import org.onap.policy.models.provider.PolicyModelsProvider;
import org.onap.policy.models.provider.PolicyModelsProviderFactory;
import org.onap.policy.models.provider.PolicyModelsProviderParameters;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
import org.onap.policy.models.tosca.legacy.concepts.LegacyGuardPolicyInput;
import org.onap.policy.models.tosca.legacy.concepts.LegacyGuardPolicyOutput;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.yaml.snakeyaml.Yaml;
/**
* Test persistence of monitoring policies to and from the database.
* @author Liam Fallon (liam.fallon@est.tech)
*/
public class PolicyLegacyGuardPersistenceTest {
- // Logger for this class
- private static final Logger LOGGER = LoggerFactory.getLogger(PolicyLegacyGuardPersistenceTest.class);
-
private StandardCoder standardCoder;
private PolicyModelsProvider databaseProvider;
* Initialize provider.
*
* @throws PfModelException on exceptions in the tests
+ * @throws CoderException on JSON encoding and decoding errors
*/
@Before
- public void setupParameters() throws PfModelException {
+ public void setupParameters() throws Exception {
+ // 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");
parameters.setDatabaseUser("policy");
parameters.setDatabasePassword(Base64.getEncoder().encodeToString("P01icY".getBytes()));
parameters.setPersistenceUnit("ToscaConceptTest");
databaseProvider = new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
+
+ createPolicyTypes();
}
/**
}
@Test
- public void testPolicyPersistence() {
- try {
- for (int i = 0; i < policyInputResourceNames.length; i++) {
- String policyInputString = ResourceUtils.getResourceAsString(policyInputResourceNames[i]);
- String policyOutputString = ResourceUtils.getResourceAsString(policyOutputResourceNames[i]);
- testJsonStringPolicyPersistence(policyInputString, policyOutputString);
- }
- } catch (Exception exc) {
- LOGGER.warn("error processing policies", exc);
- fail("test should not throw an exception");
+ public void testLegacyGuardPolicyPersistence() throws Exception {
+ for (int i = 0; i < policyInputResourceNames.length; i++) {
+ String policyInputString = ResourceUtils.getResourceAsString(policyInputResourceNames[i]);
+ String policyOutputString = ResourceUtils.getResourceAsString(policyOutputResourceNames[i]);
+ testJsonStringPolicyPersistence(policyInputString, policyOutputString);
}
}
Map<String, LegacyGuardPolicyOutput> createdGopm = databaseProvider.createGuardPolicy(gip);
assertEquals(gip.getPolicyId(), createdGopm.keySet().iterator().next());
- assertEquals(gip.getContent(),
- createdGopm.get(gip.getPolicyId()).getProperties().values().iterator().next());
+ assertEquals(gip.getContent(), createdGopm.get(gip.getPolicyId()).getProperties().values().iterator().next());
- Map<String, LegacyGuardPolicyOutput> gotGopm = databaseProvider.getGuardPolicy(gip.getPolicyId());
+ Map<String, LegacyGuardPolicyOutput> gotGopm = databaseProvider.getGuardPolicy(gip.getPolicyId(), null);
assertEquals(gip.getPolicyId(), gotGopm.keySet().iterator().next());
- assertEquals(gip.getContent(),
- gotGopm.get(gip.getPolicyId()).getProperties().values().iterator().next());
+ assertEquals(gip.getContent(), gotGopm.get(gip.getPolicyId()).getProperties().values().iterator().next());
Map<String, LegacyGuardPolicyOutput> updatedGopm = databaseProvider.updateGuardPolicy(gip);
assertEquals(gip.getPolicyId(), updatedGopm.keySet().iterator().next());
- assertEquals(gip.getContent(),
- updatedGopm.get(gip.getPolicyId()).getProperties().values().iterator().next());
+ assertEquals(gip.getContent(), updatedGopm.get(gip.getPolicyId()).getProperties().values().iterator().next());
- Map<String, LegacyGuardPolicyOutput> deletedGopm = databaseProvider.deleteGuardPolicy(gip.getPolicyId());
+ Map<String, LegacyGuardPolicyOutput> deletedGopm = databaseProvider.deleteGuardPolicy(gip.getPolicyId(), "1");
assertEquals(gip.getPolicyId(), deletedGopm.keySet().iterator().next());
- assertEquals(gip.getContent(),
- deletedGopm.get(gip.getPolicyId()).getProperties().values().iterator().next());
+ assertEquals(gip.getContent(), deletedGopm.get(gip.getPolicyId()).getProperties().values().iterator().next());
String actualRetrievedJson = standardCoder.encode(gotGopm);
// All of this dash/underscore stuff is to avoid a checkstyle error around escaping unicode characters
assertEquals(policyOutputString.replaceAll("\\s+", ""), actualRetrievedJson.replaceAll("\\s+", ""));
}
+
+ private void createPolicyTypes() throws CoderException, PfModelException, URISyntaxException {
+ Set<String> policyTypeResources = ResourceUtils.getDirectoryContents("policytypes");
+
+ for (String policyTyoeResource : policyTypeResources) {
+ Object yamlObject = new Yaml().load(ResourceUtils.getResourceAsString(policyTyoeResource));
+ String yamlAsJsonString = new StandardCoder().encode(yamlObject);
+
+ ToscaServiceTemplate toscaServiceTemplatePolicyType =
+ standardCoder.decode(yamlAsJsonString, ToscaServiceTemplate.class);
+
+ assertNotNull(toscaServiceTemplatePolicyType);
+ databaseProvider.createPolicyTypes(toscaServiceTemplatePolicyType);
+ }
+ }
}