Commit 8e788681 authored by Ted Choc's avatar Ted Choc Committed by Commit Bot

Remove direct Criteria usage from sync tests.

BUG=1071247

Change-Id: I145041673b9e9779d2a342178cf26146da12cc41
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2156108Reviewed-by: default avatarYaron Friedman <yfriedman@chromium.org>
Commit-Queue: Ted Choc <tedchoc@chromium.org>
Cr-Commit-Position: refs/heads/master@{#760515}
parent 4b8b82c4
...@@ -18,7 +18,6 @@ import org.junit.runner.RunWith; ...@@ -18,7 +18,6 @@ import org.junit.runner.RunWith;
import org.chromium.base.test.util.CommandLineFlags; import org.chromium.base.test.util.CommandLineFlags;
import org.chromium.base.test.util.Feature; import org.chromium.base.test.util.Feature;
import org.chromium.chrome.browser.flags.ChromeSwitches; import org.chromium.chrome.browser.flags.ChromeSwitches;
import org.chromium.chrome.browser.sync.SyncTestRule.DataCriteria;
import org.chromium.chrome.test.ChromeJUnit4ClassRunner; import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
import org.chromium.chrome.test.util.browser.sync.SyncTestUtil; import org.chromium.chrome.test.util.browser.sync.SyncTestUtil;
import org.chromium.components.sync.ModelType; import org.chromium.components.sync.ModelType;
...@@ -73,13 +72,6 @@ public class AutofillTest { ...@@ -73,13 +72,6 @@ public class AutofillTest {
} }
} }
private abstract class ClientAutofillCriteria extends DataCriteria<Autofill> {
@Override
public List<Autofill> getData() throws Exception {
return getClientAutofillProfiles();
}
}
@Before @Before
public void setUp() throws Exception { public void setUp() throws Exception {
mSyncTestRule.setUpTestAccountAndSignIn(); mSyncTestRule.setUpTestAccountAndSignIn();
...@@ -123,11 +115,12 @@ public class AutofillTest { ...@@ -123,11 +115,12 @@ public class AutofillTest {
mSyncTestRule.getFakeServerHelper().modifyEntitySpecifics( mSyncTestRule.getFakeServerHelper().modifyEntitySpecifics(
autofill.id, getServerAutofillProfile(STREET, MODIFIED_CITY, STATE, ZIP)); autofill.id, getServerAutofillProfile(STREET, MODIFIED_CITY, STATE, ZIP));
SyncTestUtil.triggerSync(); SyncTestUtil.triggerSync();
mSyncTestRule.pollInstrumentationThread(new ClientAutofillCriteria() { mSyncTestRule.pollInstrumentationThread(() -> {
@Override try {
public boolean isSatisfied(List<Autofill> autofills) { Autofill modifiedAutofill = getClientAutofillProfiles().get(0);
Autofill modifiedAutofill = autofills.get(0); Assert.assertEquals(MODIFIED_CITY, modifiedAutofill.city);
return modifiedAutofill.city.equals(MODIFIED_CITY); } catch (JSONException ex) {
throw new RuntimeException(ex);
} }
}); });
} }
......
...@@ -20,7 +20,6 @@ import org.chromium.base.test.util.Feature; ...@@ -20,7 +20,6 @@ import org.chromium.base.test.util.Feature;
import org.chromium.chrome.browser.bookmarks.BookmarkBridge; import org.chromium.chrome.browser.bookmarks.BookmarkBridge;
import org.chromium.chrome.browser.flags.ChromeSwitches; import org.chromium.chrome.browser.flags.ChromeSwitches;
import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.sync.SyncTestRule.DataCriteria;
import org.chromium.chrome.test.ChromeJUnit4ClassRunner; import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
import org.chromium.chrome.test.util.browser.sync.SyncTestUtil; import org.chromium.chrome.test.util.browser.sync.SyncTestUtil;
import org.chromium.components.bookmarks.BookmarkId; import org.chromium.components.bookmarks.BookmarkId;
...@@ -33,6 +32,7 @@ import org.chromium.content_public.browser.test.util.TestThreadUtils; ...@@ -33,6 +32,7 @@ import org.chromium.content_public.browser.test.util.TestThreadUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.concurrent.Callable; import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
/** /**
* Test suite for the bookmarks sync data type. * Test suite for the bookmarks sync data type.
...@@ -73,20 +73,6 @@ public class BookmarksTest { ...@@ -73,20 +73,6 @@ public class BookmarksTest {
} }
} }
private abstract class ClientBookmarksCriteria extends DataCriteria<Bookmark> {
@Override
public List<Bookmark> getData() throws Exception {
return getClientBookmarks();
}
}
private abstract class ServerBookmarksCriteria extends DataCriteria<Bookmark> {
@Override
public List<Bookmark> getData() throws Exception {
return getServerBookmarks();
}
}
@Before @Before
public void setUp() throws Exception { public void setUp() throws Exception {
TestThreadUtils.runOnUiThreadBlocking(() -> { TestThreadUtils.runOnUiThreadBlocking(() -> {
...@@ -134,12 +120,9 @@ public class BookmarksTest { ...@@ -134,12 +120,9 @@ public class BookmarksTest {
Bookmark bookmark = getClientBookmarks().get(0); Bookmark bookmark = getClientBookmarks().get(0);
modifyServerBookmark(bookmark.id, MODIFIED_TITLE, URL); modifyServerBookmark(bookmark.id, MODIFIED_TITLE, URL);
SyncTestUtil.triggerSync(); SyncTestUtil.triggerSync();
mSyncTestRule.pollInstrumentationThread(new ClientBookmarksCriteria() { mSyncTestRule.pollInstrumentationThread(() -> {
@Override Bookmark modifiedBookmark = getClientBookmarks().get(0);
public boolean isSatisfied(List<Bookmark> bookmarks) { Assert.assertEquals(MODIFIED_TITLE, modifiedBookmark.title);
Bookmark modifiedBookmark = bookmarks.get(0);
return modifiedBookmark.title.equals(MODIFIED_TITLE);
}
}); });
} }
...@@ -195,13 +178,11 @@ public class BookmarksTest { ...@@ -195,13 +178,11 @@ public class BookmarksTest {
mSyncTestRule.getFakeServerHelper().modifyBookmarkEntity( mSyncTestRule.getFakeServerHelper().modifyBookmarkEntity(
bookmark.id, TITLE, URL, folder.id); bookmark.id, TITLE, URL, folder.id);
SyncTestUtil.triggerSync(); SyncTestUtil.triggerSync();
mSyncTestRule.pollInstrumentationThread(new ClientBookmarksCriteria() { mSyncTestRule.pollInstrumentationThread(() -> {
@Override List<Bookmark> bookmarks = getClientBookmarks();
public boolean isSatisfied(List<Bookmark> bookmarks) { Bookmark modifiedBookmark = bookmarks.get(bookmarks.get(0).isFolder() ? 1 : 0);
Bookmark modifiedBookmark = bookmarks.get(bookmarks.get(0).isFolder() ? 1 : 0); // The "s" is prepended because the server adds one to the parentId.
// The "s" is prepended because the server adds one to the parentId. Assert.assertEquals("s" + folder.id, modifiedBookmark.parentId);
return modifiedBookmark.parentId.equals("s" + folder.id);
}
}); });
} }
...@@ -238,12 +219,10 @@ public class BookmarksTest { ...@@ -238,12 +219,10 @@ public class BookmarksTest {
modifyServerBookmarkFolder(folder.id, MODIFIED_TITLE); modifyServerBookmarkFolder(folder.id, MODIFIED_TITLE);
SyncTestUtil.triggerSync(); SyncTestUtil.triggerSync();
mSyncTestRule.pollInstrumentationThread(new ClientBookmarksCriteria() { mSyncTestRule.pollInstrumentationThread(() -> {
@Override Bookmark modifiedFolder = getClientBookmarks().get(0);
public boolean isSatisfied(List<Bookmark> bookmarks) { Assert.assertTrue(modifiedFolder.isFolder());
Bookmark modifiedFolder = bookmarks.get(0); Assert.assertEquals(MODIFIED_TITLE, modifiedFolder.title);
return modifiedFolder.isFolder() && modifiedFolder.title.equals(MODIFIED_TITLE);
}
}); });
} }
...@@ -331,12 +310,11 @@ public class BookmarksTest { ...@@ -331,12 +310,11 @@ public class BookmarksTest {
// Move on client, sync, and verify the move on the server. // Move on client, sync, and verify the move on the server.
moveClientBookmark(bookmarkId, folderId); moveClientBookmark(bookmarkId, folderId);
SyncTestUtil.triggerSync(); SyncTestUtil.triggerSync();
mSyncTestRule.pollInstrumentationThread(new ServerBookmarksCriteria() { mSyncTestRule.pollInstrumentationThread(() -> {
@Override List<Bookmark> serverBookmarks = getServerBookmarks();
public boolean isSatisfied(List<Bookmark> bookmarks) { Bookmark modifiedBookmark =
Bookmark modifiedBookmark = bookmarks.get(bookmarks.get(0).isFolder() ? 1 : 0); serverBookmarks.get(serverBookmarks.get(0).isFolder() ? 1 : 0);
return modifiedBookmark.parentId.equals(folder.id); Assert.assertEquals(folder.id, modifiedBookmark.parentId);
}
}); });
} }
...@@ -462,31 +440,42 @@ public class BookmarksTest { ...@@ -462,31 +440,42 @@ public class BookmarksTest {
() -> { mBookmarkBridge.moveBookmark(id, newParentId, 0 /* new index */); }); () -> { mBookmarkBridge.moveBookmark(id, newParentId, 0 /* new index */); });
} }
private List<Bookmark> getClientBookmarks() throws JSONException { private List<Bookmark> getClientBookmarks() {
List<Pair<String, JSONObject>> rawBookmarks = try {
SyncTestUtil.getLocalData(mSyncTestRule.getTargetContext(), BOOKMARKS_TYPE_STRING); List<Pair<String, JSONObject>> rawBookmarks = SyncTestUtil.getLocalData(
List<Bookmark> bookmarks = new ArrayList<Bookmark>(rawBookmarks.size()); mSyncTestRule.getTargetContext(), BOOKMARKS_TYPE_STRING);
for (Pair<String, JSONObject> rawBookmark : rawBookmarks) { List<Bookmark> bookmarks = new ArrayList<Bookmark>(rawBookmarks.size());
String id = rawBookmark.first; for (Pair<String, JSONObject> rawBookmark : rawBookmarks) {
JSONObject json = rawBookmark.second; String id = rawBookmark.first;
bookmarks.add(new Bookmark(id, json.getString("legacy_canonicalized_title"), JSONObject json = rawBookmark.second;
json.optString("url", null), json.getString("parent_id"))); bookmarks.add(new Bookmark(id, json.getString("legacy_canonicalized_title"),
json.optString("url", null), json.getString("parent_id")));
}
return bookmarks;
} catch (JSONException ex) {
Assert.fail(ex.toString());
return null;
} }
return bookmarks; }
}
private List<Bookmark> getServerBookmarks() {
private List<Bookmark> getServerBookmarks() throws Exception { try {
List<SyncEntity> entities = List<SyncEntity> entities =
mSyncTestRule.getFakeServerHelper().getSyncEntitiesByModelType(ModelType.BOOKMARKS); mSyncTestRule.getFakeServerHelper().getSyncEntitiesByModelType(
List<Bookmark> bookmarks = new ArrayList<Bookmark>(entities.size()); ModelType.BOOKMARKS);
for (SyncEntity entity : entities) { List<Bookmark> bookmarks = new ArrayList<Bookmark>(entities.size());
String id = entity.getIdString(); for (SyncEntity entity : entities) {
String parentId = entity.getParentIdString(); String id = entity.getIdString();
BookmarkSpecifics specifics = entity.getSpecifics().getBookmark(); String parentId = entity.getParentIdString();
bookmarks.add(new Bookmark(id, specifics.getLegacyCanonicalizedTitle(), BookmarkSpecifics specifics = entity.getSpecifics().getBookmark();
entity.getFolder() ? null : specifics.getUrl(), parentId)); bookmarks.add(new Bookmark(id, specifics.getLegacyCanonicalizedTitle(),
entity.getFolder() ? null : specifics.getUrl(), parentId));
}
return bookmarks;
} catch (ExecutionException ex) {
Assert.fail(ex.toString());
return null;
} }
return bookmarks;
} }
private void assertClientBookmarkCount(int count) throws JSONException { private void assertClientBookmarkCount(int count) throws JSONException {
...@@ -513,17 +502,10 @@ public class BookmarksTest { ...@@ -513,17 +502,10 @@ public class BookmarksTest {
} }
private void waitForServerBookmarkCountWithName(final int count, final String name) { private void waitForServerBookmarkCountWithName(final int count, final String name) {
mSyncTestRule.pollInstrumentationThread(new Criteria( mSyncTestRule.pollInstrumentationThread(
"Expected " + count + " remote bookmarks with name " + name + ".") { ()
@Override -> mSyncTestRule.getFakeServerHelper().verifyEntityCountByTypeAndName(
public boolean isSatisfied() { count, ModelType.BOOKMARKS, name),
try { "Expected " + count + " remote bookmarks with name " + name + ".");
return mSyncTestRule.getFakeServerHelper().verifyEntityCountByTypeAndName(
count, ModelType.BOOKMARKS, name);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
});
} }
} }
...@@ -36,7 +36,6 @@ import org.chromium.chrome.test.ChromeJUnit4ClassRunner; ...@@ -36,7 +36,6 @@ import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
import org.chromium.chrome.test.util.ActivityUtils; import org.chromium.chrome.test.util.ActivityUtils;
import org.chromium.chrome.test.util.browser.signin.SigninTestUtil; import org.chromium.chrome.test.util.browser.signin.SigninTestUtil;
import org.chromium.chrome.test.util.browser.sync.SyncTestUtil; import org.chromium.chrome.test.util.browser.sync.SyncTestUtil;
import org.chromium.content_public.browser.test.util.Criteria;
import org.chromium.content_public.browser.test.util.CriteriaHelper; import org.chromium.content_public.browser.test.util.CriteriaHelper;
import org.chromium.content_public.browser.test.util.TestThreadUtils; import org.chromium.content_public.browser.test.util.TestThreadUtils;
...@@ -209,12 +208,8 @@ public class FirstRunTest { ...@@ -209,12 +208,8 @@ public class FirstRunTest {
processFirstRunOnUiThread(); processFirstRunOnUiThread();
} }
CriteriaHelper.pollInstrumentationThread(new Criteria() { CriteriaHelper.pollInstrumentationThread(
@Override () -> FirstRunSignInProcessor.getFirstRunFlowSignInComplete());
public boolean isSatisfied() {
return FirstRunSignInProcessor.getFirstRunFlowSignInComplete();
}
});
return settingsActivity; return settingsActivity;
} }
......
...@@ -7,6 +7,7 @@ package org.chromium.chrome.browser.sync; ...@@ -7,6 +7,7 @@ package org.chromium.chrome.browser.sync;
import android.support.test.filters.LargeTest; import android.support.test.filters.LargeTest;
import android.util.Pair; import android.util.Pair;
import org.hamcrest.Matchers;
import org.json.JSONArray; import org.json.JSONArray;
import org.json.JSONException; import org.json.JSONException;
import org.json.JSONObject; import org.json.JSONObject;
...@@ -268,31 +269,21 @@ public class OpenTabsTest { ...@@ -268,31 +269,21 @@ public class OpenTabsTest {
private void waitForServerTabs(final String... urls) { private void waitForServerTabs(final String... urls) {
mSyncTestRule.pollInstrumentationThread( mSyncTestRule.pollInstrumentationThread(
new Criteria("Expected server open tabs: " + Arrays.toString(urls)) { ()
@Override -> mSyncTestRule.getFakeServerHelper().verifySessions(urls),
public boolean isSatisfied() { "Expected server open tabs: " + Arrays.toString(urls));
try {
return mSyncTestRule.getFakeServerHelper().verifySessions(urls);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
});
} }
private String getClientName() throws Exception { private String getClientName() throws Exception {
mSyncTestRule.pollInstrumentationThread(new Criteria( mSyncTestRule.pollInstrumentationThread(() -> {
"Expected at least one tab entity to exist.") { try {
@Override int size =
public boolean isSatisfied() { SyncTestUtil.getLocalData(mSyncTestRule.getTargetContext(), OPEN_TABS_TYPE)
try { .size();
return SyncTestUtil Assert.assertThat("Expected at least one tab entity to exist.", size,
.getLocalData(mSyncTestRule.getTargetContext(), OPEN_TABS_TYPE) Matchers.greaterThan(0));
.size() } catch (JSONException ex) {
> 0; Assert.fail(ex.toString());
} catch (JSONException e) {
return false;
}
} }
}); });
List<Pair<String, JSONObject>> tabEntities = List<Pair<String, JSONObject>> tabEntities =
......
...@@ -80,15 +80,10 @@ public class SyncTest { ...@@ -80,15 +80,10 @@ public class SyncTest {
public void testStopAndClear() { public void testStopAndClear() {
mSyncTestRule.setUpTestAccountAndSignIn(); mSyncTestRule.setUpTestAccountAndSignIn();
CriteriaHelper.pollUiThread( CriteriaHelper.pollUiThread(
new Criteria("Timed out checking that hasPrimaryAccount() == true") { ()
@Override -> IdentityServicesProvider.get().getIdentityManager().hasPrimaryAccount(),
public boolean isSatisfied() { "Timed out checking that hasPrimaryAccount() == true", SyncTestUtil.TIMEOUT_MS,
return IdentityServicesProvider.get() SyncTestUtil.INTERVAL_MS);
.getIdentityManager()
.hasPrimaryAccount();
}
},
SyncTestUtil.TIMEOUT_MS, SyncTestUtil.INTERVAL_MS);
mSyncTestRule.clearServerData(); mSyncTestRule.clearServerData();
...@@ -96,15 +91,10 @@ public class SyncTest { ...@@ -96,15 +91,10 @@ public class SyncTest {
Assert.assertNull(SigninTestUtil.getCurrentAccount()); Assert.assertNull(SigninTestUtil.getCurrentAccount());
Assert.assertFalse(SyncTestUtil.isSyncRequested()); Assert.assertFalse(SyncTestUtil.isSyncRequested());
CriteriaHelper.pollUiThread( CriteriaHelper.pollUiThread(
new Criteria("Timed out checking that hasPrimaryAccount() == false") { ()
@Override -> !IdentityServicesProvider.get().getIdentityManager().hasPrimaryAccount(),
public boolean isSatisfied() { "Timed out checking that hasPrimaryAccount() == false", SyncTestUtil.TIMEOUT_MS,
return !IdentityServicesProvider.get() SyncTestUtil.INTERVAL_MS);
.getIdentityManager()
.hasPrimaryAccount();
}
},
SyncTestUtil.TIMEOUT_MS, SyncTestUtil.INTERVAL_MS);
} }
/* /*
...@@ -138,12 +128,8 @@ public class SyncTest { ...@@ -138,12 +128,8 @@ public class SyncTest {
SigninHelper.get().validateAccountSettings(true); SigninHelper.get().validateAccountSettings(true);
}); });
CriteriaHelper.pollInstrumentationThread(new Criteria() { CriteriaHelper.pollInstrumentationThread(
@Override Criteria.equals(newAccount, SigninTestUtil::getCurrentAccount));
public boolean isSatisfied() {
return newAccount.equals(SigninTestUtil.getCurrentAccount());
}
});
SyncTestUtil.waitForSyncActive(); SyncTestUtil.waitForSyncActive();
} }
......
...@@ -52,6 +52,7 @@ import java.util.Collections; ...@@ -52,6 +52,7 @@ import java.util.Collections;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.concurrent.Callable;
import java.util.concurrent.Semaphore; import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
...@@ -69,25 +70,6 @@ public class SyncTestRule extends ChromeActivityTestRule<ChromeActivity> { ...@@ -69,25 +70,6 @@ public class SyncTestRule extends ChromeActivityTestRule<ChromeActivity> {
ModelType.PREFERENCES, ModelType.PROXY_TABS, ModelType.TYPED_URLS, ModelType.PREFERENCES, ModelType.PROXY_TABS, ModelType.TYPED_URLS,
})); }));
public abstract static class DataCriteria<T> extends Criteria {
public DataCriteria() {
super("Sync data criteria not met.");
}
public abstract boolean isSatisfied(List<T> data);
public abstract List<T> getData() throws Exception;
@Override
public boolean isSatisfied() {
try {
return isSatisfied(getData());
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
/** /**
* Simple activity that mimics a trusted vault key retrieval flow that succeeds immediately. * Simple activity that mimics a trusted vault key retrieval flow that succeeds immediately.
*/ */
...@@ -263,12 +245,9 @@ public class SyncTestRule extends ChromeActivityTestRule<ChromeActivity> { ...@@ -263,12 +245,9 @@ public class SyncTestRule extends ChromeActivityTestRule<ChromeActivity> {
public void clearServerData() { public void clearServerData() {
mFakeServerHelper.clearServerData(); mFakeServerHelper.clearServerData();
SyncTestUtil.triggerSync(); SyncTestUtil.triggerSync();
CriteriaHelper.pollUiThread(new Criteria("Timed out waiting for sync to stop.") { CriteriaHelper.pollUiThread(
@Override Criteria.equals(false, () -> ProfileSyncService.get().isSyncRequested()),
public boolean isSatisfied() { SyncTestUtil.TIMEOUT_MS, SyncTestUtil.INTERVAL_MS);
return !ProfileSyncService.get().isSyncRequested();
}
}, SyncTestUtil.TIMEOUT_MS, SyncTestUtil.INTERVAL_MS);
} }
/* /*
...@@ -309,11 +288,22 @@ public class SyncTestRule extends ChromeActivityTestRule<ChromeActivity> { ...@@ -309,11 +288,22 @@ public class SyncTestRule extends ChromeActivityTestRule<ChromeActivity> {
}); });
} }
@Deprecated // TODO(tedchoc): Remove this method once Criteria.equals returns a Runnable.
public void pollInstrumentationThread(Criteria criteria) { public void pollInstrumentationThread(Criteria criteria) {
CriteriaHelper.pollInstrumentationThread( CriteriaHelper.pollInstrumentationThread(
criteria, SyncTestUtil.TIMEOUT_MS, SyncTestUtil.INTERVAL_MS); criteria, SyncTestUtil.TIMEOUT_MS, SyncTestUtil.INTERVAL_MS);
} }
public void pollInstrumentationThread(Runnable criteria) {
CriteriaHelper.pollInstrumentationThread(
criteria, SyncTestUtil.TIMEOUT_MS, SyncTestUtil.INTERVAL_MS);
}
public void pollInstrumentationThread(Callable<Boolean> criteria, String reason) {
CriteriaHelper.pollInstrumentationThread(
criteria, reason, SyncTestUtil.TIMEOUT_MS, SyncTestUtil.INTERVAL_MS);
}
@Override @Override
public Statement apply(final Statement statement, final Description desc) { public Statement apply(final Statement statement, final Description desc) {
final Statement base = super.apply(new Statement() { final Statement base = super.apply(new Statement() {
......
...@@ -181,18 +181,12 @@ public class TypedUrlsTest { ...@@ -181,18 +181,12 @@ public class TypedUrlsTest {
private void waitForServerTypedUrlCountWithName(final int count, final String name) { private void waitForServerTypedUrlCountWithName(final int count, final String name) {
CriteriaHelper.pollInstrumentationThread( CriteriaHelper.pollInstrumentationThread(
new Criteria("Expected " + count + " server typed URLs with name " + name + ".") { ()
@Override -> {
public boolean isSatisfied() { return mSyncTestRule.getFakeServerHelper().verifyEntityCountByTypeAndName(
try { count, ModelType.TYPED_URLS, name);
return mSyncTestRule.getFakeServerHelper()
.verifyEntityCountByTypeAndName(
count, ModelType.TYPED_URLS, name);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}, },
"Expected " + count + " server typed URLs with name " + name + ".",
SyncTestUtil.TIMEOUT_MS, SyncTestUtil.INTERVAL_MS); SyncTestUtil.TIMEOUT_MS, SyncTestUtil.INTERVAL_MS);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment