Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

1588 - remove jsonb from Schema & add config #1700

Merged
merged 8 commits into from
Jun 28, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion cardano-chain-gen/cardano-chain-gen.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,7 @@ test-suite cardano-chain-gen
Test.Cardano.Db.Mock.Unit.Conway.CommandLineArg.ConfigFile
Test.Cardano.Db.Mock.Unit.Conway.CommandLineArg.EpochDisabled
Test.Cardano.Db.Mock.Unit.Conway.CommandLineArg.ForceIndex
Test.Cardano.Db.Mock.Unit.Conway.Config.JsonbInSchema
Test.Cardano.Db.Mock.Unit.Conway.Config.Parse
Test.Cardano.Db.Mock.Unit.Conway.Config.MigrateConsumedPruneTxOut
Test.Cardano.Db.Mock.Unit.Conway.Governance
Expand Down Expand Up @@ -200,7 +201,6 @@ test-suite cardano-chain-gen
, stm
, strict-stm
, tasty
, tasty-expected-failure
, tasty-quickcheck
, text
, transformers
Expand Down
22 changes: 22 additions & 0 deletions cardano-chain-gen/test/Test/Cardano/Db/Mock/Config.hs
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ module Test.Cardano.Db.Mock.Config (
withFullConfig,
withFullConfigAndDropDB,
withFullConfigAndLogs,
withCustomConfigAndLogsAndDropDB,
withCustomConfig,
withCustomConfigAndDropDB,
withCustomConfigAndLogs,
Expand Down Expand Up @@ -438,6 +439,27 @@ withCustomConfigAndLogs =
}
)

withCustomConfigAndLogsAndDropDB ::
Cmdv marked this conversation as resolved.
Show resolved Hide resolved
CommandLineArgs ->
-- | custom SyncNodeConfig
Maybe SyncNodeConfig ->
-- | config filepath
FilePath ->
-- | test label
FilePath ->
(Interpreter -> ServerHandle IO CardanoBlock -> DBSyncEnv -> IO a) ->
IOManager ->
[(Text, Text)] ->
IO a
withCustomConfigAndLogsAndDropDB =
withFullConfig'
( WithConfigArgs
{ hasFingerprint = True
, shouldLog = True
, shouldDropDB = True
}
)

withFullConfig' ::
WithConfigArgs ->
CommandLineArgs ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ insertConfig = do
, sioGovernance = GovernanceConfig False
, sioOffchainPoolData = OffchainPoolDataConfig False
, sioJsonType = JsonTypeDisable
, sioRemoveJsonbFromSchema = RemoveJsonbFromSchemaConfig False
}

dncInsertOptions cfg @?= expected
Expand Down
10 changes: 5 additions & 5 deletions cardano-chain-gen/test/Test/Cardano/Db/Mock/Unit/Babbage.hs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ module Test.Cardano.Db.Mock.Unit.Babbage (
import Cardano.Mock.ChainSync.Server (IOManager)
import Data.Text (Text)
import Test.Tasty (TestTree, testGroup)
import Test.Tasty.ExpectedFailure (expectFail)
import Test.Tasty.HUnit (Assertion, testCase)

import qualified Test.Cardano.Db.Mock.Unit.Babbage.CommandLineArg.ConfigFile as ConfigFile
Expand All @@ -25,6 +24,7 @@ import qualified Test.Cardano.Db.Mock.Unit.Babbage.Rollback as BabRollback
import qualified Test.Cardano.Db.Mock.Unit.Babbage.Simple as BabSimple
import qualified Test.Cardano.Db.Mock.Unit.Babbage.Stake as BabStake
import qualified Test.Cardano.Db.Mock.Unit.Babbage.Tx as BabTx
import Test.Cardano.Db.Mock.Validate (expectFailSilent)

unitTests :: IOManager -> [(Text, Text)] -> TestTree
unitTests iom knownMigrations =
Expand All @@ -45,9 +45,9 @@ unitTests iom knownMigrations =
, test "no pruning and rollback" MigrateConsumedPruneTxOut.noPruneAndRollBack
, test "prune same block" MigrateConsumedPruneTxOut.pruneSameBlock
, test "no pruning same block" MigrateConsumedPruneTxOut.noPruneSameBlock
, expectFail $ test "restart with new consumed set to false" MigrateConsumedPruneTxOut.migrateAndPruneRestart
, expectFail $ test "set prune flag, restart missing prune flag" MigrateConsumedPruneTxOut.pruneRestartMissingFlag
, expectFail $ test "set bootstrap flag, restart missing bootstrap flag" MigrateConsumedPruneTxOut.bootstrapRestartMissingFlag
, expectFailSilent "restart with new consumed set to false" $ MigrateConsumedPruneTxOut.migrateAndPruneRestart iom knownMigrations
, expectFailSilent "set prune flag, restart missing prune flag" $ MigrateConsumedPruneTxOut.pruneRestartMissingFlag iom knownMigrations
, expectFailSilent "set bootstrap flag, restart missing bootstrap flag" $ MigrateConsumedPruneTxOut.bootstrapRestartMissingFlag iom knownMigrations
]
]
, testGroup
Expand All @@ -63,7 +63,7 @@ unitTests iom knownMigrations =
"Command Line Arguments"
[ testGroup
"config"
[ expectFail $ test "fails if incorrect config file given" ConfigFile.checkConfigFileArg
[ expectFailSilent "fails if incorrect config file given" $ ConfigFile.checkConfigFileArg iom knownMigrations
]
, testGroup
"disable-epoch"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ insertConfig = do
, sioGovernance = GovernanceConfig False
, sioOffchainPoolData = OffchainPoolDataConfig False
, sioJsonType = JsonTypeDisable
, sioRemoveJsonbFromSchema = RemoveJsonbFromSchemaConfig False
}

dncInsertOptions cfg @?= expected
Expand Down
39 changes: 22 additions & 17 deletions cardano-chain-gen/test/Test/Cardano/Db/Mock/Unit/Conway.hs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import Cardano.Prelude
import qualified Test.Cardano.Db.Mock.Unit.Conway.CommandLineArg.ConfigFile as ConfigFile
import qualified Test.Cardano.Db.Mock.Unit.Conway.CommandLineArg.EpochDisabled as EpochDisabled
import qualified Test.Cardano.Db.Mock.Unit.Conway.CommandLineArg.ForceIndex as ForceIndex
import qualified Test.Cardano.Db.Mock.Unit.Conway.Config.JsonbInSchema as Config
import qualified Test.Cardano.Db.Mock.Unit.Conway.Config.MigrateConsumedPruneTxOut as MigrateConsumedPruneTxOut
import qualified Test.Cardano.Db.Mock.Unit.Conway.Config.Parse as Config
import qualified Test.Cardano.Db.Mock.Unit.Conway.Governance as Governance
Expand All @@ -16,8 +17,8 @@ import qualified Test.Cardano.Db.Mock.Unit.Conway.Rollback as Rollback
import qualified Test.Cardano.Db.Mock.Unit.Conway.Simple as Simple
import qualified Test.Cardano.Db.Mock.Unit.Conway.Stake as Stake
import qualified Test.Cardano.Db.Mock.Unit.Conway.Tx as Tx
import Test.Cardano.Db.Mock.Validate (expectFailSilent)
import Test.Tasty (TestTree (), testGroup)
import Test.Tasty.ExpectedFailure (expectFail)
import Test.Tasty.HUnit (Assertion (), testCase)
import Prelude (String ())

Expand All @@ -34,6 +35,14 @@ unitTests iom knownMigrations =
, testCase "mismatched conway genesis hash" Config.wrongConwayGenesisHash
, testCase "default insert config" Config.defaultInsertConfig
, testCase "insert config" Config.insertConfig
, testGroup
"jsonb-in-schema"
[ test "jsonb in schema true" Config.configRemoveJsonbFromSchemaEnabled
, test "jsonb in schema false" Config.configRemoveJsonbFromSchemaDisabled
, test
"remove jsonb from schema and add back"
Config.configJsonbInSchemaShouldRemoveThenAdd
]
, testGroup
"tx-out"
[ test "consumed_by_tx_id column check" MigrateConsumedPruneTxOut.txConsumedColumnCheck
Expand All @@ -45,18 +54,15 @@ unitTests iom knownMigrations =
, test "no pruning and rollback" MigrateConsumedPruneTxOut.noPruneAndRollBack
, test "prune same block" MigrateConsumedPruneTxOut.pruneSameBlock
, test "no pruning same block" MigrateConsumedPruneTxOut.noPruneSameBlock
, expectFail $
test
"restart with new consumed set to false"
MigrateConsumedPruneTxOut.migrateAndPruneRestart
, expectFail $
test
"set prune flag, restart missing prune flag"
MigrateConsumedPruneTxOut.pruneRestartMissingFlag
, expectFail $
test
"set bootstrap flag, restart missing bootstrap flag"
MigrateConsumedPruneTxOut.bootstrapRestartMissingFlag
, expectFailSilent
"restart with new consumed set to false"
$ MigrateConsumedPruneTxOut.migrateAndPruneRestart iom knownMigrations
, expectFailSilent
"set prune flag, restart missing prune flag"
$ MigrateConsumedPruneTxOut.pruneRestartMissingFlag iom knownMigrations
, expectFailSilent
"set bootstrap flag, restart missing bootstrap flag"
$ MigrateConsumedPruneTxOut.bootstrapRestartMissingFlag iom knownMigrations
]
]
, testGroup
Expand All @@ -72,10 +78,9 @@ unitTests iom knownMigrations =
"Command Line Arguments"
[ testGroup
"config"
[ expectFail $
test
"fails if incorrect config file given"
ConfigFile.checkConfigFileArg
[ expectFailSilent
"fails if incorrect config file given"
$ ConfigFile.checkConfigFileArg iom knownMigrations
]
, testGroup
"disable-epoch"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
{-# LANGUAGE NumericUnderscores #-}
{-# LANGUAGE OverloadedStrings #-}

module Test.Cardano.Db.Mock.Unit.Conway.Config.JsonbInSchema (
configRemoveJsonbFromSchemaEnabled,
configRemoveJsonbFromSchemaDisabled,
configJsonbInSchemaShouldRemoveThenAdd,
) where

import qualified Cardano.Db as DB
import Cardano.DbSync.Config (SyncNodeConfig (..))
import Cardano.DbSync.Config.Types (RemoveJsonbFromSchemaConfig (..), SyncInsertOptions (..))
import Cardano.Mock.ChainSync.Server (IOManager ())
import Cardano.Prelude hiding (head)
import Test.Cardano.Db.Mock.Config
import Test.Cardano.Db.Mock.Validate
import Test.Tasty.HUnit (Assertion ())

configRemoveJsonbFromSchemaEnabled :: IOManager -> [(Text, Text)] -> Assertion
configRemoveJsonbFromSchemaEnabled ioManager metadata = do
syncNodeConfig <- mksNodeConfig
withCustomConfigAndDropDB args (Just syncNodeConfig) cfgDir testLabel action ioManager metadata
where
action = \_interpreter _mockServer dbSync -> do
startDBSync dbSync
threadDelay 7_000_000
assertEqQuery
dbSync
DB.queryJsonbInSchemaExists
False
"There should be no jsonb data types in database if option is enabled"
checkStillRuns dbSync

args = initCommandLineArgs {claFullMode = False}
testLabel = "conwayConfigRemoveJsonbFromSchemaEnabled"

cfgDir = conwayConfigDir

mksNodeConfig :: IO SyncNodeConfig
mksNodeConfig = do
initConfigFile <- mkSyncNodeConfig cfgDir args
let dncInsertOptions' = dncInsertOptions initConfigFile
pure $
initConfigFile
{ dncInsertOptions = dncInsertOptions' {sioRemoveJsonbFromSchema = RemoveJsonbFromSchemaConfig True}
}

configRemoveJsonbFromSchemaDisabled :: IOManager -> [(Text, Text)] -> Assertion
configRemoveJsonbFromSchemaDisabled ioManager metadata = do
syncNodeConfig <- mksNodeConfig
withCustomConfigAndDropDB args (Just syncNodeConfig) cfgDir testLabel action ioManager metadata
where
action = \_interpreter _mockServer dbSync -> do
startDBSync dbSync
threadDelay 7_000_000
assertEqQuery
dbSync
DB.queryJsonbInSchemaExists
True
"There should be jsonb types in database if option is disabled"
checkStillRuns dbSync

args = initCommandLineArgs {claFullMode = False}
testLabel = "conwayConfigRemoveJsonbFromSchemaDisabled"

cfgDir = conwayConfigDir

mksNodeConfig :: IO SyncNodeConfig
mksNodeConfig = do
initConfigFile <- mkSyncNodeConfig cfgDir args
let dncInsertOptions' = dncInsertOptions initConfigFile
pure $
initConfigFile
{ dncInsertOptions = dncInsertOptions' {sioRemoveJsonbFromSchema = RemoveJsonbFromSchemaConfig False}
}

configJsonbInSchemaShouldRemoveThenAdd :: IOManager -> [(Text, Text)] -> Assertion
configJsonbInSchemaShouldRemoveThenAdd ioManager metadata = do
syncNodeConfig <- mksNodeConfig
withCustomConfigAndDropDB args (Just syncNodeConfig) cfgDir testLabel action ioManager metadata
where
action = \_interpreter _mockServer dbSync -> do
startDBSync dbSync
threadDelay 7_000_000
assertEqQuery
dbSync
DB.queryJsonbInSchemaExists
False
"There should be no jsonb types in database if option has been enabled"
stopDBSync dbSync
let newDbSyncEnv =
dbSync
{ dbSyncConfig =
(dbSyncConfig dbSync)
{ dncInsertOptions =
(dncInsertOptions $ dbSyncConfig dbSync)
{ sioRemoveJsonbFromSchema = RemoveJsonbFromSchemaConfig False
}
}
}
startDBSync newDbSyncEnv
threadDelay 7_000_000
assertEqQuery
dbSync
DB.queryJsonbInSchemaExists
True
"There should be jsonb types in database if option has been disabled"
-- Expected to fail
checkStillRuns dbSync

args = initCommandLineArgs {claFullMode = False}
testLabel = "configJsonbInSchemaShouldRemoveThenAdd"

cfgDir = conwayConfigDir

mksNodeConfig :: IO SyncNodeConfig
mksNodeConfig = do
initConfigFile <- mkSyncNodeConfig cfgDir args
let dncInsertOptions' = dncInsertOptions initConfigFile
pure $
initConfigFile
{ dncInsertOptions = dncInsertOptions' {sioRemoveJsonbFromSchema = RemoveJsonbFromSchemaConfig True}
}
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@ insertConfig = do
, sioGovernance = GovernanceConfig False
, sioOffchainPoolData = OffchainPoolDataConfig False
, sioJsonType = JsonTypeDisable
, sioRemoveJsonbFromSchema = RemoveJsonbFromSchemaConfig False
}

dncInsertOptions cfg @?= expected
Expand Down
Loading
Loading