mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
add test case for DruidStatService
This commit is contained in:
@@ -15,6 +15,12 @@
|
||||
*/
|
||||
package com.alibaba.druid.bvt.stat;
|
||||
|
||||
import static org.hamcrest.CoreMatchers.equalTo;
|
||||
import static org.hamcrest.CoreMatchers.is;
|
||||
import static org.hamcrest.CoreMatchers.not;
|
||||
import static org.hamcrest.CoreMatchers.nullValue;
|
||||
import static org.junit.Assert.assertThat;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
@@ -24,8 +30,19 @@ import java.util.Map;
|
||||
import junit.framework.Assert;
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.support.ClassPathXmlApplicationContext;
|
||||
import org.springframework.mock.web.MockFilterChain;
|
||||
import org.springframework.mock.web.MockFilterConfig;
|
||||
import org.springframework.mock.web.MockHttpServletRequest;
|
||||
import org.springframework.mock.web.MockHttpServletResponse;
|
||||
import org.springframework.mock.web.MockHttpSession;
|
||||
import org.springframework.mock.web.MockServletContext;
|
||||
|
||||
import com.alibaba.druid.pool.DruidDataSource;
|
||||
import com.alibaba.druid.stat.DruidStatService;
|
||||
import com.alibaba.druid.stat.spring.UserService;
|
||||
import com.alibaba.druid.support.http.WebStatFilter;
|
||||
import com.alibaba.druid.support.json.JSONUtils;
|
||||
import com.alibaba.druid.util.JdbcUtils;
|
||||
|
||||
@@ -47,7 +64,6 @@ public class DruidStatServiceTest extends TestCase {
|
||||
JdbcUtils.close(dataSource);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public void test_statService_getSqlList() throws Exception {
|
||||
String sql = "select 1";
|
||||
Connection conn = dataSource.getConnection();
|
||||
@@ -73,34 +89,39 @@ public class DruidStatServiceTest extends TestCase {
|
||||
Assert.assertEquals(1, sqlStat.get("ExecuteCount"));
|
||||
Assert.assertEquals(1, sqlStat.get("FetchRowCount"));
|
||||
Assert.assertEquals(0, sqlStat.get("EffectedRowCount"));
|
||||
// DruidStatService is singleton, reset all for other testcase.
|
||||
DruidStatService.getInstance().service("/reset-all.json");
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
|
||||
public void test_statService_getSqlById() throws Exception {
|
||||
String sql = "select 1";
|
||||
Connection conn = dataSource.getConnection();
|
||||
|
||||
|
||||
PreparedStatement stmt = conn.prepareStatement(sql);
|
||||
ResultSet rs = stmt.executeQuery();
|
||||
rs.next();
|
||||
rs.close();
|
||||
stmt.close();
|
||||
|
||||
|
||||
conn.close();
|
||||
|
||||
String result = DruidStatService.getInstance().service("/sql-" + dataSource.getSqlStatMap().values().iterator().next().getId() + ".json");
|
||||
|
||||
String result = DruidStatService.getInstance().service("/sql-"
|
||||
+ dataSource.getSqlStatMap().values().iterator().next().getId()
|
||||
+ ".json");
|
||||
Map<String, Object> resultMap = (Map<String, Object>) JSONUtils.parse(result);
|
||||
|
||||
|
||||
Map<String, Object> sqlStat = (Map<String, Object>) resultMap.get("Content");
|
||||
|
||||
|
||||
Assert.assertEquals(0, sqlStat.get("RunningCount"));
|
||||
Assert.assertEquals(1, sqlStat.get("ExecuteCount"));
|
||||
Assert.assertEquals(1, sqlStat.get("FetchRowCount"));
|
||||
Assert.assertEquals(0, sqlStat.get("EffectedRowCount"));
|
||||
|
||||
|
||||
String result2 = DruidStatService.getInstance().service("/sql-" + Integer.MAX_VALUE + ".json");
|
||||
resultMap = (Map<String, Object>) JSONUtils.parse(result2);
|
||||
Assert.assertNull(resultMap.get("Content"));
|
||||
// DruidStatService is singleton, reset all for other testcase.
|
||||
DruidStatService.getInstance().service("/reset-all.json");
|
||||
}
|
||||
|
||||
public void test_statService_getDataSourceList() throws Exception {
|
||||
@@ -126,5 +147,399 @@ public class DruidStatServiceTest extends TestCase {
|
||||
|
||||
Assert.assertEquals(1, dataSourceStat.get("PoolingCount"));
|
||||
Assert.assertEquals(0, dataSourceStat.get("ActiveCount"));
|
||||
// DruidStatService is singleton, reset all for other testcase.
|
||||
DruidStatService.getInstance().service("/reset-all.json");
|
||||
}
|
||||
|
||||
public void test_statService_getDataSourceIdList() throws Exception {
|
||||
String sql = "select 1";
|
||||
Connection conn = dataSource.getConnection();
|
||||
|
||||
PreparedStatement stmt = conn.prepareStatement(sql);
|
||||
ResultSet rs = stmt.executeQuery();
|
||||
rs.next();
|
||||
rs.close();
|
||||
stmt.close();
|
||||
conn.close();
|
||||
|
||||
String result = DruidStatService.getInstance().service("/datasource.json");
|
||||
Map<String, Object> resultMap = (Map<String, Object>) JSONUtils.parse(result);
|
||||
List<Map<String, Object>> dataSourceList = (List<Map<String, Object>>) resultMap.get("Content");
|
||||
Map<String, Object> dataSourceStat = dataSourceList.get(0);
|
||||
assertThat(dataSourceStat, is(not(nullValue())));
|
||||
int id = (Integer) dataSourceStat.get("Identity");
|
||||
|
||||
String resultId = DruidStatService.getInstance().service("/datasource-" + id + ".json");
|
||||
Map<String, Object> resultIdMap = (Map<String, Object>) JSONUtils.parse(resultId);
|
||||
Map<String, Object> dataSourceIdStat = (Map<String, Object>) resultIdMap.get("Content");
|
||||
assertThat((Integer) dataSourceIdStat.get("PoolingCount"), equalTo(1));
|
||||
// DruidStatService is singleton, reset all for other testcase.
|
||||
DruidStatService.getInstance().service("/reset-all.json");
|
||||
}
|
||||
|
||||
/**
|
||||
* Test basic.json request
|
||||
*
|
||||
* @throws Exception
|
||||
*/
|
||||
public void test_statService_getBasic() throws Exception {
|
||||
String result = DruidStatService.getInstance().service("/basic.json");
|
||||
Map<String, Object> resultMap = (Map<String, Object>) JSONUtils.parse(result);
|
||||
Map<String, Object> contentMap = (Map<String, Object>) resultMap.get("Content");
|
||||
|
||||
assertThat(contentMap.get("Version"), is(not(nullValue())));
|
||||
assertThat(contentMap.get("Drivers"), is(not(nullValue())));
|
||||
assertThat((Boolean) contentMap.get("ResetEnable"), is(true));
|
||||
// DruidStatService is singleton, reset all for other testcase.
|
||||
DruidStatService.getInstance().service("/reset-all.json");
|
||||
}
|
||||
|
||||
public void test_statService_getActiveConnectionStackTrace() throws Exception {
|
||||
String sql = "select 1";
|
||||
dataSource.setRemoveAbandoned(true);// initiative close connection.
|
||||
dataSource.setRemoveAbandonedTimeout(Integer.MAX_VALUE);
|
||||
Connection conn = dataSource.getConnection();
|
||||
|
||||
PreparedStatement stmt = conn.prepareStatement(sql);
|
||||
ResultSet rs = stmt.executeQuery();
|
||||
rs.next();
|
||||
rs.close();
|
||||
|
||||
String result = DruidStatService.getInstance().service("/activeConnectionStackTrace.json");
|
||||
Map<String, Object> resultMap = (Map<String, Object>) JSONUtils.parse(result);
|
||||
List<String> contentList = (List<String>) resultMap.get("Content");
|
||||
|
||||
assertThat(contentList.get(0), is(not(nullValue())));
|
||||
// close connection at last.
|
||||
stmt.close();
|
||||
conn.close();
|
||||
// DruidStatService is singleton, reset all for other testcase.
|
||||
DruidStatService.getInstance().service("/reset-all.json");
|
||||
}
|
||||
|
||||
public void test_statService_getActiveConnectionStackTraceId() throws Exception {
|
||||
String sql = "select 1";
|
||||
dataSource.setRemoveAbandoned(true);
|
||||
dataSource.setRemoveAbandonedTimeout(Integer.MAX_VALUE);
|
||||
Connection conn = dataSource.getConnection();
|
||||
|
||||
PreparedStatement stmt = conn.prepareStatement(sql);
|
||||
ResultSet rs = stmt.executeQuery();
|
||||
rs.next();
|
||||
rs.close();
|
||||
// get data source.
|
||||
String dsResult = DruidStatService.getInstance().service("/datasource.json");
|
||||
Map<String, Object> dsResultMap = (Map<String, Object>) JSONUtils.parse(dsResult);
|
||||
List<Map<String, Object>> dataSourceList = (List<Map<String, Object>>) dsResultMap.get("Content");
|
||||
Map<String, Object> dataSourceStat = dataSourceList.get(0);
|
||||
assertThat(dataSourceStat, is(not(nullValue())));
|
||||
// get data source id.
|
||||
int id = (Integer) dataSourceStat.get("Identity");
|
||||
|
||||
String result = DruidStatService.getInstance().service("/activeConnectionStackTrace-" + id + ".json");
|
||||
Map<String, Object> resultMap = (Map<String, Object>) JSONUtils.parse(result);
|
||||
List<String> contentList = (List<String>) resultMap.get("Content");
|
||||
|
||||
assertThat(contentList.get(0), is(not(nullValue())));
|
||||
stmt.close();
|
||||
conn.close();
|
||||
|
||||
// DruidStatService is singleton, reset all for other testcase.
|
||||
DruidStatService.getInstance().service("/reset-all.json");
|
||||
}
|
||||
|
||||
public void test_statService_returnJSONActiveConnectionStackTrace() throws Exception{
|
||||
String result = DruidStatService.getInstance().service("/activeConnectionStackTrace-1.json");
|
||||
Map<String, Object> resultMap = (Map<String, Object>) JSONUtils.parse(result);
|
||||
assertThat((Integer)resultMap.get("ResultCode"), equalTo(-1));
|
||||
|
||||
// DruidStatService is singleton, reset all for other testcase.
|
||||
DruidStatService.getInstance().service("/reset-all.json");
|
||||
}
|
||||
|
||||
public void test_statService_getWebURIList() throws Exception {
|
||||
String uri = "/";
|
||||
MockServletContext servletContext = new MockServletContext();
|
||||
MockFilterConfig filterConfig = new MockFilterConfig(servletContext);
|
||||
WebStatFilter filter = new WebStatFilter();
|
||||
filter.init(filterConfig);
|
||||
// first request test
|
||||
MockHttpServletRequest request = new MockHttpServletRequest("GET", uri);
|
||||
MockHttpServletResponse response = new MockHttpServletResponse();
|
||||
MockFilterChain chain = new MockFilterChain();
|
||||
filter.doFilter(request, response, chain);
|
||||
|
||||
String result = DruidStatService.getInstance().service("/weburi.json");
|
||||
Map<String, Object> resultMap = (Map<String, Object>) JSONUtils.parse(result);
|
||||
List<Map<String, Object>> webURIList = (List<Map<String, Object>>) resultMap.get("Content");
|
||||
assertThat(webURIList.size(), equalTo(1));
|
||||
Map<String, Object> webURI = webURIList.get(0);
|
||||
assertThat((String) webURI.get("URI"), equalTo(uri));
|
||||
assertThat((Integer) webURI.get("RequestCount"), equalTo(1));
|
||||
|
||||
// second request test
|
||||
MockHttpServletRequest request2 = new MockHttpServletRequest("GET", uri);
|
||||
MockHttpServletResponse response2 = new MockHttpServletResponse();
|
||||
MockFilterChain chain2 = new MockFilterChain();
|
||||
filter.doFilter(request2, response2, chain2);
|
||||
|
||||
result = DruidStatService.getInstance().service("/weburi.json");
|
||||
resultMap = (Map<String, Object>) JSONUtils.parse(result);
|
||||
webURIList = (List<Map<String, Object>>) resultMap.get("Content");
|
||||
assertThat(webURIList.size(), equalTo(1));
|
||||
webURI = webURIList.get(0);
|
||||
assertThat((String) webURI.get("URI"), equalTo(uri));
|
||||
assertThat((Integer) webURI.get("RequestCount"), equalTo(2));
|
||||
filter.destroy();
|
||||
// DruidStatService is singleton, reset all for other testcase.
|
||||
DruidStatService.getInstance().service("/reset-all.json");
|
||||
}
|
||||
|
||||
public void test_statService_getWebURIById() throws Exception {
|
||||
String uri = "/";
|
||||
MockServletContext servletContext = new MockServletContext();
|
||||
MockFilterConfig filterConfig = new MockFilterConfig(servletContext);
|
||||
WebStatFilter filter = new WebStatFilter();
|
||||
filter.init(filterConfig);
|
||||
// first request test
|
||||
MockHttpServletRequest request = new MockHttpServletRequest("GET", uri);
|
||||
MockHttpServletResponse response = new MockHttpServletResponse();
|
||||
MockFilterChain chain = new MockFilterChain();
|
||||
filter.doFilter(request, response, chain);
|
||||
|
||||
String result = DruidStatService.getInstance().service("/weburi-" + uri + ".json");
|
||||
Map<String, Object> resultMap = (Map<String, Object>) JSONUtils.parse(result);
|
||||
Map<String, Object> contentMap = (Map<String, Object>) resultMap.get("Content");
|
||||
assertThat((Integer) contentMap.get("RequestCount"), equalTo(1));
|
||||
// second request test
|
||||
MockHttpServletRequest request2 = new MockHttpServletRequest("GET", uri);
|
||||
MockHttpServletResponse response2 = new MockHttpServletResponse();
|
||||
MockFilterChain chain2 = new MockFilterChain();
|
||||
filter.doFilter(request2, response2, chain2);
|
||||
|
||||
result = DruidStatService.getInstance().service("/weburi-" + uri + ".json");
|
||||
resultMap = (Map<String, Object>) JSONUtils.parse(result);
|
||||
contentMap = (Map<String, Object>) resultMap.get("Content");
|
||||
assertThat((Integer) contentMap.get("RequestCount"), equalTo(2));
|
||||
filter.destroy();
|
||||
// DruidStatService is singleton, reset all for other testcase.
|
||||
DruidStatService.getInstance().service("/reset-all.json");
|
||||
}
|
||||
|
||||
public void test_statService_getWebApp() throws Exception {
|
||||
String uri = "/";
|
||||
MockServletContext servletContext = new MockServletContext();
|
||||
MockFilterConfig filterConfig = new MockFilterConfig(servletContext);
|
||||
WebStatFilter filter = new WebStatFilter();
|
||||
filter.init(filterConfig);
|
||||
// first request test
|
||||
MockHttpServletRequest request = new MockHttpServletRequest("GET", uri);
|
||||
MockHttpServletResponse response = new MockHttpServletResponse();
|
||||
MockFilterChain chain = new MockFilterChain();
|
||||
filter.doFilter(request, response, chain);
|
||||
|
||||
String result = DruidStatService.getInstance().service("/webapp.json");
|
||||
Map<String, Object> resultMap = (Map<String, Object>) JSONUtils.parse(result);
|
||||
List<Map<String, Object>> contentList = (List<Map<String, Object>>) resultMap.get("Content");
|
||||
assertThat(contentList.size(), equalTo(1));
|
||||
Map<String, Object> contentMap = contentList.get(0);
|
||||
assertThat((Integer) contentMap.get("RequestCount"), equalTo(1));
|
||||
// second request test
|
||||
MockHttpServletRequest request2 = new MockHttpServletRequest("GET", uri);
|
||||
MockHttpServletResponse response2 = new MockHttpServletResponse();
|
||||
MockFilterChain chain2 = new MockFilterChain();
|
||||
filter.doFilter(request2, response2, chain2);
|
||||
|
||||
result = DruidStatService.getInstance().service("/webapp.json");
|
||||
resultMap = (Map<String, Object>) JSONUtils.parse(result);
|
||||
contentList = (List<Map<String, Object>>) resultMap.get("Content");
|
||||
assertThat(contentList.size(), equalTo(1));
|
||||
contentMap = contentList.get(0);
|
||||
assertThat((Integer) contentMap.get("RequestCount"), equalTo(2));
|
||||
filter.destroy();
|
||||
// DruidStatService is singleton, reset all for other testcase.
|
||||
DruidStatService.getInstance().service("/reset-all.json");
|
||||
}
|
||||
|
||||
public void test_statService_getWebSession() throws Exception {
|
||||
String uri = "/";
|
||||
MockServletContext servletContext = new MockServletContext();
|
||||
MockFilterConfig filterConfig = new MockFilterConfig(servletContext);
|
||||
|
||||
WebStatFilter filter = new WebStatFilter();
|
||||
filter.init(filterConfig);
|
||||
// first request test
|
||||
MockHttpServletRequest request = new MockHttpServletRequest("GET", uri);
|
||||
MockHttpSession session = new MockHttpSession();
|
||||
request.setSession(session);
|
||||
String sessionId = session.getId();
|
||||
MockHttpServletResponse response = new MockHttpServletResponse();
|
||||
MockFilterChain chain = new MockFilterChain();
|
||||
filter.doFilter(request, response, chain);
|
||||
|
||||
String result = DruidStatService.getInstance().service("/websession.json");
|
||||
Map<String, Object> resultMap = (Map<String, Object>) JSONUtils.parse(result);
|
||||
List<Map<String, Object>> contentList = (List<Map<String, Object>>) resultMap.get("Content");
|
||||
assertThat(contentList.size(), equalTo(1));
|
||||
Map<String, Object> contentMap = contentList.get(0);
|
||||
assertThat((String) contentMap.get("SESSIONID"), equalTo(sessionId));
|
||||
// second request test
|
||||
MockHttpServletRequest request2 = new MockHttpServletRequest("GET", uri);
|
||||
MockHttpSession session2 = new MockHttpSession();
|
||||
request2.setSession(session2);
|
||||
String sessionId2 = session2.getId();
|
||||
MockHttpServletResponse response2 = new MockHttpServletResponse();
|
||||
MockFilterChain chain2 = new MockFilterChain();
|
||||
filter.doFilter(request2, response2, chain2);
|
||||
|
||||
result = DruidStatService.getInstance().service("/websession.json");
|
||||
resultMap = (Map<String, Object>) JSONUtils.parse(result);
|
||||
contentList = (List<Map<String, Object>>) resultMap.get("Content");
|
||||
assertThat(contentList.size(), equalTo(2));
|
||||
contentMap = contentList.get(1);
|
||||
assertThat((String) contentMap.get("SESSIONID"), equalTo(sessionId2));
|
||||
filter.destroy();
|
||||
// DruidStatService is singleton, reset all for other testcase.
|
||||
DruidStatService.getInstance().service("/reset-all.json");
|
||||
}
|
||||
|
||||
public void test_statService_getSpring() throws Exception {
|
||||
ApplicationContext context = new ClassPathXmlApplicationContext(
|
||||
"classpath:com/alibaba/druid/stat/spring-config-stat.xml");
|
||||
UserService userService = (UserService) context.getBean("userService");
|
||||
userService.save();
|
||||
String result = DruidStatService.getInstance().service("/spring.json");
|
||||
Map<String, Object> resultMap = (Map<String, Object>) JSONUtils.parse(result);
|
||||
List<Map<String, Object>> contentList = (List<Map<String, Object>>) resultMap.get("Content");
|
||||
assertThat(contentList.size(), equalTo(1));
|
||||
Map<String, Object> contentMap = contentList.get(0);
|
||||
assertThat((String) contentMap.get("Class"), is(not(nullValue())));
|
||||
assertThat((Integer) contentMap.get("ExecuteCount"), equalTo(1));
|
||||
// second test
|
||||
userService.save();
|
||||
result = DruidStatService.getInstance().service("/spring.json");
|
||||
resultMap = (Map<String, Object>) JSONUtils.parse(result);
|
||||
contentList = (List<Map<String, Object>>) resultMap.get("Content");
|
||||
assertThat(contentList.size(), equalTo(1));
|
||||
contentMap = contentList.get(0);
|
||||
assertThat((String) contentMap.get("Class"), is(not(nullValue())));
|
||||
assertThat((Integer) contentMap.get("ExecuteCount"), equalTo(2));
|
||||
// DruidStatService is singleton, reset all for other testcase.
|
||||
DruidStatService.getInstance().service("/reset-all.json");
|
||||
}
|
||||
|
||||
public void test_statService_getSpringDetail() throws Exception {
|
||||
ApplicationContext context = new ClassPathXmlApplicationContext(
|
||||
"classpath:com/alibaba/druid/stat/spring-config-stat.xml");
|
||||
UserService userService = (UserService) context.getBean("userService");
|
||||
userService.save();
|
||||
String result = DruidStatService.getInstance().service("/spring-detail.json?class=com.alibaba.druid.stat.spring.UserService&method=save()");
|
||||
Map<String, Object> resultMap = (Map<String, Object>) JSONUtils.parse(result);
|
||||
Map<String, Object> contentMap = (Map<String, Object>) resultMap.get("Content");
|
||||
assertThat((Integer) contentMap.get("ExecuteCount"), equalTo(1));
|
||||
// second test
|
||||
userService.save();
|
||||
result = DruidStatService.getInstance().service("/spring-detail.json?class=com.alibaba.druid.stat.spring.UserService&method=save()");
|
||||
resultMap = (Map<String, Object>) JSONUtils.parse(result);
|
||||
contentMap = (Map<String, Object>) resultMap.get("Content");
|
||||
assertThat((Integer) contentMap.get("ExecuteCount"), equalTo(2));
|
||||
// DruidStatService is singleton, reset all for other testcase.
|
||||
DruidStatService.getInstance().service("/reset-all.json");
|
||||
}
|
||||
|
||||
public void test_statService_getResetAll() throws Exception {
|
||||
|
||||
// data source mock
|
||||
String sql = "select 1";
|
||||
Connection conn = dataSource.getConnection();
|
||||
|
||||
PreparedStatement stmt = conn.prepareStatement(sql);
|
||||
ResultSet rs = stmt.executeQuery();
|
||||
rs.next();
|
||||
rs.close();
|
||||
stmt.close();
|
||||
conn.close();
|
||||
|
||||
String resultSQL = DruidStatService.getInstance().service("/sql.json");
|
||||
Map<String, Object> resultSQLMap = (Map<String, Object>) JSONUtils.parse(resultSQL);
|
||||
List<Map<String, Object>> sqlList = (List<Map<String, Object>>) resultSQLMap.get("Content");
|
||||
assertThat(sqlList.size(), equalTo(1));
|
||||
Map<String, Object> sqlStat = sqlList.get(0);
|
||||
assertThat((Integer) sqlStat.get("RunningCount"), equalTo(0));
|
||||
// http request mock
|
||||
String uri = "/";
|
||||
MockServletContext servletContext = new MockServletContext();
|
||||
MockFilterConfig filterConfig = new MockFilterConfig(servletContext);
|
||||
|
||||
WebStatFilter filter = new WebStatFilter();
|
||||
filter.init(filterConfig);
|
||||
// first request test
|
||||
MockHttpServletRequest request = new MockHttpServletRequest("GET", uri);
|
||||
MockHttpSession session = new MockHttpSession();
|
||||
request.setSession(session);
|
||||
String sessionId = session.getId();
|
||||
MockHttpServletResponse response = new MockHttpServletResponse();
|
||||
MockFilterChain chain = new MockFilterChain();
|
||||
filter.doFilter(request, response, chain);
|
||||
|
||||
String resultWebSession = DruidStatService.getInstance().service("/websession.json");
|
||||
Map<String, Object> resultWebSessionMap = (Map<String, Object>) JSONUtils.parse(resultWebSession);
|
||||
List<Map<String, Object>> contentWebSessionList = (List<Map<String, Object>>) resultWebSessionMap.get("Content");
|
||||
assertThat(contentWebSessionList.size(), equalTo(1));
|
||||
Map<String, Object> contentWebSessionMap = contentWebSessionList.get(0);
|
||||
assertThat((String) contentWebSessionMap.get("SESSIONID"), equalTo(sessionId));
|
||||
|
||||
// spring mock
|
||||
ApplicationContext context = new ClassPathXmlApplicationContext(
|
||||
"classpath:com/alibaba/druid/stat/spring-config-stat.xml");
|
||||
UserService userService = (UserService) context.getBean("userService");
|
||||
userService.save();
|
||||
String resultSpring = DruidStatService.getInstance().service("/spring.json");
|
||||
Map<String, Object> resultSpringMap = (Map<String, Object>) JSONUtils.parse(resultSpring);
|
||||
List<Map<String, Object>> contentSpringList = (List<Map<String, Object>>) resultSpringMap.get("Content");
|
||||
assertThat(contentSpringList.size(), equalTo(1));
|
||||
Map<String, Object> contentMap = contentSpringList.get(0);
|
||||
assertThat((String) contentMap.get("Class"), is(not(nullValue())));
|
||||
assertThat((Integer) contentMap.get("ExecuteCount"), equalTo(1));
|
||||
// reset all test
|
||||
String result = DruidStatService.getInstance().service("/reset-all.json");
|
||||
Map<String, Object> resultMap = (Map<String, Object>) JSONUtils.parse(result);
|
||||
assertThat(resultMap.get("content"), is(nullValue()));
|
||||
// assert sql
|
||||
resultSQL = DruidStatService.getInstance().service("/sql.json");
|
||||
resultSQLMap = (Map<String, Object>) JSONUtils.parse(resultSQL);
|
||||
sqlList = (List<Map<String, Object>>) resultSQLMap.get("Content");
|
||||
assertThat(sqlList, is(nullValue()));
|
||||
// assert web session
|
||||
resultWebSession = DruidStatService.getInstance().service("/websession.json");
|
||||
resultWebSessionMap = (Map<String, Object>) JSONUtils.parse(resultWebSession);
|
||||
contentWebSessionList = (List<Map<String, Object>>) resultWebSessionMap.get("Content");
|
||||
assertThat(contentWebSessionList, is(nullValue()));
|
||||
// assert spring
|
||||
resultSpring = DruidStatService.getInstance().service("/spring.json");
|
||||
resultSpringMap = (Map<String, Object>) JSONUtils.parse(resultSpring);
|
||||
contentSpringList = (List<Map<String, Object>>) resultSpringMap.get("Content");
|
||||
assertThat(contentSpringList, is(nullValue()));
|
||||
// DruidStatService is singleton, reset all for other testcase.
|
||||
DruidStatService.getInstance().service("/reset-all.json");
|
||||
}
|
||||
|
||||
public void test_statService() throws Exception {
|
||||
String result = DruidStatService.getInstance().service("/bad.json");
|
||||
Map<String, Object> resultMap = (Map<String, Object>) JSONUtils.parse(result);
|
||||
assertThat((Integer)resultMap.get("ResultCode"), equalTo(-1));
|
||||
}
|
||||
|
||||
public void test_statService_getParameters() throws Exception {
|
||||
String url = "?x=a&y=b";
|
||||
Map<String, String> parameters = DruidStatService.getParameters(url);
|
||||
assertThat(parameters.get("x"), equalTo("a"));
|
||||
assertThat(parameters.get("y"), equalTo("b"));
|
||||
url = null;
|
||||
parameters = DruidStatService.getParameters(url);
|
||||
assertThat(parameters.isEmpty(), is(true));
|
||||
url = "/%E4%B8%AD%E6%96%87";
|
||||
parameters = DruidStatService.getParameters(url);
|
||||
assertThat(parameters.isEmpty(), is(true));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
package com.alibaba.druid.stat.spring;
|
||||
|
||||
public interface UserService {
|
||||
|
||||
public void save();
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.alibaba.druid.stat.spring;
|
||||
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component("userService")
|
||||
public class UserServiceImpl implements UserService {
|
||||
|
||||
@Override
|
||||
public void save() {
|
||||
// do nothing
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
|
||||
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"
|
||||
xsi:schemaLocation="
|
||||
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
|
||||
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
|
||||
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
|
||||
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"
|
||||
default-lazy-init="false">
|
||||
|
||||
<bean id="userService" class="com.alibaba.druid.stat.spring.UserServiceImpl"></bean>
|
||||
|
||||
<bean id="druid-stat-interceptor"
|
||||
class="com.alibaba.druid.support.spring.stat.DruidStatInterceptor">
|
||||
</bean>
|
||||
|
||||
<bean id="druid-type-proxyCreator"
|
||||
class="com.alibaba.druid.support.spring.stat.BeanTypeAutoProxyCreator">
|
||||
<!-- 所有ABCInterface的派生类被拦截监控 -->
|
||||
<property name="targetBeanType" value="com.alibaba.druid.stat.spring.UserService" />
|
||||
<property name="interceptorNames">
|
||||
<list>
|
||||
<value>druid-stat-interceptor</value>
|
||||
</list>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
</beans>
|
||||
Reference in New Issue
Block a user