ops_supervision_test.gleam
1 import gleeunit/should 2 import lightspeed/ops/supervision 3 4 pub fn default_plan_contains_required_children_test() { 5 let plan = supervision.default_plan("lightspeed") 6 7 plan 8 |> supervision.validate 9 |> should.equal(Ok(Nil)) 10 11 plan 12 |> supervision.child_ids 13 |> should.equal([ 14 "session_registry", 15 "session_supervisor", 16 "transport_endpoint", 17 "metrics_reporter", 18 ]) 19 } 20 21 pub fn duplicate_child_ids_are_rejected_test() { 22 let plan = 23 supervision.Plan( 24 name: "lightspeed_supervisor", 25 strategy: supervision.OneForOne, 26 children: [ 27 supervision.ChildSpec( 28 id: "session_registry", 29 module_name: "m1", 30 restart: supervision.Permanent, 31 shutdown_ms: 5000, 32 ), 33 supervision.ChildSpec( 34 id: "session_registry", 35 module_name: "m2", 36 restart: supervision.Permanent, 37 shutdown_ms: 5000, 38 ), 39 ], 40 ) 41 42 plan 43 |> supervision.validate 44 |> should.equal(Error(supervision.DuplicateChildId("session_registry"))) 45 } 46 47 pub fn missing_required_child_is_rejected_test() { 48 let plan = 49 supervision.Plan( 50 name: "lightspeed_supervisor", 51 strategy: supervision.OneForOne, 52 children: [ 53 supervision.ChildSpec( 54 id: "session_registry", 55 module_name: "m1", 56 restart: supervision.Permanent, 57 shutdown_ms: 5000, 58 ), 59 ], 60 ) 61 62 plan 63 |> supervision.validate 64 |> should.equal(Error(supervision.MissingRequiredChild("session_supervisor"))) 65 }