@@ -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