-
Notifications
You must be signed in to change notification settings - Fork 33
Open
Description
Internal
Describe the feature you'd like
With #1422 we have CDDL definitions for all data that consensus emits:
- Disk
- snapshot
- block
- Node-to-node
- Header
- Block
- Point
- Tip
- Tx
- TxId
- TicketNo
- Node-to-client
- Tx
- TxId
- SlotNo
- Local state queries
We should implement the following tests based on them:
Is Haskell serialization stable?
flowchart LR
A[Haskell datatype] -->|define| B[Haskell Example]
B -->|encode| C[CBOR file]
C --> D{are equal}
E[Golden file] --> D
D --> Ok
D --> Fail
Do Haskell serializers roundtrip?
flowchart LR
A[Haskell datatype] -->|generate| B[Haskell value 1]
B -->|encode| C[CBOR file 1]
C -->|decode| D[Haskell value 2]
B --> E{are equal}
D --> E
E --> Ok1[Ok]
E --> Fail1[Fail]
D -->|encode| F[CBOR file 2]
F --> G{are equal}
C --> G
G --> Ok
G --> Fail
Are Haskell serializers and deserializers compliant with CDDL?
flowchart LR
A[Haskell datatype] -->|generate| B[Haskell value]
B -->|encode| C[CBOR file]
C --> D{\`cddl validate\`}
D --> Ok
D --> Fail
M[CDDL definition] --> D
M -->|\`cddl generate\`| N[CBOR file]
N --> O{decode}
O --> Ok2[Ok]
O --> Fail2[Fail]
Metadata
Metadata
Assignees
Labels
No labels