1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* 2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * this work for additional information regarding copyright ownership. 5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * (the "License"); you may not use this file except in compliance with 7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the License. You may obtain a copy of the License at 8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * See the License for the specific language governing permissions and 15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * limitations under the License. 16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage tests.api.java.net; 19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.AndroidOnly; 21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//import dalvik.annotation.KnownFailure; 22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetClass; 23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargets; 24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestLevel; 25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetNew; 26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.IOException; 28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.InputStream; 29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.InterruptedIOException; 30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.OutputStream; 31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.net.ConnectException; 32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.net.Inet4Address; 33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.net.Inet6Address; 34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.net.InetAddress; 35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.net.InetSocketAddress; 36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.net.Proxy; 37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.net.ServerSocket; 38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.net.Socket; 39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.net.SocketAddress; 40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.net.SocketException; 41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.net.SocketImpl; 42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.net.SocketTimeoutException; 43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.net.UnknownHostException; 44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.nio.channels.IllegalBlockingModeException; 45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.nio.channels.SocketChannel; 46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.Permission; 47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport tests.support.Support_Configuration; 49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport tests.support.Support_PortManager; 50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project@TestTargetClass(Socket.class) 52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic class SocketTest extends SocketTestCase { 53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ServerSocket ss; 55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket s; 57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Thread t; 59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project boolean interrupted = false; 61f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project class SServer extends Thread implements Runnable { 63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket s1 = null; 64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void run() { 66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ss.setSoTimeout(5000); 68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s1 = ss.accept(); 69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ss.close(); 70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Thread.sleep(4000); 71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (java.io.InterruptedIOException x) { 72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.out.println(Thread.currentThread() 73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + ", accept() timeout fired: " + x); 74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (InterruptedException x) { 75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.out.println("Unable to accept: " + e.toString()); 77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } finally { 78f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 79f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (s1 != null) 80f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s1.close(); 81f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (java.io.IOException e) { 82f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 83f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 84f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 85f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 86f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 87f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SecurityManager sm = new SecurityManager() { 88f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void checkPermission(Permission perm) {} 90f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 91f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void checkConnect(String host, int port) { 92f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new SecurityException(); 93f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 94f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }; 95f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 96f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 97f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#Socket() 98f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 99f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "Socket", 103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_Constructor() { 106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // create the socket and then validate some basic state 107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s = new Socket(); 108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse("new socket should not be connected", s.isConnected()); 109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse("new socket should not be bound", s.isBound()); 110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse("new socket should not be closed", s.isClosed()); 111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse("new socket should not be in InputShutdown", s 112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .isInputShutdown()); 113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse("new socket should not be in OutputShutdown", s 114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .isOutputShutdown()); 115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#Socket(java.lang.String, int) 120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "Socket", 125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class, int.class} 126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_ConstructorLjava_lang_StringI() throws IOException { 128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test for method java.net.Socket(java.lang.String, int) 129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int sport = startServer("Cons String,I"); 130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s = new Socket(InetAddress.getLocalHost().getHostName(), sport); 131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Failed to create socket", s.getPort() == sport); 132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //regression for HARMONY-946 134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ServerSocket ss = null; 135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket s = null; 136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ss = new ServerSocket(0); 138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s = new Socket("0.0.0.0", ss.getLocalPort()); 139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } finally { 140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ss.close(); 142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch(Exception e) { 143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //ignore 144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.close(); 147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch(Exception e) { 148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //ignore 149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new Socket("unknown.host", 0); 154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("UnknownHostException was not thrown."); 155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch(UnknownHostException uhe) { 156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket socket = null; 159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project socket = new Socket(InetAddress.getByName(null), sport); 161b70cc0ff07f0980009587ea9fa18e0cc0e3be078Lorenzo Colitti InetAddress address = socket.getLocalAddress(); 162b70cc0ff07f0980009587ea9fa18e0cc0e3be078Lorenzo Colitti if (Boolean.getBoolean("java.net.preferIPv6Addresses")) { 163b70cc0ff07f0980009587ea9fa18e0cc0e3be078Lorenzo Colitti assertTrue( 164b70cc0ff07f0980009587ea9fa18e0cc0e3be078Lorenzo Colitti address.equals(InetAddress.getByName("::1")) || 165b70cc0ff07f0980009587ea9fa18e0cc0e3be078Lorenzo Colitti address.equals(InetAddress.getByName("0:0:0:0:0:0:0:1"))); 166b70cc0ff07f0980009587ea9fa18e0cc0e3be078Lorenzo Colitti } else { 167b70cc0ff07f0980009587ea9fa18e0cc0e3be078Lorenzo Colitti assertEquals(address, InetAddress.getByName("127.0.0.1")); 168b70cc0ff07f0980009587ea9fa18e0cc0e3be078Lorenzo Colitti } 169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } finally { 170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project socket.close(); 172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch(Exception e) {} 173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SecurityManager oldSm = System.getSecurityManager(); 176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(sm); 177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new Socket(InetAddress.getLocalHost().getHostName(), sport); 179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("SecurityException should be thrown."); 180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SecurityException e) { 181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SocketException e) { 183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("SocketException was thrown."); 184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } finally { 185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(oldSm); 186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#Socket(java.lang.String, int, 191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * java.net.InetAddress, int) 192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "Socket", 197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class, int.class, java.net.InetAddress.class, int.class} 198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_ConstructorLjava_lang_StringILjava_net_InetAddressI() 200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws IOException { 201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test for method java.net.Socket(java.lang.String, int, 202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // java.net.InetAddress, int) 203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int sport = startServer("Cons String,I,InetAddress,I"); 204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int portNumber = Support_PortManager.getNextPort(); 205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s = new Socket(InetAddress.getLocalHost().getHostName(), sport, 206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InetAddress.getLocalHost(), portNumber); 207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Failed to create socket", s.getPort() == sport); 208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (("true".equals(System.getProperty("java.net.preferIPv6Addresses"))) 210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project && !("true".equals(System 211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getProperty("java.net.preferIPv4Stack")))) { 212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // ALTERNATE IPv6 TEST 214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if ("true".equals(System.getProperty("run.ipv6tests"))) { 215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.out 216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .println("Running testConstructorLjava_lang_StringILjava_net_InetAddressI(SocketTest) with IPv6GlobalAddressJcl4: " 217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + Support_Configuration.IPv6GlobalAddressJcl4); 218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int testPort = Support_PortManager.getNextPort(); 219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket s1 = null, s2 = null; 220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s1 = new Socket( 222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Support_Configuration.IPv6GlobalAddressJcl4, 80, 223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InetAddress.getLocalHost(), testPort); 224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // check here if InetAddress.getLocalHost() is returning the 226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // loopback address. 227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // if so that is likely the cause of the failure 228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String warning = ""; 229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InetAddress returnedLocalHost = InetAddress 231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getLocalHost(); 232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // don't use isLoopbackAddress for some configurations 233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // as they do not have it 234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (returnedLocalHost.isLoopbackAddress()) { 235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project warning = " - WARNING RETURNED LOCAL HOST IS THE LOOPBACK ADDRESS - MACHINE IS LIKELY NOT CONFIGURED CORRECTLY - THIS LIKELY CAUSED THE FAILURE"; 236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception ex) { 239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project warning = " - WARNING COULD NOT GET LOCAL HOST - " + ex; 240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Exception creating 1st socket" + warning + ": " + e); 243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project boolean exception = false; 245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s2 = new Socket( 247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Support_Configuration.IPv6GlobalAddressJcl4, 80, 248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InetAddress.getLocalHost(), testPort); 249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project exception = true; 251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s1.close(); 254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (!exception) 255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s2.close(); 256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Was able to create two sockets on same port", 259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project exception); 260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } else { 263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int testPort = Support_PortManager.getNextPort(); 264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket s1 = null, s2 = null; 265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int serverPort = ss.getLocalPort(); 266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s1 = new Socket("127.0.0.1", serverPort, InetAddress 268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getLocalHost(), testPort); 269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project e.printStackTrace(); 271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // check here if InetAddress.getLocalHost() is returning the 273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // loopback address. 274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // if so that is likely the cause of the failure 275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String warning = ""; 276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InetAddress returnedLocalHost = InetAddress.getLocalHost(); 278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // don't use isLoopbackAddress for some configurations as 279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // they do not have it 280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (returnedLocalHost.isLoopbackAddress()) { 281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project warning = " - WARNING RETURNED LOCAL HOST IS THE LOOPBACK ADDRESS - MACHINE IS LIKELY NOT CONFIGURED CORRECTLY - THIS LIKELY CAUSED THE FAILURE"; 282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception ex) { 285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project warning = " - WARNING COULD NOT GET LOCAL HOST - " + ex; 286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Exception creating 1st socket" + warning + ": " + e); 289f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 290f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project boolean exception = false; 291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s2 = new Socket("127.0.0.1", serverPort, InetAddress 293f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getLocalHost(), testPort); 294f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 295f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project exception = true; 296f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 297f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 298f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s1.close(); 299f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (!exception) 300f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s2.close(); 301f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 302f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Was able to create two sockets on same port", exception); 304f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 305f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 306f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SecurityManager oldSm = System.getSecurityManager(); 307f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(sm); 308f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 309f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new Socket("127.0.0.1", 0, InetAddress 310f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getLocalHost(), 0); 311f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("SecurityException should be thrown."); 312f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SecurityException e) { 313f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 314f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SocketException e) { 315f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("SocketException was thrown."); 316f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } finally { 317f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(oldSm); 318f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 319f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 320f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 321f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 322f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#Socket(java.lang.String, int, boolean) 323f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 324f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 325f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 326f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 327f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "Socket", 328f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class, int.class, boolean.class} 329f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 330f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_ConstructorLjava_lang_StringIZ() throws IOException { 331f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test for method java.net.Socket(java.lang.String, int, boolean) 332f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int sport = startServer("Cons String,I,Z"); 333f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s = new Socket(InetAddress.getLocalHost().getHostName(), sport, true); 334f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Failed to create socket", s.getPort() == sport); 335f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 336f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s = new Socket(InetAddress.getLocalHost().getHostName(), sport, false); 337f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 338f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SecurityManager oldSm = System.getSecurityManager(); 339f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(sm); 340f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 341f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new Socket(InetAddress.getLocalHost().getHostName(), sport, true); 342f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("SecurityException should be thrown."); 343f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SecurityException e) { 344f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 345f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SocketException e) { 346f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("SocketException was thrown."); 347f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } finally { 348f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(oldSm); 349f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 350f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 351f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 352f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 353f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#Socket(java.net.InetAddress, int) 354f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 355f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 356f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 357f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 358f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "Socket", 359f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.net.InetAddress.class, int.class} 360f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 361f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_ConstructorLjava_net_InetAddressI() throws IOException { 362f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test for method java.net.Socket(java.net.InetAddress, int) 363f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int sport = startServer("Cons InetAddress,I"); 364f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s = new Socket(InetAddress.getLocalHost(), sport); 365f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Failed to create socket", s.getPort() == sport); 366f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 367f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SecurityManager oldSm = System.getSecurityManager(); 368f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(sm); 369f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 370f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new Socket(InetAddress.getLocalHost(), sport); 371f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("SecurityException should be thrown."); 372f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SecurityException e) { 373f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 374f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SocketException e) { 375f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("SocketException was thrown."); 376f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } finally { 377f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(oldSm); 378f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 379f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 380f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 381f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 382f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#Socket(java.net.InetAddress, int, 383f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * java.net.InetAddress, int) 384f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 385f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 386f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 387f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 388f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "Socket", 389f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.net.InetAddress.class, int.class, java.net.InetAddress.class, int.class} 390f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 391f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_ConstructorLjava_net_InetAddressILjava_net_InetAddressI() 392f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws IOException { 393f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test for method java.net.Socket(java.net.InetAddress, int, 394f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // java.net.InetAddress, int) 395f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int sport = startServer("Cons InetAddress,I,InetAddress,I"); 396f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int portNumber = Support_PortManager.getNextPort(); 397f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s = new Socket(InetAddress.getLocalHost().getHostName(), sport, 398f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InetAddress.getLocalHost(), portNumber); 399f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Failed to create socket", s.getLocalPort() == portNumber); 400f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 401f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SecurityManager oldSm = System.getSecurityManager(); 402f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(sm); 403f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 404f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new Socket(InetAddress.getLocalHost().getHostName(), sport, 405f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InetAddress.getLocalHost(), portNumber); 406f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("SecurityException should be thrown."); 407f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SecurityException e) { 408f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 409f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SocketException e) { 410f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("SocketException was thrown."); 411f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } finally { 412f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(oldSm); 413f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 414f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 415f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 416f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 417f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#Socket(java.net.InetAddress, int, boolean) 418f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 419f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 420f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 421f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 422f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "Socket", 423f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.net.InetAddress.class, int.class, boolean.class} 424f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 425f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_ConstructorLjava_net_InetAddressIZ() throws IOException { 426f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test for method java.net.Socket(java.net.InetAddress, int, boolean) 427f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int sport = startServer("Cons InetAddress,I,Z"); 428f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s = new Socket(InetAddress.getLocalHost(), sport, true); 429f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Failed to create socket", s.getPort() == sport); 430f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 431f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s = new Socket(InetAddress.getLocalHost(), sport, false); 432f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 433f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SecurityManager oldSm = System.getSecurityManager(); 434f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(sm); 435f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 436f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new Socket(InetAddress.getLocalHost(), sport, true); 437f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("SecurityException should be thrown."); 438f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SecurityException e) { 439f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 440f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SocketException e) { 441f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("SocketException was thrown."); 442f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } finally { 443f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(oldSm); 444f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 445f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 446f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 447f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 448f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#close() 449f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 450f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 451f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.SUFFICIENT, 452f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "IOException checking missing.", 453f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "close", 454f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 455f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 456f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_close() throws IOException { 457f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test for method void java.net.Socket.close() 458f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int sport = startServer("SServer close"); 459f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int portNumber = Support_PortManager.getNextPort(); 460f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s = new Socket(InetAddress.getLocalHost(), sport, null, portNumber); 461f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 462f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.setSoLinger(false, 100); 463f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 464f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handleException(e, SO_LINGER); 465f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 466f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.close(); 467f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 468f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.getOutputStream(); 469f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IOException was not thrown."); 470f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (java.io.IOException e) { 471f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 472f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 473f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 474f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 475f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 476f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#getInetAddress() 477f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 478f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 479f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 480f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 481f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getInetAddress", 482f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 483f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 484f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_getInetAddress() throws IOException { 485f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test for method java.net.InetAddress java.net.Socket.getInetAddress() 486f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int sport = startServer("SServer getInetAddress"); 487f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int portNumber = Support_PortManager.getNextPort(); 488f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s = new Socket(InetAddress.getLocalHost(), sport, null, portNumber); 489f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Returned incorrect InetAdrees", s.getInetAddress().equals( 490f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InetAddress.getLocalHost())); 491f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 492f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 493f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 494f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 495f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#getInputStream() 496f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 497f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 498f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 499f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 500f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getInputStream", 501f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 502f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 503f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_getInputStream() throws IOException { 504f3029c5855474c107861ce671b25fa119a6b4a51Elliott Hughes // Simple fetch test 505f3029c5855474c107861ce671b25fa119a6b4a51Elliott Hughes ServerSocket server = new ServerSocket(0); 506f3029c5855474c107861ce671b25fa119a6b4a51Elliott Hughes Socket client = new Socket(InetAddress.getLocalHost(), server.getLocalPort()); 507f3029c5855474c107861ce671b25fa119a6b4a51Elliott Hughes InputStream is = client.getInputStream(); 508f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotNull("Failed to get stream", is); 509f3029c5855474c107861ce671b25fa119a6b4a51Elliott Hughes is.close(); 510f3029c5855474c107861ce671b25fa119a6b4a51Elliott Hughes client.close(); 511f3029c5855474c107861ce671b25fa119a6b4a51Elliott Hughes server.close(); 512f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 513f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 514f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 515f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#getKeepAlive() 516f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 517f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 518f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 519f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 520f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getKeepAlive", 521f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 522f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 523f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_getKeepAlive() { 524f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 525f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int sport = startServer("SServer getKeepAlive"); 526f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int portNumber = Support_PortManager.getNextPort(); 527f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket theSocket = new Socket(InetAddress.getLocalHost(), sport, 528f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project null, portNumber); 529f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.setKeepAlive(true); 530f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("getKeepAlive false when it should be true", theSocket 531f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getKeepAlive()); 532f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.setKeepAlive(false); 533f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse("getKeepAlive true when it should be False", theSocket 534f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getKeepAlive()); 535f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 536f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 537f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.setKeepAlive(false); 538f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IOException was not thrown after calling setKeepAlive " + 539f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "method."); 540f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch(IOException ioe) { 541f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 542f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 543f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 544f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.getKeepAlive(); 545f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IOException was not thrown after calling getKeepAlive +" + 546f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "method."); 547f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch(IOException ioe) { 548f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 549f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 550f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ensureExceptionThrownIfOptionIsUnsupportedOnOS(SO_KEEPALIVE); 551f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 552f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handleException(e, SO_KEEPALIVE); 553f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 554f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 555f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 556f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 557f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#getLocalAddress() 558f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 559f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 560f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 561f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 562f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getLocalAddress", 563f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 564f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 565f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_getLocalAddress() throws IOException { 566f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test for method java.net.InetAddress 567f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // java.net.Socket.getLocalAddress() 568f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int sport = startServer("SServer getLocAddress"); 569f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int portNumber = Support_PortManager.getNextPort(); 570f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s = new Socket(InetAddress.getLocalHost(), sport, null, portNumber); 571f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Returned incorrect InetAddress", 572f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InetAddress.getLocalHost(), s.getLocalAddress()); 573f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 574f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // now validate thet behaviour when the any address is returned 575f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String preferIPv4StackValue = System 576f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getProperty("java.net.preferIPv4Stack"); 577f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String preferIPv6AddressesValue = System 578f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getProperty("java.net.preferIPv6Addresses"); 579f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 580f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s = new Socket(); 581f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.bind(new InetSocketAddress(InetAddress.getByName("0.0.0.0"), 0)); 582f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 583f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (((preferIPv4StackValue == null) || preferIPv4StackValue 584f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .equalsIgnoreCase("false")) 585f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project && (preferIPv6AddressesValue != null) 586f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project && (preferIPv6AddressesValue.equals("true"))) { 587f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue( 588f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "ANY address not returned correctly (getLocalAddress) with preferIPv6Addresses=true, preferIPv4Stack=false " 589f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + s.getLocalSocketAddress(), 590f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.getLocalAddress() instanceof Inet6Address); 591f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } else { 592f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue( 593f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "ANY address not returned correctly (getLocalAddress) with preferIPv6Addresses=true, preferIPv4Stack=true " 594f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + s.getLocalSocketAddress(), 595f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.getLocalAddress() instanceof Inet4Address); 596f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 597f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.close(); 598f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 599f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 600f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 601f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 602f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#getLocalPort() 603f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 604f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 605f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 606f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 607f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getLocalPort", 608f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 609f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 610f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_getLocalPort() throws IOException { 611f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test for method int java.net.Socket.getLocalPort() 612f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int sport = startServer("SServer getLocalPort"); 613f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int portNumber = Support_PortManager.getNextPort(); 614f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s = new Socket(InetAddress.getLocalHost().getHostName(), sport, 615f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InetAddress.getLocalHost(), portNumber); 616f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Returned incorrect port", s.getLocalPort() == portNumber); 617f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 618f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 619f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 620f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#getOutputStream() 621f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 622f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @SuppressWarnings("deprecation") 623f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 624f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 625f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "IOException checking missing.", 626f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getOutputStream", 627f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 628f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 629f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_getOutputStream() throws IOException { 630f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test for method java.io.OutputStream 631f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // java.net.Socket.getOutputStream() 632f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int sport = startServer("SServer getOutputStream"); 633f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int portNumber = Support_PortManager.getNextPort(); 634f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s = new Socket(InetAddress.getLocalHost(), sport, null, portNumber); 635f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project java.io.OutputStream os = s.getOutputStream(); 636f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotNull("Failed to get stream", os); 637f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project os.write(1); 638f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.close(); 639f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Regression test for harmony-2934 640f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s = new Socket("127.0.0.1", Support_PortManager.getNextPort(), 641f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project false); 642f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project OutputStream o = s.getOutputStream(); 643f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project o.write(1); 644f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 645f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Thread.sleep(1000); 646f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (InterruptedException e) { 647f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 648f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project o.close(); 649f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.close(); 650f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 651f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Regression test for harmony-2942 652f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s = new Socket("0.0.0.0", Support_PortManager.getNextPort(), 653f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project false); 654f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project o = s.getOutputStream(); 655f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project o.write(1); 656f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 657f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Thread.sleep(1000); 658f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (InterruptedException e) { 659f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 660f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project o.close(); 661f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.close(); 662f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 663f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 664f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 665f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#getPort() 666f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 667f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 668f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 669f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 670f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getPort", 671f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 672f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 673f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_getPort() throws IOException { 674f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test for method int java.net.Socket.getPort() 675f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int sport = startServer("SServer getPort"); 676f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int portNumber = Support_PortManager.getNextPort(); 677f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s = new Socket(InetAddress.getLocalHost(), sport, null, portNumber); 678f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Returned incorrect port" + s.getPort(), 679f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.getPort() == sport); 680f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 681f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 682f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 683f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#getSoLinger() 684f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 685f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 686f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 687f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 688f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getSoLinger", 689f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 690f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 691f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_getSoLinger() { 692f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test for method int java.net.Socket.getSoLinger() 693f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int sport = startServer("SServer getSoLinger"); 694f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 695f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int portNumber = Support_PortManager.getNextPort(); 696f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s = new Socket(InetAddress.getLocalHost(), sport, null, portNumber); 697f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.setSoLinger(true, 200); 698f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Returned incorrect linger", 200, s.getSoLinger()); 699f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ensureExceptionThrownIfOptionIsUnsupportedOnOS(SO_LINGER); 700f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.setSoLinger(false, 0); 701f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 702f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handleException(e, SO_LINGER); 703f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 704f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 705f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 706f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int portNumber = Support_PortManager.getNextPort(); 707f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s = new Socket(InetAddress.getLocalHost(), sport, null, portNumber); 708f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.close(); 709f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 710f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.getSoLinger(); 711f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("SocketException was not thrown."); 712f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch(SocketException ioe) { 713f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 714f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 715f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch(Exception e) { 716f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Unexpected exception was thrown: " + e.toString()); 717f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 718f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 719f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 720f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 721f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#getReceiveBufferSize() 722f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 723f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 724f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 725f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 726f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getReceiveBufferSize", 727f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 728f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 729f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_getReceiveBufferSize() { 730f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 731f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int sport = startServer("SServer getReceiveBufferSize"); 732f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int portNumber = Support_PortManager.getNextPort(); 733f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s = new Socket(InetAddress.getLocalHost().getHostName(), sport, 734f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project null, portNumber); 735f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.setReceiveBufferSize(130); 736f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Incorrect buffer size", s.getReceiveBufferSize() >= 130); 737f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ensureExceptionThrownIfOptionIsUnsupportedOnOS(SO_RCVBUF); 738f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 739f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handleException(e, SO_RCVBUF); 740f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 741f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 742f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 743f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket newSocket = new Socket(); 744f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project newSocket.close(); 745f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 746f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project newSocket.getReceiveBufferSize(); 747f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("SocketException was not thrown."); 748f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch(SocketException e) { 749f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 750f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 751f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch(Exception e) { 752f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Unexpected exception."); 753f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 754f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 755f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 756f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 757f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#getSendBufferSize() 758f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 759f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 760f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 761f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 762f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getSendBufferSize", 763f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 764f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 765f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_getSendBufferSize() { 766f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int sport = startServer("SServer setSendBufferSize"); 767f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 768f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int portNumber = Support_PortManager.getNextPort(); 769f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s = new Socket(InetAddress.getLocalHost().getHostName(), sport, 770f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project null, portNumber); 771f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.setSendBufferSize(134); 772f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Incorrect buffer size", s.getSendBufferSize() >= 134); 773f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ensureExceptionThrownIfOptionIsUnsupportedOnOS(SO_SNDBUF); 774f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 775f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handleException(e, SO_SNDBUF); 776f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 777f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 778f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int portNumber = Support_PortManager.getNextPort(); 779f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s = new Socket(InetAddress.getLocalHost(), sport, null, portNumber); 780f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.close(); 781f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 782f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.getSendBufferSize(); 783f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IOException was not thrown."); 784f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch(IOException ioe) { 785f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 786f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 787f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch(Exception e) { 788f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Unexpected exception was thrown: " + e.toString()); 789f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 790f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 791f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 792f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 793f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#getSoTimeout() 794f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 795f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 796f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 797f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 798f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getSoTimeout", 799f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 800f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 801f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_getSoTimeout() { 802f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test for method int java.net.Socket.getSoTimeout() 803f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int sport = startServer("SServer getSoTimeout"); 804f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 805f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s = new Socket(InetAddress.getLocalHost(), sport); 806f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.setSoTimeout(100); 807f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Returned incorrect sotimeout", 100, s.getSoTimeout()); 808f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ensureExceptionThrownIfOptionIsUnsupportedOnOS(SO_TIMEOUT); 809f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 810f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handleException(e, SO_TIMEOUT); 811f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 812f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 813f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 814f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int portNumber = Support_PortManager.getNextPort(); 815f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s = new Socket(InetAddress.getLocalHost(), sport, null, portNumber); 816f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.close(); 817f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 818f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.getSoTimeout(); 819f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("SocketException was not thrown."); 820f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch(SocketException ioe) { 821f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 822f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 823f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch(Exception e) { 824f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Unexpected exception was thrown: " + e.toString()); 825f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 826f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 827f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 828f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 829f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#getTcpNoDelay() 830f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 831f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 832f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 833f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 834f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getTcpNoDelay", 835f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 836f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 837f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_getTcpNoDelay() { 838f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test for method boolean java.net.Socket.getTcpNoDelay() 839f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int sport = startServer("SServer getTcpNoDelay"); 840f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 841f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int portNumber = Support_PortManager.getNextPort(); 842f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s = new Socket(InetAddress.getLocalHost(), sport, null, portNumber); 843f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project boolean bool = !s.getTcpNoDelay(); 844f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.setTcpNoDelay(bool); 845f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Failed to get no delay setting: " + s.getTcpNoDelay(), 846f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.getTcpNoDelay() == bool); 847f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ensureExceptionThrownIfOptionIsUnsupportedOnOS(TCP_NODELAY); 848f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 849f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handleException(e, TCP_NODELAY); 850f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 851f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 852f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 853f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int portNumber = Support_PortManager.getNextPort(); 854f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s = new Socket(InetAddress.getLocalHost(), sport, null, portNumber); 855f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.close(); 856f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 857f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.getTcpNoDelay(); 858f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("SocketException was not thrown."); 859f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch(SocketException ioe) { 860f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 861f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 862f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch(Exception e) { 863f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Unexpected exception was thrown: " + e.toString()); 864f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 865f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 866f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 867f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 868f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#setKeepAlive(boolean) 869f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 870f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 871f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 872f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 873f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "setKeepAlive", 874f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {boolean.class} 875f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 876f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_setKeepAliveZ() throws Exception { 877f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // There is not really a good test for this as it is there to detect 878f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // crashed machines. Just make sure we can set it 879f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 880f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int sport = startServer("SServer setKeepAlive"); 881f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int portNumber = Support_PortManager.getNextPort(); 882f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket theSocket = new Socket(InetAddress.getLocalHost(), sport, 883f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project null, portNumber); 884f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.setKeepAlive(true); 885f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.setKeepAlive(false); 886f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ensureExceptionThrownIfOptionIsUnsupportedOnOS(SO_KEEPALIVE); 887f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 888f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handleException(e, SO_KEEPALIVE); 889f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 890f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // regression test for HARMONY-1136 891f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new TestSocket((SocketImpl) null).setKeepAlive(true); 892f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 893f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 894f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket theSocket = new Socket(); 895f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 896f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.setKeepAlive(true); 897f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("SocketException was not thrown."); 898f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch(SocketException ioe) { 899f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 900f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 901f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 902f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project class TestSocket extends Socket { 903f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public TestSocket(SocketImpl impl) throws SocketException { 904f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super(impl); 905f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 906f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 907f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 908f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 909f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#setSocketImplFactory(java.net.SocketImplFactory) 910f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 911f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 912f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 913f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies SecurityException.", 914f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "setSocketImplFactory", 915f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.net.SocketImplFactory.class} 916f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 917f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_setSocketImplFactoryLjava_net_SocketImplFactory() { 918f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test for method void 919f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // java.net.Socket.setSocketImplFactory(java.net.SocketImplFactory) 920f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 921f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Cannot test as setting will cause the factory to be changed for 922f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // all subsequent sockets 923f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 924f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SecurityManager sm = new SecurityManager() { 925f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 926f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void checkPermission(Permission perm) { 927f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 928f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 929f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void checkSetFactory() { 930f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new SecurityException(); 931f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 932f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }; 933f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 934f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SecurityManager oldSm = System.getSecurityManager(); 935f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(sm); 936f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 937f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket.setSocketImplFactory(null); 938f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("SecurityException should be thrown."); 939f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SecurityException e) { 940f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 941f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 942f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IOException was thrown."); 943f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } finally { 944f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(oldSm); 945f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 946f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 947f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 948f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 949f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 950f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#setSendBufferSize(int) 951f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 952f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 953f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 954f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 955f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "setSendBufferSize", 956f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {int.class} 957f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 958f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_setSendBufferSizeI() { 959f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 960f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int sport = startServer("SServer setSendBufferSizeI"); 961f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int portNumber = Support_PortManager.getNextPort(); 962f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s = new Socket(InetAddress.getLocalHost(), sport, null, portNumber); 963f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.setSendBufferSize(134); 964f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Incorrect buffer size", s.getSendBufferSize() >= 134); 965f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ensureExceptionThrownIfOptionIsUnsupportedOnOS(SO_SNDBUF); 966f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 967f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handleException(e, SO_SNDBUF); 968f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 969f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 970f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 971f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket theSocket = new Socket(); 972f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 973f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.setSendBufferSize(1); 974f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("SocketException was not thrown."); 975f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch(SocketException ioe) { 976f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 977f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch(IOException ioe) { 978f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IOException was thrown."); 979f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 980f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 981f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 982f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 983f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#setReceiveBufferSize(int) 984f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 985f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 986f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 987f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 988f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "setReceiveBufferSize", 989f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {int.class} 990f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 991f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_setReceiveBufferSizeI() { 992f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 993f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int sport = startServer("SServer setReceiveBufferSizeI"); 994f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int portNumber = Support_PortManager.getNextPort(); 995f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s = new Socket(InetAddress.getLocalHost(), sport, null, portNumber); 996f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.setReceiveBufferSize(130); 997f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Incorrect buffer size", s.getReceiveBufferSize() >= 130); 998f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ensureExceptionThrownIfOptionIsUnsupportedOnOS(SO_RCVBUF); 999f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 1000f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handleException(e, SO_RCVBUF); 1001f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1002f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1003f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1004f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket theSocket = new Socket(); 1005f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 1006f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.setReceiveBufferSize(1); 1007f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("SocketException was not thrown."); 1008f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch(SocketException ioe) { 1009f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 1010f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch(IOException ioe) { 1011f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IOException was thrown."); 1012f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1013f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1014f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1015f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1016f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#setSoLinger(boolean, int) 1017f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1018f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1019f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 1020f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 1021f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "setSoLinger", 1022f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {boolean.class, int.class} 1023f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1024f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_setSoLingerZI() { 1025f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test for method void java.net.Socket.setSoLinger(boolean, int) 1026f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1027f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int sport = startServer("SServer setSoLingerZI"); 1028f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int portNumber = Support_PortManager.getNextPort(); 1029f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s = new Socket(InetAddress.getLocalHost(), sport, null, portNumber); 1030f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.setSoLinger(true, 500); 1031f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Set incorrect linger", 500, s.getSoLinger()); 1032f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ensureExceptionThrownIfOptionIsUnsupportedOnOS(SO_LINGER); 1033f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.setSoLinger(false, 0); 1034f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 1035f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handleException(e, SO_LINGER); 1036f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1037f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1038f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1039f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket theSocket = new Socket(); 1040f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 1041f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.setSoLinger(true, 1); 1042f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("SocketException was not thrown."); 1043f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch(SocketException ioe) { 1044f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 1045f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch(IOException ioe) { 1046f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IOException was thrown."); 1047f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1048f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1049f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1050f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1051f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#setSoTimeout(int) 1052f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1053f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1054f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 1055f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 1056f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "setSoTimeout", 1057f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {int.class} 1058f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1059f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_setSoTimeoutI() { 1060f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test for method void java.net.Socket.setSoTimeout(int) 1061f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1062f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int sport = startServer("SServer seSoTimeoutI"); 1063f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int portNumber = Support_PortManager.getNextPort(); 1064f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s = new Socket(InetAddress.getLocalHost(), sport, null, portNumber); 1065f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.setSoTimeout(100); 1066f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Set incorrect sotimeout", 100, s.getSoTimeout()); 1067f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ensureExceptionThrownIfOptionIsUnsupportedOnOS(SO_TIMEOUT); 1068f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 1069f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handleException(e, SO_TIMEOUT); 1070f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1071f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1072f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1073f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket theSocket = new Socket(); 1074f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 1075f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.setSoTimeout(1); 1076f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("SocketException was not thrown."); 1077f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch(SocketException ioe) { 1078f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 1079f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch(IOException ioe) { 1080f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IOException was thrown."); 1081f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1082f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1083f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1084f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1085f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#setTcpNoDelay(boolean) 1086f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1087f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1088f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 1089f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 1090f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "setTcpNoDelay", 1091f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {boolean.class} 1092f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1093f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_setTcpNoDelayZ() { 1094f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test for method void java.net.Socket.setTcpNoDelay(boolean) 1095f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1096f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int sport = startServer("SServer setTcpNoDelayZ"); 1097f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int portNumber = Support_PortManager.getNextPort(); 1098f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s = new Socket(InetAddress.getLocalHost(), sport, null, portNumber); 1099f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project boolean bool; 1100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.setTcpNoDelay(bool = !s.getTcpNoDelay()); 1101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Failed to set no delay setting: " + s.getTcpNoDelay(), 1102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.getTcpNoDelay() == bool); 1103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ensureExceptionThrownIfOptionIsUnsupportedOnOS(TCP_NODELAY); 1104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 1105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handleException(e, TCP_NODELAY); 1106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket theSocket = new Socket(); 1110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 1111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.setTcpNoDelay(true); 1112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("SocketException was not thrown."); 1113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch(SocketException ioe) { 1114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 1115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch(IOException ioe) { 1116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IOException was thrown."); 1117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#toString() 1122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 1125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 1126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "toString", 1127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 1128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_toString() throws IOException { 1130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test for method java.lang.String java.net.Socket.toString() 1131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int sport = startServer("SServer toString"); 1132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int portNumber = Support_PortManager.getNextPort(); 1133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s = new Socket(InetAddress.getLocalHost().getHostName(), sport, 1134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InetAddress.getLocalHost(), portNumber); 1135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Returned incorrect string: " + s.toString() 1136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + " localHost: " + InetAddress.getLocalHost(), s.toString() 1137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .equals( 1138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Socket[addr=" + InetAddress.getLocalHost() + ",port=" 1139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + s.getPort() + ",localport=" 1140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + s.getLocalPort() + "]")); 1141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#shutdownInput() 1145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 1148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 1149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "shutdownInput", 1150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 1151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @AndroidOnly("RI returns wrong value for EOF") 1153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_shutdownInput() throws Exception { 1154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InetAddress addr = InetAddress.getLocalHost(); 1155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int port = Support_PortManager.getNextPort(); 1156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ServerSocket serverSocket = new ServerSocket(port, 5, addr); 1157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket theSocket = new Socket(addr, port); 1158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket servSock = serverSocket.accept(); 1159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InputStream theInput = theSocket.getInputStream(); 1161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project OutputStream theOutput = servSock.getOutputStream(); 1162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // shutdown the input 1164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.shutdownInput(); 1165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // send the regular data 1167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String sendString = new String("Test"); 1168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theOutput.write(sendString.getBytes()); 1169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theOutput.flush(); 1170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // give things some time to settle 1172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Thread.sleep(1000); 1173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // RI fails here. It is a RI bug not to return 0 to indicate EOF 1175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, theInput.available()); 1176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 1178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket.close(); 1179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket socket = new Socket(); 1181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project socket.close(); 1182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project socket.shutdownInput(); 1184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IOException was not thrown."); 1185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch(IOException ioe) { 1186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 1187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#shutdownOutput() 1192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 1195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 1196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "shutdownOutput", 1197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 1198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_shutdownOutput() throws IOException { 1200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InetAddress addr = InetAddress.getLocalHost(); 1201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int port = Support_PortManager.getNextPort(); 1202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ServerSocket serverSocket = new ServerSocket(port, 5, addr); 1203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket theSocket = new Socket(addr, port); 1204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket servSock = serverSocket.accept(); 1205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InputStream theInput = theSocket.getInputStream(); 1207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project OutputStream theOutput = servSock.getOutputStream(); 1208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // shutdown the output 1210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project servSock.shutdownOutput(); 1211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // send the regular data 1213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String sendString = new String("Test"); 1214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theOutput.write(sendString.getBytes()); 1216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theOutput.flush(); 1217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("No exception when writing on socket with output shutdown"); 1218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 1219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 1222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket.close(); 1223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.shutdownInput(); 1226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IOException was not thrown."); 1227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch(IOException ioe) { 1228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 1229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#getLocalSocketAddress() 1234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 1237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 1238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getLocalSocketAddress", 1239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 1240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_getLocalSocketAddress() throws IOException { 1242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // set up server connect and then validate that we get the right 1243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // response for the local address 1244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int sport = startServer("SServer getLocSocketAddress"); 1245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int portNumber = Support_PortManager.getNextPort(); 1246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s = new Socket(InetAddress.getLocalHost(), sport, null, portNumber); 1247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue( 1248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Returned incorrect InetSocketAddress(1):" 1249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + s.getLocalSocketAddress().toString() 1250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "Expected: " 1251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + (new InetSocketAddress(InetAddress.getLocalHost(), 1252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project portNumber)).toString(), s 1253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getLocalSocketAddress().equals( 1254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new InetSocketAddress(InetAddress 1255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getLocalHost(), portNumber))); 1256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.close(); 1257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // now create a socket that is not bound and validate we get the 1259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // right answer 1260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket theSocket = new Socket(); 1261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull( 1262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Returned incorrect InetSocketAddress -unbound socket- Expected null", 1263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.getLocalSocketAddress()); 1264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // now bind the socket and make sure we get the right answer 1266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project portNumber = Support_PortManager.getNextPort(); 1267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.bind(new InetSocketAddress(InetAddress.getLocalHost(), 1268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project portNumber)); 1269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue( 1270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Returned incorrect InetSocketAddress(2):" 1271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + theSocket.getLocalSocketAddress().toString() 1272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "Expected: " 1273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + (new InetSocketAddress(InetAddress.getLocalHost(), 1274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project portNumber)).toString(), theSocket 1275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getLocalSocketAddress().equals( 1276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new InetSocketAddress(InetAddress 1277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getLocalHost(), portNumber))); 1278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 1279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // now validate thet behaviour when the any address is returned 1281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s = new Socket(); 1282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.bind(new InetSocketAddress(InetAddress.getByName("0.0.0.0"), 0)); 1283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String preferIPv4StackValue = System 1285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getProperty("java.net.preferIPv4Stack"); 1286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String preferIPv6AddressesValue = System 1287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getProperty("java.net.preferIPv6Addresses"); 1288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (((preferIPv4StackValue == null) || preferIPv4StackValue 1289f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .equalsIgnoreCase("false")) 1290f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project && (preferIPv6AddressesValue != null) 1291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project && (preferIPv6AddressesValue.equals("true"))) { 1292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue( 1293f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "ANY address not returned correctly with preferIPv6Addresses=true, preferIPv4Stack=false " 1294f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + s.getLocalSocketAddress(), 1295f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ((InetSocketAddress) s.getLocalSocketAddress()) 1296f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getAddress() instanceof Inet6Address); 1297f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } else { 1298f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue( 1299f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "ANY address not returned correctly with preferIPv6Addresses=true, preferIPv4Stack=true " 1300f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + s.getLocalSocketAddress(), 1301f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ((InetSocketAddress) s.getLocalSocketAddress()) 1302f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getAddress() instanceof Inet4Address); 1303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1304f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.close(); 1305f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1306f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // now validate the same for getLocalAddress 1307f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s = new Socket(); 1308f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.bind(new InetSocketAddress(InetAddress.getByName("0.0.0.0"), 0)); 1309f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (((preferIPv4StackValue == null) || preferIPv4StackValue 1310f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .equalsIgnoreCase("false")) 1311f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project && (preferIPv6AddressesValue != null) 1312f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project && (preferIPv6AddressesValue.equals("true"))) { 1313f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue( 1314f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "ANY address not returned correctly with preferIPv6Addresses=true, preferIPv4Stack=false " 1315f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + s.getLocalSocketAddress(), 1316f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ((InetSocketAddress) s.getLocalSocketAddress()) 1317f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getAddress() instanceof Inet6Address); 1318f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } else { 1319f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue( 1320f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "ANY address not returned correctly with preferIPv6Addresses=true, preferIPv4Stack=true " 1321f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + s.getLocalSocketAddress(), 1322f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ((InetSocketAddress) s.getLocalSocketAddress()) 1323f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getAddress() instanceof Inet4Address); 1324f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1325f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.close(); 1326f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1327f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1328f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1329f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#getRemoteSocketAddress() 1330f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1331f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1332f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 1333f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 1334f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getRemoteSocketAddress", 1335f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 1336f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1337f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_getRemoteSocketAddress() throws IOException { 1338f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // set up server connect and then validate that we get the right 1339f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // response for the remote address 1340f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int sport = startServer("SServer getLocRemoteAddress"); 1341f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int portNumber = Support_PortManager.getNextPort(); 1342f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s = new Socket(InetAddress.getLocalHost(), sport, null, portNumber); 1343f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Returned incorrect InetSocketAddress(1):" 1344f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + s.getLocalSocketAddress().toString(), 1345f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.getRemoteSocketAddress() 1346f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .equals( 1347f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new InetSocketAddress(InetAddress 1348f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getLocalHost(), sport))); 1349f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.close(); 1350f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1351f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // now create one that is not connect and validate that we get the 1352f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // right answer 1353f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket theSocket = new Socket(); 1354f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project portNumber = Support_PortManager.getNextPort(); 1355f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.bind(new InetSocketAddress(InetAddress.getLocalHost(), 1356f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project portNumber)); 1357f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1358f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull("Returned incorrect InetSocketAddress -unconnected socket:" 1359f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "Expected: NULL", theSocket.getRemoteSocketAddress()); 1360f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1361f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // now connect and validate we get the right answer 1362f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.connect(new InetSocketAddress(InetAddress.getLocalHost(), 1363f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project sport)); 1364f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Returned incorrect InetSocketAddress(2):" 1365f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + theSocket.getRemoteSocketAddress().toString(), 1366f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.getRemoteSocketAddress() 1367f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .equals( 1368f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new InetSocketAddress(InetAddress 1369f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getLocalHost(), sport))); 1370f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 1371f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1372f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1373f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1374f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1375f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#isBound() 1376f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1377f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1378f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 1379f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 1380f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "isBound", 1381f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 1382f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1383f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_isBound() throws IOException { 1384f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InetAddress addr = InetAddress.getLocalHost(); 1385f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int port = Support_PortManager.getNextPort(); 1386f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ServerSocket serverSocket = new ServerSocket(port, 5, addr); 1387f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket theSocket = new Socket(addr, port); 1388f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket servSock = serverSocket.accept(); 1389f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Socket indicated not bound when it should be (1)", 1390f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.isBound()); 1391f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 1392f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket.close(); 1393f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1394f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // now do it with the new constructors and revalidate. Connect causes 1395f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // the socket to be bound 1396f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InetSocketAddress theAddress = new InetSocketAddress(InetAddress 1397f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getLocalHost(), Support_PortManager.getNextPort()); 1398f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket = new Socket(); 1399f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse("Socket indicated bound when it was not (2)", theSocket 1400f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .isBound()); 1401f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket = new ServerSocket(); 1402f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket.bind(theAddress); 1403f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.connect(theAddress); 1404f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project servSock = serverSocket.accept(); 1405f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Socket indicated not bound when it should be (2)", 1406f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.isBound()); 1407f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 1408f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket.close(); 1409f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1410f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // now test when we bind explicitely 1411f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InetSocketAddress theLocalAddress = new InetSocketAddress(InetAddress 1412f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getLocalHost(), Support_PortManager.getNextPort()); 1413f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket = new Socket(); 1414f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse("Socket indicated bound when it was not (3)", theSocket 1415f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .isBound()); 1416f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.bind(theLocalAddress); 1417f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Socket indicated not bound when it should be (3a)", 1418f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.isBound()); 1419f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 1420f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Socket indicated not bound when it should be (3b)", 1421f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.isBound()); 1422f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1423f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1424f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1425f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#isConnected() 1426f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1427f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1428f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 1429f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 1430f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "isConnected", 1431f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 1432f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1433f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_isConnected() throws IOException { 1434f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InetAddress addr = InetAddress.getLocalHost(); 1435f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int port = Support_PortManager.getNextPort(); 1436f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ServerSocket serverSocket = new ServerSocket(port, 5, addr); 1437f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket theSocket = new Socket(addr, port); 1438f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket servSock = serverSocket.accept(); 1439f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Socket indicated not connected when it should be", 1440f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.isConnected()); 1441f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 1442f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket.close(); 1443f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1444f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // now do it with the new constructors and revalidate 1445f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InetSocketAddress theAddress = new InetSocketAddress(InetAddress 1446f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getLocalHost(), Support_PortManager.getNextPort()); 1447f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket = new Socket(); 1448f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse("Socket indicated connected when it was not", theSocket 1449f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .isConnected()); 1450f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket = new ServerSocket(); 1451f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket.bind(theAddress); 1452f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.connect(theAddress); 1453f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project servSock = serverSocket.accept(); 1454f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Socket indicated not connected when it should be", 1455f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.isConnected()); 1456f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 1457f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket.close(); 1458f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1459f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1460f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1461f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#isClosed() 1462f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1463f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1464f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 1465f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 1466f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "isClosed", 1467f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 1468f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1469f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_isClosed() throws IOException { 1470f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InetAddress addr = InetAddress.getLocalHost(); 1471f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int port = Support_PortManager.getNextPort(); 1472f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ServerSocket serverSocket = new ServerSocket(port, 5, addr); 1473f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket theSocket = new Socket(addr, port); 1474f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket servSock = serverSocket.accept(); 1475f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1476f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // validate isClosed returns expected values 1477f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse("Socket should indicate it is not closed(1):", theSocket 1478f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .isClosed()); 1479f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 1480f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Socket should indicate it is closed(1):", theSocket 1481f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .isClosed()); 1482f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1483f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket = new Socket(addr, port); 1484f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse("Socket should indicate it is not closed(2):", theSocket 1485f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .isClosed()); 1486f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 1487f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Socket should indicate it is closed(2):", theSocket 1488f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .isClosed()); 1489f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1490f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // validate that isClosed works ok for sockets returned from 1491f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // ServerSocket.accept() 1492f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse("Server Socket should indicate it is not closed:", servSock 1493f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .isClosed()); 1494f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project servSock.close(); 1495f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Server Socket should indicate it is closed:", servSock 1496f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .isClosed()); 1497f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1498f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1499f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1500f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#bind(java.net.SocketAddress) 1501f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1502f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1503f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 1504f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 1505f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "bind", 1506f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.net.SocketAddress.class} 1507f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1508f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_bindLjava_net_SocketAddress() throws IOException { 1509f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1510f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project class mySocketAddress extends SocketAddress { 1511f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1512f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public mySocketAddress() { 1513f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1514f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1515f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1516f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Address we cannot bind to 1517f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket theSocket = new Socket(); 1518f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1519f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.bind(new InetSocketAddress(InetAddress 1520f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getByAddress(Support_Configuration.nonLocalAddressBytes), 1521f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Support_PortManager.getNextPort())); 1522f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("No exception when binding to bad address:" 1523f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + theSocket.getLocalSocketAddress().toString()); 1524f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException ex) { 1525f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1526f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 1527f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1528f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // now create a socket that is not bound and then bind it 1529f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket = new Socket(); 1530f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int portNumber = Support_PortManager.getNextPort(); 1531f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.bind(new InetSocketAddress(InetAddress.getLocalHost(), 1532f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project portNumber)); 1533f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1534f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // validate that the localSocketAddress reflects the address we 1535f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // bound to 1536f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue( 1537f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Local address not correct after bind:" 1538f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + theSocket.getLocalSocketAddress().toString() 1539f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + " Expected: " 1540f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + (new InetSocketAddress(InetAddress.getLocalHost(), 1541f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project portNumber)).toString(), theSocket 1542f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getLocalSocketAddress().equals( 1543f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new InetSocketAddress(InetAddress 1544f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getLocalHost(), portNumber))); 1545f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1546f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // make sure we can now connect and that connections appear to come 1547f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // from the address we bound to. 1548f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InetSocketAddress theAddress = new InetSocketAddress(InetAddress 1549f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getLocalHost(), Support_PortManager.getNextPort()); 1550f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ServerSocket serverSocket = new ServerSocket(); 1551f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket.bind(theAddress); 1552f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.connect(theAddress); 1553f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket servSock = serverSocket.accept(); 1554f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue( 1555f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Returned Remote address from server connected to does not match expected local address:" 1556f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + servSock.getRemoteSocketAddress().toString() 1557f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + " Expected: " 1558f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + (new InetSocketAddress(InetAddress.getLocalHost(), 1559f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project portNumber)).toString(), servSock 1560f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getRemoteSocketAddress().equals( 1561f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new InetSocketAddress(InetAddress 1562f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getLocalHost(), portNumber))); 1563f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 1564f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project servSock.close(); 1565f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket.close(); 1566f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1567f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // validate if we pass in null that it picks an address for us and 1568f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // all is ok 1569f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket = new Socket(); 1570f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.bind(null); 1571f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotNull("Bind with null did not work", theSocket 1572f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getLocalSocketAddress()); 1573f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 1574f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1575f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // now check the error conditions 1576f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1577f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Address that we have allready bound to 1578f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket = new Socket(); 1579f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket theSocket2 = new Socket(); 1580f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1581f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theAddress = new InetSocketAddress(InetAddress.getLocalHost(), 1582f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Support_PortManager.getNextPort()); 1583f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.bind(theAddress); 1584f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket2.bind(theAddress); 1585f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("No exception binding to address that is not available"); 1586f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException ex) { 1587f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1588f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 1589f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket2.close(); 1590f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1591f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // unsupported SocketAddress subclass 1592f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket = new Socket(); 1593f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1594f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.bind(new mySocketAddress()); 1595f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("No exception when binding using unsupported SocketAddress subclass"); 1596f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException ex) { 1597f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1598f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 1599f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1600f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1601f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1602f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#bind(java.net.SocketAddress) 1603f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1604f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1605f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.ADDITIONAL, 1606f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Checks bind on proxy.", 1607f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "bind", 1608f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.net.SocketAddress.class} 1609f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1610f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_bindLjava_net_SocketAddress_Proxy() throws IOException { 1611f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //The Proxy will not impact on the bind operation.It can be assigned with any address. 1612f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Proxy proxy = new Proxy(Proxy.Type.SOCKS, new InetSocketAddress("127.0.0.1", 0)); 1613f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket socket = new Socket(proxy); 1614f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1615f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1616f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InetAddress address = InetAddress.getByName("localhost"); 1617f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int port = 0; 1618f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project socket.bind(new InetSocketAddress(address, port)); 1619f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1620f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(address, socket.getLocalAddress()); 1621f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(port!=socket.getLocalPort()); 1622f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1623f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } finally { 1624f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project socket.close(); 1625f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1626f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1627f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1628f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1629f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#connect(java.net.SocketAddress) 1630f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1631f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1632f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 1633f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 1634f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "connect", 1635f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.net.SocketAddress.class} 1636f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1637f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_connectLjava_net_SocketAddress() throws Exception { 1638f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // needed for some tests 1639f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project class mySocketAddress extends SocketAddress { 1640f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1641f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public mySocketAddress() { 1642f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1643f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1644f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1645f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project class SocketCloser extends Thread { 1646f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1647f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int timeout = 0; 1648f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1649f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket theSocket = null; 1650f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1651f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void run() { 1652f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1653f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Thread.sleep(timeout); 1654f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 1655f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 1656f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1657f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ; 1658f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return; 1659f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1660f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1661f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public SocketCloser(int timeout, Socket theSocket) { 1662f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project this.timeout = timeout; 1663f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project this.theSocket = theSocket; 1664f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1665f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1666f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1667f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // start by validating the error checks 1668f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int portNumber = Support_PortManager.getNextPort(); 1669f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket theSocket = null; 1670f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ServerSocket serverSocket = null; 1671f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SocketAddress theAddress = null; 1672f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SocketAddress nonConnectableAddress = null; 1673f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SocketAddress nonReachableAddress = null; 1674f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SocketAddress invalidType = null; 1675f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // byte[] theBytes = {-1,-1,-1,-1}; 1676f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] theBytes = { 0, 0, 0, 0 }; 1677f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theAddress = new InetSocketAddress(InetAddress.getLocalHost(), 1678f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project portNumber); 1679f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project nonConnectableAddress = new InetSocketAddress(InetAddress 1680f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getByAddress(theBytes), portNumber); 1681f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project nonReachableAddress = new InetSocketAddress(InetAddress 1682f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getByName(Support_Configuration.ResolvedNotExistingHost), 1683f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project portNumber); 1684f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1685f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project invalidType = new mySocketAddress(); 1686f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1687f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1688f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket = new Socket(); 1689f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.connect(null); 1690f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("No exception after null address passed in"); 1691f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 1692f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Wrong exception null address passed in: " 1693f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + e.toString(), (e instanceof IllegalArgumentException)); 1694f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1695f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1696f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1697f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket = new Socket(); 1698f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.connect(invalidType); 1699f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("No exception when invalid socket address type passed in: "); 1700f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 1701f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue( 1702f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Wrong exception when when invalid socket address type passed in: " 1703f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + e.toString(), 1704f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project (e instanceof IllegalArgumentException)); 1705f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1706f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1707f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1708f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket = new Socket(); 1709f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.connect(nonConnectableAddress); 1710f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("No exception when non Connectable Address passed in: "); 1711f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 1712f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue( 1713f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Wrong exception when non Connectable Address passed in: " 1714f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + e.toString(), (e instanceof ConnectException)); 1715f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1716f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1717f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // now validate that we get a connect exception if we try to connect to 1718f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // an address on which nobody is listening 1719f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1720f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket = new Socket(); 1721f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.connect(theAddress); 1722f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 1723f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("No exception when connecting to address nobody listening on: "); 1724f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 1725f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue( 1726f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Wrong exception when connecting to address nobody listening on: " 1727f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + e.toString(), (e instanceof ConnectException)); 1728f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1729f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1730f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // now validate that we can acutally connect when sombody is listening 1731f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket = new Socket(); 1732f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket = new ServerSocket(); 1733f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket.bind(theAddress); 1734f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.connect(theAddress); 1735f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 1736f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket.close(); 1737f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1738f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // now validate that we can acutally connect when sombody is listening 1739f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket = new Socket(); 1740f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket = new ServerSocket(); 1741f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket.bind(theAddress); 1742f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.connect(theAddress); 1743f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1744f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // validate that when a socket is connected that it answers 1745f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // correctly to related queries 1746f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Socket did not returned connected when it is: ", theSocket 1747f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .isConnected()); 1748f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse("Socket returned closed when it should be connected ", 1749f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.isClosed()); 1750f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Socket returned not bound when it should be: ", theSocket 1751f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .isBound()); 1752f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse( 1753f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Socket returned input Shutdown when it should be connected ", 1754f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.isInputShutdown()); 1755f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse( 1756f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Socket returned output Shutdown when it should be connected ", 1757f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.isOutputShutdown()); 1758f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Local port on connected socket was 0", theSocket 1759f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getLocalPort() != 0); 1760f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 1761f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket.close(); 1762f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1763f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // now validate that we get the right exception if we connect when we 1764f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // are already connected 1765f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1766f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket = new Socket(); 1767f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket = new ServerSocket(); 1768f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket.bind(theAddress); 1769f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.connect(theAddress); 1770f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.connect(theAddress); 1771f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 1772f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket.close(); 1773f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("No exception when we try to connect on a connected socket: "); 1774f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1775f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 1776f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue( 1777f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Wrong exception when connecting on socket that is allready connected" 1778f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + e.toString(), (e instanceof SocketException)); 1779f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse( 1780f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Wrong exception when connecting on socket that is allready connected" 1781f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + e.toString(), 1782f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project (e instanceof SocketTimeoutException)); 1783f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1784f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 1785f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket.close(); 1786f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e2) { 1787f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1788f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1789f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1790f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1791f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // now validate that connected socket can be used to read/write 1792f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket = new Socket(); 1793f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket = new ServerSocket(); 1794f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket.bind(theAddress); 1795f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.connect(theAddress); 1796f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket servSock = serverSocket.accept(); 1797f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InputStream theInput = theSocket.getInputStream(); 1798f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project OutputStream theOutput = servSock.getOutputStream(); 1799f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InputStream theInput2 = servSock.getInputStream(); 1800f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project OutputStream theOutput2 = theSocket.getOutputStream(); 1801f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1802f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String sendString = new String("Test"); 1803f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theOutput.write(sendString.getBytes()); 1804f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theOutput.flush(); 1805f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1806f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Thread.sleep(1000); 1807f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1808f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int totalBytesRead = 0; 1809f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] myBytes = new byte[100]; 1810f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project while (theInput.available() > 0) { 1811f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int bytesRead = theInput.read(myBytes, totalBytesRead, 1812f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project myBytes.length - totalBytesRead); 1813f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project totalBytesRead = totalBytesRead + bytesRead; 1814f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1815f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1816f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String receivedString = new String(myBytes, 0, totalBytesRead); 1817f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Could not recv on socket connected with timeout:" 1818f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + receivedString + ":" + sendString, receivedString 1819f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .equals(sendString)); 1820f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1821f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project sendString = new String("SEND - Test"); 1822f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theOutput2.write(sendString.getBytes()); 1823f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theOutput2.flush(); 1824f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Thread.sleep(1000); 1825f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1826f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project totalBytesRead = 0; 1827f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project myBytes = new byte[100]; 1828f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project while (theInput2.available() > 0) { 1829f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int bytesRead = theInput2.read(myBytes, totalBytesRead, 1830f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project myBytes.length - totalBytesRead); 1831f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project totalBytesRead = totalBytesRead + bytesRead; 1832f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1833f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1834f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project receivedString = new String(myBytes, 0, totalBytesRead); 1835f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Could not send on socket connected with timeout:" 1836f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + receivedString + ":" + sendString, receivedString 1837f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .equals(sendString)); 1838f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1839f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 1840f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket.close(); 1841f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1842f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SocketChannel channel = SocketChannel.open(); 1843f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project channel.configureBlocking(false); 1844f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket socket = channel.socket(); 1845f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int port = Support_PortManager.getNextPort(); 1846f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1847f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project socket.connect( new InetSocketAddress(InetAddress.getLocalHost(), 1848f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Support_PortManager.getNextPort())); 1849f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalBlockingModeException was not thrown."); 1850f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch(IllegalBlockingModeException ibme) { 1851f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 1852f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1853f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1854f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1855f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1856f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#connect(java.net.SocketAddress, int) 1857f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1858f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1859f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 1860f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 1861f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "connect", 1862f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.net.SocketAddress.class, int.class} 1863f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1864f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_connectLjava_net_SocketAddressI() throws Exception { 1865f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1866f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // needed for some tests 1867f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project class mySocketAddress extends SocketAddress { 1868f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1869f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public mySocketAddress() { 1870f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1871f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1872f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1873f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project class SocketCloser extends Thread { 1874f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1875f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int timeout = 0; 1876f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1877f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket theSocket = null; 1878f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1879f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void run() { 1880f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1881f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Thread.sleep(timeout); 1882f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 1883f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 1884f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1885f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return; 1886f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1887f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1888f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public SocketCloser(int timeout, Socket theSocket) { 1889f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project this.timeout = timeout; 1890f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project this.theSocket = theSocket; 1891f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1892f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1893f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1894f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project class SocketConnector extends Thread { 1895f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1896f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int timeout = 0; 1897f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1898f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket theSocket = null; 1899f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1900f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SocketAddress address = null; 1901f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1902f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void run() { 1903f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1904f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.connect(address, timeout); 1905f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 1906f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1907f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1908f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return; 1909f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1910f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1911f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public SocketConnector(int timeout, Socket theSocket, 1912f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SocketAddress address) { 1913f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project this.timeout = timeout; 1914f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project this.theSocket = theSocket; 1915f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project this.address = address; 1916f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1917f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1918f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1919f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // start by validating the error checks 1920f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int portNumber = Support_PortManager.getNextPort(); 1921f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket theSocket = null; 1922f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ServerSocket serverSocket = null; 1923f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SocketAddress theAddress = null; 1924f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SocketAddress nonConnectableAddress = null; 1925f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SocketAddress nonReachableAddress = null; 1926f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SocketAddress nonListeningAddress = null; 1927f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SocketAddress invalidType = null; 1928f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] theBytes = { 0, 0, 0, 0 }; 1929f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1930f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theAddress = new InetSocketAddress(InetAddress.getLocalHost(), 1931f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project portNumber); 1932f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project nonConnectableAddress = new InetSocketAddress(InetAddress 1933f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getByAddress(theBytes), portNumber); 1934f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project nonReachableAddress = new InetSocketAddress(InetAddress 1935f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getByName(Support_Configuration.ResolvedNotExistingHost), 1936f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project portNumber); 1937f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // make sure we get another port 1938f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Thread.sleep(7000); 1939f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project nonListeningAddress = new InetSocketAddress(InetAddress.getLocalHost(), 1940f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Support_PortManager.getNextPort()); 1941f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project invalidType = new mySocketAddress(); 1942f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1943f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1944f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket = new Socket(); 1945f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.connect(theAddress, -100); 1946f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("No exception after negative timeout passed in"); 1947f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 1948f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Wrong exception when negative timeout passed in: " 1949f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + e.toString(), (e instanceof IllegalArgumentException)); 1950f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1951f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1952f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1953f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket = new Socket(); 1954f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.connect(null, 0); 1955f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("No exception after null address passed in"); 1956f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 1957f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Wrong exception null address passed in: " 1958f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + e.toString(), (e instanceof IllegalArgumentException)); 1959f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1960f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1961f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1962f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket = new Socket(); 1963f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.connect(invalidType, 100000); 1964f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("No exception when invalid socket address type passed in: "); 1965f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 1966f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue( 1967f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Wrong exception when when invalid socket address type passed in: " 1968f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + e.toString(), 1969f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project (e instanceof IllegalArgumentException)); 1970f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1971f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1972f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1973f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket = new Socket(); 1974f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.connect(nonConnectableAddress, 100000); 1975f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("No exception when non Connectable Address passed in: "); 1976f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 1977f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue( 1978f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Wrong exception when non Connectable Address passed in: " 1979f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + e.toString(), (e instanceof SocketException)); 1980f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1981f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1982f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // now validate that we get a connect exception if we try to connect to 1983f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // an address on which nobody is listening 1984f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1985f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket = new Socket(); 1986f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.connect(theAddress, 0); 1987f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 1988f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("No timeout:No exception when connecting to address nobody listening on: "); 1989f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 1990f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue( 1991f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "No timeout:Wrong exception when connecting to address nobody listening on: " 1992f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + e.toString(), (e instanceof ConnectException)); 1993f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1994f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1995f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // now validate that we can acutally connect when sombody is listening 1996f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket = new Socket(); 1997f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket = new ServerSocket(); 1998f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket.bind(theAddress); 1999f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.connect(theAddress, 0); 2000f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 2001f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket.close(); 2002f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2003f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // now validate that we get a connect exception if we try to connect to 2004f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // an address on which nobody is listening 2005f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2006f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket = new Socket(); 2007f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.connect(nonListeningAddress, 100000); 2008f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 2009f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("No exception when connecting to address nobody listening on: "); 2010f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 2011f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue( 2012f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Wrong exception when connecting to address nobody listening on: " 2013f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + e.toString(), (e instanceof ConnectException)); 2014f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2015f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2016f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // now validate that we get a interrupted exception if we try to connect 2017f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // to an address on which nobody is accepting connections and the 2018f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // timeout expired 2019f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2020f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket = new Socket(); 2021f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.connect(nonReachableAddress, 200); 2022f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 2023f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("No interrupted exception when connecting to address nobody listening on with short timeout 200: "); 2024f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 2025f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue( 2026f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Wrong exception when connecting to address nobody listening on with short timeout 200: " 2027f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + e.toString(), 2028f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project (e instanceof SocketTimeoutException)); 2029f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2030f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2031f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // now validate that we get a interrupted exception if we try to connect 2032f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // to an address on which nobody is accepting connections and the 2033f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // timeout expired 2034f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2035f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket = new Socket(); 2036f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.connect(nonReachableAddress, 40); 2037f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 2038f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("No interrupted exception when connecting to address nobody listening on with short timeout 40: "); 2039f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 2040f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue( 2041f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Wrong exception when connecting to address nobody listening on with short timeout 40: " 2042f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + e.toString(), 2043f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project (e instanceof SocketTimeoutException)); 2044f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2045f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2046f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // now validate that we can acutally connect when sombody is listening 2047f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new InetSocketAddress(InetAddress.getLocalHost(), Support_PortManager 2048f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getNextPort()); 2049f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket = new Socket(); 2050f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket = new ServerSocket(); 2051f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket.bind(theAddress); 2052f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.connect(theAddress, 100000); 2053f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2054f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // validate that when a socket is connected that it answers 2055f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // correctly to related queries 2056f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Socket did not returned connected when it is: ", theSocket 2057f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .isConnected()); 2058f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse("Socket returned closed when it should be connected ", 2059f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.isClosed()); 2060f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Socket returned not bound when it should be: ", theSocket 2061f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .isBound()); 2062f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse( 2063f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Socket returned input Shutdown when it should be connected ", 2064f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.isInputShutdown()); 2065f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse( 2066f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Socket returned output Shutdown when it should be connected ", 2067f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.isOutputShutdown()); 2068f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Local port on connected socket was 0", theSocket 2069f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getLocalPort() != 0); 2070f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 2071f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket.close(); 2072f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2073f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // now validate that we get the right exception if we connect when we 2074f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // are already connected 2075f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2076f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new InetSocketAddress(InetAddress.getLocalHost(), 2077f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Support_PortManager.getNextPort()); 2078f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket = new Socket(); 2079f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket = new ServerSocket(); 2080f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket.bind(theAddress); 2081f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.connect(theAddress, 100000); 2082f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.connect(theAddress, 100000); 2083f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 2084f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket.close(); 2085f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("No exception when we try to connect on a connected socket: "); 2086f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2087f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 2088f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue( 2089f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Wrong exception when connecting on socket that is allready connected" 2090f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + e.toString(), (e instanceof SocketException)); 2091f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse( 2092f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Wrong exception when connecting on socket that is allready connected" 2093f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + e.toString(), 2094f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project (e instanceof SocketTimeoutException)); 2095f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2096f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 2097f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket.close(); 2098f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e2) { 2099f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // now validate that connected socket can be used to read/write 2104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new InetSocketAddress(InetAddress.getLocalHost(), Support_PortManager 2105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getNextPort()); 2106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket = new Socket(); 2107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket = new ServerSocket(); 2108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket.bind(theAddress); 2109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.connect(theAddress, 100000); 2110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket servSock = serverSocket.accept(); 2111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InputStream theInput = theSocket.getInputStream(); 2112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project OutputStream theOutput = servSock.getOutputStream(); 2113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InputStream theInput2 = servSock.getInputStream(); 2114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project OutputStream theOutput2 = theSocket.getOutputStream(); 2115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String sendString = new String("Test"); 2117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theOutput.write(sendString.getBytes()); 2118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theOutput.flush(); 2119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Thread.sleep(1000); 2121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int totalBytesRead = 0; 2123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] myBytes = new byte[100]; 2124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project while (theInput.available() > 0) { 2125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int bytesRead = theInput.read(myBytes, totalBytesRead, 2126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project myBytes.length - totalBytesRead); 2127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project totalBytesRead = totalBytesRead + bytesRead; 2128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String receivedString = new String(myBytes, 0, totalBytesRead); 2131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Could not recv on socket connected with timeout:" 2132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + receivedString + ":" + sendString, receivedString 2133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .equals(sendString)); 2134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project sendString = new String("SEND - Test"); 2136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theOutput2.write(sendString.getBytes()); 2137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theOutput2.flush(); 2138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project totalBytesRead = 0; 2140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project myBytes = new byte[100]; 2141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Thread.sleep(1000); 2142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project while (theInput2.available() > 0) { 2143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int bytesRead = theInput2.read(myBytes, totalBytesRead, 2144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project myBytes.length - totalBytesRead); 2145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project totalBytesRead = totalBytesRead + bytesRead; 2146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project receivedString = new String(myBytes, 0, totalBytesRead); 2149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Could not send on socket connected with timeout:" 2150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + receivedString + ":" + sendString, receivedString 2151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .equals(sendString)); 2152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 2154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket.close(); 2155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // now try to set options while we are connecting 2157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket = new Socket(); 2158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SocketConnector connector = new SocketConnector(5000, theSocket, 2159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project nonReachableAddress); 2160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project connector.start(); 2161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.setSoTimeout(100); 2162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Thread.sleep(10); 2163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Socket option not set during connect: 10 ", 100, 2164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.getSoTimeout()); 2165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Thread.sleep(50); 2166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.setSoTimeout(200); 2167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Socket option not set during connect: 50 ", 200, 2168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.getSoTimeout()); 2169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Thread.sleep(5000); 2170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 2171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SocketChannel channel = SocketChannel.open(); 2173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project channel.configureBlocking(false); 2174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket socket = channel.socket(); 2175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int port = Support_PortManager.getNextPort(); 2176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project socket.connect( new InetSocketAddress(InetAddress.getLocalHost(), 2178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Support_PortManager.getNextPort()), port); 2179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalBlockingModeException was not thrown."); 2180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch(IllegalBlockingModeException ibme) { 2181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 2182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 2186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#isInputShutdown() 2187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 2188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 2189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 2190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 2191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "isInputShutdown", 2192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 2193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 2194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_isInputShutdown() throws IOException { 2195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InetSocketAddress theAddress = new InetSocketAddress(InetAddress 2196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getLocalHost(), Support_PortManager.getNextPort()); 2197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket theSocket = new Socket(); 2198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ServerSocket serverSocket = new ServerSocket(); 2199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket.bind(theAddress); 2200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.connect(theAddress); 2201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket servSock = serverSocket.accept(); 2202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InputStream theInput = theSocket.getInputStream(); 2203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project OutputStream theOutput = servSock.getOutputStream(); 2204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // make sure we get the right answer with newly connected socket 2206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse("Socket indicated input shutdown when it should not have", 2207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.isInputShutdown()); 2208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // shutdown the output 2210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.shutdownInput(); 2211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // make sure we get the right answer once it is shut down 2213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue( 2214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Socket indicated input was NOT shutdown when it should have been", 2215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.isInputShutdown()); 2216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 2218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket.close(); 2219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // make sure we get the right answer for closed sockets 2221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse( 2222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Socket indicated input was shutdown when socket was closed", 2223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project servSock.isInputShutdown()); 2224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 2228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#isOutputShutdown() 2229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 2230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 2231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 2232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 2233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "isOutputShutdown", 2234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 2235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 2236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_isOutputShutdown() throws IOException { 2237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InetSocketAddress theAddress = new InetSocketAddress(InetAddress 2238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getLocalHost(), Support_PortManager.getNextPort()); 2239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket theSocket = new Socket(); 2240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ServerSocket serverSocket = new ServerSocket(); 2241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket.bind(theAddress); 2242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.connect(theAddress); 2243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket servSock = serverSocket.accept(); 2244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InputStream theInput = theSocket.getInputStream(); 2245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project OutputStream theOutput = servSock.getOutputStream(); 2246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // make sure we get the right answer with newly connected socket 2248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse("Socket indicated output shutdown when it should not have", 2249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project servSock.isOutputShutdown()); 2250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // shutdown the output 2252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project servSock.shutdownOutput(); 2253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // make sure we get the right answer once it is shut down 2255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue( 2256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Socket indicated output was NOT shutdown when it should have been", 2257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project servSock.isOutputShutdown()); 2258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 2260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket.close(); 2261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // make sure we get the right answer for closed sockets 2263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse( 2264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Socket indicated output was output shutdown when the socket was closed", 2265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.isOutputShutdown()); 2266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 2270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#setReuseAddress(boolean) 2271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 2272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 2273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 2274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 2275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "setReuseAddress", 2276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {boolean.class} 2277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 2278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_setReuseAddressZ() { 2279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InetAddress allAddresses[] = InetAddress.getAllByName(InetAddress 2282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getLocalHost().getHostName()); 2283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (allAddresses.length > 1) { 2284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InetSocketAddress theAddress = new InetSocketAddress( 2286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InetAddress.getLocalHost(), Support_PortManager 2287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getNextPort()); 2288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ServerSocket serverSocket = new ServerSocket(); 2289f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket.bind(theAddress); 2290f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // try to bind to port address that is already in use with 2292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // reuseAddress = false. 2293f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // On windows platforms the bind is allowed even then 2294f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // reUseAddress is false (ONLY IF BOTH SOCKETS 2295f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // ARE IPV4 Sockets) so our test uses the platform to determine 2296f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // what the expected result is. It seems that on linux 2297f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // platforms we also don't get an exception. 2298f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InetSocketAddress theLocalAddress = new InetSocketAddress( 2299f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project (InetAddress) allAddresses[1], Support_PortManager 2300f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getNextPort()); 2301f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InetSocketAddress theOtherLocalAddress = new InetSocketAddress( 2302f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project (InetAddress) allAddresses[0], theLocalAddress 2303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getPort()); 2304f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket theSocket = new Socket(); 2305f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.setReuseAddress(false); 2306f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.bind(theLocalAddress); 2307f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket theSocket2 = null; 2308f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String platform = System.getProperty("os.name"); 2309f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2310f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket2 = new Socket(); 2311f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket2.setReuseAddress(false); 2312f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket2.bind(theOtherLocalAddress); 2313f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2314f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if ((!platform.startsWith("Linux")) 2315f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project && ((!platform.startsWith("Windows")) || 2316f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // for windows we don't get an exception with 2317f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // setreuse set to false unless one of the 2318f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // addresses we bind to is an IPv6 address and we 2319f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // are therefore using the IPv6 stack. 2320f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project !((((InetAddress) allAddresses[0]) instanceof Inet4Address) && (((InetAddress) allAddresses[1]) instanceof Inet4Address)))) { 2321f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("No exception when setReuseAddress is false and we bind:" 2322f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + theLocalAddress.toString() 2323f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + ":" 2324f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + theOtherLocalAddress.toString()); 2325f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2326f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException ex) { 2327f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if ((platform.startsWith("Linux")) 2328f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project || ((platform.startsWith("Windows")) && ((((InetAddress) allAddresses[0]) instanceof Inet4Address) && (((InetAddress) allAddresses[1]) instanceof Inet4Address)))) { 2329f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Got unexpected exception when binding with setReuseAddress false on windows platform:" 2330f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + theAddress.toString() + ":" + ex.toString()); 2331f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2332f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2333f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 2334f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket2.close(); 2335f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2336f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // try to bind to port that is allready in use with reuseAddress 2337f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // = true 2338f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theLocalAddress = new InetSocketAddress( 2339f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project (InetAddress) allAddresses[0], Support_PortManager 2340f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getNextPort()); 2341f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theOtherLocalAddress = new InetSocketAddress( 2342f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project (InetAddress) allAddresses[1], theLocalAddress 2343f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getPort()); 2344f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2345f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket = new Socket(); 2346f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.setReuseAddress(true); 2347f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.bind(theLocalAddress); 2348f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2349f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket2 = new Socket(); 2350f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket2.setReuseAddress(true); 2351f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket2.bind(theOtherLocalAddress); 2352f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket2.close(); 2353f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException ex) { 2354f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IOException when setReuseAddress is true and we bind :" 2355f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + ex.toString()); 2356f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2357f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 2358f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket.close(); 2359f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2360f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // try with default behavior which should be the same on all 2361f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // platforms 2362f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theLocalAddress = new InetSocketAddress( 2363f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project (InetAddress) allAddresses[0], Support_PortManager 2364f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getNextPort()); 2365f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theOtherLocalAddress = new InetSocketAddress( 2366f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project (InetAddress) allAddresses[1], theLocalAddress 2367f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getPort()); 2368f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2369f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket = new Socket(); 2370f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.bind(theLocalAddress); 2371f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2372f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket2 = new Socket(); 2373f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket2.bind(theOtherLocalAddress); 2374f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket2.close(); 2375f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if ((!platform.startsWith("Linux")) 2376f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project && ((!platform.startsWith("Windows")) || !((((InetAddress) allAddresses[0]) instanceof Inet4Address) && (((InetAddress) allAddresses[1]) instanceof Inet4Address)))) { 2377f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("No exception when setReuseAddress is default and we bind:" 2378f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + theLocalAddress.toString() 2379f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + ":" 2380f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + theOtherLocalAddress.toString()); 2381f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2382f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException ex) { 2383f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if ((platform.startsWith("Linux")) 2384f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project || ((platform.startsWith("Windows")) && ((((InetAddress) allAddresses[0]) instanceof Inet4Address) && (((InetAddress) allAddresses[1]) instanceof Inet4Address)))) { 2385f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Got unexpected exception when binding with setReuseAddress default on windows platform:" 2386f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + theAddress.toString() + ":" + ex.toString()); 2387f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2388f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2389f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 2390f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket.close(); 2391f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2392f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ensureExceptionThrownIfOptionIsUnsupportedOnOS(SO_REUSEADDR); 2393f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2394f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 2395f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handleException(e, SO_REUSEADDR); 2396f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2397f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2398f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2399f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket theSocket = new Socket(); 2400f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 2401f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.setReuseAddress(true); 2402f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("SocketException was not thrown."); 2403f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch(SocketException ioe) { 2404f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 2405f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch(IOException ioe) { 2406f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IOException was thrown."); 2407f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2408f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2409f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2410f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 2411f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#getReuseAddress() 2412f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 2413f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 2414f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 2415f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 2416f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getReuseAddress", 2417f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 2418f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 2419f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_getReuseAddress() { 2420f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2421f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket theSocket = new Socket(); 2422f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.setReuseAddress(true); 2423f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("getReuseAddress false when it should be true", 2424f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.getReuseAddress()); 2425f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.setReuseAddress(false); 2426f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse("getReuseAddress true when it should be False", 2427f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.getReuseAddress()); 2428f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ensureExceptionThrownIfOptionIsUnsupportedOnOS(SO_REUSEADDR); 2429f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 2430f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handleException(e, SO_REUSEADDR); 2431f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2432f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2433f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2434f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket newSocket = new Socket(); 2435f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project newSocket.close(); 2436f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2437f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project newSocket.getReuseAddress(); 2438f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("SocketException was not thrown."); 2439f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch(SocketException e) { 2440f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 2441f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2442f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch(Exception e) { 2443f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Unexpected exception."); 2444f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2445f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2446f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2447f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 2448f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#setOOBInline(boolean) 2449f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 2450f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 2451f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 2452f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 2453f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "setOOBInline", 2454f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {boolean.class} 2455f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 2456f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_setOOBInlineZ() { 2457f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // mostly tested in getOOBInline. Just set to make sure call works ok 2458f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2459f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new InetSocketAddress(InetAddress.getLocalHost(), 2460f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Support_PortManager.getNextPort()); 2461f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket theSocket = new Socket(); 2462f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.setOOBInline(true); 2463f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("expected OOBIline to be true", theSocket.getOOBInline()); 2464f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ensureExceptionThrownIfOptionIsUnsupportedOnOS(SO_OOBINLINE); 2465f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 2466f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handleException(e, SO_OOBINLINE); 2467f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2468f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2469f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2470f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket theSocket = new Socket(); 2471f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 2472f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.setOOBInline(true); 2473f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("SocketException was not thrown."); 2474f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch(SocketException ioe) { 2475f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 2476f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch(IOException ioe) { 2477f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IOException was thrown."); 2478f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2479f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2480f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2481f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 2482f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#getOOBInline() 2483f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 2484f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 2485f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 2486f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 2487f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getOOBInline", 2488f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 2489f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 2490f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_getOOBInline() { 2491f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2492f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2493f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new InetSocketAddress(InetAddress.getLocalHost(), 2494f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Support_PortManager.getNextPort()); 2495f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket theSocket = new Socket(); 2496f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2497f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // validate that value reflects what we set it to true after true, 2498f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // false after false and false after false false 2499f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.setOOBInline(true); 2500f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("expected OOBIline to be true", theSocket.getOOBInline()); 2501f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.setOOBInline(false); 2502f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse("expected OOBIline to be true", theSocket 2503f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getOOBInline()); 2504f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.setOOBInline(false); 2505f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse("expected OOBIline to be true", theSocket 2506f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getOOBInline()); 2507f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 2508f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2509f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.getOOBInline(); 2510f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("SocketException was not thrown."); 2511f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch(SocketException se) { 2512f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 2513f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2514f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ensureExceptionThrownIfOptionIsUnsupportedOnOS(SO_OOBINLINE); 2515f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2516f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 2517f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handleException(e, SO_OOBINLINE); 2518f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2519f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2520f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2521f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 2522f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#setTrafficClass(int) 2523f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 2524f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 2525f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 2526f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 2527f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "setTrafficClass", 2528f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {int.class} 2529f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 2530f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_setTrafficClassI() { 2531f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2532f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int IPTOS_LOWCOST = 0x2; 2533f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int IPTOS_RELIABILTY = 0x4; 2534f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int IPTOS_THROUGHPUT = 0x8; 2535f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int IPTOS_LOWDELAY = 0x10; 2536f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2537f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new InetSocketAddress(InetAddress.getLocalHost(), 2538f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Support_PortManager.getNextPort()); 2539f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket theSocket = new Socket(); 2540f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2541f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // validate that value set must be between 0 and 255 2542f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2543f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.setTrafficClass(256); 2544f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("No exception was thrown when traffic class set to 256"); 2545f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 2546f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2547f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2548f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2549f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.setTrafficClass(-1); 2550f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("No exception was thrown when traffic class set to -1"); 2551f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 2552f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2553f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2554f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // now validate that we can set it to some good values 2555f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.setTrafficClass(IPTOS_LOWCOST); 2556f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.setTrafficClass(IPTOS_THROUGHPUT); 2557f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ensureExceptionThrownIfOptionIsUnsupportedOnOS(IP_TOS); 2558f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 2559f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handleException(e, IP_TOS); 2560f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2561f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2562f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2563f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket theSocket = new Socket(); 2564f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 2565f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.setTrafficClass(0); 2566f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("SocketException was not thrown."); 2567f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch(SocketException ioe) { 2568f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 2569f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch(IOException ioe) { 2570f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IOException was thrown."); 2571f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2572f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2573f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2574f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 2575f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#getTrafficClass() 2576f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 2577f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 2578f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.SUFFICIENT, 2579f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "SocketException checking missing.", 2580f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getTrafficClass", 2581f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 2582f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 2583f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_getTrafficClass() { 2584f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2585f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int IPTOS_LOWCOST = 0x2; 2586f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int IPTOS_RELIABILTY = 0x4; 2587f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int IPTOS_THROUGHPUT = 0x8; 2588f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int IPTOS_LOWDELAY = 0x10; 2589f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2590f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new InetSocketAddress(InetAddress.getLocalHost(), 2591f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Support_PortManager.getNextPort()); 2592f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket theSocket = new Socket(); 2593f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2594f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 2595f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * we cannot actually check that the values are set as if a platform 2596f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * does not support the option then it may come back unset even 2597f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * though we set it so just get the value to make sure we can get it 2598f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 2599f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int trafficClass = theSocket.getTrafficClass(); 2600f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ensureExceptionThrownIfOptionIsUnsupportedOnOS(IP_TOS); 2601f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 2602f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handleException(e, IP_TOS); 2603f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2604f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2605f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2606f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 2607f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#getChannel() 2608f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 2609f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 2610f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 2611f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 2612f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getChannel", 2613f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 2614f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 2615f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_getChannel() throws Exception { 2616f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(new Socket().getChannel()); 2617f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2618f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SocketChannel channel = SocketChannel.open(); 2619f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket socket = channel.socket(); 2620f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(channel, socket.getChannel()); 2621f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project socket.close(); 2622f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project channel.close(); 2623f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2624f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2625f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 2626f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#sendUrgentData(int) 2627f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 2628f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 2629f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 2630f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 2631f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "sendUrgentData", 2632f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {int.class} 2633f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 2634f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_sendUrgentDataI() { 2635f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2636f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Some platforms may not support urgent data in this case we will not 2637f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // run these tests. For now run on all platforms until we find those 2638f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // that do not support urgent data 2639f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String platform = System.getProperty("os.name"); 2640f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (!platform.equals("Dummy")) { 2641f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // validate that when OOBInline is false that any urgent data 2642f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // is silently ignored 2643f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String urgentData = "U"; 2644f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2645f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InetSocketAddress theAddress = new InetSocketAddress( 2646f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InetAddress.getLocalHost(), Support_PortManager 2647f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getNextPort()); 2648f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket theSocket = new Socket(); 2649f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ServerSocket serverSocket = new ServerSocket(); 2650f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket.bind(theAddress); 2651f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.connect(theAddress); 2652f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket servSock = serverSocket.accept(); 2653f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InputStream theInput = theSocket.getInputStream(); 2654f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project OutputStream theOutput = servSock.getOutputStream(); 2655f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2656f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // send the regular data 2657f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String sendString = new String("Test"); 2658f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theOutput.write(sendString.getBytes()); 2659f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theOutput.flush(); 2660f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2661f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // send the urgent data which should not be received 2662f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.setOOBInline(false); 2663f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project servSock.sendUrgentData(urgentData.getBytes()[0]); 2664f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theOutput.write(sendString.getBytes()); 2665f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theOutput.flush(); 2666f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2667f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // give things some time to settle 2668f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Thread.sleep(1000); 2669f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2670f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int totalBytesRead = 0; 2671f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] myBytes = new byte[100]; 2672f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project while (theInput.available() > 0) { 2673f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int bytesRead = theInput.read(myBytes, totalBytesRead, 2674f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project myBytes.length - totalBytesRead); 2675f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project totalBytesRead = totalBytesRead + bytesRead; 2676f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2677f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2678f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String receivedString = new String(myBytes, 0, totalBytesRead); 2679f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //assertTrue("Urgent Data seems to have been received:" 2680f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // + receivedString + ":" + sendString, receivedString 2681f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // .equals(sendString + sendString)); 2682f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2683f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 2684f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket.close(); 2685f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2686f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // now validate that urgent data is received as expected. Expect 2687f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // that it should be between the two writes. 2688f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theAddress = new InetSocketAddress(InetAddress.getLocalHost(), 2689f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Support_PortManager.getNextPort()); 2690f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket = new Socket(); 2691f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket = new ServerSocket(); 2692f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket.bind(theAddress); 2693f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.connect(theAddress); 2694f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project servSock = serverSocket.accept(); 2695f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theInput = theSocket.getInputStream(); 2696f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theOutput = servSock.getOutputStream(); 2697f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2698f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // send the regular data 2699f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project sendString = new String("Test - Urgent Data"); 2700f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theOutput.write(sendString.getBytes()); 2701f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theOutput.flush(); 2702f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2703f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // send the urgent data which should be received 2704f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.setOOBInline(true); 2705f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project servSock.sendUrgentData(urgentData.getBytes()[0]); 2706f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2707f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theOutput.write(sendString.getBytes()); 2708f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theOutput.flush(); 2709f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2710f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Thread.sleep(1000); 2711f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2712f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project totalBytesRead = 0; 2713f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project myBytes = new byte[100]; 2714f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project while (theInput.available() > 0) { 2715f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int bytesRead = theInput.read(myBytes, totalBytesRead, 2716f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project myBytes.length - totalBytesRead); 2717f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project totalBytesRead = totalBytesRead + bytesRead; 2718f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2719f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2720f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project receivedString = new String(myBytes, 0, totalBytesRead); 2721f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Urgent Data was not received with one urgent byte:" 2722f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + receivedString + ":" + sendString + urgentData 2723f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + sendString, receivedString.equals(sendString 2724f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + urgentData + sendString)); 2725f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2726f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 2727f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket.close(); 2728f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2729f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // now test case where we try to send two urgent bytes. 2730f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theAddress = new InetSocketAddress(InetAddress.getLocalHost(), 2731f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Support_PortManager.getNextPort()); 2732f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket = new Socket(); 2733f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket = new ServerSocket(); 2734f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket.bind(theAddress); 2735f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.connect(theAddress); 2736f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project servSock = serverSocket.accept(); 2737f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theInput = theSocket.getInputStream(); 2738f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theOutput = servSock.getOutputStream(); 2739f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2740f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // send the regular data 2741f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project sendString = new String("Test - Urgent Data"); 2742f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theOutput.write(sendString.getBytes()); 2743f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theOutput.flush(); 2744f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2745f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // send the urgent data which should not be received 2746f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.setOOBInline(true); 2747f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project servSock.sendUrgentData(urgentData.getBytes()[0]); 2748f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project servSock.sendUrgentData(urgentData.getBytes()[0]); 2749f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2750f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theOutput.write(sendString.getBytes()); 2751f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theOutput.flush(); 2752f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2753f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Thread.sleep(1000); 2754f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2755f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project totalBytesRead = 0; 2756f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project myBytes = new byte[100]; 2757f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project while (theInput.available() > 0) { 2758f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int bytesRead = theInput.read(myBytes, totalBytesRead, 2759f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project myBytes.length - totalBytesRead); 2760f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project totalBytesRead = totalBytesRead + bytesRead; 2761f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2762f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2763f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project receivedString = new String(myBytes, 0, totalBytesRead); 2764f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue( 2765f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Did not get right byte of urgent data when two sent:" 2766f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + receivedString + ":" + sendString 2767f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + urgentData + urgentData + sendString, 2768f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project receivedString.equals(sendString + urgentData 2769f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + urgentData + sendString)); 2770f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2771f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 2772f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket.close(); 2773f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2774f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 2775f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * TODO : These do not currently pass on XP SP2 and Server 2003 2776f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 2777f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (!platform.startsWith("Windows")) { 2778f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // now test the case were we send turn the OOBInline on/off 2779f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theAddress = new InetSocketAddress(InetAddress 2780f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getLocalHost(), Support_PortManager.getNextPort()); 2781f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket = new Socket(); 2782f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket = new ServerSocket(); 2783f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket.bind(theAddress); 2784f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.connect(theAddress); 2785f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project servSock = serverSocket.accept(); 2786f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theInput = theSocket.getInputStream(); 2787f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theOutput = servSock.getOutputStream(); 2788f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2789f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // send the regular data 2790f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project sendString = new String("Test - Urgent Data"); 2791f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theOutput.write(sendString.getBytes()); 2792f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theOutput.flush(); 2793f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2794f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // send the urgent data which should be received 2795f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.setOOBInline(true); 2796f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project servSock.sendUrgentData(urgentData.getBytes()[0]); 2797f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2798f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theOutput.write(sendString.getBytes()); 2799f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theOutput.flush(); 2800f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2801f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Thread.sleep(1000); 2802f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2803f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project totalBytesRead = 0; 2804f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project myBytes = new byte[100]; 2805f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project while (theInput.available() > 0) { 2806f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int bytesRead = theInput.read(myBytes, totalBytesRead, 2807f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project myBytes.length - totalBytesRead); 2808f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project totalBytesRead = totalBytesRead + bytesRead; 2809f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2810f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2811f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project receivedString = new String(myBytes, 0, totalBytesRead); 2812f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue( 2813f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Did not get urgent data when turning on/off(1):" 2814f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + receivedString + ":" + sendString 2815f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + urgentData + sendString, receivedString 2816f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .equals(sendString + urgentData 2817f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + sendString)); 2818f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2819f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // send the regular data 2820f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project sendString = new String("Test - Urgent Data"); 2821f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theOutput.write(sendString.getBytes()); 2822f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theOutput.flush(); 2823f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2824f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // send the urgent data which should not be received 2825f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.setOOBInline(false); 2826f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project servSock.sendUrgentData(urgentData.getBytes()[0]); 2827f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2828f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // send trailing data 2829f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theOutput.write(sendString.getBytes()); 2830f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theOutput.flush(); 2831f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2832f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Thread.sleep(1000); 2833f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2834f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project totalBytesRead = 0; 2835f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project myBytes = new byte[100]; 2836f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project while (theInput.available() > 0) { 2837f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int bytesRead = theInput.read(myBytes, totalBytesRead, 2838f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project myBytes.length - totalBytesRead); 2839f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project totalBytesRead = totalBytesRead + bytesRead; 2840f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2841f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2842f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project receivedString = new String(myBytes, 0, totalBytesRead); 2843f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //assertTrue( 2844f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // "Got unexpected data data when turning on/off(2):" 2845f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // + receivedString + ":" + sendString 2846f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // + sendString, receivedString 2847f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // .equals(sendString + sendString)); 2848f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2849f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // now turn back on and get data. Here we also 2850f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // get the previously sent byte of urgent data as it is 2851f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // still in the urgent buffer 2852f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2853f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // send the regular data 2854f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project sendString = new String("Test - Urgent Data"); 2855f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theOutput.write(sendString.getBytes()); 2856f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theOutput.flush(); 2857f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2858f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // send the urgent data which should be received again 2859f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.setOOBInline(true); 2860f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project servSock.sendUrgentData(urgentData.getBytes()[0]); 2861f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2862f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theOutput.write(sendString.getBytes()); 2863f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theOutput.flush(); 2864f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2865f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Thread.sleep(1000); 2866f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2867f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project totalBytesRead = 0; 2868f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project myBytes = new byte[100]; 2869f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project while (theInput.available() > 0) { 2870f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int bytesRead = theInput.read(myBytes, totalBytesRead, 2871f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project myBytes.length - totalBytesRead); 2872f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project totalBytesRead = totalBytesRead + bytesRead; 2873f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2874f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2875f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project receivedString = new String(myBytes, 0, totalBytesRead); 2876f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // depending on the platform we may get the previously sent 2877f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // urgent data or not (examples windows-yes, Linux-no). 2878f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // So accept either so long as we get the urgent data from 2879f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // when it was on. 2880f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //assertTrue( 2881f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // "Did not get urgent data when turning on/off(3) GOT:" 2882f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // + receivedString + ":Expected" + urgentData 2883f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // + sendString + urgentData + sendString 2884f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // + ":OR:" + sendString + urgentData 2885f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // + sendString, 2886f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // (receivedString.equals(urgentData + sendString 2887f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // + urgentData + sendString) || receivedString 2888f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // .equals(sendString + urgentData 2889f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // + sendString))); 2890f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2891f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 2892f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket.close(); 2893f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2894f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2895f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // now test the case where there is only urgent data 2896f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theAddress = new InetSocketAddress(InetAddress.getLocalHost(), 2897f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Support_PortManager.getNextPort()); 2898f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket = new Socket(); 2899f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket = new ServerSocket(); 2900f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project serverSocket.bind(theAddress); 2901f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.connect(theAddress); 2902f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project servSock = serverSocket.accept(); 2903f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theInput = theSocket.getInputStream(); 2904f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theOutput = servSock.getOutputStream(); 2905f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2906f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // send the urgent data which should not be received. 2907f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.setOOBInline(true); 2908f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project servSock.sendUrgentData(urgentData.getBytes()[0]); 2909f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2910f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Thread.sleep(1000); 2911f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2912f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project totalBytesRead = 0; 2913f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project myBytes = new byte[100]; 2914f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project while (theInput.available() > 0) { 2915f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int bytesRead = theInput.read(myBytes, totalBytesRead, 2916f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project myBytes.length - totalBytesRead); 2917f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project totalBytesRead = totalBytesRead + bytesRead; 2918f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2919f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2920f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project receivedString = new String(myBytes, 0, totalBytesRead); 2921f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Did not get urgent data only urgent data sent:" 2922f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + receivedString + ":" + urgentData, receivedString 2923f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .equals(urgentData)); 2924f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2925f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 2926f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // for platforms that do not support urgent data we expect an 2927f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // exception. For the others report an error. 2928f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // TODO : Need to introduce a better test for the exception 2929f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // so that the failure only occurs on platforms that support 2930f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // urgent data 2931f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Platform:" + platform 2932f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + ": Got exception during sendUrgent data tests" 2933f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + e.toString()); 2934f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2935f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2936f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2937f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2938f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket theSocket = new Socket(); 2939f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.close(); 2940f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.sendUrgentData(0); 2941f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IOException was not thrown."); 2942f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch(IOException ioe) { 2943f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 2944f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2945f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2946f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2947f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 2948f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#setPerformancePreference() 2949f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 2950f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 2951f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 2952f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 2953f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "setPerformancePreferences", 2954f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {int.class, int.class, int.class} 2955f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 2956f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_setPerformancePreference_Int_Int_Int() throws Exception { 2957f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket theSocket = new Socket(); 2958f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project theSocket.setPerformancePreferences(1, 1, 1); 2959f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2960f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2961f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 2962f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.net.Socket#Socket(Proxy) 2963f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 2964f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 2965f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 2966f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 2967f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "Socket", 2968f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.net.Proxy.class} 2969f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 2970f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_ConstructorLjava_net_Proxy_Exception() { 2971f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2972f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SocketAddress addr1 = InetSocketAddress.createUnresolved("127.0.0.1", 2973f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 80); 2974f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SocketAddress addr2 = new InetSocketAddress("localhost", 80); 2975f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2976f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Proxy proxy1 = new Proxy(Proxy.Type.HTTP, addr1); 2977f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // IllegalArgumentException test 2978f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2979f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new Socket(proxy1); 2980f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IllegalArgumentException"); 2981f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 2982f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 2983f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2984f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2985f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Proxy proxy2 = new Proxy(Proxy.Type.SOCKS, addr1); 2986f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // should not throw any exception 2987f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new Socket(proxy2); 2988f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new Socket(Proxy.NO_PROXY); 2989f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2990f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // SecurityException test 2991f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SecurityManager originalSecurityManager = System.getSecurityManager(); 2992f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 2993f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(new MockSecurityManager()); 2994f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SecurityException e) { 2995f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.err 2996f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .println("No permission to setSecurityManager, security related test in test_ConstructorLjava_net_Proxy_Security is ignored"); 2997f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return; 2998f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 2999f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3000f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Proxy proxy3 = new Proxy(Proxy.Type.SOCKS, addr1); 3001f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Proxy proxy4 = new Proxy(Proxy.Type.SOCKS, addr2); 3002f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3003f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3004f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new Socket(proxy3); 3005f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw SecurityException"); 3006f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SecurityException e) { 3007f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3008f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3009f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3010f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new Socket(proxy4); 3011f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw SecurityException"); 3012f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SecurityException e) { 3013f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3014f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3015f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } finally { 3016f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(originalSecurityManager); 3017f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3018f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3019f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SecurityManager oldSm = System.getSecurityManager(); 3020f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(sm); 3021f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3022f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new Socket(InetAddress.getLocalHost(), 0, true); 3023f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("SecurityException should be thrown."); 3024f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SecurityException e) { 3025f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3026f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SocketException e) { 3027f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("SocketException was thrown."); 3028f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (UnknownHostException e) { 3029f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("UnknownHostException was thrown."); 3030f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 3031f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IOException was thrown."); 3032f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } finally { 3033f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(oldSm); 3034f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3035f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3036f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3037f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new Socket((Proxy) null); 3038f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalArgumentException was not thrown."); 3039f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch(IllegalArgumentException iae) { 3040f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 3041f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3042f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3043f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3044f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 3045f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.SUFFICIENT, 3046f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "SocketException depends on the underlying protocol.", 3047f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "Socket", 3048f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {SocketImpl.class} 3049f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 3050f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_ConstructorLSocketImpl() { 3051f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project MockSocketImpl msi = new MockSocketImpl(); 3052f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3053f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new TestSocket(msi); 3054f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SocketException e) { 3055f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("SocketException was thrown."); 3056f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3057f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3058f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3059f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 3060f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests Socket#connect(SocketAddress) try an unknownhost 3061f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 3062f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 3063f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL, 3064f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "UnknownHostException checking only.", 3065f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "connect", 3066f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.net.SocketAddress.class, int.class} 3067f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 3068f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_connect_unknownhost() throws Exception { 3069f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket socket = new Socket(); 3070f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3071f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project socket.connect(new InetSocketAddress("unknownhost", 12345)); 3072f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Should throw UnknownHostException"); 3073f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (UnknownHostException e) { 3074f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3075f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3076f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3077f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3078f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 3079f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests Socket#connect(SocketAddress) try an unknownhost created by 3080f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * createUnresolved() 3081f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 3082f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 3083f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL, 3084f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "UnknownHostException checking only.", 3085f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "connect", 3086f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.net.SocketAddress.class, int.class} 3087f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 3088f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_connect_unresolved_unknown() throws Exception { 3089f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket socket = new Socket(); 3090f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3091f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project socket.connect(InetSocketAddress.createUnresolved("unknownhost", 3092f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 12345)); 3093f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Should throw UnknownHostException"); 3094f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (UnknownHostException e) { 3095f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3096f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3097f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3098f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3099f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 3100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests Socket#connect(SocketAddress) try a known host created by 3101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * createUnresolved() 3102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 3103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 3104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL, 3105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "UnknownHostException checking only.", 3106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "connect", 3107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.net.SocketAddress.class, int.class} 3108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 3109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_connect_unresolved() throws Exception { 3110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket socket = new Socket(); 3111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project socket.connect(InetSocketAddress.createUnresolved( 3113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Support_Configuration.SocksServerTestHost, 3114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Support_Configuration.SocksServerTestPort)); 3115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Should throw UnknownHostException"); 3116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (UnknownHostException e) { 3117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 3122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests Socket#getOutputStream() 3123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 3124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 3125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 3126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "SocketException, IllegalBlockingModeException checking.", 3127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getOutputStream", 3128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 3129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 3130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_getOutputStream_shutdownOutput() throws Exception { 3131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // regression test for Harmony-873 3132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ServerSocket ss = new ServerSocket(0); 3133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket s = new Socket("127.0.0.1", ss.getLocalPort()); 3134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ss.accept(); 3135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.shutdownOutput(); 3136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.getOutputStream(); 3138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw SocketException"); 3139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 3140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } finally { 3142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.close(); 3143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SocketChannel channel = SocketChannel.open( 3146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new InetSocketAddress(ss.getInetAddress(), ss.getLocalPort())); 3147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project channel.configureBlocking(false); 3148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ss.accept(); 3149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket socket = channel.socket(); 3150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project OutputStream out = null; 3152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out = socket.getOutputStream(); 3155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out.write(1); 3156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalBlockingModeException was not thrown."); 3157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch(IllegalBlockingModeException ibme) { 3158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 3159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } finally { 3160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if(out != null) out.close(); 3161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project socket.close(); 3162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project channel.close(); 3163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 3167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests Socket#shutdownInput() 3168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests Socket#shutdownOutput() 3169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 3170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 3171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.ADDITIONAL, 3172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Regression test.", 3173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "shutdownInput", 3174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 3175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 3176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_shutdownInputOutput_twice() throws Exception { 3177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // regression test for Harmony-2944 3178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Socket s = new Socket("0.0.0.0", 0, false); 3179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.shutdownInput(); 3180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.shutdownInput(); 3183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw SocketException"); 3184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SocketException se) { 3185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.shutdownOutput(); 3188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.shutdownOutput(); 3191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw SocketException"); 3192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SocketException se) { 3193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 3194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 3198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Sets up the fixture, for example, open a network connection. This method 3199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * is called before a test is executed. 3200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 3201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws Exception 3202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 3203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void setUp() throws Exception { 3204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super.setUp(); 3205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 3208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Tears down the fixture, for example, close a network connection. This 3209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * method is called after a test is executed. 3210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 3211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void tearDown() { 3212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (s != null) 3214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s.close(); 3215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 3216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (ss != null) 3219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ss.close(); 3220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 3221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (t != null) 3224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project t.interrupt(); 3225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 3226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project static class MockSecurityManager extends SecurityManager { 3230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void checkConnect(String host, int port) { 3232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if ("127.0.0.1".equals(host)) { 3233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new SecurityException("permission is not allowed"); 3234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void checkPermission(Permission permission) { 3238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return; 3239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 3244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 3245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 3246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected int startServer(String name) { 3247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int portNumber = Support_PortManager.getNextPort(); 3248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 3249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ss = new ServerSocket(portNumber, 5); 3250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 3251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail(name + ": " + e); 3252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return ss.getLocalPort(); 3254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project class MockSocketImpl extends SocketImpl { 3257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public MockSocketImpl() { 3259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super(); 3260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 3263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void accept(SocketImpl arg0) throws IOException { 3264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // TODO Auto-generated method stub 3265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 3269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected int available() throws IOException { 3270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // TODO Auto-generated method stub 3271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return 0; 3272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 3275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void bind(InetAddress arg0, int arg1) throws IOException { 3276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // TODO Auto-generated method stub 3277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 3281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void close() throws IOException { 3282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // TODO Auto-generated method stub 3283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 3287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void connect(String arg0, int arg1) throws IOException { 3288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // TODO Auto-generated method stub 3289f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3290f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 3293f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void connect(InetAddress arg0, int arg1) throws IOException { 3294f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // TODO Auto-generated method stub 3295f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3296f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3297f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3298f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 3299f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void connect(SocketAddress arg0, int arg1) throws IOException { 3300f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // TODO Auto-generated method stub 3301f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3302f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3304f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 3305f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void create(boolean arg0) throws IOException { 3306f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // TODO Auto-generated method stub 3307f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3308f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3309f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3310f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 3311f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected InputStream getInputStream() throws IOException { 3312f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // TODO Auto-generated method stub 3313f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return null; 3314f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3315f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3316f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 3317f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected OutputStream getOutputStream() throws IOException { 3318f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // TODO Auto-generated method stub 3319f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return null; 3320f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3321f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3322f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 3323f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void listen(int arg0) throws IOException { 3324f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // TODO Auto-generated method stub 3325f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3326f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3327f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3328f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 3329f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void sendUrgentData(int arg0) throws IOException { 3330f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // TODO Auto-generated method stub 3331f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3332f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3333f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3334f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public Object getOption(int arg0) throws SocketException { 3335f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // TODO Auto-generated method stub 3336f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return null; 3337f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3338f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3339f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void setOption(int arg0, Object arg1) throws SocketException { 3340f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // TODO Auto-generated method stub 3341f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3342f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3343f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3344f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 3345f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3346f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project} 3347