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