Add UT for Classes
authorGuangrongFu <fu.guangrong@zte.com.cn>
Thu, 16 Feb 2017 03:03:26 +0000 (11:03 +0800)
committerGuangrongFu <fu.guangrong@zte.com.cn>
Thu, 16 Feb 2017 03:03:26 +0000 (11:03 +0800)
Change-Id: I6a539b74697d324be801777c2b0da262648a426f
Issue-ID: HOLMES-14
Signed-off-by: GuangrongFu <fu.guangrong@zte.com.cn>
rulemgt/dependency-reduced-pom.xml [new file with mode: 0644]
rulemgt/src/test/java/org/openo/holmes/rulemgt/RuleActiveAppTest.java [new file with mode: 0644]
rulemgt/src/test/java/org/openo/holmes/rulemgt/db/CorrelationRuleQueryDaoTest.java [new file with mode: 0644]
rulemgt/src/test/java/org/openo/holmes/rulemgt/db/mapper/CorrelationRuleMapperTest.java [new file with mode: 0644]
rulemgt/src/test/java/org/openo/holmes/rulemgt/resources/RuleMgtResourcesTest.java [new file with mode: 0644]
rulemgt/src/test/java/org/openo/holmes/rulemgt/wrapper/RuleMgtWrapperTest.java [new file with mode: 0644]

diff --git a/rulemgt/dependency-reduced-pom.xml b/rulemgt/dependency-reduced-pom.xml
new file mode 100644 (file)
index 0000000..b434fb1
--- /dev/null
@@ -0,0 +1,211 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">\r
+  <parent>\r
+    <artifactId>holmes-rulemgt-parent</artifactId>\r
+    <groupId>org.openo.holmes.rule-management</groupId>\r
+    <version>1.1.0-SNAPSHOT</version>\r
+  </parent>\r
+  <modelVersion>4.0.0</modelVersion>\r
+  <artifactId>holmes-rulemgt</artifactId>\r
+  <name>holmes-rulemgt-service</name>\r
+  <build>\r
+    <resources>\r
+      <resource>\r
+        <directory>src/main/java</directory>\r
+        <includes>\r
+          <include>**/*.properties</include>\r
+        </includes>\r
+      </resource>\r
+      <resource>\r
+        <directory>src/main/resources</directory>\r
+      </resource>\r
+    </resources>\r
+    <plugins>\r
+      <plugin>\r
+        <artifactId>maven-jar-plugin</artifactId>\r
+        <configuration>\r
+          <archive>\r
+            <manifest>\r
+              <addDefaultImplementationEntries>true</addDefaultImplementationEntries>\r
+            </manifest>\r
+          </archive>\r
+        </configuration>\r
+      </plugin>\r
+      <plugin>\r
+        <artifactId>maven-compiler-plugin</artifactId>\r
+        <version>3.3</version>\r
+        <configuration>\r
+          <source>1.8</source>\r
+          <target>1.8</target>\r
+        </configuration>\r
+      </plugin>\r
+      <plugin>\r
+        <artifactId>maven-shade-plugin</artifactId>\r
+        <executions>\r
+          <execution>\r
+            <phase>package</phase>\r
+            <goals>\r
+              <goal>shade</goal>\r
+            </goals>\r
+            <configuration>\r
+              <transformers>\r
+                <transformer />\r
+                <transformer>\r
+                  <mainClass>org.openo.holmes.rulemgt.RuleActiveApp</mainClass>\r
+                </transformer>\r
+              </transformers>\r
+            </configuration>\r
+          </execution>\r
+        </executions>\r
+        <configuration>\r
+          <createDependencyReducedPom>true</createDependencyReducedPom>\r
+          <filters>\r
+            <filter>\r
+              <artifact>*:*</artifact>\r
+              <excludes>\r
+                <exclude>META-INF/*.SF</exclude>\r
+                <exclude>META-INF/*.DSA</exclude>\r
+                <exclude>META-INF/*.RSA</exclude>\r
+              </excludes>\r
+            </filter>\r
+          </filters>\r
+        </configuration>\r
+      </plugin>\r
+    </plugins>\r
+  </build>\r
+  <dependencies>\r
+    <dependency>\r
+      <groupId>junit</groupId>\r
+      <artifactId>junit</artifactId>\r
+      <version>4.8.2</version>\r
+      <scope>test</scope>\r
+    </dependency>\r
+    <dependency>\r
+      <groupId>io.dropwizard</groupId>\r
+      <artifactId>dropwizard-core</artifactId>\r
+      <version>0.8.0</version>\r
+      <scope>provided</scope>\r
+      <exclusions>\r
+        <exclusion>\r
+          <artifactId>dropwizard-util</artifactId>\r
+          <groupId>io.dropwizard</groupId>\r
+        </exclusion>\r
+        <exclusion>\r
+          <artifactId>dropwizard-jackson</artifactId>\r
+          <groupId>io.dropwizard</groupId>\r
+        </exclusion>\r
+        <exclusion>\r
+          <artifactId>dropwizard-validation</artifactId>\r
+          <groupId>io.dropwizard</groupId>\r
+        </exclusion>\r
+        <exclusion>\r
+          <artifactId>dropwizard-configuration</artifactId>\r
+          <groupId>io.dropwizard</groupId>\r
+        </exclusion>\r
+        <exclusion>\r
+          <artifactId>dropwizard-logging</artifactId>\r
+          <groupId>io.dropwizard</groupId>\r
+        </exclusion>\r
+        <exclusion>\r
+          <artifactId>dropwizard-metrics</artifactId>\r
+          <groupId>io.dropwizard</groupId>\r
+        </exclusion>\r
+        <exclusion>\r
+          <artifactId>dropwizard-jersey</artifactId>\r
+          <groupId>io.dropwizard</groupId>\r
+        </exclusion>\r
+        <exclusion>\r
+          <artifactId>dropwizard-servlets</artifactId>\r
+          <groupId>io.dropwizard</groupId>\r
+        </exclusion>\r
+        <exclusion>\r
+          <artifactId>dropwizard-jetty</artifactId>\r
+          <groupId>io.dropwizard</groupId>\r
+        </exclusion>\r
+        <exclusion>\r
+          <artifactId>dropwizard-lifecycle</artifactId>\r
+          <groupId>io.dropwizard</groupId>\r
+        </exclusion>\r
+        <exclusion>\r
+          <artifactId>metrics-jvm</artifactId>\r
+          <groupId>io.dropwizard.metrics</groupId>\r
+        </exclusion>\r
+        <exclusion>\r
+          <artifactId>metrics-servlets</artifactId>\r
+          <groupId>io.dropwizard.metrics</groupId>\r
+        </exclusion>\r
+        <exclusion>\r
+          <artifactId>metrics-healthchecks</artifactId>\r
+          <groupId>io.dropwizard.metrics</groupId>\r
+        </exclusion>\r
+        <exclusion>\r
+          <artifactId>argparse4j</artifactId>\r
+          <groupId>net.sourceforge.argparse4j</groupId>\r
+        </exclusion>\r
+        <exclusion>\r
+          <artifactId>jetty-setuid-java</artifactId>\r
+          <groupId>org.eclipse.jetty.toolchain.setuid</groupId>\r
+        </exclusion>\r
+      </exclusions>\r
+    </dependency>\r
+    <dependency>\r
+      <groupId>org.hamcrest</groupId>\r
+      <artifactId>hamcrest-library</artifactId>\r
+      <version>1.3</version>\r
+      <scope>test</scope>\r
+      <exclusions>\r
+        <exclusion>\r
+          <artifactId>hamcrest-core</artifactId>\r
+          <groupId>org.hamcrest</groupId>\r
+        </exclusion>\r
+      </exclusions>\r
+    </dependency>\r
+    <dependency>\r
+      <groupId>org.powermock</groupId>\r
+      <artifactId>powermock-module-junit4</artifactId>\r
+      <version>1.4.10</version>\r
+      <scope>test</scope>\r
+      <exclusions>\r
+        <exclusion>\r
+          <artifactId>powermock-module-junit4-common</artifactId>\r
+          <groupId>org.powermock</groupId>\r
+        </exclusion>\r
+      </exclusions>\r
+    </dependency>\r
+    <dependency>\r
+      <groupId>org.powermock</groupId>\r
+      <artifactId>powermock-api-easymock</artifactId>\r
+      <version>1.4.10</version>\r
+      <scope>test</scope>\r
+      <exclusions>\r
+        <exclusion>\r
+          <artifactId>powermock-api-support</artifactId>\r
+          <groupId>org.powermock</groupId>\r
+        </exclusion>\r
+      </exclusions>\r
+    </dependency>\r
+    <dependency>\r
+      <groupId>org.easymock</groupId>\r
+      <artifactId>easymock</artifactId>\r
+      <version>3.0</version>\r
+      <scope>test</scope>\r
+      <exclusions>\r
+        <exclusion>\r
+          <artifactId>cglib-nodep</artifactId>\r
+          <groupId>cglib</groupId>\r
+        </exclusion>\r
+        <exclusion>\r
+          <artifactId>objenesis</artifactId>\r
+          <groupId>org.objenesis</groupId>\r
+        </exclusion>\r
+      </exclusions>\r
+    </dependency>\r
+    <dependency>\r
+      <groupId>org.javassist</groupId>\r
+      <artifactId>javassist</artifactId>\r
+      <version>3.15.0-GA</version>\r
+      <scope>test</scope>\r
+    </dependency>\r
+  </dependencies>\r
+</project>\r
+\r
diff --git a/rulemgt/src/test/java/org/openo/holmes/rulemgt/RuleActiveAppTest.java b/rulemgt/src/test/java/org/openo/holmes/rulemgt/RuleActiveAppTest.java
new file mode 100644 (file)
index 0000000..69910c6
--- /dev/null
@@ -0,0 +1,25 @@
+/**
+ * Copyright 2017 ZTE Corporation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.openo.holmes.rulemgt;
+
+public class RuleActiveAppTest {
+
+    public static void main(String[] args) throws Exception {
+        String filePath = "E:\\code\\OES_Analytics_FM_Relation\\correlation-mgt\\rulemgt-standalone\\src\\assembly\\resource\\conf\\correlation-rule.yml";
+        new RuleActiveApp().run(new String[]{"server", filePath});
+    }
+}
\ No newline at end of file
diff --git a/rulemgt/src/test/java/org/openo/holmes/rulemgt/db/CorrelationRuleQueryDaoTest.java b/rulemgt/src/test/java/org/openo/holmes/rulemgt/db/CorrelationRuleQueryDaoTest.java
new file mode 100644 (file)
index 0000000..29e7f2b
--- /dev/null
@@ -0,0 +1,147 @@
+/**\r
+ * Copyright 2017 ZTE Corporation.\r
+ *\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *      http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+package org.openo.holmes.rulemgt.db;\r
+\r
+import static org.hamcrest.MatcherAssert.assertThat;\r
+import static org.hamcrest.Matchers.is;\r
+\r
+import java.util.ArrayList;\r
+import java.util.Date;\r
+import java.util.HashMap;\r
+import java.util.List;\r
+import java.util.Map;\r
+import java.util.Properties;\r
+import org.easymock.EasyMock;\r
+import org.junit.Before;\r
+import org.junit.Rule;\r
+import org.junit.Test;\r
+import org.junit.rules.ExpectedException;\r
+import org.junit.runner.RunWith;\r
+import org.openo.holmes.common.api.entity.CorrelationRule;\r
+import org.openo.holmes.common.exception.DbException;\r
+import org.openo.holmes.common.utils.DbDaoUtil;\r
+import org.openo.holmes.common.utils.I18nProxy;\r
+import org.openo.holmes.rulemgt.bean.request.RuleQueryCondition;\r
+import org.powermock.api.easymock.PowerMock;\r
+import org.powermock.core.classloader.annotations.SuppressStaticInitializationFor;\r
+import org.powermock.modules.junit4.PowerMockRunner;\r
+import org.powermock.reflect.Whitebox;\r
+import org.skife.jdbi.v2.Handle;\r
+import org.skife.jdbi.v2.Query;\r
+\r
+\r
+@RunWith(PowerMockRunner.class)\r
+@SuppressStaticInitializationFor("org.openo.holmes.common.utils.DbDaoUtil")\r
+public class CorrelationRuleQueryDaoTest {\r
+\r
+    @Rule\r
+    public ExpectedException thrown = ExpectedException.none();\r
+\r
+    private DbDaoUtil dbDaoUtil;\r
+\r
+    private Handle handle;\r
+\r
+    private Query query;\r
+\r
+    private CorrelationRuleQueryDao correlationRuleQueryDao;\r
+    private RuleQueryCondition ruleQueryCondition;\r
+\r
+    @Before\r
+    public void setUp() throws Exception {\r
+        correlationRuleQueryDao = new CorrelationRuleQueryDao();\r
+\r
+        dbDaoUtil = PowerMock.createMock(DbDaoUtil.class);\r
+        handle = PowerMock.createMock(Handle.class);\r
+        query = PowerMock.createMock(Query.class);\r
+\r
+        Whitebox.setInternalState(correlationRuleQueryDao, "dbDaoUtil", dbDaoUtil);\r
+\r
+        ruleQueryCondition = createRuleQueryCondition();\r
+    }\r
+\r
+\r
+\r
+    @Test\r
+    public void getCorrelationRulesByCondition_db_exception() throws Exception {\r
+\r
+        thrown.expect(DbException.class);\r
+        thrown.expectMessage(I18nProxy.RULE_MANAGEMENT_QUERY_RULE_FAILED);\r
+\r
+        EasyMock.expect(dbDaoUtil.getHandle()).andReturn(handle);\r
+        EasyMock.expect(handle.createQuery(EasyMock.anyObject(String.class))).andReturn(query);\r
+        EasyMock.expect(query.list()).andThrow(new RuntimeException()).anyTimes();\r
+        dbDaoUtil.close(handle);\r
+        EasyMock.expectLastCall();\r
+\r
+        PowerMock.replayAll();\r
+\r
+        correlationRuleQueryDao.getCorrelationRulesByCondition(ruleQueryCondition);\r
+\r
+        PowerMock.verifyAll();\r
+    }\r
+\r
+    @Test\r
+    public void getCorrelationRulesByCondition_normal() throws Exception {\r
+        EasyMock.expect(dbDaoUtil.getHandle()).andReturn(handle);\r
+        EasyMock.expect(handle.createQuery(EasyMock.anyObject(String.class))).andReturn(query);\r
+        EasyMock.expect(query.list()).andReturn(createQueryResult()).anyTimes();\r
+        dbDaoUtil.close(handle);\r
+        EasyMock.expectLastCall();\r
+\r
+        PowerMock.replayAll();\r
+\r
+        List<CorrelationRule> result = correlationRuleQueryDao.getCorrelationRulesByCondition(ruleQueryCondition);\r
+        assertThat(result.size(), is(1));\r
+\r
+        PowerMock.verifyAll();\r
+    }\r
+\r
+    private List<Map<String, Object>> createQueryResult() {\r
+        List<Map<String, Object>> list = new ArrayList<>();\r
+        Map<String, Object> value = new HashMap<>();\r
+        value.put("name", "Rule-001");\r
+        value.put("rid", "rule_" + System.currentTimeMillis());\r
+        value.put("description", "desc");\r
+        value.put("enable", 0);\r
+        value.put("templateID", 1);\r
+        value.put("engineId", "engine-001");\r
+        value.put("engineType", "engineType-001");\r
+        value.put("creator", "admin");\r
+        value.put("createTime", new Date());\r
+        value.put("updator", "admin");\r
+        value.put("updateTime", new Date());\r
+        value.put("params", new Properties());\r
+        value.put("domain", "Domain");\r
+        value.put("isManual", 0);\r
+        value.put("vendor", "Vendor");\r
+        value.put("content", "Contents");\r
+        value.put("package", "package");\r
+        list.add(value);\r
+        return list;\r
+    }\r
+\r
+    private RuleQueryCondition createRuleQueryCondition() {\r
+        RuleQueryCondition ruleQueryCondition = new RuleQueryCondition();\r
+        ruleQueryCondition.setRid("rule_" + System.currentTimeMillis());\r
+        ruleQueryCondition.setName("Rule-001");\r
+        ruleQueryCondition.setEnabled(0);\r
+        ruleQueryCondition.setCreator("admin");\r
+        ruleQueryCondition.setModifier("admin");\r
+        return ruleQueryCondition;\r
+    }\r
+\r
+}\r
diff --git a/rulemgt/src/test/java/org/openo/holmes/rulemgt/db/mapper/CorrelationRuleMapperTest.java b/rulemgt/src/test/java/org/openo/holmes/rulemgt/db/mapper/CorrelationRuleMapperTest.java
new file mode 100644 (file)
index 0000000..b69a1f7
--- /dev/null
@@ -0,0 +1,54 @@
+/**\r
+ * Copyright 2017 ZTE Corporation.\r
+ *\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *      http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+package org.openo.holmes.rulemgt.db.mapper;\r
+\r
+import static org.easymock.EasyMock.expect;\r
+\r
+import java.sql.Date;\r
+import java.sql.ResultSet;\r
+import java.util.Properties;\r
+import org.junit.Test;\r
+import org.powermock.api.easymock.PowerMock;\r
+\r
+public class CorrelationRuleMapperTest {\r
+\r
+    @Test\r
+    public void map() throws Exception {\r
+        CorrelationRuleMapper mapper = new CorrelationRuleMapper();\r
+        ResultSet resultSet = PowerMock.createMock(ResultSet.class);\r
+        expect(resultSet.getString("name")).andReturn("");\r
+        expect(resultSet.getString("rid")).andReturn("");\r
+        expect(resultSet.getString("description")).andReturn("");\r
+        expect(resultSet.getInt("enable")).andReturn(0);\r
+        expect(resultSet.getInt("templateID")).andReturn(1);\r
+        expect(resultSet.getString("engineID")).andReturn("");\r
+        expect(resultSet.getString("engineType")).andReturn("");\r
+        expect(resultSet.getString("creator")).andReturn("");\r
+        expect(resultSet.getDate("createTime")).andReturn(new Date(System.currentTimeMillis()));\r
+        expect(resultSet.getString("updator")).andReturn("");\r
+        expect(resultSet.getDate("updateTime")).andReturn(new Date(System.currentTimeMillis()));\r
+        expect(resultSet.getObject("params")).andReturn(new Properties());\r
+        expect(resultSet.getString("domain")).andReturn("");\r
+        expect(resultSet.getString("content")).andReturn("");\r
+        expect(resultSet.getInt("isManual")).andReturn(0);\r
+        expect(resultSet.getString("vendor")).andReturn("");\r
+        expect(resultSet.getString("package")).andReturn("");\r
+        PowerMock.replay(resultSet);\r
+        mapper.map(0, resultSet, null);\r
+        PowerMock.verify(resultSet);\r
+    }\r
+}
\ No newline at end of file
diff --git a/rulemgt/src/test/java/org/openo/holmes/rulemgt/resources/RuleMgtResourcesTest.java b/rulemgt/src/test/java/org/openo/holmes/rulemgt/resources/RuleMgtResourcesTest.java
new file mode 100644 (file)
index 0000000..1f6f331
--- /dev/null
@@ -0,0 +1,318 @@
+/**\r
+ * Copyright 2017 ZTE Corporation.\r
+ *\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *     http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+package org.openo.holmes.rulemgt.resources;\r
+\r
+import javax.servlet.http.HttpServletRequest;\r
+import javax.ws.rs.WebApplicationException;\r
+import org.easymock.EasyMock;\r
+import org.junit.Before;\r
+import org.junit.Rule;\r
+import org.junit.Test;\r
+import org.junit.rules.ExpectedException;\r
+import org.openo.holmes.common.exception.CallException;\r
+import org.openo.holmes.common.exception.DataFormatException;\r
+import org.openo.holmes.common.exception.DbException;\r
+import org.openo.holmes.rulemgt.bean.request.RuleCreateRequest;\r
+import org.openo.holmes.rulemgt.bean.request.RuleDeleteRequest;\r
+import org.openo.holmes.rulemgt.bean.request.RuleQueryCondition;\r
+import org.openo.holmes.rulemgt.bean.request.RuleUpdateRequest;\r
+import org.openo.holmes.rulemgt.bean.response.RuleAddAndUpdateResponse;\r
+import org.openo.holmes.rulemgt.bean.response.RuleQueryListResponse;\r
+import org.openo.holmes.rulemgt.wrapper.RuleMgtWrapper;\r
+import org.powermock.api.easymock.PowerMock;\r
+import org.powermock.reflect.Whitebox;\r
+\r
+public class RuleMgtResourcesTest {\r
+\r
+    @Rule\r
+    public ExpectedException thrown = ExpectedException.none();\r
+\r
+    private HttpServletRequest request = PowerMock.createMock(HttpServletRequest.class);\r
+\r
+    private RuleMgtWrapper ruleMgtWrapper = PowerMock.createMock(RuleMgtWrapper.class);\r
+\r
+    private RuleMgtResources ruleMgtResources = new RuleMgtResources();\r
+\r
+    @Before\r
+    public void setUp() throws Exception {\r
+        Whitebox.setInternalState(ruleMgtResources, "ruleMgtWrapper", ruleMgtWrapper);\r
+        PowerMock.resetAll();\r
+    }\r
+\r
+    @Test\r
+    public void addCorrelationRule_call_exception() throws Exception {\r
+        thrown.expect(WebApplicationException.class);\r
+\r
+        final RuleCreateRequest ruleCreateRequest = new RuleCreateRequest();\r
+        EasyMock.expect(ruleMgtWrapper.addCorrelationRule("admin", ruleCreateRequest))\r
+                .andThrow(new CallException(""));\r
+        EasyMock.expect(request.getHeader("language-option")).andReturn("en_US");\r
+        EasyMock.expect(request.getHeader("username")).andReturn("admin");\r
+        PowerMock.replayAll();\r
+        ruleMgtResources.addCorrelationRule(request, ruleCreateRequest);\r
+        PowerMock.verifyAll();\r
+    }\r
+\r
+    @Test\r
+    public void addCorrelationRule_db_exception() throws Exception {\r
+        thrown.expect(WebApplicationException.class);\r
+\r
+        final RuleCreateRequest ruleCreateRequest = new RuleCreateRequest();\r
+        EasyMock.expect(ruleMgtWrapper.addCorrelationRule("admin", ruleCreateRequest)).andThrow(new DbException(""));\r
+        EasyMock.expect(request.getHeader("language-option")).andReturn("en_US");\r
+        EasyMock.expect(request.getHeader("username")).andReturn("admin");\r
+        PowerMock.replayAll();\r
+        ruleMgtResources.addCorrelationRule(request, ruleCreateRequest);\r
+        PowerMock.verifyAll();\r
+    }\r
+\r
+    @Test\r
+    public void addCorrelationRule_data_format_exception() throws Exception {\r
+        thrown.expect(WebApplicationException.class);\r
+\r
+        final RuleCreateRequest ruleCreateRequest = new RuleCreateRequest();\r
+        EasyMock.expect(ruleMgtWrapper.addCorrelationRule("admin", ruleCreateRequest))\r
+                .andThrow(new DataFormatException(""));\r
+        EasyMock.expect(request.getHeader("language-option")).andReturn("en_US");\r
+        EasyMock.expect(request.getHeader("username")).andReturn("admin");\r
+        PowerMock.replayAll();\r
+        ruleMgtResources.addCorrelationRule(request, ruleCreateRequest);\r
+        PowerMock.verifyAll();\r
+    }\r
+\r
+    @Test\r
+    public void addCorrelationRule_exception() throws Exception {\r
+        thrown.expect(WebApplicationException.class);\r
+\r
+        final RuleCreateRequest ruleCreateRequest = new RuleCreateRequest();\r
+        EasyMock.expect(ruleMgtWrapper.addCorrelationRule("admin", ruleCreateRequest))\r
+                .andThrow(new RuntimeException(""));\r
+        EasyMock.expect(request.getHeader("language-option")).andReturn("en_US");\r
+        EasyMock.expect(request.getHeader("username")).andReturn("admin");\r
+        PowerMock.replayAll();\r
+        ruleMgtResources.addCorrelationRule(request, ruleCreateRequest);\r
+        PowerMock.verifyAll();\r
+    }\r
+\r
+    @Test\r
+    public void addCorrelationRule_normal() throws Exception {\r
+        final RuleCreateRequest ruleCreateRequest = new RuleCreateRequest();\r
+        EasyMock.expect(ruleMgtWrapper.addCorrelationRule("admin",\r
+                ruleCreateRequest)).andReturn(new RuleAddAndUpdateResponse());\r
+        EasyMock.expect(request.getHeader("language-option")).andReturn("en_US");\r
+        EasyMock.expect(request.getHeader("username")).andReturn("admin");\r
+        PowerMock.replayAll();\r
+        ruleMgtResources.addCorrelationRule(request, ruleCreateRequest);\r
+        PowerMock.verifyAll();\r
+    }\r
+\r
+    @Test\r
+    public void updateCorrelationRule_call_exception() throws Exception {\r
+        thrown.expect(WebApplicationException.class);\r
+\r
+        final RuleUpdateRequest ruleUpdateRequest = new RuleUpdateRequest();\r
+        EasyMock.expect(ruleMgtWrapper.updateCorrelationRule("admin", ruleUpdateRequest))\r
+                .andThrow(new CallException(""));\r
+        EasyMock.expect(request.getHeader("language-option")).andReturn("en_US");\r
+        EasyMock.expect(request.getHeader("username")).andReturn("admin");\r
+        PowerMock.replayAll();\r
+        ruleMgtResources.updateCorrelationRule(request, ruleUpdateRequest);\r
+        PowerMock.verifyAll();\r
+    }\r
+\r
+    @Test\r
+    public void updateCorrelationRule_data_format_exception() throws Exception {\r
+        thrown.expect(WebApplicationException.class);\r
+\r
+        final RuleUpdateRequest ruleUpdateRequest = new RuleUpdateRequest();\r
+        EasyMock.expect(ruleMgtWrapper.updateCorrelationRule("admin", ruleUpdateRequest))\r
+                .andThrow(new DataFormatException(""));\r
+        EasyMock.expect(request.getHeader("language-option")).andReturn("en_US");\r
+        EasyMock.expect(request.getHeader("username")).andReturn("admin");\r
+        PowerMock.replayAll();\r
+        ruleMgtResources.updateCorrelationRule(request, ruleUpdateRequest);\r
+        PowerMock.verifyAll();\r
+    }\r
+\r
+    @Test\r
+    public void updateCorrelationRule_db_exception() throws Exception {\r
+        thrown.expect(WebApplicationException.class);\r
+\r
+        final RuleUpdateRequest ruleUpdateRequest = new RuleUpdateRequest();\r
+        EasyMock.expect(ruleMgtWrapper.updateCorrelationRule("admin", ruleUpdateRequest))\r
+                .andThrow(new DbException(""));\r
+        EasyMock.expect(request.getHeader("language-option")).andReturn("en_US");\r
+        EasyMock.expect(request.getHeader("username")).andReturn("admin");\r
+        PowerMock.replayAll();\r
+        ruleMgtResources.updateCorrelationRule(request, ruleUpdateRequest);\r
+        PowerMock.verifyAll();\r
+    }\r
+\r
+    @Test\r
+    public void updateCorrelationRule_exception() throws Exception {\r
+        thrown.expect(WebApplicationException.class);\r
+\r
+        final RuleUpdateRequest ruleUpdateRequest = new RuleUpdateRequest();\r
+        EasyMock.expect(ruleMgtWrapper.updateCorrelationRule("admin", ruleUpdateRequest))\r
+                .andThrow(new RuntimeException(""));\r
+        EasyMock.expect(request.getHeader("language-option")).andReturn("en_US");\r
+        EasyMock.expect(request.getHeader("username")).andReturn("admin");\r
+        PowerMock.replayAll();\r
+        ruleMgtResources.updateCorrelationRule(request, ruleUpdateRequest);\r
+        PowerMock.verifyAll();\r
+    }\r
+\r
+    @Test\r
+    public void updateCorrelationRule_normal() throws Exception {\r
+        final RuleUpdateRequest ruleUpdateRequest = new RuleUpdateRequest();\r
+        EasyMock.expect(ruleMgtWrapper.updateCorrelationRule("admin",\r
+                ruleUpdateRequest)).andReturn(new RuleAddAndUpdateResponse());\r
+        EasyMock.expect(request.getHeader("language-option")).andReturn("en_US");\r
+        EasyMock.expect(request.getHeader("username")).andReturn("admin");\r
+        PowerMock.replayAll();\r
+        ruleMgtResources.updateCorrelationRule(request, ruleUpdateRequest);\r
+        PowerMock.verifyAll();\r
+    }\r
+\r
+    @Test\r
+    public void deleteCorrelationRule_call_exception() throws Exception {\r
+        thrown.expect(WebApplicationException.class);\r
+\r
+        final RuleDeleteRequest ruleDeleteRequest = new RuleDeleteRequest();\r
+        ruleMgtWrapper.deleteCorrelationRule(ruleDeleteRequest);\r
+        EasyMock.expectLastCall().andThrow(new CallException(""));\r
+        EasyMock.expect(request.getHeader("language-option")).andReturn("en_US");\r
+        PowerMock.replayAll();\r
+        ruleMgtResources.deleteCorrelationRule(request, ruleDeleteRequest);\r
+        PowerMock.verifyAll();\r
+    }\r
+\r
+    @Test\r
+    public void deleteCorrelationRule_data_format_exception() throws Exception {\r
+        thrown.expect(WebApplicationException.class);\r
+\r
+        final RuleDeleteRequest ruleDeleteRequest = new RuleDeleteRequest();\r
+        ruleMgtWrapper.deleteCorrelationRule(ruleDeleteRequest);\r
+        EasyMock.expectLastCall().andThrow(new DataFormatException(""));\r
+        EasyMock.expect(request.getHeader("language-option")).andReturn("en_US");\r
+        PowerMock.replayAll();\r
+        ruleMgtResources.deleteCorrelationRule(request, ruleDeleteRequest);\r
+        PowerMock.verifyAll();\r
+    }\r
+\r
+    @Test\r
+    public void deleteCorrelationRule_db_exception() throws Exception {\r
+        thrown.expect(WebApplicationException.class);\r
+\r
+        final RuleDeleteRequest ruleDeleteRequest = new RuleDeleteRequest();\r
+        ruleMgtWrapper.deleteCorrelationRule(ruleDeleteRequest);\r
+        EasyMock.expectLastCall().andThrow(new DbException(""));\r
+        EasyMock.expect(request.getHeader("language-option")).andReturn("en_US");\r
+        PowerMock.replayAll();\r
+        ruleMgtResources.deleteCorrelationRule(request, ruleDeleteRequest);\r
+        PowerMock.verifyAll();\r
+    }\r
+\r
+    @Test\r
+    public void deleteCorrelationRule_exception() throws Exception {\r
+        thrown.expect(WebApplicationException.class);\r
+\r
+        final RuleDeleteRequest ruleDeleteRequest = new RuleDeleteRequest();\r
+        ruleMgtWrapper.deleteCorrelationRule(ruleDeleteRequest);\r
+        EasyMock.expectLastCall().andThrow(new RuntimeException(""));\r
+        EasyMock.expect(request.getHeader("language-option")).andReturn("en_US");\r
+        PowerMock.replayAll();\r
+        ruleMgtResources.deleteCorrelationRule(request, ruleDeleteRequest);\r
+        PowerMock.verifyAll();\r
+    }\r
+\r
+    @Test\r
+    public void deleteCorrelationRule_normal() throws Exception {\r
+        final RuleDeleteRequest ruleDeleteRequest = new RuleDeleteRequest();\r
+        ruleMgtWrapper.deleteCorrelationRule(ruleDeleteRequest);\r
+        EasyMock.expectLastCall();\r
+        EasyMock.expect(request.getHeader("language-option")).andReturn("en_US");\r
+        PowerMock.replayAll();\r
+        ruleMgtResources.deleteCorrelationRule(request, ruleDeleteRequest);\r
+        PowerMock.verifyAll();\r
+    }\r
+\r
+    @Test\r
+    public void getCorrelationRules_data_format_exception() throws Exception {\r
+        thrown.expect(WebApplicationException.class);\r
+\r
+        final String requestStr = "{\"ruleid\":\"rule_001\",\"rulename\":\"Rule-001\","\r
+                + "\"enabled\":0,\"creator\":\"admin\"}";\r
+        EasyMock.expect(ruleMgtWrapper.getCorrelationRuleByCondition(EasyMock.anyObject(RuleQueryCondition.class)))\r
+                .andThrow(new DataFormatException(""));\r
+        EasyMock.expect(request.getHeader("language-option")).andReturn("en_US").times(2);\r
+        PowerMock.replayAll();\r
+        ruleMgtResources.getCorrelationRules(request, requestStr);\r
+        PowerMock.verifyAll();\r
+    }\r
+\r
+    @Test\r
+    public void getCorrelationRules_db_exception() throws Exception {\r
+        thrown.expect(WebApplicationException.class);\r
+\r
+        final String requestStr = "{\"ruleid\":\"rule_001\",\"rulename\":\"Rule-001\","\r
+                + "\"enabled\":0,\"creator\":\"admin\"}";\r
+        EasyMock.expect(ruleMgtWrapper.getCorrelationRuleByCondition(EasyMock.anyObject(RuleQueryCondition.class)))\r
+                .andThrow(new DbException(""));\r
+        EasyMock.expect(request.getHeader("language-option")).andReturn("en_US").times(2);\r
+        PowerMock.replayAll();\r
+        ruleMgtResources.getCorrelationRules(request, requestStr);\r
+        PowerMock.verifyAll();\r
+    }\r
+\r
+    @Test\r
+    public void getCorrelationRules_exception() throws Exception {\r
+        thrown.expect(WebApplicationException.class);\r
+\r
+        final String requestStr = "{\"ruleid\":\"rule_001\",\"rulename\":\"Rule-001\","\r
+                + "\"enabled\":0,\"creator\":\"admin\"}";\r
+        EasyMock.expect(ruleMgtWrapper.getCorrelationRuleByCondition(EasyMock.anyObject(RuleQueryCondition.class)))\r
+                .andThrow(new RuntimeException(""));\r
+        EasyMock.expect(request.getHeader("language-option")).andReturn("en_US").times(2);\r
+        PowerMock.replayAll();\r
+        ruleMgtResources.getCorrelationRules(request, requestStr);\r
+        PowerMock.verifyAll();\r
+    }\r
+\r
+\r
+    @Test\r
+    public void getCorrelationRules_normal_request_string_null() throws Exception {\r
+        EasyMock.expect(ruleMgtWrapper.getCorrelationRuleByCondition(EasyMock.anyObject(RuleQueryCondition.class)))\r
+                .andReturn(new RuleQueryListResponse());\r
+        EasyMock.expect(request.getHeader("language-option")).andReturn("en_US").times(2);\r
+        PowerMock.replayAll();\r
+        ruleMgtResources.getCorrelationRules(request, null);\r
+        PowerMock.verifyAll();\r
+    }\r
+\r
+    @Test\r
+    public void getCorrelationRules_normal_request_string_enabled_missing() throws Exception {\r
+        final String requestStr = "{\"ruleid\":\"rule_001\",\"rulename\":\"Rule-001\","\r
+                + "\"creator\":\"admin\"}";\r
+        EasyMock.expect(ruleMgtWrapper.getCorrelationRuleByCondition(EasyMock.anyObject(RuleQueryCondition.class)))\r
+                .andReturn(new RuleQueryListResponse());\r
+        EasyMock.expect(request.getHeader("language-option")).andReturn("en_US").times(2);\r
+        PowerMock.replayAll();\r
+        ruleMgtResources.getCorrelationRules(request, requestStr);\r
+        PowerMock.verifyAll();\r
+    }\r
+}
\ No newline at end of file
diff --git a/rulemgt/src/test/java/org/openo/holmes/rulemgt/wrapper/RuleMgtWrapperTest.java b/rulemgt/src/test/java/org/openo/holmes/rulemgt/wrapper/RuleMgtWrapperTest.java
new file mode 100644 (file)
index 0000000..41cb494
--- /dev/null
@@ -0,0 +1,702 @@
+/**\r
+ * Copyright 2017 ZTE Corporation.\r
+ *\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *      http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+package org.openo.holmes.rulemgt.wrapper;\r
+\r
+import static org.hamcrest.MatcherAssert.assertThat;\r
+import static org.hamcrest.Matchers.equalTo;\r
+import static org.hamcrest.Matchers.is;\r
+\r
+\r
+import java.util.ArrayList;\r
+import java.util.Date;\r
+import java.util.List;\r
+import org.easymock.EasyMock;\r
+import org.junit.Before;\r
+import org.junit.Rule;\r
+import org.junit.Test;\r
+import org.junit.rules.ExpectedException;\r
+import org.junit.runner.RunWith;\r
+import org.openo.holmes.common.api.entity.CorrelationRule;\r
+import org.openo.holmes.common.exception.CallException;\r
+import org.openo.holmes.common.exception.DataFormatException;\r
+import org.openo.holmes.common.exception.DbException;\r
+import org.openo.holmes.common.utils.DbDaoUtil;\r
+import org.openo.holmes.common.utils.I18nProxy;\r
+import org.openo.holmes.rulemgt.bean.request.CorrelationCheckRule4Engine;\r
+import org.openo.holmes.rulemgt.bean.request.CorrelationDeployRule4Engine;\r
+import org.openo.holmes.rulemgt.bean.request.RuleCreateRequest;\r
+import org.openo.holmes.rulemgt.bean.request.RuleDeleteRequest;\r
+import org.openo.holmes.rulemgt.bean.request.RuleQueryCondition;\r
+import org.openo.holmes.rulemgt.bean.request.RuleUpdateRequest;\r
+import org.openo.holmes.rulemgt.bean.response.RuleAddAndUpdateResponse;\r
+import org.openo.holmes.rulemgt.bean.response.RuleQueryListResponse;\r
+import org.openo.holmes.rulemgt.bolt.enginebolt.EngineWrapper;\r
+import org.openo.holmes.rulemgt.db.CorrelationRuleDao;\r
+import org.openo.holmes.rulemgt.db.CorrelationRuleQueryDao;\r
+import org.powermock.api.easymock.PowerMock;\r
+import org.powermock.core.classloader.annotations.SuppressStaticInitializationFor;\r
+import org.powermock.modules.junit4.PowerMockRunner;\r
+import org.powermock.reflect.Whitebox;\r
+\r
+@RunWith(PowerMockRunner.class)\r
+@SuppressStaticInitializationFor("org.openo.holmes.common.utils.DbDaoUtil")\r
+public class RuleMgtWrapperTest {\r
+\r
+    @Rule\r
+    public ExpectedException thrown = ExpectedException.none();\r
+\r
+    private RuleMgtWrapper ruleMgtWrapper;\r
+\r
+    private EngineWrapper engineWrapperMock;\r
+\r
+    private DbDaoUtil dbDaoUtilMock;\r
+\r
+    private CorrelationRuleQueryDao correlationRuleQueryDaoMock;\r
+\r
+    private CorrelationRuleDao correlationRuleDaoMock;\r
+\r
+    private static final String USER_NAME = "admin";\r
+\r
+    @Before\r
+    public void setUp() throws Exception {\r
+\r
+        ruleMgtWrapper = new RuleMgtWrapper();\r
+\r
+        engineWrapperMock = PowerMock.createMock(EngineWrapper.class);\r
+        correlationRuleQueryDaoMock = PowerMock.createMock(CorrelationRuleQueryDao.class);\r
+        dbDaoUtilMock = PowerMock.createMock(DbDaoUtil.class);\r
+        correlationRuleDaoMock = PowerMock.createMock(CorrelationRuleDao.class);\r
+\r
+        Whitebox.setInternalState(ruleMgtWrapper, "daoUtil", dbDaoUtilMock);\r
+        Whitebox.setInternalState(ruleMgtWrapper, "correlationRuleQueryDao", correlationRuleQueryDaoMock);\r
+        Whitebox.setInternalState(ruleMgtWrapper, "engineWarpper", engineWrapperMock);\r
+\r
+        PowerMock.resetAll();\r
+    }\r
+\r
+    @Test\r
+    public void addCorrelationRule_name_is_null() throws Exception {\r
+        thrown.expect(DbException.class);\r
+        thrown.expectMessage(I18nProxy.RULE_MANAGEMENT_RULE_NAME_IS_EMPTY);\r
+\r
+        ruleMgtWrapper.addCorrelationRule(USER_NAME, createRuleCreateRequest(null, "This is a rule for testing.",\r
+                "Mocked contents.", 0));\r
+    }\r
+\r
+    @Test\r
+    public void addCorrelationRule_name_is_empty() throws Exception {\r
+        thrown.expect(DbException.class);\r
+        thrown.expectMessage(I18nProxy.RULE_MANAGEMENT_RULE_NAME_IS_EMPTY);\r
+\r
+        ruleMgtWrapper.addCorrelationRule("admin", createRuleCreateRequest("", "This is a rule for testing.",\r
+                "Mocked contents.", 0));\r
+    }\r
+\r
+    @Test\r
+    public void addCorrelationRule_duplicated_rule() throws Exception {\r
+\r
+        final String ruleName = "Rule-001";\r
+\r
+        RuleCreateRequest ruleCreateRequest = createRuleCreateRequest(ruleName, "This is a rule for testing.",\r
+                "Mocked contents.", 0);\r
+        CorrelationRule correlationRule = convertCreateRequest2CorrelationRule(ruleCreateRequest);\r
+\r
+        thrown.expect(DbException.class);\r
+        thrown.expectMessage(I18nProxy.RULE_MANAGEMENT_REPEAT_RULE_NAME);\r
+\r
+        EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(\r
+                correlationRuleDaoMock);\r
+        EasyMock.expect(correlationRuleDaoMock.queryRuleByRuleName(ruleName)).andReturn(correlationRule);\r
+\r
+        PowerMock.replayAll();\r
+\r
+        ruleMgtWrapper.addCorrelationRule("admin", ruleCreateRequest);\r
+\r
+        PowerMock.verifyAll();\r
+    }\r
+\r
+    @Test\r
+    public void addCorrelationRule_rule_deploy_verify_failure() throws Exception {\r
+\r
+        final String ruleName = "Rule-001";\r
+\r
+        RuleCreateRequest ruleCreateRequest = createRuleCreateRequest(ruleName, "This is a rule for testing.",\r
+                "Mocked contents.", 0);\r
+\r
+        thrown.expect(CallException.class);\r
+        thrown.expectMessage(I18nProxy.RULE_MANAGEMENT__CALL_CHECK_RULE_REST_FAILED);\r
+\r
+        EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(\r
+                correlationRuleDaoMock);\r
+        EasyMock.expect(correlationRuleDaoMock.queryRuleByRuleName(ruleName)).andReturn(null);\r
+        EasyMock.expect(engineWrapperMock.checkRuleFromEngine(EasyMock.anyObject(CorrelationCheckRule4Engine.class)))\r
+                .andThrow(new CallException(I18nProxy.RULE_MANAGEMENT__CALL_CHECK_RULE_REST_FAILED));\r
+\r
+        PowerMock.replayAll();\r
+\r
+        ruleMgtWrapper.addCorrelationRule("admin", ruleCreateRequest);\r
+\r
+        PowerMock.verifyAll();\r
+    }\r
+\r
+    @Test\r
+    public void addCorrelationRule_rule_deploy_rule_enabled_failure() throws Exception {\r
+\r
+        final String ruleName = "Rule-001";\r
+\r
+        RuleCreateRequest ruleCreateRequest = createRuleCreateRequest(ruleName, "This is a rule for testing.",\r
+                "Mocked contents.", 1);\r
+\r
+        thrown.expect(CallException.class);\r
+        thrown.expectMessage(I18nProxy.RULE_MANAGEMENT_CALL_DEPLOY_RULE_REST_FAILED);\r
+\r
+        EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(\r
+                correlationRuleDaoMock);\r
+        EasyMock.expect(correlationRuleDaoMock.queryRuleByRuleName(ruleName)).andReturn(null);\r
+        EasyMock.expect(engineWrapperMock.checkRuleFromEngine(EasyMock.anyObject(CorrelationCheckRule4Engine.class)))\r
+                .andReturn(true);\r
+        EasyMock.expect(engineWrapperMock.deployEngine(EasyMock.anyObject(CorrelationDeployRule4Engine.class)))\r
+                .andThrow(new CallException(I18nProxy.RULE_MANAGEMENT_CALL_DEPLOY_RULE_REST_FAILED));\r
+\r
+        PowerMock.replayAll();\r
+\r
+        ruleMgtWrapper.addCorrelationRule("admin", ruleCreateRequest);\r
+\r
+        PowerMock.verifyAll();\r
+    }\r
+\r
+    @Test\r
+    public void addCorrelationRule_rule_save_failure() throws Exception {\r
+        final String ruleName = "Rule-001";\r
+\r
+        RuleCreateRequest ruleCreateRequest = createRuleCreateRequest(ruleName, "This is a rule for testing.",\r
+                "Mocked contents.", 1);\r
+\r
+        thrown.expect(DbException.class);\r
+        thrown.expectMessage(I18nProxy.RULE_MANAGEMENT_CREATE_RULE_FAILED);\r
+\r
+        EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(\r
+                correlationRuleDaoMock).times(2);\r
+        EasyMock.expect(correlationRuleDaoMock.queryRuleByRuleName(ruleName)).andReturn(null);\r
+        EasyMock.expect(engineWrapperMock.checkRuleFromEngine(EasyMock.anyObject(CorrelationCheckRule4Engine.class)))\r
+                .andReturn(true);\r
+        EasyMock.expect(engineWrapperMock.deployEngine(EasyMock.anyObject(CorrelationDeployRule4Engine.class)))\r
+                .andReturn("package-001");\r
+        EasyMock.expect(correlationRuleDaoMock.saveRule(EasyMock.anyObject(CorrelationRule.class)))\r
+                .andThrow(new RuntimeException("any message"));\r
+\r
+        PowerMock.replayAll();\r
+\r
+        ruleMgtWrapper.addCorrelationRule("admin", ruleCreateRequest);\r
+\r
+        PowerMock.verifyAll();\r
+    }\r
+\r
+    @Test\r
+    public void addCorrelationRule_normal() throws Exception {\r
+        final String ruleName = "Rule-001";\r
+\r
+        RuleCreateRequest ruleCreateRequest = createRuleCreateRequest(ruleName, "This is a rule for testing.",\r
+                "Mocked contents.", 1);\r
+\r
+        CorrelationRule correlationRuleRet = new CorrelationRule();\r
+        correlationRuleRet.setRid("rule_" + System.currentTimeMillis());\r
+\r
+        EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(\r
+                correlationRuleDaoMock).times(2);\r
+        EasyMock.expect(correlationRuleDaoMock.queryRuleByRuleName(ruleName)).andReturn(null);\r
+        EasyMock.expect(engineWrapperMock.checkRuleFromEngine(EasyMock.anyObject(CorrelationCheckRule4Engine.class)))\r
+                .andReturn(true);\r
+        EasyMock.expect(engineWrapperMock.deployEngine(EasyMock.anyObject(CorrelationDeployRule4Engine.class)))\r
+                .andReturn("package-001");\r
+        EasyMock.expect(correlationRuleDaoMock.saveRule(EasyMock.anyObject(CorrelationRule.class)))\r
+                .andReturn(correlationRuleRet);\r
+\r
+        PowerMock.replayAll();\r
+\r
+        RuleAddAndUpdateResponse response = ruleMgtWrapper.addCorrelationRule("admin", ruleCreateRequest);\r
+        assertThat(response.getRuleId(), equalTo(correlationRuleRet.getRid()));\r
+\r
+        PowerMock.verifyAll();\r
+    }\r
+\r
+    @Test\r
+    public void updateCorrelationRule_param_null() throws Exception {\r
+        thrown.expect(DataFormatException.class);\r
+        thrown.expectMessage(I18nProxy.RULE_MANAGEMENT_REQUEST_OBJECT_IS_EMPTY);\r
+\r
+        ruleMgtWrapper.updateCorrelationRule(USER_NAME, null);\r
+    }\r
+\r
+    @Test\r
+    public void updateCorrelationRule_rule_not_exist() throws Exception {\r
+        thrown.expect(DbException.class);\r
+        thrown.expectMessage(I18nProxy.RULE_MANAGEMENT_RULE_NOT_EXIST_DATABASE);\r
+\r
+        EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(\r
+                correlationRuleDaoMock);\r
+        EasyMock.expect(correlationRuleDaoMock.getRuleByRid(EasyMock.anyObject(String.class))).andReturn(null);\r
+\r
+        PowerMock.replayAll();\r
+\r
+        ruleMgtWrapper.updateCorrelationRule(USER_NAME, new RuleUpdateRequest());\r
+\r
+        PowerMock.verifyAll();\r
+    }\r
+\r
+    @Test\r
+    public void updateCorrelationRule_rule_status_illegal_with_contents() throws Exception {\r
+        thrown.expect(DataFormatException.class);\r
+        thrown.expectMessage(I18nProxy.RULE_MANAGEMENT_PARAMETER_ENABLED_ERROR);\r
+\r
+        RuleUpdateRequest ruleUpdateRequest = createRuleUpdateRequest("rule_" + System.currentTimeMillis(),\r
+                "desc", "contents", 3);\r
+        CorrelationRule correlationRule = convertUpdateRequest2CorrelationRule(ruleUpdateRequest);\r
+        correlationRule.setContent("previous contents");\r
+\r
+        EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(\r
+                correlationRuleDaoMock);\r
+        EasyMock.expect(correlationRuleDaoMock.getRuleByRid(EasyMock.anyObject(String.class)))\r
+                .andReturn(correlationRule);\r
+\r
+        PowerMock.replayAll();\r
+\r
+        ruleMgtWrapper.updateCorrelationRule(USER_NAME, ruleUpdateRequest);\r
+\r
+        PowerMock.verifyAll();\r
+    }\r
+\r
+    @Test\r
+    public void updateCorrelationRule_rule_status_illegal_with_null_contents() throws Exception {\r
+        thrown.expect(DataFormatException.class);\r
+        thrown.expectMessage(I18nProxy.RULE_MANAGEMENT_PARAMETER_ENABLED_ERROR);\r
+\r
+        RuleUpdateRequest ruleUpdateRequest = createRuleUpdateRequest("rule_" + System.currentTimeMillis(),\r
+                "desc", null, 3);\r
+        CorrelationRule correlationRule = convertUpdateRequest2CorrelationRule(ruleUpdateRequest);\r
+        correlationRule.setContent("previous contents");\r
+\r
+        EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(\r
+                correlationRuleDaoMock);\r
+        EasyMock.expect(correlationRuleDaoMock.getRuleByRid(EasyMock.anyObject(String.class)))\r
+                .andReturn(correlationRule);\r
+\r
+        PowerMock.replayAll();\r
+\r
+        ruleMgtWrapper.updateCorrelationRule(USER_NAME, ruleUpdateRequest);\r
+\r
+        PowerMock.verifyAll();\r
+    }\r
+\r
+    @Test\r
+    public void updateCorrelationRule_rule_disabled_update_failure() throws Exception {\r
+        thrown.expect(DbException.class);\r
+        thrown.expectMessage(I18nProxy.RULE_MANAGEMENT_UPDATE_RULE_FAILED);\r
+\r
+        RuleUpdateRequest ruleUpdateRequest = createRuleUpdateRequest("rule_" + System.currentTimeMillis(),\r
+                "desc", "contents", 0);\r
+        CorrelationRule correlationRuleOld = convertUpdateRequest2CorrelationRule(ruleUpdateRequest);\r
+        correlationRuleOld.setContent("previous contents");\r
+\r
+        EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(\r
+                correlationRuleDaoMock).anyTimes();\r
+        EasyMock.expect(correlationRuleDaoMock.getRuleByRid(EasyMock.anyObject(String.class)))\r
+                .andReturn(correlationRuleOld);\r
+        correlationRuleDaoMock.updateRule(EasyMock.anyObject(CorrelationRule.class));\r
+        EasyMock.expectLastCall().andThrow(new RuntimeException("Failed to update the rule."));\r
+\r
+        PowerMock.replayAll();\r
+\r
+        ruleMgtWrapper.updateCorrelationRule(USER_NAME, ruleUpdateRequest);\r
+\r
+        PowerMock.verifyAll();\r
+    }\r
+\r
+    @Test\r
+    public void updateCorrelationRule_rule_disabled_deploy_verify_exception() throws Exception {\r
+        thrown.expect(CallException.class);\r
+        thrown.expectMessage(I18nProxy.RULE_MANAGEMENT__CALL_CHECK_RULE_REST_FAILED);\r
+\r
+        RuleUpdateRequest ruleUpdateRequest = createRuleUpdateRequest("rule_" + System.currentTimeMillis(),\r
+                "desc", null, 0);\r
+        CorrelationRule correlationRuleOld = convertUpdateRequest2CorrelationRule(ruleUpdateRequest);\r
+        correlationRuleOld.setContent("previous contents");\r
+\r
+        EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(\r
+                correlationRuleDaoMock).anyTimes();\r
+        EasyMock.expect(correlationRuleDaoMock.getRuleByRid(EasyMock.anyObject(String.class)))\r
+                .andReturn(correlationRuleOld);\r
+        correlationRuleDaoMock.updateRule(EasyMock.anyObject(CorrelationRule.class));\r
+        EasyMock.expectLastCall();\r
+        EasyMock.expect(engineWrapperMock.checkRuleFromEngine(EasyMock.anyObject(CorrelationCheckRule4Engine.class)))\r
+                .andThrow(new CallException(I18nProxy.RULE_MANAGEMENT__CALL_CHECK_RULE_REST_FAILED));\r
+\r
+        PowerMock.replayAll();\r
+\r
+        ruleMgtWrapper.updateCorrelationRule(USER_NAME, ruleUpdateRequest);\r
+\r
+        PowerMock.verifyAll();\r
+    }\r
+\r
+    @Test\r
+    public void updateCorrelationRule_rule_disabled_deploy_verify_false() throws Exception {\r
+\r
+        RuleUpdateRequest ruleUpdateRequest = createRuleUpdateRequest("rule_" + System.currentTimeMillis(),\r
+                "desc", null, 0);\r
+        CorrelationRule correlationRuleOld = convertUpdateRequest2CorrelationRule(ruleUpdateRequest);\r
+        correlationRuleOld.setContent("previous contents");\r
+\r
+        EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(\r
+                correlationRuleDaoMock).anyTimes();\r
+        EasyMock.expect(correlationRuleDaoMock.getRuleByRid(EasyMock.anyObject(String.class)))\r
+                .andReturn(correlationRuleOld);\r
+        correlationRuleDaoMock.updateRule(EasyMock.anyObject(CorrelationRule.class));\r
+        EasyMock.expectLastCall();\r
+        EasyMock.expect(engineWrapperMock.checkRuleFromEngine(EasyMock.anyObject(CorrelationCheckRule4Engine.class)))\r
+                .andReturn(false);\r
+\r
+        PowerMock.replayAll();\r
+\r
+        RuleAddAndUpdateResponse response = ruleMgtWrapper.updateCorrelationRule(USER_NAME, ruleUpdateRequest);\r
+\r
+        assertThat(response.getRuleId(), equalTo(ruleUpdateRequest.getRuleId()));\r
+\r
+        PowerMock.verifyAll();\r
+    }\r
+\r
+    @Test\r
+    public void updateCorrelationRule_rule_enabled_engine_delete_failure() throws Exception {\r
+        thrown.expect(DbException.class);\r
+        thrown.expectMessage(I18nProxy.RULE_MANAGEMENT_UPDATE_RULE_FAILED);\r
+\r
+        RuleUpdateRequest ruleUpdateRequest = createRuleUpdateRequest("rule_" + System.currentTimeMillis(),\r
+                "desc", null, 1);\r
+        CorrelationRule correlationRuleOld = convertUpdateRequest2CorrelationRule(ruleUpdateRequest);\r
+        correlationRuleOld.setContent("previous contents");\r
+\r
+        EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(\r
+                correlationRuleDaoMock).anyTimes();\r
+        EasyMock.expect(correlationRuleDaoMock.getRuleByRid(EasyMock.anyObject(String.class)))\r
+                .andReturn(correlationRuleOld);\r
+        engineWrapperMock.deleteRuleFromEngine(correlationRuleOld.getPackageName());\r
+        EasyMock.expectLastCall().andThrow(new RuntimeException("Failed to delete the rule from the engine."));\r
+\r
+        PowerMock.replayAll();\r
+\r
+        ruleMgtWrapper.updateCorrelationRule(USER_NAME, ruleUpdateRequest);\r
+\r
+        PowerMock.verifyAll();\r
+    }\r
+\r
+    @Test\r
+    public void updateCorrelationRule_rule_enabled_engine_deploy_failure() throws Exception {\r
+        thrown.expect(CallException.class);\r
+        thrown.expectMessage(I18nProxy.RULE_MANAGEMENT_CALL_DEPLOY_RULE_REST_FAILED);\r
+\r
+        RuleUpdateRequest ruleUpdateRequest = createRuleUpdateRequest("rule_" + System.currentTimeMillis(),\r
+                "desc", null, 1);\r
+        CorrelationRule correlationRuleOld = convertUpdateRequest2CorrelationRule(ruleUpdateRequest);\r
+        correlationRuleOld.setContent("previous contents");\r
+\r
+        EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(\r
+                correlationRuleDaoMock).anyTimes();\r
+        EasyMock.expect(correlationRuleDaoMock.getRuleByRid(EasyMock.anyObject(String.class)))\r
+                .andReturn(correlationRuleOld);\r
+        EasyMock.expect(engineWrapperMock.deleteRuleFromEngine(correlationRuleOld.getPackageName())).andReturn(true);\r
+        correlationRuleDaoMock.updateRule(EasyMock.anyObject(CorrelationRule.class));\r
+        EasyMock.expectLastCall();\r
+        EasyMock.expect(engineWrapperMock.checkRuleFromEngine(EasyMock.anyObject(CorrelationCheckRule4Engine.class)))\r
+                .andReturn(true);\r
+        EasyMock.expect(engineWrapperMock.deployEngine(EasyMock.anyObject(CorrelationDeployRule4Engine.class)))\r
+                .andThrow(new CallException(I18nProxy.RULE_MANAGEMENT_CALL_DEPLOY_RULE_REST_FAILED));\r
+\r
+        PowerMock.replayAll();\r
+\r
+        ruleMgtWrapper.updateCorrelationRule(USER_NAME, ruleUpdateRequest);\r
+\r
+        PowerMock.verifyAll();\r
+    }\r
+\r
+    @Test\r
+    public void updateCorrelationRule_rule_enabled_deploy_rule_enabled() throws Exception {\r
+\r
+        RuleUpdateRequest ruleUpdateRequest = createRuleUpdateRequest("rule_" + System.currentTimeMillis(),\r
+                "desc", null, 1);\r
+        CorrelationRule correlationRuleOld = convertUpdateRequest2CorrelationRule(ruleUpdateRequest);\r
+        correlationRuleOld.setContent("previous contents");\r
+\r
+        EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(\r
+                correlationRuleDaoMock).anyTimes();\r
+        EasyMock.expect(correlationRuleDaoMock.getRuleByRid(EasyMock.anyObject(String.class)))\r
+                .andReturn(correlationRuleOld);\r
+        EasyMock.expect(engineWrapperMock.deleteRuleFromEngine(correlationRuleOld.getPackageName())).andReturn(true);\r
+        correlationRuleDaoMock.updateRule(EasyMock.anyObject(CorrelationRule.class));\r
+        EasyMock.expectLastCall();\r
+        EasyMock.expect(engineWrapperMock.checkRuleFromEngine(EasyMock.anyObject(CorrelationCheckRule4Engine.class)))\r
+                .andReturn(true);\r
+        EasyMock.expect(engineWrapperMock.deployEngine(EasyMock.anyObject(CorrelationDeployRule4Engine.class)))\r
+                .andReturn("package-name");\r
+\r
+        PowerMock.replayAll();\r
+\r
+        RuleAddAndUpdateResponse response = ruleMgtWrapper.updateCorrelationRule(USER_NAME, ruleUpdateRequest);\r
+\r
+        assertThat(response.getRuleId(), equalTo(ruleUpdateRequest.getRuleId()));\r
+\r
+        PowerMock.verifyAll();\r
+    }\r
+\r
+    @Test\r
+    public void checkCorrelation_content_null() throws Exception {\r
+        RuleUpdateRequest ruleCreateRequest = createRuleUpdateRequest("rule_" + System.currentTimeMillis(),\r
+                "desc", null, 0);\r
+        CorrelationRule correlationRuleOld = convertUpdateRequest2CorrelationRule(ruleCreateRequest);\r
+        CorrelationRule correlationRuleNew = convertUpdateRequest2CorrelationRule(ruleCreateRequest);\r
+        correlationRuleOld.setContent("previous contents");\r
+\r
+        ruleMgtWrapper.checkCorrelation(correlationRuleNew, correlationRuleOld);\r
+\r
+        assertThat(correlationRuleNew.getContent(), equalTo(correlationRuleOld.getContent()));\r
+    }\r
+\r
+    @Test\r
+    public void checkCorrelation_illegal_status() throws Exception {\r
+        thrown.expect(DataFormatException.class);\r
+        thrown.expectMessage(I18nProxy.RULE_MANAGEMENT_PARAMETER_ENABLED_ERROR);\r
+\r
+        RuleUpdateRequest ruleCreateRequest = createRuleUpdateRequest("rule_" + System.currentTimeMillis(),\r
+                "desc", null, 2);\r
+        CorrelationRule correlationRuleOld = convertUpdateRequest2CorrelationRule(ruleCreateRequest);\r
+        CorrelationRule correlationRuleNew = convertUpdateRequest2CorrelationRule(ruleCreateRequest);\r
+        correlationRuleOld.setContent("previous contents");\r
+\r
+        ruleMgtWrapper.checkCorrelation(correlationRuleNew, correlationRuleOld);\r
+    }\r
+\r
+\r
+    @Test\r
+    public void deleteCorrelationRule_request_null() throws Exception {\r
+        thrown.expect(DataFormatException.class);\r
+        thrown.expectMessage((I18nProxy.RULE_MANAGEMENT_REQUEST_OBJECT_IS_EMPTY));\r
+\r
+        ruleMgtWrapper.deleteCorrelationRule(null);\r
+    }\r
+\r
+    @Test\r
+    public void deleteCorrelationRule_rule_not_exit() throws Exception {\r
+        thrown.expect(DbException.class);\r
+        thrown.expectMessage((I18nProxy.RULE_MANAGEMENT_RULE_NOT_EXIST_DATABASE));\r
+\r
+        RuleDeleteRequest ruleDeleteRequest = createRuleDeleteRequest("rule_" + System.currentTimeMillis());\r
+\r
+        EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(\r
+                correlationRuleDaoMock).anyTimes();\r
+        EasyMock.expect(correlationRuleDaoMock.getRuleByRid(ruleDeleteRequest.getRuleId()))\r
+                .andReturn(null);\r
+\r
+        PowerMock.replayAll();\r
+\r
+        ruleMgtWrapper.deleteCorrelationRule(ruleDeleteRequest);\r
+\r
+        PowerMock.verifyAll();\r
+    }\r
+\r
+    @Test\r
+    public void deleteCorrelationRule_rule_enabled_engine_delete_exception() throws Exception {\r
+        thrown.expect(DbException.class);\r
+        thrown.expectMessage((I18nProxy.RULE_MANAGEMENT_DELETE_RULE_FAILED));\r
+\r
+        RuleDeleteRequest ruleDeleteRequest = createRuleDeleteRequest("rule_" + System.currentTimeMillis());\r
+        RuleUpdateRequest ruleCreateRequest = createRuleUpdateRequest("rule_" + System.currentTimeMillis(),\r
+                "desc", "contents", 1);\r
+        CorrelationRule correlationRule = convertUpdateRequest2CorrelationRule(ruleCreateRequest);\r
+\r
+        EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(\r
+                correlationRuleDaoMock).anyTimes();\r
+        EasyMock.expect(correlationRuleDaoMock.getRuleByRid(ruleDeleteRequest.getRuleId()))\r
+                .andReturn(correlationRule);\r
+        EasyMock.expect(engineWrapperMock.deleteRuleFromEngine(correlationRule.getPackageName()))\r
+                .andThrow(new RuntimeException("Failed to delete the rule from the engine"));\r
+\r
+        PowerMock.replayAll();\r
+\r
+        ruleMgtWrapper.deleteCorrelationRule(ruleDeleteRequest);\r
+\r
+        PowerMock.verifyAll();\r
+    }\r
+\r
+    @Test\r
+    public void deleteCorrelationRule_rule_disabled_delete_exception() throws Exception {\r
+        thrown.expect(DbException.class);\r
+        thrown.expectMessage((I18nProxy.RULE_MANAGEMENT_DELETE_RULE_FAILED));\r
+\r
+        RuleDeleteRequest ruleDeleteRequest = createRuleDeleteRequest("rule_" + System.currentTimeMillis());\r
+        RuleUpdateRequest ruleCreateRequest = createRuleUpdateRequest("rule_" + System.currentTimeMillis(),\r
+                "desc", "contents", 0);\r
+        CorrelationRule correlationRule = convertUpdateRequest2CorrelationRule(ruleCreateRequest);\r
+\r
+        EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(\r
+                correlationRuleDaoMock).anyTimes();\r
+        EasyMock.expect(correlationRuleDaoMock.getRuleByRid(ruleDeleteRequest.getRuleId()))\r
+                .andReturn(correlationRule);\r
+        correlationRuleDaoMock.deleteRule(correlationRule);\r
+        EasyMock.expectLastCall().andThrow(new RuntimeException("Failed to delete the rule from the DB"));\r
+\r
+        PowerMock.replayAll();\r
+\r
+        ruleMgtWrapper.deleteCorrelationRule(ruleDeleteRequest);\r
+\r
+        PowerMock.verifyAll();\r
+    }\r
+\r
+    @Test\r
+    public void deleteCorrelationRule_normal() throws Exception {\r
+        RuleDeleteRequest ruleDeleteRequest = createRuleDeleteRequest("rule_" + System.currentTimeMillis());\r
+        RuleUpdateRequest ruleCreateRequest = createRuleUpdateRequest("rule_" + System.currentTimeMillis(),\r
+                "desc", "contents", 1);\r
+        CorrelationRule correlationRule = convertUpdateRequest2CorrelationRule(ruleCreateRequest);\r
+\r
+        EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(\r
+                correlationRuleDaoMock).anyTimes();\r
+        EasyMock.expect(correlationRuleDaoMock.getRuleByRid(ruleDeleteRequest.getRuleId()))\r
+                .andReturn(correlationRule);\r
+        EasyMock.expect(engineWrapperMock.deleteRuleFromEngine(correlationRule.getPackageName())).andReturn(true);\r
+        correlationRuleDaoMock.deleteRule(correlationRule);\r
+        EasyMock.expectLastCall();\r
+\r
+        PowerMock.replayAll();\r
+\r
+        ruleMgtWrapper.deleteCorrelationRule(ruleDeleteRequest);\r
+\r
+        PowerMock.verifyAll();\r
+    }\r
+\r
+    @Test\r
+    public void getCorrelationRuleByCondition_data_format_exception() throws Exception {\r
+        thrown.expect(DataFormatException.class);\r
+        thrown.expectMessage((I18nProxy.RULE_MANAGEMENT_CREATE_QUERY_SQL_FAILED));\r
+\r
+        EasyMock.expect(correlationRuleQueryDaoMock.getCorrelationRulesByCondition(EasyMock.anyObject(\r
+                RuleQueryCondition.class)))\r
+                .andThrow(new DataFormatException(I18nProxy.RULE_MANAGEMENT_CREATE_QUERY_SQL_FAILED));\r
+\r
+        PowerMock.replay(correlationRuleQueryDaoMock, CorrelationRuleQueryDao.class);\r
+\r
+        ruleMgtWrapper.getCorrelationRuleByCondition(new RuleQueryCondition());\r
+\r
+        PowerMock.verify(correlationRuleQueryDaoMock, CorrelationRuleQueryDao.class);\r
+    }\r
+\r
+    @Test\r
+    public void getCorrelationRuleByCondition_db_exception() throws Exception {\r
+        thrown.expect(DbException.class);\r
+        thrown.expectMessage((I18nProxy.RULE_MANAGEMENT_QUERY_RULE_FAILED));\r
+\r
+        EasyMock.expect(correlationRuleQueryDaoMock.getCorrelationRulesByCondition(EasyMock.anyObject(\r
+                RuleQueryCondition.class)))\r
+                .andThrow(new DbException(I18nProxy.RULE_MANAGEMENT_QUERY_RULE_FAILED));\r
+\r
+        PowerMock.replay(correlationRuleQueryDaoMock, CorrelationRuleQueryDao.class);\r
+\r
+        ruleMgtWrapper.getCorrelationRuleByCondition(new RuleQueryCondition());\r
+\r
+        PowerMock.verify(correlationRuleQueryDaoMock, CorrelationRuleQueryDao.class);\r
+    }\r
+\r
+    @Test\r
+    public void getCorrelationRuleByCondition_normal() throws Exception {\r
+        List<CorrelationRule> correlationRuleList = new ArrayList<CorrelationRule>(10);\r
+        for (int i = 0; i < 10; ++i) {\r
+            CorrelationRule correlationRule = new CorrelationRule();\r
+            correlationRule.setContent("content" + i);\r
+            correlationRule.setName("name" + i);\r
+            correlationRule.setRid("rule_" + i);\r
+            correlationRule.setIsManual(i % 2);\r
+            correlationRule.setEngineType("engineType" + (i % 2 + 1));\r
+            correlationRule.setEngineId("engineId" + i);\r
+            correlationRule.setCreateTime(new Date());\r
+            correlationRule.setCreator(USER_NAME);\r
+            correlationRule.setDescription("description" + i);\r
+            correlationRule.setPackageName("package" + i);\r
+            correlationRuleList.add(correlationRule);\r
+        }\r
+\r
+        EasyMock.expect(correlationRuleQueryDaoMock.getCorrelationRulesByCondition(EasyMock.anyObject(\r
+                RuleQueryCondition.class))).andReturn(correlationRuleList);\r
+\r
+        PowerMock.replay(correlationRuleQueryDaoMock, CorrelationRuleQueryDao.class);\r
+\r
+        RuleQueryListResponse response = ruleMgtWrapper.getCorrelationRuleByCondition(new RuleQueryCondition());\r
+\r
+        PowerMock.verify(correlationRuleQueryDaoMock, CorrelationRuleQueryDao.class);\r
+\r
+        assertThat(response.getTotalCount(), is(10));\r
+\r
+        for (int i = 0; i < 10; ++i) {\r
+            assertThat(response.getCorrelationRules().get(i).getRuleId(),\r
+                    equalTo(correlationRuleList.get(i).getRid()));\r
+        }\r
+    }\r
+\r
+    private RuleCreateRequest createRuleCreateRequest(String ruleName, String description, String content,\r
+            int enabled) {\r
+        RuleCreateRequest rcr;\r
+        rcr = new RuleCreateRequest();\r
+        rcr.setRuleName(ruleName);\r
+        rcr.setDescription(description);\r
+        rcr.setContent(content);\r
+        rcr.setEnabled(enabled);\r
+        return rcr;\r
+    }\r
+\r
+    private RuleUpdateRequest createRuleUpdateRequest(String ruleId, String description, String content, int enabled) {\r
+        RuleUpdateRequest ruleUpdateRequest = new RuleUpdateRequest();\r
+        ruleUpdateRequest.setRuleId(ruleId);\r
+        ruleUpdateRequest.setDescription(description);\r
+        ruleUpdateRequest.setContent(content);\r
+        ruleUpdateRequest.setEnabled(enabled);\r
+        return ruleUpdateRequest;\r
+    }\r
+\r
+    private RuleDeleteRequest createRuleDeleteRequest(String ruleId) {\r
+        RuleDeleteRequest ruleDeleteRequest = new RuleDeleteRequest();\r
+        ruleDeleteRequest.setRuleId(ruleId);\r
+        return ruleDeleteRequest;\r
+    }\r
+\r
+    private CorrelationRule convertCreateRequest2CorrelationRule(RuleCreateRequest ruleCreateRequest) {\r
+        CorrelationRule correlationRule = new CorrelationRule();\r
+        correlationRule.setContent(ruleCreateRequest.getContent());\r
+        correlationRule.setDescription(ruleCreateRequest.getDescription());\r
+        correlationRule.setName(ruleCreateRequest.getRuleName());\r
+        correlationRule.setCreator(USER_NAME);\r
+        correlationRule.setModifier(USER_NAME);\r
+        correlationRule.setEnabled(ruleCreateRequest.getEnabled());\r
+        return correlationRule;\r
+    }\r
+\r
+    private CorrelationRule convertUpdateRequest2CorrelationRule(RuleUpdateRequest ruleUpdateRequest) {\r
+        CorrelationRule correlationRule = new CorrelationRule();\r
+        correlationRule.setRid(ruleUpdateRequest.getRuleId());\r
+        correlationRule.setContent(ruleUpdateRequest.getContent());\r
+        correlationRule.setDescription(ruleUpdateRequest.getDescription());\r
+        correlationRule.setEnabled(ruleUpdateRequest.getEnabled());\r
+        correlationRule.setUpdateTime(new Date());\r
+        correlationRule.setModifier(USER_NAME);\r
+        return correlationRule;\r
+    }\r
+}
\ No newline at end of file