IntersectMBO / IntersectMBO/ouroboros-consensus
[FEAT] - More thorough CDDL and Golden testing
- Dominant language
- Haskell
- Stars
- 67
- Forks
- 43
- Avg merge
- 5d 13h
- Merged PRs (30d)
- 43
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?
```mermaid
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?
```mermaid
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?
```mermaid
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]
```
Contributor guide
Assessment
This issue has not been assessed yet.