mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
git-svn-id: http://code.alibabatech.com/svn/druid/trunk@407 b9813039-fb51-4c41-a8b9-e21c2acb5095
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user