events: injected federation transport (fed-sx-ready) + 6 tests
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 41s
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 41s
fetch abstracts how a peer's agenda arrives: (fetch peer-id ws we) ->
{:status :ok :occurrences} | {:status :error}. ev/federated-agenda-via merges
local + trusted peers fetched via the transport; unreachable peers degrade
gracefully. ev/peer-fetch = in-process adapter; ev/federation-status reports
reachability. A real fed-sx transport drops in unchanged. 278/278 green.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -218,6 +218,63 @@
|
||||
(ev/federated-free? local-db peers (list (quote berlin)) (quote nia) (ev-dt 2026 6 1 15 0) (ev-dt 2026 6 1 16 0))
|
||||
true))))))
|
||||
|
||||
;; ---- injected transport (fed-sx) ----
|
||||
(define
|
||||
ev-fd-tx-run-all!
|
||||
(fn
|
||||
()
|
||||
(let
|
||||
((local (ev/schedule (ev/empty) (quote yoga) (ev-dt 2026 6 1 9 0) 60 nil 20))
|
||||
(berlin (ev/peer (quote berlin) (ev/schedule (ev/empty) (quote meetup) (ev-dt 2026 6 1 12 0) 90 nil 100)))
|
||||
(ws (ev-date 2026 6 1))
|
||||
(we (ev-date 2026 6 2)))
|
||||
(let
|
||||
((fetch (ev/peer-fetch (list berlin))))
|
||||
(do
|
||||
;; in-process adapter merges through the transport interface
|
||||
(ev-fd-check!
|
||||
"federated-agenda-via merges local + fetched peer"
|
||||
(map (fn (o) (list (get o :origin) (get o :id)))
|
||||
(ev/federated-agenda-via local (list (quote berlin)) ws we fetch))
|
||||
(list (list :local (quote yoga)) (list (quote berlin) (quote meetup))))
|
||||
;; an unreachable / unknown peer degrades gracefully
|
||||
(ev-fd-check!
|
||||
"an unreachable peer is skipped, agenda still served"
|
||||
(map (fn (o) (get o :origin))
|
||||
(ev/federated-agenda-via local (list (quote berlin) (quote ghost)) ws we fetch))
|
||||
(list :local (quote berlin)))
|
||||
;; reachability report
|
||||
(ev-fd-check!
|
||||
"federation-status reports per-peer reachability"
|
||||
(ev/federation-status (list (quote berlin) (quote ghost)) ws we fetch)
|
||||
(list (list (quote berlin) :ok) (list (quote ghost) :error)))
|
||||
;; an explicit remote transport (returns occurrences directly)
|
||||
(let
|
||||
((remote-fetch
|
||||
(fn
|
||||
(pid rws rwe)
|
||||
(if (= pid (quote tokyo))
|
||||
{:status :ok
|
||||
:occurrences (list (ev-occ (quote standup) (ev-dt 2026 6 1 8 0) 15))}
|
||||
{:status :error :reason :unreachable}))))
|
||||
(do
|
||||
(ev-fd-check!
|
||||
"a remote transport's occurrences merge with origin tags"
|
||||
(map (fn (o) (list (get o :origin) (get o :id)))
|
||||
(ev/federated-agenda-via local (list (quote tokyo)) ws we remote-fetch))
|
||||
(list (list (quote tokyo) (quote standup)) (list :local (quote yoga))))
|
||||
(ev-fd-check!
|
||||
"remote transport error degrades to local only"
|
||||
(map (fn (o) (get o :origin))
|
||||
(ev/federated-agenda-via local (list (quote osaka)) ws we remote-fetch))
|
||||
(list :local))))
|
||||
;; no trusted peers -> only local
|
||||
(ev-fd-check!
|
||||
"no trusted peer ids yields only local"
|
||||
(map (fn (o) (get o :origin))
|
||||
(ev/federated-agenda-via local (list) ws we fetch))
|
||||
(list :local)))))))
|
||||
|
||||
(define
|
||||
ev-federation-tests-run!
|
||||
(fn
|
||||
@@ -228,4 +285,5 @@
|
||||
(set! ev-fd-failures (list))
|
||||
(ev-fd-run-all!)
|
||||
(ev-fd-fb-run-all!)
|
||||
(ev-fd-tx-run-all!)
|
||||
{:failures ev-fd-failures :total (+ ev-fd-pass ev-fd-fail) :passed ev-fd-pass :failed ev-fd-fail})))
|
||||
|
||||
Reference in New Issue
Block a user