Skip to content

[FEAT] - More thorough CDDL and Golden testing #1430

@jasagredo

Description

@jasagredo

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
Loading

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
Loading

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]
Loading

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions