From e996b3a9f6a3fba2d5cd8e947fa5712b30b9ed55 Mon Sep 17 00:00:00 2001 From: Thomas Vincent Date: Mon, 19 Dec 2022 22:36:48 -0500 Subject: [PATCH] add iwconfig raw vs process + tests --- jc/parsers/iwconfig.py | 16 +++++++---- tests/fixtures/ubuntu-20.10/iwconfig-raw.json | 28 +++++++++++++++++++ tests/fixtures/ubuntu-20.10/iwconfig.json | 28 +++++++++---------- tests/test_iwconfig.py | 11 +++++++- 4 files changed, 62 insertions(+), 21 deletions(-) create mode 100644 tests/fixtures/ubuntu-20.10/iwconfig-raw.json diff --git a/jc/parsers/iwconfig.py b/jc/parsers/iwconfig.py index 9b0c13c9..09417781 100644 --- a/jc/parsers/iwconfig.py +++ b/jc/parsers/iwconfig.py @@ -56,12 +56,16 @@ def _process(proc_data: List[JSONDictType]) -> List[JSONDictType]: List of Dictionaries. Structured to conform to the schema. """ - int_list = { - 'flags', 'mtu', 'ipv6_mask', 'rx_packets', 'rx_bytes', 'rx_errors', 'rx_dropped', - 'rx_overruns', 'rx_frame', 'tx_packets', 'tx_bytes', 'tx_errors', 'tx_dropped', - 'tx_overruns', 'tx_carrier', 'tx_collisions', 'metric', 'nd6_options', 'lane' - } - float_list = {'rx_power_mw', 'rx_power_dbm', 'tx_bias_ma'} + int_list = ['signal_level', 'rx_invalid_nwid', 'rx_invalid_crypt', 'rx_invalid_frag', + 'tx_excessive_retries', 'invalid_misc', 'missed_beacon', 'tx_power', 'retry_short_limit'] + float_list = ['frequency', 'bit_rate'] + bool_list = ['rts_threshold', 'fragment_threshold', 'power_management'] + + + proc_data = [ { key: int(value) if key in int_list else value for key, value in proc_data_item.items() } for proc_data_item in proc_data ] + proc_data = [ { key: float(value) if key in float_list else value for key, value in proc_data_item.items() } for proc_data_item in proc_data ] + proc_data = [ { key: value == 'on' if key in bool_list else value for key, value in proc_data_item .items() } for proc_data_item in proc_data ] + return proc_data def parse( diff --git a/tests/fixtures/ubuntu-20.10/iwconfig-raw.json b/tests/fixtures/ubuntu-20.10/iwconfig-raw.json new file mode 100644 index 00000000..6f824ed2 --- /dev/null +++ b/tests/fixtures/ubuntu-20.10/iwconfig-raw.json @@ -0,0 +1,28 @@ +[ + { + "name": "wlp5s0", + "protocol": "IEEE 802.11", + "essid": "BLABLABLA", + "mode": "Managed", + "frequency": "5.18", + "frequency_unit": "GHz", + "access_point": "E6:63:DA:16:50:BF", + "bit_rate": "6", + "bit_rate_unit": "Mb/s", + "tx_power": "30", + "tx_power_unit": "dBm", + "retry_short_limit": "7", + "rts_threshold": "off", + "fragment_threshold": "off", + "power_management": "on", + "link_quality": "58/70", + "signal_level": "-52", + "signal_level_unit": "dBm", + "rx_invalid_nwid": "0", + "rx_invalid_crypt": "0", + "rx_invalid_frag": "0", + "tx_excessive_retries": "0", + "invalid_misc": "1766", + "missed_beacon": "0" + } +] \ No newline at end of file diff --git a/tests/fixtures/ubuntu-20.10/iwconfig.json b/tests/fixtures/ubuntu-20.10/iwconfig.json index 6f824ed2..511884e3 100644 --- a/tests/fixtures/ubuntu-20.10/iwconfig.json +++ b/tests/fixtures/ubuntu-20.10/iwconfig.json @@ -4,25 +4,25 @@ "protocol": "IEEE 802.11", "essid": "BLABLABLA", "mode": "Managed", - "frequency": "5.18", + "frequency": 5.18, "frequency_unit": "GHz", "access_point": "E6:63:DA:16:50:BF", - "bit_rate": "6", + "bit_rate": 6.0, "bit_rate_unit": "Mb/s", - "tx_power": "30", + "tx_power": 30, "tx_power_unit": "dBm", - "retry_short_limit": "7", - "rts_threshold": "off", - "fragment_threshold": "off", - "power_management": "on", + "retry_short_limit": 7, + "rts_threshold": false, + "fragment_threshold": false, + "power_management": true, "link_quality": "58/70", - "signal_level": "-52", + "signal_level": -52, "signal_level_unit": "dBm", - "rx_invalid_nwid": "0", - "rx_invalid_crypt": "0", - "rx_invalid_frag": "0", - "tx_excessive_retries": "0", - "invalid_misc": "1766", - "missed_beacon": "0" + "rx_invalid_nwid": 0, + "rx_invalid_crypt": 0, + "rx_invalid_frag": 0, + "tx_excessive_retries": 0, + "invalid_misc": 1766, + "missed_beacon": 0 } ] \ No newline at end of file diff --git a/tests/test_iwconfig.py b/tests/test_iwconfig.py index 2bdbae62..050b9b52 100644 --- a/tests/test_iwconfig.py +++ b/tests/test_iwconfig.py @@ -16,18 +16,27 @@ class iwconfigTests(unittest.TestCase): with open(os.path.join(THIS_DIR, 'fixtures/ubuntu-20.10/iwconfig.json'), 'r', encoding='utf-8') as f: ubuntu_20_10_iwconfig_json= json.loads(f.read()) + with open(os.path.join(THIS_DIR, 'fixtures/ubuntu-20.10/iwconfig-raw.json'), 'r', encoding='utf-8') as f: + ubuntu_20_10_iwconfig_raw_json= json.loads(f.read()) + + def test_iwconfig_nodata(self): """ Test 'iwconfig' with no data """ self.assertEqual(jc.parsers.iwconfig.parse('', quiet=True), []) + def test_iwconfig_ubuntu_20_04(self): + """ + Test 'iwconfig' raw on Ubuntu 20.10 + """ + self.assertEqual(jc.parsers.iwconfig.parse(self.ubuntu_20_10_iwconfig, quiet=True, raw=True), self.ubuntu_20_10_iwconfig_raw_json) + def test_iwconfig_ubuntu_20_04(self): """ Test 'iwconfig' on Ubuntu 20.10 """ self.assertEqual(jc.parsers.iwconfig.parse(self.ubuntu_20_10_iwconfig, quiet=True), self.ubuntu_20_10_iwconfig_json) - if __name__ == '__main__': unittest.main()