Skip to content

Commit

Permalink
Encapsulate file name in a more explicit function
Browse files Browse the repository at this point in the history
  • Loading branch information
abailly-iohk authored and ffakenz committed Nov 27, 2023
1 parent 04986ef commit b7f7a47
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 5 deletions.
14 changes: 12 additions & 2 deletions hydra-node/src/Hydra/Node/Network.hs
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ module Hydra.Node.Network (
withNetwork,
withFlipHeartbeats,
configureMessagePersistence,
acksFile
) where

import Hydra.Prelude hiding (fromList, replicate)
Expand All @@ -83,6 +84,7 @@ import Hydra.Node (HydraNodeLog (..))
import Hydra.Node.ParameterMismatch (ParamMismatch (..), ParameterMismatch (..))
import Hydra.Party (Party, deriveParty)
import Hydra.Persistence (Persistence (..), createPersistence, createPersistenceIncremental)
import System.FilePath ((</>))

-- | An alias for logging messages output by network component.
-- The type is made complicated because the various subsystems use part of the tracer only.
Expand Down Expand Up @@ -147,8 +149,8 @@ configureMessagePersistence ::
Int ->
m (MessagePersistence m msg)
configureMessagePersistence tracer persistenceDir numberOfParties = do
msgPersistence <- createPersistenceIncremental $ persistenceDir <> "/network-messages"
ackPersistence@Persistence{load} <- createPersistence $ persistenceDir <> "/acks"
msgPersistence <- createPersistenceIncremental $ storedMessagesFile persistenceDir
ackPersistence@Persistence{load} <- createPersistence $ acksFile persistenceDir
mAcks <- load
ackPersistence' <- case fmap (\acks -> length acks == numberOfParties) mAcks of
Just False -> do
Expand All @@ -167,3 +169,11 @@ withFlipHeartbeats withBaseNetwork callback =
unwrapHeartbeats = \case
Authenticated (Data nid msg) party -> callback $ Data nid (Authenticated msg party)
Authenticated (Ping nid) _ -> callback $ Ping nid

-- | Where are the messages stored, relative to given directory.
storedMessagesFile :: FilePath -> FilePath
storedMessagesFile = (</> "network-messages")

-- | Where is the acknowledgments vector stored, relative to given directory.
acksFile :: FilePath -> FilePath
acksFile = (</> "acks")
5 changes: 2 additions & 3 deletions hydra-node/test/Hydra/NetworkSpec.hs
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,8 @@ import Hydra.Logging (nullTracer, showLogsOnFailure)
import Hydra.Network (Host (..), Network)
import Hydra.Network.Message (Message (..))
import Hydra.Network.Ouroboros (broadcast, withOuroborosNetwork)
import Hydra.Node.Network (configureMessagePersistence)
import Hydra.Node.Network (acksFile, configureMessagePersistence)
import Hydra.Node.ParameterMismatch (ParameterMismatch)
import System.FilePath ((</>))
import Test.Aeson.GenericSpecs (roundtripAndGoldenSpecs)
import Test.Network.Ports (randomUnusedTCPPorts)
import Test.QuickCheck (
Expand Down Expand Up @@ -58,7 +57,7 @@ spec = do
describe "Message Persistence" $ do
it "throws ParameterMismatch when configuring given number of acks does not match number of parties" $ do
withTempDir "persistence" $ \dir -> do
writeFile (dir </> "acks") "[0,0,0]"
writeFile (acksFile dir) "[0,0,0]"
configureMessagePersistence @_ @Int nullTracer dir 4 `shouldThrow` (const True :: Selector ParameterMismatch)

withNodeBroadcastingForever :: Network IO Integer -> Integer -> IO b -> IO b
Expand Down

0 comments on commit b7f7a47

Please sign in to comment.