blob: 6dfed52e7c571a945dc766884181c4b7da84ceb2 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package libcore.java.net;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ConnectException;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketException;
import junit.framework.TestCase;
public class OldUnixSocketTest extends TestCase {
public void test_getInputStream() throws IOException {
// Simple read/write test over the IO streams
final ServerSocket pingServer = new ServerSocket(0);
Socket pingClient = new Socket();
try {
pingClient.connect(new InetSocketAddress(
InetAddress.getLocalHost(), pingServer.getLocalPort()));
Socket worker = pingServer.accept();
pingServer.close();
// Write some data to the server to provoke it
OutputStream clientOut = pingClient.getOutputStream();
clientOut.write(new byte[256]);
InputStream in = worker.getInputStream();
in.read();
OutputStream out = worker.getOutputStream();
out.write(new byte[42]);
worker.close();
InputStream clientIn = pingClient.getInputStream();
clientIn.read(new byte[42]);
try {
int i = clientIn.read();
fail("Should throw SocketException; got i=" + i);
} catch (SocketException e) {
// expected
}
clientIn.close();
try {
clientIn.read();
fail("Should throw SocketException");
} catch (SocketException e) {
// expected
}
try {
clientIn.read(new byte[5]);
fail("Should throw SocketException");
} catch (SocketException e) {
// expected
}
} finally {
pingClient.close();
pingServer.close();
}
}
public void test_connectLjava_net_SocketAddressI() throws Exception {
// Now validate that we get a interrupted exception if we try to connect
// to an address on which nobody is accepting connections and the
// timeout expired
Socket theSocket = new Socket();
try {
theSocket.connect(new InetSocketAddress(InetAddress.getLocalHost(),
1), 200);
fail("No interrupted exception when connecting to address nobody listening on with short timeout 200");
} catch (ConnectException e) {
// Expected
}
theSocket.close();
}
public void test_getOutputStream() throws Exception {
// Regression test for HARMONY-2934
// Port 0 is not allowed to be used in connect() on some platforms,
// get a free port here
ServerSocket ss = new ServerSocket(0);
int port = ss.getLocalPort();
ss.close();
Socket socket = new Socket("127.0.0.1", port, false);
OutputStream o = socket.getOutputStream();
try {
o.write(1);
} catch (SocketException e) {
// expected
} finally {
socket.close();
}
}
}