Functional Weave
Code in TypeScript

monitor.component-state@1.0.0

vectors.json

1,849 bytes · view raw

[
  {"name": "every check up is operational", "args": [["up", "up", "up"], false], "expect": "operational"},
  {"name": "one slow check is degraded performance", "args": [["up", "degraded", "up"], false], "expect": "degraded"},
  {"name": "some checks down is a partial outage", "args": [["up", "down", "up"], false], "expect": "partial-outage"},
  {"name": "down beats degraded: one down and one degraded is still a partial outage", "args": [["degraded", "down", "up"], false], "expect": "partial-outage"},
  {"name": "every check down is a major outage", "args": [["down", "down"], false], "expect": "major-outage"},
  {"name": "a single check down is a major outage, not a partial one", "args": [["down"], false], "expect": "major-outage"},
  {"name": "all degraded is degraded, never an outage", "args": [["degraded", "degraded"], false], "expect": "degraded"},
  {"name": "maintenance wins over a major outage", "args": [["down", "down"], true], "expect": "maintenance"},
  {"name": "maintenance with every check up is still maintenance", "args": [["up"], true], "expect": "maintenance"},
  {"name": "a single check up is operational", "args": [["up"], false], "expect": "operational"},
  {"name": "an empty list is an error", "args": [[], false], "expectError": "statuses must not be empty"},
  {"name": "an empty list is an error even under maintenance", "args": [[], true], "expectError": "statuses must not be empty"},
  {"name": "an unknown status is an error", "args": [["up", "offline"], false], "expectError": "unknown check status: offline"},
  {"name": "an unknown status is an error even under maintenance", "args": [["partial"], true], "expectError": "unknown check status: partial"},
  {"name": "a maintenance flag that is not a boolean is an error", "args": [["up"], 1], "expectError": "underMaintenance must be true or false"}
]