@Test
public void testDeepUpdate() throws InterruptedException, TestFailure, TimeoutException {
List<DatabaseReference> refs = IntegrationTestUtils.getRandomNode(masterApp, 2);
final DatabaseReference writer = refs.get(0);
final DatabaseReference reader = refs.get(1);
final ReadFuture readFuture = ReadFuture.untilCount(writer, 2);
writer.setValueAsync(
new MapBuilder().put("a", new MapBuilder().put("aa", 1).put("ab", 2).build()).build());
Map<String, Object> expected = new MapBuilder()
.put("a", new MapBuilder().put("aa", 10L).put("ab", 20L).build()).build();
Map<String, Object> update = new MapBuilder().put("a/aa", 10).put(".priority", 3.0)
.put("a/ab", new MapBuilder().put(".priority", 2.0).put(".value", 20).build()).build();
final Semaphore semaphore = new Semaphore(0);
writer.updateChildren(update, new DatabaseReference.CompletionListener() {
@Override
public void onComplete(DatabaseError error, DatabaseReference ref) {
assertNull(error);
semaphore.release(1);
}
});
TestHelpers.waitFor(semaphore);
DataSnapshot snap = TestHelpers.getSnap(reader);
TestHelpers.assertDeepEquals(expected, snap.getValue());
assertEquals(3.0, snap.getPriority());
snap = readFuture.timedGet().get(1).getSnapshot();
TestHelpers.assertDeepEquals(expected, snap.getValue());
assertEquals(3.0, snap.getPriority());
snap = TestHelpers.getSnap(reader.child("a/ab"));
assertEquals(2.0, snap.getPriority());
}
DataTestIT.java 文件源码
java
阅读 40
收藏 0
点赞 0
评论 0
项目:firebase-admin-java
作者:
评论列表
文章目录