mirror of
https://github.com/logos-storage/nim-datastore.git
synced 2026-01-04 06:33:11 +00:00
cleanup tired db tests
This commit is contained in:
parent
1f97a923fa
commit
c60ff35bdd
@ -1,13 +1,13 @@
|
|||||||
import std/options
|
import std/options
|
||||||
import std/os
|
import std/os
|
||||||
|
|
||||||
import pkg/asynctest/unittest2
|
import pkg/asynctest
|
||||||
import pkg/chronos
|
import pkg/chronos
|
||||||
import pkg/stew/results
|
import pkg/stew/results
|
||||||
|
|
||||||
import ../../datastore/fsds
|
import pkg/datastore/fsds
|
||||||
import ../../datastore/sql
|
import pkg/datastore/sql
|
||||||
import ../../datastore/tieredds
|
import pkg/datastore/tieredds
|
||||||
|
|
||||||
suite "TieredDatastore":
|
suite "TieredDatastore":
|
||||||
# assumes tests/test_all is run from project root, e.g. with `nimble test`
|
# assumes tests/test_all is run from project root, e.g. with `nimble test`
|
||||||
@ -15,22 +15,26 @@ suite "TieredDatastore":
|
|||||||
bytes = @[1.byte, 2.byte, 3.byte]
|
bytes = @[1.byte, 2.byte, 3.byte]
|
||||||
key = Key.init("a:b/c/d:e").get
|
key = Key.init("a:b/c/d:e").get
|
||||||
root = "tests" / "test_data"
|
root = "tests" / "test_data"
|
||||||
rootAbs = getCurrentDir() / root
|
(path, _, _) = instantiationInfo(-1, fullPaths = true) # get this file's name
|
||||||
|
rootAbs = path.parentDir / root
|
||||||
|
|
||||||
var
|
var
|
||||||
ds1: SQLiteDatastore
|
ds1: SQLiteDatastore
|
||||||
ds2: FileSystemDatastore
|
ds2: FSDatastore
|
||||||
|
|
||||||
setup:
|
setup:
|
||||||
removeDir(rootAbs)
|
removeDir(rootAbs)
|
||||||
require(not dirExists(rootAbs))
|
require(not dirExists(rootAbs))
|
||||||
createDir(rootAbs)
|
createDir(rootAbs)
|
||||||
ds1 = SQLiteDatastore.new(memory).get
|
ds1 = SQLiteDatastore.new(Memory).get
|
||||||
ds2 = FileSystemDatastore.new(rootAbs).get
|
ds2 = FSDatastore.new(rootAbs, depth = 5).get
|
||||||
|
|
||||||
teardown:
|
teardown:
|
||||||
if not ds1.isNil: ds1.close
|
if not ds1.isNil:
|
||||||
|
discard await ds1.close
|
||||||
|
|
||||||
ds1 = nil
|
ds1 = nil
|
||||||
|
|
||||||
removeDir(rootAbs)
|
removeDir(rootAbs)
|
||||||
require(not dirExists(rootAbs))
|
require(not dirExists(rootAbs))
|
||||||
|
|
||||||
@ -48,106 +52,76 @@ suite "TieredDatastore":
|
|||||||
stores = @[ds1, ds2]
|
stores = @[ds1, ds2]
|
||||||
|
|
||||||
check:
|
check:
|
||||||
TieredDatastore.new(ds1, ds2).get.stores == stores
|
TieredDatastore.new(ds1, ds2).tryGet.stores == stores
|
||||||
TieredDatastore.new([ds1, ds2]).get.stores == stores
|
TieredDatastore.new([ds1, ds2]).tryGet.stores == stores
|
||||||
TieredDatastore.new(@[ds1, ds2]).get.stores == stores
|
TieredDatastore.new(@[ds1, ds2]).tryGet.stores == stores
|
||||||
|
|
||||||
test "put":
|
test "put":
|
||||||
let
|
let
|
||||||
ds = TieredDatastore.new(ds1, ds2).get
|
ds = TieredDatastore.new(ds1, ds2).get
|
||||||
|
|
||||||
assert (await ds1.get(key)).get.isNone
|
|
||||||
assert (await ds2.get(key)).get.isNone
|
|
||||||
|
|
||||||
let
|
|
||||||
putRes = await ds.put(key, bytes)
|
putRes = await ds.put(key, bytes)
|
||||||
|
|
||||||
check:
|
check:
|
||||||
putRes.isOk
|
putRes.isOk
|
||||||
(await ds1.get(key)).get.get == bytes
|
(await ds1.get(key)).tryGet == bytes
|
||||||
(await ds2.get(key)).get.get == bytes
|
(await ds2.get(key)).tryGet == bytes
|
||||||
|
|
||||||
test "delete":
|
test "delete":
|
||||||
let
|
let
|
||||||
ds = TieredDatastore.new(ds1, ds2).get
|
ds = TieredDatastore.new(ds1, ds2).get
|
||||||
putRes = await ds.put(key, bytes)
|
|
||||||
|
|
||||||
assert putRes.isOk
|
(await ds.put(key, bytes)).tryGet
|
||||||
assert (await ds1.get(key)).get.get == bytes
|
(await ds.delete(key)).tryGet
|
||||||
assert (await ds2.get(key)).get.get == bytes
|
|
||||||
|
|
||||||
let
|
|
||||||
delRes = await ds.delete(key)
|
|
||||||
|
|
||||||
check:
|
check:
|
||||||
delRes.isOk
|
(await ds1.get(key)).tryGet.len == 0
|
||||||
(await ds1.get(key)).get.isNone
|
|
||||||
(await ds2.get(key)).get.isNone
|
expect DatastoreKeyNotFound:
|
||||||
|
discard (await ds2.get(key)).tryGet
|
||||||
|
|
||||||
test "contains":
|
test "contains":
|
||||||
let
|
let
|
||||||
ds = TieredDatastore.new(ds1, ds2).get
|
ds = TieredDatastore.new(ds1, ds2).tryGet
|
||||||
|
|
||||||
assert not (await ds1.contains(key)).get
|
|
||||||
assert not (await ds2.contains(key)).get
|
|
||||||
|
|
||||||
let
|
|
||||||
putRes = await ds.put(key, bytes)
|
|
||||||
|
|
||||||
assert putRes.isOk
|
|
||||||
|
|
||||||
let
|
|
||||||
containsRes = await ds.contains(key)
|
|
||||||
|
|
||||||
check:
|
check:
|
||||||
containsRes.isOk
|
not (await ds1.contains(key)).tryGet
|
||||||
containsRes.get
|
not (await ds2.contains(key)).tryGet
|
||||||
(await ds1.contains(key)).get
|
|
||||||
(await ds2.contains(key)).get
|
(await ds.put(key, bytes)).tryGet
|
||||||
|
|
||||||
|
check:
|
||||||
|
(await ds.contains(key)).tryGet
|
||||||
|
(await ds1.contains(key)).tryGet
|
||||||
|
(await ds2.contains(key)).tryGet
|
||||||
|
|
||||||
test "get":
|
test "get":
|
||||||
var
|
var
|
||||||
ds = TieredDatastore.new(ds1, ds2).get
|
ds = TieredDatastore.new(ds1, ds2).tryGet
|
||||||
|
|
||||||
assert (await ds1.get(key)).get.isNone
|
|
||||||
assert (await ds2.get(key)).get.isNone
|
|
||||||
|
|
||||||
check: (await ds.get(key)).get.isNone
|
|
||||||
|
|
||||||
let
|
|
||||||
putRes = await ds.put(key, bytes)
|
|
||||||
|
|
||||||
assert putRes.isOk
|
|
||||||
|
|
||||||
var
|
|
||||||
getRes = await ds.get(key)
|
|
||||||
|
|
||||||
check:
|
check:
|
||||||
getRes.isOk
|
not (await ds1.contains(key)).tryGet
|
||||||
getRes.get.isSome
|
not (await ds2.contains(key)).tryGet
|
||||||
getRes.get.get == bytes
|
not (await ds.contains(key)).tryGet
|
||||||
(await ds1.get(key)).get.isSome
|
|
||||||
(await ds2.get(key)).get.isSome
|
|
||||||
(await ds1.get(key)).get.get == bytes
|
|
||||||
(await ds2.get(key)).get.get == bytes
|
|
||||||
|
|
||||||
ds1.close
|
(await ds.put(key, bytes)).tryGet
|
||||||
ds1 = SQLiteDatastore.new(memory).get
|
|
||||||
ds = TieredDatastore.new(ds1, ds2).get
|
|
||||||
|
|
||||||
assert (await ds1.get(key)).get.isNone
|
|
||||||
assert (await ds2.get(key)).get.isSome
|
|
||||||
assert (await ds2.get(key)).get.get == bytes
|
|
||||||
|
|
||||||
getRes = await ds.get(key)
|
|
||||||
|
|
||||||
check:
|
check:
|
||||||
getRes.isOk
|
(await ds.get(key)).tryGet == bytes
|
||||||
getRes.get.isSome
|
(await ds1.get(key)).tryGet == bytes
|
||||||
getRes.get.get == bytes
|
(await ds2.get(key)).tryGet == bytes
|
||||||
(await ds1.get(key)).get.isSome
|
|
||||||
(await ds1.get(key)).get.get == bytes
|
|
||||||
|
|
||||||
# test "query":
|
(await ds1.close()).tryGet
|
||||||
# check:
|
ds1 = nil
|
||||||
# true
|
|
||||||
|
ds1 = SQLiteDatastore.new(Memory).tryGet
|
||||||
|
ds = TieredDatastore.new(ds1, ds2).tryGet
|
||||||
|
|
||||||
|
check:
|
||||||
|
not (await ds1.contains(key)).tryGet
|
||||||
|
(await ds2.get(key)).tryGet == bytes
|
||||||
|
(await ds.get(key)).tryGet == bytes
|
||||||
|
(await ds1.get(key)).tryGet == bytes
|
||||||
|
|
||||||
|
# # test "query":
|
||||||
|
# # check:
|
||||||
|
# # true
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user