Skip to content

Commit 03e2b10

Browse files
committed
Allow using session subscriber for unit tests
1 parent 3145a71 commit 03e2b10

File tree

3 files changed

+25
-6
lines changed

3 files changed

+25
-6
lines changed

firebase-perf/src/main/java/com/google/firebase/perf/FirebasePerformance.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@
4444
import com.google.firebase.perf.util.Timer;
4545
import com.google.firebase.remoteconfig.RemoteConfigComponent;
4646
import com.google.firebase.sessions.api.FirebaseSessionsDependencies;
47+
import com.google.firebase.sessions.api.SessionSubscriber;
48+
4749
import java.lang.annotation.Retention;
4850
import java.lang.annotation.RetentionPolicy;
4951
import java.net.URL;
@@ -94,6 +96,8 @@ public class FirebasePerformance implements FirebasePerformanceAttributable {
9496
// once during initialization and cache it.
9597
private final ImmutableBundle mMetadataBundle;
9698

99+
private final SessionSubscriber sessionSubscriber;
100+
97101
/** Valid HttpMethods for manual network APIs */
98102
@StringDef({
99103
HttpMethod.GET,
@@ -167,6 +171,8 @@ public static FirebasePerformance getInstance() {
167171
this.mPerformanceCollectionForceEnabledState = false;
168172
this.configResolver = configResolver;
169173
this.mMetadataBundle = new ImmutableBundle(new Bundle());
174+
this.sessionSubscriber = new FirebasePerformanceSessionSubscriber(false);
175+
FirebaseSessionsDependencies.register(sessionSubscriber);
170176
return;
171177
}
172178

@@ -183,8 +189,8 @@ public static FirebasePerformance getInstance() {
183189
sessionManager.setApplicationContext(appContext);
184190

185191
mPerformanceCollectionForceEnabledState = configResolver.getIsPerformanceCollectionEnabled();
186-
FirebaseSessionsDependencies.register(
187-
new FirebasePerformanceSessionSubscriber(isPerformanceCollectionEnabled()));
192+
sessionSubscriber = new FirebasePerformanceSessionSubscriber(isPerformanceCollectionEnabled());
193+
FirebaseSessionsDependencies.register(sessionSubscriber);
188194

189195
if (logger.isLogcatEnabled() && isPerformanceCollectionEnabled()) {
190196
logger.info(
@@ -460,4 +466,9 @@ private static ImmutableBundle extractMetadata(Context appContext) {
460466
Boolean getPerformanceCollectionForceEnabledState() {
461467
return mPerformanceCollectionForceEnabledState;
462468
}
469+
470+
@VisibleForTesting
471+
SessionSubscriber getSessionSubscriber() {
472+
return sessionSubscriber;
473+
}
463474
}

firebase-perf/src/main/java/com/google/firebase/perf/session/PerfSession.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ public boolean isSessionRunningTooLong() {
129129
public com.google.firebase.perf.v1.PerfSession build() {
130130
// TODO(b/394127311): Switch to using AQS.
131131
com.google.firebase.perf.v1.PerfSession.Builder sessionMetric =
132-
com.google.firebase.perf.v1.PerfSession.newBuilder().setSessionId(sessionId);
132+
com.google.firebase.perf.v1.PerfSession.newBuilder().setSessionId(aqsSessionId);
133133

134134
// If gauge collection is enabled, enable gauge collection verbosity.
135135
if (isGaugeAndEventCollectionEnabled) {

firebase-perf/src/test/java/com/google/firebase/perf/FirebasePerformanceTestBase.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,15 @@
2626
import com.google.firebase.perf.session.PerfSession;
2727
import com.google.firebase.perf.session.SessionManager;
2828
import com.google.firebase.perf.util.ImmutableBundle;
29+
import com.google.firebase.sessions.FirebaseSessions;
30+
import com.google.firebase.sessions.api.FirebaseSessionsDependencies;
31+
import com.google.firebase.sessions.api.SessionSubscriber;
32+
2933
import org.junit.After;
3034
import org.junit.Before;
3135
import org.robolectric.shadows.ShadowPackageManager;
3236

3337
public class FirebasePerformanceTestBase {
34-
3538
/**
3639
* The following values are needed by Firebase to identify the project and application that all
3740
* data stored in Firebase databases gets associated with. This is important to determine data
@@ -72,6 +75,7 @@ public void setUpFirebaseApp() {
7275
.setProjectId(FAKE_FIREBASE_PROJECT_ID)
7376
.build();
7477
FirebaseApp.initializeApp(appContext, options);
78+
forceAppQualitySession();
7579
}
7680

7781
@After
@@ -93,11 +97,15 @@ protected static void forceNonVerboseSession() {
9397
forceVerboseSessionWithSamplingPercentage(0);
9498
}
9599

100+
protected static void forceAppQualitySession() {
101+
SessionSubscriber sessionSubscriber = FirebasePerformance.getInstance().getSessionSubscriber();
102+
sessionSubscriber.onSessionChanged(new SessionSubscriber.SessionDetails("testAqsSession"));
103+
}
104+
96105
private static void forceVerboseSessionWithSamplingPercentage(long samplingPercentage) {
97106
Bundle bundle = new Bundle();
98107
bundle.putFloat("sessions_sampling_percentage", samplingPercentage);
99108
ConfigResolver.getInstance().setMetadataBundle(new ImmutableBundle(bundle));
100-
101-
SessionManager.getInstance().setPerfSession(PerfSession.createWithId("sessionId"));
109+
forceAppQualitySession();
102110
}
103111
}

0 commit comments

Comments
 (0)