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.data; 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.Qos; 32 import android.telephony.data.TrafficDescriptor; 33 import android.test.AndroidTestCase; 34 import android.test.suitebuilder.annotation.SmallTest; 35 36 import java.util.ArrayList; 37 import java.util.Arrays; 38 39 public class DataCallResponseTest extends AndroidTestCase { 40 public static final String FAKE_DNN = "FAKE_DNN"; 41 public static final String FAKE_DNN_2 = "FAKE_DNN_2"; 42 // 97a498e3fc925c9489860333d06e4e470a454e5445525052495345. 43 // [OsAppId.ANDROID_OS_ID, "ENTERPRISE", 1] 44 public static final byte[] FAKE_OS_APP_ID = {-105, -92, -104, -29, -4, -110, 92, 45 -108, -119, -122, 3, 51, -48, 110, 78, 71, 10, 69, 78, 84, 69, 46 82, 80, 82, 73, 83, 69}; 47 // 97a498e3fc925c9489860333d06e4e470a454e544552505249534532. 48 // [OsAppId.ANDROID_OS_ID, "ENTERPRISE", 2] 49 public static final byte[] FAKE_OS_APP_ID_2 = {-105, -92, -104, -29, -4, -110, 92, 50 -108, -119, -122, 3, 51, -48, 110, 78, 71, 10, 69, 78, 84, 69, 51 82, 80, 82, 73, 83, 69, 50}; 52 53 @SmallTest testParcel()54 public void testParcel() { 55 DataCallResponse response = new DataCallResponse.Builder() 56 .setCause(0) 57 .setRetryDurationMillis(-1L) 58 .setId(1) 59 .setLinkStatus(2) 60 .setProtocolType(ApnSetting.PROTOCOL_IP) 61 .setInterfaceName(FAKE_IFNAME) 62 .setAddresses(Arrays.asList( 63 new LinkAddress(InetAddresses.parseNumericAddress(FAKE_ADDRESS), 0))) 64 .setDnsAddresses(Arrays.asList(InetAddresses.parseNumericAddress(FAKE_DNS))) 65 .setGatewayAddresses(Arrays.asList(InetAddresses.parseNumericAddress(FAKE_GATEWAY))) 66 .setPcscfAddresses( 67 Arrays.asList(InetAddresses.parseNumericAddress(FAKE_PCSCF_ADDRESS))) 68 .setMtuV4(1440) 69 .setMtuV6(1440) 70 .setDefaultQos(new EpsQos( 71 new Qos.QosBandwidth(-1, -1), new Qos.QosBandwidth(-1, -1), -1)) 72 .setQosBearerSessions(new ArrayList<>()) 73 .setTrafficDescriptors( 74 Arrays.asList(new TrafficDescriptor(FAKE_DNN, FAKE_OS_APP_ID))) 75 .build(); 76 77 Parcel p = Parcel.obtain(); 78 response.writeToParcel(p, 0); 79 p.setDataPosition(0); 80 81 DataCallResponse newResponse = new DataCallResponse(p); 82 assertEquals(response, newResponse); 83 } 84 85 @SmallTest testEqualsAndHashCode()86 public void testEqualsAndHashCode() { 87 DataCallResponse response = new DataCallResponse.Builder() 88 .setCause(0) 89 .setRetryDurationMillis(-1L) 90 .setId(1) 91 .setLinkStatus(2) 92 .setProtocolType(ApnSetting.PROTOCOL_IP) 93 .setInterfaceName(FAKE_IFNAME) 94 .setAddresses(Arrays.asList( 95 new LinkAddress(InetAddresses.parseNumericAddress(FAKE_ADDRESS), 0))) 96 .setDnsAddresses(Arrays.asList(InetAddresses.parseNumericAddress(FAKE_DNS))) 97 .setGatewayAddresses(Arrays.asList(InetAddresses.parseNumericAddress(FAKE_GATEWAY))) 98 .setPcscfAddresses( 99 Arrays.asList(InetAddresses.parseNumericAddress(FAKE_PCSCF_ADDRESS))) 100 .setMtuV4(1440) 101 .setMtuV6(1400) 102 .setTrafficDescriptors( 103 Arrays.asList(new TrafficDescriptor(FAKE_DNN, FAKE_OS_APP_ID))) 104 .build(); 105 106 DataCallResponse response1 = new DataCallResponse.Builder() 107 .setCause(0) 108 .setRetryDurationMillis(-1L) 109 .setId(1) 110 .setLinkStatus(2) 111 .setProtocolType(ApnSetting.PROTOCOL_IP) 112 .setInterfaceName(FAKE_IFNAME) 113 .setAddresses(Arrays.asList( 114 new LinkAddress(InetAddresses.parseNumericAddress(FAKE_ADDRESS), 0))) 115 .setDnsAddresses(Arrays.asList(InetAddresses.parseNumericAddress(FAKE_DNS))) 116 .setGatewayAddresses(Arrays.asList(InetAddresses.parseNumericAddress(FAKE_GATEWAY))) 117 .setPcscfAddresses( 118 Arrays.asList(InetAddresses.parseNumericAddress(FAKE_PCSCF_ADDRESS))) 119 .setMtuV4(1440) 120 .setMtuV6(1400) 121 .setTrafficDescriptors( 122 Arrays.asList(new TrafficDescriptor(FAKE_DNN, FAKE_OS_APP_ID))) 123 .build(); 124 125 assertEquals(response, response); 126 assertEquals(response, response1); 127 assertEquals(response.hashCode(), response1.hashCode()); 128 129 DataCallResponse response2 = new DataCallResponse.Builder() 130 .setCause(1) 131 .setRetryDurationMillis(-1L) 132 .setId(1) 133 .setLinkStatus(3) 134 .setProtocolType(ApnSetting.PROTOCOL_IP) 135 .setInterfaceName(FAKE_IFNAME) 136 .setAddresses(Arrays.asList( 137 new LinkAddress(InetAddresses.parseNumericAddress(FAKE_ADDRESS), 0))) 138 .setDnsAddresses(Arrays.asList(InetAddresses.parseNumericAddress(FAKE_DNS), 139 InetAddresses.parseNumericAddress(FAKE_DNS))) 140 .setGatewayAddresses(Arrays.asList(InetAddresses.parseNumericAddress(FAKE_GATEWAY))) 141 .setPcscfAddresses(Arrays.asList( 142 InetAddresses.parseNumericAddress(FAKE_PCSCF_ADDRESS), 143 InetAddresses.parseNumericAddress(FAKE_PCSCF_ADDRESS))) 144 .setMtuV4(1441) 145 .setMtuV6(1440) 146 .setTrafficDescriptors(Arrays.asList( 147 new TrafficDescriptor(FAKE_DNN, FAKE_OS_APP_ID), 148 new TrafficDescriptor(FAKE_DNN_2, FAKE_OS_APP_ID_2))) 149 .build(); 150 151 assertNotSame(response1, response2); 152 assertNotSame(response1, null); 153 assertNotSame(response1, new String[1]); 154 assertNotSame(response1.hashCode(), response2.hashCode()); 155 156 DataCallResponse response3 = new DataCallResponse.Builder() 157 .setCause(1) 158 .setRetryDurationMillis(-1L) 159 .setId(1) 160 .setLinkStatus(3) 161 .setProtocolType(ApnSetting.PROTOCOL_IP) 162 .setInterfaceName(FAKE_IFNAME) 163 .setAddresses(Arrays.asList( 164 new LinkAddress(InetAddresses.parseNumericAddress(FAKE_ADDRESS), 0))) 165 .setDnsAddresses(Arrays.asList(InetAddresses.parseNumericAddress(FAKE_DNS), 166 InetAddresses.parseNumericAddress(FAKE_DNS))) 167 .setGatewayAddresses(Arrays.asList(InetAddresses.parseNumericAddress(FAKE_GATEWAY))) 168 .setPcscfAddresses(Arrays.asList( 169 InetAddresses.parseNumericAddress(FAKE_PCSCF_ADDRESS), 170 InetAddresses.parseNumericAddress(FAKE_PCSCF_ADDRESS))) 171 .setMtuV4(1441) 172 .setMtuV6(1440) 173 .setTrafficDescriptors(Arrays.asList( 174 new TrafficDescriptor(FAKE_DNN_2, FAKE_OS_APP_ID_2), 175 new TrafficDescriptor(FAKE_DNN, FAKE_OS_APP_ID))) 176 .build(); 177 178 assertEquals(response2, response3); 179 assertEquals(response2.hashCode(), response3.hashCode()); 180 } 181 } 182