6908541: Bad resource management in java/math/BigInteger/BigIntegerTest.java

Reviewed-by: alanb
This commit is contained in:
Joe Darcy 2009-12-22 21:48:19 -08:00
parent 4797193455
commit b4b4646850
2 changed files with 53 additions and 23 deletions

View File

@ -499,10 +499,6 @@ javax/management/monitor/AttributeArbitraryDataTypeTest.java generic-all
# Problems with rounding add failures on solaris-sparcv9 and -server
java/math/BigDecimal/AddTests.java solaris-sparcv9
# Problems on windows with samevm, missing inputstream close()?
# Also times out on solaris-sparcv9 -server
java/math/BigInteger/BigIntegerTest.java generic-all
# Should be samevm? But seems problematic with samevm on windows
java/math/BigInteger/ModPow65537.java generic-all

View File

@ -642,37 +642,71 @@ public class BigIntegerTest {
for(int i = 0; i < bitPatterns.length; i++) {
BigInteger b1 = new BigInteger(bitPatterns[i], 16);
BigInteger b2 = null;
File f = new File("serialtest");
FileOutputStream fos = new FileOutputStream(f);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(b1);
oos.flush();
oos.close();
FileInputStream fis = new FileInputStream(f);
ObjectInputStream ois = new ObjectInputStream(fis);
BigInteger b2 = (BigInteger)ois.readObject();
try {
ObjectOutputStream oos = new ObjectOutputStream(fos);
try {
oos.writeObject(b1);
oos.flush();
} finally {
oos.close();
}
if (!b1.equals(b2) ||
!b1.equals(b1.or(b2))) {
failCount++;
System.err.println("Serialized failed for hex " +
b1.toString(16));
FileInputStream fis = new FileInputStream(f);
try {
ObjectInputStream ois = new ObjectInputStream(fis);
try {
b2 = (BigInteger)ois.readObject();
} finally {
ois.close();
}
} finally {
fis.close();
}
if (!b1.equals(b2) ||
!b1.equals(b1.or(b2))) {
failCount++;
System.err.println("Serialized failed for hex " +
b1.toString(16));
}
} finally {
fos.close();
}
f.delete();
}
for(int i=0; i<10; i++) {
BigInteger b1 = fetchNumber(rnd.nextInt(100));
BigInteger b2 = null;
File f = new File("serialtest");
FileOutputStream fos = new FileOutputStream(f);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(b1);
oos.flush();
oos.close();
FileInputStream fis = new FileInputStream(f);
ObjectInputStream ois = new ObjectInputStream(fis);
BigInteger b2 = (BigInteger)ois.readObject();
try {
ObjectOutputStream oos = new ObjectOutputStream(fos);
try {
oos.writeObject(b1);
oos.flush();
} finally {
oos.close();
}
FileInputStream fis = new FileInputStream(f);
try {
ObjectInputStream ois = new ObjectInputStream(fis);
try {
b2 = (BigInteger)ois.readObject();
} finally {
ois.close();
}
} finally {
fis.close();
}
} finally {
fos.close();
}
if (!b1.equals(b2) ||
!b1.equals(b1.or(b2)))