diff options
| author | Ophestra <cat@gensokyo.uk> | 2026-03-30 23:49:16 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2026-03-31 00:10:14 +0900 |
| commit | 91a2d4d6e1c0039f6b442c8c97b1aa809e09e33b (patch) | |
| tree | def78a3c6d20ec072b917a19538cf4d2af735304 /internal/uevent/uevent_test.go | |
| parent | a854719b9f11fea48e7221eeff50d4cdb3801052 (diff) | |
internal/uevent: integrate error handling in event loop
There are many subtleties when recovering from errors in the event loop, and coldboot requires internals to drain the receive buffer as synthetic uevents are being arranged.
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal/uevent/uevent_test.go')
| -rw-r--r-- | internal/uevent/uevent_test.go | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/internal/uevent/uevent_test.go b/internal/uevent/uevent_test.go index 9b986ff3..6420eea1 100644 --- a/internal/uevent/uevent_test.go +++ b/internal/uevent/uevent_test.go @@ -10,6 +10,7 @@ import ( "testing" "time" + "hakurei.app/fhs" "hakurei.app/internal/uevent" ) @@ -155,13 +156,23 @@ func TestDialConsume(t *testing.T) { ctx, cancel := context.WithCancel(t.Context()) defer cancel() + consume := func(c *uevent.Conn, ctx context.Context) error { + return c.Consume(ctx, fhs.Sys, events, false, func(path string) { + t.Log("coldboot visited", path) + }, func(err error) bool { + t.Log(err) + _, ok := err.(uevent.NeedsColdboot) + return !ok + }, nil) + } + wg.Go(func() { - if err = c.Consume(ctx, events); err != context.Canceled { + if err = consume(c, ctx); err != context.Canceled { panic(err) } }) wg.Go(func() { - if err0 = c0.Consume(ctx, events); err0 != context.Canceled { + if err0 = consume(c0, ctx); err0 != context.Canceled { panic(err0) } }) @@ -185,11 +196,11 @@ func TestDialConsume(t *testing.T) { exclExit := make(chan struct{}) wg.Go(func() { defer func() { exclExit <- struct{}{} }() - errs[0] = c.Consume(ctx, events) + errs[0] = consume(c, ctx) }) wg.Go(func() { defer func() { exclExit <- struct{}{} }() - errs[1] = c.Consume(ctx, events) + errs[1] = consume(c, ctx) }) <-exclExit cancel() |
