/ test / lightspeed / load_harness_test.gleam
load_harness_test.gleam
 1  import gleeunit/should
 2  import lightspeed/ops/load_harness
 3  
 4  pub fn harness_is_deterministic_for_same_scenario_test() {
 5    let scenario =
 6      load_harness.Scenario(
 7        session_count: 4,
 8        increments_per_session: 6,
 9        include_reconnect: True,
10        include_crash_restart: True,
11        ack_every: 3,
12      )
13  
14    let first = load_harness.run(scenario)
15    let second = load_harness.run(scenario)
16  
17    first
18    |> should.equal(second)
19  }
20  
21  pub fn harness_reports_crash_reconnect_and_pending_for_slow_ack_test() {
22    let scenario =
23      load_harness.Scenario(
24        session_count: 2,
25        increments_per_session: 4,
26        include_reconnect: True,
27        include_crash_restart: True,
28        ack_every: 10,
29      )
30  
31    let summary = load_harness.run(scenario)
32  
33    summary.total_sessions
34    |> should.equal(2)
35  
36    summary.total_increments
37    |> should.equal(8)
38  
39    summary.total_crashes
40    |> should.equal(2)
41  
42    summary.total_reconnects
43    |> should.equal(2)
44  
45    should.equal(summary.total_patch_queued > summary.total_patch_acked, True)
46  }
47  
48  pub fn harness_without_crash_or_reconnect_stays_clean_test() {
49    let scenario =
50      load_harness.Scenario(
51        session_count: 3,
52        increments_per_session: 2,
53        include_reconnect: False,
54        include_crash_restart: False,
55        ack_every: 1,
56      )
57  
58    let summary = load_harness.run(scenario)
59  
60    summary.total_crashes
61    |> should.equal(0)
62  
63    summary.total_reconnects
64    |> should.equal(0)
65  
66    summary.total_patch_queued
67    |> should.equal(summary.total_patch_acked)
68  }