From 2cca1a7e40270d75241903f72f0a2a014475e44b Mon Sep 17 00:00:00 2001 From: Jaremy Creechley Date: Thu, 14 Sep 2023 22:17:20 -0700 Subject: [PATCH] cleanup --- datastore/threads/databuffer.nim | 6 +- datastore/threads/threadbackend.nim | 6 +- datastore/threads/threadsignalpool.nim | 4 +- tests/datastore/testthreadproxyds.nim | 148 +++++++++++++------------ 4 files changed, 89 insertions(+), 75 deletions(-) diff --git a/datastore/threads/databuffer.nim b/datastore/threads/databuffer.nim index ed0f0e1..f2cd3ee 100644 --- a/datastore/threads/databuffer.nim +++ b/datastore/threads/databuffer.nim @@ -88,7 +88,9 @@ import stew/results proc new*(tp: typedesc[KeyBuffer], key: Key): KeyBuffer = let ks = key.id() result = KeyBuffer.new(ks) - echoed "KeyBuffer:new: ", $result + # echoed "KeyBuffer:new: ", $result proc toKey*(kb: KeyBuffer): Key = - let res = Key.init(kb.toString()) + let ks = kb.toString() + # echo "toKey: ", ks + let res = Key.init(ks) res.expect("should always be valid") diff --git a/datastore/threads/threadbackend.nim b/datastore/threads/threadbackend.nim index 316a0ae..4dc2f22 100644 --- a/datastore/threads/threadbackend.nim +++ b/datastore/threads/threadbackend.nim @@ -137,9 +137,9 @@ proc putTask*( # os.sleep(1_000) # var ret = ret - echoed "putTask: ", $getThreadId() - echoed "putTask:kb: ", kb.toString - echoed "putTask:db: ", db.toString + # echoed "putTask: ", $getThreadId() + # echo "putTask:kb: ", kb.toString + # echo "putTask:db: ", db.toString let key = kb.toKey() diff --git a/datastore/threads/threadsignalpool.nim b/datastore/threads/threadsignalpool.nim index 19d3e21..4f4c7b9 100644 --- a/datastore/threads/threadsignalpool.nim +++ b/datastore/threads/threadsignalpool.nim @@ -11,8 +11,8 @@ export sharedptr export threadsync const - SignalPoolSize {.intdefine.} = 1024 - SignalPoolRetries {.intdefine.} = 100 + SignalPoolSize {.intdefine.} = 100 + SignalPoolRetries {.intdefine.} = 1000 var signalPoolLock: Lock diff --git a/tests/datastore/testthreadproxyds.nim b/tests/datastore/testthreadproxyds.nim index eb6b6d7..7de3e02 100644 --- a/tests/datastore/testthreadproxyds.nim +++ b/tests/datastore/testthreadproxyds.nim @@ -16,87 +16,99 @@ import ./querycommontests import pretty -suite "Test Basic ThreadProxyDatastore": - var - sds: ThreadProxyDatastore - mem: MemoryDatastore - key1: Key - data: seq[byte] +proc testThreadProxy() = + suite "Test Basic ThreadProxyDatastore": + var + sds: ThreadProxyDatastore + mem: MemoryDatastore + key1: Key + data: seq[byte] - setupAll: - mem = MemoryDatastore.new() - sds = newThreadProxyDatastore(mem).expect("should work") - key1 = Key.init("/a").tryGet - data = "value for 1".toBytes() - - teardownAll: - let res = await sds.close() - res.get() - echo "teardown done" + setupAll: + mem = MemoryDatastore.new() + sds = newThreadProxyDatastore(mem).expect("should work") + key1 = Key.init("/a").tryGet + data = "value for 1".toBytes() - test "check put": - # echo "\n\n=== put ===" - let res1 = await sds.put(key1, data) - # echo "res1: ", res1.repr - check res1.isOk + teardownAll: + let res = await sds.close() + res.get() + echo "teardown done" - test "check get": - # echo "\n\n=== get ===" - # echo "get send key: ", key1.repr - let res2 = await sds.get(key1) - # echo "get key post: ", key1.repr - # echo "get res2: ", res2.repr - # echo res2.get() == data - var val = "" - for c in res2.get(): - val &= char(c) - # print "get res2: ", $val + test "check put": + # echo "\n\n=== put ===" + let res1 = await sds.put(key1, data) + # echo "res1: ", res1.repr + check res1.isOk -suite "Test Basics": - var - mem = MemoryDatastore.new() - sds = newThreadProxyDatastore(mem).expect("should work") + test "check get": + # echo "\n\n=== get ===" + # echo "get send key: ", key1.repr + let res2 = await sds.get(key1) + # echo "get key post: ", key1.repr + # echo "get res2: ", res2.repr + # echo res2.get() == data + var val = "" + for c in res2.get(): + val &= char(c) + # print "get res2: ", $val - let - key = Key.init("/a/b").tryGet() - bytes = "some bytes".toBytes - otherBytes = "some other bytes".toBytes +proc testThreadProxyBasics() = + suite "Test Basics": + var + mem = MemoryDatastore.new() + sds = newThreadProxyDatastore(mem).expect("should work") - # echo "\n\n=== put cancel ===" - # # let res1 = await sds.put(key1, "value for 1".toBytes()) - # let res3 = sds.put(key1, "value for 1".toBytes()) - # res3.cancel() - # # print "res3: ", res3 - - basicStoreTests(sds, key, bytes, otherBytes) + let + key = Key.init("/a/b").tryGet() + bytes = "some bytes".toBytes + otherBytes = "some other bytes".toBytes -suite "Test Query": - var - mem: MemoryDatastore - sds: ThreadProxyDatastore + # echo "\n\n=== put cancel ===" + # # let res1 = await sds.put(key1, "value for 1".toBytes()) + # let res3 = sds.put(key1, "value for 1".toBytes()) + # res3.cancel() + # # print "res3: ", res3 - setup: - mem = MemoryDatastore.new() - sds = newThreadProxyDatastore(mem).expect("should work") + basicStoreTests(sds, key, bytes, otherBytes) - queryTests(sds, false) +proc testThreadProxyQuery() = + suite "Test Query": + var + mem: MemoryDatastore + sds: ThreadProxyDatastore - test "query iter fails": + setup: + mem = MemoryDatastore.new() + sds = newThreadProxyDatastore(mem).expect("should work") - expect FutureDefect: - let q = Query.init(key1) + queryTests(sds, false) - (await sds.put(key1, val1)).tryGet - (await sds.put(key2, val2)).tryGet - (await sds.put(key3, val3)).tryGet + test "query iter fails": - let - iter = (await sds.query(q)).tryGet - res = (await allFinished(toSeq(iter))) - .mapIt( it.read.tryGet ) - .filterIt( it.key.isSome ) - - check res.len() > 0 + expect FutureDefect: + let q = Query.init(key1) + (await sds.put(key1, val1)).tryGet + (await sds.put(key2, val2)).tryGet + (await sds.put(key3, val3)).tryGet + + let + iter = (await sds.query(q)).tryGet + res = (await allFinished(toSeq(iter))) + .mapIt(it.read.tryGet) + .filterIt(it.key.isSome) + + check res.len() > 0 + +when isMainModule: + for i in 1..100: + testThreadProxy() + testThreadProxyBasics() + # testThreadProxyQuery() +else: + testThreadProxy() + testThreadProxyBasics() + testThreadProxyQuery() # GC_fullCollect() # this fails due to MemoryStore already being freed...