Skip to content

Commit 09e86a8

Browse files
committed
AJ-765:add test case about readTimeout and connectTimeout
1 parent e2fabca commit 09e86a8

File tree

1 file changed

+160
-17
lines changed

1 file changed

+160
-17
lines changed

test/com/xxdb/DBConnectionTest.java

Lines changed: 160 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,16 @@ public void daimaTest_Connect_timeout_1() throws IOException {
119119
DBConnection conn = new DBConnection();
120120
boolean re = conn.connect(HOST,111,1,true);
121121
}
122+
//@Test AJ-770
123+
public void Test_Connect_timeout_111() throws IOException, InterruptedException {
124+
DBConnection conn = new DBConnection();
125+
boolean re = conn.connect(HOST,PORT,1,true,10);
126+
System.out.println("停止停止节点 ");
127+
//手工停止节点
128+
Thread.sleep(10000);
129+
System.out.println("run.....");
130+
conn.run("re=1");
131+
}
122132
@Test
123133
public void Test_Connect_2() throws IOException {
124134
DBConnection conn = new DBConnection();
@@ -145,15 +155,77 @@ public void Test_Connect_5() throws IOException {
145155
}
146156
@Test
147157
public void Test_Connect_connectTimeout_negative() throws IOException {
158+
class LogCapture {
159+
private final ByteArrayOutputStream baos = new ByteArrayOutputStream();
160+
private final PrintStream originalErr = System.err;
161+
public void start() {
162+
System.setErr(new PrintStream(baos));
163+
}
164+
public void stop() {
165+
System.setErr(originalErr);
166+
}
167+
public String getLogMessages() {
168+
return baos.toString();
169+
}
170+
}
148171
DBConnection conn = new DBConnection();
172+
LogCapture logCapture = new LogCapture();
173+
logCapture.start();
149174
conn.connect(HOST,PORT,-1,100);
150-
//期望报错
175+
logCapture.stop();
176+
String s=logCapture.getLogMessages();
177+
assertTrue(s.contains("The param connectTimeout or readTimeout cannot less than zero."));
178+
179+
LogCapture logCapture1 = new LogCapture();
180+
logCapture1.start();
181+
conn.connect(HOST,PORT,-1,100,true);
182+
logCapture1.stop();
183+
String s1=logCapture1.getLogMessages();
184+
assertTrue(s1.contains("The param connectTimeout or readTimeout cannot less than zero."));
185+
186+
LogCapture logCapture2 = new LogCapture();
187+
logCapture2.start();
188+
conn.connect(HOST,PORT,-1,100,true,10);
189+
logCapture2.stop();
190+
String s2=logCapture2.getLogMessages();
191+
assertTrue(s2.contains("The param connectTimeout or readTimeout cannot less than zero."));
151192
}
152193
@Test
153194
public void Test_Connect_readTimeout_negative() throws IOException {
195+
class LogCapture {
196+
private final ByteArrayOutputStream baos = new ByteArrayOutputStream();
197+
private final PrintStream originalErr = System.err;
198+
public void start() {
199+
System.setErr(new PrintStream(baos));
200+
}
201+
public void stop() {
202+
System.setErr(originalErr);
203+
}
204+
public String getLogMessages() {
205+
return baos.toString();
206+
}
207+
}
154208
DBConnection conn = new DBConnection();
209+
LogCapture logCapture = new LogCapture();
210+
logCapture.start();
155211
conn.connect(HOST,PORT,200,-100);
156-
//期望报错
212+
logCapture.stop();
213+
String s=logCapture.getLogMessages();
214+
assertTrue(s.contains("The param connectTimeout or readTimeout cannot less than zero."));
215+
216+
LogCapture logCapture1 = new LogCapture();
217+
logCapture1.start();
218+
conn.connect(HOST,PORT,500,-100,true);
219+
logCapture1.stop();
220+
String s1=logCapture1.getLogMessages();
221+
assertTrue(s1.contains("The param connectTimeout or readTimeout cannot less than zero."));
222+
223+
LogCapture logCapture2 = new LogCapture();
224+
logCapture2.start();
225+
conn.connect(HOST,PORT,500,-100,true,10);
226+
logCapture2.stop();
227+
String s2=logCapture2.getLogMessages();
228+
assertTrue(s2.contains("The param connectTimeout or readTimeout cannot less than zero."));
157229
}
158230
@Test
159231
public void Test_Connect_connectTimeout_success() throws IOException {
@@ -209,62 +281,133 @@ public void Test_Connect_connectTimeout_fail() throws IOException {
209281
Assert.assertEquals(true,elapsedTime2>5 && elapsedTime2<50);
210282
}
211283

284+
@Test
285+
public void Test_Connect_connectTimeout_fail_1() throws IOException {
286+
DBConnection conn = new DBConnection();
287+
long startTime1 = System.currentTimeMillis();
288+
String re1 = null;
289+
try{
290+
conn.connect(HOST,111,500,100,true,2);
291+
}catch(Exception e){
292+
re1 = e.getMessage();
293+
}
294+
long elapsedTime1 = System.currentTimeMillis() - startTime1;
295+
System.out.println("Timeout after " + elapsedTime1 + " ms");
296+
Assert.assertEquals(true,elapsedTime1>1500 && elapsedTime1<4000);
297+
298+
//DBConnection conn1 = new DBConnection();
299+
long startTime = System.currentTimeMillis();
300+
String re = null;
301+
try{
302+
conn.connect(HOST,111,2000,100,true,2);
303+
}catch(Exception e){
304+
re = e.getMessage();
305+
}
306+
long elapsedTime = System.currentTimeMillis() - startTime;
307+
System.out.println("Timeout after " + elapsedTime + " ms");
308+
Assert.assertEquals(true,elapsedTime>6000 && elapsedTime<8000);
309+
}
310+
//@Test//没有设置重连次数,会一直重连
311+
public void Test_Connect_connectTimeout_fail_2() throws IOException {
312+
DBConnection conn = new DBConnection();
313+
long startTime1 = System.currentTimeMillis();
314+
String re1 = null;
315+
try{
316+
conn.connect(HOST,111,500,100,true);
317+
}catch(Exception e){
318+
re1 = e.getMessage();
319+
}
320+
long elapsedTime1 = System.currentTimeMillis() - startTime1;
321+
System.out.println("Timeout after " + elapsedTime1 + " ms");
322+
Assert.assertEquals(true,elapsedTime1>1500 && elapsedTime1<4000);
323+
}
324+
212325
@Test
213326
public void Test_Connect_readTimeout_fail() throws IOException, InterruptedException {
214327
DBConnection conn = new DBConnection();
215328
conn.connect(HOST,PORT,8000,2000);
216329
String re = null;
217330
long startTime = System.currentTimeMillis();
218331
try{
219-
conn.run("do{\n" +
220-
"print(\"ddd\")\n" +
332+
conn.run("re = time(now())\n" +
333+
"do{\n" +
334+
"sleep(1000)\n" +
335+
"re1=time(now())\n" +
221336
"}\n" +
222-
"while (true);");
337+
"while ((re1-re)/1000<5);");
223338
}catch(Exception e){
224339
re = e.getMessage();
225340
}
226341
long elapsedTime = System.currentTimeMillis() - startTime;
227342
System.out.println("Timeout after " + elapsedTime + " ms");
228343
Assert.assertEquals(true,elapsedTime>2000 && elapsedTime<2050);
229-
Assert.assertEquals("Failed to read response header from the socket with IO error Read timed out",re);
344+
Assert.assertEquals("Read timed out",re);
230345
conn.connect(HOST,PORT,8000,4000);
231346
String re1 = null;
232347
long startTime1 = System.currentTimeMillis();
233348
try{
234-
conn.run("do{\n" +
235-
"print(\"ddd\")\n" +
349+
conn.run("re = time(now())\n" +
350+
"do{\n" +
351+
"sleep(1000)\n" +
352+
"re1=time(now())\n" +
236353
"}\n" +
237-
"while (true);");
354+
"while ((re1-re)/1000<5);");
238355
}catch(Exception e){
239356
re1 = e.getMessage();
240357
}
241358
long elapsedTime2 = System.currentTimeMillis() - startTime1;
242359
System.out.println("Timeout after " + elapsedTime2 + " ms");
243360
Assert.assertEquals(true,elapsedTime2>4000 && elapsedTime2<4050);
244-
Assert.assertEquals("Failed to read response header from the socket with IO error Read timed out",re1);
361+
Assert.assertEquals("Read timed out",re1);
245362
}
246363

247364
@Test
248365
public void Test_Connect_readTimeout_fail_1() throws IOException, InterruptedException {
249-
DBConnection conn = new DBConnection();
250-
conn.connect(HOST,PORT,8000,2000,true,7);
366+
DBConnection conn1 = new DBConnection();
367+
conn1.connect(HOST,PORT,8000,2000,true,2);
251368
String re = null;
369+
System.out.println("TESTFFFFFF");
252370
long startTime = System.currentTimeMillis();
253371
try{
254-
conn.run("do{\n" +
255-
"print(\"ddd\")\n" +
372+
conn1.run("re = time(now())\n" +
373+
"do{\n" +
374+
"sleep(1000)\n" +
375+
"re1=time(now())\n" +
256376
"}\n" +
257-
"while (true);");
377+
"while ((re1-re)/1000<10);");
258378
}catch(Exception e){
259379
re = e.getMessage();
260380
}
261381
long elapsedTime = System.currentTimeMillis() - startTime;
262382
System.out.println("Timeout after " + elapsedTime + " ms");
263-
//Assert.assertEquals(true,elapsedTime>2000 && elapsedTime<2050);
264-
//Assert.assertEquals("Failed to read response header from the socket with IO error Read timed out",re);
383+
Assert.assertEquals(true,elapsedTime>2000);
384+
Assert.assertEquals(true,re.contains("read timed out."));
265385
System.out.println(re);
266386
}
267387

388+
@Test
389+
public void Test_Connect_readTimeout_fail_2() throws IOException, InterruptedException {
390+
DBConnection conn1 = new DBConnection();
391+
conn1.connect(HOST,PORT,8000,2000,true);
392+
String re = null;
393+
System.out.println("TESTFFFFFF");
394+
long startTime = System.currentTimeMillis();
395+
try{
396+
conn1.run("re = time(now())\n" +
397+
"do{\n" +
398+
"sleep(1000)\n" +
399+
"re1=time(now())\n" +
400+
"}\n" +
401+
"while ((re1-re)/1000<10);");
402+
}catch(Exception e){
403+
re = e.getMessage();
404+
}
405+
long elapsedTime = System.currentTimeMillis() - startTime;
406+
System.out.println("Timeout after " + elapsedTime + " ms");
407+
Assert.assertEquals(true,elapsedTime>2000);
408+
Assert.assertEquals(true,re.contains("read timed out."));
409+
System.out.println(re);
410+
}
268411
@Test
269412
public void test_Connect_tryReconnectNums_Filed_enableHighAvailability_false_enableLoadBalance_false() throws IOException {
270413
int port=7102;

0 commit comments

Comments
 (0)