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}