From 1092d2f0ed3f57c637e65b395bd045088d223137 Mon Sep 17 00:00:00 2001 From: Renuka Manavalan <47282725+renukamanavalan@users.noreply.github.com> Date: Thu, 20 Oct 2022 08:19:58 -0700 Subject: [PATCH 1/5] Add CLI for show events-counters (#1) * Added event * remove unused import * remove unused import * LGTM warning fixed * drop settig explicit log level * Add CLI command to show stats * name update --- show/main.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/show/main.py b/show/main.py index 0fce8037ea..34b6de3f0e 100755 --- a/show/main.py +++ b/show/main.py @@ -334,6 +334,32 @@ def vrf(vrf_name): body.append(["", intf]) click.echo(tabulate(body, header)) +# +# 'events' command ("show event-counters") +# + +@cli.command() +def event_counters(): + """Show events counter""" + # dump keys as formatted + counters_db = SonicV2Connector(host='127.0.0.1') + counters_db.connect(counters_db.COUNTERS_DB, retry_on=False) + + header = ['name', 'count'] + keys = counters_db.keys(counters_db.COUNTERS_DB, 'COUNTERS_EVENTS*') + table = [] + + for key in natsorted(keys): + key_list = key.split(':') + data_dict = counters_db.get_all(counters_db.COUNTERS_DB, key) + table.append((key_list[1], data_dict["value"])) + + if table: + click.echo(tabulate(table, header, tablefmt='simple', stralign='right')) + else: + click.echo('No data available in COUNTERS_EVENTS\n') + + # # 'arp' command ("show arp") # From f53e11b0457a76f93fde31aad8525a98094f3067 Mon Sep 17 00:00:00 2001 From: Zain Budhwani <99770260+zbud-msft@users.noreply.github.com> Date: Fri, 21 Oct 2022 09:50:34 -0700 Subject: [PATCH 2/5] Add unit tests for event-counters cli (#2) --- tests/event_counters_input/counters_db.json | 18 ++++++++++ tests/show_event_counters.py | 37 +++++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 tests/event_counters_input/counters_db.json create mode 100644 tests/show_event_counters.py diff --git a/tests/event_counters_input/counters_db.json b/tests/event_counters_input/counters_db.json new file mode 100644 index 0000000000..294e4c0a07 --- /dev/null +++ b/tests/event_counters_input/counters_db.json @@ -0,0 +1,18 @@ +{ + "COUNTERS_EVENTS:latency_in_ms": { + "value": 2 + }, + "COUNTERS_EVENTS:missed_to_cache": { + "value": 0 + }, + "COUNTERS_EVENTS:missed_internal": { + "value": 0 + }, + "COUNTERS_EVENTS:missed_by_slow_receiver": { + "value": 0 + }, + "COUNTERS_EVENTS:published": { + "value": 40147 + } +} + diff --git a/tests/show_event_counters.py b/tests/show_event_counters.py new file mode 100644 index 0000000000..0cb965a287 --- /dev/null +++ b/tests/show_event_counters.py @@ -0,0 +1,37 @@ +import os +import sys +from click.testing import CliRunner +from utilities_common.db import Db +import show.main as show + +class TestShowEventCounters(object): + @classmethod + def setup_class(cls): + print("SETUP") + os.environ["UTILITIES_UNIT_TESTING"] = "1" + + def test_event_counters_show(self): + from .mock_tables import dbconnector + test_path = os.path.dirname(os.path.abspath(__file__)) + mock_db_path = os.path.join(test_path, "event_counters_input") + jsonfile_counters = os.path.join(mock_db_path, "counters_db") + dbconnector.dedicated_dbs['COUNTERS_DB'] = jsonfile_counters + runner = CliRunner() + db = Db() + expected_output = """\ + name count +----------------------- ------- + latency_in_ms 2 +missed_by_slow_receiver 0 + missed_internal 0 + missed_to_cache 0 + published 40147 +""" + + result = runner.invoke(show.cli.commands['event-counters'], [], obj=db) + print(result.exit_code) + print(result.output) + dbconnector.dedicated_dbs['COUNTERS_DB'] = None + assert result.exit_code == 0 + assert result.output == expected_output + From 20524093b53f48d24a5669ec62abd13b8d79cbd1 Mon Sep 17 00:00:00 2001 From: Zain Budhwani <99770260+zbud-msft@users.noreply.github.com> Date: Fri, 21 Oct 2022 10:40:22 -0700 Subject: [PATCH 3/5] Add unit tests (#3) * Add unit tests for event-counters cli * Rename test file --- tests/show_event_counters_test.py | 37 +++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 tests/show_event_counters_test.py diff --git a/tests/show_event_counters_test.py b/tests/show_event_counters_test.py new file mode 100644 index 0000000000..0cb965a287 --- /dev/null +++ b/tests/show_event_counters_test.py @@ -0,0 +1,37 @@ +import os +import sys +from click.testing import CliRunner +from utilities_common.db import Db +import show.main as show + +class TestShowEventCounters(object): + @classmethod + def setup_class(cls): + print("SETUP") + os.environ["UTILITIES_UNIT_TESTING"] = "1" + + def test_event_counters_show(self): + from .mock_tables import dbconnector + test_path = os.path.dirname(os.path.abspath(__file__)) + mock_db_path = os.path.join(test_path, "event_counters_input") + jsonfile_counters = os.path.join(mock_db_path, "counters_db") + dbconnector.dedicated_dbs['COUNTERS_DB'] = jsonfile_counters + runner = CliRunner() + db = Db() + expected_output = """\ + name count +----------------------- ------- + latency_in_ms 2 +missed_by_slow_receiver 0 + missed_internal 0 + missed_to_cache 0 + published 40147 +""" + + result = runner.invoke(show.cli.commands['event-counters'], [], obj=db) + print(result.exit_code) + print(result.output) + dbconnector.dedicated_dbs['COUNTERS_DB'] = None + assert result.exit_code == 0 + assert result.output == expected_output + From 31cbf1368c6b937094379a9c3ef1693f633c7993 Mon Sep 17 00:00:00 2001 From: Zain Budhwani <99770260+zbud-msft@users.noreply.github.com> Date: Fri, 21 Oct 2022 10:43:01 -0700 Subject: [PATCH 4/5] Delete old file (#4) --- tests/show_event_counters.py | 37 ------------------------------------ 1 file changed, 37 deletions(-) delete mode 100644 tests/show_event_counters.py diff --git a/tests/show_event_counters.py b/tests/show_event_counters.py deleted file mode 100644 index 0cb965a287..0000000000 --- a/tests/show_event_counters.py +++ /dev/null @@ -1,37 +0,0 @@ -import os -import sys -from click.testing import CliRunner -from utilities_common.db import Db -import show.main as show - -class TestShowEventCounters(object): - @classmethod - def setup_class(cls): - print("SETUP") - os.environ["UTILITIES_UNIT_TESTING"] = "1" - - def test_event_counters_show(self): - from .mock_tables import dbconnector - test_path = os.path.dirname(os.path.abspath(__file__)) - mock_db_path = os.path.join(test_path, "event_counters_input") - jsonfile_counters = os.path.join(mock_db_path, "counters_db") - dbconnector.dedicated_dbs['COUNTERS_DB'] = jsonfile_counters - runner = CliRunner() - db = Db() - expected_output = """\ - name count ------------------------ ------- - latency_in_ms 2 -missed_by_slow_receiver 0 - missed_internal 0 - missed_to_cache 0 - published 40147 -""" - - result = runner.invoke(show.cli.commands['event-counters'], [], obj=db) - print(result.exit_code) - print(result.output) - dbconnector.dedicated_dbs['COUNTERS_DB'] = None - assert result.exit_code == 0 - assert result.output == expected_output - From b7bc468eb6d37815265a2b356fd93640f83d1e6f Mon Sep 17 00:00:00 2001 From: Zain Budhwani <99770260+zbud-msft@users.noreply.github.com> Date: Fri, 21 Oct 2022 16:41:28 -0700 Subject: [PATCH 5/5] Delete space (#5) * Remove space --- show/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/show/main.py b/show/main.py index 33a3014447..b206b48635 100755 --- a/show/main.py +++ b/show/main.py @@ -359,7 +359,7 @@ def event_counters(): if table: click.echo(tabulate(table, header, tablefmt='simple', stralign='right')) else: - click.echo('No data available in COUNTERS_EVENTS\n') + click.echo('No data available in COUNTERS_EVENTS\n') #