summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoshua Watt <JPEWhacker@gmail.com>2024-05-22 10:29:43 -0600
committerRichard Purdie <richard.purdie@linuxfoundation.org>2024-05-23 11:27:08 +0100
commit76421d5742ecca6344f3035378f89c2fc3a5ae05 (patch)
tree27c3e839babde08e177c8c49363e462983f9a31e
parent7812f104db9a2c72ea4dd5c458a4d50613360b08 (diff)
downloadpoky-76421d5742ecca6344f3035378f89c2fc3a5ae05.tar.gz
bitbake: bitbake-hashclient: Add ping command
Adds a ping subcommand to bitbake-hashclient which can be useful to measure connection latency (Bitbake rev: 337487fdffae92091fc33b2346d46c39db5a130f) Signed-off-by: Joshua Watt <JPEWhacker@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rwxr-xr-xbitbake/bin/bitbake-hashclient25
1 files changed, 25 insertions, 0 deletions
diff --git a/bitbake/bin/bitbake-hashclient b/bitbake/bin/bitbake-hashclient
index 610787ed2b..e1e1144644 100755
--- a/bitbake/bin/bitbake-hashclient
+++ b/bitbake/bin/bitbake-hashclient
@@ -16,6 +16,7 @@ import time
16import warnings 16import warnings
17import netrc 17import netrc
18import json 18import json
19import statistics
19warnings.simplefilter("default") 20warnings.simplefilter("default")
20 21
21try: 22try:
@@ -225,6 +226,26 @@ def main():
225 print("true" if result else "false") 226 print("true" if result else "false")
226 return 0 227 return 0
227 228
229 def handle_ping(args, client):
230 times = []
231 for i in range(1, args.count + 1):
232 print(f"Ping {i} of {args.count}... ", end="")
233 start_time = time.perf_counter()
234 client.ping()
235 elapsed = time.perf_counter() - start_time
236 times.append(elapsed)
237 print(f"{elapsed:.3f}s")
238
239 mean = statistics.mean(times)
240 std_dev = statistics.pstdev(times)
241
242 print("------------------------")
243 print(f"Average round trip time: {mean:.3f}s")
244 print(f"Round trip time std dev: {std_dev:.3f}s")
245 print(f"Min time is: {min(times):.3f}s")
246 print(f"Max time is: {max(times):.3f}s")
247 return 0
248
228 parser = argparse.ArgumentParser(description='Hash Equivalence Client') 249 parser = argparse.ArgumentParser(description='Hash Equivalence Client')
229 parser.add_argument('--address', default=DEFAULT_ADDRESS, help='Server address (default "%(default)s")') 250 parser.add_argument('--address', default=DEFAULT_ADDRESS, help='Server address (default "%(default)s")')
230 parser.add_argument('--log', default='WARNING', help='Set logging level') 251 parser.add_argument('--log', default='WARNING', help='Set logging level')
@@ -322,6 +343,10 @@ def main():
322 unihash_exists_parser.add_argument("unihash", help="Unihash to check") 343 unihash_exists_parser.add_argument("unihash", help="Unihash to check")
323 unihash_exists_parser.set_defaults(func=handle_unihash_exists) 344 unihash_exists_parser.set_defaults(func=handle_unihash_exists)
324 345
346 ping_parser = subparsers.add_parser('ping', help="Ping server")
347 ping_parser.add_argument("-n", "--count", type=int, help="Number of pings. Default is %(default)s", default=10)
348 ping_parser.set_defaults(func=handle_ping)
349
325 args = parser.parse_args() 350 args = parser.parse_args()
326 351
327 logger = logging.getLogger('hashserv') 352 logger = logging.getLogger('hashserv')