1 /*
2  * Copyright 2017 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 
17 package com.android.internal.telephony.dataconnection;
18 
19 import static com.android.internal.telephony.dataconnection.DcTrackerTest.FAKE_ADDRESS;
20 import static com.android.internal.telephony.dataconnection.DcTrackerTest.FAKE_DNS;
21 import static com.android.internal.telephony.dataconnection.DcTrackerTest.FAKE_GATEWAY;
22 import static com.android.internal.telephony.dataconnection.DcTrackerTest.FAKE_IFNAME;
23 import static com.android.internal.telephony.dataconnection.DcTrackerTest.FAKE_PCSCF_ADDRESS;
24 
25 import android.net.InetAddresses;
26 import android.net.LinkAddress;
27 import android.os.Parcel;
28 import android.telephony.data.ApnSetting;
29 import android.telephony.data.DataCallResponse;
30 import android.telephony.data.EpsQos;
31 import android.telephony.data.TrafficDescriptor;
32 import android.test.AndroidTestCase;
33 import android.test.suitebuilder.annotation.SmallTest;
34 
35 import java.util.ArrayList;
36 import java.util.Arrays;
37 
38 public class DataCallResponseTest extends AndroidTestCase {
39     public static final String FAKE_DNN = "FAKE_DNN";
40     public static final byte[] FAKE_OS_APP_ID = {1, 2, 3, 4};
41     public static final byte[] FAKE_OS_APP_ID_2 = {5, 6, 8, 9};
42 
43     @SmallTest
testParcel()44     public void testParcel() {
45         DataCallResponse response = new DataCallResponse.Builder()
46                 .setCause(0)
47                 .setRetryDurationMillis(-1L)
48                 .setId(1)
49                 .setLinkStatus(2)
50                 .setProtocolType(ApnSetting.PROTOCOL_IP)
51                 .setInterfaceName(FAKE_IFNAME)
52                 .setAddresses(Arrays.asList(
53                         new LinkAddress(InetAddresses.parseNumericAddress(FAKE_ADDRESS), 0)))
54                 .setDnsAddresses(Arrays.asList(InetAddresses.parseNumericAddress(FAKE_DNS)))
55                 .setGatewayAddresses(Arrays.asList(InetAddresses.parseNumericAddress(FAKE_GATEWAY)))
56                 .setPcscfAddresses(
57                         Arrays.asList(InetAddresses.parseNumericAddress(FAKE_PCSCF_ADDRESS)))
58                 .setMtuV4(1440)
59                 .setMtuV6(1440)
60                 .setDefaultQos(new EpsQos())
61                 .setQosBearerSessions(new ArrayList<>())
62                 .setTrafficDescriptors(
63                         Arrays.asList(new TrafficDescriptor(FAKE_DNN, FAKE_OS_APP_ID)))
64                 .build();
65 
66         Parcel p = Parcel.obtain();
67         response.writeToParcel(p, 0);
68         p.setDataPosition(0);
69 
70         DataCallResponse newResponse = new DataCallResponse(p);
71         assertEquals(response, newResponse);
72     }
73 
74     @SmallTest
testEquals()75     public void testEquals() {
76         DataCallResponse response = new DataCallResponse.Builder()
77                 .setCause(0)
78                 .setRetryDurationMillis(-1L)
79                 .setId(1)
80                 .setLinkStatus(2)
81                 .setProtocolType(ApnSetting.PROTOCOL_IP)
82                 .setInterfaceName(FAKE_IFNAME)
83                 .setAddresses(Arrays.asList(
84                         new LinkAddress(InetAddresses.parseNumericAddress(FAKE_ADDRESS), 0)))
85                 .setDnsAddresses(Arrays.asList(InetAddresses.parseNumericAddress(FAKE_DNS)))
86                 .setGatewayAddresses(Arrays.asList(InetAddresses.parseNumericAddress(FAKE_GATEWAY)))
87                 .setPcscfAddresses(
88                         Arrays.asList(InetAddresses.parseNumericAddress(FAKE_PCSCF_ADDRESS)))
89                 .setMtuV4(1440)
90                 .setMtuV6(1400)
91                 .setTrafficDescriptors(
92                         Arrays.asList(new TrafficDescriptor(FAKE_DNN, FAKE_OS_APP_ID)))
93                 .build();
94 
95         DataCallResponse response1 = new DataCallResponse.Builder()
96                 .setCause(0)
97                 .setRetryDurationMillis(-1L)
98                 .setId(1)
99                 .setLinkStatus(2)
100                 .setProtocolType(ApnSetting.PROTOCOL_IP)
101                 .setInterfaceName(FAKE_IFNAME)
102                 .setAddresses(Arrays.asList(
103                         new LinkAddress(InetAddresses.parseNumericAddress(FAKE_ADDRESS), 0)))
104                 .setDnsAddresses(Arrays.asList(InetAddresses.parseNumericAddress(FAKE_DNS)))
105                 .setGatewayAddresses(Arrays.asList(InetAddresses.parseNumericAddress(FAKE_GATEWAY)))
106                 .setPcscfAddresses(
107                         Arrays.asList(InetAddresses.parseNumericAddress(FAKE_PCSCF_ADDRESS)))
108                 .setMtuV4(1440)
109                 .setMtuV6(1400)
110                 .setTrafficDescriptors(
111                         Arrays.asList(new TrafficDescriptor(FAKE_DNN, FAKE_OS_APP_ID)))
112                 .build();
113 
114         assertEquals(response, response);
115         assertEquals(response, response1);
116 
117         DataCallResponse response2 = new DataCallResponse.Builder()
118                 .setCause(1)
119                 .setRetryDurationMillis(-1L)
120                 .setId(1)
121                 .setLinkStatus(3)
122                 .setProtocolType(ApnSetting.PROTOCOL_IP)
123                 .setInterfaceName(FAKE_IFNAME)
124                 .setAddresses(Arrays.asList(
125                         new LinkAddress(InetAddresses.parseNumericAddress(FAKE_ADDRESS), 0)))
126                 .setDnsAddresses(Arrays.asList(InetAddresses.parseNumericAddress(FAKE_DNS),
127                         InetAddresses.parseNumericAddress(FAKE_DNS)))
128                 .setGatewayAddresses(Arrays.asList(InetAddresses.parseNumericAddress(FAKE_GATEWAY)))
129                 .setPcscfAddresses(Arrays.asList(
130                         InetAddresses.parseNumericAddress(FAKE_PCSCF_ADDRESS),
131                         InetAddresses.parseNumericAddress(FAKE_PCSCF_ADDRESS)))
132                 .setMtuV4(1441)
133                 .setMtuV6(1440)
134                 .setTrafficDescriptors(
135                         Arrays.asList(new TrafficDescriptor("FAKE_DNN_2", FAKE_OS_APP_ID_2)))
136                 .build();
137 
138         assertNotSame(response1, response2);
139         assertNotSame(response1, null);
140         assertNotSame(response1, new String[1]);
141     }
142 }
143