1/* 2 * Copyright (C) 2017 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package com.android.settingslib.development; 18 19import static com.android.settingslib.development.AbstractLogdSizePreferenceController 20 .DEFAULT_SNET_TAG; 21import static com.android.settingslib.development.AbstractLogdSizePreferenceController 22 .LOW_RAM_CONFIG_PROPERTY_KEY; 23import static com.android.settingslib.development.AbstractLogdSizePreferenceController 24 .SELECT_LOGD_MINIMUM_SIZE_VALUE; 25import static com.android.settingslib.development.AbstractLogdSizePreferenceController 26 .SELECT_LOGD_OFF_SIZE_MARKER_VALUE; 27import static com.android.settingslib.development.AbstractLogdSizePreferenceController 28 .SELECT_LOGD_SIZE_PROPERTY; 29import static com.android.settingslib.development.AbstractLogdSizePreferenceController 30 .SELECT_LOGD_SNET_TAG_PROPERTY; 31import static com.android.settingslib.development.AbstractLogdSizePreferenceController 32 .SELECT_LOGD_TAG_PROPERTY; 33import static com.android.settingslib.development.AbstractLogdSizePreferenceController 34 .SELECT_LOGD_TAG_SILENCE; 35 36import static com.google.common.truth.Truth.assertThat; 37 38import static org.mockito.Mockito.doReturn; 39import static org.mockito.Mockito.verify; 40 41import android.content.Context; 42import android.os.SystemProperties; 43import android.support.v7.preference.ListPreference; 44import android.support.v7.preference.PreferenceScreen; 45 46import com.android.settingslib.R; 47import com.android.settingslib.SettingsLibRobolectricTestRunner; 48 49import org.junit.Before; 50import org.junit.Test; 51import org.junit.runner.RunWith; 52import org.mockito.Mock; 53import org.mockito.MockitoAnnotations; 54import org.robolectric.RuntimeEnvironment; 55 56@RunWith(SettingsLibRobolectricTestRunner.class) 57public class LogdSizePreferenceControllerTest { 58 59 @Mock 60 private ListPreference mListPreference; 61 @Mock 62 private PreferenceScreen mPreferenceScreen; 63 64 /** 65 * List Values 66 * 67 * 0: off 68 * 1: 64k 69 * 2: 256k 70 * 3: 1M 71 * 4: 4M 72 * 5: 16M 73 */ 74 private String[] mListValues; 75 private String[] mListSummaries; 76 private Context mContext; 77 private AbstractLogdSizePreferenceController mController; 78 79 @Before 80 public void setUp() { 81 MockitoAnnotations.initMocks(this); 82 mContext = RuntimeEnvironment.application; 83 mController = new AbstractLogdSizePreferenceController(RuntimeEnvironment.application) { 84 }; 85 mListValues = mContext.getResources().getStringArray(R.array.select_logd_size_values); 86 mListSummaries = mContext.getResources().getStringArray(R.array.select_logd_size_summaries); 87 doReturn(mListPreference).when(mPreferenceScreen) 88 .findPreference(mController.getPreferenceKey()); 89 90 mController.displayPreference(mPreferenceScreen); 91 } 92 93 @Test 94 public void testUpdateLogdSizeValues_lowRamEntries() { 95 SystemProperties.set(LOW_RAM_CONFIG_PROPERTY_KEY, "true"); 96 mController.updateLogdSizeValues(); 97 verify(mListPreference).setEntries(R.array.select_logd_size_lowram_titles); 98 } 99 100 @Test 101 public void testUpdateLogdSizeValues_silence() { 102 SystemProperties.set( 103 AbstractLogdSizePreferenceController.SELECT_LOGD_TAG_PROPERTY, 104 AbstractLogdSizePreferenceController.SELECT_LOGD_TAG_SILENCE); 105 SystemProperties.set( 106 AbstractLogdSizePreferenceController.SELECT_LOGD_SIZE_PROPERTY, 107 AbstractLogdSizePreferenceController.SELECT_LOGD_DEFAULT_SIZE_VALUE); 108 mController.updateLogdSizeValues(); 109 verify(mListPreference).setValue( 110 AbstractLogdSizePreferenceController.SELECT_LOGD_OFF_SIZE_MARKER_VALUE); 111 } 112 113 @Test 114 public void onPreferenceChange_noTagsSizeValueOff_shouldSetTagAndSnetTagAndSet64KSize() { 115 mController.onPreferenceChange(mListPreference, SELECT_LOGD_OFF_SIZE_MARKER_VALUE); 116 117 final String tag = SystemProperties.get(SELECT_LOGD_TAG_PROPERTY); 118 final String logSize = SystemProperties.get(SELECT_LOGD_SIZE_PROPERTY); 119 final String snetTag = SystemProperties.get(SELECT_LOGD_SNET_TAG_PROPERTY); 120 121 assertThat(tag).isEqualTo(SELECT_LOGD_TAG_SILENCE); 122 assertThat(logSize).isEqualTo(SELECT_LOGD_MINIMUM_SIZE_VALUE); 123 assertThat(snetTag).isEqualTo(DEFAULT_SNET_TAG); 124 } 125 126 @Test 127 public void onPreferenceChange_noTagsSizeValue64K_shouldNotSetTagAndSet64KSize() { 128 mController.onPreferenceChange(mListPreference, SELECT_LOGD_MINIMUM_SIZE_VALUE); 129 130 final String tag = SystemProperties.get(SELECT_LOGD_TAG_PROPERTY); 131 final String logSize = SystemProperties.get(SELECT_LOGD_SIZE_PROPERTY); 132 final String snetTag = SystemProperties.get(SELECT_LOGD_SNET_TAG_PROPERTY); 133 134 assertThat(tag).isEmpty(); 135 assertThat(logSize).isEqualTo(SELECT_LOGD_MINIMUM_SIZE_VALUE); 136 assertThat(snetTag).isEmpty(); 137 } 138 139 @Test 140 public void onPreferenceChange_set1M_shouldUpdateSettingLogSizeTo1M() { 141 mController.onPreferenceChange(mListPreference, mListValues[3]); 142 143 final String logSize = SystemProperties.get(SELECT_LOGD_SIZE_PROPERTY); 144 145 assertThat(logSize).isEqualTo(mListValues[3]); 146 } 147 148 @Test 149 public void onPreferenceChange_noValue_shouldUpdateSettingToEmpty() { 150 mController.onPreferenceChange(mListPreference, "" /* new value */); 151 152 final String logSize = SystemProperties.get(SELECT_LOGD_SIZE_PROPERTY); 153 154 assertThat(logSize).isEmpty(); 155 } 156 157 @Test 158 public void updateLogdSizeValues_noValueSet_shouldSetDefaultTo64K() { 159 SystemProperties.set(SELECT_LOGD_SIZE_PROPERTY, "" /* new value */); 160 161 mController.updateLogdSizeValues(); 162 163 verify(mListPreference).setValue(mListValues[2]); 164 verify(mListPreference).setSummary(mListSummaries[2]); 165 } 166 167 @Test 168 public void updateLogdSizeValues_noValueSetLowRamSet_shouldSetDefaultTo64K() { 169 SystemProperties.set(LOW_RAM_CONFIG_PROPERTY_KEY, Boolean.toString(true)); 170 SystemProperties.set(SELECT_LOGD_SIZE_PROPERTY, "" /* new value */); 171 172 mController.updateLogdSizeValues(); 173 174 verify(mListPreference).setValue(mListValues[1]); 175 verify(mListPreference).setSummary(mListSummaries[1]); 176 } 177 178 @Test 179 public void updateLogdSizeValues_64KSet_shouldSet64K() { 180 SystemProperties.set(SELECT_LOGD_SIZE_PROPERTY, mListValues[1]); 181 182 mController.updateLogdSizeValues(); 183 184 verify(mListPreference).setValue(mListValues[1]); 185 verify(mListPreference).setSummary(mListSummaries[1]); 186 } 187} 188