package com.alibaba.druid.bvt.filter.wall; import java.util.Collection; import java.util.Map; import junit.framework.TestCase; import org.junit.Assert; import com.alibaba.druid.stat.DruidStatManagerFacade; import com.alibaba.druid.support.json.JSONUtils; import com.alibaba.druid.wall.WallContext; import com.alibaba.druid.wall.WallProvider; import com.alibaba.druid.wall.spi.MySqlWallProvider; public class WallStatTest_statMap extends TestCase { protected void setUp() throws Exception { WallContext.clearContext(); } protected void tearDown() throws Exception { WallContext.clearContext(); } @SuppressWarnings("unchecked") public void testMySql() throws Exception { WallProvider providerA = new MySqlWallProvider(); { String sql = "select * from t where len(fname1) = 1 OR 1 = 1"; Assert.assertFalse(providerA.checkValid(sql)); providerA.addViolationEffectRowCount(10); } WallProvider providerB = new MySqlWallProvider(); { String sql = "select * from t where len(fname2) = 2 OR 1 = 1"; Assert.assertFalse(providerB.checkValid(sql)); providerB.addViolationEffectRowCount(11); } WallProvider providerC = new MySqlWallProvider(); { String sql = "select * from t where len(fname2) = 2 OR 1 = 1"; Assert.assertFalse(providerC.checkValid(sql)); providerC.addViolationEffectRowCount(12); } Map<String, Object> statMapA = providerA.getStatsMap(); Map<String, Object> statMapB = providerB.getStatsMap(); Map<String, Object> statMapC = providerC.getStatsMap(); System.out.println(JSONUtils.toJSONString(statMapA)); System.out.println(JSONUtils.toJSONString(statMapB)); System.out.println(JSONUtils.toJSONString(statMapC)); Map<String, Object> statMapMerged = DruidStatManagerFacade.mergWallStat(statMapA, statMapB); System.out.println(JSONUtils.toJSONString(statMapMerged)); Assert.assertEquals(2L, statMapMerged.get("checkCount")); Assert.assertEquals(21L, statMapMerged.get("violationEffectRowCount")); Assert.assertEquals(2, ((Collection<Map<String, Object>>) statMapMerged.get("blackList")).size()); statMapMerged = DruidStatManagerFacade.mergWallStat(statMapMerged, statMapC); System.out.println(JSONUtils.toJSONString(statMapMerged)); Assert.assertEquals(2, ((Collection<Map<String, Object>>) statMapMerged.get("blackList")).size()); Assert.assertEquals(33L, statMapMerged.get("violationEffectRowCount")); } }