10825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/** 20825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Copyright (C) 2009 The Android Open Source Project 30825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 40825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Licensed under the Apache License, Version 2.0 (the "License"); 50825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * you may not use this file except in compliance with the License. 60825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * You may obtain a copy of the License at 70825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 80825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * http://www.apache.org/licenses/LICENSE-2.0 90825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Unless required by applicable law or agreed to in writing, software 110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * distributed under the License is distributed on an "AS IS" BASIS, 120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * See the License for the specific language governing permissions and 140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * limitations under the License. 150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 170825495a331bb44df395a0cdb79fab85e68db5d5Wink Savillepackage com.android.internal.telephony; 180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 190825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.RetryManager; 200825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport junit.framework.TestCase; 210825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.test.suitebuilder.annotation.SmallTest; 220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 230825495a331bb44df395a0cdb79fab85e68db5d5Wink Savillepublic class TelephonyUtilsTest extends TestCase { 240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * After first creating the RetryManager 270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * isRetryNeeded should be false and the time 0 280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @SmallTest 300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void testRetryManagerEmpty() throws Exception { 310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RetryManager rm = new RetryManager(); 320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertEquals(0, rm.getRetryCount()); 340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertFalse(rm.isRetryForever()); 350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertFalse(rm.isRetryNeeded()); 360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertEquals(0, rm.getRetryCount()); 370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertEquals(0, rm.getRetryTimer()); 380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rm.increaseRetryCount(); 400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertFalse(rm.isRetryForever()); 410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertFalse(rm.isRetryNeeded()); 420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertEquals(0, rm.getRetryCount()); 430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertEquals(0, rm.getRetryTimer()); 440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rm.setRetryCount(123); 460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertFalse(rm.isRetryForever()); 470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertFalse(rm.isRetryNeeded()); 480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertEquals(0, rm.getRetryCount()); 490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertEquals(0, rm.getRetryTimer()); 500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rm.retryForeverUsingLastTimeout(); 520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(rm.isRetryForever()); 530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(rm.isRetryNeeded()); 540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertEquals(0, rm.getRetryCount()); 550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertEquals(0, rm.getRetryTimer()); 560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rm.setRetryCount(2); 580577de49f739f113f6e07d5539defc8d48232282xiaohui wang assertTrue(rm.isRetryForever()); 590577de49f739f113f6e07d5539defc8d48232282xiaohui wang assertTrue(rm.isRetryNeeded()); 600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertEquals(0, rm.getRetryCount()); 610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertEquals(0, rm.getRetryTimer()); 620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * A simple test and that randomization is doing something. 660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @SmallTest 680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void testRetryManagerSimplest() throws Exception { 690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RetryManager rm = new RetryManager(); 700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(rm.configure(1, 500, 10)); 720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int loops = 10; 730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int count = 0; 740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0; i < loops; i++) { 750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(rm.isRetryNeeded()); 760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int time = rm.getRetryTimer(); 770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue((time >= 500) && (time < 600)); 780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (time == 500) { 790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville count++; 800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertFalse(count == loops); 830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rm.increaseRetryCount(); 840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertFalse(rm.isRetryNeeded()); 850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rm.setRetryCount(0); 860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(rm.isRetryNeeded()); 870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Test multiple values using simple configuration. 910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @SmallTest 930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void testRetryManagerSimple() throws Exception { 940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RetryManager rm = new RetryManager(); 950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(rm.configure(3, 1000, 0)); 970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(rm.isRetryNeeded()); 980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertEquals(1000, rm.getRetryTimer()); 990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertEquals(rm.getRetryTimer(), 1000); 1000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rm.increaseRetryCount(); 1010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(rm.isRetryNeeded()); 1020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertEquals(1000, rm.getRetryTimer()); 1030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rm.increaseRetryCount(); 1040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(rm.isRetryNeeded()); 1050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertEquals(1000, rm.getRetryTimer()); 1060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rm.increaseRetryCount(); 1070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertFalse(rm.isRetryNeeded()); 1080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertEquals(1000, rm.getRetryTimer()); 1090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 1120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Test string configuration, simplest 1130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @SmallTest 1150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void testRetryManageSimpleString() throws Exception { 1160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RetryManager rm = new RetryManager(); 1170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(rm.configure("101")); 1190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(rm.isRetryNeeded()); 1200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertEquals(101, rm.getRetryTimer()); 1210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rm.increaseRetryCount(); 1220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertFalse(rm.isRetryNeeded()); 1230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 1260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Test infinite retires 1270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @SmallTest 1290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void testRetryManageInfinite() throws Exception { 1300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RetryManager rm = new RetryManager(); 1310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(rm.configure("1000,2000,3000,max_retries=infinite")); 1330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(rm.isRetryNeeded()); 1340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertEquals(1000, rm.getRetryTimer()); 1350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rm.increaseRetryCount(); 1360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(rm.isRetryNeeded()); 1370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertEquals(2000, rm.getRetryTimer()); 1380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rm.increaseRetryCount(); 1390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(rm.isRetryNeeded()); 1400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // All others are 3000 and isRetryNeeded is always true 1410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i=0; i < 100; i++) { 1420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertEquals(3000, rm.getRetryTimer()); 1430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rm.increaseRetryCount(); 1440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(rm.isRetryNeeded()); 1450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 1490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Test string configuration using all options and with quotes. 1500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @SmallTest 1520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void testRetryManageString() throws Exception { 1530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RetryManager rm = new RetryManager(); 1540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int time; 1550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(rm.configure( 1570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "\"max_retries=4, default_randomization=100,1000, 2000 :200 , 3000\"")); 1580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(rm.isRetryNeeded()); 1590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville time = rm.getRetryTimer(); 1600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue((time >= 1000) && (time < 1100)); 1610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rm.increaseRetryCount(); 1630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(rm.isRetryNeeded()); 1640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville time = rm.getRetryTimer(); 1650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue((time >= 2000) && (time < 2200)); 1660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rm.increaseRetryCount(); 1680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(rm.isRetryNeeded()); 1690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville time = rm.getRetryTimer(); 1700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue((time >= 3000) && (time < 3100)); 1710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rm.increaseRetryCount(); 1730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(rm.isRetryNeeded()); 1740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville time = rm.getRetryTimer(); 1750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue((time >= 3000) && (time < 3100)); 1760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rm.increaseRetryCount(); 1780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertFalse(rm.isRetryNeeded()); 1790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 1820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Test string configuration using all options. 1830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @SmallTest 1850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void testRetryManageForever() throws Exception { 1860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RetryManager rm = new RetryManager(); 1870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int time; 1880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(rm.configure("1000, 2000, 3000")); 1900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(rm.isRetryNeeded()); 1910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertFalse(rm.isRetryForever()); 1920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertEquals(0, rm.getRetryCount()); 1930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertEquals(1000, rm.getRetryTimer()); 1940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rm.retryForeverUsingLastTimeout(); 1960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rm.increaseRetryCount(); 1970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rm.increaseRetryCount(); 1980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rm.increaseRetryCount(); 1990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(rm.isRetryNeeded()); 2000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(rm.isRetryForever()); 2010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertEquals(3, rm.getRetryCount()); 2020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertEquals(3000, rm.getRetryTimer()); 2030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rm.setRetryCount(1); 2050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(rm.isRetryNeeded()); 2060577de49f739f113f6e07d5539defc8d48232282xiaohui wang assertTrue(rm.isRetryForever()); 2070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertEquals(1, rm.getRetryCount()); 2080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertEquals(2000, rm.getRetryTimer()); 2090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rm.retryForeverUsingLastTimeout(); 2110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(rm.isRetryNeeded()); 2120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(rm.isRetryForever()); 2130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rm.resetRetryCount(); 2140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(rm.isRetryNeeded()); 2150577de49f739f113f6e07d5539defc8d48232282xiaohui wang assertTrue(rm.isRetryForever()); 2160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertEquals(0, rm.getRetryCount()); 2170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertEquals(1000, rm.getRetryTimer()); 2180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville} 220