aboutsummaryrefslogtreecommitdiff
path: root/java/berkeley-db
diff options
context:
space:
mode:
authorMikhail Teterin <mi@FreeBSD.org>2006-11-23 06:21:16 +0000
committerMikhail Teterin <mi@FreeBSD.org>2006-11-23 06:21:16 +0000
commit91a9c66859d1fb2063363bf8b8df301db4888324 (patch)
tree178be14403b2750e5f27934a50f4da85470a00ae /java/berkeley-db
parent8f2185f9464c5ef61d3e218b10a1aa38fafb5833 (diff)
downloadports-91a9c66859d1fb2063363bf8b8df301db4888324.tar.gz
ports-91a9c66859d1fb2063363bf8b8df301db4888324.zip
Notes
Diffstat (limited to 'java/berkeley-db')
-rw-r--r--java/berkeley-db/Makefile5
-rw-r--r--java/berkeley-db/files/patch-test-failure136
2 files changed, 137 insertions, 4 deletions
diff --git a/java/berkeley-db/Makefile b/java/berkeley-db/Makefile
index 075e3df01bf4..a59a70229af9 100644
--- a/java/berkeley-db/Makefile
+++ b/java/berkeley-db/Makefile
@@ -19,8 +19,6 @@ OPTIONS= TEST "Run the self-tests after building automatically" on
BUILD_DEPENDS= ${JAVALIBDIR}/junit.jar:${PORTSDIR}/java/junit
-BROKEN= Self-tests fail
-
USE_JAVA= yes
JAVA_VERSION= 1.5+
USE_ANT= yes
@@ -52,7 +50,8 @@ test:
post-build: test
#
# Please, review the reported failures (if any) and consider
- # reporting them to the developers at support@sleepycat.com
+ # reporting them to the developers via:
+ # http://forums.oracle.com/forums/forum.jspa?forumID=273
# You can re-run the tests without rebuilding the port by
# simply doing `make test'
#
diff --git a/java/berkeley-db/files/patch-test-failure b/java/berkeley-db/files/patch-test-failure
index 468c02c1edd7..b700a7edef5d 100644
--- a/java/berkeley-db/files/patch-test-failure
+++ b/java/berkeley-db/files/patch-test-failure
@@ -1,8 +1,8 @@
This are temporary work-arounds for spurious test failures. See the discussions at
http://forums.oracle.com/forums/thread.jspa?threadID=431242
-and
http://forums.oracle.com/forums/thread.jspa?threadID=431549
+ http://forums.oracle.com/forums/thread.jspa?threadID=446837
The last one appears somewhat scary, but SleepyCat/Oracle's support assures me, the problem
can be ignored as it has to do with the test framework and not the software itself.
@@ -34,3 +34,137 @@ can be ignored as it has to do with the test framework and not the software itse
+ public void meowCleaning2000()
throws Throwable {
+Index: test/com/sleepycat/je/cleaner/ReadOnlyLockingTest.java
+===================================================================
+diff -c -r1.7 ReadOnlyLockingTest.java
+*** test/com/sleepycat/je/cleaner/ReadOnlyLockingTest.java 12 Sep 2006 19:17:14 -0000 1.7
+--- test/com/sleepycat/je/cleaner/ReadOnlyLockingTest.java 23 Nov 2006 00:07:40 -0000
+***************
+*** 36,41 ****
+--- 35,41 ----
+ public class ReadOnlyLockingTest extends TestCase {
+
+ private static final int FILE_SIZE = 4096;
++ private static final int READER_STARTUP_SECS = 30;
+
+ private static final CheckpointConfig forceConfig = new CheckpointConfig();
+ static {
+***************
+*** 48,53 ****
+--- 48,72 ----
+ private Database db;
+ private Process readerProcess;
+
++ private static File getProcessFile() {
++ return new File(System.getProperty(TestUtils.DEST_DIR),
++ "ReadOnlyProcessFile");
++ }
++
++ private static void deleteProcessFile() {
++ File file = getProcessFile();
++ file.delete();
++ TestCase.assertTrue(!file.exists());
++ }
++
++ static void createProcessFile()
++ throws IOException {
++
++ File file = getProcessFile();
++ TestCase.assertTrue(file.createNewFile());
++ TestCase.assertTrue(file.exists());
++ }
++
+ public ReadOnlyLockingTest() {
+ envHome = new File(System.getProperty(TestUtils.DEST_DIR));
+ }
+***************
+*** 55,60 ****
+--- 74,81 ----
+ public void setUp()
+ throws IOException, DatabaseException {
+
++ deleteProcessFile();
++
+ TestUtils.removeLogFiles("Setup", envHome, false);
+ TestUtils.removeFiles("Setup", envHome, FileManager.DEL_SUFFIX);
+ }
+***************
+*** 62,67 ****
+--- 83,90 ----
+ public void tearDown()
+ throws IOException, DatabaseException {
+
++ deleteProcessFile();
++
+ try {
+ stopReaderProcess();
+ } catch (Throwable e) {
+***************
+*** 219,228 ****
+ ReadOnlyProcess.class.getName(),
+ };
+
+! /* Start it and give it a chance to open the environment. */
+ readerProcess = Runtime.getRuntime().exec(cmd);
+! Thread.sleep(2000);
+ //printReaderStatus();
+ }
+
+ private void stopReaderProcess()
+--- 242,264 ----
+ ReadOnlyProcess.class.getName(),
+ };
+
+! /* Start it and wait for it to open the environment. */
+ readerProcess = Runtime.getRuntime().exec(cmd);
+! long startTime = System.currentTimeMillis();
+! boolean running = false;
+! while (!running &&
+! ((System.currentTimeMillis() - startTime) <
+! (READER_STARTUP_SECS * 1000))) {
+! if (getProcessFile().exists()) {
+! running = true;
+! } else {
+! Thread.sleep(10);
+! }
+! }
+ //printReaderStatus();
++ assertTrue("ReadOnlyProcess did not start after " +
++ READER_STARTUP_SECS + " + secs",
++ running);
+ }
+
+ private void stopReaderProcess()
+Index: test/com/sleepycat/je/cleaner/ReadOnlyProcess.java
+===================================================================
+*** test/com/sleepycat/je/cleaner/ReadOnlyProcess.java 12 Sep 2006 19:17:14 -0000 1.5
+--- test/com/sleepycat/je/cleaner/ReadOnlyProcess.java 23 Nov 2006 00:07:40 -0000
+***************
+*** 16,22 ****
+ import com.sleepycat.je.util.TestUtils;
+
+ /**
+! * @see ReadOnlyLockerTest
+ */
+ public class ReadOnlyProcess {
+
+--- 15,21 ----
+ import com.sleepycat.je.util.TestUtils;
+
+ /**
+! * @see ReadOnlyLockingTest
+ */
+ public class ReadOnlyProcess {
+
+***************
+*** 36,41 ****
+--- 35,43 ----
+
+ //System.err.println("Opened read-only: " + envHome);
+ //System.err.println(System.getProperty("java.class.path"));
++
++ /* Notify the test that this process has opened the environment. */
++ ReadOnlyLockingTest.createProcessFile();
+
+ /* Sleep until the parent process kills me. */
+ Thread.sleep(Long.MAX_VALUE);