2 * Copyright 2017 ZTE Corporation.
\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
8 * http://www.apache.org/licenses/LICENSE-2.0
\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
17 package org.openo.holmes.rulemgt.wrapper;
\r
19 import static org.hamcrest.MatcherAssert.assertThat;
\r
20 import static org.hamcrest.Matchers.equalTo;
\r
21 import static org.hamcrest.Matchers.is;
\r
23 import java.util.ArrayList;
\r
24 import java.util.Date;
\r
25 import java.util.List;
\r
26 import org.easymock.EasyMock;
\r
27 import org.junit.Before;
\r
28 import org.junit.Rule;
\r
29 import org.junit.Test;
\r
30 import org.junit.rules.ExpectedException;
\r
31 import org.junit.runner.RunWith;
\r
32 import org.openo.holmes.common.api.entity.CorrelationRule;
\r
33 import org.openo.holmes.common.exception.CorrelationException;
\r
34 import org.openo.holmes.common.utils.DbDaoUtil;
\r
35 import org.openo.holmes.common.utils.I18nProxy;
\r
36 import org.openo.holmes.rulemgt.bean.request.CorrelationCheckRule4Engine;
\r
37 import org.openo.holmes.rulemgt.bean.request.CorrelationDeployRule4Engine;
\r
38 import org.openo.holmes.rulemgt.bean.request.RuleCreateRequest;
\r
39 import org.openo.holmes.rulemgt.bean.request.RuleDeleteRequest;
\r
40 import org.openo.holmes.rulemgt.bean.request.RuleQueryCondition;
\r
41 import org.openo.holmes.rulemgt.bean.request.RuleUpdateRequest;
\r
42 import org.openo.holmes.rulemgt.bean.response.RuleAddAndUpdateResponse;
\r
43 import org.openo.holmes.rulemgt.bean.response.RuleQueryListResponse;
\r
44 import org.openo.holmes.rulemgt.bolt.enginebolt.EngineWrapper;
\r
45 import org.openo.holmes.rulemgt.db.CorrelationRuleDao;
\r
46 import org.openo.holmes.rulemgt.db.CorrelationRuleQueryDao;
\r
47 import org.powermock.api.easymock.PowerMock;
\r
48 import org.powermock.core.classloader.annotations.SuppressStaticInitializationFor;
\r
49 import org.powermock.modules.junit4.PowerMockRunner;
\r
50 import org.powermock.modules.junit4.rule.PowerMockRule;
\r
51 import org.powermock.reflect.Whitebox;
\r
53 public class RuleMgtWrapperTest {
\r
56 public ExpectedException thrown = ExpectedException.none();
\r
59 public PowerMockRule powerMockRule = new PowerMockRule();
\r
61 private RuleMgtWrapper ruleMgtWrapper;
\r
63 private EngineWrapper engineWrapperMock;
\r
65 private DbDaoUtil dbDaoUtilMock;
\r
67 private CorrelationRuleQueryDao correlationRuleQueryDaoMock;
\r
69 private CorrelationRuleDao correlationRuleDaoMock;
\r
71 private static final String USER_NAME = "admin";
\r
74 public void setUp() throws Exception {
\r
76 ruleMgtWrapper = new RuleMgtWrapper();
\r
78 engineWrapperMock = PowerMock.createMock(EngineWrapper.class);
\r
79 correlationRuleQueryDaoMock = PowerMock.createMock(CorrelationRuleQueryDao.class);
\r
80 dbDaoUtilMock = PowerMock.createMock(DbDaoUtil.class);
\r
81 correlationRuleDaoMock = PowerMock.createMock(CorrelationRuleDao.class);
\r
83 Whitebox.setInternalState(ruleMgtWrapper, "daoUtil", dbDaoUtilMock);
\r
84 Whitebox.setInternalState(ruleMgtWrapper, "correlationRuleQueryDao", correlationRuleQueryDaoMock);
\r
85 Whitebox.setInternalState(ruleMgtWrapper, "engineWarpper", engineWrapperMock);
\r
87 PowerMock.resetAll();
\r
91 public void addCorrelationRule_name_is_null() throws Exception {
\r
92 thrown.expect(CorrelationException.class);
\r
93 thrown.expectMessage(I18nProxy.RULE_MANAGEMENT_RULE_NAME_IS_EMPTY);
\r
95 ruleMgtWrapper.addCorrelationRule(USER_NAME, createRuleCreateRequest(null, "This is a rule for testing.",
\r
96 "Mocked contents.", 0));
\r
100 public void addCorrelationRule_name_is_empty() throws Exception {
\r
101 thrown.expect(CorrelationException.class);
\r
102 thrown.expectMessage(I18nProxy.RULE_MANAGEMENT_RULE_NAME_IS_EMPTY);
\r
104 ruleMgtWrapper.addCorrelationRule("admin", createRuleCreateRequest("", "This is a rule for testing.",
\r
105 "Mocked contents.", 0));
\r
109 public void addCorrelationRule_rule_query_exception() throws Exception {
\r
111 final String ruleName = "Rule-001";
\r
113 RuleCreateRequest ruleCreateRequest = createRuleCreateRequest(ruleName, "This is a rule for testing.",
\r
114 "Mocked contents.", 0);
\r
116 thrown.expect(CorrelationException.class);
\r
117 thrown.expectMessage(I18nProxy.RULE_MANAGEMENT_DB_ERROR);
\r
119 EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(
\r
120 correlationRuleDaoMock);
\r
121 EasyMock.expect(correlationRuleDaoMock.queryRuleByRuleName(ruleName))
\r
122 .andThrow(new RuntimeException(""));
\r
124 PowerMock.replayAll();
\r
126 ruleMgtWrapper.addCorrelationRule("admin", ruleCreateRequest);
\r
128 PowerMock.verifyAll();
\r
132 public void addCorrelationRule_duplicated_rule() throws Exception {
\r
134 final String ruleName = "Rule-001";
\r
136 RuleCreateRequest ruleCreateRequest = createRuleCreateRequest(ruleName, "This is a rule for testing.",
\r
137 "Mocked contents.", 0);
\r
138 CorrelationRule correlationRule = convertCreateRequest2CorrelationRule(ruleCreateRequest);
\r
140 thrown.expect(CorrelationException.class);
\r
141 thrown.expectMessage(I18nProxy.RULE_MANAGEMENT_REPEAT_RULE_NAME);
\r
143 EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(
\r
144 correlationRuleDaoMock);
\r
145 EasyMock.expect(correlationRuleDaoMock.queryRuleByRuleName(ruleName)).andReturn(correlationRule);
\r
147 PowerMock.replayAll();
\r
149 ruleMgtWrapper.addCorrelationRule("admin", ruleCreateRequest);
\r
151 PowerMock.verifyAll();
\r
155 public void addCorrelationRule_rule_deploy_verify_failure() throws Exception {
\r
157 final String ruleName = "Rule-001";
\r
159 RuleCreateRequest ruleCreateRequest = createRuleCreateRequest(ruleName, "This is a rule for testing.",
\r
160 "Mocked contents.", 0);
\r
162 thrown.expect(CorrelationException.class);
\r
163 thrown.expectMessage(I18nProxy.RULE_MANAGEMENT__CALL_CHECK_RULE_REST_FAILED);
\r
165 EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(
\r
166 correlationRuleDaoMock);
\r
167 EasyMock.expect(correlationRuleDaoMock.queryRuleByRuleName(ruleName)).andReturn(null);
\r
168 EasyMock.expect(engineWrapperMock.checkRuleFromEngine(EasyMock.anyObject(CorrelationCheckRule4Engine.class)))
\r
169 .andThrow(new CorrelationException(I18nProxy.RULE_MANAGEMENT__CALL_CHECK_RULE_REST_FAILED));
\r
171 PowerMock.replayAll();
\r
173 ruleMgtWrapper.addCorrelationRule("admin", ruleCreateRequest);
\r
175 PowerMock.verifyAll();
\r
179 public void addCorrelationRule_rule_deploy_rule_enabled_failure() throws Exception {
\r
181 final String ruleName = "Rule-001";
\r
183 RuleCreateRequest ruleCreateRequest = createRuleCreateRequest(ruleName, "This is a rule for testing.",
\r
184 "Mocked contents.", 1);
\r
186 thrown.expect(CorrelationException.class);
\r
187 thrown.expectMessage(I18nProxy.RULE_MANAGEMENT_CALL_DEPLOY_RULE_REST_FAILED);
\r
189 EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(
\r
190 correlationRuleDaoMock);
\r
191 EasyMock.expect(correlationRuleDaoMock.queryRuleByRuleName(ruleName)).andReturn(null);
\r
192 EasyMock.expect(engineWrapperMock.checkRuleFromEngine(EasyMock.anyObject(CorrelationCheckRule4Engine.class)))
\r
194 EasyMock.expect(engineWrapperMock.deployEngine(EasyMock.anyObject(CorrelationDeployRule4Engine.class)))
\r
195 .andThrow(new CorrelationException(I18nProxy.RULE_MANAGEMENT_CALL_DEPLOY_RULE_REST_FAILED));
\r
197 PowerMock.replayAll();
\r
199 ruleMgtWrapper.addCorrelationRule("admin", ruleCreateRequest);
\r
201 PowerMock.verifyAll();
\r
205 public void addCorrelationRule_rule_save_failure() throws Exception {
\r
206 final String ruleName = "Rule-001";
\r
208 RuleCreateRequest ruleCreateRequest = createRuleCreateRequest(ruleName, "This is a rule for testing.",
\r
209 "Mocked contents.", 1);
\r
211 thrown.expect(CorrelationException.class);
\r
212 thrown.expectMessage(I18nProxy.RULE_MANAGEMENT_CREATE_RULE_FAILED);
\r
214 EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(
\r
215 correlationRuleDaoMock).times(2);
\r
216 EasyMock.expect(correlationRuleDaoMock.queryRuleByRuleName(ruleName)).andReturn(null);
\r
217 EasyMock.expect(engineWrapperMock.checkRuleFromEngine(EasyMock.anyObject(CorrelationCheckRule4Engine.class)))
\r
219 EasyMock.expect(engineWrapperMock.deployEngine(EasyMock.anyObject(CorrelationDeployRule4Engine.class)))
\r
220 .andReturn("package-001");
\r
221 EasyMock.expect(correlationRuleDaoMock.saveRule(EasyMock.anyObject(CorrelationRule.class)))
\r
222 .andThrow(new RuntimeException("any message"));
\r
224 PowerMock.replayAll();
\r
226 ruleMgtWrapper.addCorrelationRule("admin", ruleCreateRequest);
\r
228 PowerMock.verifyAll();
\r
232 public void addCorrelationRule_normal() throws Exception {
\r
233 final String ruleName = "Rule-001";
\r
235 RuleCreateRequest ruleCreateRequest = createRuleCreateRequest(ruleName, "This is a rule for testing.",
\r
236 "Mocked contents.", 1);
\r
238 CorrelationRule correlationRuleRet = new CorrelationRule();
\r
239 correlationRuleRet.setRid("rule_" + System.currentTimeMillis());
\r
241 EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(
\r
242 correlationRuleDaoMock).times(2);
\r
243 EasyMock.expect(correlationRuleDaoMock.queryRuleByRuleName(ruleName)).andReturn(null);
\r
244 EasyMock.expect(engineWrapperMock.checkRuleFromEngine(EasyMock.anyObject(CorrelationCheckRule4Engine.class)))
\r
246 EasyMock.expect(engineWrapperMock.deployEngine(EasyMock.anyObject(CorrelationDeployRule4Engine.class)))
\r
247 .andReturn("package-001");
\r
248 EasyMock.expect(correlationRuleDaoMock.saveRule(EasyMock.anyObject(CorrelationRule.class)))
\r
249 .andReturn(correlationRuleRet);
\r
251 PowerMock.replayAll();
\r
253 RuleAddAndUpdateResponse response = ruleMgtWrapper.addCorrelationRule("admin", ruleCreateRequest);
\r
254 assertThat(response.getRuleId(), equalTo(correlationRuleRet.getRid()));
\r
256 PowerMock.verifyAll();
\r
260 public void updateCorrelationRule_param_null() throws Exception {
\r
261 thrown.expect(CorrelationException.class);
\r
262 thrown.expectMessage(I18nProxy.RULE_MANAGEMENT_REQUEST_OBJECT_IS_EMPTY);
\r
264 ruleMgtWrapper.updateCorrelationRule(USER_NAME, null);
\r
268 public void updateCorrelationRule_rule_query_exception() throws Exception {
\r
269 thrown.expect(CorrelationException.class);
\r
270 thrown.expectMessage(I18nProxy.RULE_MANAGEMENT_DB_ERROR);
\r
272 EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(
\r
273 correlationRuleDaoMock);
\r
274 EasyMock.expect(correlationRuleDaoMock.getRuleByRid(EasyMock.anyObject(String.class)))
\r
275 .andThrow(new RuntimeException(""));
\r
277 PowerMock.replayAll();
\r
279 ruleMgtWrapper.updateCorrelationRule(USER_NAME, new RuleUpdateRequest());
\r
281 PowerMock.verifyAll();
\r
285 public void updateCorrelationRule_rule_not_exist() throws Exception {
\r
286 thrown.expect(CorrelationException.class);
\r
287 thrown.expectMessage(I18nProxy.RULE_MANAGEMENT_RULE_NOT_EXIST_DATABASE);
\r
289 EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(
\r
290 correlationRuleDaoMock);
\r
291 EasyMock.expect(correlationRuleDaoMock.getRuleByRid(EasyMock.anyObject(String.class))).andReturn(null);
\r
293 PowerMock.replayAll();
\r
295 ruleMgtWrapper.updateCorrelationRule(USER_NAME, new RuleUpdateRequest());
\r
297 PowerMock.verifyAll();
\r
301 public void updateCorrelationRule_rule_status_illegal_with_contents() throws Exception {
\r
302 thrown.expect(CorrelationException.class);
\r
303 thrown.expectMessage(I18nProxy.RULE_MANAGEMENT_PARAMETER_ENABLED_ERROR);
\r
305 RuleUpdateRequest ruleUpdateRequest = createRuleUpdateRequest("rule_" + System.currentTimeMillis(),
\r
306 "desc", "contents", 3);
\r
307 CorrelationRule correlationRule = convertUpdateRequest2CorrelationRule(ruleUpdateRequest);
\r
308 correlationRule.setContent("previous contents");
\r
310 EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(
\r
311 correlationRuleDaoMock);
\r
312 EasyMock.expect(correlationRuleDaoMock.getRuleByRid(EasyMock.anyObject(String.class)))
\r
313 .andReturn(correlationRule);
\r
315 PowerMock.replayAll();
\r
317 ruleMgtWrapper.updateCorrelationRule(USER_NAME, ruleUpdateRequest);
\r
319 PowerMock.verifyAll();
\r
323 public void updateCorrelationRule_rule_status_illegal_with_null_contents() throws Exception {
\r
324 thrown.expect(CorrelationException.class);
\r
325 thrown.expectMessage(I18nProxy.RULE_MANAGEMENT_PARAMETER_ENABLED_ERROR);
\r
327 RuleUpdateRequest ruleUpdateRequest = createRuleUpdateRequest("rule_" + System.currentTimeMillis(),
\r
329 CorrelationRule correlationRule = convertUpdateRequest2CorrelationRule(ruleUpdateRequest);
\r
330 correlationRule.setContent("previous contents");
\r
332 EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(
\r
333 correlationRuleDaoMock);
\r
334 EasyMock.expect(correlationRuleDaoMock.getRuleByRid(EasyMock.anyObject(String.class)))
\r
335 .andReturn(correlationRule);
\r
337 PowerMock.replayAll();
\r
339 ruleMgtWrapper.updateCorrelationRule(USER_NAME, ruleUpdateRequest);
\r
341 PowerMock.verifyAll();
\r
345 public void updateCorrelationRule_rule_disabled_update_failure() throws Exception {
\r
346 thrown.expect(CorrelationException.class);
\r
347 thrown.expectMessage(I18nProxy.RULE_MANAGEMENT_UPDATE_RULE_FAILED);
\r
349 RuleUpdateRequest ruleUpdateRequest = createRuleUpdateRequest("rule_" + System.currentTimeMillis(),
\r
350 "desc", "contents", 0);
\r
351 CorrelationRule correlationRuleOld = convertUpdateRequest2CorrelationRule(ruleUpdateRequest);
\r
352 correlationRuleOld.setContent("previous contents");
\r
354 EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(
\r
355 correlationRuleDaoMock).anyTimes();
\r
356 EasyMock.expect(correlationRuleDaoMock.getRuleByRid(EasyMock.anyObject(String.class)))
\r
357 .andReturn(correlationRuleOld);
\r
358 correlationRuleDaoMock.updateRule(EasyMock.anyObject(CorrelationRule.class));
\r
359 EasyMock.expectLastCall().andThrow(new RuntimeException("Failed to update the rule."));
\r
361 PowerMock.replayAll();
\r
363 ruleMgtWrapper.updateCorrelationRule(USER_NAME, ruleUpdateRequest);
\r
365 PowerMock.verifyAll();
\r
369 public void updateCorrelationRule_rule_disabled_deploy_verify_exception() throws Exception {
\r
370 thrown.expect(CorrelationException.class);
\r
371 thrown.expectMessage(I18nProxy.RULE_MANAGEMENT__CALL_CHECK_RULE_REST_FAILED);
\r
373 RuleUpdateRequest ruleUpdateRequest = createRuleUpdateRequest("rule_" + System.currentTimeMillis(),
\r
375 CorrelationRule correlationRuleOld = convertUpdateRequest2CorrelationRule(ruleUpdateRequest);
\r
376 correlationRuleOld.setContent("previous contents");
\r
378 EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(
\r
379 correlationRuleDaoMock).anyTimes();
\r
380 EasyMock.expect(correlationRuleDaoMock.getRuleByRid(EasyMock.anyObject(String.class)))
\r
381 .andReturn(correlationRuleOld);
\r
382 correlationRuleDaoMock.updateRule(EasyMock.anyObject(CorrelationRule.class));
\r
383 EasyMock.expectLastCall();
\r
384 EasyMock.expect(engineWrapperMock.checkRuleFromEngine(EasyMock.anyObject(CorrelationCheckRule4Engine.class)))
\r
385 .andThrow(new CorrelationException(I18nProxy.RULE_MANAGEMENT__CALL_CHECK_RULE_REST_FAILED));
\r
387 PowerMock.replayAll();
\r
389 ruleMgtWrapper.updateCorrelationRule(USER_NAME, ruleUpdateRequest);
\r
391 PowerMock.verifyAll();
\r
395 public void updateCorrelationRule_rule_disabled_deploy_verify_false() throws Exception {
\r
397 RuleUpdateRequest ruleUpdateRequest = createRuleUpdateRequest("rule_" + System.currentTimeMillis(),
\r
399 CorrelationRule correlationRuleOld = convertUpdateRequest2CorrelationRule(ruleUpdateRequest);
\r
400 correlationRuleOld.setContent("previous contents");
\r
402 EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(
\r
403 correlationRuleDaoMock).anyTimes();
\r
404 EasyMock.expect(correlationRuleDaoMock.getRuleByRid(EasyMock.anyObject(String.class)))
\r
405 .andReturn(correlationRuleOld);
\r
406 correlationRuleDaoMock.updateRule(EasyMock.anyObject(CorrelationRule.class));
\r
407 EasyMock.expectLastCall();
\r
408 EasyMock.expect(engineWrapperMock.checkRuleFromEngine(EasyMock.anyObject(CorrelationCheckRule4Engine.class)))
\r
411 PowerMock.replayAll();
\r
413 RuleAddAndUpdateResponse response = ruleMgtWrapper.updateCorrelationRule(USER_NAME, ruleUpdateRequest);
\r
415 assertThat(response.getRuleId(), equalTo(ruleUpdateRequest.getRuleId()));
\r
417 PowerMock.verifyAll();
\r
421 public void updateCorrelationRule_rule_enabled_engine_delete_failure() throws Exception {
\r
422 thrown.expect(CorrelationException.class);
\r
423 thrown.expectMessage(I18nProxy.RULE_MANAGEMENT_UPDATE_RULE_FAILED);
\r
425 RuleUpdateRequest ruleUpdateRequest = createRuleUpdateRequest("rule_" + System.currentTimeMillis(),
\r
427 CorrelationRule correlationRuleOld = convertUpdateRequest2CorrelationRule(ruleUpdateRequest);
\r
428 correlationRuleOld.setContent("previous contents");
\r
430 EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(
\r
431 correlationRuleDaoMock).anyTimes();
\r
432 EasyMock.expect(correlationRuleDaoMock.getRuleByRid(EasyMock.anyObject(String.class)))
\r
433 .andReturn(correlationRuleOld);
\r
434 engineWrapperMock.deleteRuleFromEngine(correlationRuleOld.getPackageName());
\r
435 EasyMock.expectLastCall().andThrow(new RuntimeException("Failed to delete the rule from the engine."));
\r
437 PowerMock.replayAll();
\r
439 ruleMgtWrapper.updateCorrelationRule(USER_NAME, ruleUpdateRequest);
\r
441 PowerMock.verifyAll();
\r
445 public void updateCorrelationRule_rule_enabled_engine_deploy_failure() throws Exception {
\r
446 thrown.expect(CorrelationException.class);
\r
447 thrown.expectMessage(I18nProxy.RULE_MANAGEMENT_CALL_DEPLOY_RULE_REST_FAILED);
\r
449 RuleUpdateRequest ruleUpdateRequest = createRuleUpdateRequest("rule_" + System.currentTimeMillis(),
\r
451 CorrelationRule correlationRuleOld = convertUpdateRequest2CorrelationRule(ruleUpdateRequest);
\r
452 correlationRuleOld.setContent("previous contents");
\r
454 EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(
\r
455 correlationRuleDaoMock).anyTimes();
\r
456 EasyMock.expect(correlationRuleDaoMock.getRuleByRid(EasyMock.anyObject(String.class)))
\r
457 .andReturn(correlationRuleOld);
\r
458 EasyMock.expect(engineWrapperMock.deleteRuleFromEngine(correlationRuleOld.getPackageName())).andReturn(true);
\r
459 correlationRuleDaoMock.updateRule(EasyMock.anyObject(CorrelationRule.class));
\r
460 EasyMock.expectLastCall();
\r
461 EasyMock.expect(engineWrapperMock.checkRuleFromEngine(EasyMock.anyObject(CorrelationCheckRule4Engine.class)))
\r
463 EasyMock.expect(engineWrapperMock.deployEngine(EasyMock.anyObject(CorrelationDeployRule4Engine.class)))
\r
464 .andThrow(new CorrelationException(I18nProxy.RULE_MANAGEMENT_CALL_DEPLOY_RULE_REST_FAILED));
\r
466 PowerMock.replayAll();
\r
468 ruleMgtWrapper.updateCorrelationRule(USER_NAME, ruleUpdateRequest);
\r
470 PowerMock.verifyAll();
\r
474 public void updateCorrelationRule_rule_enabled_deploy_rule_enabled() throws Exception {
\r
476 RuleUpdateRequest ruleUpdateRequest = createRuleUpdateRequest("rule_" + System.currentTimeMillis(),
\r
478 CorrelationRule correlationRuleOld = convertUpdateRequest2CorrelationRule(ruleUpdateRequest);
\r
479 correlationRuleOld.setContent("previous contents");
\r
481 EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(
\r
482 correlationRuleDaoMock).anyTimes();
\r
483 EasyMock.expect(correlationRuleDaoMock.getRuleByRid(EasyMock.anyObject(String.class)))
\r
484 .andReturn(correlationRuleOld);
\r
485 EasyMock.expect(engineWrapperMock.deleteRuleFromEngine(correlationRuleOld.getPackageName())).andReturn(true);
\r
486 correlationRuleDaoMock.updateRule(EasyMock.anyObject(CorrelationRule.class));
\r
487 EasyMock.expectLastCall();
\r
488 EasyMock.expect(engineWrapperMock.checkRuleFromEngine(EasyMock.anyObject(CorrelationCheckRule4Engine.class)))
\r
490 EasyMock.expect(engineWrapperMock.deployEngine(EasyMock.anyObject(CorrelationDeployRule4Engine.class)))
\r
491 .andReturn("package-name");
\r
493 PowerMock.replayAll();
\r
495 RuleAddAndUpdateResponse response = ruleMgtWrapper.updateCorrelationRule(USER_NAME, ruleUpdateRequest);
\r
497 assertThat(response.getRuleId(), equalTo(ruleUpdateRequest.getRuleId()));
\r
499 PowerMock.verifyAll();
\r
503 public void checkCorrelation_content_null() throws Exception {
\r
504 RuleUpdateRequest ruleCreateRequest = createRuleUpdateRequest("rule_" + System.currentTimeMillis(),
\r
506 CorrelationRule correlationRuleOld = convertUpdateRequest2CorrelationRule(ruleCreateRequest);
\r
507 CorrelationRule correlationRuleNew = convertUpdateRequest2CorrelationRule(ruleCreateRequest);
\r
508 correlationRuleOld.setContent("previous contents");
\r
510 ruleMgtWrapper.checkCorrelation(correlationRuleNew, correlationRuleOld);
\r
512 assertThat(correlationRuleNew.getContent(), equalTo(correlationRuleOld.getContent()));
\r
516 public void checkCorrelation_illegal_status() throws Exception {
\r
517 thrown.expect(CorrelationException.class);
\r
518 thrown.expectMessage(I18nProxy.RULE_MANAGEMENT_PARAMETER_ENABLED_ERROR);
\r
520 RuleUpdateRequest ruleCreateRequest = createRuleUpdateRequest("rule_" + System.currentTimeMillis(),
\r
522 CorrelationRule correlationRuleOld = convertUpdateRequest2CorrelationRule(ruleCreateRequest);
\r
523 CorrelationRule correlationRuleNew = convertUpdateRequest2CorrelationRule(ruleCreateRequest);
\r
524 correlationRuleOld.setContent("previous contents");
\r
526 ruleMgtWrapper.checkCorrelation(correlationRuleNew, correlationRuleOld);
\r
531 public void deleteCorrelationRule_request_null() throws Exception {
\r
532 thrown.expect(CorrelationException.class);
\r
533 thrown.expectMessage((I18nProxy.RULE_MANAGEMENT_REQUEST_OBJECT_IS_EMPTY));
\r
535 ruleMgtWrapper.deleteCorrelationRule(null);
\r
539 public void deleteCorrelationRule_rule_query_exception() throws Exception {
\r
540 thrown.expect(CorrelationException.class);
\r
541 thrown.expectMessage((I18nProxy.RULE_MANAGEMENT_DB_ERROR));
\r
543 RuleDeleteRequest ruleDeleteRequest = createRuleDeleteRequest("rule_" + System.currentTimeMillis());
\r
545 EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(
\r
546 correlationRuleDaoMock).anyTimes();
\r
547 EasyMock.expect(correlationRuleDaoMock.getRuleByRid(ruleDeleteRequest.getRuleId()))
\r
548 .andThrow(new RuntimeException(""));
\r
550 PowerMock.replayAll();
\r
552 ruleMgtWrapper.deleteCorrelationRule(ruleDeleteRequest);
\r
554 PowerMock.verifyAll();
\r
558 public void deleteCorrelationRule_rule_not_exit() throws Exception {
\r
559 thrown.expect(CorrelationException.class);
\r
560 thrown.expectMessage((I18nProxy.RULE_MANAGEMENT_RULE_NOT_EXIST_DATABASE));
\r
562 RuleDeleteRequest ruleDeleteRequest = createRuleDeleteRequest("rule_" + System.currentTimeMillis());
\r
564 EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(
\r
565 correlationRuleDaoMock).anyTimes();
\r
566 EasyMock.expect(correlationRuleDaoMock.getRuleByRid(ruleDeleteRequest.getRuleId()))
\r
569 PowerMock.replayAll();
\r
571 ruleMgtWrapper.deleteCorrelationRule(ruleDeleteRequest);
\r
573 PowerMock.verifyAll();
\r
577 public void deleteCorrelationRule_rule_enabled_engine_delete_exception() throws Exception {
\r
578 thrown.expect(CorrelationException.class);
\r
579 thrown.expectMessage((I18nProxy.RULE_MANAGEMENT_DELETE_RULE_FAILED));
\r
581 RuleDeleteRequest ruleDeleteRequest = createRuleDeleteRequest("rule_" + System.currentTimeMillis());
\r
582 RuleUpdateRequest ruleCreateRequest = createRuleUpdateRequest("rule_" + System.currentTimeMillis(),
\r
583 "desc", "contents", 1);
\r
584 CorrelationRule correlationRule = convertUpdateRequest2CorrelationRule(ruleCreateRequest);
\r
586 EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(
\r
587 correlationRuleDaoMock).anyTimes();
\r
588 EasyMock.expect(correlationRuleDaoMock.getRuleByRid(ruleDeleteRequest.getRuleId()))
\r
589 .andReturn(correlationRule);
\r
590 EasyMock.expect(engineWrapperMock.deleteRuleFromEngine(correlationRule.getPackageName()))
\r
591 .andThrow(new RuntimeException("Failed to delete the rule from the engine"));
\r
593 PowerMock.replayAll();
\r
595 ruleMgtWrapper.deleteCorrelationRule(ruleDeleteRequest);
\r
597 PowerMock.verifyAll();
\r
601 public void deleteCorrelationRule_rule_disabled_delete_exception() throws Exception {
\r
602 thrown.expect(CorrelationException.class);
\r
603 thrown.expectMessage((I18nProxy.RULE_MANAGEMENT_DELETE_RULE_FAILED));
\r
605 RuleDeleteRequest ruleDeleteRequest = createRuleDeleteRequest("rule_" + System.currentTimeMillis());
\r
606 RuleUpdateRequest ruleCreateRequest = createRuleUpdateRequest("rule_" + System.currentTimeMillis(),
\r
607 "desc", "contents", 0);
\r
608 CorrelationRule correlationRule = convertUpdateRequest2CorrelationRule(ruleCreateRequest);
\r
610 EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(
\r
611 correlationRuleDaoMock).anyTimes();
\r
612 EasyMock.expect(correlationRuleDaoMock.getRuleByRid(ruleDeleteRequest.getRuleId()))
\r
613 .andReturn(correlationRule);
\r
614 correlationRuleDaoMock.deleteRule(correlationRule);
\r
615 EasyMock.expectLastCall().andThrow(new RuntimeException("Failed to delete the rule from the DB"));
\r
617 PowerMock.replayAll();
\r
619 ruleMgtWrapper.deleteCorrelationRule(ruleDeleteRequest);
\r
621 PowerMock.verifyAll();
\r
625 public void deleteCorrelationRule_normal() throws Exception {
\r
626 RuleDeleteRequest ruleDeleteRequest = createRuleDeleteRequest("rule_" + System.currentTimeMillis());
\r
627 RuleUpdateRequest ruleCreateRequest = createRuleUpdateRequest("rule_" + System.currentTimeMillis(),
\r
628 "desc", "contents", 1);
\r
629 CorrelationRule correlationRule = convertUpdateRequest2CorrelationRule(ruleCreateRequest);
\r
631 EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(
\r
632 correlationRuleDaoMock).anyTimes();
\r
633 EasyMock.expect(correlationRuleDaoMock.getRuleByRid(ruleDeleteRequest.getRuleId()))
\r
634 .andReturn(correlationRule);
\r
635 EasyMock.expect(engineWrapperMock.deleteRuleFromEngine(correlationRule.getPackageName())).andReturn(true);
\r
636 correlationRuleDaoMock.deleteRule(correlationRule);
\r
637 EasyMock.expectLastCall();
\r
639 PowerMock.replayAll();
\r
641 ruleMgtWrapper.deleteCorrelationRule(ruleDeleteRequest);
\r
643 PowerMock.verifyAll();
\r
647 public void getCorrelationRuleByCondition_data_format_exception() throws Exception {
\r
648 thrown.expect(CorrelationException.class);
\r
649 thrown.expectMessage((I18nProxy.RULE_MANAGEMENT_CREATE_QUERY_SQL_FAILED));
\r
651 EasyMock.expect(correlationRuleQueryDaoMock.getCorrelationRulesByCondition(EasyMock.anyObject(
\r
652 RuleQueryCondition.class)))
\r
653 .andThrow(new CorrelationException(I18nProxy.RULE_MANAGEMENT_CREATE_QUERY_SQL_FAILED));
\r
655 PowerMock.replay(correlationRuleQueryDaoMock, CorrelationRuleQueryDao.class);
\r
657 ruleMgtWrapper.getCorrelationRuleByCondition(new RuleQueryCondition());
\r
659 PowerMock.verify(correlationRuleQueryDaoMock, CorrelationRuleQueryDao.class);
\r
663 public void getCorrelationRuleByCondition_db_exception() throws Exception {
\r
664 thrown.expect(CorrelationException.class);
\r
665 thrown.expectMessage((I18nProxy.RULE_MANAGEMENT_QUERY_RULE_FAILED));
\r
667 EasyMock.expect(correlationRuleQueryDaoMock.getCorrelationRulesByCondition(EasyMock.anyObject(
\r
668 RuleQueryCondition.class)))
\r
669 .andThrow(new CorrelationException(I18nProxy.RULE_MANAGEMENT_QUERY_RULE_FAILED));
\r
671 PowerMock.replay(correlationRuleQueryDaoMock, CorrelationRuleQueryDao.class);
\r
673 ruleMgtWrapper.getCorrelationRuleByCondition(new RuleQueryCondition());
\r
675 PowerMock.verify(correlationRuleQueryDaoMock, CorrelationRuleQueryDao.class);
\r
679 public void getCorrelationRuleByCondition_normal() throws Exception {
\r
680 List<CorrelationRule> correlationRuleList = new ArrayList<CorrelationRule>(10);
\r
681 for (int i = 0; i < 10; ++i) {
\r
682 CorrelationRule correlationRule = new CorrelationRule();
\r
683 correlationRule.setContent("content" + i);
\r
684 correlationRule.setName("name" + i);
\r
685 correlationRule.setRid("rule_" + i);
\r
686 correlationRule.setIsManual(i % 2);
\r
687 correlationRule.setEngineType("engineType" + (i % 2 + 1));
\r
688 correlationRule.setEngineId("engineId" + i);
\r
689 correlationRule.setCreateTime(new Date());
\r
690 correlationRule.setCreator(USER_NAME);
\r
691 correlationRule.setDescription("description" + i);
\r
692 correlationRule.setPackageName("package" + i);
\r
693 correlationRuleList.add(correlationRule);
\r
696 EasyMock.expect(correlationRuleQueryDaoMock.getCorrelationRulesByCondition(EasyMock.anyObject(
\r
697 RuleQueryCondition.class))).andReturn(correlationRuleList);
\r
699 PowerMock.replay(correlationRuleQueryDaoMock, CorrelationRuleQueryDao.class);
\r
701 RuleQueryListResponse response = ruleMgtWrapper.getCorrelationRuleByCondition(new RuleQueryCondition());
\r
703 PowerMock.verify(correlationRuleQueryDaoMock, CorrelationRuleQueryDao.class);
\r
705 assertThat(response.getTotalCount(), is(10));
\r
707 for (int i = 0; i < 10; ++i) {
\r
708 assertThat(response.getCorrelationRules().get(i).getRuleId(),
\r
709 equalTo(correlationRuleList.get(i).getRid()));
\r
713 private RuleCreateRequest createRuleCreateRequest(String ruleName, String description, String content,
\r
715 RuleCreateRequest rcr;
\r
716 rcr = new RuleCreateRequest();
\r
717 rcr.setRuleName(ruleName);
\r
718 rcr.setDescription(description);
\r
719 rcr.setContent(content);
\r
720 rcr.setEnabled(enabled);
\r
724 private RuleUpdateRequest createRuleUpdateRequest(String ruleId, String description, String content, int enabled) {
\r
725 RuleUpdateRequest ruleUpdateRequest = new RuleUpdateRequest();
\r
726 ruleUpdateRequest.setRuleId(ruleId);
\r
727 ruleUpdateRequest.setDescription(description);
\r
728 ruleUpdateRequest.setContent(content);
\r
729 ruleUpdateRequest.setEnabled(enabled);
\r
730 return ruleUpdateRequest;
\r
733 private RuleDeleteRequest createRuleDeleteRequest(String ruleId) {
\r
734 RuleDeleteRequest ruleDeleteRequest = new RuleDeleteRequest();
\r
735 ruleDeleteRequest.setRuleId(ruleId);
\r
736 return ruleDeleteRequest;
\r
739 private CorrelationRule convertCreateRequest2CorrelationRule(RuleCreateRequest ruleCreateRequest) {
\r
740 CorrelationRule correlationRule = new CorrelationRule();
\r
741 correlationRule.setContent(ruleCreateRequest.getContent());
\r
742 correlationRule.setDescription(ruleCreateRequest.getDescription());
\r
743 correlationRule.setName(ruleCreateRequest.getRuleName());
\r
744 correlationRule.setCreator(USER_NAME);
\r
745 correlationRule.setModifier(USER_NAME);
\r
746 correlationRule.setEnabled(ruleCreateRequest.getEnabled());
\r
747 return correlationRule;
\r
750 private CorrelationRule convertUpdateRequest2CorrelationRule(RuleUpdateRequest ruleUpdateRequest) {
\r
751 CorrelationRule correlationRule = new CorrelationRule();
\r
752 correlationRule.setRid(ruleUpdateRequest.getRuleId());
\r
753 correlationRule.setContent(ruleUpdateRequest.getContent());
\r
754 correlationRule.setDescription(ruleUpdateRequest.getDescription());
\r
755 correlationRule.setEnabled(ruleUpdateRequest.getEnabled());
\r
756 correlationRule.setUpdateTime(new Date());
\r
757 correlationRule.setModifier(USER_NAME);
\r
758 return correlationRule;
\r