Skip to content

Commit

Permalink
migrate from testng to junit
Browse files Browse the repository at this point in the history
  • Loading branch information
ttddyy committed Mar 26, 2015
1 parent da28d3f commit 8fdd506
Show file tree
Hide file tree
Showing 25 changed files with 379 additions and 347 deletions.
30 changes: 0 additions & 30 deletions pom.xml
Expand Up @@ -61,27 +61,6 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${surefire.version}</version>

<!-- temporally specifying testng.xml to disable junit run from testng -->
<configuration>
<suiteXmlFiles>
<suiteXmlFile>testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>

<!-- to run both junit and testng tests -->
<dependencies>
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>surefire-junit4</artifactId>
<version>${surefire.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>surefire-testng</artifactId>
<version>${surefire.version}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
Expand Down Expand Up @@ -145,15 +124,6 @@
<scope>test</scope>
</dependency>

<!-- testng 6.8.15 somehow don't find tests, so use 6.8.14 instead -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.8.14</version>
<scope>test</scope>
</dependency>

<!-- migrating from testng to junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
Expand Down
@@ -1,38 +1,27 @@
package net.ttddyy.dsproxy;

import net.ttddyy.dsproxy.ExecutionInfo;
import net.ttddyy.dsproxy.listener.DataSourceQueryCountListener;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.instanceOf;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.notNullValue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

import net.ttddyy.dsproxy.QueryCount;
import net.ttddyy.dsproxy.QueryCountHolder;
import net.ttddyy.dsproxy.QueryInfo;
import net.ttddyy.dsproxy.QueryType;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;

import java.util.ArrayList;
import java.util.List;

import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.*;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

/**
* @author Tadaya Tsuyukubo
*/
@RunWith(Parameterized.class)
public class DataSourceQueryCountListenerTest {

@BeforeMethod
public void setup() {
QueryCountHolder.clear();
}

@DataProvider
public Object[][] getSingleQueryData() {
@Parameterized.Parameters
public static Object[][] getSingleQueryData() {
return new Object[][]{
// Query, Query Type
{"select * from emp", QueryType.SELECT},
Expand All @@ -43,15 +32,29 @@ public Object[][] getSingleQueryData() {
};
}

private String query;

private QueryType expectedType;

public DataSourceQueryCountListenerTest(String query, QueryType expectedType) {
this.query = query;
this.expectedType = expectedType;
}

@Before
public void setup() {
QueryCountHolder.clear();
}

@SuppressWarnings("unchecked")
@Test(dataProvider = "getSingleQueryData")
public void testSingleQuery(String query, QueryType expectedType) {
@Test
public void testSingleQuery() {
ExecutionInfo executionInfo = mock(ExecutionInfo.class);
when(executionInfo.getDataSourceName()).thenReturn("testDS");
when(executionInfo.getElapsedTime()).thenReturn(123L);

QueryInfo queryInfo = mock(QueryInfo.class);
when(queryInfo.getQuery()).thenReturn(query);
when(queryInfo.getQuery()).thenReturn(this.query);

List<QueryInfo> queryInfoList = new ArrayList<QueryInfo>();
queryInfoList.add(queryInfo);
Expand All @@ -67,7 +70,7 @@ public void testSingleQuery(String query, QueryType expectedType) {
assertThat(queryCount.getCall(), is(equalTo(1)));
assertThat(queryCount.getTotalNumOfQuery(), is(1));

if (QueryType.SELECT == expectedType) {
if (QueryType.SELECT == this.expectedType) {
assertThat(queryCount.getSelect(), is(1));
} else {
assertThat(queryCount.getSelect(), is(0));
Expand Down
117 changes: 117 additions & 0 deletions src/test/java/net/ttddyy/dsproxy/LoggingListenerLogLevelTest.java
@@ -0,0 +1,117 @@
package net.ttddyy.dsproxy;

import net.ttddyy.dsproxy.listener.CommonsLogLevel;
import net.ttddyy.dsproxy.listener.CommonsQueryLoggingListener;
import net.ttddyy.dsproxy.support.ProxyDataSource;
import net.ttddyy.dsproxy.support.ProxyDataSourceBuilder;
import org.apache.commons.logging.LogFactory;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.Statement;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.*;

/**
* @author Tadaya Tsuyukubo
*/
@RunWith(Parameterized.class)
public class LoggingListenerLogLevelTest {

@Parameterized.Parameters
public static Object[][] getLogLevelData() {
return new Object[][]{
{CommonsLogLevel.DEBUG},
{CommonsLogLevel.ERROR},
{CommonsLogLevel.FATAL},
{CommonsLogLevel.INFO},
{CommonsLogLevel.TRACE},
{CommonsLogLevel.WARN},
};
}

private DataSource jdbcDataSource;
private CommonsLogLevel logLevel;

public LoggingListenerLogLevelTest(CommonsLogLevel logLevel) {
this.logLevel = logLevel;
}

@Before
public void setup() throws Exception {
// TODO: clean up logger intercept mechanism
System.setProperty("org.apache.commons.logging.Log", InMemoryLog.class.getCanonicalName());

// real datasource
jdbcDataSource = TestUtils.getDataSourceWithData();
}

@After
public void teardown() throws Exception {
TestUtils.shutdown(jdbcDataSource);

InMemoryLog.clear();
System.setProperty("org.apache.commons.logging.Log", "");
}

@Test
public void testLogLevel() throws Exception {

CommonsQueryLoggingListener loggingListener = new CommonsQueryLoggingListener();
loggingListener.setLogLevel(logLevel);

ProxyDataSource proxyDataSource = ProxyDataSourceBuilder.create(jdbcDataSource).logQueryByCommons(this.logLevel).build();


Connection connection = proxyDataSource.getConnection();
Statement statement = connection.createStatement();
statement.executeQuery("select * from emp where id=1");
statement.executeQuery("select * from emp where id=2");


final InMemoryLog log = (InMemoryLog) LogFactory.getLog(CommonsQueryLoggingListener.class);
LogFactory.releaseAll(); // release the Log cache

verifyMessage(logLevel, log, "select * from emp where id=1", "select * from emp where id=2");

}

// TODO: cleanup
private void verifyMessage(CommonsLogLevel logLevel, InMemoryLog log, String... queries) {
Map<CommonsLogLevel, List> messages = new HashMap<CommonsLogLevel, List>();
messages.put(CommonsLogLevel.DEBUG, log.getDebugMessages());
messages.put(CommonsLogLevel.ERROR, log.getErrorMessages());
messages.put(CommonsLogLevel.FATAL, log.getFatalMessages());
messages.put(CommonsLogLevel.INFO, log.getInfoMessages());
messages.put(CommonsLogLevel.TRACE, log.getTraceMessages());
messages.put(CommonsLogLevel.WARN, log.getWarnMessages());

for (Map.Entry<CommonsLogLevel, List> entry : messages.entrySet()) {
CommonsLogLevel msgLevel = entry.getKey();
List<?> messageList = entry.getValue();

int expectedMsgSize = (msgLevel == logLevel) ? queries.length : 0;

assertThat(messageList, hasSize(expectedMsgSize));
if (expectedMsgSize > 0) {
for (int i = 0; i < queries.length; i++) {
final String query = queries[i];

assertThat(messageList.get(i), is(instanceOf(String.class)));
String message = (String) messageList.get(i);
assertThat(message, containsString(query));
}
}
}
}

}
39 changes: 5 additions & 34 deletions src/test/java/net/ttddyy/dsproxy/LoggingListenerTest.java
Expand Up @@ -4,10 +4,9 @@
import net.ttddyy.dsproxy.listener.CommonsQueryLoggingListener;
import net.ttddyy.dsproxy.support.ProxyDataSource;
import org.apache.commons.logging.LogFactory;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import javax.sql.DataSource;
import java.sql.Connection;
Expand All @@ -28,7 +27,7 @@ public class LoggingListenerTest {
private ProxyDataSource proxyDataSource;
private CommonsQueryLoggingListener loggingListener;

@BeforeMethod
@Before
public void setup() throws Exception {
// TODO: clean up logger intercept mechanism
System.setProperty("org.apache.commons.logging.Log", InMemoryLog.class.getCanonicalName());
Expand All @@ -43,7 +42,7 @@ public void setup() throws Exception {
proxyDataSource.setListener(loggingListener);
}

@AfterMethod
@After
public void teardown() throws Exception {
TestUtils.shutdown(jdbcDataSource);

Expand Down Expand Up @@ -123,34 +122,6 @@ private InMemoryLog getInMemoryLog() {
return log;
}

@DataProvider
public Object[][] getLogLevelData() {
return new Object[][]{
{CommonsLogLevel.DEBUG},
{CommonsLogLevel.ERROR},
{CommonsLogLevel.FATAL},
{CommonsLogLevel.INFO},
{CommonsLogLevel.TRACE},
{CommonsLogLevel.WARN},
};
}

@Test(dataProvider = "getLogLevelData")
public void testLogLevel(CommonsLogLevel logLevel) throws Exception {
loggingListener.setLogLevel(logLevel);

Connection connection = proxyDataSource.getConnection();
Statement statement = connection.createStatement();
statement.executeQuery("select * from emp where id=1");
statement.executeQuery("select * from emp where id=2");


final InMemoryLog log = getInMemoryLog();

verifyMessage(logLevel, log,
"select * from emp where id=1", "select * from emp where id=2");

}

private void verifyMessage(CommonsLogLevel logLevel, InMemoryLog log, String... queries) {
Map<CommonsLogLevel, List> messages = new HashMap<CommonsLogLevel, List>();
Expand Down

0 comments on commit 8fdd506

Please sign in to comment.