Package com.sleepycat.je.recovery

Source Code of com.sleepycat.je.recovery.MultiEnvTest

/*-
* See the file LICENSE for redistribution information.
*
* Copyright (c) 2004-2005
*      Sleepycat Software.  All rights reserved.
*
* $Id: MultiEnvTest.java,v 1.5 2005/01/28 17:43:06 mark Exp $
*/

package com.sleepycat.je.recovery;

import java.io.File;
import java.io.IOException;

import junit.framework.TestCase;

import com.sleepycat.je.DatabaseException;
import com.sleepycat.je.Environment;
import com.sleepycat.je.EnvironmentConfig;
import com.sleepycat.je.tree.Node;
import com.sleepycat.je.util.TestUtils;

public class MultiEnvTest extends TestCase {

    private static final boolean DEBUG = false;

    private File envHome1;
    private File envHome2;
    private Environment env1;
    private Environment env2;

    public MultiEnvTest() {
        envHome1 = new File(System.getProperty(TestUtils.DEST_DIR));
        envHome2 = new File(System.getProperty(TestUtils.DEST_DIR),
                            "propTest");
    }

    public void setUp()
        throws IOException {

        TestUtils.removeLogFiles("Setup", envHome1, false);
        TestUtils.removeLogFiles("Setup", envHome2, false);
    }
   
    public void tearDown()
        throws Exception {

  TestUtils.removeLogFiles("TearDown", envHome1, false);
  TestUtils.removeLogFiles("TearDown", envHome2, false);
    }

    public void testNodeIdsAfterRecovery()
        throws Throwable {
        try {
            /*
             * Env1 will be closed w/a certain notion of what the max node id
             * is.
             */
            env1 = openEnv(envHome1);
            long maxNodeId1 = Node.getLastId();
            env1.close();

            /*
             * Env2 increments the node id further.
             */
            env2 = openEnv(envHome2);
            long maxNodeId2 = Node.getLastId();

            /* See what the highest node id is. */
            assertTrue(maxNodeId2 > maxNodeId1);

            /*
             * Open env1 now. Even though this recovery finds a lower node id,
             * must be sure not to overwrite the higher node id.
             */
            env1 = openEnv(envHome1);
            long maxNodeId3 = Node.getLastId();
            assertTrue(maxNodeId3 >= maxNodeId2);
        } catch (Throwable t) {
            /* Dump stack trace before trying to tear down. */
            t.printStackTrace();
            throw t;
        }
    }

    private Environment openEnv(File envHome)
        throws DatabaseException {

        /* Create an environment. */
        EnvironmentConfig envConfig = TestUtils.initEnvConfig();
        envConfig.setAllowCreate(true);
        Environment e = new Environment(envHome, envConfig);
        return e;
    }
}
TOP

Related Classes of com.sleepycat.je.recovery.MultiEnvTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.