From 311943ae90c87b89c8abadc32735482b39773ede Mon Sep 17 00:00:00 2001 From: Marcin Szamotulski Date: Sat, 10 Jun 2023 08:36:46 +0200 Subject: [PATCH 1/3] cardano-ping: printing of negotiated version It only makes sense to print the negotiation result if it happened on the remote side. --- cardano-ping/CHANGELOG.md | 4 ++++ cardano-ping/cardano-ping.cabal | 2 +- cardano-ping/src/Cardano/Network/Ping.hs | 8 ++++++-- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/cardano-ping/CHANGELOG.md b/cardano-ping/CHANGELOG.md index 58db3bfb05a..f9e936ebd58 100644 --- a/cardano-ping/CHANGELOG.md +++ b/cardano-ping/CHANGELOG.md @@ -1,5 +1,9 @@ # Revision history for cardano-ping +## 0.2.0.4 -- 2023-06-12 + +* Only print negotiated version, if negotiation took place on the remote side. + ## 0.2.0.3 -- 2023-06-09 * For versions strictly lower than `NodeToNodeV_11`, send diff --git a/cardano-ping/cardano-ping.cabal b/cardano-ping/cardano-ping.cabal index fd3fa6b498a..6e629289fbf 100644 --- a/cardano-ping/cardano-ping.cabal +++ b/cardano-ping/cardano-ping.cabal @@ -1,6 +1,6 @@ cabal-version: 3.0 name: cardano-ping -version: 0.2.0.3 +version: 0.2.0.4 synopsis: Utility for pinging cardano nodes description: Utility for pinging cardano nodes. license: Apache-2.0 diff --git a/cardano-ping/src/Cardano/Network/Ping.hs b/cardano-ping/src/Cardano/Network/Ping.hs index a25992aca5d..7b19d7b25a2 100644 --- a/cardano-ping/src/Cardano/Network/Ping.hs +++ b/cardano-ping/src/Cardano/Network/Ping.hs @@ -498,9 +498,13 @@ pingClient stdout stderr PingOpts{pingOptsQuiet, pingOptsJson, pingOptsCount, pi Left err -> do eprint $ printf "%s Version negotiation error %s\nReceived versions: %s\n" peerStr err (show recVersions) Right version -> do - unless pingOptsQuiet $ + let querySupported = version >= NodeToNodeVersionV11 minBound minBound + when ((not pingOptsHandshakeQuery && not pingOptsQuiet) || (pingOptsHandshakeQuery && not querySupported)) $ + -- print the negotiated version iff not quiet or querying but, query + -- is not supported by the remote host. printf "%s Negotiated version %s\n" peerStr (show version) - when (pingOptsHandshakeQuery && version >= NodeToNodeVersionV11 minBound minBound) $ + when (pingOptsHandshakeQuery && querySupported) $ + -- print query results if it was supported by the remote side printf "%s Queried versions %s\n" peerStr (show recVersions) unless pingOptsHandshakeQuery $ do keepAlive bearer timeoutfn peerStr version (tdigest []) 0 From 6d8d6eb5d7675cdf990d185ca8c3b4e638540f34 Mon Sep 17 00:00:00 2001 From: Marcin Szamotulski Date: Sat, 10 Jun 2023 21:38:23 +0200 Subject: [PATCH 2/3] cardano-ping: formatting of StatPoint --- cardano-ping/cardano-ping.cabal | 1 + cardano-ping/src/Cardano/Network/Ping.hs | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/cardano-ping/cardano-ping.cabal b/cardano-ping/cardano-ping.cabal index 6e629289fbf..8e6a294ea98 100644 --- a/cardano-ping/cardano-ping.cabal +++ b/cardano-ping/cardano-ping.cabal @@ -27,6 +27,7 @@ library cborg >=0.2.8 && <0.3, bytestring >=0.10 && <0.12, contra-tracer >=0.1 && <0.2, + time, si-timers ^>=1.1, strict-stm, diff --git a/cardano-ping/src/Cardano/Network/Ping.hs b/cardano-ping/src/Cardano/Network/Ping.hs index 7b19d7b25a2..8ca711b40ea 100644 --- a/cardano-ping/src/Cardano/Network/Ping.hs +++ b/cardano-ping/src/Cardano/Network/Ping.hs @@ -31,6 +31,7 @@ import Data.ByteString.Lazy (ByteString) import Data.Maybe (fromMaybe,) import Data.TDigest (insert, maximumValue, minimumValue, tdigest, mean, quantile, stddev, TDigest) import Data.Text (unpack) +import Data.Time.Format.ISO8601 (iso8601Show) import Data.Word (Word16, Word32) import Network.Mux.Bearer (MakeBearer (..), makeSocketBearer) import Network.Mux.Timeout (TimeoutFn, withTimeoutSerial) @@ -93,7 +94,7 @@ logger msgQueue json query = go True let bs' = case (json, first) of (True, False) -> LBS.Char.pack ",\n" <> bs (True, True) -> LBS.Char.pack "{ \"pongs\": [ " <> bs - (False, True) -> LBS.Char.pack " timestamp, host, cookie, sample, median, p90, mean, min, max, std\n" <> bs + (False, True) -> LBS.Char.pack "timestamp, host, cookie, sample, median, p90, mean, min, max, std\n" <> bs (False, False) -> bs LBS.Char.putStr bs' @@ -413,8 +414,8 @@ data StatPoint = StatPoint instance Show StatPoint where show :: StatPoint -> String show StatPoint {..} = - printf "%36s, %-28s, %7d, %7.3f, %7.3f, %7.3f, %7.3f, %7.3f, %7.3f, %7.3f" - (show spTimestamp) spHost spCookie spSample spMedian spP90 spMean spMin spMax spStd + printf "%-31s %-28s %7d, %7.3f, %7.3f, %7.3f, %7.3f, %7.3f, %7.3f, %7.3f" + (iso8601Show spTimestamp ++ ",") (spHost ++ ",") spCookie spSample spMedian spP90 spMean spMin spMax spStd instance ToJSON StatPoint where toJSON :: StatPoint -> Value From 2c9a5b5f292bd60301783d483b9d1b77f30ae32a Mon Sep 17 00:00:00 2001 From: Marcin Szamotulski Date: Mon, 12 Jun 2023 10:34:14 +0200 Subject: [PATCH 3/3] cardano-ping: updated CHANGELOG.md file --- cardano-ping/CHANGELOG.md | 2 ++ cardano-ping/src/Cardano/Network/Ping.hs | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/cardano-ping/CHANGELOG.md b/cardano-ping/CHANGELOG.md index f9e936ebd58..5777e86733b 100644 --- a/cardano-ping/CHANGELOG.md +++ b/cardano-ping/CHANGELOG.md @@ -2,7 +2,9 @@ ## 0.2.0.4 -- 2023-06-12 +* Using `ISO8601` time format. * Only print negotiated version, if negotiation took place on the remote side. +* Fixed formatting of ping messages. ## 0.2.0.3 -- 2023-06-09 diff --git a/cardano-ping/src/Cardano/Network/Ping.hs b/cardano-ping/src/Cardano/Network/Ping.hs index 8ca711b40ea..0a8a91c5328 100644 --- a/cardano-ping/src/Cardano/Network/Ping.hs +++ b/cardano-ping/src/Cardano/Network/Ping.hs @@ -500,7 +500,8 @@ pingClient stdout stderr PingOpts{pingOptsQuiet, pingOptsJson, pingOptsCount, pi eprint $ printf "%s Version negotiation error %s\nReceived versions: %s\n" peerStr err (show recVersions) Right version -> do let querySupported = version >= NodeToNodeVersionV11 minBound minBound - when ((not pingOptsHandshakeQuery && not pingOptsQuiet) || (pingOptsHandshakeQuery && not querySupported)) $ + when ( (not pingOptsHandshakeQuery && not pingOptsQuiet) + || ( pingOptsHandshakeQuery && not querySupported)) $ -- print the negotiated version iff not quiet or querying but, query -- is not supported by the remote host. printf "%s Negotiated version %s\n" peerStr (show version)