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.reflect.Whitebox;
\r
52 @RunWith(PowerMockRunner.class)
\r
53 @SuppressStaticInitializationFor("org.openo.holmes.common.utils.DbDaoUtil")
\r
54 public class RuleMgtWrapperTest {
\r
57 public ExpectedException thrown = ExpectedException.none();
\r
59 private RuleMgtWrapper ruleMgtWrapper;
\r
61 private EngineWrapper engineWrapperMock;
\r
63 private DbDaoUtil dbDaoUtilMock;
\r
65 private CorrelationRuleQueryDao correlationRuleQueryDaoMock;
\r
67 private CorrelationRuleDao correlationRuleDaoMock;
\r
69 private static final String USER_NAME = "admin";
\r
72 public void setUp() throws Exception {
\r
74 ruleMgtWrapper = new RuleMgtWrapper();
\r
76 engineWrapperMock = PowerMock.createMock(EngineWrapper.class);
\r
77 correlationRuleQueryDaoMock = PowerMock.createMock(CorrelationRuleQueryDao.class);
\r
78 dbDaoUtilMock = PowerMock.createMock(DbDaoUtil.class);
\r
79 correlationRuleDaoMock = PowerMock.createMock(CorrelationRuleDao.class);
\r
81 Whitebox.setInternalState(ruleMgtWrapper, "daoUtil", dbDaoUtilMock);
\r
82 Whitebox.setInternalState(ruleMgtWrapper, "correlationRuleQueryDao", correlationRuleQueryDaoMock);
\r
83 Whitebox.setInternalState(ruleMgtWrapper, "engineWarpper", engineWrapperMock);
\r
85 PowerMock.resetAll();
\r
89 public void addCorrelationRule_name_is_null() throws Exception {
\r
90 thrown.expect(CorrelationException.class);
\r
91 thrown.expectMessage(I18nProxy.RULE_MANAGEMENT_RULE_NAME_IS_EMPTY);
\r
93 ruleMgtWrapper.addCorrelationRule(USER_NAME, createRuleCreateRequest(null, "This is a rule for testing.",
\r
94 "Mocked contents.", 0));
\r
98 public void addCorrelationRule_name_is_empty() throws Exception {
\r
99 thrown.expect(CorrelationException.class);
\r
100 thrown.expectMessage(I18nProxy.RULE_MANAGEMENT_RULE_NAME_IS_EMPTY);
\r
102 ruleMgtWrapper.addCorrelationRule("admin", createRuleCreateRequest("", "This is a rule for testing.",
\r
103 "Mocked contents.", 0));
\r
107 public void addCorrelationRule_rule_query_exception() throws Exception {
\r
109 final String ruleName = "Rule-001";
\r
111 RuleCreateRequest ruleCreateRequest = createRuleCreateRequest(ruleName, "This is a rule for testing.",
\r
112 "Mocked contents.", 0);
\r
114 thrown.expect(CorrelationException.class);
\r
115 thrown.expectMessage(I18nProxy.RULE_MANAGEMENT_DB_ERROR);
\r
117 EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(
\r
118 correlationRuleDaoMock);
\r
119 EasyMock.expect(correlationRuleDaoMock.queryRuleByRuleName(ruleName))
\r
120 .andThrow(new RuntimeException(""));
\r
122 PowerMock.replayAll();
\r
124 ruleMgtWrapper.addCorrelationRule("admin", ruleCreateRequest);
\r
126 PowerMock.verifyAll();
\r
130 public void addCorrelationRule_duplicated_rule() throws Exception {
\r
132 final String ruleName = "Rule-001";
\r
134 RuleCreateRequest ruleCreateRequest = createRuleCreateRequest(ruleName, "This is a rule for testing.",
\r
135 "Mocked contents.", 0);
\r
136 CorrelationRule correlationRule = convertCreateRequest2CorrelationRule(ruleCreateRequest);
\r
138 thrown.expect(CorrelationException.class);
\r
139 thrown.expectMessage(I18nProxy.RULE_MANAGEMENT_REPEAT_RULE_NAME);
\r
141 EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(
\r
142 correlationRuleDaoMock);
\r
143 EasyMock.expect(correlationRuleDaoMock.queryRuleByRuleName(ruleName)).andReturn(correlationRule);
\r
145 PowerMock.replayAll();
\r
147 ruleMgtWrapper.addCorrelationRule("admin", ruleCreateRequest);
\r
149 PowerMock.verifyAll();
\r
153 public void addCorrelationRule_rule_deploy_verify_failure() throws Exception {
\r
155 final String ruleName = "Rule-001";
\r
157 RuleCreateRequest ruleCreateRequest = createRuleCreateRequest(ruleName, "This is a rule for testing.",
\r
158 "Mocked contents.", 0);
\r
160 thrown.expect(CorrelationException.class);
\r
161 thrown.expectMessage(I18nProxy.RULE_MANAGEMENT__CALL_CHECK_RULE_REST_FAILED);
\r
163 EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(
\r
164 correlationRuleDaoMock);
\r
165 EasyMock.expect(correlationRuleDaoMock.queryRuleByRuleName(ruleName)).andReturn(null);
\r
166 EasyMock.expect(engineWrapperMock.checkRuleFromEngine(EasyMock.anyObject(CorrelationCheckRule4Engine.class)))
\r
167 .andThrow(new CorrelationException(I18nProxy.RULE_MANAGEMENT__CALL_CHECK_RULE_REST_FAILED));
\r
169 PowerMock.replayAll();
\r
171 ruleMgtWrapper.addCorrelationRule("admin", ruleCreateRequest);
\r
173 PowerMock.verifyAll();
\r
177 public void addCorrelationRule_rule_deploy_rule_enabled_failure() throws Exception {
\r
179 final String ruleName = "Rule-001";
\r
181 RuleCreateRequest ruleCreateRequest = createRuleCreateRequest(ruleName, "This is a rule for testing.",
\r
182 "Mocked contents.", 1);
\r
184 thrown.expect(CorrelationException.class);
\r
185 thrown.expectMessage(I18nProxy.RULE_MANAGEMENT_CALL_DEPLOY_RULE_REST_FAILED);
\r
187 EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(
\r
188 correlationRuleDaoMock);
\r
189 EasyMock.expect(correlationRuleDaoMock.queryRuleByRuleName(ruleName)).andReturn(null);
\r
190 EasyMock.expect(engineWrapperMock.checkRuleFromEngine(EasyMock.anyObject(CorrelationCheckRule4Engine.class)))
\r
192 EasyMock.expect(engineWrapperMock.deployEngine(EasyMock.anyObject(CorrelationDeployRule4Engine.class)))
\r
193 .andThrow(new CorrelationException(I18nProxy.RULE_MANAGEMENT_CALL_DEPLOY_RULE_REST_FAILED));
\r
195 PowerMock.replayAll();
\r
197 ruleMgtWrapper.addCorrelationRule("admin", ruleCreateRequest);
\r
199 PowerMock.verifyAll();
\r
203 public void addCorrelationRule_rule_save_failure() throws Exception {
\r
204 final String ruleName = "Rule-001";
\r
206 RuleCreateRequest ruleCreateRequest = createRuleCreateRequest(ruleName, "This is a rule for testing.",
\r
207 "Mocked contents.", 1);
\r
209 thrown.expect(CorrelationException.class);
\r
210 thrown.expectMessage(I18nProxy.RULE_MANAGEMENT_CREATE_RULE_FAILED);
\r
212 EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(
\r
213 correlationRuleDaoMock).times(2);
\r
214 EasyMock.expect(correlationRuleDaoMock.queryRuleByRuleName(ruleName)).andReturn(null);
\r
215 EasyMock.expect(engineWrapperMock.checkRuleFromEngine(EasyMock.anyObject(CorrelationCheckRule4Engine.class)))
\r
217 EasyMock.expect(engineWrapperMock.deployEngine(EasyMock.anyObject(CorrelationDeployRule4Engine.class)))
\r
218 .andReturn("package-001");
\r
219 EasyMock.expect(correlationRuleDaoMock.saveRule(EasyMock.anyObject(CorrelationRule.class)))
\r
220 .andThrow(new RuntimeException("any message"));
\r
222 PowerMock.replayAll();
\r
224 ruleMgtWrapper.addCorrelationRule("admin", ruleCreateRequest);
\r
226 PowerMock.verifyAll();
\r
230 public void addCorrelationRule_normal() throws Exception {
\r
231 final String ruleName = "Rule-001";
\r
233 RuleCreateRequest ruleCreateRequest = createRuleCreateRequest(ruleName, "This is a rule for testing.",
\r
234 "Mocked contents.", 1);
\r
236 CorrelationRule correlationRuleRet = new CorrelationRule();
\r
237 correlationRuleRet.setRid("rule_" + System.currentTimeMillis());
\r
239 EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(
\r
240 correlationRuleDaoMock).times(2);
\r
241 EasyMock.expect(correlationRuleDaoMock.queryRuleByRuleName(ruleName)).andReturn(null);
\r
242 EasyMock.expect(engineWrapperMock.checkRuleFromEngine(EasyMock.anyObject(CorrelationCheckRule4Engine.class)))
\r
244 EasyMock.expect(engineWrapperMock.deployEngine(EasyMock.anyObject(CorrelationDeployRule4Engine.class)))
\r
245 .andReturn("package-001");
\r
246 EasyMock.expect(correlationRuleDaoMock.saveRule(EasyMock.anyObject(CorrelationRule.class)))
\r
247 .andReturn(correlationRuleRet);
\r
249 PowerMock.replayAll();
\r
251 RuleAddAndUpdateResponse response = ruleMgtWrapper.addCorrelationRule("admin", ruleCreateRequest);
\r
252 assertThat(response.getRuleId(), equalTo(correlationRuleRet.getRid()));
\r
254 PowerMock.verifyAll();
\r
258 public void updateCorrelationRule_param_null() throws Exception {
\r
259 thrown.expect(CorrelationException.class);
\r
260 thrown.expectMessage(I18nProxy.RULE_MANAGEMENT_REQUEST_OBJECT_IS_EMPTY);
\r
262 ruleMgtWrapper.updateCorrelationRule(USER_NAME, null);
\r
266 public void updateCorrelationRule_rule_query_exception() throws Exception {
\r
267 thrown.expect(CorrelationException.class);
\r
268 thrown.expectMessage(I18nProxy.RULE_MANAGEMENT_DB_ERROR);
\r
270 EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(
\r
271 correlationRuleDaoMock);
\r
272 EasyMock.expect(correlationRuleDaoMock.getRuleByRid(EasyMock.anyObject(String.class)))
\r
273 .andThrow(new RuntimeException(""));
\r
275 PowerMock.replayAll();
\r
277 ruleMgtWrapper.updateCorrelationRule(USER_NAME, new RuleUpdateRequest());
\r
279 PowerMock.verifyAll();
\r
283 public void updateCorrelationRule_rule_not_exist() throws Exception {
\r
284 thrown.expect(CorrelationException.class);
\r
285 thrown.expectMessage(I18nProxy.RULE_MANAGEMENT_RULE_NOT_EXIST_DATABASE);
\r
287 EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(
\r
288 correlationRuleDaoMock);
\r
289 EasyMock.expect(correlationRuleDaoMock.getRuleByRid(EasyMock.anyObject(String.class))).andReturn(null);
\r
291 PowerMock.replayAll();
\r
293 ruleMgtWrapper.updateCorrelationRule(USER_NAME, new RuleUpdateRequest());
\r
295 PowerMock.verifyAll();
\r
299 public void updateCorrelationRule_rule_status_illegal_with_contents() throws Exception {
\r
300 thrown.expect(CorrelationException.class);
\r
301 thrown.expectMessage(I18nProxy.RULE_MANAGEMENT_PARAMETER_ENABLED_ERROR);
\r
303 RuleUpdateRequest ruleUpdateRequest = createRuleUpdateRequest("rule_" + System.currentTimeMillis(),
\r
304 "desc", "contents", 3);
\r
305 CorrelationRule correlationRule = convertUpdateRequest2CorrelationRule(ruleUpdateRequest);
\r
306 correlationRule.setContent("previous contents");
\r
308 EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(
\r
309 correlationRuleDaoMock);
\r
310 EasyMock.expect(correlationRuleDaoMock.getRuleByRid(EasyMock.anyObject(String.class)))
\r
311 .andReturn(correlationRule);
\r
313 PowerMock.replayAll();
\r
315 ruleMgtWrapper.updateCorrelationRule(USER_NAME, ruleUpdateRequest);
\r
317 PowerMock.verifyAll();
\r
321 public void updateCorrelationRule_rule_status_illegal_with_null_contents() throws Exception {
\r
322 thrown.expect(CorrelationException.class);
\r
323 thrown.expectMessage(I18nProxy.RULE_MANAGEMENT_PARAMETER_ENABLED_ERROR);
\r
325 RuleUpdateRequest ruleUpdateRequest = createRuleUpdateRequest("rule_" + System.currentTimeMillis(),
\r
327 CorrelationRule correlationRule = convertUpdateRequest2CorrelationRule(ruleUpdateRequest);
\r
328 correlationRule.setContent("previous contents");
\r
330 EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(
\r
331 correlationRuleDaoMock);
\r
332 EasyMock.expect(correlationRuleDaoMock.getRuleByRid(EasyMock.anyObject(String.class)))
\r
333 .andReturn(correlationRule);
\r
335 PowerMock.replayAll();
\r
337 ruleMgtWrapper.updateCorrelationRule(USER_NAME, ruleUpdateRequest);
\r
339 PowerMock.verifyAll();
\r
343 public void updateCorrelationRule_rule_disabled_update_failure() throws Exception {
\r
344 thrown.expect(CorrelationException.class);
\r
345 thrown.expectMessage(I18nProxy.RULE_MANAGEMENT_UPDATE_RULE_FAILED);
\r
347 RuleUpdateRequest ruleUpdateRequest = createRuleUpdateRequest("rule_" + System.currentTimeMillis(),
\r
348 "desc", "contents", 0);
\r
349 CorrelationRule correlationRuleOld = convertUpdateRequest2CorrelationRule(ruleUpdateRequest);
\r
350 correlationRuleOld.setContent("previous contents");
\r
352 EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(
\r
353 correlationRuleDaoMock).anyTimes();
\r
354 EasyMock.expect(correlationRuleDaoMock.getRuleByRid(EasyMock.anyObject(String.class)))
\r
355 .andReturn(correlationRuleOld);
\r
356 correlationRuleDaoMock.updateRule(EasyMock.anyObject(CorrelationRule.class));
\r
357 EasyMock.expectLastCall().andThrow(new RuntimeException("Failed to update the rule."));
\r
359 PowerMock.replayAll();
\r
361 ruleMgtWrapper.updateCorrelationRule(USER_NAME, ruleUpdateRequest);
\r
363 PowerMock.verifyAll();
\r
367 public void updateCorrelationRule_rule_disabled_deploy_verify_exception() throws Exception {
\r
368 thrown.expect(CorrelationException.class);
\r
369 thrown.expectMessage(I18nProxy.RULE_MANAGEMENT__CALL_CHECK_RULE_REST_FAILED);
\r
371 RuleUpdateRequest ruleUpdateRequest = createRuleUpdateRequest("rule_" + System.currentTimeMillis(),
\r
373 CorrelationRule correlationRuleOld = convertUpdateRequest2CorrelationRule(ruleUpdateRequest);
\r
374 correlationRuleOld.setContent("previous contents");
\r
376 EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(
\r
377 correlationRuleDaoMock).anyTimes();
\r
378 EasyMock.expect(correlationRuleDaoMock.getRuleByRid(EasyMock.anyObject(String.class)))
\r
379 .andReturn(correlationRuleOld);
\r
380 correlationRuleDaoMock.updateRule(EasyMock.anyObject(CorrelationRule.class));
\r
381 EasyMock.expectLastCall();
\r
382 EasyMock.expect(engineWrapperMock.checkRuleFromEngine(EasyMock.anyObject(CorrelationCheckRule4Engine.class)))
\r
383 .andThrow(new CorrelationException(I18nProxy.RULE_MANAGEMENT__CALL_CHECK_RULE_REST_FAILED));
\r
385 PowerMock.replayAll();
\r
387 ruleMgtWrapper.updateCorrelationRule(USER_NAME, ruleUpdateRequest);
\r
389 PowerMock.verifyAll();
\r
393 public void updateCorrelationRule_rule_disabled_deploy_verify_false() throws Exception {
\r
395 RuleUpdateRequest ruleUpdateRequest = createRuleUpdateRequest("rule_" + System.currentTimeMillis(),
\r
397 CorrelationRule correlationRuleOld = convertUpdateRequest2CorrelationRule(ruleUpdateRequest);
\r
398 correlationRuleOld.setContent("previous contents");
\r
400 EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(
\r
401 correlationRuleDaoMock).anyTimes();
\r
402 EasyMock.expect(correlationRuleDaoMock.getRuleByRid(EasyMock.anyObject(String.class)))
\r
403 .andReturn(correlationRuleOld);
\r
404 correlationRuleDaoMock.updateRule(EasyMock.anyObject(CorrelationRule.class));
\r
405 EasyMock.expectLastCall();
\r
406 EasyMock.expect(engineWrapperMock.checkRuleFromEngine(EasyMock.anyObject(CorrelationCheckRule4Engine.class)))
\r
409 PowerMock.replayAll();
\r
411 RuleAddAndUpdateResponse response = ruleMgtWrapper.updateCorrelationRule(USER_NAME, ruleUpdateRequest);
\r
413 assertThat(response.getRuleId(), equalTo(ruleUpdateRequest.getRuleId()));
\r
415 PowerMock.verifyAll();
\r
419 public void updateCorrelationRule_rule_enabled_engine_delete_failure() throws Exception {
\r
420 thrown.expect(CorrelationException.class);
\r
421 thrown.expectMessage(I18nProxy.RULE_MANAGEMENT_UPDATE_RULE_FAILED);
\r
423 RuleUpdateRequest ruleUpdateRequest = createRuleUpdateRequest("rule_" + System.currentTimeMillis(),
\r
425 CorrelationRule correlationRuleOld = convertUpdateRequest2CorrelationRule(ruleUpdateRequest);
\r
426 correlationRuleOld.setContent("previous contents");
\r
428 EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(
\r
429 correlationRuleDaoMock).anyTimes();
\r
430 EasyMock.expect(correlationRuleDaoMock.getRuleByRid(EasyMock.anyObject(String.class)))
\r
431 .andReturn(correlationRuleOld);
\r
432 engineWrapperMock.deleteRuleFromEngine(correlationRuleOld.getPackageName());
\r
433 EasyMock.expectLastCall().andThrow(new RuntimeException("Failed to delete the rule from the engine."));
\r
435 PowerMock.replayAll();
\r
437 ruleMgtWrapper.updateCorrelationRule(USER_NAME, ruleUpdateRequest);
\r
439 PowerMock.verifyAll();
\r
443 public void updateCorrelationRule_rule_enabled_engine_deploy_failure() throws Exception {
\r
444 thrown.expect(CorrelationException.class);
\r
445 thrown.expectMessage(I18nProxy.RULE_MANAGEMENT_CALL_DEPLOY_RULE_REST_FAILED);
\r
447 RuleUpdateRequest ruleUpdateRequest = createRuleUpdateRequest("rule_" + System.currentTimeMillis(),
\r
449 CorrelationRule correlationRuleOld = convertUpdateRequest2CorrelationRule(ruleUpdateRequest);
\r
450 correlationRuleOld.setContent("previous contents");
\r
452 EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(
\r
453 correlationRuleDaoMock).anyTimes();
\r
454 EasyMock.expect(correlationRuleDaoMock.getRuleByRid(EasyMock.anyObject(String.class)))
\r
455 .andReturn(correlationRuleOld);
\r
456 EasyMock.expect(engineWrapperMock.deleteRuleFromEngine(correlationRuleOld.getPackageName())).andReturn(true);
\r
457 correlationRuleDaoMock.updateRule(EasyMock.anyObject(CorrelationRule.class));
\r
458 EasyMock.expectLastCall();
\r
459 EasyMock.expect(engineWrapperMock.checkRuleFromEngine(EasyMock.anyObject(CorrelationCheckRule4Engine.class)))
\r
461 EasyMock.expect(engineWrapperMock.deployEngine(EasyMock.anyObject(CorrelationDeployRule4Engine.class)))
\r
462 .andThrow(new CorrelationException(I18nProxy.RULE_MANAGEMENT_CALL_DEPLOY_RULE_REST_FAILED));
\r
464 PowerMock.replayAll();
\r
466 ruleMgtWrapper.updateCorrelationRule(USER_NAME, ruleUpdateRequest);
\r
468 PowerMock.verifyAll();
\r
472 public void updateCorrelationRule_rule_enabled_deploy_rule_enabled() throws Exception {
\r
474 RuleUpdateRequest ruleUpdateRequest = createRuleUpdateRequest("rule_" + System.currentTimeMillis(),
\r
476 CorrelationRule correlationRuleOld = convertUpdateRequest2CorrelationRule(ruleUpdateRequest);
\r
477 correlationRuleOld.setContent("previous contents");
\r
479 EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(
\r
480 correlationRuleDaoMock).anyTimes();
\r
481 EasyMock.expect(correlationRuleDaoMock.getRuleByRid(EasyMock.anyObject(String.class)))
\r
482 .andReturn(correlationRuleOld);
\r
483 EasyMock.expect(engineWrapperMock.deleteRuleFromEngine(correlationRuleOld.getPackageName())).andReturn(true);
\r
484 correlationRuleDaoMock.updateRule(EasyMock.anyObject(CorrelationRule.class));
\r
485 EasyMock.expectLastCall();
\r
486 EasyMock.expect(engineWrapperMock.checkRuleFromEngine(EasyMock.anyObject(CorrelationCheckRule4Engine.class)))
\r
488 EasyMock.expect(engineWrapperMock.deployEngine(EasyMock.anyObject(CorrelationDeployRule4Engine.class)))
\r
489 .andReturn("package-name");
\r
491 PowerMock.replayAll();
\r
493 RuleAddAndUpdateResponse response = ruleMgtWrapper.updateCorrelationRule(USER_NAME, ruleUpdateRequest);
\r
495 assertThat(response.getRuleId(), equalTo(ruleUpdateRequest.getRuleId()));
\r
497 PowerMock.verifyAll();
\r
501 public void checkCorrelation_content_null() throws Exception {
\r
502 RuleUpdateRequest ruleCreateRequest = createRuleUpdateRequest("rule_" + System.currentTimeMillis(),
\r
504 CorrelationRule correlationRuleOld = convertUpdateRequest2CorrelationRule(ruleCreateRequest);
\r
505 CorrelationRule correlationRuleNew = convertUpdateRequest2CorrelationRule(ruleCreateRequest);
\r
506 correlationRuleOld.setContent("previous contents");
\r
508 ruleMgtWrapper.checkCorrelation(correlationRuleNew, correlationRuleOld);
\r
510 assertThat(correlationRuleNew.getContent(), equalTo(correlationRuleOld.getContent()));
\r
514 public void checkCorrelation_illegal_status() throws Exception {
\r
515 thrown.expect(CorrelationException.class);
\r
516 thrown.expectMessage(I18nProxy.RULE_MANAGEMENT_PARAMETER_ENABLED_ERROR);
\r
518 RuleUpdateRequest ruleCreateRequest = createRuleUpdateRequest("rule_" + System.currentTimeMillis(),
\r
520 CorrelationRule correlationRuleOld = convertUpdateRequest2CorrelationRule(ruleCreateRequest);
\r
521 CorrelationRule correlationRuleNew = convertUpdateRequest2CorrelationRule(ruleCreateRequest);
\r
522 correlationRuleOld.setContent("previous contents");
\r
524 ruleMgtWrapper.checkCorrelation(correlationRuleNew, correlationRuleOld);
\r
529 public void deleteCorrelationRule_request_null() throws Exception {
\r
530 thrown.expect(CorrelationException.class);
\r
531 thrown.expectMessage((I18nProxy.RULE_MANAGEMENT_REQUEST_OBJECT_IS_EMPTY));
\r
533 ruleMgtWrapper.deleteCorrelationRule(null);
\r
537 public void deleteCorrelationRule_rule_query_exception() throws Exception {
\r
538 thrown.expect(CorrelationException.class);
\r
539 thrown.expectMessage((I18nProxy.RULE_MANAGEMENT_DB_ERROR));
\r
541 RuleDeleteRequest ruleDeleteRequest = createRuleDeleteRequest("rule_" + System.currentTimeMillis());
\r
543 EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(
\r
544 correlationRuleDaoMock).anyTimes();
\r
545 EasyMock.expect(correlationRuleDaoMock.getRuleByRid(ruleDeleteRequest.getRuleId()))
\r
546 .andThrow(new RuntimeException(""));
\r
548 PowerMock.replayAll();
\r
550 ruleMgtWrapper.deleteCorrelationRule(ruleDeleteRequest);
\r
552 PowerMock.verifyAll();
\r
556 public void deleteCorrelationRule_rule_not_exit() throws Exception {
\r
557 thrown.expect(CorrelationException.class);
\r
558 thrown.expectMessage((I18nProxy.RULE_MANAGEMENT_RULE_NOT_EXIST_DATABASE));
\r
560 RuleDeleteRequest ruleDeleteRequest = createRuleDeleteRequest("rule_" + System.currentTimeMillis());
\r
562 EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(
\r
563 correlationRuleDaoMock).anyTimes();
\r
564 EasyMock.expect(correlationRuleDaoMock.getRuleByRid(ruleDeleteRequest.getRuleId()))
\r
567 PowerMock.replayAll();
\r
569 ruleMgtWrapper.deleteCorrelationRule(ruleDeleteRequest);
\r
571 PowerMock.verifyAll();
\r
575 public void deleteCorrelationRule_rule_enabled_engine_delete_exception() throws Exception {
\r
576 thrown.expect(CorrelationException.class);
\r
577 thrown.expectMessage((I18nProxy.RULE_MANAGEMENT_DELETE_RULE_FAILED));
\r
579 RuleDeleteRequest ruleDeleteRequest = createRuleDeleteRequest("rule_" + System.currentTimeMillis());
\r
580 RuleUpdateRequest ruleCreateRequest = createRuleUpdateRequest("rule_" + System.currentTimeMillis(),
\r
581 "desc", "contents", 1);
\r
582 CorrelationRule correlationRule = convertUpdateRequest2CorrelationRule(ruleCreateRequest);
\r
584 EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(
\r
585 correlationRuleDaoMock).anyTimes();
\r
586 EasyMock.expect(correlationRuleDaoMock.getRuleByRid(ruleDeleteRequest.getRuleId()))
\r
587 .andReturn(correlationRule);
\r
588 EasyMock.expect(engineWrapperMock.deleteRuleFromEngine(correlationRule.getPackageName()))
\r
589 .andThrow(new RuntimeException("Failed to delete the rule from the engine"));
\r
591 PowerMock.replayAll();
\r
593 ruleMgtWrapper.deleteCorrelationRule(ruleDeleteRequest);
\r
595 PowerMock.verifyAll();
\r
599 public void deleteCorrelationRule_rule_disabled_delete_exception() throws Exception {
\r
600 thrown.expect(CorrelationException.class);
\r
601 thrown.expectMessage((I18nProxy.RULE_MANAGEMENT_DELETE_RULE_FAILED));
\r
603 RuleDeleteRequest ruleDeleteRequest = createRuleDeleteRequest("rule_" + System.currentTimeMillis());
\r
604 RuleUpdateRequest ruleCreateRequest = createRuleUpdateRequest("rule_" + System.currentTimeMillis(),
\r
605 "desc", "contents", 0);
\r
606 CorrelationRule correlationRule = convertUpdateRequest2CorrelationRule(ruleCreateRequest);
\r
608 EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(
\r
609 correlationRuleDaoMock).anyTimes();
\r
610 EasyMock.expect(correlationRuleDaoMock.getRuleByRid(ruleDeleteRequest.getRuleId()))
\r
611 .andReturn(correlationRule);
\r
612 correlationRuleDaoMock.deleteRule(correlationRule);
\r
613 EasyMock.expectLastCall().andThrow(new RuntimeException("Failed to delete the rule from the DB"));
\r
615 PowerMock.replayAll();
\r
617 ruleMgtWrapper.deleteCorrelationRule(ruleDeleteRequest);
\r
619 PowerMock.verifyAll();
\r
623 public void deleteCorrelationRule_normal() throws Exception {
\r
624 RuleDeleteRequest ruleDeleteRequest = createRuleDeleteRequest("rule_" + System.currentTimeMillis());
\r
625 RuleUpdateRequest ruleCreateRequest = createRuleUpdateRequest("rule_" + System.currentTimeMillis(),
\r
626 "desc", "contents", 1);
\r
627 CorrelationRule correlationRule = convertUpdateRequest2CorrelationRule(ruleCreateRequest);
\r
629 EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(
\r
630 correlationRuleDaoMock).anyTimes();
\r
631 EasyMock.expect(correlationRuleDaoMock.getRuleByRid(ruleDeleteRequest.getRuleId()))
\r
632 .andReturn(correlationRule);
\r
633 EasyMock.expect(engineWrapperMock.deleteRuleFromEngine(correlationRule.getPackageName())).andReturn(true);
\r
634 correlationRuleDaoMock.deleteRule(correlationRule);
\r
635 EasyMock.expectLastCall();
\r
637 PowerMock.replayAll();
\r
639 ruleMgtWrapper.deleteCorrelationRule(ruleDeleteRequest);
\r
641 PowerMock.verifyAll();
\r
645 public void getCorrelationRuleByCondition_data_format_exception() throws Exception {
\r
646 thrown.expect(CorrelationException.class);
\r
647 thrown.expectMessage((I18nProxy.RULE_MANAGEMENT_CREATE_QUERY_SQL_FAILED));
\r
649 EasyMock.expect(correlationRuleQueryDaoMock.getCorrelationRulesByCondition(EasyMock.anyObject(
\r
650 RuleQueryCondition.class)))
\r
651 .andThrow(new CorrelationException(I18nProxy.RULE_MANAGEMENT_CREATE_QUERY_SQL_FAILED));
\r
653 PowerMock.replay(correlationRuleQueryDaoMock, CorrelationRuleQueryDao.class);
\r
655 ruleMgtWrapper.getCorrelationRuleByCondition(new RuleQueryCondition());
\r
657 PowerMock.verify(correlationRuleQueryDaoMock, CorrelationRuleQueryDao.class);
\r
661 public void getCorrelationRuleByCondition_db_exception() throws Exception {
\r
662 thrown.expect(CorrelationException.class);
\r
663 thrown.expectMessage((I18nProxy.RULE_MANAGEMENT_QUERY_RULE_FAILED));
\r
665 EasyMock.expect(correlationRuleQueryDaoMock.getCorrelationRulesByCondition(EasyMock.anyObject(
\r
666 RuleQueryCondition.class)))
\r
667 .andThrow(new CorrelationException(I18nProxy.RULE_MANAGEMENT_QUERY_RULE_FAILED));
\r
669 PowerMock.replay(correlationRuleQueryDaoMock, CorrelationRuleQueryDao.class);
\r
671 ruleMgtWrapper.getCorrelationRuleByCondition(new RuleQueryCondition());
\r
673 PowerMock.verify(correlationRuleQueryDaoMock, CorrelationRuleQueryDao.class);
\r
677 public void getCorrelationRuleByCondition_normal() throws Exception {
\r
678 List<CorrelationRule> correlationRuleList = new ArrayList<CorrelationRule>(10);
\r
679 for (int i = 0; i < 10; ++i) {
\r
680 CorrelationRule correlationRule = new CorrelationRule();
\r
681 correlationRule.setContent("content" + i);
\r
682 correlationRule.setName("name" + i);
\r
683 correlationRule.setRid("rule_" + i);
\r
684 correlationRule.setIsManual(i % 2);
\r
685 correlationRule.setEngineType("engineType" + (i % 2 + 1));
\r
686 correlationRule.setEngineId("engineId" + i);
\r
687 correlationRule.setCreateTime(new Date());
\r
688 correlationRule.setCreator(USER_NAME);
\r
689 correlationRule.setDescription("description" + i);
\r
690 correlationRule.setPackageName("package" + i);
\r
691 correlationRuleList.add(correlationRule);
\r
694 EasyMock.expect(correlationRuleQueryDaoMock.getCorrelationRulesByCondition(EasyMock.anyObject(
\r
695 RuleQueryCondition.class))).andReturn(correlationRuleList);
\r
697 PowerMock.replay(correlationRuleQueryDaoMock, CorrelationRuleQueryDao.class);
\r
699 RuleQueryListResponse response = ruleMgtWrapper.getCorrelationRuleByCondition(new RuleQueryCondition());
\r
701 PowerMock.verify(correlationRuleQueryDaoMock, CorrelationRuleQueryDao.class);
\r
703 assertThat(response.getTotalCount(), is(10));
\r
705 for (int i = 0; i < 10; ++i) {
\r
706 assertThat(response.getCorrelationRules().get(i).getRuleId(),
\r
707 equalTo(correlationRuleList.get(i).getRid()));
\r
711 private RuleCreateRequest createRuleCreateRequest(String ruleName, String description, String content,
\r
713 RuleCreateRequest rcr;
\r
714 rcr = new RuleCreateRequest();
\r
715 rcr.setRuleName(ruleName);
\r
716 rcr.setDescription(description);
\r
717 rcr.setContent(content);
\r
718 rcr.setEnabled(enabled);
\r
722 private RuleUpdateRequest createRuleUpdateRequest(String ruleId, String description, String content, int enabled) {
\r
723 RuleUpdateRequest ruleUpdateRequest = new RuleUpdateRequest();
\r
724 ruleUpdateRequest.setRuleId(ruleId);
\r
725 ruleUpdateRequest.setDescription(description);
\r
726 ruleUpdateRequest.setContent(content);
\r
727 ruleUpdateRequest.setEnabled(enabled);
\r
728 return ruleUpdateRequest;
\r
731 private RuleDeleteRequest createRuleDeleteRequest(String ruleId) {
\r
732 RuleDeleteRequest ruleDeleteRequest = new RuleDeleteRequest();
\r
733 ruleDeleteRequest.setRuleId(ruleId);
\r
734 return ruleDeleteRequest;
\r
737 private CorrelationRule convertCreateRequest2CorrelationRule(RuleCreateRequest ruleCreateRequest) {
\r
738 CorrelationRule correlationRule = new CorrelationRule();
\r
739 correlationRule.setContent(ruleCreateRequest.getContent());
\r
740 correlationRule.setDescription(ruleCreateRequest.getDescription());
\r
741 correlationRule.setName(ruleCreateRequest.getRuleName());
\r
742 correlationRule.setCreator(USER_NAME);
\r
743 correlationRule.setModifier(USER_NAME);
\r
744 correlationRule.setEnabled(ruleCreateRequest.getEnabled());
\r
745 return correlationRule;
\r
748 private CorrelationRule convertUpdateRequest2CorrelationRule(RuleUpdateRequest ruleUpdateRequest) {
\r
749 CorrelationRule correlationRule = new CorrelationRule();
\r
750 correlationRule.setRid(ruleUpdateRequest.getRuleId());
\r
751 correlationRule.setContent(ruleUpdateRequest.getContent());
\r
752 correlationRule.setDescription(ruleUpdateRequest.getDescription());
\r
753 correlationRule.setEnabled(ruleUpdateRequest.getEnabled());
\r
754 correlationRule.setUpdateTime(new Date());
\r
755 correlationRule.setModifier(USER_NAME);
\r
756 return correlationRule;
\r