mirror of https://github.com/status-im/nim-eth.git
parent
eb785207ae
commit
41b8588ade
|
@ -22,12 +22,6 @@ Ethereum-related utilities written in Nim. Includes things like Bloom filters, p
|
||||||
## Prerequisites
|
## Prerequisites
|
||||||
|
|
||||||
- Nim & Nimble
|
- Nim & Nimble
|
||||||
- RocksDB, SQLite, LMDB (required for the trie backend tests)
|
|
||||||
|
|
||||||
E.g. on Ubuntu one can run:
|
|
||||||
```
|
|
||||||
apt install -y librocksdb-dev liblmdb-dev sqlite3
|
|
||||||
```
|
|
||||||
|
|
||||||
## Building & Testing
|
## Building & Testing
|
||||||
```
|
```
|
||||||
|
|
|
@ -8,7 +8,6 @@ requires "nim >= 1.2.0",
|
||||||
"nimcrypto",
|
"nimcrypto",
|
||||||
"stint",
|
"stint",
|
||||||
"secp256k1",
|
"secp256k1",
|
||||||
"rocksdb",
|
|
||||||
"chronos",
|
"chronos",
|
||||||
"chronicles",
|
"chronicles",
|
||||||
"stew",
|
"stew",
|
||||||
|
|
|
@ -1,52 +0,0 @@
|
||||||
{.push raises: [Defect].}
|
|
||||||
|
|
||||||
import
|
|
||||||
std/os,
|
|
||||||
rocksdb, stew/results,
|
|
||||||
./kvstore
|
|
||||||
|
|
||||||
export results
|
|
||||||
|
|
||||||
const maxOpenFiles = 512
|
|
||||||
|
|
||||||
type
|
|
||||||
RocksStoreRef* = ref object of RootObj
|
|
||||||
store: RocksDBInstance
|
|
||||||
|
|
||||||
proc get*(db: RocksStoreRef, key: openArray[byte], onData: kvstore.DataProc): KvResult[bool] =
|
|
||||||
db.store.get(key, onData)
|
|
||||||
|
|
||||||
proc find*(db: RocksStoreRef, prefix: openArray[byte], onFind: kvstore.KeyValueProc): KvResult[int] =
|
|
||||||
raiseAssert "Unimplemented"
|
|
||||||
|
|
||||||
proc put*(db: RocksStoreRef, key, value: openArray[byte]): KvResult[void] =
|
|
||||||
db.store.put(key, value)
|
|
||||||
|
|
||||||
proc contains*(db: RocksStoreRef, key: openArray[byte]): KvResult[bool] =
|
|
||||||
db.store.contains(key)
|
|
||||||
|
|
||||||
proc del*(db: RocksStoreRef, key: openArray[byte]): KvResult[void] =
|
|
||||||
db.store.del(key)
|
|
||||||
|
|
||||||
proc close*(db: RocksStoreRef) =
|
|
||||||
db.store.close
|
|
||||||
|
|
||||||
proc init*(
|
|
||||||
T: type RocksStoreRef, basePath: string, name: string,
|
|
||||||
readOnly = false): KvResult[T] =
|
|
||||||
let
|
|
||||||
dataDir = basePath / name / "data"
|
|
||||||
backupsDir = basePath / name / "backups"
|
|
||||||
|
|
||||||
try:
|
|
||||||
createDir(dataDir)
|
|
||||||
createDir(backupsDir)
|
|
||||||
except OSError, IOError:
|
|
||||||
return err("rocksdb: cannot create database directory")
|
|
||||||
|
|
||||||
var store: RocksDBInstance
|
|
||||||
if (let v = store.init(
|
|
||||||
dataDir, backupsDir, readOnly, maxOpenFiles = maxOpenFiles); v.isErr):
|
|
||||||
return err(v.error)
|
|
||||||
|
|
||||||
ok(T(store: store))
|
|
|
@ -1,4 +1,3 @@
|
||||||
import
|
import
|
||||||
./test_kvstore_rocksdb,
|
|
||||||
./test_kvstore_sqlite3,
|
./test_kvstore_sqlite3,
|
||||||
./test_kvstore
|
./test_kvstore
|
||||||
|
|
|
@ -1,18 +0,0 @@
|
||||||
{.used.}
|
|
||||||
|
|
||||||
import
|
|
||||||
std/os,
|
|
||||||
unittest2,
|
|
||||||
chronicles,
|
|
||||||
../../eth/db/[kvstore, kvstore_rocksdb],
|
|
||||||
./test_kvstore
|
|
||||||
|
|
||||||
suite "RocksStoreRef":
|
|
||||||
test "KvStore interface":
|
|
||||||
let tmp = getTempDir() / "nimbus-test-db"
|
|
||||||
removeDir(tmp)
|
|
||||||
|
|
||||||
let db = RocksStoreRef.init(tmp, "test")[]
|
|
||||||
defer: db.close()
|
|
||||||
|
|
||||||
testKvStore(kvStore db, false)
|
|
Loading…
Reference in New Issue