IntersectMBO / IntersectMBO/ouroboros-consensus

[FEAT] - More thorough CDDL and Golden testing

Open
#1,430 0 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.