Skip to content

Commit c7e1c2c

Browse files
committed
Fix tests
1 parent 8d462eb commit c7e1c2c

File tree

7 files changed

+65
-17
lines changed

7 files changed

+65
-17
lines changed

transport/transport-runtime/src/androidTest/java/com/google/android/datatransport/runtime/TestRuntimeComponent.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,13 @@
2020
import com.google.android.datatransport.runtime.scheduling.jobscheduling.SchedulerConfig;
2121
import com.google.android.datatransport.runtime.scheduling.jobscheduling.Uploader;
2222
import com.google.android.datatransport.runtime.scheduling.persistence.EventStoreModule;
23+
import com.google.android.datatransport.runtime.scheduling.persistence.SQLiteEventStore;
2324
import com.google.android.datatransport.runtime.time.Clock;
2425
import com.google.android.datatransport.runtime.time.Monotonic;
2526
import com.google.android.datatransport.runtime.time.WallTime;
2627
import dagger.BindsInstance;
2728
import dagger.Component;
29+
import java.io.IOException;
2830
import javax.inject.Singleton;
2931

3032
@Component(
@@ -38,6 +40,14 @@ abstract class TestRuntimeComponent extends TransportRuntimeComponent {
3840

3941
abstract TransportRuntime getTransportRuntime();
4042

43+
abstract SQLiteEventStore getEventStore();
44+
45+
@Override
46+
public void close() throws IOException {
47+
getEventStore().clearDb();
48+
super.close();
49+
}
50+
4151
@Component.Builder
4252
interface Builder {
4353
@BindsInstance

transport/transport-runtime/src/androidTest/java/com/google/android/datatransport/runtime/TestSchedulingModule.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,27 @@
1414

1515
package com.google.android.datatransport.runtime;
1616

17+
import static org.mockito.Mockito.spy;
18+
1719
import com.google.android.datatransport.runtime.scheduling.DefaultScheduler;
1820
import com.google.android.datatransport.runtime.scheduling.Scheduler;
21+
import com.google.android.datatransport.runtime.scheduling.jobscheduling.Uploader;
22+
import com.google.android.datatransport.runtime.scheduling.jobscheduling.WorkScheduler;
1923
import dagger.Binds;
2024
import dagger.Module;
25+
import dagger.Provides;
26+
import javax.inject.Provider;
27+
import javax.inject.Singleton;
2128

2229
@Module
2330
abstract class TestSchedulingModule {
2431

2532
@Binds
2633
abstract Scheduler scheduler(DefaultScheduler scheduler);
34+
35+
@Provides
36+
@Singleton
37+
static WorkScheduler workScheduler(Provider<Uploader> uploader) {
38+
return spy(new TestWorkScheduler(uploader));
39+
}
2740
}

transport/transport-runtime/src/androidTest/java/com/google/android/datatransport/runtime/TestWorkScheduler.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,23 +14,23 @@
1414

1515
package com.google.android.datatransport.runtime;
1616

17-
import android.content.Context;
17+
import com.google.android.datatransport.runtime.scheduling.jobscheduling.Uploader;
1818
import com.google.android.datatransport.runtime.scheduling.jobscheduling.WorkScheduler;
19+
import javax.inject.Provider;
1920

2021
public class TestWorkScheduler implements WorkScheduler {
2122

22-
private final Context context;
23+
private final Provider<Uploader> uploader;
2324

24-
public TestWorkScheduler(Context applicationContext) {
25-
this.context = applicationContext;
25+
TestWorkScheduler(Provider<Uploader> uploader) {
26+
this.uploader = uploader;
2627
}
2728

2829
@Override
2930
public void schedule(TransportContext transportContext, int attemptNumber) {
3031
if (attemptNumber > 2) {
3132
return;
3233
}
33-
TransportRuntime.initialize(context);
34-
TransportRuntime.getInstance().getUploader().upload(transportContext, attemptNumber, () -> {});
34+
uploader.get().upload(transportContext, attemptNumber, () -> {});
3535
}
3636
}

transport/transport-runtime/src/androidTest/java/com/google/android/datatransport/runtime/UploaderIntegrationTest.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import static org.mockito.ArgumentMatchers.eq;
2020
import static org.mockito.Mockito.doThrow;
2121
import static org.mockito.Mockito.mock;
22-
import static org.mockito.Mockito.spy;
2322
import static org.mockito.Mockito.times;
2423
import static org.mockito.Mockito.verify;
2524
import static org.mockito.Mockito.when;
@@ -53,17 +52,17 @@ public class UploaderIntegrationTest {
5352
private final TransportBackend mockBackend = mock(TransportBackend.class);
5453
private final BackendRegistry mockRegistry = mock(BackendRegistry.class);
5554
private final Context context = InstrumentationRegistry.getInstrumentation().getContext();
56-
private final WorkScheduler spyScheduler = spy(new TestWorkScheduler(context));
5755

58-
private final TransportRuntimeComponent component =
56+
private final UploaderTestRuntimeComponent component =
5957
DaggerUploaderTestRuntimeComponent.builder()
6058
.setApplicationContext(context)
6159
.setBackendRegistry(mockRegistry)
62-
.setWorkScheduler(spyScheduler)
6360
.setEventClock(() -> 3)
6461
.setUptimeClock(() -> 1)
6562
.build();
6663

64+
private final WorkScheduler spyScheduler = component.getWorkScheduler();
65+
6766
@Rule public final TransportRuntimeRule runtimeRule = new TransportRuntimeRule(component);
6867

6968
@Before

transport/transport-runtime/src/androidTest/java/com/google/android/datatransport/runtime/UploaderTestRuntimeComponent.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,14 @@
1717
import android.content.Context;
1818
import com.google.android.datatransport.runtime.backends.BackendRegistry;
1919
import com.google.android.datatransport.runtime.scheduling.jobscheduling.WorkScheduler;
20-
import com.google.android.datatransport.runtime.scheduling.persistence.EventStore;
20+
import com.google.android.datatransport.runtime.scheduling.persistence.SQLiteEventStore;
2121
import com.google.android.datatransport.runtime.scheduling.persistence.SpyEventStoreModule;
2222
import com.google.android.datatransport.runtime.time.Clock;
2323
import com.google.android.datatransport.runtime.time.Monotonic;
2424
import com.google.android.datatransport.runtime.time.WallTime;
2525
import dagger.BindsInstance;
2626
import dagger.Component;
27+
import java.io.IOException;
2728
import javax.inject.Singleton;
2829

2930
@Component(
@@ -37,16 +38,21 @@ abstract class UploaderTestRuntimeComponent extends TransportRuntimeComponent {
3738

3839
abstract TransportRuntime getTransportRuntime();
3940

40-
abstract EventStore getEventStore();
41+
abstract SQLiteEventStore getEventStore();
42+
43+
abstract WorkScheduler getWorkScheduler();
44+
45+
@Override
46+
public void close() throws IOException {
47+
getEventStore().clearDb();
48+
super.close();
49+
}
4150

4251
@Component.Builder
4352
interface Builder {
4453
@BindsInstance
4554
Builder setApplicationContext(Context applicationContext);
4655

47-
@BindsInstance
48-
Builder setWorkScheduler(WorkScheduler workScheduler);
49-
5056
@BindsInstance
5157
Builder setBackendRegistry(BackendRegistry registry);
5258

transport/transport-runtime/src/androidTest/java/com/google/android/datatransport/runtime/scheduling/persistence/SpyEventStoreModule.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717
import static org.mockito.Mockito.spy;
1818

1919
import com.google.android.datatransport.runtime.synchronization.SynchronizationGuard;
20+
import com.google.android.datatransport.runtime.time.Clock;
21+
import com.google.android.datatransport.runtime.time.Monotonic;
22+
import com.google.android.datatransport.runtime.time.WallTime;
2023
import dagger.Binds;
2124
import dagger.Module;
2225
import dagger.Provides;
@@ -32,10 +35,17 @@ static EventStoreConfig storeConfig() {
3235

3336
@Provides
3437
@Singleton
35-
static EventStore eventStore(SQLiteEventStore store) {
36-
return spy(store);
38+
static SQLiteEventStore sqliteEventStore(
39+
@WallTime Clock wallClock,
40+
@Monotonic Clock clock,
41+
EventStoreConfig config,
42+
SchemaManager schemaManager) {
43+
return spy(new SQLiteEventStore(wallClock, clock, config, schemaManager));
3744
}
3845

46+
@Binds
47+
abstract EventStore eventStore(SQLiteEventStore store);
48+
3949
@Binds
4050
abstract SynchronizationGuard synchronizationGuard(SQLiteEventStore store);
4151

transport/transport-runtime/src/main/java/com/google/android/datatransport/runtime/scheduling/persistence/SQLiteEventStore.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,16 @@ public void close() {
308308
schemaManager.close();
309309
}
310310

311+
@VisibleForTesting
312+
public void clearDb() {
313+
inTransaction(
314+
db -> {
315+
db.delete("events", null, new String[] {});
316+
db.delete("transport_contexts", null, new String[] {});
317+
return null;
318+
});
319+
}
320+
311321
private static byte[] maybeBase64Decode(@Nullable String value) {
312322
if (value == null) {
313323
return null;

0 commit comments

Comments
 (0)