mirror of
https://github.com/logos-storage/logos-storage-network-crawler.git
synced 2026-01-02 13:33:08 +00:00
Restores todo metric
This commit is contained in:
parent
7378148ed8
commit
e8ec737285
@ -40,6 +40,7 @@ method start*(d: DhtMetrics): Future[?!void] {.async.} =
|
||||
|
||||
proc onCheck(event: DhtNodeCheckEventData): Future[?!void] {.async.} =
|
||||
await d.handleCheckEvent(event)
|
||||
|
||||
d.sub = d.state.events.dhtNodeCheck.subscribe(onCheck)
|
||||
|
||||
return success()
|
||||
|
||||
@ -11,6 +11,7 @@ import ../state
|
||||
import ../types
|
||||
import ../component
|
||||
import ../utils/asyncdataevent
|
||||
import ../services/metrics
|
||||
|
||||
logScope:
|
||||
topics = "todolist"
|
||||
@ -21,11 +22,14 @@ type TodoList* = ref object of Component
|
||||
subNew: AsyncDataEventSubscription
|
||||
subExp: AsyncDataEventSubscription
|
||||
emptySignal: ?Future[void]
|
||||
metrics: Metrics
|
||||
|
||||
proc addNodes(t: TodoList, nids: seq[Nid]) =
|
||||
for nid in nids:
|
||||
t.nids.add(nid)
|
||||
|
||||
t.metrics.setTodoNodes(t.nids.len)
|
||||
|
||||
if s =? t.emptySignal:
|
||||
trace "Nodes added, resuming...", nodes = nids.len
|
||||
s.complete()
|
||||
@ -64,8 +68,10 @@ method stop*(t: TodoList): Future[?!void] {.async.} =
|
||||
await t.state.events.nodesExpired.unsubscribe(t.subExp)
|
||||
return success()
|
||||
|
||||
proc new*(_: type TodoList, state: State): TodoList =
|
||||
TodoList(nids: newSeq[Nid](), state: state, emptySignal: Future[void].none)
|
||||
proc new*(_: type TodoList, state: State, metrics: Metrics): TodoList =
|
||||
TodoList(
|
||||
nids: newSeq[Nid](), state: state, emptySignal: Future[void].none, metrics: metrics
|
||||
)
|
||||
|
||||
proc createTodoList*(state: State): TodoList =
|
||||
TodoList.new(state)
|
||||
proc createTodoList*(state: State, metrics: Metrics): TodoList =
|
||||
TodoList.new(state, metrics)
|
||||
|
||||
@ -22,7 +22,7 @@ proc createComponents*(state: State): Future[?!seq[Component]] {.async.} =
|
||||
|
||||
let
|
||||
metrics = createMetrics(state.config.metricsAddress, state.config.metricsPort)
|
||||
todoList = createTodoList(state)
|
||||
todoList = createTodoList(state, metrics)
|
||||
|
||||
without dhtMetrics =? createDhtMetrics(state, metrics), err:
|
||||
return failure(err)
|
||||
|
||||
@ -7,19 +7,22 @@ import ../../../codexcrawler/utils/asyncdataevent
|
||||
import ../../../codexcrawler/types
|
||||
import ../../../codexcrawler/state
|
||||
import ../mocks/mockstate
|
||||
import ../mocks/mockmetrics
|
||||
import ../helpers
|
||||
|
||||
suite "TodoList":
|
||||
var
|
||||
nid: Nid
|
||||
state: MockState
|
||||
metrics: MockMetrics
|
||||
todo: TodoList
|
||||
|
||||
setup:
|
||||
nid = genNid()
|
||||
state = createMockState()
|
||||
metrics = createMockMetrics()
|
||||
|
||||
todo = TodoList.new(state)
|
||||
todo = TodoList.new(state, metrics)
|
||||
|
||||
(await todo.start()).tryGet()
|
||||
|
||||
@ -47,6 +50,19 @@ suite "TodoList":
|
||||
check:
|
||||
item == nid
|
||||
|
||||
test "newNodesDiscovered event updates todo metric":
|
||||
await fireNewNodesDiscoveredEvent(@[nid])
|
||||
|
||||
check:
|
||||
metrics.todo == 1
|
||||
|
||||
test "nodesExpired event updates todo metric":
|
||||
await fireNodesExpiredEvent(@[nid])
|
||||
let item = (await todo.pop).tryGet()
|
||||
|
||||
check:
|
||||
metrics.todo == 1
|
||||
|
||||
test "pop on empty todo list waits until item is added":
|
||||
let popFuture = todo.pop()
|
||||
check:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user