diff --git a/cabal.project b/cabal.project index 54a9bd05ca1..cf33598d748 100644 --- a/cabal.project +++ b/cabal.project @@ -15,10 +15,10 @@ repository cardano-haskell-packages -- repeat the index-state for hackage to work around haskell.nix parsing limitation index-state: -- Bump this if you need newer packages from Hackage - , hackage.haskell.org 2026-03-04T10:56:45Z + , hackage.haskell.org 2026-05-13T07:31:22Z -- Bump this if you need newer packages from CHaP - , cardano-haskell-packages 2026-03-30T15:30:34Z + , cardano-haskell-packages 2026-05-11T20:15:43Z active-repositories: , :rest @@ -32,6 +32,14 @@ packages: ./cardano-ping ./ntp-client ./acts-generic +-- TODO: contra-tracer 0.2.1.0 is on Hackage but shadowed by CHaP's 0.1.x under +-- active-repositories: cardano-haskell-packages:override. +source-repository-package + type: git + location: https://github.com/avieth/contra-tracer + tag: bf4a562a3b1315946aca7f6b4935e94ca1a23aa9 + --sha256: 1d3zlyi8hlmwhfa2dw3icprr6rgx1xnfds5vk1rmchpjcvmz6bkb + tests: True benchmarks: True diff --git a/cardano-diffusion/cardano-diffusion.cabal b/cardano-diffusion/cardano-diffusion.cabal index 178e77d8279..b59be7469ab 100644 --- a/cardano-diffusion/cardano-diffusion.cabal +++ b/cardano-diffusion/cardano-diffusion.cabal @@ -96,7 +96,7 @@ library api-tests-lib Cardano.Network.NodeToNode.Version.TestUtils build-depends: - QuickCheck, + QuickCheck < 2.18, base >=4.14 && <4.23, cardano-diffusion:api, ouroboros-network:api, @@ -112,7 +112,7 @@ test-suite api-tests Test.Cardano.Network.Version build-depends: - QuickCheck, + QuickCheck < 2.18, base >=4.14 && <4.23, cardano-diffusion:{api, api-tests-lib}, ouroboros-network:api, @@ -371,7 +371,7 @@ library protocols-tests-lib Ouroboros.Network.Protocol.TxSubmission2.Test as Cardano.Network.Protocol.TxSubmission2.Test, build-depends: - QuickCheck, + QuickCheck < 2.18, base >=4.14 && <4.23, bytestring, cardano-diffusion:{api, api-tests-lib, protocols}, @@ -416,7 +416,7 @@ test-suite protocols-cddl buildable: False build-depends: - QuickCheck, + QuickCheck < 2.18, base >=4.14 && <4.23, bytestring, cardano-diffusion:{api, api-tests-lib, protocols, protocols-tests-lib}, @@ -479,7 +479,7 @@ library cardano-diffusion-tests-lib visibility: public hs-source-dirs: tests/lib build-depends: - QuickCheck, + QuickCheck < 2.18, aeson, base >=4.14 && <4.23, bytestring, @@ -559,7 +559,7 @@ library subscription cardano-diffusion ^>=1.0.0.0, cborg >=0.2.8 && <0.3, containers >=0.5 && <0.9, - contra-tracer >=0.1 && <0.3, + contra-tracer ^>=0.2.1, deepseq, io-classes:si-timers ^>=1.8.0.1, network-mux ^>=0.10.1.0, diff --git a/cardano-diffusion/changelog.d/20260513_170556_fabrizio.ferrai_contra_tracer_0_2_1.md b/cardano-diffusion/changelog.d/20260513_170556_fabrizio.ferrai_contra_tracer_0_2_1.md new file mode 100644 index 00000000000..6658a989751 --- /dev/null +++ b/cardano-diffusion/changelog.d/20260513_170556_fabrizio.ferrai_contra_tracer_0_2_1.md @@ -0,0 +1,5 @@ +### Breaking + +- Upgraded to `contra-tracer ^>=0.2.1`. The `Tracer` data constructor is no + longer exported; use `mkTracer` instead. +- Capped `QuickCheck < 2.18`. diff --git a/cardano-diffusion/tests/lib/Test/Cardano/Network/Diffusion/Testnet/Simulation.hs b/cardano-diffusion/tests/lib/Test/Cardano/Network/Diffusion/Testnet/Simulation.hs index 97707c66b07..45442f30f6a 100644 --- a/cardano-diffusion/tests/lib/Test/Cardano/Network/Diffusion/Testnet/Simulation.hs +++ b/cardano-diffusion/tests/lib/Test/Cardano/Network/Diffusion/Testnet/Simulation.hs @@ -52,7 +52,7 @@ import Control.Monad.Class.MonadTime.SI import Control.Monad.Class.MonadTimer.SI import Control.Monad.Fix import Control.Monad.IOSim (IOSim) -import Control.Tracer (Tracer (..), contramap, nullTracer, traceWith) +import Control.Tracer (Tracer, contramap, mkTracer, nullTracer, traceWith) import Data.Bifunctor (first) import Data.Bool (bool) @@ -1330,7 +1330,7 @@ diffusionSimulationM , Node.aTimeWaitTimeout = 30 , Node.aDNSTimeoutScript = dnsTimeout , Node.aDNSLookupDelayScript = dnsLookupDelay - , Node.aDebugTracer = Tracer (\s -> do + , Node.aDebugTracer = mkTracer (\s -> do t <- getMonotonicTime traceWith nodeTracer $ WithTime t (WithName addr (DiffusionDebugTrace s))) , Node.aExtraChurnArgs = cardanoChurnArgs @@ -1480,7 +1480,7 @@ diffusionSimulationM m mkTracers ntnAddr nodeId = let sayTracer' :: Show event => Tracer m event - sayTracer' = Tracer $ \event -> + sayTracer' = mkTracer $ \event -> -- time of events is added in `testWithIOSim` and -- `testWithIOSimPOR` say $ show nodeId ++ " @ " ++ show event diff --git a/cardano-diffusion/tests/lib/Test/Cardano/Network/PeerSelection.hs b/cardano-diffusion/tests/lib/Test/Cardano/Network/PeerSelection.hs index 428f0ab147a..423e393d5af 100644 --- a/cardano-diffusion/tests/lib/Test/Cardano/Network/PeerSelection.hs +++ b/cardano-diffusion/tests/lib/Test/Cardano/Network/PeerSelection.hs @@ -32,7 +32,7 @@ import Control.Exception (AssertionFailed (..), catch, evaluate) import Control.Monad (when) import Control.Monad.Class.MonadTime.SI import Control.Monad.Class.MonadTimer.SI -import Control.Tracer (Tracer (..)) +import Control.Tracer (Tracer, mkTracer) import Data.Bifoldable (bitraverse_) import Data.ByteString.Char8 qualified as BS @@ -4289,7 +4289,7 @@ _governorFindingPublicRoots targetNumberOfRootPeers readDomains readUseBootstrap tracer' = tracer tracer :: Show a => Tracer IO a - tracer = Tracer (BS.putStrLn . BS.pack . show) + tracer = mkTracer (BS.putStrLn . BS.pack . show) actions :: PeerSelectionActions diff --git a/cardano-diffusion/tests/lib/Test/Cardano/Network/PeerSelection/MockEnvironment.hs b/cardano-diffusion/tests/lib/Test/Cardano/Network/PeerSelection/MockEnvironment.hs index 8092093b9c9..d1a93b705d5 100644 --- a/cardano-diffusion/tests/lib/Test/Cardano/Network/PeerSelection/MockEnvironment.hs +++ b/cardano-diffusion/tests/lib/Test/Cardano/Network/PeerSelection/MockEnvironment.hs @@ -60,7 +60,7 @@ import Control.Monad.Class.MonadTime.SI import Control.Monad.Class.MonadTimer.SI hiding (timeout) import Control.Monad.Fail qualified as Fail import Control.Monad.IOSim -import Control.Tracer (Tracer (..), contramap, traceWith) +import Control.Tracer (Tracer, contramap, mkTracer, traceWith) import Ouroboros.Network.BlockFetch (FetchMode (..), PraosFetchMode (..)) import Ouroboros.Network.ConnectionManager.Types (Provenance) @@ -838,7 +838,7 @@ traceAssociationMode -> Tracer (IOSim s) (DebugPeerSelection Cardano.ExtraState extraFlags extraPeers PeerAddr) -traceAssociationMode interfaces actions = Tracer $ \(TraceGovernorState _ _ st) -> do +traceAssociationMode interfaces actions = mkTracer $ \(TraceGovernorState _ _ st) -> do associationMode <- atomically $ readAssociationMode (readUseLedgerPeers interfaces) (Governor.peerSharing actions) diff --git a/cardano-ping/cardano-ping.cabal b/cardano-ping/cardano-ping.cabal index 25e7084229e..a291a4a7484 100644 --- a/cardano-ping/cardano-ping.cabal +++ b/cardano-ping/cardano-ping.cabal @@ -30,7 +30,7 @@ library base >=4.14 && <4.23, bytestring >=0.10 && <0.13, cborg >=0.2.8 && <0.3, - contra-tracer >=0.1 && <0.3, + contra-tracer ^>=0.2.1, io-classes:{si-timers, strict-stm} ^>=1.8, iproute ^>=1.7.15, network ^>=3.2.7, diff --git a/cardano-ping/changelog.d/20260513_170556_fabrizio.ferrai_contra_tracer_0_2_1.md b/cardano-ping/changelog.d/20260513_170556_fabrizio.ferrai_contra_tracer_0_2_1.md new file mode 100644 index 00000000000..35bbc00813d --- /dev/null +++ b/cardano-ping/changelog.d/20260513_170556_fabrizio.ferrai_contra_tracer_0_2_1.md @@ -0,0 +1,4 @@ +### Breaking + +- Upgraded to `contra-tracer ^>=0.2.1`. The `Tracer` data constructor is no + longer exported; use `mkTracer` instead. diff --git a/flake.lock b/flake.lock index 219805816a6..8b710e7cccf 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "CHaP": { "flake": false, "locked": { - "lastModified": 1774886932, - "narHash": "sha256-onVCoKUFr0Fbl49jq8L9quipNrdabrcEQVd3oWCq+PY=", + "lastModified": 1778700436, + "narHash": "sha256-6KW3OSVTA7yBvOEgFXmQrquSwN9wX3r5Hfk3mgnUfso=", "owner": "intersectmbo", "repo": "cardano-haskell-packages", - "rev": "d7555a1b7297f1d0c67b4ea28b6dae7eb08c2366", + "rev": "2d77199bbdf795a52169bbcf8eae88aee3794bad", "type": "github" }, "original": { @@ -189,11 +189,11 @@ "hackageNix": { "flake": false, "locked": { - "lastModified": 1772789029, - "narHash": "sha256-mkVaepN/M9ikvw2HD/PAaOOhT3dR02BlpbFdtn4gM6c=", + "lastModified": 1778699418, + "narHash": "sha256-0RBSLTlZ7XSw3uSePPzdVcgN/d+h54pQf3BYFRXQSz0=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "7ca657c7cf313ccfaf3f131c53121b44f8b852cf", + "rev": "37678bd46977723db19f5d97ae6e8cd6847e9cbf", "type": "github" }, "original": { diff --git a/network-mux/changelog.d/20260513_170556_fabrizio.ferrai_contra_tracer_0_2_1.md b/network-mux/changelog.d/20260513_170556_fabrizio.ferrai_contra_tracer_0_2_1.md new file mode 100644 index 00000000000..88c067480e8 --- /dev/null +++ b/network-mux/changelog.d/20260513_170556_fabrizio.ferrai_contra_tracer_0_2_1.md @@ -0,0 +1,7 @@ +### Breaking + +- Upgraded to `contra-tracer ^>=0.2.1`. The `Tracer` data constructor is no + longer exported; use `mkTracer` instead. `nullTracers`, the `TracersI` + pattern synonym, `contramapTracers'`, `tracersWithBearer` and + `traceBearerState` now require `Monad m` rather than `Applicative m`. +- Capped `QuickCheck < 2.18`. diff --git a/network-mux/demo/mux-demo.hs b/network-mux/demo/mux-demo.hs index ab63ce3bf60..60e590db5f9 100644 --- a/network-mux/demo/mux-demo.hs +++ b/network-mux/demo/mux-demo.hs @@ -19,7 +19,7 @@ import Control.Concurrent (forkIO) import Control.Concurrent.STM (atomically) import Control.Exception (finally) import Control.Monad -import Control.Tracer (Tracer (..)) +import Control.Tracer (Tracer, mkTracer) import System.Environment qualified as SysEnv import System.Exit @@ -72,7 +72,7 @@ putStrLn_ :: String -> IO () putStrLn_ = BSC.putStrLn . BSC.pack debugTracer :: Show a => Tracer IO a -debugTracer = show >$< Tracer putStrLn_ +debugTracer = show >$< mkTracer putStrLn_ -- -- Protocols diff --git a/network-mux/demo/mux-leios-demo.hs b/network-mux/demo/mux-leios-demo.hs index 8dd7ca05677..44c47eee740 100644 --- a/network-mux/demo/mux-leios-demo.hs +++ b/network-mux/demo/mux-leios-demo.hs @@ -98,7 +98,7 @@ reqrespTracer :: String -- ^ tag -> Tracer IO (TraceSendRecv (MsgReqResp ByteString ByteString)) -reqrespTracer tag = Tracer $ \case +reqrespTracer tag = mkTracer $ \case TraceSend (MsgReq a) -> putStrLn_ $ tag ++ " Send MsgReq " ++ show (BSC.length a) TraceSend (MsgResp a) -> putStrLn_ $ tag ++ " Send MsgResp " ++ show (BSC.length a) TraceSend MsgDone -> putStrLn_ $ tag ++ " Send MsgDone" diff --git a/network-mux/network-mux.cabal b/network-mux/network-mux.cabal index 76b152d0e0f..b26cfd1acf5 100644 --- a/network-mux/network-mux.cabal +++ b/network-mux/network-mux.cabal @@ -58,7 +58,7 @@ library binary >=0.8 && <0.11, bytestring >=0.10 && <0.13, containers >=0.5 && <0.9, - contra-tracer >=0.1 && <0.2, + contra-tracer ^>=0.2.1, io-classes:{io-classes, si-timers, strict-stm} ^>=1.8, monoidal-synchronisation >=0.1 && <0.2, network ^>=3.2.7, @@ -135,7 +135,7 @@ test-suite test default-language: Haskell2010 default-extensions: ImportQualifiedPost build-depends: - QuickCheck, + QuickCheck < 2.18, Win32-network, base >=4.14 && <4.23, binary, diff --git a/network-mux/src/Network/Mux.hs b/network-mux/src/Network/Mux.hs index 8df0b266f50..c1d25172a9a 100644 --- a/network-mux/src/Network/Mux.hs +++ b/network-mux/src/Network/Mux.hs @@ -723,7 +723,7 @@ muxChannel tracer egressQueue want@(Wanton w) mc md q = traceWith tracer $ TraceChannelRecvEnd mc (fromIntegral $ BL.length blob) return $ Just blob -traceBearerState :: Tracer m Trace -> State -> m () +traceBearerState :: Monad m => Tracer m Trace -> State -> m () traceBearerState tracer state = traceWith tracer (TraceState state) diff --git a/network-mux/src/Network/Mux/DeltaQ/TraceTransformer.hs b/network-mux/src/Network/Mux/DeltaQ/TraceTransformer.hs index 318402a174b..9802c1adf6e 100644 --- a/network-mux/src/Network/Mux/DeltaQ/TraceTransformer.hs +++ b/network-mux/src/Network/Mux/DeltaQ/TraceTransformer.hs @@ -9,7 +9,6 @@ module Network.Mux.DeltaQ.TraceTransformer import Control.Concurrent.Class.MonadSTM.Strict import Control.Tracer -import Data.Functor.Contravariant ((>$<)) import Data.Functor.Identity import Network.Mux.DeltaQ.TraceStats @@ -35,7 +34,7 @@ dqTracer :: MonadSTM m => StrictTVar m StatsA -> Tracer m BearerTrace -> Tracer m BearerTrace -dqTracer sTvar tr = Tracer go +dqTracer sTvar tr = mkTracer go where go (TraceRecvDeltaQObservation SDUHeader { mhTimestamp, mhLength } t) = update mhTimestamp t (fromIntegral mhLength) diff --git a/network-mux/src/Network/Mux/Trace.hs b/network-mux/src/Network/Mux/Trace.hs index b1449e4664b..be955e24c39 100644 --- a/network-mux/src/Network/Mux/Trace.hs +++ b/network-mux/src/Network/Mux/Trace.hs @@ -209,7 +209,7 @@ tracersWith tr = Tracers { } -nullTracers :: Applicative m => Tracers' m f +nullTracers :: Monad m => Tracers' m f nullTracers = tracersWith nullTracer @@ -217,6 +217,7 @@ nullTracers = tracersWith nullTracer -- functor in the `Tracer` type. -- pattern TracersI :: forall m. + Monad m => Tracer m Trace -> Tracer m ChannelTrace -> Tracer m BearerTrace @@ -238,7 +239,8 @@ pattern TracersI { tracer_, channelTracer_, bearerTracer_ } <- -- | Contravariant natural transformation of `Tracers' m`. -- -contramapTracers' :: (forall x. f' x -> f x) +contramapTracers' :: Monad m + => (forall x. f' x -> f x) -> Tracers' m f -> Tracers' m f' contramapTracers' f @@ -255,5 +257,5 @@ contramapTracers' type TracersWithBearer connId m = Tracers' m (WithBearer connId) -tracersWithBearer :: peerId -> TracersWithBearer peerId m -> Tracers m +tracersWithBearer :: Monad m => peerId -> TracersWithBearer peerId m -> Tracers m tracersWithBearer peerId = contramapTracers' (WithBearer peerId . runIdentity) diff --git a/network-mux/test/Test/Mux.hs b/network-mux/test/Test/Mux.hs index 8b7627b4112..4f656fe2c96 100644 --- a/network-mux/test/Test/Mux.hs +++ b/network-mux/test/Test/Mux.hs @@ -28,7 +28,6 @@ import Data.Binary.Put qualified as Bin import Data.Bits import Data.ByteString.Lazy qualified as BL import Data.ByteString.Lazy.Char8 qualified as BL8 (pack) -import Data.Functor.Contravariant ((>$<)) import Data.List (dropWhileEnd, nub) import Data.List qualified as List import Data.Map qualified as M @@ -1009,7 +1008,7 @@ prop_mux_starvation (Uneven response0 response1) = activeMpsVar <- newTVarIO 0 traceHeaderVar <- newTVarIO [] let headerTracer = - Tracer $ \e -> case e of + mkTracer $ \e -> case e of Mx.TraceRecvHeaderEnd header -> atomically (modifyTVar traceHeaderVar (header:)) _ -> return () @@ -1914,7 +1913,7 @@ verboseTracer :: forall a m. , Show a ) => Tracer m a -verboseTracer = threadAndTimeTracer $ show >$< Tracer say +verboseTracer = threadAndTimeTracer $ show >$< mkTracer say muxVerboseTracer :: forall m. ( MonadAsync m @@ -1929,7 +1928,7 @@ threadAndTimeTracer :: forall a m. , MonadMonotonicTime m ) => Tracer m (WithThreadAndTime a) -> Tracer m a -threadAndTimeTracer tr = Tracer $ \s -> do +threadAndTimeTracer tr = mkTracer $ \s -> do !now <- getMonotonicTime !tid <- myThreadId traceWith tr $ WithThreadAndTime now (show tid) s diff --git a/nix/ouroboros-network.nix b/nix/ouroboros-network.nix index 7e6f650bad0..9648f3c61f3 100644 --- a/nix/ouroboros-network.nix +++ b/nix/ouroboros-network.nix @@ -110,9 +110,6 @@ let packages.ouroboros-network.components.tests.framework-sim-tests.doCheck = onLinux; packages.ouroboros-network.components.tests.ouroboros-network-sim-tests.doCheck = onLinux; }) - ({ pkgs, ... }: lib.mkIf pkgs.stdenv.hostPlatform.isWindows { - packages.basement.configureFlags = [ "--hsc2hs-options=--cflag=-Wno-int-conversion" ]; - }) ]; }); in diff --git a/ntp-client/changelog.d/20260513_170556_fabrizio.ferrai_contra_tracer_0_2_1.md b/ntp-client/changelog.d/20260513_170556_fabrizio.ferrai_contra_tracer_0_2_1.md new file mode 100644 index 00000000000..35bbc00813d --- /dev/null +++ b/ntp-client/changelog.d/20260513_170556_fabrizio.ferrai_contra_tracer_0_2_1.md @@ -0,0 +1,4 @@ +### Breaking + +- Upgraded to `contra-tracer ^>=0.2.1`. The `Tracer` data constructor is no + longer exported; use `mkTracer` instead. diff --git a/ntp-client/demo/Main.hs b/ntp-client/demo/Main.hs index 64717fe880c..2c75635164d 100644 --- a/ntp-client/demo/Main.hs +++ b/ntp-client/demo/Main.hs @@ -5,7 +5,6 @@ import Control.Concurrent (threadDelay) import Control.Concurrent.Async import Control.Monad (forever) import Control.Tracer -import Data.Functor.Contravariant ((>$<)) import Network.NTP.Client (NtpClient (..), NtpSettings (..), withNtpClient) diff --git a/ntp-client/ntp-client.cabal b/ntp-client/ntp-client.cabal index d5bb20340cf..5dec6c3fcbe 100644 --- a/ntp-client/ntp-client.cabal +++ b/ntp-client/ntp-client.cabal @@ -33,7 +33,7 @@ library base >=4.14 && <4.23, binary >=0.8 && <0.11, bytestring >=0.10 && <0.13, - contra-tracer >=0.1 && <0.2, + contra-tracer ^>=0.2.1, network ^>=3.2.7, stm >=2.4 && <2.6, time >=1.9.1 && <1.16, @@ -62,7 +62,7 @@ test-suite test other-modules: Network.NTP.Client.Packet type: exitcode-stdio-1.0 build-depends: - QuickCheck, + QuickCheck < 2.18, base >=4.14 && <4.23, binary >=0.8 && <0.11, tasty, @@ -90,7 +90,7 @@ executable demo-ntp-client Win32-network >=0.1 && <0.3, async >=2.2 && <2.3, base >=4.14 && <4.23, - contra-tracer >=0.1 && <0.2, + contra-tracer ^>=0.2.1, ntp-client, default-language: Haskell2010 diff --git a/ouroboros-network/changelog.d/20260513_170556_fabrizio.ferrai_contra_tracer_0_2_1.md b/ouroboros-network/changelog.d/20260513_170556_fabrizio.ferrai_contra_tracer_0_2_1.md new file mode 100644 index 00000000000..3408a951e9c --- /dev/null +++ b/ouroboros-network/changelog.d/20260513_170556_fabrizio.ferrai_contra_tracer_0_2_1.md @@ -0,0 +1,7 @@ +### Breaking + +- Upgraded to `contra-tracer ^>=0.2.1`. The `Tracer` data constructor is no + longer exported; use `mkTracer` instead. `Diffusion.Types.nullTracers` and + `Socket.nullNetworkConnectTracers` now require `Monad m` rather than + `Applicative m`. +- Capped `QuickCheck < 2.18`. diff --git a/ouroboros-network/demo/connection-manager.hs b/ouroboros-network/demo/connection-manager.hs index 1ad711fb72c..fb80bd5437c 100644 --- a/ouroboros-network/demo/connection-manager.hs +++ b/ouroboros-network/demo/connection-manager.hs @@ -33,7 +33,7 @@ import Control.Monad.Class.MonadThrow import Control.Monad.Class.MonadTime.SI (MonadTime (..)) import Control.Monad.Class.MonadTimer.SI import Control.Monad.Fix (MonadFix) -import Control.Tracer (Tracer (..), contramap, nullTracer, traceWith) +import Control.Tracer (Tracer, contramap, mkTracer, nullTracer, traceWith) import Data.ByteString.Lazy (ByteString) import Data.Either (partitionEithers) @@ -727,6 +727,6 @@ forever' io = do debugTracer :: (MonadSay m, MonadTime m, Show a) => Tracer m a -debugTracer = Tracer $ \msg -> do +debugTracer = mkTracer $ \msg -> do t <- getCurrentTime say (show t ++ " " ++ show msg) diff --git a/ouroboros-network/demo/tx-submission/main.hs b/ouroboros-network/demo/tx-submission/main.hs index 3422d026e02..dba6cb5233a 100644 --- a/ouroboros-network/demo/tx-submission/main.hs +++ b/ouroboros-network/demo/tx-submission/main.hs @@ -29,7 +29,7 @@ import Control.Concurrent.MVar (MVar, newMVar, withMVar) import Control.Exception import Control.Monad import Control.Monad.Class.MonadTimer.SI -import Control.Tracer (Tracer (..)) +import Control.Tracer (Tracer, mkTracer) import Control.Tracer qualified as Tracer import Data.ByteString (ByteString) import Data.ByteString qualified as BS @@ -94,7 +94,7 @@ main = { V2.maxUnacknowledgedTxIds } lock <- newMVar () - let stderrTracer = Tracer $ \msg -> withMVar lock $ \_ -> hPutStrLn stderr msg + let stderrTracer = mkTracer $ \msg -> withMVar lock $ \_ -> hPutStrLn stderr msg addrs :: [Addr] addrs = fmap (\a -> bindAddr { port = port bindAddr + fromIntegral a }) [0..(num - 1)] @@ -368,7 +368,7 @@ prettyWithBearer pretty (Mx.WithBearer addr a) = txSubmissionTracer :: MVar () -> Tracer IO (Mx.WithBearer Socket.SockAddr (Driver.TraceSendRecv TxSubmission)) txSubmissionTracer lock = - Tracer $ \msg -> + mkTracer $ \msg -> withMVar lock $ \_ -> putStrLn (prettyWithBearer prettyMsg msg) where prettyMsg :: Driver.TraceSendRecv TxSubmission -> String @@ -410,7 +410,7 @@ txSubmissionTracer lock = inboundTracer :: MVar () -> Tracer IO (Mx.WithBearer Socket.SockAddr (V2.TraceTxSubmissionInbound TxId Tx)) inboundTracer lock = - Tracer $ \msg -> + mkTracer $ \msg -> withMVar lock $ \_ -> putStrLn (prettyWithBearer prettyMsg msg) where prettyMsg :: V2.TraceTxSubmissionInbound TxId Tx -> String @@ -435,7 +435,7 @@ inboundTracer lock = printTracer :: Show a => MVar () -> Tracer IO (Mx.WithBearer Socket.SockAddr a) -printTracer lock = Tracer $ \(Mx.WithBearer addr a) -> +printTracer lock = mkTracer $ \(Mx.WithBearer addr a) -> withMVar lock $ \_ -> putStrLn (show addr ++ " " ++ show a) diff --git a/ouroboros-network/framework/io-tests/Test/Ouroboros/Network/Socket.hs b/ouroboros-network/framework/io-tests/Test/Ouroboros/Network/Socket.hs index 0e7037b4dcc..dba67a8c2ed 100644 --- a/ouroboros-network/framework/io-tests/Test/Ouroboros/Network/Socket.hs +++ b/ouroboros-network/framework/io-tests/Test/Ouroboros/Network/Socket.hs @@ -546,10 +546,10 @@ instance (Show a) => Show (WithThreadAndTime a) where printf "%s: %s: %s" (show wtatOccuredAt) (show wtatWithinThread) (show wtatEvent) _verboseTracer :: Show a => Tracer IO a -_verboseTracer = threadAndTimeTracer $ showTracing stdoutTracer +_verboseTracer = threadAndTimeTracer $ show >$< stdoutTracer threadAndTimeTracer :: Tracer IO (WithThreadAndTime a) -> Tracer IO a -threadAndTimeTracer tr = Tracer $ \s -> do +threadAndTimeTracer tr = mkTracer $ \s -> do !now <- getCurrentTime !tid <- myThreadId traceWith tr $ WithThreadAndTime now tid s diff --git a/ouroboros-network/framework/lib/Data/Cache.hs b/ouroboros-network/framework/lib/Data/Cache.hs index 27c2a32e022..3f7211c81a0 100644 --- a/ouroboros-network/framework/lib/Data/Cache.hs +++ b/ouroboros-network/framework/lib/Data/Cache.hs @@ -27,7 +27,7 @@ withCacheA (Cache a) a' action = -- | Trace with cache only performs the tracing when the cached value is -- different than the most recent one. -- -traceWithCache :: (Applicative m, Eq a) => Tracer m a -> Cache a -> a -> m () +traceWithCache :: (Monad m, Eq a) => Tracer m a -> Cache a -> a -> m () traceWithCache tracer cache a = withCacheA cache a (traceWith tracer) @@ -35,7 +35,7 @@ traceWithCache tracer cache a = -- different than the most recent one. And applies a function to the cache -- value before tracing. -- -mapTraceWithCache :: (Applicative m, Eq a) +mapTraceWithCache :: (Monad m, Eq a) => (a -> b) -> Tracer m b -> Cache a -> a -> m () mapTraceWithCache f tracer cache a = withCacheA cache a (traceWith tracer . f) diff --git a/ouroboros-network/framework/lib/Ouroboros/Network/InboundGovernor.hs b/ouroboros-network/framework/lib/Ouroboros/Network/InboundGovernor.hs index 7900fb31623..7e515d9fe99 100644 --- a/ouroboros-network/framework/lib/Ouroboros/Network/InboundGovernor.hs +++ b/ouroboros-network/framework/lib/Ouroboros/Network/InboundGovernor.hs @@ -51,7 +51,7 @@ import Control.Monad.Class.MonadFork import Control.Monad.Class.MonadThrow import Control.Monad.Class.MonadTime.SI import Control.Monad.Class.MonadTimer.SI -import Control.Tracer (Tracer (..), traceWith) +import Control.Tracer (Tracer, mkTracer, traceWith) import Data.Bifunctor (first) import Data.ByteString.Lazy (ByteString) @@ -603,7 +603,7 @@ inboundGovernorMuxTracer -> StrictTVar m (StrictMaybe ResponderCounters) -> Tracer m (Mux.WithBearer (ConnectionId peerAddr) Mux.Trace) inboundGovernorMuxTracer infoChannel connectionDataFlow stateVar activeVar countersVar = - Tracer \(Mux.WithBearer peer trace) -> do + mkTracer \(Mux.WithBearer peer trace) -> do -- hello from muxer main thread -- code here is running in the context of the connection handler/muxer -- so care must be taken not to deadlock ourselves diff --git a/ouroboros-network/framework/lib/Ouroboros/Network/Socket.hs b/ouroboros-network/framework/lib/Ouroboros/Network/Socket.hs index 989a180596e..1ee33026c87 100644 --- a/ouroboros-network/framework/lib/Ouroboros/Network/Socket.hs +++ b/ouroboros-network/framework/lib/Ouroboros/Network/Socket.hs @@ -73,7 +73,6 @@ import Control.Monad.Class.MonadTimer.SI import Data.Bifunctor (first) import Data.ByteString.Lazy qualified as BL import Data.Foldable (traverse_) -import Data.Functor.Contravariant ((>$<)) import Data.Hashable import Data.Monoid.Synchronisation (FirstToFinish (..)) import Data.Typeable (Typeable) @@ -118,7 +117,7 @@ data NetworkConnectTracers m addr vNumber = NetworkConnectTracers { -- negotiation mismatches. } -nullNetworkConnectTracers :: Applicative m +nullNetworkConnectTracers :: Monad m => NetworkConnectTracers m addr vNumber nullNetworkConnectTracers = NetworkConnectTracers { nctMuxTracers = Mx.nullTracers, diff --git a/ouroboros-network/framework/sim-tests/Test/Ouroboros/Network/RateLimiting.hs b/ouroboros-network/framework/sim-tests/Test/Ouroboros/Network/RateLimiting.hs index 118f95540b9..c16302aedc2 100644 --- a/ouroboros-network/framework/sim-tests/Test/Ouroboros/Network/RateLimiting.hs +++ b/ouroboros-network/framework/sim-tests/Test/Ouroboros/Network/RateLimiting.hs @@ -12,7 +12,7 @@ import Control.Monad.Class.MonadAsync import Control.Monad.Class.MonadTime.SI import Control.Monad.Class.MonadTimer.SI import Control.Monad.IOSim -import Control.Tracer (Tracer (..), contramapM) +import Control.Tracer (Tracer, contramapM, mkTracer) import Data.List (scanl') import Ouroboros.Network.Server.RateLimiting @@ -202,7 +202,7 @@ runRateLimitExperiment :: AcceptedConnectionsLimit runRateLimitExperiment policy events = selectTraceEventsDynamic $ runSimTrace - $ rateLimittingExperiment (Tracer traceM) policy events + $ rateLimittingExperiment (mkTracer traceM) policy events -- diff --git a/ouroboros-network/framework/sim-tests/Test/Ouroboros/Network/RawBearer.hs b/ouroboros-network/framework/sim-tests/Test/Ouroboros/Network/RawBearer.hs index c2ae701e525..3317811817e 100644 --- a/ouroboros-network/framework/sim-tests/Test/Ouroboros/Network/RawBearer.hs +++ b/ouroboros-network/framework/sim-tests/Test/Ouroboros/Network/RawBearer.hs @@ -8,7 +8,7 @@ module Test.Ouroboros.Network.RawBearer where import Control.Monad.Class.MonadSay import Control.Monad.IOSim hiding (liftST) -import Control.Tracer (Tracer (..), nullTracer) +import Control.Tracer (Tracer, mkTracer, nullTracer) import Ouroboros.Network.Snocket import Simulation.Network.Snocket as SimSnocket @@ -25,7 +25,7 @@ tests = testGroup "Ouroboros.Network.RawBearer" ] iosimTracer :: forall s. Tracer (IOSim s) String -iosimTracer = Tracer say +iosimTracer = mkTracer say ioTracer :: Tracer IO String ioTracer = nullTracer diff --git a/ouroboros-network/framework/sim-tests/Test/Ouroboros/Network/Server/Sim.hs b/ouroboros-network/framework/sim-tests/Test/Ouroboros/Network/Server/Sim.hs index 47085e89ff4..9e72ab1b5aa 100644 --- a/ouroboros-network/framework/sim-tests/Test/Ouroboros/Network/Server/Sim.hs +++ b/ouroboros-network/framework/sim-tests/Test/Ouroboros/Network/Server/Sim.hs @@ -40,7 +40,7 @@ import Control.Monad.Class.MonadTime.SI import Control.Monad.Class.MonadTimer.SI import Control.Monad.Fix (MonadFix) import Control.Monad.IOSim -import Control.Tracer (Tracer (..), nullTracer) +import Control.Tracer (Tracer, mkTracer, nullTracer) import Codec.Serialise.Class (Serialise) import Data.Bifoldable @@ -1432,7 +1432,7 @@ prop_connection_manager_counters (Fixed rnd) serverAcc (ArbDataFlow dataFlow) else (duplexConns, unidirectionalConns, inboundConns + outboundConns - duplexConns) networkStateTracer getState = - Tracer $ \_ -> getState >>= traceM + mkTracer $ \_ -> getState >>= traceM sim :: IOSim s () sim = do diff --git a/ouroboros-network/lib/Ouroboros/Network/Diffusion/Types.hs b/ouroboros-network/lib/Ouroboros/Network/Diffusion/Types.hs index c89525aed47..199b93fbcff 100644 --- a/ouroboros-network/lib/Ouroboros/Network/Diffusion/Types.hs +++ b/ouroboros-network/lib/Ouroboros/Network/Diffusion/Types.hs @@ -305,7 +305,7 @@ data Tracers ntnAddr ntnVersion ntnVersionData } -nullTracers :: Applicative m +nullTracers :: Monad m => Tracers ntnAddr ntnVersion ntnVersionData ntcAddr ntcVersion ntcVersionData extraState extraDebugState diff --git a/ouroboros-network/lib/Ouroboros/Network/PeerSelection/PeerMetric.hs b/ouroboros-network/lib/Ouroboros/Network/PeerSelection/PeerMetric.hs index 78ceefca3c3..6bcd7b6d9aa 100644 --- a/ouroboros-network/lib/Ouroboros/Network/PeerSelection/PeerMetric.hs +++ b/ouroboros-network/lib/Ouroboros/Network/PeerSelection/PeerMetric.hs @@ -35,7 +35,7 @@ import Control.DeepSeq (NFData (..)) import Control.Monad (when) import Control.Monad.Class.MonadSTM import Control.Monad.Class.MonadTime.SI -import Control.Tracer (Tracer (..), contramap, nullTracer) +import Control.Tracer (Tracer, contramap, mkTracer, nullTracer) import Data.Bifunctor (Bifunctor (..)) import Data.IntPSQ (IntPSQ) import Data.IntPSQ qualified as IntPSQ @@ -320,7 +320,7 @@ peerRegistryTracer :: forall p m. => PeerMetrics m p -> Tracer (STM m) (TraceLabelPeer p SlotNo) peerRegistryTracer PeerMetrics { peerMetricsVar } = - Tracer $ \(TraceLabelPeer peer slotNo) -> do + mkTracer $ \(TraceLabelPeer peer slotNo) -> do -- order matters: 'insertPeer' must access the previous value of -- lastSeenRegistry modifyTVar peerMetricsVar $ updateLastSlot slotNo @@ -372,7 +372,7 @@ metricsTracer -> PeerMetricsConfiguration -> Tracer (STM m) (TraceLabelPeer p (SlotNo, Time)) metricsTracer getMetrics writeMetrics PeerMetricsConfiguration { maxEntriesToTrack } = - Tracer $ \(TraceLabelPeer !peer (!slot, !time)) -> do + mkTracer $ \(TraceLabelPeer !peer (!slot, !time)) -> do metrics <- getMetrics let !k = slotToInt slot !v = (peer, time) diff --git a/ouroboros-network/ouroboros-network.cabal b/ouroboros-network/ouroboros-network.cabal index 74de4ca71a5..21f8f8a8333 100644 --- a/ouroboros-network/ouroboros-network.cabal +++ b/ouroboros-network/ouroboros-network.cabal @@ -143,7 +143,7 @@ library api-tests-lib Ouroboros.Network.Mock.ConcreteBlock build-depends: - QuickCheck, + QuickCheck < 2.18, base, bytestring, cardano-slotting:testlib ^>=0.2.0, @@ -169,7 +169,7 @@ test-suite api-tests Test.Ouroboros.Network.PeerSelection.RelayAccessPoint build-depends: - QuickCheck, + QuickCheck < 2.18, aeson, base >=4.14 && <4.23, bytestring, @@ -442,7 +442,7 @@ library tests-lib TypeInType build-depends: - QuickCheck, + QuickCheck < 2.18, base >=4.14 && <4.23, cborg >=0.2.1 && <0.3, containers, @@ -480,7 +480,7 @@ test-suite tests-lib-tests hs-source-dirs: tests-lib/tests other-modules: Test.Ouroboros.Network.Data.AbsBearerInfo.Test build-depends: - QuickCheck, + QuickCheck < 2.18, base >=4.14 && <4.23, ouroboros-network:tests-lib, tasty, @@ -506,7 +506,7 @@ library framework-tests-lib Test.Ouroboros.Network.RawBearer.Utils build-depends: - QuickCheck, + QuickCheck < 2.18, base >=4.14 && <4.23, bytestring, cborg, @@ -539,7 +539,7 @@ test-suite framework-sim-tests Test.Simulation.Network.Snocket build-depends: - QuickCheck, + QuickCheck < 2.18, base >=4.14 && <4.23, bytestring, cborg, @@ -583,7 +583,7 @@ test-suite framework-io-tests Test.Ouroboros.Network.Socket build-depends: - QuickCheck, + QuickCheck < 2.18, base >=4.14 && <4.23, bytestring, contra-tracer, @@ -738,7 +738,7 @@ executable demo-tx-submission Demo.TxSubmission.Outbound build-depends: - QuickCheck, + QuickCheck < 2.18, async, base, bytestring, @@ -903,7 +903,7 @@ library protocols-tests-lib Test.Ouroboros.Network.Protocol.Utils build-depends: - QuickCheck, + QuickCheck < 2.18, base >=4.14 && <4.23, bytestring, cardano-strict-containers, @@ -948,7 +948,7 @@ library ouroboros-network-tests-lib visibility: public hs-source-dirs: tests/lib build-depends: - QuickCheck, + QuickCheck < 2.18, aeson, array, base >=4.14 && <4.23, @@ -1047,7 +1047,7 @@ test-suite ouroboros-network-io-tests Test.Ouroboros.Network.Socket build-depends: - QuickCheck, + QuickCheck < 2.18, base >=4.14 && <4.23, bytestring, cborg, diff --git a/ouroboros-network/tests-lib/lib/Test/Ouroboros/Network/Utils.hs b/ouroboros-network/tests-lib/lib/Test/Ouroboros/Network/Utils.hs index 3199eeacf50..48b68f6eee3 100644 --- a/ouroboros-network/tests-lib/lib/Test/Ouroboros/Network/Utils.hs +++ b/ouroboros-network/tests-lib/lib/Test/Ouroboros/Network/Utils.hs @@ -48,7 +48,7 @@ import GHC.Real import Control.Monad.Class.MonadSay import Control.Monad.Class.MonadTime.SI import Control.Monad.IOSim (IOSim, traceM) -import Control.Tracer (Contravariant (contramap), Tracer (..), contramapM) +import Control.Tracer (Contravariant (contramap), Tracer, contramapM, mkTracer) import Data.Bitraversable (bimapAccumR) import Data.List (delete, nub) @@ -198,7 +198,7 @@ data WithTime event = WithTime { instance Show event => Show (WithTime event) where show (WithTime (Time t) ev) = show t <> "@ " <> show ev -tracerWithName :: name -> Tracer m (WithName name a) -> Tracer m a +tracerWithName :: Monad m => name -> Tracer m (WithName name a) -> Tracer m a tracerWithName name = contramap (WithName name) tracerWithTime :: MonadMonotonicTime m => Tracer m (WithTime a) -> Tracer m a @@ -266,17 +266,17 @@ instance (Eq a, Arbitrary a) => Arbitrary (DistinctNEList a) where -- | Trace to `stderr` via `Debug.Tracer` API. -- debugTracer :: ( Show a, Applicative m) => Tracer m a -debugTracer = Tracer Debug.traceShowM +debugTracer = mkTracer Debug.traceShowM -- | Trace using `MonadSay` instance. -- sayTracer :: ( Show a, MonadSay m) => Tracer m a -sayTracer = Tracer (say . show) +sayTracer = mkTracer (say . show) -- | Dynamic tracer for `IOSim` using `traceM`. -- dynamicTracer :: Typeable a => Tracer (IOSim s) a -dynamicTracer = Tracer traceM +dynamicTracer = mkTracer traceM -- -- Nightly tests diff --git a/ouroboros-network/tests/io/Test/Ouroboros/Network/Socket.hs b/ouroboros-network/tests/io/Test/Ouroboros/Network/Socket.hs index 788c1cf2ea1..c791550aa30 100644 --- a/ouroboros-network/tests/io/Test/Ouroboros/Network/Socket.hs +++ b/ouroboros-network/tests/io/Test/Ouroboros/Network/Socket.hs @@ -15,7 +15,6 @@ module Test.Ouroboros.Network.Socket (tests) where import Data.ByteString.Lazy qualified as BL -import Data.Functor.Contravariant ((>$<)) import Data.Void (Void) import GHC.Generics (Generic) import Network.Socket qualified as Socket @@ -344,7 +343,7 @@ _verboseTracer :: Show a => Tracer IO a _verboseTracer = threadAndTimeTracer $ show >$< stdoutTracer threadAndTimeTracer :: Tracer IO (WithThreadAndTime a) -> Tracer IO a -threadAndTimeTracer tr = Tracer $ \s -> do +threadAndTimeTracer tr = mkTracer $ \s -> do !now <- getCurrentTime !tid <- myThreadId traceWith tr $ WithThreadAndTime now tid s diff --git a/ouroboros-network/tests/lib/Test/Ouroboros/Network/KeepAlive.hs b/ouroboros-network/tests/lib/Test/Ouroboros/Network/KeepAlive.hs index f011d5417f0..e364a007b97 100644 --- a/ouroboros-network/tests/lib/Test/Ouroboros/Network/KeepAlive.hs +++ b/ouroboros-network/tests/lib/Test/Ouroboros/Network/KeepAlive.hs @@ -192,4 +192,4 @@ prop_keepAlive_convergence nd seed = g >= low && g <= high dynamicTracer :: Typeable a => Tracer (IOSim s) a -dynamicTracer = Tracer traceM +dynamicTracer = mkTracer traceM diff --git a/ouroboros-network/tests/lib/Test/Ouroboros/Network/LedgerPeers.hs b/ouroboros-network/tests/lib/Test/Ouroboros/Network/LedgerPeers.hs index fdf34165fb5..a4ea863a4ad 100644 --- a/ouroboros-network/tests/lib/Test/Ouroboros/Network/LedgerPeers.hs +++ b/ouroboros-network/tests/lib/Test/Ouroboros/Network/LedgerPeers.hs @@ -25,7 +25,7 @@ import Control.Monad.Class.MonadThrow import Control.Monad.Class.MonadTime.SI import Control.Monad.Class.MonadTimer.SI import Control.Monad.IOSim hiding (SimResult) -import Control.Tracer (Tracer (..), nullTracer, traceWith) +import Control.Tracer (Tracer, mkTracer, nullTracer, traceWith) import Data.Aeson import Data.Aeson.Types as Aeson import Data.ByteString.Builder (toLazyByteString, word64BE) @@ -295,7 +295,7 @@ prop_pick100 seed (NonNegative n) ledgerPeersKind (MockRoots _ dnsMapScript _ _) withLedgerPeers PeerActionsDNS { paToPeerAddr = curry IP.toSockAddr, paDnsActions = mockDNSActions - (Tracer traceM) + (mkTracer traceM) LookupReqAOnly (curry IP.toSockAddr) dnsMapVar @@ -363,7 +363,7 @@ prop_pick (LedgerPools lps) ledgerPeersKind count seed (MockRoots _ dnsMapScript withLedgerPeers PeerActionsDNS { paToPeerAddr = curry IP.toSockAddr, paDnsActions = mockDNSActions - (Tracer traceM) + (mkTracer traceM) LookupReqAOnly (curry IP.toSockAddr) dnsMapVar @@ -781,7 +781,7 @@ threadAndTimeTracer :: forall a m. , MonadMonotonicTime m ) => Tracer m (WithThreadAndTime a) -> Tracer m a -threadAndTimeTracer tr = Tracer $ \s -> do +threadAndTimeTracer tr = mkTracer $ \s -> do !now <- getMonotonicTime !tid <- show <$> myThreadId traceWith tr $! WithThreadAndTime now tid s diff --git a/ouroboros-network/tests/lib/Test/Ouroboros/Network/Mux.hs b/ouroboros-network/tests/lib/Test/Ouroboros/Network/Mux.hs index f39d3f550fc..b8c5e35588f 100644 --- a/ouroboros-network/tests/lib/Test/Ouroboros/Network/Mux.hs +++ b/ouroboros-network/tests/lib/Test/Ouroboros/Network/Mux.hs @@ -64,7 +64,7 @@ activeTracer = nullTracer --activeTracer = show >$< sayTracer _sayTracer :: MonadSay m => Tracer m String -_sayTracer = Tracer say +_sayTracer = mkTracer say testProtocols :: RunMiniProtocolWithMinimalCtx appType addr bytes m a b diff --git a/ouroboros-network/tests/lib/Test/Ouroboros/Network/PeerSelection/PeerMetric.hs b/ouroboros-network/tests/lib/Test/Ouroboros/Network/PeerSelection/PeerMetric.hs index 1455faf7811..247f36551e9 100644 --- a/ouroboros-network/tests/lib/Test/Ouroboros/Network/PeerSelection/PeerMetric.hs +++ b/ouroboros-network/tests/lib/Test/Ouroboros/Network/PeerSelection/PeerMetric.hs @@ -21,7 +21,7 @@ import Control.DeepSeq (NFData (..)) import Control.Monad (when) import Control.Monad.Class.MonadTime.SI import Control.Monad.Class.MonadTimer.SI -import Control.Tracer (Tracer (..), traceWith) +import Control.Tracer (Tracer, mkTracer, traceWith) import Data.Foldable as Foldable (foldl', foldr') import Data.List (sortOn) @@ -254,7 +254,7 @@ prop_insert_peer script = config = PeerMetricsConfiguration { maxEntriesToTrack = 180 } sim :: IOSim s () - sim = simulatePeerMetricScript (Tracer traceM) config script + sim = simulatePeerMetricScript (mkTracer traceM) config script -- drop first 90 slots trace :: [PeerMetricsTrace] @@ -319,7 +319,7 @@ prop_metrics_are_bounded script = config = PeerMetricsConfiguration { maxEntriesToTrack = 180 } sim :: IOSim s () - sim = simulatePeerMetricScript (Tracer traceM) config script + sim = simulatePeerMetricScript (mkTracer traceM) config script trace :: [PeerMetricsTrace] trace = selectTraceEventsDynamic (runSimTrace sim) @@ -393,7 +393,7 @@ prop_bounded_size (Positive maxEntriesToTrack) script = config = PeerMetricsConfiguration { maxEntriesToTrack } sim :: IOSim s () - sim = simulatePeerMetricScript (Tracer traceM) config script + sim = simulatePeerMetricScript (mkTracer traceM) config script trace :: [PeerMetricsTrace] trace = selectTraceEventsDynamic (runSimTrace sim) @@ -475,7 +475,7 @@ prop_simScript script = config = PeerMetricsConfiguration { maxEntriesToTrack = 500 } sim :: IOSim s () - sim = simulatePeerMetricScriptWithoutDelays (Tracer traceM) config script + sim = simulatePeerMetricScriptWithoutDelays (mkTracer traceM) config script trace :: [PeerMetricsTrace] trace = selectTraceEventsDynamic (runSimTrace sim) diff --git a/ouroboros-network/tests/lib/Test/Ouroboros/Network/PeerSelection/RootPeersDNS.hs b/ouroboros-network/tests/lib/Test/Ouroboros/Network/PeerSelection/RootPeersDNS.hs index 52ea03ea6fe..dcc14fb8163 100644 --- a/ouroboros-network/tests/lib/Test/Ouroboros/Network/PeerSelection/RootPeersDNS.hs +++ b/ouroboros-network/tests/lib/Test/Ouroboros/Network/PeerSelection/RootPeersDNS.hs @@ -68,7 +68,7 @@ import Control.Monad.Class.MonadTime.SI import Control.Monad.Class.MonadTimer.SI import Control.Monad.Class.MonadTimer.SI qualified as MonadTimer import Control.Monad.IOSim -import Control.Tracer (Tracer (Tracer), contramap, nullTracer, traceWith) +import Control.Tracer (Tracer, contramap, mkTracer, nullTracer, traceWith) import Ouroboros.Network.ConnectionManager.Types (Provenance (Outbound)) import Ouroboros.Network.DiffusionMode @@ -607,10 +607,10 @@ mockResolveLedgerPeers tracer (MockRoots _ _ publicRootPeers dnsMapScript) type TestTraceEvent a = Either a DNSTrace tracerTraceLocalRoots :: Tracer (IOSim s) (TestTraceEvent (TraceLocalRootPeers () SockAddr)) -tracerTraceLocalRoots = Tracer traceM +tracerTraceLocalRoots = mkTracer traceM tracerTracePublicRoots :: Tracer (IOSim s) (TestTraceEvent TracePublicRootPeers) -tracerTracePublicRoots = Tracer traceM +tracerTracePublicRoots = mkTracer traceM selectTestTraceEvents :: (Typeable b) => SimTrace a -> [(Time, TestTraceEvent b)] @@ -1097,8 +1097,8 @@ prop_retryResource (NonEmpty delays0) as = delays = getDNSTimeout <$> NonEmpty.fromList delays0 tracer :: Tracer (IOSim s) Int - tracer = Tracer (\a -> getMonotonicTime >>= \t -> traceM (t, a)) - <> Tracer (\a -> getMonotonicTime >>= \t -> say (show (t, a))) + tracer = mkTracer (\a -> getMonotonicTime >>= \t -> traceM (t, a)) + <> mkTracer (\a -> getMonotonicTime >>= \t -> say (show (t, a))) resource :: Resource (IOSim s) Int resource = retryResource nullTracer delays diff --git a/ouroboros-network/tests/lib/Test/Ouroboros/Network/TxSubmission/Types.hs b/ouroboros-network/tests/lib/Test/Ouroboros/Network/TxSubmission/Types.hs index 3ca190ce802..908b22bfa57 100644 --- a/ouroboros-network/tests/lib/Test/Ouroboros/Network/TxSubmission/Types.hs +++ b/ouroboros-network/tests/lib/Test/Ouroboros/Network/TxSubmission/Types.hs @@ -43,7 +43,7 @@ import Control.Monad.Class.MonadThrow import Control.Monad.Class.MonadTime.SI import Control.Monad.Class.MonadTimer.SI import Control.Monad.IOSim hiding (SimResult) -import Control.Tracer (Tracer (..), traceWith) +import Control.Tracer (Tracer, mkTracer, traceWith) import Codec.CBOR.Decoding qualified as CBOR import Codec.CBOR.Encoding qualified as CBOR @@ -331,7 +331,7 @@ threadAndTimeTracer :: forall a m. , MonadMonotonicTime m ) => Tracer m (WithThreadAndTime a) -> Tracer m a -threadAndTimeTracer tr = Tracer $ \s -> do +threadAndTimeTracer tr = mkTracer $ \s -> do !now <- getMonotonicTime !tid <- myThreadId traceWith tr $ WithThreadAndTime now (show tid) s