1f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu/*
2f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu * Copyright (C) 2016 The Android Open Source Project
3f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu *
4f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu * Licensed under the Apache License, Version 2.0 (the "License");
5f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu * you may not use this file except in compliance with the License.
6f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu * You may obtain a copy of the License at
7f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu *
8f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu *      http://www.apache.org/licenses/LICENSE-2.0
9f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu *
10f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu * Unless required by applicable law or agreed to in writing, software
11f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu * distributed under the License is distributed on an "AS IS" BASIS,
12f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu * See the License for the specific language governing permissions and
14f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu * limitations under the License.
15f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu */
16f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu
17f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yupackage com.android.internal.telephony.dataconnection;
18f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu
198e9d1e601dce62cd0328701d7054e03db24727c7Jack Yuimport static com.android.internal.telephony.dataconnection.DcTrackerTest.FAKE_ADDRESS;
208e9d1e601dce62cd0328701d7054e03db24727c7Jack Yuimport static com.android.internal.telephony.dataconnection.DcTrackerTest.FAKE_DNS;
218e9d1e601dce62cd0328701d7054e03db24727c7Jack Yuimport static com.android.internal.telephony.dataconnection.DcTrackerTest.FAKE_GATEWAY;
228e9d1e601dce62cd0328701d7054e03db24727c7Jack Yuimport static com.android.internal.telephony.dataconnection.DcTrackerTest.FAKE_IFNAME;
238e9d1e601dce62cd0328701d7054e03db24727c7Jack Yuimport static com.android.internal.telephony.dataconnection.DcTrackerTest.FAKE_PCSCF_ADDRESS;
248e9d1e601dce62cd0328701d7054e03db24727c7Jack Yu
258e9d1e601dce62cd0328701d7054e03db24727c7Jack Yuimport static org.junit.Assert.assertEquals;
268e9d1e601dce62cd0328701d7054e03db24727c7Jack Yu
27f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yuimport android.net.LinkProperties;
28f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yuimport android.test.suitebuilder.annotation.SmallTest;
29f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu
30f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yuimport com.android.internal.telephony.TelephonyTest;
31f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yuimport com.android.internal.telephony.dataconnection.DataCallResponse.SetupResult;
32f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu
33f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yuimport org.junit.After;
34f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yuimport org.junit.Before;
35f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yuimport org.junit.Test;
36f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu
37f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yupublic class DataCallResponseTest extends TelephonyTest {
38f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu
39f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu    DataCallResponse mDcResponse;
40f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu
41f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu    @Before
42f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu    public void setUp() throws Exception {
43f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu        super.setUp(getClass().getSimpleName());
448e9d1e601dce62cd0328701d7054e03db24727c7Jack Yu        mDcResponse = new DataCallResponse(0, -1, 1, 2, "IP", FAKE_IFNAME, FAKE_ADDRESS,
458e9d1e601dce62cd0328701d7054e03db24727c7Jack Yu                FAKE_DNS, FAKE_GATEWAY, FAKE_PCSCF_ADDRESS, 1440);
46f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu    }
47f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu
48f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu    @After
49f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu    public void tearDown() throws Exception {
50f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu        super.tearDown();
51f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu    }
52f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu
53f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu    @Test
54f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu    @SmallTest
55f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu    public void testSetLinkProperties() throws Exception {
56f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu        LinkProperties linkProperties = new LinkProperties();
57f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu        assertEquals(SetupResult.SUCCESS,
58f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu                mDcResponse.setLinkProperties(linkProperties, true));
59f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu        logd(linkProperties.toString());
60f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu        assertEquals(mDcResponse.ifname, linkProperties.getInterfaceName());
61f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu        assertEquals(mDcResponse.addresses.length, linkProperties.getAddresses().size());
62f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu        for (int i = 0; i < mDcResponse.addresses.length; ++i) {
63f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu            assertEquals(mDcResponse.addresses[i],
64f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu                    linkProperties.getLinkAddresses().get(i).getAddress().getHostAddress());
65f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu        }
66f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu
67f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu        assertEquals(mDcResponse.dnses.length, linkProperties.getDnsServers().size());
68f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu        for (int i = 0; i < mDcResponse.dnses.length; ++i) {
69f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu            assertEquals("i = " + i, mDcResponse.dnses[i],
70f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu                    linkProperties.getDnsServers().get(i).getHostAddress());
71f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu        }
72f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu
73f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu        assertEquals(mDcResponse.gateways.length, linkProperties.getRoutes().size());
74f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu        for (int i = 0; i < mDcResponse.gateways.length; ++i) {
75f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu            assertEquals("i = " + i, mDcResponse.gateways[i],
76f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu                    linkProperties.getRoutes().get(i).getGateway().getHostAddress());
77f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu        }
78f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu
79f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu        assertEquals(mDcResponse.mtu, linkProperties.getMtu());
80f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu    }
814698f5cc8dcf0f31a03c64f90e5faa1b4ffed5fcJack Yu
824698f5cc8dcf0f31a03c64f90e5faa1b4ffed5fcJack Yu    @Test
834698f5cc8dcf0f31a03c64f90e5faa1b4ffed5fcJack Yu    @SmallTest
844698f5cc8dcf0f31a03c64f90e5faa1b4ffed5fcJack Yu    public void testSetLinkPropertiesInvalidAddress() throws Exception {
854698f5cc8dcf0f31a03c64f90e5faa1b4ffed5fcJack Yu
868e9d1e601dce62cd0328701d7054e03db24727c7Jack Yu        // 224.224.224.224 is an invalid address.
878e9d1e601dce62cd0328701d7054e03db24727c7Jack Yu        mDcResponse = new DataCallResponse(0, -1, 1, 2, "IP", FAKE_IFNAME, "224.224.224.224",
888e9d1e601dce62cd0328701d7054e03db24727c7Jack Yu                FAKE_DNS, FAKE_GATEWAY, FAKE_PCSCF_ADDRESS, 1440);
894698f5cc8dcf0f31a03c64f90e5faa1b4ffed5fcJack Yu
904698f5cc8dcf0f31a03c64f90e5faa1b4ffed5fcJack Yu        LinkProperties linkProperties = new LinkProperties();
914698f5cc8dcf0f31a03c64f90e5faa1b4ffed5fcJack Yu        assertEquals(SetupResult.ERR_UnacceptableParameter,
924698f5cc8dcf0f31a03c64f90e5faa1b4ffed5fcJack Yu                mDcResponse.setLinkProperties(linkProperties, true));
934698f5cc8dcf0f31a03c64f90e5faa1b4ffed5fcJack Yu    }
94f2be4db966d151fe58a132991bfce9d59f8d8c67Jack Yu}