use of com.google.firebase.perf.config.ConfigResolver in project firebase-android-sdk by firebase.
the class AppStateMonitorTest method screenTrace_perfMonDeactivated_traceNotCreated.
@Test
public void screenTrace_perfMonDeactivated_traceNotCreated() {
AppStateMonitor monitor = new AppStateMonitor(transportManager, clock);
Activity activityWithNonHardwareAcceleratedView = createFakeActivity(/* isHardwareAccelerated =*/
true);
ConfigResolver configResolver = ConfigResolver.getInstance();
configResolver.setDeviceCacheManager(new DeviceCacheManager(new FakeDirectExecutorService()));
Bundle bundle = new Bundle();
bundle.putBoolean("firebase_performance_collection_deactivated", true);
configResolver.setMetadataBundle(new ImmutableBundle(bundle));
// Developer has enabled Performance Monitoring during runtime.
configResolver.setIsPerformanceCollectionEnabled(true);
// Assert that screen trace has not been created.
monitor.onActivityStarted(activityWithNonHardwareAcceleratedView);
assertThat(monitor.getActivity2ScreenTrace()).isEmpty();
// Confirm that this doesn't throw an exception.
monitor.onActivityStopped(activityWithNonHardwareAcceleratedView);
}
use of com.google.firebase.perf.config.ConfigResolver in project firebase-android-sdk by firebase.
the class AppStateMonitorTest method setUp.
@Before
public void setUp() {
currentTime = 0;
initMocks(this);
doAnswer((Answer<Timer>) invocationOnMock -> new Timer(currentTime)).when(clock).getTime();
activity1 = createFakeActivity(/* isHardwareAccelerated= */
true);
activity2 = createFakeActivity(/* isHardwareAccelerated= */
true);
DeviceCacheManager.clearInstance();
ConfigResolver.clearInstance();
ConfigResolver configResolver = ConfigResolver.getInstance();
configResolver.setDeviceCacheManager(new DeviceCacheManager(new FakeDirectExecutorService()));
}
use of com.google.firebase.perf.config.ConfigResolver in project firebase-android-sdk by firebase.
the class FirebasePerfProvider method attachInfo.
@Override
public void attachInfo(Context context, ProviderInfo info) {
// super.attachInfo calls onCreate(). Fail as early as possible.
checkContentProviderAuthority(info);
super.attachInfo(context, info);
// Initialize ConfigResolver early for accessing device caching layer.
ConfigResolver configResolver = ConfigResolver.getInstance();
configResolver.setContentProviderContext(getContext());
AppStateMonitor appStateMonitor = AppStateMonitor.getInstance();
appStateMonitor.registerActivityLifecycleCallbacks(getContext());
appStateMonitor.registerForAppColdStart(new FirebasePerformanceInitializer());
AppStartTrace appStartTrace = AppStartTrace.getInstance();
appStartTrace.registerActivityLifecycleCallbacks(getContext());
mainHandler.post(new AppStartTrace.StartFromBackgroundRunnable(appStartTrace));
// In the case of cold start, we create a session and start collecting gauges as early as
// possible.
// There is code in SessionManager that prevents us from resetting the session twice in case
// of app cold start.
SessionManager.getInstance().initializeGaugeCollection();
}
use of com.google.firebase.perf.config.ConfigResolver in project firebase-android-sdk by firebase.
the class PerfSessionTest method shouldCollectGaugesAndEvents_perfMonDisabledAtBuildtime_verbosityDependsOnRuntime.
@Test
public void shouldCollectGaugesAndEvents_perfMonDisabledAtBuildtime_verbosityDependsOnRuntime() {
ConfigResolver configResolver = ConfigResolver.getInstance();
// Developer disables Performance collection at AndroidManifest.
Bundle bundle = new Bundle();
bundle.putFloat("sessions_sampling_percentage", 100f);
bundle.putBoolean("firebase_performance_collection_enabled", false);
configResolver.setMetadataBundle(new ImmutableBundle(bundle));
// By default, session is not verbose if developer disabled performance monitoring at build
// time.
assertThat(PerfSession.shouldCollectGaugesAndEvents()).isFalse();
// Case #1: developer has enabled Performance Monitoring during runtime.
configResolver.setIsPerformanceCollectionEnabled(true);
assertThat(PerfSession.shouldCollectGaugesAndEvents()).isTrue();
// Case #2: developer has disabled Performance Monitoring during runtime.
configResolver.setIsPerformanceCollectionEnabled(false);
assertThat(PerfSession.shouldCollectGaugesAndEvents()).isFalse();
}
use of com.google.firebase.perf.config.ConfigResolver in project firebase-android-sdk by firebase.
the class PerfSessionTest method shouldCollectGaugesAndEvents_perfMonDisabledAtRuntime_sessionNotVerbose.
@Test
public void shouldCollectGaugesAndEvents_perfMonDisabledAtRuntime_sessionNotVerbose() {
ConfigResolver configResolver = ConfigResolver.getInstance();
Bundle bundle = new Bundle();
bundle.putFloat("sessions_sampling_percentage", 100f);
configResolver.setMetadataBundle(new ImmutableBundle(bundle));
// By default, session is verbose if developer has set 100% of session verbosity.
assertThat(PerfSession.shouldCollectGaugesAndEvents()).isTrue();
// Case #1: developer has disabled Performance Monitoring during runtime.
configResolver.setIsPerformanceCollectionEnabled(false);
assertThat(PerfSession.shouldCollectGaugesAndEvents()).isFalse();
// Case #2: developer has enabled Performance Monitoring during runtime.
configResolver.setIsPerformanceCollectionEnabled(true);
assertThat(PerfSession.shouldCollectGaugesAndEvents()).isTrue();
}
Aggregations