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

Commit 189e725

Browse files
author
Clément Le Provost
committed
[offline][test] Test that non-mirrored indices behave as pure online indices
1 parent 1420b9b commit 189e725

File tree

1 file changed

+90
-25
lines changed

1 file changed

+90
-25
lines changed

algoliasearch/src/testOffline/java/com/algolia/search/saas/MirroredIndexTest.java

Lines changed: 90 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ interface SyncCompletionHandler {
108108
void syncCompleted(@Nullable Throwable error);
109109
}
110110

111-
private void sync(final @NonNull MirroredIndex index, final @NonNull SyncCompletionHandler completionHandler) {
111+
private void populate(final @NonNull MirroredIndex index, final @NonNull SyncCompletionHandler completionHandler) {
112112
// Delete the index.
113113
client.deleteIndexAsync(index.getIndexName(), new AssertCompletionHandler() {
114114
@Override
@@ -131,30 +131,7 @@ public void doRequestCompleted(JSONObject content, AlgoliaException error) {
131131
@Override
132132
public void doRequestCompleted(JSONObject content, AlgoliaException error) {
133133
assertNull(error);
134-
135-
// Sync the offline mirror.
136-
index.setMirrored(true);
137-
Query query = new Query();
138-
query.setNumericFilters(new JSONArray().put("born < 1980"));
139-
index.setDataSelectionQueries(
140-
new MirroredIndex.DataSelectionQuery(query, 10)
141-
);
142-
143-
listener = new SyncListener() {
144-
@Override
145-
public void syncDidStart(MirroredIndex index) {
146-
// Nothing to do.
147-
}
148-
149-
@Override
150-
public void syncDidFinish(MirroredIndex index, Throwable error, MirroredIndex.SyncStats stats) {
151-
Log.d(MirroredIndexTest.class.getSimpleName(), "Sync finished");
152-
index.removeSyncListener(listener);
153-
completionHandler.syncCompleted(error);
154-
}
155-
};
156-
index.addSyncListener(listener);
157-
index.sync();
134+
completionHandler.syncCompleted(error);
158135
}
159136
});
160137
}
@@ -165,6 +142,37 @@ public void syncDidFinish(MirroredIndex index, Throwable error, MirroredIndex.Sy
165142
});
166143
}
167144

145+
private void sync(final @NonNull MirroredIndex index, final @NonNull SyncCompletionHandler completionHandler) {
146+
populate(index, new SyncCompletionHandler() {
147+
@Override
148+
public void syncCompleted(@Nullable Throwable error) {
149+
// Sync the offline mirror.
150+
index.setMirrored(true);
151+
Query query = new Query();
152+
query.setNumericFilters(new JSONArray().put("born < 1980"));
153+
index.setDataSelectionQueries(
154+
new MirroredIndex.DataSelectionQuery(query, 10)
155+
);
156+
157+
listener = new SyncListener() {
158+
@Override
159+
public void syncDidStart(MirroredIndex index) {
160+
// Nothing to do.
161+
}
162+
163+
@Override
164+
public void syncDidFinish(MirroredIndex index, Throwable error, MirroredIndex.SyncStats stats) {
165+
Log.d(MirroredIndexTest.class.getSimpleName(), "Sync finished");
166+
index.removeSyncListener(listener);
167+
completionHandler.syncCompleted(error);
168+
}
169+
};
170+
index.addSyncListener(listener);
171+
index.sync();
172+
}
173+
});
174+
}
175+
168176
@Test
169177
public void testSync() throws Exception {
170178
final CountDownLatch signal = new CountDownLatch(1);
@@ -471,4 +479,61 @@ public void doRequestCompleted(JSONObject content, AlgoliaException error) {
471479
}
472480
});
473481
}
482+
483+
/**
484+
* Test that a non-mirrored index behaves like a purely online index.
485+
*/
486+
@Test
487+
public void testNotMirrored() {
488+
final CountDownLatch signal = new CountDownLatch(5);
489+
490+
final MirroredIndex index = client.getIndex(Helpers.safeIndexName(Helpers.getMethodName()));
491+
// Check that the index is *not* mirrored by default.
492+
assertFalse(index.isMirrored());
493+
494+
populate(index, new SyncCompletionHandler() {
495+
@Override
496+
public void syncCompleted(@Nullable Throwable error) {
497+
// Check that a non-mirrored index returns online results without origin tagging.
498+
index.searchAsync(new Query(), new AssertCompletionHandler() {
499+
@Override
500+
public void doRequestCompleted(JSONObject content, AlgoliaException error) {
501+
assertNull(error);
502+
assertEquals(5, content.optInt("nbHits"));
503+
assertNull(content.opt("origin"));
504+
signal.countDown();
505+
}
506+
});
507+
index.browseAsync(new Query(), new AssertCompletionHandler() {
508+
@Override
509+
public void doRequestCompleted(JSONObject content, AlgoliaException error) {
510+
assertNull(error);
511+
assertEquals(5, content.optInt("nbHits"));
512+
assertNull(content.opt("origin"));
513+
signal.countDown();
514+
}
515+
});
516+
index.getObjectAsync("1", new AssertCompletionHandler() {
517+
@Override
518+
public void doRequestCompleted(JSONObject content, AlgoliaException error) {
519+
assertNull(error);
520+
assertEquals("Snoopy", content.optString("name"));
521+
assertNull(content.opt("origin"));
522+
signal.countDown();
523+
}
524+
});
525+
index.getObjectsAsync(Arrays.asList("1", "2"), new AssertCompletionHandler() {
526+
@Override
527+
public void doRequestCompleted(JSONObject content, AlgoliaException error) {
528+
assertNull(error);
529+
assertNotNull(content.optJSONArray("results"));
530+
assertEquals(2, content.optJSONArray("results").length());
531+
assertNull(content.opt("origin"));
532+
signal.countDown();
533+
}
534+
});
535+
signal.countDown();
536+
}
537+
});
538+
}
474539
}

0 commit comments

Comments
 (0)