增强mock

git-svn-id: http://code.alibabatech.com/svn/druid/trunk@507 b9813039-fb51-4c41-a8b9-e21c2acb5095
This commit is contained in:
wenshao
2011-07-25 03:06:46 +00:00
parent d3be9427bf
commit e950d073b6
6 changed files with 257 additions and 12 deletions
@@ -33,19 +33,24 @@ import java.sql.Struct;
import java.util.Map;
import java.util.Properties;
import com.alibaba.druid.logging.Log;
import com.alibaba.druid.logging.LogFactory;
public class MockConnection implements Connection {
private boolean autoCommit = false;
private boolean closed = false;
private boolean readOnly = false;
private String catalog = null;
private int transactionIsolation;
private SQLWarning warning;
private int holdability;
private final static Log LOG = LogFactory.getLog(MockConnection.class);
private MockDriver driver;
private boolean autoCommit = false;
private boolean closed = false;
private boolean readOnly = false;
private String catalog = null;
private int transactionIsolation;
private SQLWarning warning;
private int holdability;
private Properties connectProperties;
private MockDriver driver;
private Properties connectProperties;
public MockConnection(){
this(null);
@@ -139,6 +144,10 @@ public class MockConnection implements Connection {
@Override
public boolean isClosed() throws SQLException {
if (LOG.isDebugEnabled()) {
LOG.debug("check close " + closed);
}
return closed;
}
@@ -25,7 +25,9 @@ import java.sql.NClob;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.SQLXML;
import java.util.List;
import java.util.Properties;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.atomic.AtomicLong;
import com.alibaba.druid.logging.Log;
@@ -34,7 +36,8 @@ import com.alibaba.druid.mock.handler.MockExecuteHandler;
import com.alibaba.druid.mock.handler.MySqlMockExecuteHandlerImpl;
public class MockDriver implements Driver {
private final static Log LOG = LogFactory.getLog(MockDriver.class);
private final static Log LOG = LogFactory.getLog(MockDriver.class);
public final static MockExecuteHandler DEFAULT_HANDLER = new MySqlMockExecuteHandlerImpl();
@@ -43,15 +46,21 @@ public class MockDriver implements Driver {
private MockExecuteHandler executeHandler = DEFAULT_HANDLER;
private final static MockDriver instance = new MockDriver();
public final static MockDriver instance = new MockDriver();
private final AtomicLong connectCount = new AtomicLong();
private final AtomicLong connectionCloseCount = new AtomicLong();
private final List<MockConnection> connections = new CopyOnWriteArrayList<MockConnection>();
static {
registerDriver(instance);
}
public List<MockConnection> getConnections() {
return connections;
}
protected void incrementConnectionCloseCount() {
connectionCloseCount.incrementAndGet();
}
@@ -62,6 +71,12 @@ public class MockDriver implements Driver {
protected void afterConnectionClose(MockConnection conn) {
connectionCloseCount.incrementAndGet();
connections.remove(conn);
if (LOG.isDebugEnabled()) {
LOG.debug("close");
}
}
public static boolean registerDriver(Driver driver) {
@@ -90,6 +105,10 @@ public class MockDriver implements Driver {
return null;
}
if (LOG.isDebugEnabled()) {
LOG.debug("connect, url " + url);
}
if (info != null) {
Object val = info.get("connectSleep");
if (val != null) {
@@ -106,6 +125,7 @@ public class MockDriver implements Driver {
if (url == null) {
connectCount.incrementAndGet();
connections.add(conn);
return conn;
}
@@ -114,6 +134,7 @@ public class MockDriver implements Driver {
conn.setCatalog(catalog);
connectCount.incrementAndGet();
connections.add(conn);
return conn;
}
@@ -122,6 +143,7 @@ public class MockDriver implements Driver {
conn.setCatalog(catalog);
connectCount.incrementAndGet();
connections.add(conn);
return conn;
}
@@ -158,6 +180,10 @@ public class MockDriver implements Driver {
}
protected ResultSet executeQuery(MockStatement stmt, String sql) throws SQLException {
if (LOG.isDebugEnabled()) {
LOG.debug("executeQuery " + sql);
}
MockConnection conn = stmt.getMockConnection();
if (conn != null) {