Skip to content

Commit 1b5b4fa

Browse files
committed
add tests for using address table
poop
1 parent d4a5d9b commit 1b5b4fa

File tree

18 files changed

+511
-200
lines changed

18 files changed

+511
-200
lines changed

cardano-chain-gen/test/Test/Cardano/Db/Mock/Config.hs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -302,21 +302,21 @@ mkConfigFile :: FilePath -> FilePath -> ConfigFile
302302
mkConfigFile staticDir cliConfigFilename =
303303
ConfigFile $ staticDir </> cliConfigFilename
304304

305-
configPruneForceTxIn :: SyncNodeConfig -> SyncNodeConfig
306-
configPruneForceTxIn cfg = do
307-
cfg {dncInsertOptions = (dncInsertOptions cfg) {sioTxOut = TxOutConsumedPrune (ForceTxIn True) (UseTxOutAddress False)}}
305+
configPruneForceTxIn :: Bool -> SyncNodeConfig -> SyncNodeConfig
306+
configPruneForceTxIn useTxOutAddress cfg = do
307+
cfg {dncInsertOptions = (dncInsertOptions cfg) {sioTxOut = TxOutConsumedPrune (ForceTxIn True) (UseTxOutAddress useTxOutAddress)}}
308308

309-
configPrune :: SyncNodeConfig -> SyncNodeConfig
310-
configPrune cfg = do
311-
cfg {dncInsertOptions = (dncInsertOptions cfg) {sioTxOut = TxOutConsumedPrune (ForceTxIn False) (UseTxOutAddress False)}}
309+
configPrune :: Bool -> SyncNodeConfig -> SyncNodeConfig
310+
configPrune useTxOutAddress cfg = do
311+
cfg {dncInsertOptions = (dncInsertOptions cfg) {sioTxOut = TxOutConsumedPrune (ForceTxIn False) (UseTxOutAddress useTxOutAddress)}}
312312

313-
configConsume :: SyncNodeConfig -> SyncNodeConfig
314-
configConsume cfg = do
315-
cfg {dncInsertOptions = (dncInsertOptions cfg) {sioTxOut = TxOutConsumed (ForceTxIn False) (UseTxOutAddress False)}}
313+
configConsume :: Bool -> SyncNodeConfig -> SyncNodeConfig
314+
configConsume useTxOutAddress cfg = do
315+
cfg {dncInsertOptions = (dncInsertOptions cfg) {sioTxOut = TxOutConsumed (ForceTxIn False) (UseTxOutAddress useTxOutAddress)}}
316316

317-
configBootstrap :: SyncNodeConfig -> SyncNodeConfig
318-
configBootstrap cfg = do
319-
cfg {dncInsertOptions = (dncInsertOptions cfg) {sioTxOut = TxOutConsumedBootstrap (ForceTxIn False) (UseTxOutAddress False)}}
317+
configBootstrap :: Bool -> SyncNodeConfig -> SyncNodeConfig
318+
configBootstrap useTxOutAddress cfg = do
319+
cfg {dncInsertOptions = (dncInsertOptions cfg) {sioTxOut = TxOutConsumedBootstrap (ForceTxIn False) (UseTxOutAddress useTxOutAddress)}}
320320

321321
configPlutusDisable :: SyncNodeConfig -> SyncNodeConfig
322322
configPlutusDisable cfg = do

cardano-chain-gen/test/Test/Cardano/Db/Mock/Unit/Babbage.hs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,9 @@ unitTests iom knownMigrations =
3434
[ testCase "default insert config" Config.defaultInsertConfig
3535
, testCase "insert config" Config.insertConfig
3636
, testGroup
37-
"consumed-tx-out and prune-tx-out"
37+
"tx-out"
3838
[ test "basic prune" MigrateConsumedPruneTxOut.basicPrune
39+
, test "basic prune with address table" MigrateConsumedPruneTxOut.basicPruneWithAddress
3940
, test "prune with simple rollback" MigrateConsumedPruneTxOut.pruneWithSimpleRollback
4041
, test "prune with full tx rollback" MigrateConsumedPruneTxOut.pruneWithFullTxRollback
4142
, test "pruning should keep some tx" MigrateConsumedPruneTxOut.pruningShouldKeepSomeTx
@@ -47,6 +48,20 @@ unitTests iom knownMigrations =
4748
, expectFailSilent "set prune flag, restart missing prune flag" $ MigrateConsumedPruneTxOut.pruneRestartMissingFlag iom knownMigrations
4849
, expectFailSilent "set bootstrap flag, restart missing bootstrap flag" $ MigrateConsumedPruneTxOut.bootstrapRestartMissingFlag iom knownMigrations
4950
]
51+
, testGroup
52+
"tx-out using Address table"
53+
[ test "basic prune with address table" MigrateConsumedPruneTxOut.basicPruneWithAddress
54+
, test "prune with simple rollback with address table" MigrateConsumedPruneTxOut.pruneWithSimpleRollbackWithAddress
55+
, test "prune with full tx rollback with address table" MigrateConsumedPruneTxOut.pruneWithFullTxRollbackWithAddress
56+
, test "pruning should keep some tx with address table" MigrateConsumedPruneTxOut.pruningShouldKeepSomeTxWithAddress
57+
, test "prune and rollback one block with address table" MigrateConsumedPruneTxOut.pruneAndRollBackOneBlockWithAddress
58+
, test "no pruning and rollback with address table" MigrateConsumedPruneTxOut.noPruneAndRollBackWithAddress
59+
, test "prune same block with address table" MigrateConsumedPruneTxOut.pruneSameBlockWithAddress
60+
, test "no pruning same block with address table" MigrateConsumedPruneTxOut.noPruneSameBlockWithAddress
61+
, expectFailSilent "restart with new consumed set to false, with address table" $ MigrateConsumedPruneTxOut.migrateAndPruneRestartWithAddress iom knownMigrations
62+
, expectFailSilent "set prune flag, restart missing prune flag, with address table" $ MigrateConsumedPruneTxOut.pruneRestartMissingFlagWithAddress iom knownMigrations
63+
, expectFailSilent "set bootstrap flag, restart missing bootstrap flag, with address table" $ MigrateConsumedPruneTxOut.bootstrapRestartMissingFlagWithAddress iom knownMigrations
64+
]
5065
]
5166
, testGroup
5267
"simple"

cardano-chain-gen/test/Test/Cardano/Db/Mock/Unit/Babbage/Config/MigrateConsumedPruneTxOut.hs

Lines changed: 100 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,27 @@
77

88
module Test.Cardano.Db.Mock.Unit.Babbage.Config.MigrateConsumedPruneTxOut (
99
basicPrune,
10+
basicPruneWithAddress,
1011
pruneWithSimpleRollback,
12+
pruneWithSimpleRollbackWithAddress,
1113
pruneWithFullTxRollback,
14+
pruneWithFullTxRollbackWithAddress,
1215
pruningShouldKeepSomeTx,
16+
pruningShouldKeepSomeTxWithAddress,
1317
pruneAndRollBackOneBlock,
18+
pruneAndRollBackOneBlockWithAddress,
1419
noPruneAndRollBack,
20+
noPruneAndRollBackWithAddress,
1521
pruneSameBlock,
22+
pruneSameBlockWithAddress,
1623
noPruneSameBlock,
24+
noPruneSameBlockWithAddress,
1725
migrateAndPruneRestart,
26+
migrateAndPruneRestartWithAddress,
1827
pruneRestartMissingFlag,
28+
pruneRestartMissingFlagWithAddress,
1929
bootstrapRestartMissingFlag,
30+
bootstrapRestartMissingFlagWithAddress,
2031
) where
2132

2233
import Cardano.Db (TxOutTableType (..))
@@ -41,7 +52,7 @@ import Test.Cardano.Db.Mock.Config (
4152
startDBSync,
4253
stopDBSync,
4354
txOutTableTypeFromConfig,
44-
withCustomConfig,
55+
withCustomConfigAndDropDB,
4556
)
4657
import Test.Cardano.Db.Mock.Examples (mockBlock0, mockBlock1)
4758
import Test.Cardano.Db.Mock.UnifiedApi (
@@ -59,8 +70,14 @@ import Test.Tasty.HUnit (Assertion)
5970
-- Tests
6071
------------------------------------------------------------------------------
6172
basicPrune :: IOManager -> [(Text, Text)] -> Assertion
62-
basicPrune = do
63-
withCustomConfig cmdLineArgs (Just configPruneForceTxIn) babbageConfigDir testLabel $ \interpreter mockServer dbSyncEnv -> do
73+
basicPrune = peformBasicPrune False
74+
75+
basicPruneWithAddress :: IOManager -> [(Text, Text)] -> Assertion
76+
basicPruneWithAddress = peformBasicPrune True
77+
78+
peformBasicPrune :: Bool -> IOManager -> [(Text, Text)] -> Assertion
79+
peformBasicPrune useTxOutAddress = do
80+
withCustomConfigAndDropDB cmdLineArgs (Just $ configPruneForceTxIn useTxOutAddress) babbageConfigDir testLabel $ \interpreter mockServer dbSyncEnv -> do
6481
let txOutTableType = txOutTableTypeFromConfig dbSyncEnv
6582
startDBSync dbSyncEnv
6683
-- add 50 block
@@ -84,8 +101,14 @@ basicPrune = do
84101
testLabel = "configPrune"
85102

86103
pruneWithSimpleRollback :: IOManager -> [(Text, Text)] -> Assertion
87-
pruneWithSimpleRollback = do
88-
withCustomConfig cmdLineArgs (Just configPruneForceTxIn) babbageConfigDir testLabel $ \interpreter mockServer dbSyncEnv -> do
104+
pruneWithSimpleRollback = peformPruneWithSimpleRollback False
105+
106+
pruneWithSimpleRollbackWithAddress :: IOManager -> [(Text, Text)] -> Assertion
107+
pruneWithSimpleRollbackWithAddress = peformPruneWithSimpleRollback True
108+
109+
peformPruneWithSimpleRollback :: Bool -> IOManager -> [(Text, Text)] -> Assertion
110+
peformPruneWithSimpleRollback useTxOutAddress = do
111+
withCustomConfigAndDropDB cmdLineArgs (Just $ configPruneForceTxIn useTxOutAddress) babbageConfigDir testLabel $ \interpreter mockServer dbSyncEnv -> do
89112
let txOutTableType = txOutTableTypeFromConfig dbSyncEnv
90113
blk0 <- forgeNext interpreter mockBlock0
91114
blk1 <- forgeNext interpreter mockBlock1
@@ -110,8 +133,14 @@ pruneWithSimpleRollback = do
110133
testLabel = "configPruneSimpleRollback"
111134

112135
pruneWithFullTxRollback :: IOManager -> [(Text, Text)] -> Assertion
113-
pruneWithFullTxRollback = do
114-
withCustomConfig cmdLineArgs (Just configPruneForceTxIn) babbageConfigDir testLabel $ \interpreter mockServer dbSyncEnv -> do
136+
pruneWithFullTxRollback = performPruneWithFullTxRollback False
137+
138+
pruneWithFullTxRollbackWithAddress :: IOManager -> [(Text, Text)] -> Assertion
139+
pruneWithFullTxRollbackWithAddress = performPruneWithFullTxRollback True
140+
141+
performPruneWithFullTxRollback :: Bool -> IOManager -> [(Text, Text)] -> Assertion
142+
performPruneWithFullTxRollback useTxOutAddress = do
143+
withCustomConfigAndDropDB cmdLineArgs (Just $ configPruneForceTxIn useTxOutAddress) babbageConfigDir testLabel $ \interpreter mockServer dbSyncEnv -> do
115144
let txOutTableType = txOutTableTypeFromConfig dbSyncEnv
116145
startDBSync dbSyncEnv
117146
blk0 <- forgeNextFindLeaderAndSubmit interpreter mockServer []
@@ -140,8 +169,14 @@ pruneWithFullTxRollback = do
140169
-- The tx in the last, 2 x securityParam worth of blocks should not be pruned.
141170
-- In these tests, 2 x securityParam = 20 blocks.
142171
pruningShouldKeepSomeTx :: IOManager -> [(Text, Text)] -> Assertion
143-
pruningShouldKeepSomeTx = do
144-
withCustomConfig cmdLineArgs (Just configPrune) babbageConfigDir testLabel $ \interpreter mockServer dbSyncEnv -> do
172+
pruningShouldKeepSomeTx = performPruningShouldKeepSomeTx False
173+
174+
pruningShouldKeepSomeTxWithAddress :: IOManager -> [(Text, Text)] -> Assertion
175+
pruningShouldKeepSomeTxWithAddress = performPruningShouldKeepSomeTx True
176+
177+
performPruningShouldKeepSomeTx :: Bool -> IOManager -> [(Text, Text)] -> Assertion
178+
performPruningShouldKeepSomeTx useTxOutAddress = do
179+
withCustomConfigAndDropDB cmdLineArgs (Just $ configPrune useTxOutAddress) babbageConfigDir testLabel $ \interpreter mockServer dbSyncEnv -> do
145180
startDBSync dbSyncEnv
146181
let txOutTableType = txOutTableTypeFromConfig dbSyncEnv
147182
b1 <- forgeAndSubmitBlocks interpreter mockServer 80
@@ -164,8 +199,14 @@ pruningShouldKeepSomeTx = do
164199

165200
-- prune with rollback
166201
pruneAndRollBackOneBlock :: IOManager -> [(Text, Text)] -> Assertion
167-
pruneAndRollBackOneBlock = do
168-
withCustomConfig cmdLineArgs (Just configPruneForceTxIn) babbageConfigDir testLabel $ \interpreter mockServer dbSyncEnv -> do
202+
pruneAndRollBackOneBlock = performPruneAndRollBackOneBlock False
203+
204+
pruneAndRollBackOneBlockWithAddress :: IOManager -> [(Text, Text)] -> Assertion
205+
pruneAndRollBackOneBlockWithAddress = performPruneAndRollBackOneBlock True
206+
207+
performPruneAndRollBackOneBlock :: Bool -> IOManager -> [(Text, Text)] -> Assertion
208+
performPruneAndRollBackOneBlock useTxOutAddress = do
209+
withCustomConfigAndDropDB cmdLineArgs (Just $ configPruneForceTxIn useTxOutAddress) babbageConfigDir testLabel $ \interpreter mockServer dbSyncEnv -> do
169210
startDBSync dbSyncEnv
170211
let txOutTableType = txOutTableTypeFromConfig dbSyncEnv
171212
void $ forgeAndSubmitBlocks interpreter mockServer 98
@@ -197,8 +238,14 @@ pruneAndRollBackOneBlock = do
197238

198239
-- consume with rollback
199240
noPruneAndRollBack :: IOManager -> [(Text, Text)] -> Assertion
200-
noPruneAndRollBack = do
201-
withCustomConfig cmdLineArgs (Just configConsume) babbageConfigDir testLabel $ \interpreter mockServer dbSyncEnv -> do
241+
noPruneAndRollBack = performNoPruneAndRollBack False
242+
243+
noPruneAndRollBackWithAddress :: IOManager -> [(Text, Text)] -> Assertion
244+
noPruneAndRollBackWithAddress = performNoPruneAndRollBack True
245+
246+
performNoPruneAndRollBack :: Bool -> IOManager -> [(Text, Text)] -> Assertion
247+
performNoPruneAndRollBack useTxOutAddress = do
248+
withCustomConfigAndDropDB cmdLineArgs (Just $ configConsume useTxOutAddress) babbageConfigDir testLabel $ \interpreter mockServer dbSyncEnv -> do
202249
startDBSync dbSyncEnv
203250
let txOutTableType = txOutTableTypeFromConfig dbSyncEnv
204251
void $ forgeAndSubmitBlocks interpreter mockServer 98
@@ -229,8 +276,14 @@ noPruneAndRollBack = do
229276
testLabel = "configPruneAndRollBack"
230277

231278
pruneSameBlock :: IOManager -> [(Text, Text)] -> Assertion
232-
pruneSameBlock =
233-
withCustomConfig cmdLineArgs (Just configPruneForceTxIn) babbageConfigDir testLabel $ \interpreter mockServer dbSyncEnv -> do
279+
pruneSameBlock = performPruneSameBlock False
280+
281+
pruneSameBlockWithAddress :: IOManager -> [(Text, Text)] -> Assertion
282+
pruneSameBlockWithAddress = performPruneSameBlock True
283+
284+
performPruneSameBlock :: Bool -> IOManager -> [(Text, Text)] -> Assertion
285+
performPruneSameBlock useTxOutAddress =
286+
withCustomConfigAndDropDB cmdLineArgs (Just $ configPruneForceTxIn useTxOutAddress) babbageConfigDir testLabel $ \interpreter mockServer dbSyncEnv -> do
234287
startDBSync dbSyncEnv
235288
let txOutTableType = txOutTableTypeFromConfig dbSyncEnv
236289
void $ forgeAndSubmitBlocks interpreter mockServer 76
@@ -255,8 +308,14 @@ pruneSameBlock =
255308
testLabel = "configPruneSameBlock"
256309

257310
noPruneSameBlock :: IOManager -> [(Text, Text)] -> Assertion
258-
noPruneSameBlock =
259-
withCustomConfig cmdLineArgs (Just configConsume) babbageConfigDir testLabel $ \interpreter mockServer dbSyncEnv -> do
311+
noPruneSameBlock = performNoPruneSameBlock False
312+
313+
noPruneSameBlockWithAddress :: IOManager -> [(Text, Text)] -> Assertion
314+
noPruneSameBlockWithAddress = performNoPruneSameBlock True
315+
316+
performNoPruneSameBlock :: Bool -> IOManager -> [(Text, Text)] -> Assertion
317+
performNoPruneSameBlock useTxOutAddress =
318+
withCustomConfigAndDropDB cmdLineArgs (Just $ configConsume useTxOutAddress) babbageConfigDir testLabel $ \interpreter mockServer dbSyncEnv -> do
260319
startDBSync dbSyncEnv
261320
let txOutTableType = txOutTableTypeFromConfig dbSyncEnv
262321
void $ forgeAndSubmitBlocks interpreter mockServer 96
@@ -278,8 +337,14 @@ noPruneSameBlock =
278337
testLabel = "configNoPruneSameBlock"
279338

280339
migrateAndPruneRestart :: IOManager -> [(Text, Text)] -> Assertion
281-
migrateAndPruneRestart = do
282-
withCustomConfig cmdLineArgs (Just configConsume) babbageConfigDir testLabel $ \interpreter mockServer dbSyncEnv -> do
340+
migrateAndPruneRestart = performMigrateAndPruneRestart False
341+
342+
migrateAndPruneRestartWithAddress :: IOManager -> [(Text, Text)] -> Assertion
343+
migrateAndPruneRestartWithAddress = performMigrateAndPruneRestart True
344+
345+
performMigrateAndPruneRestart :: Bool -> IOManager -> [(Text, Text)] -> Assertion
346+
performMigrateAndPruneRestart useTxOutAddress = do
347+
withCustomConfigAndDropDB cmdLineArgs (Just $ configConsume useTxOutAddress) babbageConfigDir testLabel $ \interpreter mockServer dbSyncEnv -> do
283348
startDBSync dbSyncEnv
284349
void $ forgeAndSubmitBlocks interpreter mockServer 50
285350
assertBlockNoBackoff dbSyncEnv 50
@@ -297,8 +362,14 @@ migrateAndPruneRestart = do
297362
testLabel = "configMigrateAndPruneRestart"
298363

299364
pruneRestartMissingFlag :: IOManager -> [(Text, Text)] -> Assertion
300-
pruneRestartMissingFlag = do
301-
withCustomConfig cmdLineArgs (Just configPruneForceTxIn) babbageConfigDir testLabel $ \interpreter mockServer dbSyncEnv -> do
365+
pruneRestartMissingFlag = performPruneRestartMissingFlag False
366+
367+
pruneRestartMissingFlagWithAddress :: IOManager -> [(Text, Text)] -> Assertion
368+
pruneRestartMissingFlagWithAddress = performPruneRestartMissingFlag True
369+
370+
performPruneRestartMissingFlag :: Bool -> IOManager -> [(Text, Text)] -> Assertion
371+
performPruneRestartMissingFlag useTxOutAddress = do
372+
withCustomConfigAndDropDB cmdLineArgs (Just $ configPruneForceTxIn useTxOutAddress) babbageConfigDir testLabel $ \interpreter mockServer dbSyncEnv -> do
302373
startDBSync dbSyncEnv
303374
void $ forgeAndSubmitBlocks interpreter mockServer 50
304375
assertBlockNoBackoff dbSyncEnv 50
@@ -316,8 +387,14 @@ pruneRestartMissingFlag = do
316387
testLabel = "configPruneRestartMissingFlag"
317388

318389
bootstrapRestartMissingFlag :: IOManager -> [(Text, Text)] -> Assertion
319-
bootstrapRestartMissingFlag = do
320-
withCustomConfig cmdLineArgs (Just configBootstrap) babbageConfigDir testLabel $ \interpreter mockServer dbSyncEnv -> do
390+
bootstrapRestartMissingFlag = performBootstrapRestartMissingFlag False
391+
392+
bootstrapRestartMissingFlagWithAddress :: IOManager -> [(Text, Text)] -> Assertion
393+
bootstrapRestartMissingFlagWithAddress = performBootstrapRestartMissingFlag True
394+
395+
performBootstrapRestartMissingFlag :: Bool -> IOManager -> [(Text, Text)] -> Assertion
396+
performBootstrapRestartMissingFlag useTxOutAddress = do
397+
withCustomConfigAndDropDB cmdLineArgs (Just $ configBootstrap useTxOutAddress) babbageConfigDir testLabel $ \interpreter mockServer dbSyncEnv -> do
321398
startDBSync dbSyncEnv
322399
void $ forgeAndSubmitBlocks interpreter mockServer 50
323400
assertBlockNoBackoff dbSyncEnv 50

cardano-chain-gen/test/Test/Cardano/Db/Mock/Unit/Conway.hs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,29 @@ unitTests iom knownMigrations =
6262
"set bootstrap flag, restart missing bootstrap flag"
6363
$ MigrateConsumedPruneTxOut.bootstrapRestartMissingFlag iom knownMigrations
6464
]
65+
, testGroup
66+
"tx-out with use_address_table config"
67+
[ test "basic prune, with use_address_table config" MigrateConsumedPruneTxOut.basicPruneWithAddress
68+
, test "prune with simple rollback, with use_address_table config" MigrateConsumedPruneTxOut.pruneWithSimpleRollbackWithAddress
69+
, test "prune with full tx rollback, with use_address_table config" MigrateConsumedPruneTxOut.pruneWithFullTxRollbackWithAddress
70+
, test "pruning should keep some tx, with use_address_table config" MigrateConsumedPruneTxOut.pruningShouldKeepSomeTxWithAddress
71+
, test "prune and rollback one block, with use_address_table config" MigrateConsumedPruneTxOut.pruneAndRollBackOneBlockWithAddress
72+
, test "no pruning and rollback, with use_address_table config" MigrateConsumedPruneTxOut.noPruneAndRollBackWithAddress
73+
, test "prune same block, with use_address_table config" MigrateConsumedPruneTxOut.pruneSameBlockWithAddress
74+
, test "no pruning same block, with use_address_table config" MigrateConsumedPruneTxOut.noPruneSameBlockWithAddress
75+
, expectFailSilent
76+
"restart with new consumed set to false, with use_address_table config"
77+
$ MigrateConsumedPruneTxOut.migrateAndPruneRestartWithAddress iom knownMigrations
78+
, expectFailSilent
79+
"set prune flag, restart missing prune flag, with use_address_table config"
80+
$ MigrateConsumedPruneTxOut.pruneRestartMissingFlagWithAddress iom knownMigrations
81+
, expectFailSilent
82+
"set bootstrap flag, restart missing bootstrap flag, with use_address_table config"
83+
$ MigrateConsumedPruneTxOut.bootstrapRestartMissingFlagWithAddress iom knownMigrations
84+
, expectFailSilent
85+
"populate db then reset with use_address_table config config active"
86+
$ MigrateConsumedPruneTxOut.populateDbRestartWithAddressConfig iom knownMigrations
87+
]
6588
]
6689
, testGroup
6790
"simple"

0 commit comments

Comments
 (0)