blob: 749c182eb6fc89e1ba2e7f93614f6a5eadded1f4 [file] [log] [blame]
sewookseo04ced832022-03-09 23:16:27 +00001/*
2 * Copyright (C) 2022 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
17package android.net;
18
19import static android.system.OsConstants.SOCK_DGRAM;
20import static android.system.OsConstants.SOCK_STREAM;
21
22
23import static org.junit.Assert.assertEquals;
24import static org.junit.Assert.assertTrue;
25import static org.mockito.Mockito.mock;
26
27import android.os.Build;
28
29import androidx.test.filters.SmallTest;
30
31import com.android.testutils.DevSdkIgnoreRule;
32import com.android.testutils.DevSdkIgnoreRunner;
33
34import org.junit.Test;
35import org.junit.runner.RunWith;
36import org.mockito.Mock;
37
38import java.net.DatagramSocket;
39import java.net.InetSocketAddress;
40import java.net.ServerSocket;
41import java.net.Socket;
42
43@RunWith(DevSdkIgnoreRunner.class)
44@SmallTest
45@DevSdkIgnoreRule.IgnoreUpTo(Build.VERSION_CODES.R)
46public class QosSocketInfoTest {
47 @Mock
48 private Network mMockNetwork = mock(Network.class);
49
50 @Test
51 public void testConstructWithSock() throws Exception {
52 ServerSocket server = new ServerSocket();
53 ServerSocket server6 = new ServerSocket();
54
55 InetSocketAddress clientAddr = new InetSocketAddress("127.0.0.1", 0);
56 InetSocketAddress serverAddr = new InetSocketAddress("127.0.0.1", 0);
57 InetSocketAddress clientAddr6 = new InetSocketAddress("::1", 0);
58 InetSocketAddress serverAddr6 = new InetSocketAddress("::1", 0);
59 server.bind(serverAddr);
60 server6.bind(serverAddr6);
61 Socket socket = new Socket(serverAddr.getAddress(), server.getLocalPort(),
62 clientAddr.getAddress(), clientAddr.getPort());
63 Socket socket6 = new Socket(serverAddr6.getAddress(), server6.getLocalPort(),
64 clientAddr6.getAddress(), clientAddr6.getPort());
65 QosSocketInfo sockInfo = new QosSocketInfo(mMockNetwork, socket);
66 QosSocketInfo sockInfo6 = new QosSocketInfo(mMockNetwork, socket6);
67 assertTrue(sockInfo.getLocalSocketAddress()
68 .equals(new InetSocketAddress(socket.getLocalAddress(), socket.getLocalPort())));
69 assertTrue(sockInfo.getRemoteSocketAddress()
70 .equals((InetSocketAddress) socket.getRemoteSocketAddress()));
71 assertEquals(SOCK_STREAM, sockInfo.getSocketType());
72 assertTrue(sockInfo6.getLocalSocketAddress()
73 .equals(new InetSocketAddress(socket6.getLocalAddress(), socket6.getLocalPort())));
74 assertTrue(sockInfo6.getRemoteSocketAddress()
75 .equals((InetSocketAddress) socket6.getRemoteSocketAddress()));
76 assertEquals(SOCK_STREAM, sockInfo6.getSocketType());
77 socket.close();
78 socket6.close();
79 server.close();
80 server6.close();
81 }
82
83 @Test
84 public void testConstructWithDatagramSock() throws Exception {
85 InetSocketAddress clientAddr = new InetSocketAddress("127.0.0.1", 0);
86 InetSocketAddress serverAddr = new InetSocketAddress("127.0.0.1", 0);
87 InetSocketAddress clientAddr6 = new InetSocketAddress("::1", 0);
88 InetSocketAddress serverAddr6 = new InetSocketAddress("::1", 0);
89 DatagramSocket socket = new DatagramSocket(null);
90 socket.setReuseAddress(true);
91 socket.bind(clientAddr);
92 socket.connect(serverAddr);
93 DatagramSocket socket6 = new DatagramSocket(null);
94 socket6.setReuseAddress(true);
95 socket6.bind(clientAddr);
96 socket6.connect(serverAddr);
97 QosSocketInfo sockInfo = new QosSocketInfo(mMockNetwork, socket);
98 QosSocketInfo sockInfo6 = new QosSocketInfo(mMockNetwork, socket6);
99 assertTrue(sockInfo.getLocalSocketAddress()
100 .equals((InetSocketAddress) socket.getLocalSocketAddress()));
101 assertTrue(sockInfo.getRemoteSocketAddress()
102 .equals((InetSocketAddress) socket.getRemoteSocketAddress()));
103 assertEquals(SOCK_DGRAM, sockInfo.getSocketType());
104 assertTrue(sockInfo6.getLocalSocketAddress()
105 .equals((InetSocketAddress) socket6.getLocalSocketAddress()));
106 assertTrue(sockInfo6.getRemoteSocketAddress()
107 .equals((InetSocketAddress) socket6.getRemoteSocketAddress()));
108 assertEquals(SOCK_DGRAM, sockInfo6.getSocketType());
109 socket.close();
110 }
111}