1 // Copyright (c) 2011-present, Facebook, Inc. All rights reserved. 2 // This source code is licensed under both the GPLv2 (found in the 3 // COPYING file in the root directory) and Apache 2.0 License 4 // (found in the LICENSE.Apache file in the root directory). 5 6 package org.rocksdb; 7 8 import org.junit.Rule; 9 import org.junit.Test; 10 import org.junit.rules.TemporaryFolder; 11 12 import java.util.ArrayList; 13 import java.util.Arrays; 14 import java.util.List; 15 16 import static org.assertj.core.api.Assertions.assertThat; 17 18 public class OptimisticTransactionDBTest { 19 20 @Rule 21 public TemporaryFolder dbFolder = new TemporaryFolder(); 22 23 @Test open()24 public void open() throws RocksDBException { 25 try (final Options options = new Options().setCreateIfMissing(true); 26 final OptimisticTransactionDB otdb = OptimisticTransactionDB.open(options, 27 dbFolder.getRoot().getAbsolutePath())) { 28 assertThat(otdb).isNotNull(); 29 } 30 } 31 32 @Test open_columnFamilies()33 public void open_columnFamilies() throws RocksDBException { 34 try(final DBOptions dbOptions = new DBOptions().setCreateIfMissing(true) 35 .setCreateMissingColumnFamilies(true); 36 final ColumnFamilyOptions myCfOpts = new ColumnFamilyOptions()) { 37 38 final List<ColumnFamilyDescriptor> columnFamilyDescriptors = 39 Arrays.asList( 40 new ColumnFamilyDescriptor(RocksDB.DEFAULT_COLUMN_FAMILY), 41 new ColumnFamilyDescriptor("myCf".getBytes(), myCfOpts)); 42 43 final List<ColumnFamilyHandle> columnFamilyHandles = new ArrayList<>(); 44 45 try (final OptimisticTransactionDB otdb = OptimisticTransactionDB.open(dbOptions, 46 dbFolder.getRoot().getAbsolutePath(), 47 columnFamilyDescriptors, columnFamilyHandles)) { 48 try { 49 assertThat(otdb).isNotNull(); 50 } finally { 51 for (final ColumnFamilyHandle handle : columnFamilyHandles) { 52 handle.close(); 53 } 54 } 55 } 56 } 57 } 58 59 @Test beginTransaction()60 public void beginTransaction() throws RocksDBException { 61 try (final Options options = new Options().setCreateIfMissing(true); 62 final OptimisticTransactionDB otdb = OptimisticTransactionDB.open( 63 options, dbFolder.getRoot().getAbsolutePath()); 64 final WriteOptions writeOptions = new WriteOptions()) { 65 66 try(final Transaction txn = otdb.beginTransaction(writeOptions)) { 67 assertThat(txn).isNotNull(); 68 } 69 } 70 } 71 72 @Test beginTransaction_transactionOptions()73 public void beginTransaction_transactionOptions() throws RocksDBException { 74 try (final Options options = new Options().setCreateIfMissing(true); 75 final OptimisticTransactionDB otdb = OptimisticTransactionDB.open( 76 options, dbFolder.getRoot().getAbsolutePath()); 77 final WriteOptions writeOptions = new WriteOptions(); 78 final OptimisticTransactionOptions optimisticTxnOptions = 79 new OptimisticTransactionOptions()) { 80 81 try(final Transaction txn = otdb.beginTransaction(writeOptions, 82 optimisticTxnOptions)) { 83 assertThat(txn).isNotNull(); 84 } 85 } 86 } 87 88 @Test beginTransaction_withOld()89 public void beginTransaction_withOld() throws RocksDBException { 90 try (final Options options = new Options().setCreateIfMissing(true); 91 final OptimisticTransactionDB otdb = OptimisticTransactionDB.open( 92 options, dbFolder.getRoot().getAbsolutePath()); 93 final WriteOptions writeOptions = new WriteOptions()) { 94 95 try(final Transaction txn = otdb.beginTransaction(writeOptions)) { 96 final Transaction txnReused = otdb.beginTransaction(writeOptions, txn); 97 assertThat(txnReused).isSameAs(txn); 98 } 99 } 100 } 101 102 @Test beginTransaction_withOld_transactionOptions()103 public void beginTransaction_withOld_transactionOptions() 104 throws RocksDBException { 105 try (final Options options = new Options().setCreateIfMissing(true); 106 final OptimisticTransactionDB otdb = OptimisticTransactionDB.open( 107 options, dbFolder.getRoot().getAbsolutePath()); 108 final WriteOptions writeOptions = new WriteOptions(); 109 final OptimisticTransactionOptions optimisticTxnOptions = 110 new OptimisticTransactionOptions()) { 111 112 try(final Transaction txn = otdb.beginTransaction(writeOptions)) { 113 final Transaction txnReused = otdb.beginTransaction(writeOptions, 114 optimisticTxnOptions, txn); 115 assertThat(txnReused).isSameAs(txn); 116 } 117 } 118 } 119 120 @Test baseDB()121 public void baseDB() throws RocksDBException { 122 try (final Options options = new Options().setCreateIfMissing(true); 123 final OptimisticTransactionDB otdb = OptimisticTransactionDB.open(options, 124 dbFolder.getRoot().getAbsolutePath())) { 125 assertThat(otdb).isNotNull(); 126 final RocksDB db = otdb.getBaseDB(); 127 assertThat(db).isNotNull(); 128 assertThat(db.isOwningHandle()).isFalse(); 129 } 130 } 131 } 132