Skip to content

Commit 88cda79

Browse files
author
ssambasu
committed
1. Added tests for flushAsync(), retry()
2. Fixed a few tests
1 parent ff4437e commit 88cda79

File tree

1 file changed

+116
-13
lines changed

1 file changed

+116
-13
lines changed

test-complete/src/test/java/com/marklogic/client/datamovement/functionaltests/WriteHostBatcherTest.java

Lines changed: 116 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -749,18 +749,16 @@ public void testNumberofBatches() throws Exception{
749749

750750
}
751751

752-
// ISSUE # 39, 40
752+
// ISSUE # 39, 40, 589
753753
@Test
754754
public void testClientObject() throws Exception {
755755

756756
final StringBuffer successHost = new StringBuffer();
757-
final StringBuffer successUser = new StringBuffer();
758-
final StringBuffer successPassword = new StringBuffer();
757+
final StringBuffer successDb = new StringBuffer();
759758
final StringBuffer successPort = new StringBuffer();
760759

761760
final StringBuffer failureHost = new StringBuffer();
762-
final StringBuffer failureUser = new StringBuffer();
763-
final StringBuffer failurePassword = new StringBuffer();
761+
final StringBuffer failureDb = new StringBuffer();
764762
final StringBuffer failurePort = new StringBuffer();
765763

766764
WriteBatcher ihb1 = dmManager.newWriteBatcher();
@@ -769,14 +767,15 @@ public void testClientObject() throws Exception {
769767
batch -> {
770768
successHost.append(batch.getClient().getHost()+":");
771769
successPort.append(batch.getClient().getPort()+":");
772-
770+
successDb.append(batch.getClient().getDatabase()+":");
773771

774772
}
775773
)
776774
.onBatchFailure(
777775
(batch, throwable) -> {
778776
failureHost.append(batch.getClient().getHost()+":");
779777
failurePort.append(batch.getClient().getPort()+":");
778+
failureDb.append(batch.getClient().getDatabase()+":");
780779
});
781780
dmManager.startJob(ihb1);
782781

@@ -789,14 +788,17 @@ public void testClientObject() throws Exception {
789788
ihb1.add("", stringHandle);
790789
}
791790
ihb1.flushAndWait();
792-
793-
System.out.println(successUser.toString());
794-
System.out.println(count(successUser.toString(),user));
791+
System.out.println(successHost.toString());
792+
System.out.println(successPort.toString());
793+
System.out.println(successDb.toString());
794+
795795
Assert.assertTrue(count(successPort.toString(),String.valueOf(port))==10);
796796
Assert.assertTrue(count(successHost.toString(),String.valueOf(host))!=10);
797+
Assert.assertTrue(count(successDb.toString(),String.valueOf(dbName))==10);
797798

798799
Assert.assertTrue(count(failurePort.toString(),String.valueOf(port))==5);
799800
Assert.assertTrue(count(failureHost.toString(),String.valueOf(host))!=5);
801+
Assert.assertTrue(count(failureDb.toString(),String.valueOf(dbName))==5);
800802
}
801803

802804
private int count(String s, String in){
@@ -943,10 +945,46 @@ public void testWithInvalidValues() throws Exception{
943945
catch (Exception e){
944946
Assert.assertTrue(e instanceof IllegalArgumentException);
945947
}
946-
947-
Assert.assertTrue(dbClient.newServerEval().xquery(query1).eval().next().getNumber().intValue() == 0);
948948
}
949+
950+
951+
@Test
952+
public void testflushAsync() throws Exception {
949953

954+
final String query1 = "fn:count(fn:doc())";
955+
Assert.assertTrue(dbClient.newServerEval().xquery(query1).eval().next().getNumber().intValue() == 0);
956+
WriteBatcher ihb1 = dmManager.newWriteBatcher();
957+
ihb1.withBatchSize(25);
958+
ihb1.onBatchSuccess(
959+
batch -> {
960+
961+
}
962+
)
963+
.onBatchFailure(
964+
(batch, throwable) -> {
965+
throwable.printStackTrace();
966+
});
967+
968+
for (int i =0 ; i < 1000; i++){
969+
String uri ="/local/json-"+ i;
970+
ihb1.add(uri, stringHandle);
971+
}
972+
973+
ihb1.flushAndWait();
974+
Assert.assertTrue(dbClient.newServerEval().xquery(query1).eval().next().getNumber().intValue() == 1000);
975+
clearDB(port);
976+
Assert.assertTrue(dbClient.newServerEval().xquery(query1).eval().next().getNumber().intValue() == 0);
977+
for (int i =0 ; i < 1500; i++){
978+
String uri ="/local/json-"+ i;
979+
ihb1.add(uri, stringHandle);
980+
}
981+
ihb1.flushAsync();
982+
Assert.assertTrue(dbClient.newServerEval().xquery(query1).eval().next().getNumber().intValue() < 1500);
983+
System.out.println(dbClient.newServerEval().xquery(query1).eval().next().getNumber().intValue());
984+
ihb1.awaitCompletion();
985+
Assert.assertTrue(dbClient.newServerEval().xquery(query1).eval().next().getNumber().intValue() == 1500);
986+
}
987+
950988
@Test
951989
public void testInsertoReadOnlyForest() throws Exception{
952990
Map <String, String> properties = new HashMap<>();
@@ -1892,6 +1930,14 @@ public void testEmptyFlush() throws Exception{
18921930
e.printStackTrace();
18931931
Assert.assertTrue(e instanceof IllegalStateException);
18941932
}
1933+
1934+
JobTicket job = dmManager.startJob(ihb2);
1935+
ihb2.flushAsync();
1936+
ihb2.flushAndWait();
1937+
ihb2.add("/new", fileHandle);
1938+
dmManager.stopJob(job);
1939+
final String query1 = "fn:count(fn:doc())";
1940+
Assert.assertTrue(dbClient.newServerEval().xquery(query1).eval().next().getNumber().intValue() ==0);
18951941
}
18961942

18971943
@Test
@@ -2034,6 +2080,7 @@ public void run() {
20342080
dmManager.stopJob(writeTicket);
20352081
}
20362082

2083+
//test flushAsync()
20372084
@Test
20382085
public void testInserttoDisabledAppServer() throws Exception{
20392086

@@ -2083,6 +2130,61 @@ public void testInserttoDisabledAppServer() throws Exception{
20832130

20842131
}
20852132

2133+
//ISSUE 588
2134+
@Test
2135+
public void testRetry() throws Exception{
2136+
2137+
final String query1 = "fn:count(fn:doc())";
2138+
Assert.assertTrue(dbClient.newServerEval().xquery(query1).eval().next().getNumber().intValue()==0);
2139+
AtomicBoolean successCalled = new AtomicBoolean(false);
2140+
Map<String,String> properties = new HashMap<>();
2141+
2142+
ihbMT = dmManager.newWriteBatcher();
2143+
ihbMT.withBatchSize(3000);
2144+
2145+
ihbMT.onBatchSuccess(
2146+
batch -> {
2147+
successCalled.set(true);
2148+
System.out.println("Success Batch size "+batch.getItems().length);
2149+
for(WriteEvent w:batch.getItems()){
2150+
System.out.println("Success "+w.getTargetUri());
2151+
}
2152+
})
2153+
.onBatchFailure(
2154+
(batch, throwable) -> {
2155+
throwable.printStackTrace();
2156+
System.out.println("Failure Batch size "+batch.getItems().length);
2157+
for(WriteEvent w:batch.getItems()){
2158+
System.out.println("Failure "+w.getTargetUri());
2159+
}
2160+
try {
2161+
Thread.currentThread().sleep(20000L);
2162+
} catch (Exception e) {
2163+
// TODO Auto-generated catch block
2164+
e.printStackTrace();
2165+
}
2166+
ihbMT.retry(batch);
2167+
});
2168+
2169+
dmManager.startJob(ihbMT);
2170+
for (int j =0 ;j < 200; j++){
2171+
String uri ="/local/json-"+ j;
2172+
ihbMT.add(uri, stringHandle);
2173+
}
2174+
2175+
properties.put("enabled", "false");
2176+
changeProperty(properties,"/manage/v2/databases/"+dbName+"/properties");
2177+
Thread.currentThread().sleep(2000L);
2178+
ihbMT.flushAsync();
2179+
Thread.currentThread().sleep(10000L);
2180+
2181+
properties.put("enabled", "true");
2182+
changeProperty(properties,"/manage/v2/databases/"+dbName+"/properties");
2183+
ihbMT.awaitCompletion();
2184+
Assert.assertTrue(dbClient.newServerEval().xquery(query1).eval().next().getNumber().intValue()==200);
2185+
Assert.assertFalse(successCalled.get());
2186+
}
2187+
20862188
// ea3
20872189
@Test
20882190
public void testDisableAppServerDuringInsert() throws Exception{
@@ -2114,14 +2216,14 @@ public void testDisableAppServerDuringInsert() throws Exception{
21142216
dmManager.startJob(ihb2);
21152217
t1.start();
21162218

2117-
for (int j =0 ;j < 2000; j++){
2219+
for (int j =0 ;j < 10000; j++){
21182220
String uri ="/local/json-"+ j;
21192221
ihb2.add(uri, fileHandle);
21202222
}
21212223

21222224
ihb2.flushAndWait();
21232225
t1.join();
2124-
Assert.assertTrue(dbClient.newServerEval().xquery(query1).eval().next().getNumber().intValue()==2000);
2226+
Assert.assertTrue(dbClient.newServerEval().xquery(query1).eval().next().getNumber().intValue()==10000);
21252227

21262228
}
21272229
class StopServerRunnable implements Runnable {
@@ -2140,6 +2242,7 @@ public void run() {
21402242
if(count >= 100){
21412243

21422244
changeProperty(properties,"/manage/v2/servers/"+server+"/properties");
2245+
System.out.println("Server disabled");
21432246
state=false;
21442247
}
21452248

0 commit comments

Comments
 (0)