Skip to content

Commit a10a11e

Browse files
committed
more test cleanup
1 parent 1ee7f21 commit a10a11e

File tree

1 file changed

+33
-66
lines changed
  • firebase-database/src/androidTest/java/com/google/firebase/database

1 file changed

+33
-66
lines changed

firebase-database/src/androidTest/java/com/google/firebase/database/QueryTest.java

Lines changed: 33 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@
3636
import java.util.Arrays;
3737
import java.util.List;
3838
import java.util.Map;
39-
import java.util.Objects;
4039
import java.util.UUID;
4140
import java.util.concurrent.ExecutionException;
4241
import java.util.concurrent.Semaphore;
@@ -3422,50 +3421,48 @@ private static FirebaseApp appForDatabaseUrl(String url, String name) {
34223421
@Test
34233422
public void emptyQueryGet() throws DatabaseException, InterruptedException {
34243423
FirebaseApp app =
3425-
appForDatabaseUrl(IntegrationTestValues.getAltNamespace(), UUID.randomUUID().toString());
3424+
appForDatabaseUrl(IntegrationTestValues.getNamespace(), UUID.randomUUID().toString());
34263425
FirebaseDatabase db = FirebaseDatabase.getInstance(app);
3427-
db.useEmulator("10.0.2.2", 9000);
3428-
DatabaseReference node = db.getReference();
34293426
try {
3430-
Tasks.await(node.get());
3427+
Tasks.await(db.getReference("dummy/").setValue(42L));
3428+
assertNull(Tasks.await(db.getReference("null/").get()).getValue());
34313429
} catch (ExecutionException e) {
3432-
assertEquals(e.getCause().getMessage(), "Client is offline");
3433-
return;
3430+
fail(e.getMessage());
34343431
}
3435-
fail();
34363432
}
34373433

34383434
@Test
34393435
public void offlineQueryGet() throws DatabaseException, InterruptedException {
34403436
FirebaseApp app =
3441-
appForDatabaseUrl(IntegrationTestValues.getAltNamespace(), UUID.randomUUID().toString());
3437+
appForDatabaseUrl(IntegrationTestValues.getNamespace(), UUID.randomUUID().toString());
34423438
FirebaseDatabase db = FirebaseDatabase.getInstance(app);
3443-
db.useEmulator("10.0.2.2", 9000);
34443439
DatabaseReference node = db.getReference();
3445-
DatabaseConfig cfg = IntegrationTestHelpers.newTestConfig();
3446-
IntegrationTestHelpers.goOffline(cfg);
3440+
try {
3441+
Tasks.await(node.setValue(42L));
3442+
} catch (ExecutionException e) {
3443+
fail();
3444+
}
3445+
db.goOffline();
34473446
try {
34483447
Tasks.await(node.get());
34493448
} catch (ExecutionException e) {
34503449
assertEquals(e.getCause().getMessage(), "Client is offline");
34513450
return;
34523451
}
3453-
fail();
3452+
fail("Client get succeeded even though offline.");
34543453
}
34553454

34563455
@Test
34573456
public void getQueryBasic() throws DatabaseException, InterruptedException {
34583457
FirebaseApp app =
3459-
appForDatabaseUrl(IntegrationTestValues.getAltNamespace(), UUID.randomUUID().toString());
3458+
appForDatabaseUrl(IntegrationTestValues.getNamespace(), UUID.randomUUID().toString());
34603459
FirebaseDatabase db = FirebaseDatabase.getInstance(app);
3461-
db.useEmulator("10.0.2.2", 9000);
34623460
DatabaseReference node = db.getReference();
3463-
final Semaphore semaphore = new Semaphore(0);
34643461
try {
34653462
Tasks.await(node.setValue(42));
34663463
assertEquals(42L, Tasks.await(node.get()).getValue());
34673464
} catch (ExecutionException e) {
3468-
fail();
3465+
fail(e.getMessage());
34693466
}
34703467
}
34713468

@@ -3475,57 +3472,31 @@ public void getQueryCached()
34753472
FirebaseApp app =
34763473
appForDatabaseUrl(IntegrationTestValues.getAltNamespace(), UUID.randomUUID().toString());
34773474
FirebaseDatabase db = FirebaseDatabase.getInstance(app);
3478-
db.useEmulator("10.0.2.2", 9000);
34793475
DatabaseReference ref = db.getReference();
3480-
DatabaseConfig cfg = IntegrationTestHelpers.newTestConfig();
3481-
ReadFuture future = ReadFuture.untilNonNull(ref);
3482-
ref.setValue(42);
3483-
assertEquals(42L, future.waitForLastValue());
3484-
IntegrationTestHelpers.goOffline(cfg);
3485-
try {
3486-
assertEquals(42L, Tasks.await(ref.get()).getValue());
3487-
} catch (ExecutionException e) {
3488-
fail();
3489-
}
3490-
}
3491-
3492-
@Test
3493-
public void getQueryHitsCacheWhenOffline()
3494-
throws InterruptedException, ExecutionException, TimeoutException, TestFailure {
3495-
FirebaseApp readerApp =
3496-
appForDatabaseUrl(IntegrationTestValues.getNamespace(), UUID.randomUUID().toString());
3497-
FirebaseApp writerApp =
3498-
appForDatabaseUrl(IntegrationTestValues.getNamespace(), UUID.randomUUID().toString());
3499-
FirebaseDatabase readerDb = FirebaseDatabase.getInstance(readerApp);
3500-
FirebaseDatabase writerDb = FirebaseDatabase.getInstance(writerApp);
3501-
readerDb.useEmulator("10.0.2.2", 9000);
3502-
writerDb.useEmulator("10.0.2.2", 9000);
3503-
DatabaseReference reader = readerDb.getReference("/foo");
3504-
DatabaseReference writer = writerDb.getReference("/foo");
3505-
3506-
WriteFuture write = new WriteFuture(writer, 42L);
3507-
assertNull(write.timedGet());
3508-
35093476
final Semaphore semaphore = new Semaphore(0);
3510-
reader.addValueEventListener(
3477+
ValueEventListener listener =
35113478
new ValueEventListener() {
35123479
@Override
35133480
public void onDataChange(@NonNull DataSnapshot snapshot) {
3514-
if (Objects.requireNonNull(snapshot.getValue()).equals(42L)) {
3481+
if (snapshot.getValue() != null && snapshot.getValue().equals(42L)) {
35153482
semaphore.release();
35163483
}
35173484
}
35183485

35193486
@Override
35203487
public void onCancelled(@NonNull DatabaseError error) {}
3521-
});
3488+
};
3489+
ref.addValueEventListener(listener);
3490+
ref.setValue(42L);
35223491
IntegrationTestHelpers.waitFor(semaphore);
3523-
reader.getDatabase().goOffline();
3492+
db.goOffline();
35243493
try {
3525-
DataSnapshot snapshot = Tasks.await(reader.get());
3526-
assertEquals(42L, snapshot.getValue());
3494+
// Since we still have a listener on `ref`, the 42L should be cached here.
3495+
assertEquals(42L, Tasks.await(ref.get()).getValue());
35273496
} catch (ExecutionException e) {
3528-
fail();
3497+
fail(e.getMessage());
3498+
} finally {
3499+
ref.removeEventListener(listener);
35293500
}
35303501
}
35313502

@@ -3539,38 +3510,34 @@ public void getQuerySkipsCacheWhenOnline()
35393510
appForDatabaseUrl(IntegrationTestValues.getNamespace(), UUID.randomUUID().toString());
35403511
FirebaseDatabase readerDb = FirebaseDatabase.getInstance(readerApp);
35413512
FirebaseDatabase writerDb = FirebaseDatabase.getInstance(writerApp);
3542-
readerDb.useEmulator("10.0.2.2", 9000);
3543-
writerDb.useEmulator("10.0.2.2", 9000);
35443513
DatabaseReference reader = readerDb.getReference();
35453514
DatabaseReference writer = writerDb.getReference();
35463515

3516+
final Semaphore semaphore = new Semaphore(0);
35473517
reader.addValueEventListener(
35483518
new ValueEventListener() {
35493519
@Override
3550-
public void onDataChange(@NonNull DataSnapshot snapshot) {}
3520+
public void onDataChange(@NonNull DataSnapshot snapshot) {
3521+
if (snapshot.getValue() != null && snapshot.getValue().equals(42L)) {
3522+
semaphore.release();
3523+
}
3524+
}
35513525

35523526
@Override
35533527
public void onCancelled(@NonNull DatabaseError error) {}
35543528
});
35553529

35563530
WriteFuture write = new WriteFuture(writer, 42L);
35573531
assertNull(write.timedGet());
3558-
3559-
final Semaphore semaphore = new Semaphore(0);
3560-
3561-
try {
3562-
assertEquals(42L, Tasks.await(reader.get()).getValue());
3563-
} catch (ExecutionException e) {
3564-
fail();
3565-
}
3532+
IntegrationTestHelpers.waitFor(semaphore);
35663533

35673534
write = new WriteFuture(writer, 43L);
35683535
assertNull(write.timedGet());
35693536

35703537
try {
35713538
assertEquals(43L, Tasks.await(reader.get()).getValue());
35723539
} catch (ExecutionException e) {
3573-
fail();
3540+
fail(e.getMessage());
35743541
}
35753542
}
35763543

0 commit comments

Comments
 (0)