< prev index next >
test/jdk/java/nio/channels/unixdomain/UnixDomainSocketAddressSerializationTest.java
Print this page
M UnixDomainSocketAddressSerializationTest.java
*** 23,41 ****
import org.testng.annotations.Test;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.nio.channels.UnixDomainSocketAddress;
import java.nio.file.Path;
!
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertTrue;
/*
* @test
* @summary UnixDomainSocketAddress serialization test
* @run testng/othervm UnixDomainSocketAddressSerializationTest
--- 23,45 ----
import org.testng.annotations.Test;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
+ import java.io.DataOutputStream;
import java.io.IOException;
+ import java.io.InvalidObjectException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
+ import java.io.ObjectStreamClass;
import java.io.Serializable;
import java.nio.channels.UnixDomainSocketAddress;
import java.nio.file.Path;
! import static java.io.ObjectStreamConstants.*;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertTrue;
+ import static org.testng.Assert.expectThrows;
/*
* @test
* @summary UnixDomainSocketAddress serialization test
* @run testng/othervm UnixDomainSocketAddressSerializationTest
*** 58,67 ****
--- 62,78 ----
assertEquals(deserialized.toString(), addr.toString());
assertEquals(deserialized.hashCode(), addr.hashCode());
assertEquals(deserialized, addr);
}
+ static final Class<InvalidObjectException> IOE = InvalidObjectException.class;
+
+ /** Tests that UnixDomainSocketAddress in the byte-stream is disallowed. */
+ public static void testUnixDomainSocketAddressInStream() {
+ expectThrows(IOE, () -> deserialize(byteStream(), UnixDomainSocketAddress.class));
+ }
+
private static <T extends Serializable> byte[] serialize(T t)
throws IOException {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(t);
*** 76,81 ****
--- 87,116 ----
new ObjectInputStream(new ByteArrayInputStream(b))) {
Object o = ois.readObject();
return cl.cast(o);
}
}
+
+ static final String CLASSNAME = UnixDomainSocketAddress.class.getName();
+ static final long SUID = ObjectStreamClass.lookup(UnixDomainSocketAddress.class).getSerialVersionUID();
+ /**
+ * Returns a stream with UnixDomainSocketAddress in the stream. The
+ * stream will have no stream field values.
+ */
+ static byte[] byteStream() throws Exception {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ DataOutputStream dos = new DataOutputStream(baos);
+ dos.writeShort(STREAM_MAGIC);
+ dos.writeShort(STREAM_VERSION);
+ dos.writeByte(TC_OBJECT);
+ dos.writeByte(TC_CLASSDESC);
+ dos.writeUTF(CLASSNAME);
+ dos.writeLong(SUID);
+ dos.writeByte(SC_SERIALIZABLE);
+ dos.writeShort(0); // number of stream fields
+ dos.writeByte(TC_ENDBLOCKDATA); // no annotations
+ dos.writeByte(TC_NULL); // no superclasses
+ dos.write(TC_ENDBLOCKDATA); // end block - for SC_WRITE_METHOD
+ dos.close();
+ return baos.toByteArray();
+ }
}
< prev index next >