1f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu/* 2f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu * Copyright (C) 2016 The Android Open Source Project 3f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu * 4f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu * Licensed under the Apache License, Version 2.0 (the "License"); 5f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu * you may not use this file except in compliance with the License. 6f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu * You may obtain a copy of the License at 7f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu * 8f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu * http://www.apache.org/licenses/LICENSE-2.0 9f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu * 10f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu * Unless required by applicable law or agreed to in writing, software 11f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu * distributed under the License is distributed on an "AS IS" BASIS, 12f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu * See the License for the specific language governing permissions and 14f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu * limitations under the License. 15f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu */ 16f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 17f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yupackage com.android.internal.telephony.metrics; 18f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 19f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yuimport android.test.suitebuilder.annotation.SmallTest; 20f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 21f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yuimport com.android.internal.telephony.TelephonyProto; 22f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yuimport com.android.internal.telephony.TelephonyTest; 23f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 24f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yuimport org.junit.After; 25f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yuimport org.junit.Before; 26f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yuimport org.junit.Test; 27f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 28f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yuimport static org.junit.Assert.assertEquals; 29f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yuimport static org.junit.Assert.assertFalse; 30f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yuimport static org.junit.Assert.assertTrue; 31f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 32f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yupublic class InProgressSmsSessionTest extends TelephonyTest { 33f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 34f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu private InProgressSmsSession mSmsSession; 35f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 36f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu @Before 37f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu public void setUp() throws Exception { 38f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu super.setUp(getClass().getSimpleName()); 39f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mSmsSession = new InProgressSmsSession(mPhone.getPhoneId()); 40f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu } 41f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 42f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu @After 43f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu public void tearDown() throws Exception { 44f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu super.tearDown(); 45f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu } 46f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 47f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu // Test add event 48f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu @Test 49f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu @SmallTest 50f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu public void testAddEvent() { 51f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu SmsSessionEventBuilder builder = new SmsSessionEventBuilder( 52f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu TelephonyProto.SmsSession.Event.Type.SMS_SEND_RESULT) 53f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu .setRilRequestId(2); 54f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mSmsSession.addEvent(builder); 55f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu assertEquals(builder.build(), mSmsSession.events.getFirst()); 56f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu assertFalse(mSmsSession.isEventsDropped()); 57f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu } 58f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 59f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu // Test dropped event scenario 60f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu @Test 61f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu @SmallTest 62f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu public void testEventDropped() { 63f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu for (int i = 0; i < 25; i++) { 64f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu SmsSessionEventBuilder builder = new SmsSessionEventBuilder( 65f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu TelephonyProto.SmsSession.Event.Type.SMS_SEND_RESULT) 66f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu .setRilRequestId(i + 1); 67f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mSmsSession.addEvent(builder); 68f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu } 69f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 70f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu assertTrue(mSmsSession.isEventsDropped()); 71f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu assertEquals(6, mSmsSession.events.getFirst().getRilRequestId()); 72f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu } 73f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 74f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu // Test dropped event scenario 75f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu @Test 76f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu @SmallTest 77f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu public void testExpectedResponse() { 78f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mSmsSession.increaseExpectedResponse(); 79f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu assertEquals(1, mSmsSession.getNumExpectedResponses()); 80f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mSmsSession.decreaseExpectedResponse(); 81f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu assertEquals(0, mSmsSession.getNumExpectedResponses()); 82f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 83f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu for (int i = 0; i < 100; i++) { 84f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mSmsSession.increaseExpectedResponse(); 85f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu } 86f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 87f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu assertEquals(100, mSmsSession.getNumExpectedResponses()); 88f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 89f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu for (int i = 0; i < 50; i++) { 90f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mSmsSession.decreaseExpectedResponse(); 91f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu } 92f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 93f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu assertEquals(50, mSmsSession.getNumExpectedResponses()); 94f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu } 95f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu}