/*- * See the file LICENSE for redistribution information. * * Copyright (c) 2002, 2015 Oracle and/or its affiliates. All rights reserved. * * $Id: TestEnv.java,v 0f73af5ae3da 2010/05/10 05:38:40 alexander $ */ package com.sleepycat.collections.test; import java.io.File; import java.io.IOException; import com.sleepycat.compat.DbCompat; import com.sleepycat.db.DatabaseException; import com.sleepycat.db.Environment; import com.sleepycat.db.EnvironmentConfig; import com.sleepycat.util.test.SharedTestUtils; /** * @author Mark Hayes */ public class TestEnv { public static final TestEnv BDB; public static final TestEnv CDB; public static final TestEnv TXN; static { EnvironmentConfig config; config = newEnvConfig(); BDB = new TestEnv("bdb", config); if (DbCompat.CDB) { config = newEnvConfig(); DbCompat.setInitializeCDB(config, true); CDB = new TestEnv("cdb", config); } else { CDB = null; } config = newEnvConfig(); config.setTransactional(true); DbCompat.setInitializeLocking(config, true); TXN = new TestEnv("txn", config); } private static EnvironmentConfig newEnvConfig() { EnvironmentConfig config = new EnvironmentConfig(); if (DbCompat.MEMORY_SUBSYSTEM) { DbCompat.setInitializeCache(config, true); } return config; } public static final TestEnv[] ALL; static { if (DbCompat.CDB) { ALL = new TestEnv[] { BDB, CDB, TXN }; } else { ALL = new TestEnv[] { BDB, TXN }; } } private String name; private EnvironmentConfig config; TestEnv(String name, EnvironmentConfig config) { this.name = name; this.config = config; } public String getName() { return name; } public boolean isTxnMode() { return config.getTransactional(); } public boolean isCdbMode() { return DbCompat.getInitializeCDB(config); } public Environment open(String testName) throws IOException, DatabaseException { return open(testName, true); } public Environment open(String testName, boolean create) throws IOException, DatabaseException { config.setAllowCreate(create); /* OLDEST deadlock detection on DB matches the use of timeouts on JE.*/ DbCompat.setLockDetectModeOldest(config); File dir = getDirectory(testName, create); return newEnvironment(dir, config); } /** * Is overridden in XACollectionTest. */ protected Environment newEnvironment(File dir, EnvironmentConfig config) throws DatabaseException, IOException { return new Environment(dir, config); } public File getDirectory(String testName) throws IOException { return getDirectory(testName, true); } public File getDirectory(String testName, boolean create) throws IOException { if (create) { return SharedTestUtils.getNewDir("db-test/" + testName); } else { return SharedTestUtils.getExistingDir("db-test/" + testName); } } }