-
Notifications
You must be signed in to change notification settings - Fork 718
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
cardano-tracer: seq tests, disable some log tests for Windows.
- Loading branch information
Denis Shevchenko
committed
Feb 16, 2022
1 parent
fad81eb
commit 6edce0c
Showing
16 changed files
with
238 additions
and
86 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
{-# LANGUAGE DeriveGeneric #-} | ||
{-# LANGUAGE StandaloneDeriving #-} | ||
|
||
module Cardano.Node.Tracing.StateRep | ||
( NodeState (..) | ||
) where | ||
|
||
import Cardano.Prelude | ||
import Data.Aeson (FromJSON, ToJSON) | ||
|
||
import Cardano.Node.Handlers.Shutdown (ShutdownTrace (..)) | ||
|
||
type PeerInfoPP = Text -- The result of 'ppPeer' function. | ||
type StartupTracePP = Text -- The result of 'ppStartupInfoTrace' function. | ||
|
||
-- | The representation of the current state of node. | ||
-- All node states prior to tracing system going online are effectively invisible. | ||
data NodeState blk | ||
= NodeTracingOnlineConfiguring -- ^ initTraceDispatcher | ||
| NodeStartup StartupTracePP | ||
| NodePeers [PeerInfoPP] -- ^ The peers information here is for demonstration only. | ||
| NodeShutdown ShutdownTrace | ||
|
||
deriving instance Generic (NodeState blk) | ||
|
||
instance ToJSON (NodeState blk) | ||
|
||
-- Strictly speaking, we mustn't provide 'FromJSON' instance here, | ||
-- but it will be convenient for acceptor application. | ||
instance FromJSON (NodeState blk) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
{-# LANGUAGE LambdaCase #-} | ||
|
||
import System.Environment (getArgs) | ||
|
||
import Cardano.Tracer.Test.Acceptor | ||
|
||
main :: IO () | ||
main = getArgs >>= \case | ||
[localSock, "Initiator", dpName] -> launchAcceptorsSimple Initiator localSock dpName | ||
[localSock, "Responder", dpName] -> launchAcceptorsSimple Responder localSock dpName | ||
_ -> putStrLn "Usage: ./demo-acceptor /path/to/local/sock Initiator|Responder Name.Of.DataPoint" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
{-# LANGUAGE DataKinds #-} | ||
{-# LANGUAGE OverloadedStrings #-} | ||
|
||
module Cardano.Tracer.Test.Acceptor | ||
( AcceptorsMode (..) | ||
, launchAcceptorsSimple | ||
) where | ||
|
||
import Control.Concurrent.STM.TVar (readTVarIO) | ||
import Control.Concurrent.Async.Extra (sequenceConcurrently) | ||
import Control.Concurrent.Extra (newLock) | ||
import Control.Monad (forever, forM_, void) | ||
import qualified Data.ByteString.Lazy as LBS | ||
import qualified Data.List.NonEmpty as NE | ||
import qualified Data.Map.Strict as M | ||
import qualified Data.Text as T | ||
import System.Time.Extra (sleep) | ||
|
||
import Cardano.Tracer.Acceptors.Run (runAcceptors) | ||
import Cardano.Tracer.Configuration | ||
import Cardano.Tracer.Types (DataPointRequestors) | ||
import Cardano.Tracer.Utils (initAcceptedMetrics, initConnectedNodes, | ||
initDataPointRequestors, initProtocolsBrake) | ||
import Trace.Forward.Utils.DataPoint (askForDataPoints) | ||
|
||
data AcceptorsMode = Initiator | Responder | ||
|
||
launchAcceptorsSimple | ||
:: AcceptorsMode | ||
-> FilePath | ||
-> String | ||
-> IO () | ||
launchAcceptorsSimple mode localSock dpName = do | ||
protocolsBrake <- initProtocolsBrake | ||
dpRequestors <- initDataPointRequestors | ||
connectedNodes <- initConnectedNodes | ||
acceptedMetrics <- initAcceptedMetrics | ||
currentLogLock <- newLock | ||
void . sequenceConcurrently $ | ||
[ runAcceptors mkConfig connectedNodes acceptedMetrics | ||
dpRequestors protocolsBrake currentLogLock | ||
, runDataPointsPrinter dpName dpRequestors | ||
] | ||
where | ||
mkConfig = TracerConfig | ||
{ networkMagic = 764824073 | ||
, network = case mode of | ||
Initiator -> ConnectTo $ NE.fromList [LocalSocket localSock] | ||
Responder -> AcceptAt (LocalSocket localSock) | ||
, loRequestNum = Just 1 | ||
, ekgRequestFreq = Just 1.0 | ||
, hasEKG = Nothing | ||
, hasPrometheus = Nothing | ||
, logging = NE.fromList [LoggingParams "/tmp/demo-acceptor" FileMode ForHuman] | ||
, rotation = Nothing | ||
, verbosity = Just Minimum | ||
} | ||
|
||
-- | To be able to ask any 'DataPoint' by the name without knowing the actual type, | ||
-- we print it out as a raw 'ByteString'. | ||
runDataPointsPrinter | ||
:: String | ||
-> DataPointRequestors | ||
-> IO () | ||
runDataPointsPrinter dpName dpRequestors = forever $ do | ||
sleep 1.0 | ||
dpReqs <- M.toList <$> readTVarIO dpRequestors | ||
forM_ dpReqs $ \(_, dpReq) -> do | ||
dpValues <- askForDataPoints dpReq [T.pack dpName] | ||
forM_ dpValues $ \(dpName', dpValue) -> | ||
case dpValue of | ||
Nothing -> return () | ||
Just rawDPValue -> do | ||
putStr $ "DataPoint, name: " <> T.unpack dpName' <> ", raw value: " | ||
LBS.putStr rawDPValue | ||
putStrLn "" |
Oops, something went wrong.