2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.onap.policy.drools.controller.internal;
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertTrue;
27 import java.io.IOException;
28 import java.nio.file.Paths;
29 import java.util.Arrays;
30 import java.util.List;
31 import java.util.concurrent.CountDownLatch;
32 import java.util.concurrent.TimeUnit;
33 import java.util.stream.Collectors;
34 import java.util.stream.Stream;
35 import org.junit.Assert;
36 import org.junit.BeforeClass;
37 import org.junit.Test;
38 import org.kie.api.builder.ReleaseId;
39 import org.onap.policy.drools.controller.DroolsController;
40 import org.onap.policy.drools.util.KieUtils;
41 import org.onap.policy.drools.utils.logging.LoggerUtil;
42 import org.slf4j.Logger;
43 import org.slf4j.LoggerFactory;
45 public class MavenDroolsController3Test {
46 private static final String DROOLS_RESOURCES_DIR = "src/test/resources/";
47 private static final String DROOLS_KJAR_RESOURCES_DIR = "src/main/resources/";
48 private static final String DRL_EXT = ".drl";
49 private static final String POM_EXT = ".pom";
50 private static final String KMODULE_EXT = ".kmodule";
52 private static final String RULES_BASE = "rules";
53 private static final String KBNAME_RULES = "kbRules";
54 private static final String KBSESSION_RULES = RULES_BASE;
55 private static final String KBPACKAGE_RULES = RULES_BASE;
57 public static final CountDownLatch running1a = new CountDownLatch(1);
58 public static final CountDownLatch running1b = new CountDownLatch(1);
59 public static final CountDownLatch running2a = new CountDownLatch(1);
60 public static final CountDownLatch running2b = new CountDownLatch(1);
62 private static final Logger logger = LoggerFactory.getLogger(MavenDroolsController3Test.class);
64 private static ReleaseId install(String name, List<File> drls) throws IOException {
66 KieUtils.installArtifact(
67 Paths.get(DROOLS_RESOURCES_DIR + RULES_BASE + KMODULE_EXT).toFile(),
68 Paths.get(DROOLS_RESOURCES_DIR + name + POM_EXT).toFile(),
69 DROOLS_KJAR_RESOURCES_DIR + KBNAME_RULES + "/" + KBPACKAGE_RULES + "/",
73 public static ReleaseId rulesDescriptor1;
74 public static ReleaseId rulesDescriptor2;
77 * Test Class Initialization.
80 public static void setUpBeforeClass() throws IOException {
83 Stream.of(Paths.get(DROOLS_RESOURCES_DIR + "rules1" + DRL_EXT).toFile()).collect(Collectors.toList()));
87 Stream.of(Paths.get(DROOLS_RESOURCES_DIR + "rules1" + DRL_EXT).toFile(),
88 Paths.get(DROOLS_RESOURCES_DIR + "rules2" + DRL_EXT).toFile())
89 .collect(Collectors.toList()));
91 LoggerUtil.setLevel("ROOT", "WARN");
92 LoggerUtil.setLevel("org.onap.policy.drools.controller.internal", "INFO");
96 public void upgrades() throws InterruptedException {
97 DroolsController rules =
98 new MavenDroolsController(
99 rulesDescriptor1.getGroupId(), rulesDescriptor1.getArtifactId(), rulesDescriptor1.getVersion(),
102 assertTrue(rules.start());
103 assertTrue(running1a.await(30, TimeUnit.SECONDS));
105 assertKie(rules, Arrays.asList("SETUP.1", "VERSION.12"), 1);
107 rules.updateToVersion(
108 rulesDescriptor2.getGroupId(),
109 rulesDescriptor2.getArtifactId(),
110 rulesDescriptor2.getVersion(),
113 assertTrue(running2a.await(30, TimeUnit.SECONDS));
114 assertTrue(running2b.await(30, TimeUnit.SECONDS));
116 assertKie(rules, Arrays.asList("SETUP.1", "VERSION.12", "SETUP.2", "VERSION.2"), 2);
118 rules.updateToVersion(
119 rulesDescriptor1.getGroupId(),
120 rulesDescriptor1.getArtifactId(),
121 rulesDescriptor1.getVersion(),
124 assertTrue(running1b.await(30, TimeUnit.SECONDS));
126 assertKie(rules, Arrays.asList("SETUP.1", "VERSION.12"), 1);
129 private void summary(DroolsController rules) {
130 logger.info("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
131 logger.info("Controller: " + rules.getGroupId() + ":" + rules.getArtifactId() + ":" + rules.getVersion());
132 logger.info(".....................................................................");
133 logger.info("KIE-BASES: " + KieUtils.getBases(rules.getContainer().getKieContainer()));
134 logger.info("KIE-PACKAGE-NAMES: " + KieUtils.getPackageNames(rules.getContainer().getKieContainer()));
135 logger.info("KIE-RULE-NAMES: " + KieUtils.getRuleNames(rules.getContainer().getKieContainer()));
136 logger.info("FACTS: " + rules.facts(KBSESSION_RULES, Object.class));
137 logger.info("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
140 private void assertKie(DroolsController controller, List<String> expectedRuleNames, long expectedFactCount) {
141 assertEquals(Arrays.asList("kbRules"), KieUtils.getBases(controller.getContainer().getKieContainer()));
142 assertEquals(expectedRuleNames, KieUtils.getRuleNames(controller.getContainer().getKieContainer()));
143 assertEquals(expectedFactCount, controller.factCount(controller.getSessionNames().get(0)));