Tests comparing against cardano-cli, on top of cardano-testnet and tx-generator - #8
Merged
Merged
IOG Hydra / ci/hydra-build:x86_64-linux.required
failed
Jul 3, 2026 in 0s
Build dependency failed
1 failed steps
Details
Failed Steps
Step 1
Derivation
/nix/store/rkcvr61hchwbab4k6jpkq5bj24n8sk8p-ogmios-test-unit-0-check.drv
Log
Running phase: unpackPhase
unpacking source archive /nix/store/ad5z79638s982l1hxfcbmnmy2sg0vyws-ogmios-src-test-unit-root
source root is ogmios-src-test-unit-root
Running phase: patchPhase
Running phase: buildPhase
/nix/store/2kjkpan41jca224j8a0la1dzpn1fmn92-ogmios-test-unit-0/bin:
patching script interpreter paths in /build/tmp.uWKPNx8qjO/bin
Ogmios.App.Protocol
onUnmatchedMessage
%$@#$ => must be a well-formed JSON object [✔]
{} => 'method' must be present [✔]
{"method":"queryLedgerState"} => missing required field 'jsonrpc' [✔]
{"jsonrpc":"2.0","method":"??"} => unknown method in 'method' [✔]
{"id":{"requestId":42},"method":"submitTransaction"} => missing required field 'jsonrpc' [✔]
Ogmios.App.Protocol.ChainSync
ChainSync
Basic send/recv [✔]
+++ OK, passed 200 tests:
50.5% without mirror
49.5% with mirror
Saturate in-flight queue [✔]
+++ OK, passed 100 tests:
66% =~ maxInFlight
45% > maxInFlight
41% < maxInFlight
Interleave findIntersection with nextBlock [✔]
+++ OK, passed 400 tests:
27.8% -mirror -mirror
26.2% +mirror +mirror
24.0% -mirror +mirror
22.0% +mirror -mirror
Ogmios.App.Protocol.TxMonitor
TxMonitor
Any sequence acquire/has/next/size is valid [✔]
+++ OK, passed 100 tests:
27% NextTransaction then HasTransaction
7% Multiple NextTransaction
4% AcquireMempool twice
Can and must query after acquiring [✔]
+++ OK, passed 100 tests:
60% NextTransaction
19% HasTransaction
15% SizeOfMempool
6% ReleaseMempool
Ogmios.App.Protocol.TxSubmission
newEvaluateTransactionResponse
resulting UTxO is the union of network <> user-defined [✔]
+++ OK, passed 100 tests:
90% none = ø
6% user = ø
5% network = ø
1% both = ø
succeeds when fully identical [✔]
+++ OK, passed 100 tests.
fails on ambiguous intersection [✔]
+++ OK, passed 100 tests.
Ogmios.Data.Health
Eq/Show/Json
Health / Health {startTime = 2026-06-04 15:49:13.479826279 UTC, lastKnownTip = TipGenesis, lastTipUpdate = Nothing, networkSynchronization = Nothing, currentEra = Nothing, metrics = Metrics {runtimeStats = RuntimeStats {maxHeapSize = 0, currentHeapSize = 0, cpuTime = 0, gcCpuTime = 0}, activeConnections = 0, totalConnections = 0, sessionDurations = DistributionStats {mean = 0.0, min = 0.0, max = 0.0}, totalMessages = 0, totalUnrouted = 0}, connectionStatus = Disconnected, currentEpoch = Nothing, slotInEpoch = Nothing, version = "nightly (unknown )", network = Nothing} / "{\"startTime\":\"2026-06-04T15:49:13.479826279Z\",\"lastKnownTip\":\"origin\",\"lastTipUpdate\":null,\"networkSynchronization\":null,\"currentEra\":null,\"metrics\":{\"activeConnections\":0,\"runtimeStats\":{\"cpuTime\":0,\"currentHeapSize\":0,\"gcCpuTime\":0,\"maxHeapSize\":0},\"sessionDurations\":{\"max\":0,\"mean\":0,\"min\":0},\"totalConnections\":0,\"totalMessages\":0,\"totalUnrouted\":0},\"connectionStatus\":\"disconnected\",\"currentEpoch\":null,\"slotInEpoch\":null,\"version\":\"nightly (unknown )\",\"network\":null}" [✔]
NetworkSynchronization
is encoded as plain decimals, no scientific notation
NetworkSynchronization 1.0 -> "1.00000" [✔]
NetworkSynchronization 0.1 -> "0.10000" [✔]
NetworkSynchronization 1.0e-2 -> "0.01000" [✔]
NetworkSynchronization 1.0e-3 -> "0.00100" [✔]
NetworkSynchronization 1.0e-4 -> "0.00010" [✔]
NetworkSynchronization 1.0e-5 -> "0.00001" [✔]
NetworkSynchronization 1.0e-6 -> "0.00000" [✔]
properties
not always equal to 1 [✔]
+++ OK, failed as expected. Falsified (after 1 test):
SystemStart 2003-10-29 00:00:00.00000001346 UTC
2004-01-08 00:03:43.00000001346 UTC
RelativeTime 2918113s
NetworkSynchronization 0.47567 /= NetworkSynchronization 1.0
always between 0 and 1 [✔]
+++ OK, passed 100 tests.
increasing relative time increases synchronization [✔]
+++ OK, passed 100 tests.
is precise with a margin of 60s, rounded up [✔]
+++ OK, passed 100 tests.
Ogmios.Data.Json
JSON roundtrips
encodeUtxo / decodeUtxo (Babbage) [✔]
+++ OK, passed 100 tests.
Golden: Utxo_1.json [✔]
Golden: Utxo_2.json [✔]
Golden: Utxo_3.json [✔]
Golden: Utxo_4.json [✔]
Golden: Script_Native_0.json [✔]
Golden: SubmitTransactionFailure<3133> [✔]
Golden: NextTransactionResponse_1 [✔]
Data / BinaryData
arbitrary [✔]
+++ OK, passed 100 tests.
Golden (1) [✔]
+++ OK, passed 100 tests.
Golden (2) [✔]
+++ OK, passed 100 tests.
SlotLength
SlotLength 1s → "{\"milliseconds\":1000}" [✔]
SlotLength 0.1s → "{\"milliseconds\":100}" [✔]
SlotLength 42s → "{\"milliseconds\":42000}" [✔]
RelativeTime
Do not overflow [✔]
validate chain-sync request/response against JSON-schema
ogmios.json#/properties/FindIntersection [✔]
+++ OK, passed 10 tests.
ogmios.json#/properties/FindIntersectionResponse [✔]
+++ OK, passed 10 tests.
ogmios.json#/properties/NextBlock [✔]
+++ OK, passed 3 tests.
ogmios.json#/properties/NextBlockResponse [✔]
+++ OK, passed 50 tests.
validate transaction submission request/response against JSON-schema
deserialise signed transactions [✔]
+++ OK, passed 100 tests.
ogmios.json#/properties/SubmitTransactionResponse [✘]
ogmios.json#/properties/EvaluateTransactionResponse [✔]
+++ OK, passed 50 tests.
validate mempool monitoring request/response against JSON-schema
ogmios.json#/properties/AcquireMempool [✔]
+++ OK, passed 10 tests.
ogmios.json#/properties/AcquireMempoolResponse [✔]
+++ OK, passed 10 tests.
ogmios.json#/properties/NextTransaction [✔]
+++ OK, passed 10 tests.
ogmios.json#/properties/NextTransactionResponse [✔]
+++ OK, passed 10 tests.
ogmios.json#/properties/NextTransactionResponse [✔]
+++ OK, passed 10 tests.
ogmios.json#/properties/HasTransaction [✔]
+++ OK, passed 10 tests.
ogmios.json#/properties/HasTransactionResponse [✔]
+++ OK, passed 10 tests.
ogmios.json#/properties/SizeOfMempool [✔]
+++ OK, passed 10 tests.
ogmios.json#/properties/SizeOfMempoolResponse [✔]
+++ OK, passed 10 tests.
ogmios.json#/properties/ReleaseMempool [✔]
+++ OK, passed 10 tests.
ogmios.json#/properties/ReleaseMempoolResponse [✔]
+++ OK, passed 10 tests.
validate acquire request/response against JSON-schema
ogmios.json#/properties/AcquireLedgerState [✔]
+++ OK, passed 10 tests.
ogmios.json#/properties/AcquireLedgerStateResponse [✔]
+++ OK, passed 10 tests.
validate local state queries against JSON-schema
QueryLedgerStateEpoch [✔]
QueryLedgerStateEraStart [✔]
QueryLedgerStateEraSummaries [✔]
QueryLedgerStateTip [✔]
QueryLedgerStateProjectedRewards [✔]
QueryLedgerStateProjectedRewards [✔]
QueryLedgerStateRewardAccountSummaries [✔]
QueryLedgerStateProtocolParameters [✔]
QueryLedgerStateLiveStakeDistribution [✔]
QueryLedgerStateUtxo [✔]
QueryLedgerStateUtxo [✔]
QueryLedgerStateUtxo [✔]
QueryLedgerStateRewardsProvenance [✔]
QueryLedgerStateStakePools [✔]
QueryLedgerStateStakePools [✔]
QueryLedgerStateStakePools [✔]
QueryLedgerStateStakePools [✔]
QueryLedgerStateStakePools [✔]
QueryLedgerStateStakePools [✔]
QueryLedgerStateStakePoolsPerformances [✔]
QueryLedgerStateConstitution [✔]
QueryLedgerStateConstitutionalCommittee [✔]
QueryLedgerStateTreasuryAndReserves [✔]
QueryLedgerStateGovernanceProposals [✔]
QueryLedgerStateGovernanceProposals [✔]
QueryLedgerStateDelegateRepresentatives [✔]
QueryLedgerStateDelegateRepresentatives [✔]
QueryLedgerStateDelegateRepresentatives [✔]
QueryLedgerStateDelegateRepresentatives [✔]
QueryLedgerStateDelegateRepresentatives [✔]
QueryNetworkBlockHeight [✔]
QueryNetworkGenesisConfiguration (Shelley) [✔]
QueryNetworkGenesisConfiguration (Alonzo) [✔]
QueryNetworkStartTime [✔]
QueryNetworkTip [✔]
validate release request/response against JSON-schema
ogmios.json#/properties/ReleaseLedgerState [✔]
+++ OK, passed 3 tests.
ogmios.json#/properties/ReleaseLedgerStateResponse [✔]
+++ OK, passed 3 tests.
Ogmios.Data.Metrics
Eq/Show/Json
Metrics / Metrics {runtimeStats = RuntimeStats {maxHeapSize = 0, currentHeapSize = 0, cpuTime = 0, gcCpuTime = 0}, activeConnections = 0, totalConnections = 0, sessionDurations = DistributionStats {mean = 0.0, min = 0.0, max = 0.0}, totalMessages = 0, totalUnrouted = 0} / "{\"activeConnections\":0,\"runtimeStats\":{\"cpuTime\":0,\"currentHeapSize\":0,\"gcCpuTime\":0,\"maxHeapSize\":0},\"sessionDurations\":{\"max\":0,\"mean\":0,\"min\":0},\"totalConnections\":0,\"totalMessages\":0,\"totalUnrouted\":0}" [✔]
RuntimeStats / RuntimeStats {maxHeapSize = 0, currentHeapSize = 0, cpuTime = 0, gcCpuTime = 0} / "{\"cpuTime\":0,\"currentHeapSize\":0,\"gcCpuTime\":0,\"maxHeapSize\":0}" [✔]
DistributionStats / DistributionStats {mean = 0.0, min = 0.0, max = 0.0} / "{\"max\":0,\"mean\":0,\"min\":0}" [✔]
Ogmios.Options
parseOptions(Pure)
Ogmios.OptionsSpec[63:13] [✔]
--node-socket ./node.socket [✔]
--node-config ./node.config [✔]
--node-socket /path/to/socket --node-config ./node.config [✔]
--node-socket ./node.socket --node-config /path/to/config [✔]
--node-socket ./node.socket --node-config ./node.config --host 0.0.0.0 [✔]
--node-socket ./node.socket --node-config ./node.config --port 42 [✔]
--node-socket ./node.socket --node-config ./node.config --port # [✔]
--node-socket ./node.socket --node-config ./node.config --include-cbor [✔]
--node-socket ./node.socket --node-config ./node.config --include-transaction-cbor [✔]
--node-socket ./node.socket --node-config ./node.config --include-cbor --include-transaction-cbor [✔]
--node-socket ./node.socket --node-config ./node.config --timeout 42 [✔]
--node-socket ./node.socket --node-config ./node.config --timeout # [✔]
--node-socket ./node.socket --node-config ./node.config --max-in-flight 42 [✔]
--node-socket ./node.socket --node-config ./node.config --max-in-flight # [✔]
--node-socket ./node.socket --node-config ./node.config --log-level Debug [✔]
--node-socket ./node.socket --node-config ./node.config --log-level debug [✔]
--node-socket ./node.socket --node-config ./node.config --log-level Info [✔]
--node-socket ./node.socket --node-config ./node.config --log-level info [✔]
--node-socket ./node.socket --node-config ./node.config --log-level Notice [✔]
--node-socket ./node.socket --node-config ./node.config --log-level notice [✔]
--node-socket ./node.socket --node-config ./node.config --log-level Warning [✔]
--node-socket ./node.socket --node-config ./node.config --log-level warning [✔]
--node-socket ./node.socket --node-config ./node.config --log-level Error [✔]
--node-socket ./node.socket --node-config ./node.config --log-level error [✔]
--node-socket ./node.socket --node-config ./node.config --log-level-health Notice [✔]
--node-socket ./node.socket --node-config ./node.config --log-level-metrics Debug --log-level-websocket Warning [✔]
--node-socket ./node.socket --node-config ./node.config --log-level Error --log-level-health Debug [✔]
version [✔]
-v [✔]
--version [✔]
--help [✔]
-h [✔]
invalid [✔]
test completion [✔]
parseOptions(IO)
--version [✔]
["--node-socket","./node.socket","--node-config","/build/ogmios-src-test-unit-root/server/config/network/preview/cardano-node/config.json"] [✔]
parseNetworkParameters
mainnet [✔]
preview [✔]
preprod [✔]
Failures:
test/unit/Ogmios/Data/JsonSpec.hs:310:5:
1) Ogmios.Data.Json, validate transaction submission request/response against JSON-schema, ogmios.json#/properties/SubmitTransactionResponse
Assertion failed (after 36 tests):
JSON:
{
"error": {
"code": 3004,
"data": {
"reason": "Uncomputable slot arithmetic; transaction's validity bounds go beyond the foreseeable end of the current era: �[ro%�Fw����4󳬳�컥"
},
"message": "Unable to create the evaluation context from the given transaction."
},
"id": null,
"jsonrpc": "2.0",
"method": "submitTransaction"
}
failed to validate one of given schemas:
[0]
missing required property
required: ["jsonrpc","method","result"] found: ["result"]
[0] invalid properties in object
invalid property 'error': failed to validate one of given schemas:
[0] invalid properties in object
invalid property 'code': should be one of the following values: 3005
[0] invalid properties in object
invalid property 'code': should be one of the following values: 3100
[1] invalid properties in object
invalid property 'code': should be one of the following values: 3101
[2] invalid properties in object
invalid property 'code': should be one of the following values: 3102
[3] invalid properties in object
invalid property 'code': should be one of the following values: 3103
[4] invalid properties in object
invalid property 'code': should be one of the following values: 3104
[5] invalid properties in object
invalid property 'code': should be one of the following values: 3105
[6] invalid properties in object
invalid property 'code': should be one of the following values: 3106
[7] invalid properties in object
invalid property 'code': should be one of the following values: 3107
[8] invalid properties in object
invalid property 'code': should be one of the following values: 3108
invalid additional properties
[9] invalid properties in object
invalid property 'code': should be one of the following values: 3109
[10] invalid properties in object
invalid property 'code': should be one of the following values: 3110
[11] invalid properties in object
invalid property 'code': should be one of the following values: 3111
[12] invalid properties in object
invalid property 'code': should be one of the following values: 3112
[13] invalid properties in object
invalid property 'code': should be one of the following values: 3113
[14] invalid properties in object
invalid property 'code': should be one of the following values: 3114
[15] invalid properties in object
invalid property 'code': should be one of the following values: 3115
[16] invalid properties in object
invalid property 'code': should be one of the following values: 3116
[17] invalid properties in object
invalid property 'code': should be one of the following values: 3117
[18] invalid properties in object
invalid property 'code': should be one of the following values: 3118
[19] invalid properties in object
invalid property 'code': should be one of the following values: 3119
[20] invalid properties in object
invalid property 'code': should be one of the following values: 3120
[21] invalid properties in object
invalid property 'code': should be one of the following values: 3121
invalid additional properties
[22] invalid properties in object
invalid property 'code': should be one of the following values: 3122
[23] invalid properties in object
invalid property 'code': should be one of the following values: 3123
[24] invalid properties in object
invalid property 'code': should be one of the following values: 3124
[25] invalid properties in object
invalid property 'code': should be one of the following values: 3125
[26] invalid properties in object
invalid property 'code': should be one of the following values: 3126
[27] invalid properties in object
invalid property 'code': should be one of the following values: 3127
invalid additional properties
[28] invalid properties in object
invalid property 'code': should be one of the following values: 3128
[29] invalid properties in object
invalid property 'code': should be one of the following values: 3129
[30] invalid properties in object
invalid property 'code': should be one of the following values: 3130
[31] invalid properties in object
invalid property 'code': should be one of the following values: 3131
[32] invalid properties in object
invalid property 'code': should be one of the following values: 3132
invalid additional properties
[33] invalid properties in object
invalid property 'code': should be one of the following values: 3133
[34] invalid properties in object
invalid property 'code': should be one of the following values: 3134
[35] invalid properties in object
invalid property 'code': should be one of the following values: 3135
[36] invalid properties in object
invalid property 'code': should be one of the following values: 3136
[37] invalid properties in object
invalid property 'code': should be one of the following values: 3137
[38] invalid properties in object
invalid property 'code': should be one of the following values: 3138
[39] invalid properties in object
invalid property 'code': should be one of the following values: 3139
invalid additional properties
[40] invalid properties in object
invalid property 'code': should be one of the following values: 3140
[41] invalid properties in object
invalid property 'code': should be one of the following values: 3141
[42] invalid properties in object
invalid property 'code': should be one of the following values: 3142
[43] invalid properties in object
invalid property 'code': should be one of the following values: 3143
[44] invalid properties in object
invalid property 'code': should be one of the following values: 3144
[45] invalid properties in object
invalid property 'code': should be one of the following values: 3145
[46] invalid properties in object
invalid property 'code': should be one of the following values: 3146
[47] invalid properties in object
invalid property 'code': should be one of the following values: 3147
[48] invalid properties in object
invalid property 'code': should be one of the following values: 3148
invalid additional properties
[49] invalid properties in object
invalid property 'code': should be one of the following values: 3149
invalid additional properties
[50] invalid properties in object
invalid property 'code': should be one of the following values: 3150
[51] invalid properties in object
invalid property 'code': should be one of the following values: 3151
[52] invalid properties in object
invalid property 'code': should be one of the following values: 3152
[53] invalid properties in object
invalid property 'code': should be one of the following values: 3153
[54] invalid properties in object
invalid property 'code': should be one of the following values: 3154
[55] invalid properties in object
invalid property 'code': should be one of the following values: 3155
[56] invalid properties in object
invalid property 'code': should be one of the following values: 3156
[57] invalid properties in object
invalid property 'code': should be one of the following values: 3157
[58] invalid properties in object
invalid property 'code': should be one of the following values: 3158
[59] invalid properties in object
invalid property 'code': should be one of the following values: 3159
[60] invalid properties in object
invalid property 'code': should be one of the following values: 3160
[61] invalid properties in object
invalid property 'code': should be one of the following values: 3161
[62] invalid properties in object
invalid property 'code': should be one of the following values: 3162
[63] invalid properties in object
invalid property 'code': should be one of the following values: 3163
[64] invalid properties in object
invalid property 'code': should be one of the following values: 3164
[65] invalid properties in object
invalid property 'code': should be one of the following values: 3165
invalid additional properties
[66] invalid properties in object
invalid property 'code': should be one of the following values: 3166
[67] invalid properties in object
invalid property 'code': should be one of the following values: 3167
[68] invalid properties in object
invalid property 'code': should be one of the following values: 3168
invalid additional properties
[69] invalid properties in object
invalid property 'code': should be one of the following values: 3997
[70] invalid properties in object
invalid property 'code': should be one of the following values: 3998
invalid additional properties
[1] invalid properties in object
invalid property 'error': invalid properties in object
invalid property 'code': should be one of the following values: -32602
To rerun use: --match "/Ogmios.Data.Json/validate transaction submission request/response against JSON-schema/ogmios.json#/properties/SubmitTransactionResponse/" --seed 1120387239
Randomized with seed 1120387239
Finished in 77.1217 seconds
140 examples, 1 failure
Loading