/*- * See the file LICENSE for redistribution information. * * Copyright (c) 2002, 2015 Oracle and/or its affiliates. All rights reserved. * */ package com.sleepycat.db.test; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; import com.sleepycat.db.*; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import com.sleepycat.db.test.TestUtils; public class ClosedDbTest { public static final String CLOSEDDBTEST_DBNAME = "closeddbtest.db"; @BeforeClass public static void ClassInit() { TestUtils.loadConfig(null); TestUtils.check_file_removed(TestUtils.getDBFileName(CLOSEDDBTEST_DBNAME), true, true); TestUtils.removeall(true, true, TestUtils.BASETEST_DBDIR, TestUtils.getDBFileName(CLOSEDDBTEST_DBNAME)); } @AfterClass public static void ClassShutdown() { TestUtils.check_file_removed(TestUtils.getDBFileName(CLOSEDDBTEST_DBNAME), true, true); TestUtils.removeall(true, true, TestUtils.BASETEST_DBDIR, TestUtils.getDBFileName(CLOSEDDBTEST_DBNAME)); } @Before public void PerTestInit() throws Exception { } @After public void PerTestShutdown() throws Exception { } /* * Test case implementations. * To disable a test mark it with @Ignore * To set a timeout(ms) notate like: @Test(timeout=1000) * To indicate an expected exception notate like: (expected=Exception) */ @Test public void test1() throws DatabaseException, FileNotFoundException { DatabaseConfig dbConf = new DatabaseConfig(); dbConf.setType(DatabaseType.BTREE); dbConf.setAllowCreate(true); Database db = new Database(TestUtils.getDBFileName(CLOSEDDBTEST_DBNAME), null, dbConf); DatabaseEntry key = new DatabaseEntry("key".getBytes()); DatabaseEntry data = new DatabaseEntry("data".getBytes()); db.putNoOverwrite(null, key, data); // Now, retrieve. It would be possible to reuse the // same key object, but that would be a-typical. DatabaseEntry getkey = new DatabaseEntry("key".getBytes()); DatabaseEntry badgetkey = new DatabaseEntry("badkey".getBytes()); DatabaseEntry getdata = new DatabaseEntry(); getdata.setReuseBuffer(false); // TODO: is this enabling DB_DBT_MALLOC? int ret; // close the db - subsequent operations should fail by throwing // an exception. db.close(); try { db.get(null, getkey, getdata, LockMode.DEFAULT); fail("Database get on a closed Db should not have completed."); } catch (IllegalArgumentException e) { TestUtils.DEBUGOUT(1, "Got expected exception from db.get on closed database."); } } }