Search in sources :

Example 81 with NetworkRequestMetric

use of com.google.firebase.perf.v1.NetworkRequestMetric in project firebase-android-sdk by firebase.

the class TransportManagerTest method validNetworkMetric_nullInstallationsDuringInitButValidValueLater_getLogged.

@Test
public void validNetworkMetric_nullInstallationsDuringInitButValidValueLater_getLogged() {
    // Null Installations during initialization
    mockInstallationsGetId(null);
    initializeTransport(true);
    fakeExecutorService.runAll();
    // Valid FID later
    mockInstallationsGetId(FAKE_FIREBASE_INSTALLATIONS_ID);
    NetworkRequestMetric validNetworkRequest = createValidNetworkRequestMetric();
    testTransportManager.log(validNetworkRequest);
    fakeExecutorService.runAll();
    PerfMetric loggedPerfMetric = getLastLoggedEvent(times(1));
    assertThat(loggedPerfMetric.getNetworkRequestMetric()).isEqualTo(validNetworkRequest);
    validateApplicationInfo(loggedPerfMetric, ApplicationProcessState.APPLICATION_PROCESS_STATE_UNKNOWN);
}
Also used : PerfMetric(com.google.firebase.perf.v1.PerfMetric) NetworkRequestMetric(com.google.firebase.perf.v1.NetworkRequestMetric) Test(org.junit.Test)

Example 82 with NetworkRequestMetric

use of com.google.firebase.perf.v1.NetworkRequestMetric in project firebase-android-sdk by firebase.

the class TransportManagerTest method validNetworkMetric_unknownApplicationProcessState_getLogged.

@Test
public void validNetworkMetric_unknownApplicationProcessState_getLogged() {
    NetworkRequestMetric validNetworkRequest = createValidNetworkRequestMetric();
    testTransportManager.log(validNetworkRequest);
    fakeExecutorService.runAll();
    PerfMetric loggedPerfMetric = getLastLoggedEvent(times(1));
    assertThat(loggedPerfMetric.getNetworkRequestMetric()).isEqualTo(validNetworkRequest);
    validateApplicationInfo(loggedPerfMetric, ApplicationProcessState.APPLICATION_PROCESS_STATE_UNKNOWN);
}
Also used : PerfMetric(com.google.firebase.perf.v1.PerfMetric) NetworkRequestMetric(com.google.firebase.perf.v1.NetworkRequestMetric) Test(org.junit.Test)

Example 83 with NetworkRequestMetric

use of com.google.firebase.perf.v1.NetworkRequestMetric in project firebase-android-sdk by firebase.

the class TransportManagerTest method logTraces_fewTracesAfterOtherCappedEventsAndTransportNotInitialized_cappedEventsDoesNotCauseOtherEventsToCap.

@Test
public void logTraces_fewTracesAfterOtherCappedEventsAndTransportNotInitialized_cappedEventsDoesNotCauseOtherEventsToCap() {
    // 1. Transport is not initialized in the beginning
    initializeTransport(false);
    // 2. Log multiple Network Requests (any one of PerfMetric event other than TraceMetric) such
    // that they are capped
    int maxNetworkRequestsCacheSize = // only 50 NetworkRequestMetric events are allowed to cache
    50;
    int totalNetworkRequestEvents = maxNetworkRequestsCacheSize + 10;
    for (int i = 0; i < totalNetworkRequestEvents; i++) {
        testTransportManager.log(createValidNetworkRequestMetric().toBuilder().setClientStartTimeUs(i + 1).build());
        fakeExecutorService.runAll();
        assertThat(getLastLoggedEvent(never())).isNull();
    }
    // 3. Even though we recorded "totalNetworkRequestEvents", events up-to
    // "maxNetworkRequestsCacheSize" are only
    // queued
    assertThat(testTransportManager.getPendingEventsQueue().size()).isEqualTo(maxNetworkRequestsCacheSize);
    // 4. Log few Traces such that they are under the max cap
    // less than max cache for TraceMetric events
    int totalTraceEvents = 20;
    TraceMetric[] validTraces = new TraceMetric[totalTraceEvents];
    for (int i = 0; i < totalTraceEvents; i++) {
        validTraces[i] = createValidTraceMetric().toBuilder().setName("Trace - " + (i + 1)).build();
        testTransportManager.log(validTraces[i], ApplicationProcessState.FOREGROUND);
        fakeExecutorService.runAll();
        assertThat(getLastLoggedEvent(never())).isNull();
    }
    // 5. All Traces are queued even after Network Requests are capped
    assertThat(testTransportManager.getPendingEventsQueue().size()).isEqualTo(maxNetworkRequestsCacheSize + totalTraceEvents);
    // 6. Initialize Transport
    initializeTransport(true);
    // 7. Consume all queued Network Requests
    for (int i = 0; i < maxNetworkRequestsCacheSize; i++) {
        clearLastLoggedEvents();
        fakeExecutorService.runNext();
    }
    // 8. Consume all queued Traces and validate them
    for (int i = 0; i < totalTraceEvents; i++) {
        clearLastLoggedEvents();
        fakeExecutorService.runNext();
        PerfMetric loggedValidTrace = getLastLoggedEvent(times(1));
        assertThat(loggedValidTrace.getTraceMetric()).isEqualTo(validTraces[i]);
        validateApplicationInfo(loggedValidTrace, ApplicationProcessState.FOREGROUND);
    }
    // 9. Queue is all consumed
    assertThat(testTransportManager.getPendingEventsQueue().isEmpty()).isTrue();
    // 10. No pending events
    clearLastLoggedEvents();
    fakeExecutorService.runAll();
    assertThat(getLastLoggedEvent(never())).isNull();
}
Also used : TraceMetric(com.google.firebase.perf.v1.TraceMetric) PerfMetric(com.google.firebase.perf.v1.PerfMetric) Test(org.junit.Test)

Aggregations

Test (org.junit.Test)81 NetworkRequestMetric (com.google.firebase.perf.v1.NetworkRequestMetric)80 ApplicationProcessState (com.google.firebase.perf.v1.ApplicationProcessState)45 NetworkRequestMetricBuilder (com.google.firebase.perf.metrics.NetworkRequestMetricBuilder)13 IOException (java.io.IOException)13 HttpResponse (org.apache.http.HttpResponse)13 HttpClient (org.apache.http.client.HttpClient)12 HttpURLConnection (java.net.HttpURLConnection)11 PerfMetric (com.google.firebase.perf.v1.PerfMetric)10 HttpHost (org.apache.http.HttpHost)6 HttpRequest (org.apache.http.HttpRequest)6 HttpUriRequest (org.apache.http.client.methods.HttpUriRequest)6 HttpContext (org.apache.http.protocol.HttpContext)6 HttpUrl (okhttp3.HttpUrl)4 Request (okhttp3.Request)4 RequestBody (okhttp3.RequestBody)4 TransportManager (com.google.firebase.perf.transport.TransportManager)3 URLWrapper (com.google.firebase.perf.util.URLWrapper)3 HttpsURLConnection (javax.net.ssl.HttpsURLConnection)3 Response (okhttp3.Response)3