Functional Weave
Code in Rust

monitor.check-status@1.0.0

vectors.json

1,536 bytes · view raw

[
  {"name": "every location up is up", "args": [["up", "up", "up"], 2], "expect": "up"},
  {"name": "one down below a quorum of two is degraded, not down", "args": [["up", "down", "up"], 2], "expect": "degraded"},
  {"name": "two down meets a quorum of two", "args": [["down", "up", "down"], 2], "expect": "down"},
  {"name": "a quorum of one: any down location is down", "args": [["up", "down"], 1], "expect": "down"},
  {"name": "a single location with a quorum of one decides alone", "args": [["down"], 1], "expect": "down"},
  {"name": "a slow location alone makes the target degraded", "args": [["up", "degraded", "up"], 2], "expect": "degraded"},
  {"name": "degraded votes never add up to down", "args": [["degraded", "degraded", "degraded"], 1], "expect": "degraded"},
  {"name": "quorum equal to the number of locations needs all of them down", "args": [["down", "down", "degraded"], 3], "expect": "degraded"},
  {"name": "all down with a unanimous quorum is down", "args": [["down", "down", "down"], 3], "expect": "down"},
  {"name": "an empty list is an error", "args": [[], 1], "expectError": "statuses must not be empty"},
  {"name": "a quorum of zero is an error", "args": [["up"], 0], "expectError": "downQuorum must be 1 to 1, received 0"},
  {"name": "a quorum larger than the locations can never be met", "args": [["up", "down"], 3], "expectError": "downQuorum must be 1 to 2, received 3"},
  {"name": "an unknown status is an error", "args": [["up", "offline"], 1], "expectError": "unknown check status: offline"}
]