Skip to content

Commit e0e561d

Browse files
committed
Revert some changes - and add a relevant unit test
1 parent 83a1cfc commit e0e561d

File tree

5 files changed

+60
-35
lines changed

5 files changed

+60
-35
lines changed

firebase-perf/src/main/java/com/google/firebase/perf/logging/FirebaseSessionsEnforcementCheck.kt

Lines changed: 1 addition & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -17,47 +17,19 @@
1717
package com.google.firebase.perf.logging
1818

1919
import com.google.firebase.perf.session.isLegacy
20-
import com.google.firebase.perf.v1.NetworkRequestMetric
21-
import com.google.firebase.perf.v1.TraceMetric
22-
import java.util.Collections
23-
import com.google.firebase.perf.v1.PerfSession as ProtoPerfSession
2420

2521
class FirebaseSessionsEnforcementCheck {
2622
companion object {
2723
/** When enabled, failed preconditions will cause assertion errors for debugging. */
2824
@JvmStatic var enforcement: Boolean = false
2925
private var logger: AndroidLogger = AndroidLogger.getInstance()
3026

31-
@JvmStatic
32-
fun filterLegacySessions(trace: TraceMetric): TraceMetric {
33-
val updatedTrace = trace.toBuilder().clearPerfSessions()
34-
filterLegacySessions(trace.perfSessionsList).forEach { updatedTrace.addPerfSessions(it) }
35-
return updatedTrace.build()
36-
}
37-
38-
@JvmStatic
39-
fun filterLegacySessions(networkRequestMetric: NetworkRequestMetric): NetworkRequestMetric {
40-
val updatedNetworkRequestMetric = networkRequestMetric.toBuilder().clearPerfSessions()
41-
filterLegacySessions(networkRequestMetric.perfSessionsList).forEach { updatedNetworkRequestMetric.addPerfSessions(it) }
42-
return updatedNetworkRequestMetric.build()
43-
}
44-
4527
@JvmStatic
4628
fun checkSession(sessionId: String, failureMessage: String) {
4729
if (sessionId.isLegacy()) {
48-
logger.verbose("legacy session ${sessionId}: $failureMessage")
30+
logger.verbose("Legacy Session ${sessionId}: $failureMessage")
4931
assert(!enforcement) { failureMessage }
5032
}
5133
}
52-
53-
private fun filterLegacySessions(sessions: List<ProtoPerfSession>): List<ProtoPerfSession> {
54-
return if (sessions.count() > 0 && sessions[0].sessionId.isLegacy()) {
55-
val updatedSessions = sessions.toMutableList<ProtoPerfSession>()
56-
Collections.swap(updatedSessions, 0, 1)
57-
updatedSessions
58-
} else {
59-
sessions
60-
}
61-
}
6234
}
6335
}

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
import android.content.Context;
1919
import androidx.annotation.Keep;
2020
import androidx.annotation.VisibleForTesting;
21-
import com.google.firebase.perf.logging.FirebaseSessionsEnforcementCheck;
2221
import com.google.firebase.perf.session.gauges.GaugeManager;
2322
import com.google.firebase.perf.v1.GaugeMetadata;
2423
import com.google.firebase.perf.v1.GaugeMetric;

firebase-perf/src/main/java/com/google/firebase/perf/transport/TransportManager.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,10 @@
1414

1515
package com.google.firebase.perf.transport;
1616

17+
import static com.google.firebase.perf.logging.FirebaseSessionsEnforcementCheck.checkSession;
1718
import static com.google.firebase.perf.util.AppProcessesProvider.getProcessName;
1819
import static java.util.concurrent.TimeUnit.MILLISECONDS;
1920
import static java.util.concurrent.TimeUnit.MINUTES;
20-
import static com.google.firebase.perf.logging.FirebaseSessionsEnforcementCheck.filterLegacySessions;
21-
import static com.google.firebase.perf.logging.FirebaseSessionsEnforcementCheck.checkSession;
2221

2322
import android.annotation.SuppressLint;
2423
import android.content.Context;
@@ -302,7 +301,7 @@ public void log(final TraceMetric traceMetric) {
302301
*/
303302
public void log(final TraceMetric traceMetric, final ApplicationProcessState appState) {
304303
executorService.execute(
305-
() -> syncLog(PerfMetric.newBuilder().setTraceMetric(filterLegacySessions(traceMetric)), appState));
304+
() -> syncLog(PerfMetric.newBuilder().setTraceMetric(traceMetric), appState));
306305
}
307306

308307
/**
@@ -332,7 +331,7 @@ public void log(
332331
executorService.execute(
333332
() ->
334333
syncLog(
335-
PerfMetric.newBuilder().setNetworkRequestMetric(filterLegacySessions(networkRequestMetric)), appState));
334+
PerfMetric.newBuilder().setNetworkRequestMetric(networkRequestMetric), appState));
336335
}
337336

338337
/**
@@ -358,7 +357,7 @@ public void log(final GaugeMetric gaugeMetric) {
358357
* {@link #isAllowedToDispatch(PerfMetric)}).
359358
*/
360359
public void log(final GaugeMetric gaugeMetric, final ApplicationProcessState appState) {
361-
checkSession(gaugeMetric.getSessionId(), "Logging GaugeMetric with Legacy Session ID.");
360+
checkSession(gaugeMetric.getSessionId(), "log(GaugeMetric)");
362361
executorService.execute(
363362
() -> syncLog(PerfMetric.newBuilder().setGaugeMetric(gaugeMetric), appState));
364363
}

firebase-perf/src/test/java/com/google/firebase/perf/session/FirebaseSessionsTestHelper.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,5 @@ fun createTestSession(suffix: Int): PerfSession {
2525
}
2626

2727
fun testSessionId(suffix: Int): String = "abc$suffix"
28+
29+
fun testLegacySessionId(suffix: Int): String = "zabc$suffix"

firebase-perf/src/test/java/com/google/firebase/perf/session/PerfSessionTest.java

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@
1515
package com.google.firebase.perf.session;
1616

1717
import static com.google.common.truth.Truth.assertThat;
18+
import static com.google.firebase.perf.session.FirebaseSessionsHelperKt.isLegacy;
1819
import static com.google.firebase.perf.session.FirebaseSessionsTestHelperKt.createTestSession;
20+
import static com.google.firebase.perf.session.FirebaseSessionsTestHelperKt.testLegacySessionId;
1921
import static com.google.firebase.perf.session.FirebaseSessionsTestHelperKt.testSessionId;
2022
import static com.google.firebase.perf.util.Constants.PREFS_NAME;
2123
import static org.mockito.Mockito.mock;
@@ -224,6 +226,57 @@ public void testBuildAndSortMovesTheVerboseSessionToTop() {
224226
assertThat(PerfSession.isVerbose(perfSessions[0])).isTrue();
225227
}
226228

229+
@Test
230+
public void testBuildAndSortMovesTheVerboseSessionToTop_legacySession() {
231+
// Force all the sessions from now onwards to be non-verbose
232+
forceNonVerboseSession();
233+
234+
// Next, create 3 non-verbose sessions, including a legacy session.
235+
List<PerfSession> sessions = new ArrayList<>();
236+
sessions.add(PerfSession.createWithId(testLegacySessionId(1)));
237+
sessions.add(PerfSession.createWithId(testSessionId(2)));
238+
sessions.add(PerfSession.createWithId(testSessionId(3)));
239+
240+
// Force all the sessions from now onwards to be verbose
241+
forceVerboseSession();
242+
243+
// Next, create 2 verbose sessions
244+
sessions.add(PerfSession.createWithId(testSessionId(4)));
245+
sessions.add(PerfSession.createWithId(testSessionId(5)));
246+
247+
// Verify that the first session in the list of sessions was not verbose
248+
assertThat(sessions.get(0).isVerbose()).isFalse();
249+
250+
com.google.firebase.perf.v1.PerfSession[] perfSessions =
251+
PerfSession.buildAndSort(ImmutableList.copyOf(sessions));
252+
253+
// Verify that after building the proto objects for PerfSessions, the first session in the array
254+
// of proto objects is a verbose session
255+
assertThat(PerfSession.isVerbose(perfSessions[0])).isTrue();
256+
}
257+
258+
@Test
259+
public void testBuildAndSortKeepsLegacySessionAtTopWithNoVerboseSessions() {
260+
// Force all the sessions from now onwards to be non-verbose
261+
forceNonVerboseSession();
262+
263+
// Next, create 3 non-verbose sessions, including a legacy session.
264+
List<PerfSession> sessions = new ArrayList<>();
265+
sessions.add(PerfSession.createWithId(testLegacySessionId(1)));
266+
sessions.add(PerfSession.createWithId(testSessionId(2)));
267+
sessions.add(PerfSession.createWithId(testSessionId(3)));
268+
269+
// Verify that the first session in the list of sessions was legacy.
270+
assertThat(isLegacy(sessions.get(0))).isTrue();
271+
272+
com.google.firebase.perf.v1.PerfSession[] perfSessions =
273+
PerfSession.buildAndSort(ImmutableList.copyOf(sessions));
274+
275+
// Verify that after building the proto objects for PerfSessions, the first session in the array
276+
// of proto objects is a legacy session.
277+
assertThat(isLegacy(perfSessions[0].getSessionId())).isTrue();
278+
}
279+
227280
@Test
228281
public void testIsExpiredReturnsFalseWhenCurrentSessionLengthIsLessThanMaxSessionLength() {
229282
Timer mockTimer = mock(Timer.class);

0 commit comments

Comments
 (0)