BackupManagerMonitorUtilsTest.java revision 66ff1d62c02cd70d660b0fa99715c711faa635e9
166ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov/* 266ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov * Copyright (C) 2017 The Android Open Source Project 366ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov * 466ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov * Licensed under the Apache License, Version 2.0 (the "License"); 566ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov * you may not use this file except in compliance with the License. 666ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov * You may obtain a copy of the License at 766ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov * 866ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov * http://www.apache.org/licenses/LICENSE-2.0 966ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov * 1066ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov * Unless required by applicable law or agreed to in writing, software 1166ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov * distributed under the License is distributed on an "AS IS" BASIS, 1266ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1366ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov * See the License for the specific language governing permissions and 1466ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov * limitations under the License 1566ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov */ 1666ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov 1766ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikovpackage com.android.server.backup.utils; 1866ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov 1966ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikovimport static android.app.backup.BackupManagerMonitor.EXTRA_LOG_EVENT_CATEGORY; 2066ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikovimport static android.app.backup.BackupManagerMonitor.EXTRA_LOG_EVENT_ID; 2166ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikovimport static android.app.backup.BackupManagerMonitor.EXTRA_LOG_EVENT_PACKAGE_NAME; 2266ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikovimport static android.app.backup.BackupManagerMonitor.EXTRA_LOG_EVENT_PACKAGE_VERSION; 2366ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov 2466ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikovimport static com.google.common.truth.Truth.assertThat; 2566ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov 2666ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikovimport static org.mockito.ArgumentMatchers.any; 2766ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikovimport static org.mockito.Mockito.doThrow; 2866ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikovimport static org.mockito.Mockito.verify; 2966ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov 3066ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikovimport android.app.backup.IBackupManagerMonitor; 3166ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikovimport android.content.pm.PackageInfo; 3266ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikovimport android.os.Bundle; 3366ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikovimport android.os.RemoteException; 3466ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov 3566ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikovimport org.junit.Before; 3666ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikovimport org.junit.Test; 3766ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikovimport org.mockito.ArgumentCaptor; 3866ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikovimport org.mockito.Mock; 3966ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikovimport org.mockito.MockitoAnnotations; 4066ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov 4166ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikovpublic class BackupManagerMonitorUtilsTest { 4266ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov @Mock private IBackupManagerMonitor mMonitorMock; 4366ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov 4466ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov @Before 4566ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov public void setUp() { 4666ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov MockitoAnnotations.initMocks(this); 4766ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov } 4866ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov 4966ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov @Test 5066ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov public void monitorEvent_monitorIsNull_returnsNull() throws Exception { 5166ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov IBackupManagerMonitor result = BackupManagerMonitorUtils.monitorEvent(null, 0, null, 0, 5266ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov null); 5366ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov 5466ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov assertThat(result).isNull(); 5566ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov } 5666ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov 5766ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov @Test 5866ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov public void monitorEvent_monitorOnEventThrows_returnsNull() throws Exception { 5966ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov doThrow(new RemoteException()).when(mMonitorMock).onEvent(any(Bundle.class)); 6066ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov 6166ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov IBackupManagerMonitor result = BackupManagerMonitorUtils.monitorEvent(mMonitorMock, 0, null, 6266ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov 0, null); 6366ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov 6466ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov verify(mMonitorMock).onEvent(any(Bundle.class)); 6566ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov assertThat(result).isNull(); 6666ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov } 6766ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov 6866ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov @Test 6966ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov public void monitorEvent_packageAndExtrasAreNull_fillsBundleCorrectly() throws Exception { 7066ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov IBackupManagerMonitor result = BackupManagerMonitorUtils.monitorEvent(mMonitorMock, 1, null, 7166ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov 2, null); 7266ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov 7366ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov assertThat(result).isEqualTo(mMonitorMock); 7466ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov ArgumentCaptor<Bundle> bundleCaptor = ArgumentCaptor.forClass(Bundle.class); 7566ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov verify(mMonitorMock).onEvent(bundleCaptor.capture()); 7666ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov Bundle eventBundle = bundleCaptor.getValue(); 7766ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov assertThat(eventBundle.size()).isEqualTo(2); 7866ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov assertThat(eventBundle.getInt(EXTRA_LOG_EVENT_ID)).isEqualTo(1); 7966ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov assertThat(eventBundle.getInt(EXTRA_LOG_EVENT_CATEGORY)).isEqualTo(2); 8066ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov } 8166ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov 8266ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov @Test 8366ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov public void monitorEvent_packageAndExtrasAreNotNull_fillsBundleCorrectly() throws Exception { 8466ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov PackageInfo packageInfo = new PackageInfo(); 8566ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov packageInfo.packageName = "test.package"; 8666ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov packageInfo.versionCode = 3; 8766ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov Bundle extras = new Bundle(); 8866ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov extras.putInt("key1", 4); 8966ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov extras.putString("key2", "value2"); 9066ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov 9166ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov IBackupManagerMonitor result = BackupManagerMonitorUtils.monitorEvent(mMonitorMock, 1, 9266ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov packageInfo, 2, extras); 9366ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov 9466ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov assertThat(result).isEqualTo(mMonitorMock); 9566ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov ArgumentCaptor<Bundle> bundleCaptor = ArgumentCaptor.forClass(Bundle.class); 9666ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov verify(mMonitorMock).onEvent(bundleCaptor.capture()); 9766ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov Bundle eventBundle = bundleCaptor.getValue(); 9866ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov assertThat(eventBundle.size()).isEqualTo(6); 9966ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov assertThat(eventBundle.getInt(EXTRA_LOG_EVENT_ID)).isEqualTo(1); 10066ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov assertThat(eventBundle.getInt(EXTRA_LOG_EVENT_CATEGORY)).isEqualTo(2); 10166ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov assertThat(eventBundle.getString(EXTRA_LOG_EVENT_PACKAGE_NAME)).isEqualTo("test.package"); 10266ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov assertThat(eventBundle.getInt(EXTRA_LOG_EVENT_PACKAGE_VERSION)).isEqualTo(3); 10366ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov assertThat(eventBundle.getInt("key1")).isEqualTo(4); 10466ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov assertThat(eventBundle.getString("key2")).isEqualTo("value2"); 10566ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov } 10666ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov 10766ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov @Test 10866ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov public void putMonitoringExtraString_bundleExists_fillsBundleCorrectly() throws Exception { 10966ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov Bundle bundle = new Bundle(); 11066ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov 11166ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov Bundle result = BackupManagerMonitorUtils.putMonitoringExtra(bundle, "key", "value"); 11266ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov 11366ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov assertThat(result).isEqualTo(bundle); 11466ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov assertThat(result.size()).isEqualTo(1); 11566ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov assertThat(result.getString("key")).isEqualTo("value"); 11666ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov } 11766ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov 11866ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov @Test 11966ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov public void putMonitoringExtraString_bundleDoesNotExist_fillsBundleCorrectly() 12066ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov throws Exception { 12166ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov Bundle result = BackupManagerMonitorUtils.putMonitoringExtra(null, "key", "value"); 12266ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov 12366ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov assertThat(result).isNotNull(); 12466ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov assertThat(result.size()).isEqualTo(1); 12566ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov assertThat(result.getString("key")).isEqualTo("value"); 12666ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov } 12766ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov 12866ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov 12966ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov @Test 13066ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov public void putMonitoringExtraLong_bundleExists_fillsBundleCorrectly() throws Exception { 13166ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov Bundle bundle = new Bundle(); 13266ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov 13366ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov Bundle result = BackupManagerMonitorUtils.putMonitoringExtra(bundle, "key", 123); 13466ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov 13566ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov assertThat(result).isEqualTo(bundle); 13666ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov assertThat(result.size()).isEqualTo(1); 13766ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov assertThat(result.getLong("key")).isEqualTo(123); 13866ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov } 13966ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov 14066ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov @Test 14166ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov public void putMonitoringExtraLong_bundleDoesNotExist_fillsBundleCorrectly() throws Exception { 14266ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov Bundle result = BackupManagerMonitorUtils.putMonitoringExtra(null, "key", 123); 14366ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov 14466ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov assertThat(result).isNotNull(); 14566ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov assertThat(result.size()).isEqualTo(1); 14666ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov assertThat(result.getLong("key")).isEqualTo(123); 14766ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov } 14866ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov 14966ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov @Test 15066ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov public void putMonitoringExtraBoolean_bundleExists_fillsBundleCorrectly() throws Exception { 15166ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov Bundle bundle = new Bundle(); 15266ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov 15366ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov Bundle result = BackupManagerMonitorUtils.putMonitoringExtra(bundle, "key", true); 15466ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov 15566ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov assertThat(result).isEqualTo(bundle); 15666ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov assertThat(result.size()).isEqualTo(1); 15766ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov assertThat(result.getBoolean("key")).isTrue(); 15866ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov } 15966ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov 16066ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov @Test 16166ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov public void putMonitoringExtraBoolean_bundleDoesNotExist_fillsBundleCorrectly() 16266ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov throws Exception { 16366ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov Bundle result = BackupManagerMonitorUtils.putMonitoringExtra(null, "key", true); 16466ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov 16566ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov assertThat(result).isNotNull(); 16666ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov assertThat(result.size()).isEqualTo(1); 16766ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov assertThat(result.getBoolean("key")).isTrue(); 16866ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov } 16966ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov 17066ff1d62c02cd70d660b0fa99715c711faa635e9Artem Iglikov}