Update the Drools Engine to Version 6.5.0
[holmes/engine-management.git] / engine-d / src / test / java / org / onap / holmes / engine / manager / DroolsEngineTest.java
1 /**\r
2  * Copyright 2017 ZTE Corporation.\r
3  *\r
4  * Licensed under the Apache License, Version 2.0 (the "License");\r
5  * you may not use this file except in compliance with the License.\r
6  * You may obtain a copy of the License at\r
7  *\r
8  * http://www.apache.org/licenses/LICENSE-2.0\r
9  *\r
10  * Unless required by applicable law or agreed to in writing, software\r
11  * distributed under the License is distributed on an "AS IS" BASIS,\r
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
13  * See the License for the specific language governing permissions and\r
14  * limitations under the License.\r
15  */\r
16 \r
17 package org.onap.holmes.engine.manager;\r
18 \r
19 import static org.easymock.EasyMock.anyInt;\r
20 import static org.easymock.EasyMock.expect;\r
21 \r
22 import java.lang.reflect.Method;\r
23 import java.util.ArrayList;\r
24 import java.util.List;\r
25 import java.util.Locale;\r
26 import org.junit.Before;\r
27 import org.junit.Rule;\r
28 import org.junit.Test;\r
29 import org.junit.rules.ExpectedException;\r
30 import org.kie.api.KieBase;\r
31 import org.kie.api.KieServices;\r
32 import org.kie.api.builder.KieBuilder;\r
33 import org.kie.api.builder.KieFileSystem;\r
34 import org.kie.api.builder.KieRepository;\r
35 import org.kie.api.io.KieResources;\r
36 import org.kie.api.runtime.KieContainer;\r
37 import org.kie.api.runtime.KieSession;\r
38 import org.onap.holmes.common.api.stat.VesAlarm;\r
39 import org.onap.holmes.engine.request.DeployRuleRequest;\r
40 import org.onap.holmes.common.api.entity.CorrelationRule;\r
41 import org.onap.holmes.common.constant.AlarmConst;\r
42 import org.onap.holmes.common.exception.CorrelationException;\r
43 import org.onap.holmes.engine.wrapper.RuleMgtWrapper;\r
44 import org.powermock.api.easymock.PowerMock;\r
45 import org.powermock.reflect.Whitebox;\r
46 \r
47 public class DroolsEngineTest {\r
48 \r
49     @Rule\r
50     public ExpectedException thrown = ExpectedException.none();\r
51 \r
52     private RuleMgtWrapper ruleMgtWrapper;\r
53 \r
54     private KieBase kieBase;\r
55     private KieSession kieSession;\r
56     private KieContainer kieContainer;\r
57     private KieFileSystem kfs;\r
58     private KieServices ks;\r
59     private KieBuilder kieBuilder;\r
60     private KieResources resources;\r
61     private KieRepository kieRepository;\r
62 \r
63 \r
64     private DroolsEngine droolsEngine;\r
65 \r
66     @Before\r
67     public void setUp() throws Exception {\r
68         droolsEngine = new DroolsEngine();\r
69 \r
70         ks = KieServices.Factory.get();\r
71         resources = ks.getResources();\r
72         kieRepository = ks.getRepository();\r
73         kfs = Whitebox.invokeMethod(droolsEngine, "createKieFileSystemWithKProject", ks);\r
74         kieBuilder = ks.newKieBuilder(kfs).buildAll();\r
75         kieContainer = ks.newKieContainer(kieRepository.getDefaultReleaseId());\r
76         kieBase = kieContainer.getKieBase();\r
77         kieSession = kieContainer.newKieSession();\r
78 \r
79         ruleMgtWrapper = PowerMock.createMock(RuleMgtWrapper.class);\r
80 \r
81         Whitebox.setInternalState(droolsEngine, "ruleMgtWrapper", ruleMgtWrapper);\r
82 \r
83         Whitebox.setInternalState(droolsEngine, "kieBase", kieBase);\r
84         Whitebox.setInternalState(droolsEngine, "kieSession", kieSession);\r
85         Whitebox.setInternalState(droolsEngine, "kieContainer", kieContainer);\r
86         Whitebox.setInternalState(droolsEngine, "kfs", kfs);\r
87         Whitebox.setInternalState(droolsEngine, "ks", ks);\r
88         Whitebox.setInternalState(droolsEngine, "kieBuilder", kieBuilder);\r
89         Whitebox.setInternalState(droolsEngine, "resources", resources);\r
90         Whitebox.setInternalState(droolsEngine, "kieRepository", kieRepository);\r
91 \r
92         PowerMock.resetAll();\r
93     }\r
94 \r
95     @Test\r
96     public void init() throws Exception {\r
97 \r
98         List<CorrelationRule> rules = new ArrayList<CorrelationRule>();\r
99         CorrelationRule rule = new CorrelationRule();\r
100         rule.setContent("package content");\r
101         rule.setClosedControlLoopName("test");\r
102         rule.setPackageName("org.onap.holmes");\r
103         rules.add(rule);\r
104 \r
105         expect(ruleMgtWrapper.queryRuleByEnable(anyInt())).andReturn(rules);\r
106         PowerMock.replayAll();\r
107 \r
108         Method method = DroolsEngine.class.getDeclaredMethod("init");\r
109         method.setAccessible(true);\r
110         method.invoke(droolsEngine);\r
111 \r
112         PowerMock.verifyAll();\r
113     }\r
114 \r
115     @Test\r
116     public void deployRule_rule_is_null() throws CorrelationException {\r
117         Locale locale = PowerMock.createMock(Locale.class);\r
118 \r
119         thrown.expect(NullPointerException.class);\r
120 \r
121         droolsEngine.deployRule(null, locale);\r
122     }\r
123 \r
124     @Test\r
125     public void deployRule_kbuilder_has_errors() throws CorrelationException {\r
126         DeployRuleRequest rule = new DeployRuleRequest();\r
127         rule.setContent("rule123");\r
128         Locale locale = new Locale(AlarmConst.I18N_EN);\r
129 \r
130         thrown.expect(CorrelationException.class);\r
131 \r
132         droolsEngine.deployRule(rule, locale);\r
133     }\r
134 \r
135     @Test\r
136     public void deployRule_package_name_repeat() throws CorrelationException {\r
137         DeployRuleRequest rule = new DeployRuleRequest();\r
138         rule.setContent("package rule123");\r
139         Locale locale = new Locale(AlarmConst.I18N_EN);\r
140 \r
141         thrown.expect(CorrelationException.class);\r
142 \r
143         droolsEngine.deployRule(rule, locale);\r
144         droolsEngine.deployRule(rule, locale);\r
145     }\r
146 \r
147     @Test\r
148     public void undeployRule_package_name_is_null() throws CorrelationException {\r
149         String packageName = null;\r
150         Locale locale = new Locale(AlarmConst.I18N_EN);\r
151 \r
152         thrown.expect(CorrelationException.class);\r
153 \r
154         droolsEngine.undeployRule(packageName, locale);\r
155     }\r
156 \r
157     @Test\r
158     public void undeployRule_normal() throws CorrelationException {\r
159         Locale locale = new Locale(AlarmConst.I18N_EN);\r
160 \r
161         DeployRuleRequest rule = new DeployRuleRequest();\r
162         rule.setContent("package rule123");\r
163         droolsEngine.deployRule(rule, locale);\r
164 \r
165         String packageName = "rule123";\r
166 \r
167         droolsEngine.undeployRule(packageName, locale);\r
168     }\r
169 \r
170     @Test\r
171     public void compileRule_kbuilder_has_errors() throws CorrelationException {\r
172         String content = "have error content";\r
173         Locale locale = new Locale(AlarmConst.I18N_EN);\r
174 \r
175         thrown.expect(CorrelationException.class);\r
176 \r
177         droolsEngine.compileRule(content, locale);\r
178     }\r
179 \r
180     @Test\r
181     public void putRaisedIntoStream_facthandle_is_not_null() {\r
182         VesAlarm raiseAlarm = new VesAlarm();\r
183         raiseAlarm.setSourceId("11111");\r
184         raiseAlarm.setEventName("alarm");\r
185         droolsEngine.putRaisedIntoStream(raiseAlarm);\r
186         droolsEngine.putRaisedIntoStream(raiseAlarm);\r
187     }\r
188 \r
189     @Test\r
190     public void putRaisedIntoStream_factHandle_is_null() {\r
191         VesAlarm raiseAlarm = new VesAlarm();\r
192         raiseAlarm.setSourceId("11111");\r
193         raiseAlarm.setEventName("alarm");\r
194         droolsEngine.putRaisedIntoStream(raiseAlarm);\r
195     }\r
196 \r
197     @Test\r
198     public void stop() throws Exception {\r
199         droolsEngine.stop();\r
200     }\r
201 }\r