StoreTck

@DisplayNameGeneration(value = StoreTck.PortNames::class)
abstract class StoreTck

A whole store's contract: the backend gives the config of a store, and the kit opens it through its StoreProvider, as the host does, and runs every port's spec against what the store opens. A port the provider forgets to open, or opens wrong, fails here, where the per-port specs (which a backend's test feeds its own classes) would not see it.

A spec that does not apply to the store skips with the reason. Each test opens one store from config, as the host does, and creates its schema as its ports open; a store in memory keeps its data in that instance, so the test's ports share it. The specs keep their tests apart by their own contexts, groups and names. Where a spec moves the time, the store is opened with its clock (StoreConfig.clock).

A backend extends it with its configuration, and keeps its per-port specs for what only they reach (a hook of its own). The report names the backend's class and the port: PostgresStoreTck > EventLog > ... (PortNames).

Constructors

Link copied to clipboard
constructor()

Types

Link copied to clipboard
@Nested
inner class Checkpoints : CheckpointStoreSpec
Link copied to clipboard
@Nested
inner class Leases : LeaseStoreSpec
Link copied to clipboard
@Nested
inner class Ledger : FailureLedgerSpec
Link copied to clipboard
Link copied to clipboard
@Nested
inner class Log : EventLogSpec
Link copied to clipboard
class PortNames : DisplayNameGenerator.Standard

Names each port's tests after the backend's class and the port: PostgresStoreTck > EventLog.

Link copied to clipboard
@Nested
inner class Reservations : ReservationStoreSpec
Link copied to clipboard
@Nested
inner class Snapshots : SnapshotStoreSpec
Link copied to clipboard
@Nested
inner class Timers : TimerStoreSpec

Functions