1// Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. 2assert = require('assert') 3RDB = require('./build/Release/rdb').DBWrapper 4exec = require('child_process').exec 5util = require('util') 6 7DB_NAME = '/tmp/rocksdbtest-' + process.getuid() 8 9a = RDB() 10assert.equal(a.open(DB_NAME, ['b']), false) 11 12exec( 13 util.format( 14 "node -e \"RDB = require('./build/Release/rdb').DBWrapper; \ 15 a = RDB('%s'); a.createColumnFamily('b')\"", 16 DB_NAME 17 ).exitCode, null 18) 19 20 21exec( 22 util.format( 23 "node -e \"RDB = require('./build/Release/rdb').DBWrapper; \ 24 a = RDB('%s', ['b'])\"", 25 DB_NAME 26 ).exitCode, null 27) 28 29exec('rm -rf ' + DB_NAME) 30 31a = RDB() 32assert.equal(a.open(DB_NAME, ['a']), false) 33assert(a.open(DB_NAME), true) 34assert(a.createColumnFamily('temp')) 35 36b = RDB() 37assert.equal(b.open(DB_NAME), false) 38 39exec('rm -rf ' + DB_NAME) 40 41DB_NAME += 'b' 42 43a = RDB() 44assert(a.open(DB_NAME)) 45assert.equal(a.constructor.name, 'DBWrapper') 46assert.equal(a.createColumnFamily(), false) 47assert.equal(a.createColumnFamily(1), false) 48assert.equal(a.createColumnFamily(['']), false) 49assert(a.createColumnFamily('b')) 50assert.equal(a.createColumnFamily('b'), false) 51 52// Get and Put 53assert.equal(a.get(1), null) 54assert.equal(a.get(['a']), null) 55assert.equal(a.get('a', 1), null) 56assert.equal(a.get(1, 'a'), null) 57assert.equal(a.get(1, 1), null) 58 59assert.equal(a.put(1), false) 60assert.equal(a.put(['a']), false) 61assert.equal(a.put('a', 1), false) 62assert.equal(a.put(1, 'a'), false) 63assert.equal(a.put(1, 1), false) 64assert.equal(a.put('a', 'a', 1), false) 65assert.equal(a.put('a', 1, 'a'), false) 66assert.equal(a.put(1, 'a', 'a'), false) 67assert.equal(a.put('a', 1, 1), false) 68assert.equal(a.put(1, 'a', 1), false) 69assert.equal(a.put(1, 1, 'a'), false) 70assert.equal(a.put(1, 1, 1), false) 71 72 73assert.equal(a.get(), null) 74assert.equal(a.get('a'), null) 75assert.equal(a.get('a', 'c'), null) 76assert.equal(a.put(), false) 77assert.equal(a.put('a'), false) 78assert.equal(a.get('a', 'b', 'c'), null) 79 80assert(a.put('a', 'axe')) 81assert(a.put('a', 'first')) 82assert.equal(a.get('a'), 'first') 83assert.equal(a.get('a', 'b'), null) 84assert.equal(a.get('a', 'c'), null) 85 86assert(a.put('a', 'apple', 'b')) 87assert.equal(a.get('a', 'b'), 'apple') 88assert.equal(a.get('a'), 'first') 89assert(a.put('b', 'butter', 'b'), 'butter') 90assert(a.put('b', 'banana', 'b')) 91assert.equal(a.get('b', 'b'), 'banana') 92assert.equal(a.get('b'), null) 93assert.equal(a.get('b', 'c'), null) 94 95// Delete 96assert.equal(a.delete(1), false) 97assert.equal(a.delete('a', 1), false) 98assert.equal(a.delete(1, 'a'), false) 99assert.equal(a.delete(1, 1), false) 100 101assert.equal(a.delete('b'), true) 102assert(a.delete('a')) 103assert.equal(a.get('a'), null) 104assert.equal(a.get('a', 'b'), 'apple') 105assert.equal(a.delete('c', 'c'), false) 106assert.equal(a.delete('c', 'b'), true) 107assert(a.delete('b', 'b')) 108assert.equal(a.get('b', 'b'), null) 109 110// Dump 111console.log("MARKER 1") 112assert(a.dump()) 113console.log("Should be no output between 'MARKER 1' and here\n") 114console.log('Next line should be "a" => "apple"') 115assert(a.dump('b')) 116 117console.log("\nMARKER 2") 118assert.equal(a.dump('c'), false) 119console.log("Should be no output between 'MARKER 2' and here\n") 120 121// WriteBatch 122 123 124// Clean up test database 125exec('rm -rf ' + DB_NAME) 126