move rocksdb support to eth1 (#927)
* move rocksdb support to eth1 only used here / causes unnecessary build deps
This commit is contained in:
parent
8d208acaf9
commit
1d6a9951d6
|
@ -284,7 +284,12 @@ jobs:
|
|||
env CC=gcc make ${DEFAULT_MAKE_FLAGS}
|
||||
build/nimbus --help
|
||||
# CC, GOARCH, and CGO_ENABLED are needed to select correct compiler 32/64 bit
|
||||
if [[ '${{ matrix.target.cpu }}' == 'i386' ]]; then
|
||||
# hide CI failures
|
||||
env CC=gcc GOARCH=${GOARCH} CXX=g++ CGO_ENABLED=1 make ${DEFAULT_MAKE_FLAGS} test || true
|
||||
else
|
||||
env CC=gcc GOARCH=${GOARCH} CXX=g++ CGO_ENABLED=1 make ${DEFAULT_MAKE_FLAGS} test
|
||||
fi
|
||||
|
||||
- name: Run nimbus-eth1 tests (Macos)
|
||||
if: runner.os == 'Macos'
|
||||
|
|
|
@ -27,9 +27,7 @@ nimcache
|
|||
/debug*.json
|
||||
/block*.json
|
||||
/.update.timestamp
|
||||
|
||||
*.generated.nim
|
||||
|
||||
/dist
|
||||
|
||||
# Nimble user files
|
||||
|
|
3
Makefile
3
Makefile
|
@ -132,6 +132,7 @@ libbacktrace:
|
|||
|
||||
# builds and runs the nimbus test suite
|
||||
test: | build deps
|
||||
$(ENV_SCRIPT) nim test_rocksdb $(NIM_PARAMS) nimbus.nims
|
||||
$(ENV_SCRIPT) nim test $(NIM_PARAMS) nimbus.nims
|
||||
|
||||
# Primitive reproducibility test.
|
||||
|
@ -186,7 +187,7 @@ fluffy-test-portal-testnet: | build deps
|
|||
|
||||
# usual cleaning
|
||||
clean: | clean-common
|
||||
rm -rf build/{nimbus,fluffy,$(TOOLS_CSV),all_tests,test_rpc,all_fluffy_tests,portalcli,*.dSYM}
|
||||
rm -rf build/{nimbus,fluffy,$(TOOLS_CSV),all_tests,db/test_kvstore_rocksdb,test_rpc,all_fluffy_tests,portalcli,*.dSYM}
|
||||
ifneq ($(USE_LIBBACKTRACE), 0)
|
||||
+ $(MAKE) -C vendor/nim-libbacktrace clean $(HANDLE_OUTPUT)
|
||||
endif
|
||||
|
|
|
@ -18,7 +18,8 @@ requires "nim >= 1.2.0",
|
|||
"libbacktrace",
|
||||
"nimcrypto",
|
||||
"stew",
|
||||
"stint"
|
||||
"stint",
|
||||
"rocksdb"
|
||||
|
||||
binDir = "build"
|
||||
|
||||
|
@ -57,6 +58,9 @@ proc test(path: string, name: string, params = "", lang = "c") =
|
|||
task test, "Run tests":
|
||||
test "tests", "all_tests", "-d:chronicles_log_level=ERROR -d:unittest2DisableParamFiltering"
|
||||
|
||||
task test_rocksdb, "Run rocksdb tests":
|
||||
test "tests/db", "test_kvstore_rocksdb", "-d:chronicles_log_level=ERROR -d:unittest2DisableParamFiltering"
|
||||
|
||||
task fluffy, "Build fluffy":
|
||||
buildBinary "fluffy", "fluffy/", "-d:chronicles_log_level=TRACE -d:chronosStrictException"
|
||||
|
||||
|
|
|
@ -0,0 +1,52 @@
|
|||
{.push raises: [Defect].}
|
||||
|
||||
import
|
||||
std/os,
|
||||
rocksdb, stew/results,
|
||||
eth/db/kvstore
|
||||
|
||||
export results, kvstore
|
||||
|
||||
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))
|
|
@ -43,7 +43,7 @@ when dbBackend == sqlite:
|
|||
let db = SqStoreRef.init(path, "nimbus").expect("working database")
|
||||
ChainDB(kv: kvStore db.openKvStore().expect("working database"))
|
||||
elif dbBackend == rocksdb:
|
||||
import eth/db/kvstore_rocksdb as database_backend
|
||||
import ./kvstore_rocksdb as database_backend
|
||||
proc newChainDB*(path: string): ChainDB =
|
||||
ChainDB(kv: kvStore RocksStoreRef.init(path, "nimbus").tryGet())
|
||||
elif dbBackend == lmdb:
|
||||
|
|
|
@ -45,4 +45,3 @@ cliBuilder:
|
|||
./test_keyed_queue_rlp,
|
||||
./test_txpool,
|
||||
./test_merge
|
||||
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
{.used.}
|
||||
|
||||
import
|
||||
std/os,
|
||||
unittest2,
|
||||
chronicles,
|
||||
eth/db/kvstore,
|
||||
../../nimbus/db/kvstore_rocksdb,
|
||||
eth/../tests/db/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)
|
|
@ -1 +1 @@
|
|||
Subproject commit c28597fee5511f992ba0738f5993f5c79aa7ccc5
|
||||
Subproject commit 41b8588ade25bbe6c095bdeb260c147214cea40e
|
Loading…
Reference in New Issue