/*- * 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.Ignore; 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 HashCompareTest { public static final String HASHCOMPARETEST_DBNAME = "hashcomparetest.db"; @BeforeClass public static void ClassInit() { TestUtils.loadConfig(null); TestUtils.check_file_removed(TestUtils.getDBFileName(HASHCOMPARETEST_DBNAME), true, true); TestUtils.removeall(true, true, TestUtils.BASETEST_DBDIR, TestUtils.getDBFileName(HASHCOMPARETEST_DBNAME)); } @AfterClass public static void ClassShutdown() { TestUtils.check_file_removed(TestUtils.getDBFileName(HASHCOMPARETEST_DBNAME), true, true); TestUtils.removeall(true, true, TestUtils.BASETEST_DBDIR, TestUtils.getDBFileName(HASHCOMPARETEST_DBNAME)); } @Before public void PerTestInit() throws Exception { TestUtils.check_file_removed(TestUtils.getDBFileName(HASHCOMPARETEST_DBNAME), true, true); java.io.File dbfile = new File(HASHCOMPARETEST_DBNAME); dbfile.delete(); } @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 { runTest(DatabaseType.HASH); } @Test public void test2() throws DatabaseException, FileNotFoundException { runTest(DatabaseType.BTREE); } public void runTest(DatabaseType type) throws DatabaseException, FileNotFoundException { int i; DatabaseConfig conf = new DatabaseConfig(); conf.setErrorStream(TestUtils.getErrorStream()); conf.setErrorPrefix("HashCompareTest"); conf.setType(type); if (type == DatabaseType.HASH) { conf.setHashComparator(new HashComparator()); } else conf.setBtreeComparator(new BtreeComparator()); conf.setAllowCreate(true); Database db = new Database(HASHCOMPARETEST_DBNAME, null, conf); DatabaseEntry key = new DatabaseEntry(); DatabaseEntry data = new DatabaseEntry("world".getBytes()); for (i = 0; i < 100; i++) { key.setData((new String("key"+i)).getBytes()); db.put(null, key, data); } i = 0; Cursor dbc; dbc = db.openCursor(null, CursorConfig.DEFAULT); while (dbc.getNext(key, data, LockMode.DEFAULT) == OperationStatus.SUCCESS) { ++i; } // System.out.println("retrieved " + i + " entries"); dbc.close(); db.close(); } } class HashComparator implements java.util.Comparator { public int compare(Object o1, Object o2) { // System.out.println("Comparing: " + o1 + ":"+o2); String s1, s2; s1 = new String((byte[])o1); s2 = new String((byte[])o2); return s1.compareToIgnoreCase(s2); } } class BtreeComparator implements java.util.Comparator { public int compare(Object o1, Object o2) { //System.out.println("Comparing: " + o1 + ":"+o2); String s1, s2; s1 = new String((byte[])o1); s2 = new String((byte[])o2); return s1.compareToIgnoreCase(s2); } }