1
0
mirror of https://github.com/kellyjonbrazil/jc.git synced 2025-08-08 22:36:48 +02:00

add iwconfig raw vs process + tests

This commit is contained in:
Thomas Vincent
2022-12-19 22:36:48 -05:00
parent e207cccdc5
commit e996b3a9f6
4 changed files with 62 additions and 21 deletions

View File

@ -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(

View File

@ -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"
}
]

View File

@ -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
}
]

View File

@ -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()