adding testing

This commit is contained in:
Jaremy Creechley 2023-08-24 19:50:58 -07:00 committed by Dmitriy Ryajov
parent 567f84e460
commit b48e45c03f
No known key found for this signature in database
GPG Key ID: DA8C680CE7C657A4
2 changed files with 22 additions and 14 deletions

View File

@ -12,7 +12,7 @@ import ./query
import ./datastore
import ./threadbackend
export key, query
export key, query, ThreadBackend
push: {.upraises: [].}
@ -78,13 +78,13 @@ proc newSharedDataStore*(
var
self = SharedDatastore()
res = newThreadResult(ThreadDatastorePtr)
# res = newThreadResult(ThreadDatastorePtr)
res[].signal = ThreadSignalPtr.new().valueOr:
return failure newException(DatastoreError, "error creating signal")
# res[].signal = ThreadSignalPtr.new().valueOr:
# return failure newException(DatastoreError, "error creating signal")
res.createThreadDatastore(backend)
await wait(res[].signal)
res[].signal.close()
# res.createThreadDatastore(backend)
# await wait(res[].signal)
# res[].signal.close()
success self

View File

@ -29,21 +29,24 @@ type
value*: T
error*: CatchableErrorBuffer
TResult*[T] = UniquePtr[ThreadResult[T]]
TResult*[T] = SharedPtr[ThreadResult[T]]
ThreadBackendKind* {.pure.} = enum
FSBackend
SQliteBackend
TestBackend
ThreadBackend* = object
case kind*: ThreadBackendKind
of FSBackend:
root: StringBuffer
depth: int
caseSensitive: bool
ignoreProtected: bool
root*: StringBuffer
depth*: int
caseSensitive*: bool
ignoreProtected*: bool
of SQliteBackend:
discard
of TestBackend:
count*: int
ThreadDatastore = object
tp: Taskpool
@ -51,8 +54,8 @@ type
ThreadDatastorePtr* = SharedPtr[ThreadDatastore]
proc newThreadResult*[T](tp: typedesc[T]): UniquePtr[ThreadResult[T]] =
newUniquePtr(ThreadResult[T])
proc newThreadResult*[T](tp: typedesc[T]): SharedPtr[ThreadResult[T]] =
newSharedPtr(ThreadResult[T])
proc startupDatastore(
ret: TResult[ThreadDatastorePtr],
@ -72,6 +75,11 @@ proc startupDatastore(
ret[].state = Success
else:
ret[].state = Error
ret[].value[].backendDatastore = ds.get()
ret[].state = Success
of TestBackend:
ret[].value[].backendDatastore = nil
ret[].state = Success
else:
discard