git-svn-id: http://code.alibabatech.com/svn/druid/trunk@407 b9813039-fb51-4c41-a8b9-e21c2acb5095

This commit is contained in:
wenshao
2011-07-13 05:43:46 +00:00
parent 1eda3abc47
commit e41f47526b
6 changed files with 62 additions and 21 deletions
@@ -45,18 +45,29 @@ public class MockConnection implements Connection {
private MockDriver driver;
public MockConnection(){
private Properties connectProperties;
public MockConnection(){
this(null);
}
public MockConnection(MockDriver driver){
this(driver, new Properties());
}
public MockConnection(MockDriver driver, Properties connectProperties){
this.driver = driver;
this.connectProperties = connectProperties;
}
public MockDriver getDriver() {
return driver;
}
public Properties getConnectProperties() {
return connectProperties;
}
public void setDriver(MockDriver driver) {
this.driver = driver;
}
@@ -87,7 +87,19 @@ public class MockDriver implements Driver {
return null;
}
MockConnection conn = new MockConnection(this);
if (info != null) {
Object val = info.get("connectSleep");
if (val != null) {
long millis = Long.parseLong(val.toString());
try {
Thread.sleep(millis);
} catch (InterruptedException e) {
// skip
}
}
}
MockConnection conn = new MockConnection(this, info);
if (url == null) {
connectCount.incrementAndGet();
@@ -143,6 +155,23 @@ public class MockDriver implements Driver {
}
protected ResultSet executeQuery(MockStatement stmt, String sql) throws SQLException {
MockConnection conn = stmt.getMockConnection();
if (conn != null) {
if (conn.getConnectProperties() != null) {
Object propertyValue = conn.getConnectProperties().get("executeSleep");
if (propertyValue != null) {
long millis = Long.parseLong(propertyValue.toString());
try {
Thread.sleep(millis);
} catch (InterruptedException e) {
// skip
}
}
}
}
if ("SELECT value FROM _int_1000_".equalsIgnoreCase(sql)) {
MockResultSet rs = new MockResultSet(stmt);
@@ -60,8 +60,8 @@ public class MockPreparedStatement extends MockStatement implements PreparedStat
@Override
public ResultSet executeQuery() throws SQLException {
if (fakeConnection != null && fakeConnection.getDriver() != null) {
return fakeConnection.getDriver().createResultSet(this);
if (mockConnection != null && mockConnection.getDriver() != null) {
return mockConnection.getDriver().createResultSet(this);
}
return new MockResultSet(this);
@@ -26,23 +26,23 @@ public class MockStatement implements Statement {
public final static String ERROR_SQL = "THROW ERROR";
private Connection connection;
protected MockConnection fakeConnection;
protected MockConnection mockConnection;
public MockStatement(Connection connection){
super();
this.connection = connection;
if (connection instanceof MockConnection) {
fakeConnection = (MockConnection) connection;
mockConnection = (MockConnection) connection;
}
}
public MockConnection getFakeConnection() {
return fakeConnection;
public MockConnection getMockConnection() {
return mockConnection;
}
public void setFakeConnection(MockConnection fakeConnection) {
this.fakeConnection = fakeConnection;
this.mockConnection = fakeConnection;
this.connection = fakeConnection;
}
@@ -58,8 +58,8 @@ public class MockStatement implements Statement {
@Override
public ResultSet executeQuery(String sql) throws SQLException {
if (fakeConnection != null && fakeConnection.getDriver() != null) {
return fakeConnection.getDriver().executeQuery(this, sql);
if (mockConnection != null && mockConnection.getDriver() != null) {
return mockConnection.getDriver().executeQuery(this, sql);
}
return new MockResultSet(this);