ApnContextTest.java revision 9e0be93719c4de0cedec33508c799f3b2f223454
1/* 2 * Copyright (C) 2010 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.internal.telephony.dataconnection; 18 19import android.net.NetworkConfig; 20import android.test.suitebuilder.annotation.SmallTest; 21import android.util.LocalLog; 22 23import com.android.internal.R; 24import com.android.internal.telephony.DctConstants; 25import com.android.internal.telephony.PhoneConstants; 26import com.android.internal.telephony.TelephonyTest; 27 28import org.junit.After; 29import org.junit.Before; 30import org.junit.Test; 31import org.mockito.Mock; 32 33import static junit.framework.Assert.assertEquals; 34import static junit.framework.Assert.assertFalse; 35import static junit.framework.Assert.assertNull; 36import static junit.framework.Assert.assertTrue; 37import static org.mockito.Matchers.eq; 38import static org.mockito.Mockito.mock; 39import static org.mockito.Mockito.never; 40import static org.mockito.Mockito.times; 41import static org.mockito.Mockito.verify; 42 43public class ApnContextTest extends TelephonyTest { 44 45 @Mock 46 NetworkConfig mNetworkConfig; 47 @Mock 48 ApnSetting mApnSetting; 49 50 private ApnContext mApnContext; 51 52 @Before 53 public void setUp() throws Exception { 54 super.setUp(getClass().getSimpleName()); 55 mNetworkConfig.dependencyMet = true; 56 mApnContext = new ApnContext(mPhone, PhoneConstants.APN_TYPE_DEFAULT, TAG, mNetworkConfig, 57 mDcTracker); 58 } 59 60 @After 61 public void tearDown() throws Exception { 62 mApnContext = null; 63 super.tearDown(); 64 } 65 66 @Test 67 @SmallTest 68 public void testSetGetApnSetting() throws Exception { 69 mApnContext.setApnSetting(mApnSetting); 70 assertEquals(mApnSetting, mApnContext.getApnSetting()); 71 } 72 73 @Test 74 @SmallTest 75 public void testGetApnType() throws Exception { 76 assertEquals(PhoneConstants.APN_TYPE_DEFAULT, mApnContext.getApnType()); 77 } 78 79 @Test 80 @SmallTest 81 public void testConnectionGeneration() throws Exception { 82 for (int i = 0; i < 100; i++) { 83 mApnContext.incAndGetConnectionGeneration(); 84 assertEquals(i + 1, mApnContext.getConnectionGeneration()); 85 } 86 } 87 88 @Test 89 @SmallTest 90 public void testDataCallAsyncChannel() throws Exception { 91 92 DcAsyncChannel dcAc = mock(DcAsyncChannel.class); 93 94 mApnContext.setDataConnectionAc(dcAc); 95 assertEquals(dcAc, mApnContext.getDcAc()); 96 mApnContext.releaseDataConnection(""); 97 assertNull(mApnContext.getDcAc()); 98 assertEquals(DctConstants.State.IDLE, mApnContext.getState()); 99 } 100 101 @Test 102 @SmallTest 103 public void testDependencyMet() throws Exception { 104 assertTrue(mApnContext.getDependencyMet()); 105 mApnContext.setDependencyMet(false); 106 assertFalse(mApnContext.getDependencyMet()); 107 } 108 109 @Test 110 @SmallTest 111 public void testReason() throws Exception { 112 mApnContext.setReason("dataEnabled"); 113 assertEquals("dataEnabled", mApnContext.getReason()); 114 mApnContext.setReason("simLoaded"); 115 assertEquals("simLoaded", mApnContext.getReason()); 116 } 117 118 @Test 119 @SmallTest 120 public void testState() throws Exception { 121 mApnContext.setState(DctConstants.State.DISCONNECTING); 122 assertEquals(DctConstants.State.DISCONNECTING, mApnContext.getState()); 123 mApnContext.setEnabled(true); 124 mApnContext.setDependencyMet(true); 125 assertFalse(mApnContext.isConnectable()); 126 127 mApnContext.setState(DctConstants.State.SCANNING); 128 assertTrue(mApnContext.isConnectable()); 129 assertTrue(mApnContext.isConnectedOrConnecting()); 130 131 mApnContext.setState(DctConstants.State.FAILED); 132 assertTrue(mApnContext.isDisconnected()); 133 mApnContext.setState(DctConstants.State.IDLE); 134 assertTrue(mApnContext.isDisconnected()); 135 } 136 137 @Test 138 @SmallTest 139 public void testRefCount() throws Exception { 140 LocalLog log = new LocalLog(3); 141 mApnContext.incRefCount(log); 142 verify(mDcTracker, times(1)).setEnabled(eq(DctConstants.APN_DEFAULT_ID), eq(true)); 143 mApnContext.incRefCount(log); 144 verify(mDcTracker, times(1)).setEnabled(eq(DctConstants.APN_DEFAULT_ID), eq(true)); 145 146 mApnContext.decRefCount(log); 147 verify(mDcTracker, never()).setEnabled(eq(DctConstants.APN_DEFAULT_ID), eq(false)); 148 mApnContext.decRefCount(log); 149 verify(mDcTracker, times(1)).setEnabled(eq(DctConstants.APN_DEFAULT_ID), eq(false)); 150 } 151 152 @Test 153 @SmallTest 154 public void testConcurrentVoiceAndDataAllowed() throws Exception { 155 mApnContext.setConcurrentVoiceAndDataAllowed(true); 156 assertTrue(mApnContext.isConcurrentVoiceAndDataAllowed()); 157 mApnContext.setConcurrentVoiceAndDataAllowed(false); 158 assertFalse(mApnContext.isConcurrentVoiceAndDataAllowed()); 159 } 160 161 @Test 162 @SmallTest 163 public void testEnableDisable() throws Exception { 164 mApnContext.setEnabled(true); 165 assertTrue(mApnContext.isEnabled()); 166 mApnContext.setEnabled(false); 167 assertFalse(mApnContext.isEnabled()); 168 } 169 170 @Test 171 @SmallTest 172 public void testProvisionApn() throws Exception { 173 mContextFixture.putResource(R.string.mobile_provisioning_apn, "fake_apn"); 174 175 ApnSetting myApn = new ApnSetting( 176 2163, // id 177 "44010", // numeric 178 "sp-mode", // name 179 "fake_apn", // apn 180 "", // proxy 181 "", // port 182 "", // mmsc 183 "", // mmsproxy 184 "", // mmsport 185 "", // user 186 "", // password 187 -1, // authtype 188 new String[]{"default", "supl"}, // types 189 "IP", // protocol 190 "IP", // roaming_protocol 191 true, // carrier_enabled 192 0, // bearer 193 0, // bearer_bitmask 194 0, // profile_id 195 false, // modem_cognitive 196 0, // max_conns 197 0, // wait_time 198 0, // max_conns_time 199 0, // mtu 200 "", // mvno_type 201 ""); // mnvo_match_data 202 203 mApnContext.setApnSetting(myApn); 204 assertTrue(mApnContext.isProvisioningApn()); 205 mApnContext.setApnSetting(mApnSetting); 206 assertFalse(mApnContext.isProvisioningApn()); 207 } 208 209 @Test 210 @SmallTest 211 public void testIsReady() throws Exception { 212 mApnContext.setEnabled(true); 213 mApnContext.setDependencyMet(true); 214 assertTrue(mApnContext.isReady()); 215 216 mApnContext.setEnabled(false); 217 assertFalse(mApnContext.isReady()); 218 219 mApnContext.setDependencyMet(false); 220 assertFalse(mApnContext.isReady()); 221 222 mApnContext.setEnabled(true); 223 assertFalse(mApnContext.isReady()); 224 } 225 226 @Test 227 @SmallTest 228 public void testErrorCodeRetry() throws Exception { 229 mContextFixture.putStringArrayResource( 230 com.android.internal.R.array.config_cell_retries_per_error_code, 231 new String[]{"36,2"}); 232 mApnContext.resetErrorCodeRetries(); 233 234 assertFalse(mApnContext.restartOnError(36)); 235 assertTrue(mApnContext.restartOnError(36)); 236 assertFalse(mApnContext.restartOnError(37)); 237 } 238} 239