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);
@@ -29,20 +29,21 @@ public class Case3 extends TestCase {
private String validationQuery = "SELECT 1"; // "SELECT 1";
private int threadCount = 10;
private int TEST_COUNT = 3;
final int LOOP_COUNT = 1000 * 10;
final int LOOP_COUNT = 1000 * 1;
private boolean testOnBorrow = false;
private String connectionProperties = ""; // "bigStringTryClob=true;clientEncoding=GBK;defaultRowPrefetch=50;serverEncoding=ISO-8859-1";
private String sql = "SELECT 1";
protected void setUp() throws Exception {
// jdbcUrl = "jdbc:fake:dragoon_v25masterdb";
// user = "dragoon25";
// password = "dragoon25";
// driverClass = "com.alibaba.druid.mock.MockDriver";
jdbcUrl = "jdbc:mysql://10.20.153.104:3306/druid2";
user = "root";
password = "root";
jdbcUrl = "jdbc:fake:dragoon_v25masterdb";
user = "dragoon25";
password = "dragoon25";
driverClass = "com.alibaba.druid.mock.MockDriver";
connectionProperties = "connectSleep=3;executeSleep=1";
//
// jdbcUrl = "jdbc:mysql://10.20.153.104:3306/druid2";
// user = "root";
// password = "root";
}
public void test_perf() throws Exception {
@@ -533,7 +533,7 @@ public class DruidDataSourceUIManager extends JFrame {
Runnable task = new Runnable() {
public void run() {
final int threadCount = 40;
final int threadCount = 10;
final int LOOP_COUNT = 1000 * 1000;
final String sql = "SELECT 1";
final CountDownLatch startLatch = new CountDownLatch(1);