| Safe Haskell | Safe-Inferred |
|---|---|
| Language | GHC2021 |
Hydra.CBORSpec
Description
Tests for the ToCBOR / FromCBOR codecs of hydra-node types.
Three layers of protection:
- Unit tests for
genericToCBOR/genericFromCBORpinning down the constructor-name-tagged format they produce (including that newtypes and single-constructor records carry the tag). - Roundtrip properties keeping encoder/decoder pairs in sync: adding a constructor without a matching codec (or with fields decoded in the wrong order) fails here.
- Golden tests locking the concrete byte-level formats, one sample per constructor. These catch changes that roundtrip properties cannot see, e.g. reordering fields in a data declaration of a generically derived codec, or symmetric encoder+decoder drift. If one fails, the change breaks decoding of persisted data (hydra.db) or the API wire format; only delete and regenerate a golden file as a deliberate, documented format change.
Synopsis
- data GenericCBORSum
- = GenNullary
- | GenPositional Int Text
- | GenRecord { }
- newtype GenericCBORNewtype = GenericCBORNewtype Int
- spec :: Spec
- genGoldenNetworkIds :: Gen [NetworkId]
- genGoldenChainPoints :: Gen [ChainPoint]
- genGoldenStateEvents :: Gen [StateEvent Tx]
ToADTArbitrary instances for per-constructor golden samples
Test types for the generic codec
data GenericCBORSum Source #
Constructors
| GenNullary | |
| GenPositional Int Text | |
| GenRecord | |
Instances
newtype GenericCBORNewtype Source #
Constructors
| GenericCBORNewtype Int |
Instances
genGoldenNetworkIds :: Gen [NetworkId] Source #
One sample per NetworkId constructor.
genGoldenChainPoints :: Gen [ChainPoint] Source #
One sample per ChainPoint constructor.
genGoldenStateEvents :: Gen [StateEvent Tx] Source #
One StateEvent per StateChanged constructor, in declaration order:
ToADTArbitrary enumerates the constructors generically, so coverage of
every constructor holds by construction and new constructors are included
automatically. Samples are generated small (resized): the golden file
locks tags and field order, which small values exercise just as well.
Orphan instances
| ToADTArbitrary FanoutProgressMode Source # | |
Methods toADTArbitrarySingleton :: Proxy FanoutProgressMode -> Gen (ADTArbitrarySingleton FanoutProgressMode) toADTArbitrary :: Proxy FanoutProgressMode -> Gen (ADTArbitrary FanoutProgressMode) | |
| ToADTArbitrary HeadStatus Source # | |
Methods toADTArbitrarySingleton :: Proxy HeadStatus -> Gen (ADTArbitrarySingleton HeadStatus) toADTArbitrary :: Proxy HeadStatus -> Gen (ADTArbitrary HeadStatus) | |
| ToADTArbitrary InvalidInput Source # | |
Methods toADTArbitrarySingleton :: Proxy InvalidInput -> Gen (ADTArbitrarySingleton InvalidInput) toADTArbitrary :: Proxy InvalidInput -> Gen (ADTArbitrary InvalidInput) | |
| ToADTArbitrary NetworkInfo Source # | |
Methods toADTArbitrarySingleton :: Proxy NetworkInfo -> Gen (ADTArbitrarySingleton NetworkInfo) toADTArbitrary :: Proxy NetworkInfo -> Gen (ADTArbitrary NetworkInfo) | |
| ToADTArbitrary Connectivity Source # | |
Methods toADTArbitrarySingleton :: Proxy Connectivity -> Gen (ADTArbitrarySingleton Connectivity) toADTArbitrary :: Proxy Connectivity -> Gen (ADTArbitrary Connectivity) | |
| ToADTArbitrary WhichEtcd Source # | |
Methods toADTArbitrarySingleton :: Proxy WhichEtcd -> Gen (ADTArbitrarySingleton WhichEtcd) toADTArbitrary :: Proxy WhichEtcd -> Gen (ADTArbitrary WhichEtcd) | |
| ToADTArbitrary DepositStatus Source # | |
Methods toADTArbitrarySingleton :: Proxy DepositStatus -> Gen (ADTArbitrarySingleton DepositStatus) toADTArbitrary :: Proxy DepositStatus -> Gen (ADTArbitrary DepositStatus) | |
| ToADTArbitrary SyncedStatus Source # | |
Methods toADTArbitrarySingleton :: Proxy SyncedStatus -> Gen (ADTArbitrarySingleton SyncedStatus) toADTArbitrary :: Proxy SyncedStatus -> Gen (ADTArbitrary SyncedStatus) | |
| ToADTArbitrary (ClientMessage Tx) Source # | |
Methods toADTArbitrarySingleton :: Proxy (ClientMessage Tx) -> Gen (ADTArbitrarySingleton (ClientMessage Tx)) toADTArbitrary :: Proxy (ClientMessage Tx) -> Gen (ADTArbitrary (ClientMessage Tx)) | |
| ToADTArbitrary (DecommitInvalidReason Tx) Source # | |
Methods toADTArbitrarySingleton :: Proxy (DecommitInvalidReason Tx) -> Gen (ADTArbitrarySingleton (DecommitInvalidReason Tx)) toADTArbitrary :: Proxy (DecommitInvalidReason Tx) -> Gen (ADTArbitrary (DecommitInvalidReason Tx)) | |
| ToADTArbitrary (TimedServerOutput Tx) Source # | |
Methods toADTArbitrarySingleton :: Proxy (TimedServerOutput Tx) -> Gen (ADTArbitrarySingleton (TimedServerOutput Tx)) toADTArbitrary :: Proxy (TimedServerOutput Tx) -> Gen (ADTArbitrary (TimedServerOutput Tx)) | |
| ToADTArbitrary (ChainEvent Tx) Source # | |
Methods toADTArbitrarySingleton :: Proxy (ChainEvent Tx) -> Gen (ADTArbitrarySingleton (ChainEvent Tx)) toADTArbitrary :: Proxy (ChainEvent Tx) -> Gen (ADTArbitrary (ChainEvent Tx)) | |
| ToADTArbitrary (OnChainTx Tx) Source # | |
Methods toADTArbitrarySingleton :: Proxy (OnChainTx Tx) -> Gen (ADTArbitrarySingleton (OnChainTx Tx)) toADTArbitrary :: Proxy (OnChainTx Tx) -> Gen (ADTArbitrary (OnChainTx Tx)) | |
| ToADTArbitrary (PostChainTx Tx) Source # | |
Methods toADTArbitrarySingleton :: Proxy (PostChainTx Tx) -> Gen (ADTArbitrarySingleton (PostChainTx Tx)) toADTArbitrary :: Proxy (PostChainTx Tx) -> Gen (ADTArbitrary (PostChainTx Tx)) | |
| ToADTArbitrary (PostTxError Tx) Source # | |
Methods toADTArbitrarySingleton :: Proxy (PostTxError Tx) -> Gen (ADTArbitrarySingleton (PostTxError Tx)) toADTArbitrary :: Proxy (PostTxError Tx) -> Gen (ADTArbitrary (PostTxError Tx)) | |
| ToADTArbitrary (RequirementFailure Tx) Source # | |
Methods toADTArbitrarySingleton :: Proxy (RequirementFailure Tx) -> Gen (ADTArbitrarySingleton (RequirementFailure Tx)) toADTArbitrary :: Proxy (RequirementFailure Tx) -> Gen (ADTArbitrary (RequirementFailure Tx)) | |
| ToADTArbitrary (SideLoadRequirementFailure Tx) Source # | |
Methods toADTArbitrarySingleton :: Proxy (SideLoadRequirementFailure Tx) -> Gen (ADTArbitrarySingleton (SideLoadRequirementFailure Tx)) toADTArbitrary :: Proxy (SideLoadRequirementFailure Tx) -> Gen (ADTArbitrary (SideLoadRequirementFailure Tx)) | |
| ToADTArbitrary (FanoutMode Tx) Source # | |
Methods toADTArbitrarySingleton :: Proxy (FanoutMode Tx) -> Gen (ADTArbitrarySingleton (FanoutMode Tx)) toADTArbitrary :: Proxy (FanoutMode Tx) -> Gen (ADTArbitrary (FanoutMode Tx)) | |
| ToADTArbitrary (HeadState Tx) Source # | |
Methods toADTArbitrarySingleton :: Proxy (HeadState Tx) -> Gen (ADTArbitrarySingleton (HeadState Tx)) toADTArbitrary :: Proxy (HeadState Tx) -> Gen (ADTArbitrary (HeadState Tx)) | |
| ToADTArbitrary (SeenSnapshot Tx) Source # | |
Methods toADTArbitrarySingleton :: Proxy (SeenSnapshot Tx) -> Gen (ADTArbitrarySingleton (SeenSnapshot Tx)) toADTArbitrary :: Proxy (SeenSnapshot Tx) -> Gen (ADTArbitrary (SeenSnapshot Tx)) | |
| ToADTArbitrary (Deposit Tx) Source # | |
Methods toADTArbitrarySingleton :: Proxy (Deposit Tx) -> Gen (ADTArbitrarySingleton (Deposit Tx)) toADTArbitrary :: Proxy (Deposit Tx) -> Gen (ADTArbitrary (Deposit Tx)) | |
| ToADTArbitrary (NodeState Tx) Source # | |
Methods toADTArbitrarySingleton :: Proxy (NodeState Tx) -> Gen (ADTArbitrarySingleton (NodeState Tx)) toADTArbitrary :: Proxy (NodeState Tx) -> Gen (ADTArbitrary (NodeState Tx)) | |
| ToADTArbitrary (ConfirmedSnapshot Tx) Source # | |
Methods toADTArbitrarySingleton :: Proxy (ConfirmedSnapshot Tx) -> Gen (ADTArbitrarySingleton (ConfirmedSnapshot Tx)) toADTArbitrary :: Proxy (ConfirmedSnapshot Tx) -> Gen (ADTArbitrary (ConfirmedSnapshot Tx)) | |