Skip to content
This repository was archived by the owner on Mar 10, 2022. It is now read-only.

Commit 30bc257

Browse files
committed
Merge pull request #785 from couchbase/feature/issue_1026_replicator_incorrect_behavior
Fixed Java Core 1026 - replicator incorrect behavior
2 parents 69426c8 + 276fb76 commit 30bc257

File tree

4 files changed

+49
-5
lines changed

4 files changed

+49
-5
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.couchbase.lite.mockserver;
2+
3+
import com.squareup.okhttp.mockwebserver.MockResponse;
4+
import com.squareup.okhttp.mockwebserver.RecordedRequest;
5+
6+
/**
7+
* Created by hideki on 2/11/16.
8+
*/
9+
public class MockDocumentAllDocs implements SmartMockResponse {
10+
public MockResponse generateMockResponse(RecordedRequest request) {
11+
try {
12+
MockResponse mockResponse = new MockResponse();
13+
mockResponse.setBody("{\"offset\" : 0, \"rows\" : [],\"total_rows\" : 0}".getBytes());
14+
mockResponse.setStatus("HTTP/1.1 200 OK");
15+
return mockResponse;
16+
} catch (Exception e) {
17+
e.printStackTrace();
18+
throw new RuntimeException(e);
19+
}
20+
}
21+
22+
@Override
23+
public boolean isSticky() {
24+
return false;
25+
}
26+
27+
@Override
28+
public long delayMs() {
29+
return 0;
30+
}
31+
}

src/androidTest/java/com/couchbase/lite/mockserver/MockHelper.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ public class MockHelper {
4242
public static final String PATH_REGEX_SESSION_COUCHDB = "/_session.*";
4343
public static final String PATH_REGEX_FACEBOOK_AUTH = "/db/_facebook.*";
4444
public static final String PATH_REGEX_BULK_GET = "/db/_bulk_get.*";
45+
public static final String PATH_REGEX_ALL_DOCS = "/db/_all_docs.*";
4546

4647
public static MockWebServer getMockWebServer(MockDispatcher dispatcher) {
4748

src/androidTest/java/com/couchbase/lite/replicator/ReplicationTest.java

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import com.couchbase.lite.mockserver.MockCheckpointGet;
3434
import com.couchbase.lite.mockserver.MockCheckpointPut;
3535
import com.couchbase.lite.mockserver.MockDispatcher;
36+
import com.couchbase.lite.mockserver.MockDocumentAllDocs;
3637
import com.couchbase.lite.mockserver.MockDocumentBulkGet;
3738
import com.couchbase.lite.mockserver.MockDocumentGet;
3839
import com.couchbase.lite.mockserver.MockDocumentPut;
@@ -364,11 +365,6 @@ public void testMockMultiplePullCouchDb() throws Exception {
364365

365366

366367
public void testMockContinuousPullCouchDb() throws Exception {
367-
368-
// TODO: (IMPORTANT, FORESTDB) lastSequence for checkpoint does not match and couase dead lock
369-
// if(!isSQLiteDB())
370-
// fail("FORESTDB casues deadlock becasue of lastSequence mismatch for checkpoint");
371-
372368
boolean shutdownMockWebserver = true;
373369
mockContinuousPull(shutdownMockWebserver, MockDispatcher.ServerType.COUCHDB);
374370
}
@@ -413,6 +409,9 @@ public Map<String, Object> mockSinglePull(boolean shutdownMockWebserver, MockDis
413409
mockChangesFeed.add(new MockChangesFeed.MockChangedDoc(mockDoc2));
414410
dispatcher.enqueueResponse(MockHelper.PATH_REGEX_CHANGES, mockChangesFeed.generateMockResponse());
415411

412+
// Empty _all_docs response to pass unit tests
413+
dispatcher.enqueueResponse(MockHelper.PATH_REGEX_ALL_DOCS, new MockDocumentAllDocs());
414+
416415
// doc1 response
417416
MockDocumentGet mockDocumentGet = new MockDocumentGet(mockDoc1);
418417
if (addAttachments) {
@@ -584,6 +583,9 @@ public Map<String, Object> mockMultiplePull(boolean shutdownMockWebserver, MockD
584583
MockResponse fakeChangesResponse = mockChangesFeed.generateMockResponse();
585584
dispatcher.enqueueResponse(MockHelper.PATH_REGEX_CHANGES, fakeChangesResponse);
586585

586+
// Empty _all_docs response to pass unit tests
587+
dispatcher.enqueueResponse(MockHelper.PATH_REGEX_ALL_DOCS, new MockDocumentAllDocs());
588+
587589
// doc1 response
588590
Map<String, Object> doc1JsonMap = MockHelper.generateRandomJsonMap();
589591
MockDocumentGet mockDocumentGet = new MockDocumentGet()
@@ -1827,6 +1829,9 @@ public void testChangesFeedWithPurgedDoc() throws Exception {
18271829
MockHelper.set404NotFoundJson(fakeCheckpointResponse);
18281830
dispatcher.enqueueResponse(MockHelper.PATH_REGEX_CHECKPOINT, fakeCheckpointResponse);
18291831

1832+
// Empty _all_docs response to pass unit tests
1833+
dispatcher.enqueueResponse(MockHelper.PATH_REGEX_ALL_DOCS, new MockDocumentAllDocs());
1834+
18301835
//add response to _changes request
18311836
// _changes response
18321837
MockChangesFeed mockChangesFeed = new MockChangesFeed();
@@ -3171,7 +3176,10 @@ public void testVerifyPullerInsertsDocsWithValidation() throws Exception {
31713176

31723177
// create mockwebserver and custom dispatcher
31733178
MockDispatcher dispatcher = new MockDispatcher();
3179+
// Empty _all_docs response to pass unit tests
3180+
dispatcher.enqueueResponse(MockHelper.PATH_REGEX_ALL_DOCS, new MockDocumentAllDocs());
31743181
MockWebServer server = MockHelper.getPreloadedPullTargetMockCouchDB(dispatcher, 2, 2);
3182+
31753183
try {
31763184
server.play();
31773185

src/main/java/com/couchbase/lite/android/AndroidNetworkReachabilityManager.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,10 @@ public void onReceive(android.content.Context context, Intent intent) {
6262
}
6363
}
6464

65+
public boolean isOnline(){
66+
return isOnline(wrappedContext);
67+
}
68+
6569
private boolean isOnline(android.content.Context context) {
6670
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(android.content.Context.CONNECTIVITY_SERVICE);
6771
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();

0 commit comments

Comments
 (0)