< 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 >