/external/apache-harmony/luni/src/test/api/common/org/apache/harmony/luni/tests/java/io/SerializationStressTest1.java
Java | 1650 lines | 1186 code | 232 blank | 232 comment | 47 complexity | c7fbff3fd56b573597a22adb31a8bb64 MD5 | raw file
- /*
- * 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 org.apache.harmony.luni.tests.java.io;
- import java.io.IOException;
- import java.io.NotSerializableException;
- import java.io.Serializable;
- import java.util.Arrays;
- import java.util.Hashtable;
- import java.util.Vector;
- @SuppressWarnings( { "serial", "unused" })
- public class SerializationStressTest1 extends SerializationStressTest {
- // The purpose of these two classes is to test if serialization, when
- // loading, runs the object's constructor (wrong) or the constructor defined
- // at the topmost Serializable superclass(correct).
- static final int INIT_INT_VALUE = 7;
- // HAS to be static class so that our constructor signature will remain
- // untouched (no synthetic param)
- private static class SerializationTest implements java.io.Serializable {
- int anInt = INIT_INT_VALUE;
- public SerializationTest() {
- super();
- }
- }
- static final String INIT_STR_VALUE = "a string that is blortz";
- // HAS to be static class so that our constructor signature will remain
- // untouched (no synthetic param)
- private static class SerializationTestSubclass1 extends SerializationTest {
- String aString = INIT_STR_VALUE;
- public SerializationTestSubclass1() {
- super();
- // Just to change default superclass init value
- anInt = INIT_INT_VALUE / 2;
- }
- }
- // -----------------------------------------------------------------------------------
- private static class SpecTestSuperClass implements Runnable {
- protected java.lang.String instVar;
- public void run() {
- }
- }
- private static class SpecTest extends SpecTestSuperClass implements
- Cloneable, Serializable {
- public java.lang.String instVar1;
- public static java.lang.String staticVar1;
- public static java.lang.String staticVar2;
- {
- instVar1 = "NonStaticInitialValue";
- }
- static {
- staticVar1 = "StaticInitialValue";
- staticVar1 = new String(staticVar1);
- }
- public Object method(Object objParam, Object objParam2) {
- return new Object();
- }
- public boolean method(boolean bParam, Object objParam) {
- return true;
- }
- public boolean method(boolean bParam, Object objParam, Object objParam2) {
- return true;
- }
- }
- private static class SpecTestSubclass extends SpecTest {
- public transient java.lang.String transientInstVar = "transientValue";
- }
- // -----------------------------------------------------------------------------------
- // This one tests what happens if the read/writeObject methods are defined
- // Serialization should work fine.
- private static class ReadWriteObject implements java.io.Serializable {
- public boolean calledWriteObject = false;
- public boolean calledReadObject = false;
- public ReadWriteObject() {
- super();
- }
- private void readObject(java.io.ObjectInputStream in)
- throws java.io.IOException, ClassNotFoundException {
- calledReadObject = true;
- in.readObject();
- }
- private void writeObject(java.io.ObjectOutputStream out)
- throws java.io.IOException {
- calledWriteObject = true;
- out.writeObject(FOO);
- }
- }
- // This one tests what happens if the read/writeObject methods are not
- // private.
- // Serialization should fail.
- private static class PublicReadWriteObject implements java.io.Serializable {
- public boolean calledWriteObject = false;
- public boolean calledReadObject = false;
- public PublicReadWriteObject() {
- super();
- }
- public void readObject(java.io.ObjectInputStream in)
- throws java.io.IOException, ClassNotFoundException {
- calledReadObject = true;
- in.readObject();
- }
- public void writeObject(java.io.ObjectOutputStream out)
- throws java.io.IOException {
- calledWriteObject = true;
- out.writeObject(FOO);
- }
- }
- // This one tests if field names are serialized in the same way (sorting)
- // across different VMs
- private static class FieldOrder implements Serializable {
- String aaa1NonPrimitive = "aaa1";
- int bbb1PrimitiveInt = 5;
- boolean aaa2PrimitiveBoolean = true;
- String bbb2NonPrimitive = "bbb2";
- }
- // This one tests what happens if you define just readObject, but not
- // writeObject.
- // Does it run or not ?
- private static class JustReadObject implements java.io.Serializable {
- public boolean calledReadObject = false;
- public JustReadObject() {
- super();
- }
- private void readObject(java.io.ObjectInputStream in)
- throws java.io.IOException, ClassNotFoundException {
- calledReadObject = true;
- in.defaultReadObject();
- }
- }
- // This one tests what happens if you define just writeObject, but not
- // readObject.
- // Does it run or not ?
- private static class JustWriteObject implements java.io.Serializable {
- public boolean calledWriteObject = false;
- public JustWriteObject() {
- super();
- }
- private void writeObject(java.io.ObjectOutputStream out)
- throws java.io.IOException, ClassNotFoundException {
- calledWriteObject = true;
- out.defaultWriteObject();
- }
- }
- // This one tests class-based replacement when dumping
- private static class ClassBasedReplacementWhenDumping implements
- java.io.Serializable {
- public boolean calledReplacement = false;
- public ClassBasedReplacementWhenDumping() {
- super();
- }
- private Object writeReplace() {
- calledReplacement = true;
- return FOO; // Replacement is a String
- }
- }
- // This one tests whether class-based replacement supports multiple levels.
- // MultipleClassBasedReplacementWhenDumping -> C1 -> C2 -> C3 -> FOO
- private static class MultipleClassBasedReplacementWhenDumping implements
- java.io.Serializable {
- private static class C1 implements java.io.Serializable {
- private Object writeReplace() {
- return new C2();
- }
- }
- private static class C2 implements java.io.Serializable {
- private Object writeReplace() {
- return new C3();
- }
- }
- private static class C3 implements java.io.Serializable {
- private Object writeReplace() {
- return FOO;
- }
- }
- public MultipleClassBasedReplacementWhenDumping() {
- super();
- }
- private Object writeReplace() {
- return new C1();
- }
- }
- // This one tests class-based replacement when loading
- private static class ClassBasedReplacementWhenLoading implements
- java.io.Serializable {
- public ClassBasedReplacementWhenLoading() {
- super();
- }
- private Object readResolve() {
- return FOO; // Replacement is a String
- }
- }
- // This one tests what happens if a loading-replacement is not
- // type-compatible with the original object
- private static class ClassBasedReplacementWhenLoadingViolatesFieldType
- implements java.io.Serializable {
- public ClassBasedReplacementWhenLoading classBasedReplacementWhenLoading = new ClassBasedReplacementWhenLoading();
- public ClassBasedReplacementWhenLoadingViolatesFieldType() {
- super();
- }
- }
- // What happens if dumping causes an error and you try to reload ?
- // Should the load throw the same exception ?
- private static class MyExceptionWhenDumping1 implements
- java.io.Serializable {
- private static class MyException extends java.io.IOException {
- };
- // A primitive instance variable exposes a bug in the serialization
- // spec.
- // Primitive instance variables are written without primitive data tags
- // and so are read without checking for tags. If an exception is
- // written, reading primitive data will just read bytes from the stream
- // which may be tags
- public boolean anInstanceVar = false;
- public MyExceptionWhenDumping1() {
- super();
- }
- private void readObject(java.io.ObjectInputStream in)
- throws java.io.IOException, ClassNotFoundException {
- in.defaultReadObject();
- }
- private void writeObject(java.io.ObjectOutputStream out)
- throws java.io.IOException, ClassNotFoundException {
- throw new MyException();
- }
- }
- // What happens if dumping causes an error and you try to reload ?
- // Should the load throw the same exception ?
- private static class MyExceptionWhenDumping2 implements
- java.io.Serializable {
- private static class MyException extends java.io.IOException {
- };
- public Integer anInstanceVar = new Integer(0xA1);
- public MyExceptionWhenDumping2() {
- super();
- }
- private void readObject(java.io.ObjectInputStream in)
- throws java.io.IOException, ClassNotFoundException {
- in.defaultReadObject();
- }
- private void writeObject(java.io.ObjectOutputStream out)
- throws java.io.IOException, ClassNotFoundException {
- throw new MyException();
- }
- }
- // What happens if dumping causes an error (NonSerializable inst var) and
- // you try to reload ?
- // Should the load throw the same exception ?
- private static class NonSerializableExceptionWhenDumping implements
- java.io.Serializable {
- public Object anInstanceVar = new Object();
- public NonSerializableExceptionWhenDumping() {
- super();
- }
- }
- // What happens if dumping causes an error (which is not serializable) and
- // you try to reload ?
- // Should the load throw the same exception ?
- private static class MyUnserializableExceptionWhenDumping implements
- java.io.Serializable {
- private static class MyException extends java.io.IOException {
- private Object notSerializable = new Object();
- };
- public boolean anInstanceVar = false;
- public MyUnserializableExceptionWhenDumping() {
- super();
- }
- private void readObject(java.io.ObjectInputStream in)
- throws java.io.IOException, ClassNotFoundException {
- in.defaultReadObject();
- }
- private void writeObject(java.io.ObjectOutputStream out)
- throws java.io.IOException, ClassNotFoundException {
- throw new MyException();
- }
- }
- public SerializationStressTest1(String name) {
- super(name);
- }
- public void test_18_1_writeObject() {
- // Test for method void
- // java.io.ObjectOutputStream.writeObject(java.lang.Object)
- Object objToSave = null;
- Object objLoaded;
- try {
- objToSave = "HelloWorld";
- if (DEBUG)
- System.out.println("Obj = " + objToSave);
- objLoaded = dumpAndReload(objToSave);
- assertTrue(MSG_TEST_FAILED + objToSave, (((String) objLoaded)
- .equals((String) objToSave)));
- } catch (IOException e) {
- fail("IOException serializing data : " + e.getMessage());
- } catch (ClassNotFoundException e) {
- fail("ClassNotFoundException reading Object type: "
- + e.getMessage());
- } catch (Error err) {
- System.out.println("Error when obj = " + objToSave);
- // err.printStackTrace();
- throw err;
- }
- }
- public void test_18_2_writeObject() {
- // Test for method void
- // java.io.ObjectOutputStream.writeObject(java.lang.Object)
- Object objToSave = null;
- Object objLoaded;
- try {
- objToSave = null;
- if (DEBUG)
- System.out.println("Obj = " + objToSave);
- objLoaded = dumpAndReload(objToSave);
- assertTrue(MSG_TEST_FAILED + objToSave, objLoaded == objToSave);
- } catch (IOException e) {
- fail("IOException serializing data : " + e.getMessage());
- } catch (ClassNotFoundException e) {
- fail("ClassNotFoundException reading Object type : "
- + e.getMessage());
- } catch (Error err) {
- System.out.println("Error when obj = " + objToSave);
- // err.printStackTrace();
- throw err;
- }
- }
- public void test_18_3_writeObject() {
- // Test for method void
- // java.io.ObjectOutputStream.writeObject(java.lang.Object)
- Object objToSave = null;
- Object objLoaded;
- try {
- byte[] bytes = { 0, 1, 2, 3 };
- objToSave = bytes;
- if (DEBUG)
- System.out.println("Obj = " + objToSave);
- objLoaded = dumpAndReload(objToSave);
- assertTrue(MSG_TEST_FAILED + objToSave, Arrays.equals(
- (byte[]) objLoaded, (byte[]) objToSave));
- } catch (IOException e) {
- fail("IOException serializing data : " + e.getMessage());
- } catch (ClassNotFoundException e) {
- fail("ClassNotFoundException reading Object type : "
- + e.getMessage());
- } catch (Error err) {
- System.out.println("Error when obj = " + objToSave);
- // err.printStackTrace();
- throw err;
- }
- }
- public void test_18_4_writeObject() {
- // Test for method void
- // java.io.ObjectOutputStream.writeObject(java.lang.Object)
- Object objToSave = null;
- Object objLoaded;
- try {
- int[] ints = { 0, 1, 2, 3 };
- objToSave = ints;
- if (DEBUG)
- System.out.println("Obj = " + objToSave);
- objLoaded = dumpAndReload(objToSave);
- assertTrue(MSG_TEST_FAILED + objToSave, Arrays.equals(
- (int[]) objLoaded, (int[]) objToSave));
- } catch (IOException e) {
- fail("IOException serializing data : " + e.getMessage());
- } catch (ClassNotFoundException e) {
- fail("ClassNotFoundException reading Object type : "
- + e.getMessage());
- } catch (Error err) {
- System.out.println("Error when obj = " + objToSave);
- throw err;
- }
- }
- public void test_18_5_writeObject() {
- // Test for method void
- // java.io.ObjectOutputStream.writeObject(java.lang.Object)
- Object objToSave = null;
- Object objLoaded;
- try {
- short[] shorts = { 0, 1, 2, 3 };
- objToSave = shorts;
- if (DEBUG)
- System.out.println("Obj = " + objToSave);
- objLoaded = dumpAndReload(objToSave);
- assertTrue(MSG_TEST_FAILED + objToSave, Arrays.equals(
- (short[]) objLoaded, (short[]) objToSave));
- } catch (IOException e) {
- fail("IOException serializing data : " + e.getMessage());
- } catch (ClassNotFoundException e) {
- fail("ClassNotFoundException reading Object type : "
- + e.getMessage());
- } catch (Error err) {
- System.out.println("Error when obj = " + objToSave);
- // err.printStackTrace();
- throw err;
- }
- }
- public void test_18_6_writeObject() {
- // Test for method void
- // java.io.ObjectOutputStream.writeObject(java.lang.Object)
- Object objToSave = null;
- Object objLoaded;
- try {
- long[] longs = { 0, 1, 2, 3 };
- objToSave = longs;
- if (DEBUG)
- System.out.println("Obj = " + objToSave);
- objLoaded = dumpAndReload(objToSave);
- assertTrue(MSG_TEST_FAILED + objToSave, Arrays.equals(
- (long[]) objLoaded, (long[]) objToSave));
- } catch (IOException e) {
- fail("IOException serializing data : " + e.getMessage());
- } catch (ClassNotFoundException e) {
- fail("ClassNotFoundException reading Object type : "
- + e.getMessage());
- } catch (Error err) {
- System.out.println("Error when obj = " + objToSave);
- // err.printStackTrace();
- throw err;
- }
- }
- public void test_18_7_writeObject() {
- // Test for method void
- // java.io.ObjectOutputStream.writeObject(java.lang.Object)
- Object objToSave = null;
- Object objLoaded;
- try {
- float[] floats = { 0.0f, 1.1f, 2.2f, 3.3f };
- objToSave = floats;
- if (DEBUG)
- System.out.println("Obj = " + objToSave);
- objLoaded = dumpAndReload(objToSave);
- assertTrue(MSG_TEST_FAILED + objToSave, Arrays.equals(
- (float[]) objLoaded, (float[]) objToSave));
- } catch (IOException e) {
- fail("IOException serializing data: " + e.getMessage());
- } catch (ClassNotFoundException e) {
- fail("ClassNotFoundException reading Object type : "
- + e.getMessage());
- } catch (Error err) {
- System.out.println("Error when obj = " + objToSave);
- // err.printStackTrace();
- throw err;
- }
- }
- public void test_18_8_writeObject() {
- // Test for method void
- // java.io.ObjectOutputStream.writeObject(java.lang.Object)
- Object objToSave = null;
- Object objLoaded;
- try {
- double[] doubles = { 0.0, 1.1, 2.2, 3.3 };
- objToSave = doubles;
- if (DEBUG)
- System.out.println("Obj = " + objToSave);
- objLoaded = dumpAndReload(objToSave);
- assertTrue(MSG_TEST_FAILED + objToSave, Arrays.equals(
- (double[]) objLoaded, (double[]) objToSave));
- } catch (IOException e) {
- fail("IOException serializing data : " + e.getMessage());
- } catch (ClassNotFoundException e) {
- fail("ClassNotFoundException reading Object type : "
- + e.getMessage());
- } catch (Error err) {
- System.out.println("Error when obj = " + objToSave);
- // err.printStackTrace();
- throw err;
- }
- }
- public void test_18_9_writeObject() {
- // Test for method void
- // java.io.ObjectOutputStream.writeObject(java.lang.Object)
- Object objToSave = null;
- Object objLoaded;
- try {
- boolean[] booleans = { true, false, false, true };
- objToSave = booleans;
- if (DEBUG)
- System.out.println("Obj = " + objToSave);
- objLoaded = dumpAndReload(objToSave);
- assertTrue(MSG_TEST_FAILED + objToSave, Arrays.equals(
- (boolean[]) objLoaded, (boolean[]) objToSave));
- } catch (IOException e) {
- fail("IOException serializing data : " + e.getMessage());
- } catch (ClassNotFoundException e) {
- fail("ClassNotFoundException reading Object type : " + e.getMessage());
- } catch (Error err) {
- System.out.println("Error when obj = " + objToSave);
- // err.printStackTrace();
- throw err;
- }
- }
- public void test_18_10_writeObject() {
- // Test for method void
- // java.io.ObjectOutputStream.writeObject(java.lang.Object)
- Object objToSave = null;
- Object objLoaded;
- try {
- String[] strings = { "foo", "bar", "java" };
- objToSave = strings;
- if (DEBUG)
- System.out.println("Obj = " + objToSave);
- objLoaded = dumpAndReload(objToSave);
- assertTrue(MSG_TEST_FAILED + objToSave, Arrays.equals(
- (Object[]) objLoaded, (Object[]) objToSave));
- } catch (IOException e) {
- fail("IOException serializing " + objToSave + " : "
- + e.getMessage());
- } catch (ClassNotFoundException e) {
- fail("Unable to read Object type: " + e.toString());
- } catch (Error err) {
- System.out.println("Error when obj = " + objToSave);
- // err.printStackTrace();
- throw err;
- }
- }
- public void test_18_11_writeObject() {
- // Test for method void
- // java.io.ObjectOutputStream.writeObject(java.lang.Object)
- Object objToSave = null;
- Object objLoaded;
- try {
- objToSave = new Object(); // Not serializable
- if (DEBUG)
- System.out.println("Obj = " + objToSave);
- boolean passed = false;
- Throwable t = null;
- try {
- objLoaded = dumpAndReload(objToSave);
- } catch (NotSerializableException ns) {
- passed = true;
- t = ns;
- } catch (Exception wrongExc) {
- passed = false;
- t = wrongExc;
- }
- assertTrue(
- "Failed to throw NotSerializableException when serializing "
- + objToSave + " Threw(if non-null) this: " + t,
- passed);
- } catch (Error err) {
- System.out.println("Error when obj = " + objToSave);
- // err.printStackTrace();
- throw err;
- }
- }
- public void test_18_12_writeObject() {
- // Test for method void
- // java.io.ObjectOutputStream.writeObject(java.lang.Object)
- try {
- if (DEBUG)
- System.out.println("Obj = <mixed>");
- t_MixPrimitivesAndObjects();
- } catch (IOException e) {
- fail("IOException serializing data : " + e.getMessage());
- } catch (ClassNotFoundException e) {
- fail("ClassNotFoundException reading Object type : "
- + e.getMessage());
- } catch (Error err) {
- System.out.println("Error when dumping mixed types");
- // err.printStackTrace();
- throw err;
- }
- }
- public void test_18_13_writeObject() {
- // Test for method void
- // java.io.ObjectOutputStream.writeObject(java.lang.Object)
- Object objToSave = null;
- Object objLoaded;
- try {
- SerializationTestSubclass1 st = new SerializationTestSubclass1();
- // Just change the default ivar values
- st.anInt = Integer.MAX_VALUE;
- st.aString = FOO;
- objToSave = st;
- if (DEBUG)
- System.out.println("Obj = " + objToSave);
- objLoaded = dumpAndReload(objToSave);
- // non-serializable inst var has to be initialized from top
- // constructor
- assertTrue(
- MSG_TEST_FAILED + objToSave,
- ((SerializationTestSubclass1) objLoaded).anInt == Integer.MAX_VALUE);
- // but serialized var has to be restored as it was in the object
- // when dumped
- assertTrue(MSG_TEST_FAILED + objToSave,
- ((SerializationTestSubclass1) objLoaded).aString
- .equals(FOO));
- } catch (IOException e) {
- fail("Exception serializing " + objToSave + "\t->"
- + e.toString());
- } catch (ClassNotFoundException e) {
- fail("ClassNotFoundException reading Object type : "
- + e.getMessage());
- } catch (Error err) {
- System.out.println("Error when obj = " + objToSave);
- err.printStackTrace();
- throw err;
- }
- }
- public void test_18_14_writeObject() {
- // Test for method void
- // java.io.ObjectOutputStream.writeObject(java.lang.Object)
- Object objToSave = null;
- Object objLoaded;
- try {
- SpecTest specTest = new SpecTest();
- // Just change the default ivar values
- specTest.instVar = FOO;
- specTest.instVar1 = specTest.instVar;
- objToSave = specTest;
- if (DEBUG)
- System.out.println("Obj = " + objToSave);
- objLoaded = dumpAndReload(objToSave);
- // non-serializable inst var has to be initialized from top
- // constructor
- assertNull(MSG_TEST_FAILED + objToSave,
- ((SpecTest) objLoaded).instVar);
- // instVar from non-serialized class, cant be saved/restored
- // by serialization but serialized ivar has to be restored as it
- // was in the object when dumped
- assertTrue(MSG_TEST_FAILED + objToSave,
- ((SpecTest) objLoaded).instVar1.equals(FOO));
- } catch (IOException e) {
- fail("Exception serializing " + objToSave + "\t->"
- + e.toString());
- } catch (ClassNotFoundException e) {
- fail("ClassNotFoundException reading Object type : "
- + e.getMessage());
- } catch (Error err) {
- System.out.println("Error when obj = " + objToSave);
- // err.printStackTrace();
- throw err;
- }
- }
- public void test_18_15_writeObject() {
- // Test for method void
- // java.io.ObjectOutputStream.writeObject(java.lang.Object)
- Object objToSave = null;
- Object objLoaded;
- try {
- SpecTestSubclass specTestSubclass = new SpecTestSubclass();
- // Just change the default ivar values
- specTestSubclass.transientInstVar = FOO;
- objToSave = specTestSubclass;
- if (DEBUG)
- System.out.println("Obj = " + objToSave);
- objLoaded = dumpAndReload(objToSave);
- // non-serializable inst var cant be saved, and it is not init'ed
- // from top constructor in this case
- assertNull(MSG_TEST_FAILED + objToSave,
- ((SpecTestSubclass) objLoaded).transientInstVar);
- // transient slot, cant be saved/restored by serialization
- } catch (IOException e) {
- fail("Exception serializing " + objToSave + "\t->"
- + e.toString());
- } catch (ClassNotFoundException e) {
- fail("ClassNotFoundException reading Object type : "
- + e.getMessage());
- } catch (Error err) {
- System.out.println("Error when obj = " + objToSave);
- // err.printStackTrace();
- throw err;
- }
- }
- public void test_18_16_writeObject() {
- // Test for method void
- // java.io.ObjectOutputStream.writeObject(java.lang.Object)
- Object objToSave = null;
- Object objLoaded;
- try {
- String[] strings = new String[2];
- strings[0] = FOO;
- strings[1] = (" " + FOO + " ").trim(); // Safe way to get a copy
- // that is not ==
- objToSave = strings;
- if (DEBUG)
- System.out.println("Obj = " + objToSave);
- objLoaded = dumpAndReload(objToSave);
- String[] stringsLoaded = (String[]) objLoaded;
- // Serialization has to use identity-based table for assigning IDs
- assertTrue(MSG_TEST_FAILED + objToSave,
- !(stringsLoaded[0] == stringsLoaded[1]));
- } catch (IOException e) {
- fail("Exception serializing " + objToSave + "\t->"
- + e.toString());
- } catch (ClassNotFoundException e) {
- fail("ClassNotFoundException reading Object type : "
- + e.getMessage());
- } catch (Error err) {
- System.out.println("Error when obj = " + objToSave);
- // err.printStackTrace();
- throw err;
- }
- }
- public void test_18_17_writeObject() {
- // Test for method void
- // java.io.ObjectOutputStream.writeObject(java.lang.Object)
- Object objToSave = null;
- Object objLoaded;
- try {
- ReadWriteObject readWrite = new ReadWriteObject();
- objToSave = readWrite;
- if (DEBUG)
- System.out.println("Obj = " + objToSave);
- objLoaded = dumpAndReload(objToSave);
- // has to have called the writeObject on the instance to dump
- assertTrue(MSG_TEST_FAILED + objToSave, readWrite.calledWriteObject);
- // has to have called the readObject on the instance loaded
- assertTrue(MSG_TEST_FAILED + objToSave,
- ((ReadWriteObject) objLoaded).calledReadObject);
- } catch (IOException e) {
- fail("Exception serializing " + objToSave + "\t->"
- + e.toString());
- } catch (ClassNotFoundException e) {
- fail("ClassNotFoundException reading Object type : "
- + e.getMessage());
- } catch (Error err) {
- System.out.println("Error when obj = " + objToSave);
- // err.printStackTrace();
- throw err;
- }
- }
- public void test_18_18_writeObject() {
- // Test for method void
- // java.io.ObjectOutputStream.writeObject(java.lang.Object)
- Object objToSave = null;
- Object objLoaded;
- try {
- PublicReadWriteObject publicReadWrite = new PublicReadWriteObject();
- objToSave = publicReadWrite;
- if (DEBUG)
- System.out.println("Obj = " + objToSave);
- objLoaded = dumpAndReload(objToSave);
- // Can't have called the writeObject on the instance to dump
- assertTrue(MSG_TEST_FAILED + objToSave,
- !publicReadWrite.calledWriteObject);
- // Can't have called the readObject on the instance loaded
- assertTrue(MSG_TEST_FAILED + objToSave,
- !((PublicReadWriteObject) objLoaded).calledReadObject);
- } catch (IOException e) {
- fail("Exception serializing " + objToSave + "\t->"
- + e.toString());
- } catch (ClassNotFoundException e) {
- fail("ClassNotFoundException reading Object type : "
- + e.getMessage());
- } catch (Error err) {
- System.out.println("Error when obj = " + objToSave);
- // err.printStackTrace();
- throw err;
- }
- }
- public void test_18_19_writeObject() {
- // Test for method void
- // java.io.ObjectOutputStream.writeObject(java.lang.Object)
- Object objToSave = null;
- Object objLoaded;
- try {
- FieldOrder fieldOrder = new FieldOrder();
- objToSave = fieldOrder;
- if (DEBUG)
- System.out.println("Obj = " + objToSave);
- objLoaded = dumpAndReload(objToSave);
- // This test is only useful for X-loading, so if it managed to
- // dump&load, we passed the test
- assertTrue(MSG_TEST_FAILED + objToSave, true);
- } catch (IOException e) {
- fail("IOException serializing " + objToSave + " : "
- + e.getMessage());
- } catch (ClassNotFoundException e) {
- fail("ClassNotFoundException reading Object type : "
- + e.getMessage());
- } catch (Error err) {
- System.out.println("Error when obj = " + objToSave);
- // err.printStackTrace();
- throw err;
- }
- }
- public void test_18_20_writeObject() {
- // Test for method void
- // java.io.ObjectOutputStream.writeObject(java.lang.Object)
- Object objToSave = null;
- Object objLoaded;
- try {
- objToSave = Class.forName("java.lang.Integer");
- if (DEBUG)
- System.out.println("Obj = " + objToSave);
- objLoaded = dumpAndReload(objToSave);
- // Classes with the same name are unique, so test for ==
- assertTrue(MSG_TEST_FAILED + objToSave, objLoaded == objToSave);
- } catch (IOException e) {
- fail("IOException serializing " + objToSave + " : "
- + e.getMessage());
- } catch (ClassNotFoundException e) {
- fail("ClassNotFoundException reading Object type : "
- + e.getMessage());
- } catch (Error err) {
- System.out.println("Error when obj = " + objToSave);
- // err.printStackTrace();
- throw err;
- }
- }
- public void test_18_21_writeObject() {
- // Test for method void
- // java.io.ObjectOutputStream.writeObject(java.lang.Object)
- Object objToSave = null;
- Object objLoaded;
- try {
- // Even though instances of java.lang.Object are not Serializable,
- // instances of java.lang.Class are. So, the object
- // java.lang.Object.class
- // should be serializable
- objToSave = Class.forName("java.lang.Object");
- if (DEBUG)
- System.out.println("Obj = " + objToSave);
- objLoaded = dumpAndReload(objToSave);
- // Classes with the same name are unique, so test for ==
- assertTrue(MSG_TEST_FAILED + objToSave, objLoaded == objToSave);
- } catch (IOException e) {
- fail("IOException serializing " + objToSave + " : "
- + e.getMessage());
- } catch (ClassNotFoundException e) {
- fail("ClassNotFoundException reading Object type : "
- + e.getMessage());
- } catch (Error err) {
- System.out.println("Error when obj = " + objToSave);
- // err.printStackTrace();
- throw err;
- }
- }
- public void test_18_22_writeObject() {
- // Test for method void
- // java.io.ObjectOutputStream.writeObject(java.lang.Object)
- Object objToSave = null;
- Object objLoaded;
- try {
- java.net.URL url = new java.net.URL("http://localhost/a.txt");
- objToSave = url;
- if (DEBUG)
- System.out.println("Obj = " + objToSave);
- objLoaded = dumpAndReload(objToSave);
- assertTrue("URLs are not the same: " + url + "\t,\t" + objLoaded,
- url.equals(objLoaded));
- } catch (IOException e) {
- fail("IOException serializing " + objToSave + " : "
- + e.getMessage());
- } catch (ClassNotFoundException e) {
- fail("ClassNotFoundException reading Object type : "
- + e.getMessage());
- } catch (Error err) {
- System.out.println("Error when obj = " + objToSave);
- // err.printStackTrace();
- throw err;
- }
- }
- public void test_18_23_writeObject() {
- // Test for method void
- // java.io.ObjectOutputStream.writeObject(java.lang.Object)
- Object objToSave = null;
- Object objLoaded;
- try {
- JustReadObject justReadObject = new JustReadObject();
- objToSave = justReadObject;
- if (DEBUG)
- System.out.println("Obj = " + objToSave);
- objLoaded = dumpAndReload(objToSave);
- // Only calls readObject on the instance loaded if writeObject was
- // also defined
- assertTrue("Called readObject on an object without a writeObject",
- !((JustReadObject) objLoaded).calledReadObject);
- } catch (IOException e) {
- fail("IOException serializing " + objToSave + " : "
- + e.getMessage());
- } catch (ClassNotFoundException e) {
- fail("ClassNotFoundException reading Object type : "
- + e.getMessage());
- } catch (Error err) {
- System.out.println("Error when obj = " + objToSave);
- // err.printStackTrace();
- throw err;
- }
- }
- public void test_18_24_writeObject() {
- // Test for method void
- // java.io.ObjectOutputStream.writeObject(java.lang.Object)
- Object objToSave = null;
- Object objLoaded;
- try {
- JustWriteObject justWriteObject = new JustWriteObject();
- objToSave = justWriteObject;
- if (DEBUG)
- System.out.println("Obj = " + objToSave);
- objLoaded = dumpAndReload(objToSave);
- // Call writeObject on the instance even if it does not define
- // readObject
- assertTrue(MSG_TEST_FAILED + objToSave,
- justWriteObject.calledWriteObject);
- } catch (IOException e) {
- fail("IOException serializing " + objToSave + " : "
- + e.getMessage());
- } catch (ClassNotFoundException e) {
- fail("ClassNotFoundException reading Object type: "
- + e.getMessage());
- } catch (Error err) {
- System.out.println("Error when obj = " + objToSave);
- // err.printStackTrace();
- throw err;
- }
- }
- public void test_18_25_writeObject() {
- // Test for method void
- // java.io.ObjectOutputStream.writeObject(java.lang.Object)
- Object objToSave = null;
- Object objLoaded;
- try {
- Vector<String> vector = new Vector<String>(1);
- vector.add(FOO);
- objToSave = vector;
- if (DEBUG)
- System.out.println("Obj = " + objToSave);
- objLoaded = dumpAndReload(objToSave);
- // Has to have the string there
- assertTrue(MSG_TEST_FAILED + objToSave, FOO
- .equals(((java.util.Vector) objLoaded).elementAt(0)));
- } catch (IOException e) {
- fail("IOException serializing " + objToSave + " : "
- + e.getMessage());
- } catch (ClassNotFoundException e) {
- fail("ClassNotFoundException reading Object type : "
- + e.getMessage());
- } catch (Error err) {
- System.out.println("Error when obj = " + objToSave);
- throw err;
- }
- }
- public void test_18_26_writeObject() {
- // Test for method void
- // java.io.ObjectOutputStream.writeObject(java.lang.Object)
- Object objToSave = null;
- Object objLoaded;
- try {
- Hashtable<String, String> hashTable = new Hashtable<String, String>(
- 5);
- hashTable.put(FOO, FOO);
- objToSave = hashTable;
- if (DEBUG)
- System.out.println("Obj = " + objToSave);
- objLoaded = dumpAndReload(objToSave);
- java.util.Hashtable loadedHashTable = (java.util.Hashtable) objLoaded;
- // Has to have the key/value there (FOO -> FOO)
- assertTrue(MSG_TEST_FAILED + objToSave, FOO.equals(loadedHashTable
- .get(FOO)));
- } catch (IOException e) {
- fail("IOException serializing " + objToSave + " : "
- + e.getMessage());
- } catch (ClassNotFoundException e) {
- fail("ClassNotFoundException reading Object type : "
- + e.getMessage());
- } catch (Error err) {
- System.out.println("Error when obj = " + objToSave);
- throw err;
- }
- }
- public void test_18_27_writeObject() {
- // Test for method void
- // java.io.ObjectOutputStream.writeObject(java.lang.Object)
- Object objToSave = null;
- Object objLoaded;
- try {
- ClassBasedReplacementWhenDumping classBasedReplacementWhenDumping = new ClassBasedReplacementWhenDumping();
- objToSave = classBasedReplacementWhenDumping;
- if (DEBUG)
- System.out.println("Obj = " + objToSave);
- objLoaded = dumpAndReload(objToSave);
- // Has to have run the replacement method
- assertTrue("Did not run writeReplace",
- classBasedReplacementWhenDumping.calledReplacement);
- // Has to have loaded a String (replacement object)
- assertTrue("Did not replace properly", FOO.equals(objLoaded));
- } catch (IOException e) {
- fail("IOException serializing " + objToSave + " : "
- + e.getMessage());
- } catch (ClassNotFoundException e) {
- fail("ClassNotFoundException reading Object type : "
- + e.getMessage());
- } catch (Error err) {
- System.out.println("Error when obj = " + objToSave);
- // err.printStackTrace();
- throw err;
- }
- }
- public void test_18_28_writeObject() {
- // Test for method void
- // java.io.ObjectOutputStream.writeObject(java.lang.Object)
- Object objToSave = null;
- Object objLoaded;
- try {
- MultipleClassBasedReplacementWhenDumping multipleClassBasedReplacementWhenDumping = new MultipleClassBasedReplacementWhenDumping();
- objToSave = multipleClassBasedReplacementWhenDumping;
- if (DEBUG)
- System.out.println("Obj = " + objToSave);
- objLoaded = dumpAndReload(objToSave);
- // Has to have loaded a String (replacement object)
- assertTrue(
- "Executed multiple levels of replacement (see PR 1F9RNT1), loaded= "
- + objLoaded,
- objLoaded instanceof MultipleClassBasedReplacementWhenDumping.C1);
- } catch (IOException e) {
- fail("IOException serializing " + objToSave + " : "
- + e.getMessage());
- } catch (ClassNotFoundException e) {
- fail("ClassNotFoundException reading Object type : "
- + e.toString());
- } catch (Error err) {
- System.out.println("Error when obj = " + objToSave);
- // err.printStackTrace();
- throw err;
- }
- }
- public void test_18_29_writeObject() {
- // Test for method void
- // java.io.ObjectOutputStream.writeObject(java.lang.Object)
- Object objToSave = null;
- Object objLoaded;
- try {
- ClassBasedReplacementWhenLoading classBasedReplacementWhenLoading = new ClassBasedReplacementWhenLoading();
- objToSave = classBasedReplacementWhenLoading;
- if (DEBUG)
- System.out.println("Obj = " + objToSave);
- objLoaded = dumpAndReload(objToSave);
- // Has to have loaded a String (replacement object)
- assertTrue("Did not run readResolve", FOO.equals(objLoaded));
- } catch (IOException e) {
- fail("IOException serializing " + objToSave + " : "
- + e.getMessage());
- } catch (ClassNotFoundException e) {
- fail("ClassNotFoundException reading Object type : "
- + e.getMessage());
- } catch (Error err) {
- System.out.println("Error when obj = " + objToSave);
- // err.printStackTrace();
- throw err;
- }
- }
- public void test_18_30_writeObject() {
- // Test for method void
- // java.io.ObjectOutputStream.writeObject(java.lang.Object)
- Object objToSave = null;
- Object objLoaded;
- try {
- ClassBasedReplacementWhenLoadingViolatesFieldType classBasedReplacementWhenLoadingViolatesFieldType = new ClassBasedReplacementWhenLoadingViolatesFieldType();
- objToSave = classBasedReplacementWhenLoadingViolatesFieldType;
- if (DEBUG)
- System.out.println("Obj = " + objToSave);
- objLoaded = dumpAndReload(objToSave);
- // We cannot gere here, the load replacement must have caused a
- // field type violation
- fail(
- "Loading replacements can cause field type violation in this implementation");
- } catch (IOException e) {
- fail("IOException serializing " + objToSave + " : "
- + e.getMessage());
- } catch (ClassNotFoundException e) {
- fail("ClassNotFoundException reading Object type : "
- + e.getMessage());
- } catch (ClassCastException e) {
- assertTrue(
- "Loading replacements can NOT cause field type violation in this implementation",
- true);
- } catch (Error err) {
- System.out.println("Error when obj = " + objToSave);
- // err.printStackTrace();
- throw err;
- }
- }
- public void test_18_31_writeObject() {
- // Test for method void
- // java.io.ObjectOutputStream.writeObject(java.lang.Object)
- Object objToSave = null;
- Object objLoaded;
- try {
- MyExceptionWhenDumping1 exceptionWhenDumping = new MyExceptionWhenDumping1();
- objToSave = exceptionWhenDumping;
- if (DEBUG)
- System.out.println("Obj = " + objToSave);
- boolean causedException = false;
- try {
- dump(objToSave);
- } catch (MyExceptionWhenDumping1.MyException e) {
- causedException = true;
- }
- ;
- assertTrue("Should have caused an exception when dumping",
- causedException);
- causedException = false;
- try {
- objLoaded = reload();
- // Although the spec says we should get a WriteAbortedException,
- // the serialization format handle an Exception when reading
- // primitive data so we get ClassCastException instead
- } catch (ClassCastException e) {
- causedException = true;
- }
- ;
- assertTrue("Should have caused a ClassCastException when loading",
- causedException);
- } catch (IOException e) {
- fail("IOException serializing " + objToSave + " : "
- + e.getMessage());
- } catch (ClassNotFoundException e) {
- fail("ClassNotFoundException reading Object type : "
- + e.getMessage());
- } catch (Error err) {
- System.out.println("Error when obj = " + objToSave);
- // err.printStackTrace();
- throw err;
- }
- }
- public void test_18_32_writeObject() {
- // Test for method void
- // java.io.ObjectOutputStream.writeObject(java.lang.Object)
- Object objToSave = null;
- Object objLoaded;
- try {
- MyExceptionWhenDumping2 exceptionWhenDumping = new MyExceptionWhenDumping2();
- objToSave = exceptionWhenDumping;
- if (DEBUG)
- System.out.println("Obj = " + objToSave);
- boolean causedException = false;
- try {
- dump(objToSave);
- } catch (MyExceptionWhenDumping2.MyException e) {
- causedException = true;
- }
- ;
- assertTrue("Should have caused an exception when dumping",
- causedException);
- causedException = false;
- try {
- objLoaded = reload();
- } catch (java.io.WriteAbortedException e) {
- causedException = true;
- }
- ;
- assertTrue(
- "Should have caused a java.io.WriteAbortedException when loading",
- causedException);
- } catch (IOException e) {
- fail("IOException serializing " + objToSave + " : "
- + e.getMessage());
- } catch (ClassNotFoundException e) {
- fail("ClassNotFoundException reading Object type : "
- + e.getMessage());
- } catch (ClassCastException e) {
- fail("ClassCastException : " + e.getMessage());
- } catch (Error err) {
- System.out.println("Error when obj = " + objToSave);
- throw err;
- }
- }
- public void test_NonSerializableExceptionWhenDumping() {
- // Test for method void
- // java.io.ObjectOutputStream.writeObject(java.lang.Object)
- Object objToSave = null;
- Object objLoaded;
- try {
- NonSerializableExceptionWhenDumping nonSerializableExceptionWhenDumping = new NonSerializableExceptionWhenDumping();
- objToSave = nonSerializableExceptionWhenDumping;
- if (DEBUG)
- System.out.println("Obj = " + objToSave);
- boolean causedException = false;
- try {
- dump(objToSave);
- } catch (java.io.NotSerializableException e) {
- causedException = true;
- }
- ;
- assertTrue("Should have caused an exception when dumping",
- causedException);
- causedException = false;
- try {
- objLoaded = reload();
- } catch (java.io.WriteAbortedException e) {
- causedException = true;
- }
- ;
- assertTrue(
- "Should have caused a java.io.WriteAbortedException when loading",
- causedException);
- } catch (IOException e) {
- fail("IOException serializing " + objToSave + " : "
- + e.getMessage());
- } catch (ClassNotFoundException e) {
- fail("ClassNotFoundException reading Object type : "
- + e.getMessage());
- } catch (Error err) {
- System.out.println("Error when obj = " + objToSave);
- // err.printStackTrace();
- throw err;
- }
- }
- public void test_18_33_writeObject() {
- // Test for method void
- // java.io.ObjectOutputStream.writeObject(java.lang.Object)
- Object objToSave = null;
- Object objLoaded;
- try {
- MyUnserializableExceptionWhenDumping exceptionWhenDumping = new MyUnserializableExceptionWhenDumping();
- objToSave = exceptionWhenDumping;
- if (DEBUG)
- System.out.println("Obj = " + objToSave);
- boolean causedException = false;
- try {
- dump(objToSave);
- } catch (java.io.StreamCorruptedException e) {
- causedException = true;
- }
- ;
- assertTrue("Should have caused an exception when dumping",
- causedException);
- // As the stream is corrupted, reading the stream will have
- // undefined results
- } catch (IOException e) {
- fail("IOException serializing " + objToSave + " : "
- + e.getMessage());
- } catch (ClassNotFoundException e) {
- fail("ClassNotFoundException reading Object type : "
- + e.getMessage());
- } catch (Error err) {
- System.out.println("Error when obj = " + objToSave);
- // err.printStackTrace();
- throw err;
- }
- }
- public void test_18_34_writeObject() {
- // Test for method void
- // java.io.ObjectOutputStream.writeObject(java.lang.Object)
- Object objToSave = null;
- Object objLoaded;
- try {
- java.io.IOException ioe = new java.io.IOException();
- objToSave = ioe;
- if (DEBUG)
- System.out.println("Obj = " + objToSave);
- objLoaded = dumpAndReload(objToSave);
- // Has to be able to save/load an exception
- assertTrue(MSG_TEST_FAILED + objToSave, true);
- } catch (IOException e) {
- fail("IOException serializing " + objToSave + " : "
- + e.getMessage());
- } catch (ClassNotFoundException e) {
- fail("ClassNotFoundException reading Object type : "
- + e.getMessage());
- } catch (Error err) {
- System.out.println("Error when obj = " + objToSave);
- // err.printStackTrace();
- throw err;
- }
- }
- public void test_18_35_writeObject() {
- // Test for method void
- // java.io.ObjectOutputStream.writeObject(java.lang.Object)
- Object objToSave = null;
- Object objLoaded;
- try {
- objToSave = Class.forName("java.util.Hashtable");
- if (DEBUG)
- System.out.println("Obj = " + objToSave);
- objLoaded = dumpAndReload(objToSave);
- // Classes with the same name are unique, so test for ==
- assertTrue(MSG_TEST_FAILED + objToSave, objLoaded == objToSave);
- } catch (IOException e) {
- fail("IOException serializing " + objToSave + " : "
- + e.getMessage());
- } catch (ClassNotFoundException e) {
- fail("ClassNotFoundException reading Object type : "
- + e.getMessage());
- } catch (Error err) {
- System.out.println("Error when obj = " + objToSave);
- // err.printStackTrace();
- throw err;
- }
- }
- public void test_18_36_writeObject() {
- // Test for method void
- // java.io.ObjectOutputStream.writeObject(java.lang.Object)
- Object objToSave = null;
- Object objLoaded;
- try {
- java.io.IOException ex = new java.io.InvalidClassException(FOO);
- objToSave = ex;
- if (DEBUG)
- System.out.println("Obj = " + objToSave);
- objLoaded = dumpAndReload(objToSave);
- // Has to be able to save/load an exception
- assertTrue(MSG_TEST_FAILED + objToSave, true);
- } catch (IOException e) {
- fail("IOException serializing " + objToSave + " : "
- + e.getMessage());
- } catch (ClassNotFoundException e) {
- fail("ClassNotFoundException reading Object type : "
- + e.getMessage());
- } catch (Error err) {
- System.out.println("Error when obj = " + objToSave);
- // err.printStackTrace();
- throw err;
- }
- }
- public void test_18_37_writeObject() {
- // Test for method void
- // java.io.ObjectOutputStream.writeObject(java.lang.Object)
- Object objToSave = null;
- Object objLoaded;
- try {
- java.io.IOException ex = new java.io.InvalidObjectException(FOO);
- objToSave = ex;
- if (DEBUG)
- System.out.println("Obj = " + objToSave);
- objLoaded = dumpAndReload(objToSave);
- // Has to be able to save/load an exception
- assertTrue(MSG_TEST_FAILED + objToSave, true);
- } catch (IOException e) {
- fail("IOException serializing " + objToSave + " : "
- + e.getMessage());
- } catch (ClassNotFoundException e) {
- fail("ClassNotFoundException reading Object type : "
- + e.getMessage());
- } catch (Error err) {
- System.out.println("Error when obj = " + objToSave);
- // err.printStackTrace();
- throw err;
- }
- }
- public void test_18_38_writeObject() {
- // Test for method void
- // java.io.ObjectOutputStream.writeObject(java.lang.Object)
- Object objToSave = null;
- Object objLoaded;
- try {
- java.io.IOException ex = new java.io.NotActiveException(FOO);
- objToSave = ex;
- if (DEBUG)
- System.out.println("Obj = " + objToSave);
- objLoaded = dumpAndReload(objToSave);
- // Has to be able to save/load an exception
- assertTrue(MSG_TEST_FAILED + objToSave, true);
- } catch (IOException e) {
- fail("IOException serializing " + objToSave + " : "
- + e.getMessage());
- } catch (ClassNotFoundException e) {
- fail("ClassNotFoundException reading Object type : "
- + e.getMessage());
- } catch (Error err) {
- System.out.println("Error when obj = " + objToSave);
- // err.printStackTrace();
- throw err;
- }
- }
- public void test_18_39_writeObject() {
- // Test for method void
- // java.io.ObjectOutputStream.writeObject(java.lang.Object)
- Object objToSave = null;
- Object objLoaded;
- try {
- java.io.IOException ex = new java.io.NotSerializableException(FOO);
- objToSave = ex;
- if (DEBUG)
- System.out.println("Obj = " + objToSave);
- objLoaded = dumpAndReload(objToSave);
- // Has to be able to save/load an exception
- assertTrue(MSG_TEST_FAILED + objToSave, true);
- } catch (IOException e) {
- fail("IOException serializing " + objToSave + " : "
- + e.getMessage());
- } catch (ClassNotFoundException e) {
- fail("ClassNotFoundException reading Object type : "
- + e.getMessage());
- } catch (Error err) {
- System.out.println("Error when obj = " + objToSave);
- // err.printStackTrace();
- throw err;
- }
- }
- public void test_18_40_writeObject() {
- // Test for method void
- // java.io.ObjectOutputStream.writeObject(java.lang.Object)
- Object objToSave = null;
- Object objLoaded;
- try {
- java.io.IOException ex = new java.io.StreamCorruptedException(FOO);
- objToSave = ex;
- if (DEBUG)
- System.out.println("Obj = " + objToSave);
- objLoaded = dumpAndReload(objToSave);
- // Has to be able to save/load an exception
- assertTrue(MSG_TEST_FAILED + objToSave, true);
- } catch (IOException e) {
- fail("IOException serializing " + objToSave + " : "
- + e.getMessage());
- } catch (ClassNotFoundException e) {
- fail("ClassNotFoundException reading Object type : "
- + e.getMessage());
- } catch (Error err) {
- System.out.println("Error when obj = " + objToSave);
- // err.printStackTrace();
- throw err;
- }
- }
- }