Skip to content

Commit bd90e5a

Browse files
committed
Introduce flag in cardano-testnet create-env to update time stamps
1 parent 38db4bf commit bd90e5a

File tree

5 files changed

+43
-8
lines changed

5 files changed

+43
-8
lines changed

cardano-testnet/src/Parsers/Cardano.hs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,10 @@ optsCreateTestnet envCli = CardanoTestnetCreateEnvOptions
3535
<$> pCardanoTestnetCliOptions envCli
3636
<*> pGenesisOptions
3737
<*> pEnvOutputDir
38-
<*> pTopologyType
38+
<*> ( CreateEnvOptions
39+
<$> pTopologyType
40+
<*> pCreateEnvUpdateTime
41+
)
3942

4043
pCardanoTestnetCliOptions :: EnvCli -> Parser CardanoTestnetOptions
4144
pCardanoTestnetCliOptions envCli = CardanoTestnetOptions
@@ -99,6 +102,13 @@ pTopologyType = OA.flag DirectTopology P2PTopology
99102
<> OA.showDefault
100103
)
101104

105+
pCreateEnvUpdateTime :: Parser CreateEnvUpdateTime
106+
pCreateEnvUpdateTime = OA.flag CreateEnv UpdateTimeAndExit
107+
( OA.long "update-time"
108+
<> OA.help "Don't create anything, just update the time stamps in existing files"
109+
<> OA.showDefault
110+
)
111+
102112
pEnvOutputDir :: Parser FilePath
103113
pEnvOutputDir = OA.strOption
104114
( OA.long "output"

cardano-testnet/src/Parsers/Run.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,11 +62,11 @@ createEnvOptions CardanoTestnetCreateEnvOptions
6262
{ createEnvTestnetOptions=testnetOptions
6363
, createEnvGenesisOptions=genesisOptions
6464
, createEnvOutputDir=outputDir
65-
, createEnvTopologyType=topologyType
65+
, createEnvCreateEnvOptions=ceOptions
6666
} =
6767
testnetRoutine (UserProvidedEnv outputDir) $ \conf ->
6868
createTestnetEnv
69-
testnetOptions genesisOptions topologyType
69+
testnetOptions genesisOptions ceOptions
7070
-- The CLI does not provide a way to provide custom genesis data by design:
7171
-- If the user wants to have custom genesis data, they should manually
7272
-- modify the files created by this command before running the testnet.

cardano-testnet/src/Testnet/Start/Cardano.hs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ createTestnetEnv :: ()
8686
=> HasCallStack
8787
=> CardanoTestnetOptions
8888
-> GenesisOptions
89-
-> TopologyType
89+
-> CreateEnvOptions
9090
-> UserProvidedData ShelleyGenesis
9191
-> UserProvidedData AlonzoGenesis
9292
-> UserProvidedData ConwayGenesis
@@ -98,7 +98,10 @@ createTestnetEnv
9898
, cardanoNodes
9999
}
100100
genesisOptions
101-
topologyType
101+
CreateEnvOptions
102+
{ ceoTopologyType=topologyType
103+
, ceoUpdateTime=_createEnvUpdateTime
104+
}
102105
mShelley mAlonzo mConway
103106
Conf
104107
{ genesisHashesPolicy

cardano-testnet/src/Testnet/Start/Types.hs

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ module Testnet.Start.Types
2121
, anyShelleyBasedEraToString
2222
, eraToString
2323

24+
, CreateEnvOptions(..)
25+
, CreateEnvUpdateTime(..)
2426
, NodeOption(..)
2527
, isRelayNodeOptions
2628
, cardanoDefaultTestnetNodeOptions
@@ -88,6 +90,25 @@ data TopologyType
8890
instance Default TopologyType where
8991
def = DirectTopology
9092

93+
data CreateEnvUpdateTime
94+
= CreateEnv
95+
| UpdateTimeAndExit
96+
deriving (Eq, Show)
97+
98+
instance Default CreateEnvUpdateTime where
99+
def = CreateEnv
100+
101+
data CreateEnvOptions = CreateEnvOptions
102+
{ ceoTopologyType :: TopologyType
103+
, ceoUpdateTime :: CreateEnvUpdateTime
104+
} deriving (Eq, Show)
105+
106+
instance Default CreateEnvOptions where
107+
def = CreateEnvOptions
108+
{ ceoTopologyType = def
109+
, ceoUpdateTime = def
110+
}
111+
91112
-- | An abstract node id, used as placeholder in topology files
92113
-- when the actual ports/addresses aren't known yet (i.e. before runtime)
93114
newtype NodeId = NodeId Int
@@ -107,7 +128,7 @@ data CardanoTestnetCreateEnvOptions = CardanoTestnetCreateEnvOptions
107128
{ createEnvTestnetOptions :: CardanoTestnetOptions
108129
, createEnvGenesisOptions :: GenesisOptions
109130
, createEnvOutputDir :: FilePath
110-
, createEnvTopologyType :: TopologyType
131+
, createEnvCreateEnvOptions :: CreateEnvOptions
111132
} deriving (Eq, Show)
112133

113134
-- | Options which, contrary to 'GenesisOptions' are not implemented

cardano-testnet/test/cardano-testnet-test/Cardano/Testnet/Test/P2PTopology.hs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import qualified System.Process as IO
2323

2424
import Testnet.Process.Run (execCli', mkExecConfig)
2525
import Testnet.Property.Util (integrationRetryWorkspace)
26-
import Testnet.Start.Types (GenesisOptions (..), NodeId,
26+
import Testnet.Start.Types (CreateEnvOptions (..), GenesisOptions (..), NodeId,
2727
UserProvidedData (..), UserProvidedEnv (..), TopologyType (..))
2828

2929
import Hedgehog ((===))
@@ -38,12 +38,13 @@ hprop_p2p_topology = integrationRetryWorkspace 2 "p2p-topology" $ \tmpDir -> H.r
3838

3939
let testnetOptions = def { cardanoOutputDir = UserProvidedEnv tmpDir }
4040
genesisOptions = def { genesisEpochLength = 200 }
41+
createEnvOptions = def { ceoTopologyType = P2PTopology }
4142
someTopologyFile = tmpDir </> "node-data" </> "node1" </> "topology.json"
4243

4344
-- Generate the sandbox
4445
conf <- mkConf tmpDir
4546
createTestnetEnv
46-
testnetOptions genesisOptions P2PTopology
47+
testnetOptions genesisOptions createEnvOptions
4748
NoUserProvidedData NoUserProvidedData NoUserProvidedData
4849
conf
4950

0 commit comments

Comments
 (0)