From a249ca1da3454a8ebdac5067354fd7312c637230 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Fri, 2 Sep 2022 18:29:16 -0700 Subject: [PATCH 001/124] add initial procfile parser --- jc/lib.py | 1 + jc/parsers/procfile.py | 197 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 198 insertions(+) create mode 100644 jc/parsers/procfile.py diff --git a/jc/lib.py b/jc/lib.py index 98c5084e..5d8e9815 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -84,6 +84,7 @@ parsers = [ 'pip-show', 'plist', 'postconf', + 'procfile', 'ps', 'route', 'rpm-qi', diff --git a/jc/parsers/procfile.py b/jc/parsers/procfile.py new file mode 100644 index 00000000..54fa5578 --- /dev/null +++ b/jc/parsers/procfile.py @@ -0,0 +1,197 @@ +"""jc - JSON Convert Proc file output parser + +<> + +Usage (cli): + + $ cat /proc/ | jc --procfile + +Usage (module): + + import jc + result = jc.parse('procfile', proc_file) + +Schema: + + [ + { + "procfile": string, + "bar": boolean, + "baz": integer + } + ] + +Examples: + + $ procfile | jc --procfile -p + [] + + $ procfile | jc --procfile -p -r + [] +""" +import re +from typing import List, Dict +import jc.utils + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = 'Proc file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux', 'darwin', 'cygwin', 'win32', 'aix', 'freebsd'] + + +__version__ = info.version + + +def _process(proc_data: List[Dict]) -> List[Dict]: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (List of Dictionaries) raw structured data to process + + Returns: + + List of Dictionaries. Structured to conform to the schema. + """ + + # process the data here + # rebuild output for added semantic information + # use helper functions in jc.utils for int, float, bool + # conversions and timestamps + + return proc_data + + +def _parse_uptime(): + print('uptime') + + +def _parse_loadavg(): + print('loadavg') + + +def _parse_cpuinfo(): + print('cpuinfo') + + +def _parse_meminfo(): + print('meminfo') + + +def _parse_version(): + print('version') + + +def _parse_crypto(): + print('crypto') + + +def _parse_diskstats(): + print('diskstats') + + +def _parse_filesystems(): + print('filesystems') + + +def _parse_pid_status(): + print('pid status') + + +def _parse_pid_statm(): + print('pid statm') + + +def _parse_pid_stat(): + print('pid stat') + + +def _parse_pid_smaps(): + print('pid smaps') + + +def _parse_pid_maps(): + print('pid maps') + + +def _parse_pid_numa_maps(): + print('pid numa_maps') + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> List[Dict]: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + List of Dictionaries. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: List = [] + + if jc.utils.has_data(data): + + # signatures + uptime_p = re.compile(r'^\d+.\d\d \d+.\d\d$') + loadavg_p = re.compile(r'^\d+.\d\d \d+.\d\d \d+.\d\d \d+/\d+ \d+$') + cpuinfo_p = re.compile(r'^processor\s+:.*\nvendor_id\s+:.*\ncpu family\s+:.*\n') + meminfo_p = re.compile(r'^MemTotal:.*\nMemFree:.*\nMemAvailable:.*\n') + version_p = re.compile(r'^.+\sversion\s[^\n]+$') + crypto_p = re.compile(r'^name\s+:.*\ndriver\s+:.*\nmodule\s+:.*\n') + diskstats_p = re.compile(r'^\s*\d+\s+\d\s\w+\s(?:\d+\s){16}\d\n') + filesystems_p = re.compile(r'^(?:(?:nodev\t|\t)\w+\n){3}') + pid_status_p = re.compile(r'^Name:\t.+\nUmask:\t\d+\nState:\t.+\nTgid:\t\d+\n') + pid_statm_p = re.compile(r'^\d+ \d+ \d+\s\d+\s\d+\s\d+\s\d+$') + pid_stat_p = re.compile(r'^\d+ \(.{1,16}\) \w \d+ \d+ \d+ \d+ -?\d+ (?:\d+ ){43}\d+$') + pid_smaps_p = re.compile(r'^[0-9a-f]{12}-[0-9a-f]{12} [rwxsp\-]{4} [0-9a-f]{8} [0-9a-f]{2}:[0-9a-f]{2} \d+ [^\n]+\nSize:\s+\d+ \S\S\n') + pid_maps_p = re.compile(r'^[0-9a-f]{12}-[0-9a-f]{12} [rwxsp\-]{4} [0-9a-f]{8} [0-9a-f]{2}:[0-9a-f]{2} \d+ ') + pid_numa_maps_p = re.compile(r'^[a-f0-9]{12} default [^\n]+\n') + + procmap = { + uptime_p: _parse_uptime, + loadavg_p: _parse_loadavg, + cpuinfo_p: _parse_cpuinfo, + meminfo_p: _parse_meminfo, + version_p: _parse_version, + crypto_p: _parse_crypto, + diskstats_p: _parse_diskstats, + filesystems_p: _parse_filesystems, + pid_status_p: _parse_pid_status, + pid_statm_p: _parse_pid_statm, + pid_stat_p: _parse_pid_stat, + pid_smaps_p: _parse_pid_smaps, # before pid_maps + pid_maps_p: _parse_pid_maps, # after pid_smaps + pid_numa_maps_p: _parse_pid_numa_maps + } + + for reg_pattern, parse_func in procmap.items(): + if reg_pattern.search(data): + parse_func() + break + + # for line in filter(None, data.splitlines()): + + # # parse the content here + # # check out helper functions in jc.utils + # # and jc.parsers.universal + + # pass + + return raw_output if raw else _process(raw_output) From edcb2280cc6433dc0a78c85bfacfba0b0700a37b Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Fri, 2 Sep 2022 19:20:36 -0700 Subject: [PATCH 002/124] add more filetypes --- jc/parsers/procfile.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/jc/parsers/procfile.py b/jc/parsers/procfile.py index 54fa5578..0fa624c1 100644 --- a/jc/parsers/procfile.py +++ b/jc/parsers/procfile.py @@ -99,6 +99,22 @@ def _parse_filesystems(): print('filesystems') +def _parse_interrupts(): + print('interrupts') + + +def _parse_buddyinfo(): + print('buddyinfo') + + +def _parse_pagetypeinfo(): + print('pagetypinfo') + + +def _parse_vmallocinfo(): + print('vmallocinfo') + + def _parse_pid_status(): print('pid status') @@ -157,6 +173,10 @@ def parse( crypto_p = re.compile(r'^name\s+:.*\ndriver\s+:.*\nmodule\s+:.*\n') diskstats_p = re.compile(r'^\s*\d+\s+\d\s\w+\s(?:\d+\s){16}\d\n') filesystems_p = re.compile(r'^(?:(?:nodev\t|\t)\w+\n){3}') + interrupts_p = re.compile(r'^\s+(?:CPU\d+ +)+\n\s*\d+:\s+\d+') + buddyinfo_p = re.compile(r'^Node \d+, zone\s+\w+\s+(?:\d+\s+){11}\n') + pagetypeinfo_p = re.compile(r'^Page block order:\s+\d+\nPages per block:\s+\d+\n\n') + vmallocinfo_p = re.compile(r'^0x[0-9a-f]{16}-0x[0-9a-f]{16}\s+\d+ \w+\+\w+/\w+ ') pid_status_p = re.compile(r'^Name:\t.+\nUmask:\t\d+\nState:\t.+\nTgid:\t\d+\n') pid_statm_p = re.compile(r'^\d+ \d+ \d+\s\d+\s\d+\s\d+\s\d+$') pid_stat_p = re.compile(r'^\d+ \(.{1,16}\) \w \d+ \d+ \d+ \d+ -?\d+ (?:\d+ ){43}\d+$') @@ -173,6 +193,10 @@ def parse( crypto_p: _parse_crypto, diskstats_p: _parse_diskstats, filesystems_p: _parse_filesystems, + interrupts_p: _parse_interrupts, + buddyinfo_p: _parse_buddyinfo, + pagetypeinfo_p: _parse_pagetypeinfo, + vmallocinfo_p: _parse_vmallocinfo, pid_status_p: _parse_pid_status, pid_statm_p: _parse_pid_statm, pid_stat_p: _parse_pid_stat, From e771b36a18b733106a1efb6c1c568c9279865cae Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Sat, 3 Sep 2022 10:52:35 -0700 Subject: [PATCH 003/124] add more signatures --- jc/parsers/procfile.py | 156 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 155 insertions(+), 1 deletion(-) diff --git a/jc/parsers/procfile.py b/jc/parsers/procfile.py index 0fa624c1..9ade1aaa 100644 --- a/jc/parsers/procfile.py +++ b/jc/parsers/procfile.py @@ -103,6 +103,26 @@ def _parse_interrupts(): print('interrupts') +def _parse_iomem(): + print('iomem') + + +def _parse_ioports(): + print('ioports') + + +def _parse_locks(): + print('locks') + + +def _parse_modules(): + print('modules') + + +def _parse_partitions(): + print('partitions') + + def _parse_buddyinfo(): print('buddyinfo') @@ -115,6 +135,72 @@ def _parse_vmallocinfo(): print('vmallocinfo') +def _parse_softirqs(): + print('softirqs') + + +def _parse_scsi(): + print('scsi') + + +def _parse_stat(): + print('stat') + + +def _parse_swaps(): + print('swaps') + + +def _parse_slabinfo(): + print('slabinfo') + + +def _parse_consoles(): + print('consoles') + + +def _parse_devices(): + print('devices') + + +def _parse_vmstat(): + print('vmstat') + + +def _parse_zoneinfo(): + print('zoneinfo') + +#### + +def _parse_driver_rtc(): + print('driver rtc') + +#### + +def _parse_net_arp(): + print('net arp') + +def _parse_net_dev(): + print('net dev') + +def _parse_net_dev_mcast(): + print('net dev_mcast') + +def _parse_net_igmp(): + print('net igmp') + +def _parse_net_igmp6(): + print('net igmp6') + +def _parse_net_if_inet6(): + print('net if_inet6') + +def _parse_net_ipv6_route(): + print('net ipv6_route') + +#### + + def _parse_pid_status(): print('pid status') @@ -139,6 +225,18 @@ def _parse_pid_numa_maps(): print('pid numa_maps') +def _parse_pid_io(): + print('pid io') + + +def _parse_pid_mountinfo(): + print('pid mountinfo') + + +def _parse_pid_fdinfo(): + print('pid fdinfo') + + def parse( data: str, raw: bool = False, @@ -174,15 +272,43 @@ def parse( diskstats_p = re.compile(r'^\s*\d+\s+\d\s\w+\s(?:\d+\s){16}\d\n') filesystems_p = re.compile(r'^(?:(?:nodev\t|\t)\w+\n){3}') interrupts_p = re.compile(r'^\s+(?:CPU\d+ +)+\n\s*\d+:\s+\d+') + iomem_p = re.compile(r'^00000000-[0-9a-f]{8} : .*\n[0-9a-f]{8}-[0-9a-f]{8} : ') + ioports_p = re.compile(r'^0000-[0-9a-f]{4} : .*\n\s*0000-[0-9a-f]{4} : ') + locks_p = re.compile(r'^\d+: (?:POSIX|FLOCK|OFDLCK)\s+(?:ADVISORY|MANDATORY)\s+(?:READ|WRITE) ') + modules_p = re.compile(r'^\w+ \d+ \d+ (?:-|\w+,).*0x[0-9a-f]{16}\n') buddyinfo_p = re.compile(r'^Node \d+, zone\s+\w+\s+(?:\d+\s+){11}\n') pagetypeinfo_p = re.compile(r'^Page block order:\s+\d+\nPages per block:\s+\d+\n\n') + partitions_p = re.compile(r'^major minor #blocks name\n\n\s*\d+\s+\d+\s+\d+ \w+\n') vmallocinfo_p = re.compile(r'^0x[0-9a-f]{16}-0x[0-9a-f]{16}\s+\d+ \w+\+\w+/\w+ ') + softirqs_p = re.compile(r'^\s+(CPU\d+\s+)+\n\s+HI:\s+\d') + scsi_p = re.compile(r'^Attached devices:\nHost: \w+ ') + stat_p = re.compile(r'^cpu\s+(?: \d+){10}.*intr ', re.DOTALL) + consoles_p = re.compile(r'^\w+\s+[\-WUR]{3} \([ECBpba ]+\)\s+\d+:\d+\n') + devices_p = re.compile(r'^Character devices:\n\s+\d+ .*\n') + slabinfo_p = re.compile(r'^slabinfo - version: \d+.\d+\n') + swaps_p = re.compile(r'^Filename\t\t\t\tType\t\tSize\t\tUsed\t\tPriority\n') + vmstat_p = re.compile(r'nr_free_pages \d+\n.* \d$', re.DOTALL) + zoneinfo_p = re.compile(r'^Node \d+, zone\s+\w+\n') + + driver_rtc_p = re.compile(r'^rtc_time\t: .*\nrtc_date\t: .*\nalrm_time\t: .*\n') + + net_arp_p = re.compile(r'^IP address\s+HW type\s+Flags\s+HW address\s+Mask\s+Device\n') + net_dev_p = re.compile(r'^Inter-\|\s+Receive\s+\|\s+Transmit\n') + net_dev_mcast_p = re.compile(r'^\d+\s+\w+\s+\d+\s+\d+\s+[0-9a-f]{12}') + net_igmp_p = re.compile(r'^Idx\tDevice\s+:\s+Count\s+Querier\tGroup\s+Users\s+Timer\tReporter\n') + net_igmp6_p = re.compile(r'^\d+\s+\w+\s+[0-9a-f]{32}\s+\d+\s+[0-9A-F]{8}\s+\d+') + net_if_inet6_p = re.compile(r'^[0-9a-f]{32} \d\d \d\d \d\d \d\d\s+\w+') + net_ipv6_route_p = re.compile(r'^[0-9a-f]{32} \d\d [0-9a-f]{32} \d\d [0-9a-f]{32} (?:[0-9a-f]{8} ){4}\s+\w+') + pid_status_p = re.compile(r'^Name:\t.+\nUmask:\t\d+\nState:\t.+\nTgid:\t\d+\n') pid_statm_p = re.compile(r'^\d+ \d+ \d+\s\d+\s\d+\s\d+\s\d+$') pid_stat_p = re.compile(r'^\d+ \(.{1,16}\) \w \d+ \d+ \d+ \d+ -?\d+ (?:\d+ ){43}\d+$') pid_smaps_p = re.compile(r'^[0-9a-f]{12}-[0-9a-f]{12} [rwxsp\-]{4} [0-9a-f]{8} [0-9a-f]{2}:[0-9a-f]{2} \d+ [^\n]+\nSize:\s+\d+ \S\S\n') pid_maps_p = re.compile(r'^[0-9a-f]{12}-[0-9a-f]{12} [rwxsp\-]{4} [0-9a-f]{8} [0-9a-f]{2}:[0-9a-f]{2} \d+ ') pid_numa_maps_p = re.compile(r'^[a-f0-9]{12} default [^\n]+\n') + pid_io_p = re.compile(r'^rchar: \d+\nwchar: \d+\nsyscr: \d+\n') + pid_mountinfo_p = re.compile(r'^\d+ \d+ \d+:\d+ /.+\n') + pid_fdinfo_p = re.compile(r'^pos:\t\d+\nflags:\t\d+\nmnt_id:\t\d+\n') procmap = { uptime_p: _parse_uptime, @@ -194,15 +320,43 @@ def parse( diskstats_p: _parse_diskstats, filesystems_p: _parse_filesystems, interrupts_p: _parse_interrupts, + iomem_p: _parse_iomem, + ioports_p: _parse_ioports, + locks_p: _parse_locks, + modules_p: _parse_modules, buddyinfo_p: _parse_buddyinfo, pagetypeinfo_p: _parse_pagetypeinfo, + partitions_p: _parse_partitions, vmallocinfo_p: _parse_vmallocinfo, + slabinfo_p: _parse_slabinfo, + softirqs_p: _parse_softirqs, + scsi_p: _parse_scsi, + stat_p: _parse_stat, + swaps_p: _parse_swaps, + consoles_p: _parse_consoles, + devices_p: _parse_devices, + vmstat_p: _parse_vmstat, + zoneinfo_p: _parse_zoneinfo, + + driver_rtc_p: _parse_driver_rtc, + + net_arp_p: _parse_net_arp, + net_dev_p: _parse_net_dev, + net_ipv6_route_p: _parse_net_ipv6_route, # before net_dev_mcast + net_dev_mcast_p: _parse_net_dev_mcast, # after net_ipv6_route + net_igmp_p: _parse_net_igmp, + net_igmp6_p: _parse_net_igmp6, + net_if_inet6_p: _parse_net_if_inet6, + pid_status_p: _parse_pid_status, pid_statm_p: _parse_pid_statm, pid_stat_p: _parse_pid_stat, pid_smaps_p: _parse_pid_smaps, # before pid_maps pid_maps_p: _parse_pid_maps, # after pid_smaps - pid_numa_maps_p: _parse_pid_numa_maps + pid_numa_maps_p: _parse_pid_numa_maps, + pid_io_p: _parse_pid_io, + pid_mountinfo_p: _parse_pid_mountinfo, + pid_fdinfo_p: _parse_pid_fdinfo } for reg_pattern, parse_func in procmap.items(): From c1b2bae3334dbe96d8b673f21304cdbbe22cea57 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Sat, 3 Sep 2022 11:34:28 -0700 Subject: [PATCH 004/124] add more net files --- jc/parsers/procfile.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/jc/parsers/procfile.py b/jc/parsers/procfile.py index 9ade1aaa..a2d0532f 100644 --- a/jc/parsers/procfile.py +++ b/jc/parsers/procfile.py @@ -198,6 +198,21 @@ def _parse_net_if_inet6(): def _parse_net_ipv6_route(): print('net ipv6_route') +def _parse_net_netlink(): + print('net netlink') + +def _parse_net_netstat(): + print('net netstat') + +def _parse_net_packet(): + print('net packet') + +def _parse_net_protocols(): + print('net protocols') + +def _parse_net_route(): + print('net route') + #### @@ -299,6 +314,11 @@ def parse( net_igmp6_p = re.compile(r'^\d+\s+\w+\s+[0-9a-f]{32}\s+\d+\s+[0-9A-F]{8}\s+\d+') net_if_inet6_p = re.compile(r'^[0-9a-f]{32} \d\d \d\d \d\d \d\d\s+\w+') net_ipv6_route_p = re.compile(r'^[0-9a-f]{32} \d\d [0-9a-f]{32} \d\d [0-9a-f]{32} (?:[0-9a-f]{8} ){4}\s+\w+') + net_netlink_p = re.compile(r'^sk\s+Eth Pid\s+Groups\s+Rmem\s+Wmem') + net_netstat_p = re.compile(r'^TcpExt: SyncookiesSent SyncookiesRecv SyncookiesFailed') + net_packet_p = re.compile(r'^sk RefCnt Type Proto Iface R Rmem User Inode\n') + net_protocols_p = re.compile(r'^protocol size sockets memory press maxhdr slab module cl co di ac io in de sh ss gs se re sp bi br ha uh gp em\n') + net_route_p = re.compile(r'^Iface\tDestination\tGateway \tFlags\tRefCnt\tUse\tMetric\tMask\t\tMTU\tWindow\tIRTT\s+\n') pid_status_p = re.compile(r'^Name:\t.+\nUmask:\t\d+\nState:\t.+\nTgid:\t\d+\n') pid_statm_p = re.compile(r'^\d+ \d+ \d+\s\d+\s\d+\s\d+\s\d+$') @@ -347,6 +367,11 @@ def parse( net_igmp_p: _parse_net_igmp, net_igmp6_p: _parse_net_igmp6, net_if_inet6_p: _parse_net_if_inet6, + net_netlink_p: _parse_net_netlink, + net_netstat_p: _parse_net_netstat, + net_packet_p: _parse_net_packet, + net_protocols_p: _parse_net_protocols, + net_route_p: _parse_net_route, pid_status_p: _parse_pid_status, pid_statm_p: _parse_pid_statm, From 146dc070ea761502b814e40bfd873ea859a78e44 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Sat, 3 Sep 2022 14:05:57 -0700 Subject: [PATCH 005/124] reorder patterns --- jc/parsers/procfile.py | 89 +++++++++++++++++++++++++----------------- 1 file changed, 54 insertions(+), 35 deletions(-) diff --git a/jc/parsers/procfile.py b/jc/parsers/procfile.py index a2d0532f..8e5cf2a0 100644 --- a/jc/parsers/procfile.py +++ b/jc/parsers/procfile.py @@ -119,6 +119,10 @@ def _parse_modules(): print('modules') +def _parse_mtrr(): + print('mtrr') + + def _parse_partitions(): print('partitions') @@ -139,10 +143,6 @@ def _parse_softirqs(): print('softirqs') -def _parse_scsi(): - print('scsi') - - def _parse_stat(): print('stat') @@ -213,6 +213,9 @@ def _parse_net_protocols(): def _parse_net_route(): print('net route') +def _parse_net_unix(): + print('net unix') + #### @@ -251,6 +254,14 @@ def _parse_pid_mountinfo(): def _parse_pid_fdinfo(): print('pid fdinfo') +#### + +def _parse_scsi_scsi(): + print('scsi scsi') + +def _parse_scsi_device_info(): + print('scsi device_info') + def parse( data: str, @@ -278,30 +289,30 @@ def parse( if jc.utils.has_data(data): # signatures - uptime_p = re.compile(r'^\d+.\d\d \d+.\d\d$') - loadavg_p = re.compile(r'^\d+.\d\d \d+.\d\d \d+.\d\d \d+/\d+ \d+$') + buddyinfo_p = re.compile(r'^Node \d+, zone\s+\w+\s+(?:\d+\s+){11}\n') + consoles_p = re.compile(r'^\w+\s+[\-WUR]{3} \([ECBpba ]+\)\s+\d+:\d+\n') cpuinfo_p = re.compile(r'^processor\s+:.*\nvendor_id\s+:.*\ncpu family\s+:.*\n') - meminfo_p = re.compile(r'^MemTotal:.*\nMemFree:.*\nMemAvailable:.*\n') - version_p = re.compile(r'^.+\sversion\s[^\n]+$') crypto_p = re.compile(r'^name\s+:.*\ndriver\s+:.*\nmodule\s+:.*\n') + devices_p = re.compile(r'^Character devices:\n\s+\d+ .*\n') diskstats_p = re.compile(r'^\s*\d+\s+\d\s\w+\s(?:\d+\s){16}\d\n') filesystems_p = re.compile(r'^(?:(?:nodev\t|\t)\w+\n){3}') interrupts_p = re.compile(r'^\s+(?:CPU\d+ +)+\n\s*\d+:\s+\d+') iomem_p = re.compile(r'^00000000-[0-9a-f]{8} : .*\n[0-9a-f]{8}-[0-9a-f]{8} : ') ioports_p = re.compile(r'^0000-[0-9a-f]{4} : .*\n\s*0000-[0-9a-f]{4} : ') + loadavg_p = re.compile(r'^\d+.\d\d \d+.\d\d \d+.\d\d \d+/\d+ \d+$') locks_p = re.compile(r'^\d+: (?:POSIX|FLOCK|OFDLCK)\s+(?:ADVISORY|MANDATORY)\s+(?:READ|WRITE) ') + meminfo_p = re.compile(r'^MemTotal:.*\nMemFree:.*\nMemAvailable:.*\n') modules_p = re.compile(r'^\w+ \d+ \d+ (?:-|\w+,).*0x[0-9a-f]{16}\n') - buddyinfo_p = re.compile(r'^Node \d+, zone\s+\w+\s+(?:\d+\s+){11}\n') + mtrr_p = re.compile(r'^reg\d+: base=0x[0-9a-f]+ \(') pagetypeinfo_p = re.compile(r'^Page block order:\s+\d+\nPages per block:\s+\d+\n\n') partitions_p = re.compile(r'^major minor #blocks name\n\n\s*\d+\s+\d+\s+\d+ \w+\n') - vmallocinfo_p = re.compile(r'^0x[0-9a-f]{16}-0x[0-9a-f]{16}\s+\d+ \w+\+\w+/\w+ ') - softirqs_p = re.compile(r'^\s+(CPU\d+\s+)+\n\s+HI:\s+\d') - scsi_p = re.compile(r'^Attached devices:\nHost: \w+ ') - stat_p = re.compile(r'^cpu\s+(?: \d+){10}.*intr ', re.DOTALL) - consoles_p = re.compile(r'^\w+\s+[\-WUR]{3} \([ECBpba ]+\)\s+\d+:\d+\n') - devices_p = re.compile(r'^Character devices:\n\s+\d+ .*\n') slabinfo_p = re.compile(r'^slabinfo - version: \d+.\d+\n') + softirqs_p = re.compile(r'^\s+(CPU\d+\s+)+\n\s+HI:\s+\d') + stat_p = re.compile(r'^cpu\s+(?: \d+){10}.*intr ', re.DOTALL) swaps_p = re.compile(r'^Filename\t\t\t\tType\t\tSize\t\tUsed\t\tPriority\n') + uptime_p = re.compile(r'^\d+.\d\d \d+.\d\d$') + version_p = re.compile(r'^.+\sversion\s[^\n]+$') + vmallocinfo_p = re.compile(r'^0x[0-9a-f]{16}-0x[0-9a-f]{16}\s+\d+ \w+\+\w+/\w+ ') vmstat_p = re.compile(r'nr_free_pages \d+\n.* \d$', re.DOTALL) zoneinfo_p = re.compile(r'^Node \d+, zone\s+\w+\n') @@ -310,15 +321,16 @@ def parse( net_arp_p = re.compile(r'^IP address\s+HW type\s+Flags\s+HW address\s+Mask\s+Device\n') net_dev_p = re.compile(r'^Inter-\|\s+Receive\s+\|\s+Transmit\n') net_dev_mcast_p = re.compile(r'^\d+\s+\w+\s+\d+\s+\d+\s+[0-9a-f]{12}') + net_if_inet6_p = re.compile(r'^[0-9a-f]{32} \d\d \d\d \d\d \d\d\s+\w+') net_igmp_p = re.compile(r'^Idx\tDevice\s+:\s+Count\s+Querier\tGroup\s+Users\s+Timer\tReporter\n') net_igmp6_p = re.compile(r'^\d+\s+\w+\s+[0-9a-f]{32}\s+\d+\s+[0-9A-F]{8}\s+\d+') - net_if_inet6_p = re.compile(r'^[0-9a-f]{32} \d\d \d\d \d\d \d\d\s+\w+') net_ipv6_route_p = re.compile(r'^[0-9a-f]{32} \d\d [0-9a-f]{32} \d\d [0-9a-f]{32} (?:[0-9a-f]{8} ){4}\s+\w+') net_netlink_p = re.compile(r'^sk\s+Eth Pid\s+Groups\s+Rmem\s+Wmem') net_netstat_p = re.compile(r'^TcpExt: SyncookiesSent SyncookiesRecv SyncookiesFailed') net_packet_p = re.compile(r'^sk RefCnt Type Proto Iface R Rmem User Inode\n') net_protocols_p = re.compile(r'^protocol size sockets memory press maxhdr slab module cl co di ac io in de sh ss gs se re sp bi br ha uh gp em\n') net_route_p = re.compile(r'^Iface\tDestination\tGateway \tFlags\tRefCnt\tUse\tMetric\tMask\t\tMTU\tWindow\tIRTT\s+\n') + net_unix_p = re.compile(r'^Num RefCount Protocol Flags Type St Inode Path\n') pid_status_p = re.compile(r'^Name:\t.+\nUmask:\t\d+\nState:\t.+\nTgid:\t\d+\n') pid_statm_p = re.compile(r'^\d+ \d+ \d+\s\d+\s\d+\s\d+\s\d+$') @@ -330,31 +342,34 @@ def parse( pid_mountinfo_p = re.compile(r'^\d+ \d+ \d+:\d+ /.+\n') pid_fdinfo_p = re.compile(r'^pos:\t\d+\nflags:\t\d+\nmnt_id:\t\d+\n') + scsi_device_info = re.compile(r"^'\w+' '.+' 0x\d+") + scsi_scsi_p = re.compile(r'^Attached devices:\nHost: \w+ ') + procmap = { - uptime_p: _parse_uptime, - loadavg_p: _parse_loadavg, + buddyinfo_p: _parse_buddyinfo, + consoles_p: _parse_consoles, cpuinfo_p: _parse_cpuinfo, - meminfo_p: _parse_meminfo, - version_p: _parse_version, crypto_p: _parse_crypto, + devices_p: _parse_devices, diskstats_p: _parse_diskstats, filesystems_p: _parse_filesystems, interrupts_p: _parse_interrupts, iomem_p: _parse_iomem, ioports_p: _parse_ioports, + loadavg_p: _parse_loadavg, locks_p: _parse_locks, + meminfo_p: _parse_meminfo, modules_p: _parse_modules, - buddyinfo_p: _parse_buddyinfo, + mtrr_p: _parse_mtrr, pagetypeinfo_p: _parse_pagetypeinfo, partitions_p: _parse_partitions, - vmallocinfo_p: _parse_vmallocinfo, slabinfo_p: _parse_slabinfo, softirqs_p: _parse_softirqs, - scsi_p: _parse_scsi, stat_p: _parse_stat, swaps_p: _parse_swaps, - consoles_p: _parse_consoles, - devices_p: _parse_devices, + uptime_p: _parse_uptime, + version_p: _parse_version, + vmallocinfo_p: _parse_vmallocinfo, vmstat_p: _parse_vmstat, zoneinfo_p: _parse_zoneinfo, @@ -362,26 +377,30 @@ def parse( net_arp_p: _parse_net_arp, net_dev_p: _parse_net_dev, - net_ipv6_route_p: _parse_net_ipv6_route, # before net_dev_mcast - net_dev_mcast_p: _parse_net_dev_mcast, # after net_ipv6_route + net_if_inet6_p: _parse_net_if_inet6, net_igmp_p: _parse_net_igmp, net_igmp6_p: _parse_net_igmp6, - net_if_inet6_p: _parse_net_if_inet6, net_netlink_p: _parse_net_netlink, net_netstat_p: _parse_net_netstat, net_packet_p: _parse_net_packet, net_protocols_p: _parse_net_protocols, net_route_p: _parse_net_route, + net_unix_p: _parse_net_unix, + net_ipv6_route_p: _parse_net_ipv6_route, # before net_dev_mcast + net_dev_mcast_p: _parse_net_dev_mcast, # after net_ipv6_route - pid_status_p: _parse_pid_status, - pid_statm_p: _parse_pid_statm, - pid_stat_p: _parse_pid_stat, - pid_smaps_p: _parse_pid_smaps, # before pid_maps - pid_maps_p: _parse_pid_maps, # after pid_smaps - pid_numa_maps_p: _parse_pid_numa_maps, + pid_fdinfo_p: _parse_pid_fdinfo, pid_io_p: _parse_pid_io, pid_mountinfo_p: _parse_pid_mountinfo, - pid_fdinfo_p: _parse_pid_fdinfo + pid_numa_maps_p: _parse_pid_numa_maps, + pid_stat_p: _parse_pid_stat, + pid_statm_p: _parse_pid_statm, + pid_status_p: _parse_pid_status, + pid_smaps_p: _parse_pid_smaps, # before pid_maps + pid_maps_p: _parse_pid_maps, # after pid_smaps + + scsi_device_info: _parse_scsi_device_info, + scsi_scsi_p: _parse_scsi_scsi } for reg_pattern, parse_func in procmap.items(): From 79ade2c1825f1ca81e2c8381a4473ad130d948ee Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Sun, 4 Sep 2022 10:42:16 -0700 Subject: [PATCH 006/124] move to module architecture. first two proc parsers --- jc/lib.py | 2 +- jc/parsers/proc.py | 195 +++++++++++++++++ jc/parsers/proc_meminfo.py | 92 ++++++++ jc/parsers/proc_modules.py | 172 +++++++++++++++ jc/parsers/procfile.py | 419 ------------------------------------- 5 files changed, 460 insertions(+), 420 deletions(-) create mode 100644 jc/parsers/proc.py create mode 100644 jc/parsers/proc_meminfo.py create mode 100644 jc/parsers/proc_modules.py delete mode 100644 jc/parsers/procfile.py diff --git a/jc/lib.py b/jc/lib.py index 5d8e9815..0b554691 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -84,7 +84,7 @@ parsers = [ 'pip-show', 'plist', 'postconf', - 'procfile', + 'proc', 'ps', 'route', 'rpm-qi', diff --git a/jc/parsers/proc.py b/jc/parsers/proc.py new file mode 100644 index 00000000..4793bf9d --- /dev/null +++ b/jc/parsers/proc.py @@ -0,0 +1,195 @@ +"""jc - JSON Convert Proc file output parser + +<> + +Usage (cli): + + $ cat /proc/ | jc --procfile + +Usage (module): + + import jc + result = jc.parse('procfile', proc_file) + +Schema: + + [ + { + "procfile": string, + "bar": boolean, + "baz": integer + } + ] + +Examples: + + $ procfile | jc --procfile -p + [] + + $ procfile | jc --procfile -p -r + [] +""" +import re +import importlib +from typing import List, Dict +import jc.utils +from jc.exceptions import ParseError + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc/` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + + +__version__ = info.version + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> List[Dict]: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + List of Dictionaries. Raw or processed structured data. + """ + jc.utils.input_type_check(data) + + if jc.utils.has_data(data): + # signatures + buddyinfo_p = re.compile(r'^Node \d+, zone\s+\w+\s+(?:\d+\s+){11}\n') + consoles_p = re.compile(r'^\w+\s+[\-WUR]{3} \([ECBpba ]+\)\s+\d+:\d+\n') + cpuinfo_p = re.compile(r'^processor\s+:.*\nvendor_id\s+:.*\ncpu family\s+:.*\n') + crypto_p = re.compile(r'^name\s+:.*\ndriver\s+:.*\nmodule\s+:.*\n') + devices_p = re.compile(r'^Character devices:\n\s+\d+ .*\n') + diskstats_p = re.compile(r'^\s*\d+\s+\d\s\w+\s(?:\d+\s){16}\d\n') + filesystems_p = re.compile(r'^(?:(?:nodev\t|\t)\w+\n){3}') + interrupts_p = re.compile(r'^\s+(?:CPU\d+ +)+\n\s*\d+:\s+\d+') + iomem_p = re.compile(r'^00000000-[0-9a-f]{8} : .*\n[0-9a-f]{8}-[0-9a-f]{8} : ') + ioports_p = re.compile(r'^0000-[0-9a-f]{4} : .*\n\s*0000-[0-9a-f]{4} : ') + loadavg_p = re.compile(r'^\d+.\d\d \d+.\d\d \d+.\d\d \d+/\d+ \d+$') + locks_p = re.compile(r'^\d+: (?:POSIX|FLOCK|OFDLCK)\s+(?:ADVISORY|MANDATORY)\s+(?:READ|WRITE) ') + meminfo_p = re.compile(r'^MemTotal:.*\nMemFree:.*\nMemAvailable:.*\n') + modules_p = re.compile(r'^\w+ \d+ \d+ (?:-|\w+,).*0x[0-9a-f]{16}\n') + mtrr_p = re.compile(r'^reg\d+: base=0x[0-9a-f]+ \(') + pagetypeinfo_p = re.compile(r'^Page block order:\s+\d+\nPages per block:\s+\d+\n\n') + partitions_p = re.compile(r'^major minor #blocks name\n\n\s*\d+\s+\d+\s+\d+ \w+\n') + slabinfo_p = re.compile(r'^slabinfo - version: \d+.\d+\n') + softirqs_p = re.compile(r'^\s+(CPU\d+\s+)+\n\s+HI:\s+\d') + stat_p = re.compile(r'^cpu\s+(?: \d+){10}.*intr ', re.DOTALL) + swaps_p = re.compile(r'^Filename\t\t\t\tType\t\tSize\t\tUsed\t\tPriority\n') + uptime_p = re.compile(r'^\d+.\d\d \d+.\d\d$') + version_p = re.compile(r'^.+\sversion\s[^\n]+$') + vmallocinfo_p = re.compile(r'^0x[0-9a-f]{16}-0x[0-9a-f]{16}\s+\d+ \w+\+\w+/\w+ ') + vmstat_p = re.compile(r'nr_free_pages \d+\n.* \d$', re.DOTALL) + zoneinfo_p = re.compile(r'^Node \d+, zone\s+\w+\n') + + driver_rtc_p = re.compile(r'^rtc_time\t: .*\nrtc_date\t: .*\nalrm_time\t: .*\n') + + net_arp_p = re.compile(r'^IP address\s+HW type\s+Flags\s+HW address\s+Mask\s+Device\n') + net_dev_p = re.compile(r'^Inter-\|\s+Receive\s+\|\s+Transmit\n') + net_dev_mcast_p = re.compile(r'^\d+\s+\w+\s+\d+\s+\d+\s+[0-9a-f]{12}') + net_if_inet6_p = re.compile(r'^[0-9a-f]{32} \d\d \d\d \d\d \d\d\s+\w+') + net_igmp_p = re.compile(r'^Idx\tDevice\s+:\s+Count\s+Querier\tGroup\s+Users\s+Timer\tReporter\n') + net_igmp6_p = re.compile(r'^\d+\s+\w+\s+[0-9a-f]{32}\s+\d+\s+[0-9A-F]{8}\s+\d+') + net_ipv6_route_p = re.compile(r'^[0-9a-f]{32} \d\d [0-9a-f]{32} \d\d [0-9a-f]{32} (?:[0-9a-f]{8} ){4}\s+\w+') + net_netlink_p = re.compile(r'^sk\s+Eth Pid\s+Groups\s+Rmem\s+Wmem') + net_netstat_p = re.compile(r'^TcpExt: SyncookiesSent SyncookiesRecv SyncookiesFailed') + net_packet_p = re.compile(r'^sk RefCnt Type Proto Iface R Rmem User Inode\n') + net_protocols_p = re.compile(r'^protocol size sockets memory press maxhdr slab module cl co di ac io in de sh ss gs se re sp bi br ha uh gp em\n') + net_route_p = re.compile(r'^Iface\tDestination\tGateway \tFlags\tRefCnt\tUse\tMetric\tMask\t\tMTU\tWindow\tIRTT\s+\n') + net_unix_p = re.compile(r'^Num RefCount Protocol Flags Type St Inode Path\n') + + pid_status_p = re.compile(r'^Name:\t.+\nUmask:\t\d+\nState:\t.+\nTgid:\t\d+\n') + pid_statm_p = re.compile(r'^\d+ \d+ \d+\s\d+\s\d+\s\d+\s\d+$') + pid_stat_p = re.compile(r'^\d+ \(.{1,16}\) \w \d+ \d+ \d+ \d+ -?\d+ (?:\d+ ){43}\d+$') + pid_smaps_p = re.compile(r'^[0-9a-f]{12}-[0-9a-f]{12} [rwxsp\-]{4} [0-9a-f]{8} [0-9a-f]{2}:[0-9a-f]{2} \d+ [^\n]+\nSize:\s+\d+ \S\S\n') + pid_maps_p = re.compile(r'^[0-9a-f]{12}-[0-9a-f]{12} [rwxsp\-]{4} [0-9a-f]{8} [0-9a-f]{2}:[0-9a-f]{2} \d+ ') + pid_numa_maps_p = re.compile(r'^[a-f0-9]{12} default [^\n]+\n') + pid_io_p = re.compile(r'^rchar: \d+\nwchar: \d+\nsyscr: \d+\n') + pid_mountinfo_p = re.compile(r'^\d+ \d+ \d+:\d+ /.+\n') + pid_fdinfo_p = re.compile(r'^pos:\t\d+\nflags:\t\d+\nmnt_id:\t\d+\n') + + scsi_device_info = re.compile(r"^'\w+' '.+' 0x\d+") + scsi_scsi_p = re.compile(r'^Attached devices:\nHost: \w+ ') + + procmap = { + buddyinfo_p: 'proc_buddyinfo', + consoles_p: 'proc_consoles', + cpuinfo_p: 'proc_cpuinfo', + crypto_p: 'proc_crypto', + devices_p: 'proc_devices', + diskstats_p: 'proc_diskstats', + filesystems_p: 'proc_filesystems', + interrupts_p: 'proc_interrupts', + iomem_p: 'proc_iomem', + ioports_p: 'proc_ioports', + loadavg_p: 'proc_loadavg', + locks_p: 'proc_locks', + meminfo_p: 'proc_meminfo', ####### + modules_p: 'proc_modules', + mtrr_p: 'proc_mtrr', + pagetypeinfo_p: 'proc_pagetypeinfo', + partitions_p: 'proc_partitions', + slabinfo_p: 'proc_slabinfo', + softirqs_p: 'proc_softirqs', + stat_p: 'proc_stat', + swaps_p: 'proc_swaps', + uptime_p: 'proc_uptime', + version_p: 'proc_version', + vmallocinfo_p: 'proc_vmallocinfo', + vmstat_p: 'proc_vmstat', + zoneinfo_p: 'proc_zoneinfo', + + driver_rtc_p: 'proc_driver_rtc', + + net_arp_p: 'proc_net_arp', + net_dev_p: 'proc_net_dev', + net_if_inet6_p: 'proc_net_if_inet6', + net_igmp_p: 'proc_net_igmp', + net_igmp6_p: 'proc_net_igmp6', + net_netlink_p: 'proc_net_netlink', + net_netstat_p: 'proc_net_netstat', + net_packet_p: 'proc_net_packet', + net_protocols_p: 'proc_net_protocols', + net_route_p: 'proc_net_route', + net_unix_p: 'proc_net_unix', + net_ipv6_route_p: 'proc_net_ipv6_route', # before net_dev_mcast + net_dev_mcast_p: 'proc_net_dev_mcast', # after net_ipv6_route + + pid_fdinfo_p: 'proc_pid_fdinfo', + pid_io_p: 'proc_pid_io', + pid_mountinfo_p: 'proc_pid_mountinfo', + pid_numa_maps_p: 'proc_pid_numa_maps', + pid_stat_p: 'proc_pid_stat', + pid_statm_p: 'proc_pid_statm', + pid_status_p: 'proc_pid_status', + pid_smaps_p: 'proc_pid_smaps', # before pid_maps + pid_maps_p: 'proc_pid_maps', # after pid_smaps + + scsi_device_info: 'proc_scsi_device_info', + scsi_scsi_p: 'proc_scsi_scsi' + } + + for reg_pattern, parse_mod in procmap.items(): + if reg_pattern.search(data): + try: + procparser = importlib.import_module('jc.parsers.' + parse_mod) + return procparser.parse(data, quiet=quiet, raw=raw) + except ModuleNotFoundError: + raise ParseError('Proc file type not yet implemented.') + + raise ParseError('Proc file could not be identified.') diff --git a/jc/parsers/proc_meminfo.py b/jc/parsers/proc_meminfo.py new file mode 100644 index 00000000..4f1a12ba --- /dev/null +++ b/jc/parsers/proc_meminfo.py @@ -0,0 +1,92 @@ +"""jc - JSON Convert `/proc/meminfo` file parser + +Usage (cli): + + $ cat /proc/meminfo | jc --proc + +Usage (module): + + import jc + result = jc.parse('proc_meminfo', proc_meminfo_file) + +Schema: + + [ + { + "foo": string, + "bar": boolean, + "baz": integer + } + ] + +Examples: + + $ foo | jc --foo -p + [] + + $ foo | jc --foo -p -r + [] +""" +from typing import Dict +import jc.utils + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc/meminfo` command parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + + +__version__ = info.version + + +def _process(proc_data: Dict) -> Dict: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (Dictionary) raw structured data to process + + Returns: + + Dictionary. Structured to conform to the schema. + """ + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> Dict: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + Dictionary. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: Dict = {} + + if jc.utils.has_data(data): + + for line in filter(None, data.splitlines()): + split_line = line.split(':', maxsplit=1) + key = split_line[0] + val = int(split_line[1].rsplit(maxsplit=1)[0]) + raw_output[key] = val + + return raw_output if raw else _process(raw_output) diff --git a/jc/parsers/proc_modules.py b/jc/parsers/proc_modules.py new file mode 100644 index 00000000..366d8250 --- /dev/null +++ b/jc/parsers/proc_modules.py @@ -0,0 +1,172 @@ +"""jc - JSON Convert `/proc/modules` command output parser + +<> + +Usage (cli): + + $ cat /proc/modules | jc --proc + +Usage (module): + + import jc + result = jc.parse('proc_modules', proc_modules_file) + +Schema: + + [ + { + "module": string, + "size": integer, + "used": integer, + "used_by": [ + string + ], + "status": string, + "location": string + } + ] + +Examples: + + $ cat /proc/modules | jc --proc -p + [ + { + "module": "binfmt_misc", + "size": 24576, + "used": 1, + "used_by": [], + "status": "Live", + "location": "0xffffffffc0ab4000" + }, + { + "module": "vsock_loopback", + "size": 16384, + "used": 0, + "used_by": [], + "status": "Live", + "location": "0xffffffffc0a14000" + }, + { + "module": "vmw_vsock_virtio_transport_common", + "size": 36864, + "used": 1, + "used_by": [ + "vsock_loopback" + ], + "status": "Live", + "location": "0xffffffffc0a03000" + }, + ... + ] + + $ proc_modules | jc --proc_modules -p -r + [ + { + "module": "binfmt_misc", + "size": "24576", + "used": "1", + "used_by": [], + "status": "Live", + "location": "0xffffffffc0ab4000" + }, + { + "module": "vsock_loopback", + "size": "16384", + "used": "0", + "used_by": [], + "status": "Live", + "location": "0xffffffffc0a14000" + }, + { + "module": "vmw_vsock_virtio_transport_common", + "size": "36864", + "used": "1", + "used_by": [ + "vsock_loopback" + ], + "status": "Live", + "location": "0xffffffffc0a03000" + }, + ... + ] +""" +from typing import List, Dict +import jc.utils + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc/modules` command parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + + +__version__ = info.version + + +def _process(proc_data: List[Dict]) -> List[Dict]: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (List of Dictionaries) raw structured data to process + + Returns: + + List of Dictionaries. Structured to conform to the schema. + """ + int_list = {'size', 'used'} + + for entry in proc_data: + for key in entry: + if key in int_list: + entry[key] = jc.utils.convert_to_int(entry[key]) + + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> List[Dict]: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + List of Dictionaries. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: List = [] + + if jc.utils.has_data(data): + + for line in filter(None, data.splitlines()): + + module, size, used, used_by, status, location = line.split() + used_by_list = used_by.split(',')[:-1] + + raw_output.append( + { + 'module': module, + 'size': size, + 'used': used, + 'used_by': used_by_list, + 'status': status, + 'location': location + } + ) + + return raw_output if raw else _process(raw_output) diff --git a/jc/parsers/procfile.py b/jc/parsers/procfile.py deleted file mode 100644 index 8e5cf2a0..00000000 --- a/jc/parsers/procfile.py +++ /dev/null @@ -1,419 +0,0 @@ -"""jc - JSON Convert Proc file output parser - -<> - -Usage (cli): - - $ cat /proc/ | jc --procfile - -Usage (module): - - import jc - result = jc.parse('procfile', proc_file) - -Schema: - - [ - { - "procfile": string, - "bar": boolean, - "baz": integer - } - ] - -Examples: - - $ procfile | jc --procfile -p - [] - - $ procfile | jc --procfile -p -r - [] -""" -import re -from typing import List, Dict -import jc.utils - - -class info(): - """Provides parser metadata (version, author, etc.)""" - version = '1.0' - description = 'Proc file parser' - author = 'Kelly Brazil' - author_email = 'kellyjonbrazil@gmail.com' - compatible = ['linux', 'darwin', 'cygwin', 'win32', 'aix', 'freebsd'] - - -__version__ = info.version - - -def _process(proc_data: List[Dict]) -> List[Dict]: - """ - Final processing to conform to the schema. - - Parameters: - - proc_data: (List of Dictionaries) raw structured data to process - - Returns: - - List of Dictionaries. Structured to conform to the schema. - """ - - # process the data here - # rebuild output for added semantic information - # use helper functions in jc.utils for int, float, bool - # conversions and timestamps - - return proc_data - - -def _parse_uptime(): - print('uptime') - - -def _parse_loadavg(): - print('loadavg') - - -def _parse_cpuinfo(): - print('cpuinfo') - - -def _parse_meminfo(): - print('meminfo') - - -def _parse_version(): - print('version') - - -def _parse_crypto(): - print('crypto') - - -def _parse_diskstats(): - print('diskstats') - - -def _parse_filesystems(): - print('filesystems') - - -def _parse_interrupts(): - print('interrupts') - - -def _parse_iomem(): - print('iomem') - - -def _parse_ioports(): - print('ioports') - - -def _parse_locks(): - print('locks') - - -def _parse_modules(): - print('modules') - - -def _parse_mtrr(): - print('mtrr') - - -def _parse_partitions(): - print('partitions') - - -def _parse_buddyinfo(): - print('buddyinfo') - - -def _parse_pagetypeinfo(): - print('pagetypinfo') - - -def _parse_vmallocinfo(): - print('vmallocinfo') - - -def _parse_softirqs(): - print('softirqs') - - -def _parse_stat(): - print('stat') - - -def _parse_swaps(): - print('swaps') - - -def _parse_slabinfo(): - print('slabinfo') - - -def _parse_consoles(): - print('consoles') - - -def _parse_devices(): - print('devices') - - -def _parse_vmstat(): - print('vmstat') - - -def _parse_zoneinfo(): - print('zoneinfo') - -#### - -def _parse_driver_rtc(): - print('driver rtc') - -#### - -def _parse_net_arp(): - print('net arp') - -def _parse_net_dev(): - print('net dev') - -def _parse_net_dev_mcast(): - print('net dev_mcast') - -def _parse_net_igmp(): - print('net igmp') - -def _parse_net_igmp6(): - print('net igmp6') - -def _parse_net_if_inet6(): - print('net if_inet6') - -def _parse_net_ipv6_route(): - print('net ipv6_route') - -def _parse_net_netlink(): - print('net netlink') - -def _parse_net_netstat(): - print('net netstat') - -def _parse_net_packet(): - print('net packet') - -def _parse_net_protocols(): - print('net protocols') - -def _parse_net_route(): - print('net route') - -def _parse_net_unix(): - print('net unix') - -#### - - -def _parse_pid_status(): - print('pid status') - - -def _parse_pid_statm(): - print('pid statm') - - -def _parse_pid_stat(): - print('pid stat') - - -def _parse_pid_smaps(): - print('pid smaps') - - -def _parse_pid_maps(): - print('pid maps') - - -def _parse_pid_numa_maps(): - print('pid numa_maps') - - -def _parse_pid_io(): - print('pid io') - - -def _parse_pid_mountinfo(): - print('pid mountinfo') - - -def _parse_pid_fdinfo(): - print('pid fdinfo') - -#### - -def _parse_scsi_scsi(): - print('scsi scsi') - -def _parse_scsi_device_info(): - print('scsi device_info') - - -def parse( - data: str, - raw: bool = False, - quiet: bool = False -) -> List[Dict]: - """ - Main text parsing function - - Parameters: - - data: (string) text data to parse - raw: (boolean) unprocessed output if True - quiet: (boolean) suppress warning messages if True - - Returns: - - List of Dictionaries. Raw or processed structured data. - """ - jc.utils.compatibility(__name__, info.compatible, quiet) - jc.utils.input_type_check(data) - - raw_output: List = [] - - if jc.utils.has_data(data): - - # signatures - buddyinfo_p = re.compile(r'^Node \d+, zone\s+\w+\s+(?:\d+\s+){11}\n') - consoles_p = re.compile(r'^\w+\s+[\-WUR]{3} \([ECBpba ]+\)\s+\d+:\d+\n') - cpuinfo_p = re.compile(r'^processor\s+:.*\nvendor_id\s+:.*\ncpu family\s+:.*\n') - crypto_p = re.compile(r'^name\s+:.*\ndriver\s+:.*\nmodule\s+:.*\n') - devices_p = re.compile(r'^Character devices:\n\s+\d+ .*\n') - diskstats_p = re.compile(r'^\s*\d+\s+\d\s\w+\s(?:\d+\s){16}\d\n') - filesystems_p = re.compile(r'^(?:(?:nodev\t|\t)\w+\n){3}') - interrupts_p = re.compile(r'^\s+(?:CPU\d+ +)+\n\s*\d+:\s+\d+') - iomem_p = re.compile(r'^00000000-[0-9a-f]{8} : .*\n[0-9a-f]{8}-[0-9a-f]{8} : ') - ioports_p = re.compile(r'^0000-[0-9a-f]{4} : .*\n\s*0000-[0-9a-f]{4} : ') - loadavg_p = re.compile(r'^\d+.\d\d \d+.\d\d \d+.\d\d \d+/\d+ \d+$') - locks_p = re.compile(r'^\d+: (?:POSIX|FLOCK|OFDLCK)\s+(?:ADVISORY|MANDATORY)\s+(?:READ|WRITE) ') - meminfo_p = re.compile(r'^MemTotal:.*\nMemFree:.*\nMemAvailable:.*\n') - modules_p = re.compile(r'^\w+ \d+ \d+ (?:-|\w+,).*0x[0-9a-f]{16}\n') - mtrr_p = re.compile(r'^reg\d+: base=0x[0-9a-f]+ \(') - pagetypeinfo_p = re.compile(r'^Page block order:\s+\d+\nPages per block:\s+\d+\n\n') - partitions_p = re.compile(r'^major minor #blocks name\n\n\s*\d+\s+\d+\s+\d+ \w+\n') - slabinfo_p = re.compile(r'^slabinfo - version: \d+.\d+\n') - softirqs_p = re.compile(r'^\s+(CPU\d+\s+)+\n\s+HI:\s+\d') - stat_p = re.compile(r'^cpu\s+(?: \d+){10}.*intr ', re.DOTALL) - swaps_p = re.compile(r'^Filename\t\t\t\tType\t\tSize\t\tUsed\t\tPriority\n') - uptime_p = re.compile(r'^\d+.\d\d \d+.\d\d$') - version_p = re.compile(r'^.+\sversion\s[^\n]+$') - vmallocinfo_p = re.compile(r'^0x[0-9a-f]{16}-0x[0-9a-f]{16}\s+\d+ \w+\+\w+/\w+ ') - vmstat_p = re.compile(r'nr_free_pages \d+\n.* \d$', re.DOTALL) - zoneinfo_p = re.compile(r'^Node \d+, zone\s+\w+\n') - - driver_rtc_p = re.compile(r'^rtc_time\t: .*\nrtc_date\t: .*\nalrm_time\t: .*\n') - - net_arp_p = re.compile(r'^IP address\s+HW type\s+Flags\s+HW address\s+Mask\s+Device\n') - net_dev_p = re.compile(r'^Inter-\|\s+Receive\s+\|\s+Transmit\n') - net_dev_mcast_p = re.compile(r'^\d+\s+\w+\s+\d+\s+\d+\s+[0-9a-f]{12}') - net_if_inet6_p = re.compile(r'^[0-9a-f]{32} \d\d \d\d \d\d \d\d\s+\w+') - net_igmp_p = re.compile(r'^Idx\tDevice\s+:\s+Count\s+Querier\tGroup\s+Users\s+Timer\tReporter\n') - net_igmp6_p = re.compile(r'^\d+\s+\w+\s+[0-9a-f]{32}\s+\d+\s+[0-9A-F]{8}\s+\d+') - net_ipv6_route_p = re.compile(r'^[0-9a-f]{32} \d\d [0-9a-f]{32} \d\d [0-9a-f]{32} (?:[0-9a-f]{8} ){4}\s+\w+') - net_netlink_p = re.compile(r'^sk\s+Eth Pid\s+Groups\s+Rmem\s+Wmem') - net_netstat_p = re.compile(r'^TcpExt: SyncookiesSent SyncookiesRecv SyncookiesFailed') - net_packet_p = re.compile(r'^sk RefCnt Type Proto Iface R Rmem User Inode\n') - net_protocols_p = re.compile(r'^protocol size sockets memory press maxhdr slab module cl co di ac io in de sh ss gs se re sp bi br ha uh gp em\n') - net_route_p = re.compile(r'^Iface\tDestination\tGateway \tFlags\tRefCnt\tUse\tMetric\tMask\t\tMTU\tWindow\tIRTT\s+\n') - net_unix_p = re.compile(r'^Num RefCount Protocol Flags Type St Inode Path\n') - - pid_status_p = re.compile(r'^Name:\t.+\nUmask:\t\d+\nState:\t.+\nTgid:\t\d+\n') - pid_statm_p = re.compile(r'^\d+ \d+ \d+\s\d+\s\d+\s\d+\s\d+$') - pid_stat_p = re.compile(r'^\d+ \(.{1,16}\) \w \d+ \d+ \d+ \d+ -?\d+ (?:\d+ ){43}\d+$') - pid_smaps_p = re.compile(r'^[0-9a-f]{12}-[0-9a-f]{12} [rwxsp\-]{4} [0-9a-f]{8} [0-9a-f]{2}:[0-9a-f]{2} \d+ [^\n]+\nSize:\s+\d+ \S\S\n') - pid_maps_p = re.compile(r'^[0-9a-f]{12}-[0-9a-f]{12} [rwxsp\-]{4} [0-9a-f]{8} [0-9a-f]{2}:[0-9a-f]{2} \d+ ') - pid_numa_maps_p = re.compile(r'^[a-f0-9]{12} default [^\n]+\n') - pid_io_p = re.compile(r'^rchar: \d+\nwchar: \d+\nsyscr: \d+\n') - pid_mountinfo_p = re.compile(r'^\d+ \d+ \d+:\d+ /.+\n') - pid_fdinfo_p = re.compile(r'^pos:\t\d+\nflags:\t\d+\nmnt_id:\t\d+\n') - - scsi_device_info = re.compile(r"^'\w+' '.+' 0x\d+") - scsi_scsi_p = re.compile(r'^Attached devices:\nHost: \w+ ') - - procmap = { - buddyinfo_p: _parse_buddyinfo, - consoles_p: _parse_consoles, - cpuinfo_p: _parse_cpuinfo, - crypto_p: _parse_crypto, - devices_p: _parse_devices, - diskstats_p: _parse_diskstats, - filesystems_p: _parse_filesystems, - interrupts_p: _parse_interrupts, - iomem_p: _parse_iomem, - ioports_p: _parse_ioports, - loadavg_p: _parse_loadavg, - locks_p: _parse_locks, - meminfo_p: _parse_meminfo, - modules_p: _parse_modules, - mtrr_p: _parse_mtrr, - pagetypeinfo_p: _parse_pagetypeinfo, - partitions_p: _parse_partitions, - slabinfo_p: _parse_slabinfo, - softirqs_p: _parse_softirqs, - stat_p: _parse_stat, - swaps_p: _parse_swaps, - uptime_p: _parse_uptime, - version_p: _parse_version, - vmallocinfo_p: _parse_vmallocinfo, - vmstat_p: _parse_vmstat, - zoneinfo_p: _parse_zoneinfo, - - driver_rtc_p: _parse_driver_rtc, - - net_arp_p: _parse_net_arp, - net_dev_p: _parse_net_dev, - net_if_inet6_p: _parse_net_if_inet6, - net_igmp_p: _parse_net_igmp, - net_igmp6_p: _parse_net_igmp6, - net_netlink_p: _parse_net_netlink, - net_netstat_p: _parse_net_netstat, - net_packet_p: _parse_net_packet, - net_protocols_p: _parse_net_protocols, - net_route_p: _parse_net_route, - net_unix_p: _parse_net_unix, - net_ipv6_route_p: _parse_net_ipv6_route, # before net_dev_mcast - net_dev_mcast_p: _parse_net_dev_mcast, # after net_ipv6_route - - pid_fdinfo_p: _parse_pid_fdinfo, - pid_io_p: _parse_pid_io, - pid_mountinfo_p: _parse_pid_mountinfo, - pid_numa_maps_p: _parse_pid_numa_maps, - pid_stat_p: _parse_pid_stat, - pid_statm_p: _parse_pid_statm, - pid_status_p: _parse_pid_status, - pid_smaps_p: _parse_pid_smaps, # before pid_maps - pid_maps_p: _parse_pid_maps, # after pid_smaps - - scsi_device_info: _parse_scsi_device_info, - scsi_scsi_p: _parse_scsi_scsi - } - - for reg_pattern, parse_func in procmap.items(): - if reg_pattern.search(data): - parse_func() - break - - # for line in filter(None, data.splitlines()): - - # # parse the content here - # # check out helper functions in jc.utils - # # and jc.parsers.universal - - # pass - - return raw_output if raw else _process(raw_output) From a9b0fe6728d0e2eebc192cdb9cd27bfe2d1b9098 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Tue, 6 Sep 2022 09:21:40 -0700 Subject: [PATCH 007/124] add 'hidden' attribute to parsers and wire up to jc.lib.all_parser_info() --- jc/lib.py | 22 ++++++++++++++++++++-- jc/parsers/proc_meminfo.py | 1 + jc/parsers/proc_modules.py | 1 + tests/test_jc_lib.py | 5 +++++ 4 files changed, 27 insertions(+), 2 deletions(-) diff --git a/jc/lib.py b/jc/lib.py index 0b554691..49a343b7 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -85,6 +85,8 @@ parsers = [ 'plist', 'postconf', 'proc', + 'proc-meminfo', + 'proc-modules', 'ps', 'route', 'rpm-qi', @@ -340,7 +342,9 @@ def parser_info(parser_mod_name: str, documentation: bool = False) -> Dict: return info_dict -def all_parser_info(documentation: bool = False) -> List[Dict]: +def all_parser_info(documentation: bool = False, + show_hidden: bool = False +) -> List[Dict]: """ Returns a list of dictionaries that includes metadata for all parser modules. @@ -348,8 +352,22 @@ def all_parser_info(documentation: bool = False) -> List[Dict]: Parameters: documentation: (boolean) include parser docstrings if True + show_hidden: (boolean) also show parsers marked as hidden + in their info metadata. """ - return [parser_info(p, documentation=documentation) for p in parsers] + temp_list = [parser_info(p, documentation=documentation) for p in parsers] + + p_list = [] + if show_hidden: + p_list = temp_list + + else: + for item in temp_list: + if not item.get('hidden', None): + p_list.append(item) + + return p_list + def get_help(parser_mod_name: str) -> None: """ diff --git a/jc/parsers/proc_meminfo.py b/jc/parsers/proc_meminfo.py index 4f1a12ba..e9030084 100644 --- a/jc/parsers/proc_meminfo.py +++ b/jc/parsers/proc_meminfo.py @@ -38,6 +38,7 @@ class info(): author = 'Kelly Brazil' author_email = 'kellyjonbrazil@gmail.com' compatible = ['linux'] + hidden = True __version__ = info.version diff --git a/jc/parsers/proc_modules.py b/jc/parsers/proc_modules.py index 366d8250..4cc8593e 100644 --- a/jc/parsers/proc_modules.py +++ b/jc/parsers/proc_modules.py @@ -101,6 +101,7 @@ class info(): author = 'Kelly Brazil' author_email = 'kellyjonbrazil@gmail.com' compatible = ['linux'] + hidden = True __version__ = info.version diff --git a/tests/test_jc_lib.py b/tests/test_jc_lib.py index a33a5ae9..609f1c3c 100644 --- a/tests/test_jc_lib.py +++ b/tests/test_jc_lib.py @@ -53,6 +53,11 @@ class MyTests(unittest.TestCase): def test_lib_all_parser_info_length(self): self.assertGreaterEqual(len(jc.lib.all_parser_info()), 80) + def test_lib_all_parser_hidden_length(self): + reg_length = len(jc.lib.all_parser_info()) + hidden_length = len(jc.lib.all_parser_info(show_hidden=True)) + self.assertGreater(hidden_length, reg_length) + def test_lib_plugin_parser_mod_list_is_list(self): self.assertIsInstance(jc.lib.plugin_parser_mod_list(), list) From a764642a8595fa6d8453b5682acefe553f329cf6 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Tue, 6 Sep 2022 10:07:19 -0700 Subject: [PATCH 008/124] fixup help, man, readme, about docs --- README.md | 3 +- completions/jc_bash_completion.sh | 2 +- completions/jc_zsh_completion.sh | 3 +- docs/lib.md | 5 +- docs/parsers/proc.md | 60 +++++++++++++++ docs/parsers/proc_meminfo.md | 58 ++++++++++++++ docs/parsers/proc_modules.md | 121 ++++++++++++++++++++++++++++++ jc/cli.py | 24 +++--- man/jc.1 | 19 ++++- readmegen.py | 5 +- templates/manpage_template | 2 +- templates/readme_template | 6 +- 12 files changed, 286 insertions(+), 22 deletions(-) create mode 100644 docs/parsers/proc.md create mode 100644 docs/parsers/proc_meminfo.md create mode 100644 docs/parsers/proc_modules.md diff --git a/README.md b/README.md index c6fa2030..6092740b 100644 --- a/README.md +++ b/README.md @@ -225,6 +225,7 @@ option. | ` --pip-show` | `pip show` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/pip_show) | | ` --plist` | PLIST file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/plist) | | ` --postconf` | `postconf -M` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/postconf) | +| ` --proc` | `/proc/` file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/proc) | | ` --ps` | `ps` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/ps) | | ` --route` | `route` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/route) | | ` --rpm-qi` | `rpm -qi` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/rpm_qi) | @@ -278,7 +279,7 @@ option. | `-a` | `--about` | About `jc`. Prints information about `jc` and the parsers (in JSON or YAML, of course!) | | `-C` | `--force-color` | Force color output even when using pipes (overrides `-m` and the `NO_COLOR` env variable) | | `-d` | `--debug` | Debug mode. Prints trace messages if parsing issues are encountered (use`-dd` for verbose debugging) | -| `-h` | `--help` | Help. Use `jc -h --parser_name` for parser documentation | +| `-h` | `--help` | Help. Use `jc -h --parser_name` for parser documentation. Use twice to show hidden parsers (e.g. `-hh`) | | `-m` | `--monochrome` | Monochrome output | | `-M` | `--meta-out` | Add metadata to output including timestamp, parser name, magic command, magic command exit code, etc. | | | `-p` | `--pretty` | Pretty format the JSON output | diff --git a/completions/jc_bash_completion.sh b/completions/jc_bash_completion.sh index 3fa432e0..941ffc92 100644 --- a/completions/jc_bash_completion.sh +++ b/completions/jc_bash_completion.sh @@ -4,7 +4,7 @@ _jc() jc_about_options jc_about_mod_options jc_help_options jc_special_options jc_commands=(acpi airport arp blkid chage cksum crontab date df dig dmidecode dpkg du env file finger free git gpg hciconfig id ifconfig iostat iptables iw jobs last lastb ls lsblk lsmod lsof lsusb md5 md5sum mdadm mount mpstat netstat nmcli ntpq pidstat ping ping6 pip pip3 postconf printenv ps route rpm rsync sfdisk sha1sum sha224sum sha256sum sha384sum sha512sum shasum ss stat sum sysctl systemctl systeminfo timedatectl top tracepath tracepath6 traceroute traceroute6 ufw uname update-alternatives upower uptime vdir vmstat w wc who xrandr zipinfo) - jc_parsers=(--acpi --airport --airport-s --arp --asciitable --asciitable-m --blkid --cef --cef-s --chage --cksum --crontab --crontab-u --csv --csv-s --date --df --dig --dir --dmidecode --dpkg-l --du --email-address --env --file --finger --free --fstab --git-log --git-log-s --gpg --group --gshadow --hash --hashsum --hciconfig --history --hosts --id --ifconfig --ini --iostat --iostat-s --ip-address --iptables --iso-datetime --iw-scan --jar-manifest --jobs --jwt --kv --last --ls --ls-s --lsblk --lsmod --lsof --lsusb --m3u --mdadm --mount --mpstat --mpstat-s --netstat --nmcli --ntpq --passwd --pidstat --pidstat-s --ping --ping-s --pip-list --pip-show --plist --postconf --ps --route --rpm-qi --rsync --rsync-s --sfdisk --shadow --ss --stat --stat-s --sysctl --syslog --syslog-s --syslog-bsd --syslog-bsd-s --systemctl --systemctl-lj --systemctl-ls --systemctl-luf --systeminfo --time --timedatectl --timestamp --top --top-s --tracepath --traceroute --ufw --ufw-appinfo --uname --update-alt-gs --update-alt-q --upower --uptime --url --vmstat --vmstat-s --w --wc --who --x509-cert --xml --xrandr --yaml --zipinfo) + jc_parsers=(--acpi --airport --airport-s --arp --asciitable --asciitable-m --blkid --cef --cef-s --chage --cksum --crontab --crontab-u --csv --csv-s --date --df --dig --dir --dmidecode --dpkg-l --du --email-address --env --file --finger --free --fstab --git-log --git-log-s --gpg --group --gshadow --hash --hashsum --hciconfig --history --hosts --id --ifconfig --ini --iostat --iostat-s --ip-address --iptables --iso-datetime --iw-scan --jar-manifest --jobs --jwt --kv --last --ls --ls-s --lsblk --lsmod --lsof --lsusb --m3u --mdadm --mount --mpstat --mpstat-s --netstat --nmcli --ntpq --passwd --pidstat --pidstat-s --ping --ping-s --pip-list --pip-show --plist --postconf --proc --ps --route --rpm-qi --rsync --rsync-s --sfdisk --shadow --ss --stat --stat-s --sysctl --syslog --syslog-s --syslog-bsd --syslog-bsd-s --systemctl --systemctl-lj --systemctl-ls --systemctl-luf --systeminfo --time --timedatectl --timestamp --top --top-s --tracepath --traceroute --ufw --ufw-appinfo --uname --update-alt-gs --update-alt-q --upower --uptime --url --vmstat --vmstat-s --w --wc --who --x509-cert --xml --xrandr --yaml --zipinfo) jc_options=(--force-color -C --debug -d --monochrome -m --meta-out -M --pretty -p --quiet -q --raw -r --unbuffer -u --yaml-out -y) jc_about_options=(--about -a) jc_about_mod_options=(--pretty -p --yaml-out -y --monochrome -m --force-color -C) diff --git a/completions/jc_zsh_completion.sh b/completions/jc_zsh_completion.sh index ec87a73b..13cddabf 100644 --- a/completions/jc_zsh_completion.sh +++ b/completions/jc_zsh_completion.sh @@ -95,7 +95,7 @@ _jc() { 'xrandr:run "xrandr" command with magic syntax.' 'zipinfo:run "zipinfo" command with magic syntax.' ) - jc_parsers=(--acpi --airport --airport-s --arp --asciitable --asciitable-m --blkid --cef --cef-s --chage --cksum --crontab --crontab-u --csv --csv-s --date --df --dig --dir --dmidecode --dpkg-l --du --email-address --env --file --finger --free --fstab --git-log --git-log-s --gpg --group --gshadow --hash --hashsum --hciconfig --history --hosts --id --ifconfig --ini --iostat --iostat-s --ip-address --iptables --iso-datetime --iw-scan --jar-manifest --jobs --jwt --kv --last --ls --ls-s --lsblk --lsmod --lsof --lsusb --m3u --mdadm --mount --mpstat --mpstat-s --netstat --nmcli --ntpq --passwd --pidstat --pidstat-s --ping --ping-s --pip-list --pip-show --plist --postconf --ps --route --rpm-qi --rsync --rsync-s --sfdisk --shadow --ss --stat --stat-s --sysctl --syslog --syslog-s --syslog-bsd --syslog-bsd-s --systemctl --systemctl-lj --systemctl-ls --systemctl-luf --systeminfo --time --timedatectl --timestamp --top --top-s --tracepath --traceroute --ufw --ufw-appinfo --uname --update-alt-gs --update-alt-q --upower --uptime --url --vmstat --vmstat-s --w --wc --who --x509-cert --xml --xrandr --yaml --zipinfo) + jc_parsers=(--acpi --airport --airport-s --arp --asciitable --asciitable-m --blkid --cef --cef-s --chage --cksum --crontab --crontab-u --csv --csv-s --date --df --dig --dir --dmidecode --dpkg-l --du --email-address --env --file --finger --free --fstab --git-log --git-log-s --gpg --group --gshadow --hash --hashsum --hciconfig --history --hosts --id --ifconfig --ini --iostat --iostat-s --ip-address --iptables --iso-datetime --iw-scan --jar-manifest --jobs --jwt --kv --last --ls --ls-s --lsblk --lsmod --lsof --lsusb --m3u --mdadm --mount --mpstat --mpstat-s --netstat --nmcli --ntpq --passwd --pidstat --pidstat-s --ping --ping-s --pip-list --pip-show --plist --postconf --proc --ps --route --rpm-qi --rsync --rsync-s --sfdisk --shadow --ss --stat --stat-s --sysctl --syslog --syslog-s --syslog-bsd --syslog-bsd-s --systemctl --systemctl-lj --systemctl-ls --systemctl-luf --systeminfo --time --timedatectl --timestamp --top --top-s --tracepath --traceroute --ufw --ufw-appinfo --uname --update-alt-gs --update-alt-q --upower --uptime --url --vmstat --vmstat-s --w --wc --who --x509-cert --xml --xrandr --yaml --zipinfo) jc_parsers_describe=( '--acpi:`acpi` command parser' '--airport:`airport -I` command parser' @@ -172,6 +172,7 @@ _jc() { '--pip-show:`pip show` command parser' '--plist:PLIST file parser' '--postconf:`postconf -M` command parser' + '--proc:`/proc/` file parser' '--ps:`ps` command parser' '--route:`route` command parser' '--rpm-qi:`rpm -qi` command parser' diff --git a/docs/lib.md b/docs/lib.md index 25c571bc..a264df2f 100644 --- a/docs/lib.md +++ b/docs/lib.md @@ -162,7 +162,8 @@ Parameters: ### all\_parser\_info ```python -def all_parser_info(documentation: bool = False) -> List[Dict] +def all_parser_info(documentation: bool = False, + show_hidden: bool = False) -> List[Dict] ``` Returns a list of dictionaries that includes metadata for all parser @@ -171,6 +172,8 @@ modules. Parameters: documentation: (boolean) include parser docstrings if True + show_hidden: (boolean) also show parsers marked as hidden + in their info metadata. diff --git a/docs/parsers/proc.md b/docs/parsers/proc.md new file mode 100644 index 00000000..3c3aa392 --- /dev/null +++ b/docs/parsers/proc.md @@ -0,0 +1,60 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc + +jc - JSON Convert Proc file output parser + +<> + +Usage (cli): + + $ cat /proc/ | jc --procfile + +Usage (module): + + import jc + result = jc.parse('procfile', proc_file) + +Schema: + + [ + { + "procfile": string, + "bar": boolean, + "baz": integer + } + ] + +Examples: + + $ procfile | jc --procfile -p + [] + + $ procfile | jc --procfile -p -r + [] + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict] +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + List of Dictionaries. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/docs/parsers/proc_meminfo.md b/docs/parsers/proc_meminfo.md new file mode 100644 index 00000000..95891fe4 --- /dev/null +++ b/docs/parsers/proc_meminfo.md @@ -0,0 +1,58 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_meminfo + +jc - JSON Convert `/proc/meminfo` file parser + +Usage (cli): + + $ cat /proc/meminfo | jc --proc + +Usage (module): + + import jc + result = jc.parse('proc_meminfo', proc_meminfo_file) + +Schema: + + [ + { + "foo": string, + "bar": boolean, + "baz": integer + } + ] + +Examples: + + $ foo | jc --foo -p + [] + + $ foo | jc --foo -p -r + [] + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> Dict +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + Dictionary. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/docs/parsers/proc_modules.md b/docs/parsers/proc_modules.md new file mode 100644 index 00000000..658fa12f --- /dev/null +++ b/docs/parsers/proc_modules.md @@ -0,0 +1,121 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_modules + +jc - JSON Convert `/proc/modules` command output parser + +<> + +Usage (cli): + + $ cat /proc/modules | jc --proc + +Usage (module): + + import jc + result = jc.parse('proc_modules', proc_modules_file) + +Schema: + + [ + { + "module": string, + "size": integer, + "used": integer, + "used_by": [ + string + ], + "status": string, + "location": string + } + ] + +Examples: + + $ cat /proc/modules | jc --proc -p + [ + { + "module": "binfmt_misc", + "size": 24576, + "used": 1, + "used_by": [], + "status": "Live", + "location": "0xffffffffc0ab4000" + }, + { + "module": "vsock_loopback", + "size": 16384, + "used": 0, + "used_by": [], + "status": "Live", + "location": "0xffffffffc0a14000" + }, + { + "module": "vmw_vsock_virtio_transport_common", + "size": 36864, + "used": 1, + "used_by": [ + "vsock_loopback" + ], + "status": "Live", + "location": "0xffffffffc0a03000" + }, + ... + ] + + $ proc_modules | jc --proc_modules -p -r + [ + { + "module": "binfmt_misc", + "size": "24576", + "used": "1", + "used_by": [], + "status": "Live", + "location": "0xffffffffc0ab4000" + }, + { + "module": "vsock_loopback", + "size": "16384", + "used": "0", + "used_by": [], + "status": "Live", + "location": "0xffffffffc0a14000" + }, + { + "module": "vmw_vsock_virtio_transport_common", + "size": "36864", + "used": "1", + "used_by": [ + "vsock_loopback" + ], + "status": "Live", + "location": "0xffffffffc0a03000" + }, + ... + ] + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict] +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + List of Dictionaries. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/cli.py b/jc/cli.py index a53ad99d..b272f277 100644 --- a/jc/cli.py +++ b/jc/cli.py @@ -11,8 +11,9 @@ import signal import shlex import subprocess from .lib import (__version__, parser_info, all_parser_info, parsers, - _get_parser, _parser_is_streaming, standard_parser_mod_list, - plugin_parser_mod_list, streaming_parser_mod_list) + _get_parser, _parser_is_streaming, parser_mod_list, + standard_parser_mod_list, plugin_parser_mod_list, + streaming_parser_mod_list) from . import utils from .cli_data import long_options_map, new_pygments_colors, old_pygments_colors from .shell_completions import bash_completion, zsh_completion @@ -120,11 +121,11 @@ def parser_shortname(parser_arg): return parser_arg[2:] -def parsers_text(indent=0, pad=0): +def parsers_text(indent=0, pad=0, show_hidden=False): """Return the argument and description information from each parser""" ptext = '' padding_char = ' ' - for p in all_parser_info(): + for p in all_parser_info(show_hidden=show_hidden): parser_arg = p.get('argument', 'UNKNOWN') padding = pad - len(parser_arg) parser_desc = p.get('description', 'No description available.') @@ -164,17 +165,17 @@ def about_jc(): 'license': info.license, 'python_version': '.'.join((str(sys.version_info.major), str(sys.version_info.minor), str(sys.version_info.micro))), 'python_path': sys.executable, - 'parser_count': len(all_parser_info()), + 'parser_count': len(parser_mod_list()), 'standard_parser_count': len(standard_parser_mod_list()), 'streaming_parser_count': len(streaming_parser_mod_list()), 'plugin_parser_count': len(plugin_parser_mod_list()), - 'parsers': all_parser_info() + 'parsers': all_parser_info(show_hidden=True) } -def helptext(): +def helptext(show_hidden=False): """Return the help text with the list of parsers""" - parsers_string = parsers_text(indent=4, pad=20) + parsers_string = parsers_text(indent=4, pad=20, show_hidden=show_hidden) options_string = options_text(indent=4, pad=20) helptext_string = f'''\ @@ -205,7 +206,7 @@ Examples: return helptext_string -def help_doc(options): +def help_doc(options, show_hidden=False): """ Returns the parser documentation if a parser is found in the arguments, otherwise the general help text is returned. @@ -228,7 +229,7 @@ def help_doc(options): utils._safe_pager(doc_text) return - utils._safe_print(helptext()) + utils._safe_print(helptext(show_hidden=show_hidden)) return @@ -525,6 +526,7 @@ def main(): force_color = 'C' in options mono = ('m' in options or bool(os.getenv('NO_COLOR'))) and not force_color help_me = 'h' in options + verbose_help = options.count('h') > 1 pretty = 'p' in options quiet = 'q' in options ignore_exceptions = options.count('q') > 1 @@ -552,7 +554,7 @@ def main(): sys.exit(0) if help_me: - help_doc(sys.argv) + help_doc(sys.argv, show_hidden=verbose_help) sys.exit(0) if version_info: diff --git a/man/jc.1 b/man/jc.1 index 8fb1459d..92497f32 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -1,4 +1,4 @@ -.TH jc 1 2022-08-29 1.21.2 "JSON Convert" +.TH jc 1 2022-09-06 1.21.2 "JSON Convert" .SH NAME \fBjc\fP \- JSON Convert JSONifies the output of many CLI tools and file-types .SH SYNOPSIS @@ -392,6 +392,21 @@ PLIST file parser \fB--postconf\fP `postconf -M` command parser +.TP +.B +\fB--proc\fP +`/proc/` file parser + +.TP +.B +\fB--proc-meminfo\fP +`/proc/meminfo` command parser + +.TP +.B +\fB--proc-modules\fP +`/proc/modules` command parser + .TP .B \fB--ps\fP @@ -639,7 +654,7 @@ Debug - show traceback (use \fB-dd\fP for verbose traceback) .TP .B \fB-h\fP, \fB--help\fP -Help (\fB--help --parser_name\fP for parser documentation) +Help (\fB--help --parser_name\fP for parser documentation). Use twice to show hidden parsers (e.g. \fB-hh\fP) .TP .B \fB-m\fP, \fB--monochrome\fP diff --git a/readmegen.py b/readmegen.py index 5982d836..b408b93f 100755 --- a/readmegen.py +++ b/readmegen.py @@ -1,12 +1,15 @@ #!/usr/bin/env python3 # Genereate README.md from jc metadata using jinja2 templates import jc.cli +import jc.lib from jinja2 import Environment, FileSystemLoader file_loader = FileSystemLoader('templates') env = Environment(loader=file_loader) template = env.get_template('readme_template') -output = template.render(jc=jc.cli.about_jc()) +# output = template.render(jc=jc.cli.about_jc()) +output = template.render(parsers=jc.lib.all_parser_info(), + info=jc.cli.about_jc()) with open('README.md', 'w') as f: f.write(output) diff --git a/templates/manpage_template b/templates/manpage_template index c1bfacf6..03ebcd57 100644 --- a/templates/manpage_template +++ b/templates/manpage_template @@ -44,7 +44,7 @@ Debug - show traceback (use \fB-dd\fP for verbose traceback) .TP .B \fB-h\fP, \fB--help\fP -Help (\fB--help --parser_name\fP for parser documentation) +Help (\fB--help --parser_name\fP for parser documentation). Use twice to show hidden parsers (e.g. \fB-hh\fP) .TP .B \fB-m\fP, \fB--monochrome\fP diff --git a/templates/readme_template b/templates/readme_template index 963c8176..6e98f351 100644 --- a/templates/readme_template +++ b/templates/readme_template @@ -149,7 +149,7 @@ option. ### Parsers | Argument | Command or Filetype | Documentation | -|-------------------|---------------------------------------------------------|----------------------------------------------------------------------------|{% for parser in jc.parsers %} +|-------------------|---------------------------------------------------------|----------------------------------------------------------------------------|{% for parser in parsers %} | `{{ "{:>15}".format(parser.argument) }}` | {{ "{:<55}".format(parser.description) }} | {{ "{:<74}".format("[details](https://kellyjonbrazil.github.io/jc/docs/parsers/" + parser.name + ")") }} |{% endfor %} ### Options @@ -159,7 +159,7 @@ option. | `-a` | `--about` | About `jc`. Prints information about `jc` and the parsers (in JSON or YAML, of course!) | | `-C` | `--force-color` | Force color output even when using pipes (overrides `-m` and the `NO_COLOR` env variable) | | `-d` | `--debug` | Debug mode. Prints trace messages if parsing issues are encountered (use`-dd` for verbose debugging) | -| `-h` | `--help` | Help. Use `jc -h --parser_name` for parser documentation | +| `-h` | `--help` | Help. Use `jc -h --parser_name` for parser documentation. Use twice to show hidden parsers (e.g. `-hh`) | | `-m` | `--monochrome` | Monochrome output | | `-M` | `--meta-out` | Add metadata to output including timestamp, parser name, magic command, magic command exit code, etc. | | | `-p` | `--pretty` | Pretty format the JSON output | @@ -1104,4 +1104,4 @@ cat istio.yaml | jc --yaml -p ] ``` -{{ jc.copyright }} +{{ info.copyright }} From 5c354b02ea103e4a166f28c98ea8728c50ef5ed4 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Tue, 6 Sep 2022 11:42:24 -0700 Subject: [PATCH 009/124] doc update --- docs/parsers/proc.md | 37 ++++++++++++----- docs/parsers/proc_meminfo.md | 80 ++++++++++++++++++++++++++++++------ docs/parsers/proc_modules.md | 11 ++++- jc/parsers/proc.py | 39 +++++++++++++----- jc/parsers/proc_meminfo.py | 80 ++++++++++++++++++++++++++++++------ jc/parsers/proc_modules.py | 11 ++++- 6 files changed, 209 insertions(+), 49 deletions(-) diff --git a/docs/parsers/proc.md b/docs/parsers/proc.md index 3c3aa392..38f977a1 100644 --- a/docs/parsers/proc.md +++ b/docs/parsers/proc.md @@ -5,26 +5,43 @@ jc - JSON Convert Proc file output parser -<> +This parser automatically identifies the Proc file and calls the +corresponding parser to peform the parsing. The specific parsers can also +be called directly, if desired and have a naming convention of +`proc-` (cli) or `proc_` (module). Usage (cli): - $ cat /proc/ | jc --procfile + $ cat /proc/meminfo | jc --proc + +or + + $ cat /proc/meminfo | jc --proc-memifno Usage (module): import jc - result = jc.parse('procfile', proc_file) + result = jc.parse('proc', proc_file) Schema: - [ - { - "procfile": string, - "bar": boolean, - "baz": integer - } - ] +See the specific Proc parser for the schema: + + $ jc --help --proc- + +For example: + + $ jc --help --proc-meminfo + +Specific Proc file parser names can be found with `jc -hh` or `jc -a`. + +Schemas can also be found online at: + + https://kellyjonbrazil.github.io/jc/docs/parsers/proc_ + +For example: + + https://kellyjonbrazil.github.io/jc/docs/parsers/proc_meminfo Examples: diff --git a/docs/parsers/proc_meminfo.md b/docs/parsers/proc_meminfo.md index 95891fe4..edf76d2e 100644 --- a/docs/parsers/proc_meminfo.md +++ b/docs/parsers/proc_meminfo.md @@ -9,28 +9,84 @@ Usage (cli): $ cat /proc/meminfo | jc --proc +or + + $ cat /proc/meminfo | jc --proc-meminfo + Usage (module): + import jc + result = jc.parse('proc', proc_meminfo_file) + +or + import jc result = jc.parse('proc_meminfo', proc_meminfo_file) Schema: - [ - { - "foo": string, - "bar": boolean, - "baz": integer - } - ] +All values are integers. + + { + integer + } Examples: - $ foo | jc --foo -p - [] - - $ foo | jc --foo -p -r - [] + $ cat /proc/meminfo | jc --proc -p + { + "MemTotal": 3997272, + "MemFree": 2760316, + "MemAvailable": 3386876, + "Buffers": 40452, + "Cached": 684856, + "SwapCached": 0, + "Active": 475816, + "Inactive": 322064, + "Active(anon)": 70216, + "Inactive(anon)": 148, + "Active(file)": 405600, + "Inactive(file)": 321916, + "Unevictable": 19476, + "Mlocked": 19476, + "SwapTotal": 3996668, + "SwapFree": 3996668, + "Dirty": 152, + "Writeback": 0, + "AnonPages": 92064, + "Mapped": 79464, + "Shmem": 1568, + "KReclaimable": 188216, + "Slab": 288096, + "SReclaimable": 188216, + "SUnreclaim": 99880, + "KernelStack": 5872, + "PageTables": 1812, + "NFS_Unstable": 0, + "Bounce": 0, + "WritebackTmp": 0, + "CommitLimit": 5995304, + "Committed_AS": 445240, + "VmallocTotal": 34359738367, + "VmallocUsed": 21932, + "VmallocChunk": 0, + "Percpu": 107520, + "HardwareCorrupted": 0, + "AnonHugePages": 0, + "ShmemHugePages": 0, + "ShmemPmdMapped": 0, + "FileHugePages": 0, + "FilePmdMapped": 0, + "HugePages_Total": 0, + "HugePages_Free": 0, + "HugePages_Rsvd": 0, + "HugePages_Surp": 0, + "Hugepagesize": 2048, + "Hugetlb": 0, + "DirectMap4k": 192320, + "DirectMap2M": 4001792, + "DirectMap1G": 2097152 + } diff --git a/docs/parsers/proc_modules.md b/docs/parsers/proc_modules.md index 658fa12f..7497d141 100644 --- a/docs/parsers/proc_modules.md +++ b/docs/parsers/proc_modules.md @@ -5,14 +5,21 @@ jc - JSON Convert `/proc/modules` command output parser -<> - Usage (cli): $ cat /proc/modules | jc --proc +or + + $ cat /proc/modules | jc --proc-modules + Usage (module): + import jc + result = jc.parse('proc', proc_modules_file) + +or + import jc result = jc.parse('proc_modules', proc_modules_file) diff --git a/jc/parsers/proc.py b/jc/parsers/proc.py index 4793bf9d..46735933 100644 --- a/jc/parsers/proc.py +++ b/jc/parsers/proc.py @@ -1,25 +1,42 @@ """jc - JSON Convert Proc file output parser -<> +This parser automatically identifies the Proc file and calls the +corresponding parser to peform the parsing. The specific parsers can also +be called directly, if desired and have a naming convention of +`proc-` (cli) or `proc_` (module). Usage (cli): - $ cat /proc/ | jc --procfile + $ cat /proc/meminfo | jc --proc + +or + + $ cat /proc/meminfo | jc --proc-memifno Usage (module): import jc - result = jc.parse('procfile', proc_file) + result = jc.parse('proc', proc_file) Schema: - [ - { - "procfile": string, - "bar": boolean, - "baz": integer - } - ] +See the specific Proc parser for the schema: + + $ jc --help --proc- + +For example: + + $ jc --help --proc-meminfo + +Specific Proc file parser names can be found with `jc -hh` or `jc -a`. + +Schemas can also be found online at: + + https://kellyjonbrazil.github.io/jc/docs/parsers/proc_ + +For example: + + https://kellyjonbrazil.github.io/jc/docs/parsers/proc_meminfo Examples: @@ -139,7 +156,7 @@ def parse( ioports_p: 'proc_ioports', loadavg_p: 'proc_loadavg', locks_p: 'proc_locks', - meminfo_p: 'proc_meminfo', ####### + meminfo_p: 'proc_meminfo', modules_p: 'proc_modules', mtrr_p: 'proc_mtrr', pagetypeinfo_p: 'proc_pagetypeinfo', diff --git a/jc/parsers/proc_meminfo.py b/jc/parsers/proc_meminfo.py index e9030084..f1571441 100644 --- a/jc/parsers/proc_meminfo.py +++ b/jc/parsers/proc_meminfo.py @@ -4,28 +4,84 @@ Usage (cli): $ cat /proc/meminfo | jc --proc +or + + $ cat /proc/meminfo | jc --proc-meminfo + Usage (module): + import jc + result = jc.parse('proc', proc_meminfo_file) + +or + import jc result = jc.parse('proc_meminfo', proc_meminfo_file) Schema: - [ - { - "foo": string, - "bar": boolean, - "baz": integer - } - ] +All values are integers. + + { + integer + } Examples: - $ foo | jc --foo -p - [] - - $ foo | jc --foo -p -r - [] + $ cat /proc/meminfo | jc --proc -p + { + "MemTotal": 3997272, + "MemFree": 2760316, + "MemAvailable": 3386876, + "Buffers": 40452, + "Cached": 684856, + "SwapCached": 0, + "Active": 475816, + "Inactive": 322064, + "Active(anon)": 70216, + "Inactive(anon)": 148, + "Active(file)": 405600, + "Inactive(file)": 321916, + "Unevictable": 19476, + "Mlocked": 19476, + "SwapTotal": 3996668, + "SwapFree": 3996668, + "Dirty": 152, + "Writeback": 0, + "AnonPages": 92064, + "Mapped": 79464, + "Shmem": 1568, + "KReclaimable": 188216, + "Slab": 288096, + "SReclaimable": 188216, + "SUnreclaim": 99880, + "KernelStack": 5872, + "PageTables": 1812, + "NFS_Unstable": 0, + "Bounce": 0, + "WritebackTmp": 0, + "CommitLimit": 5995304, + "Committed_AS": 445240, + "VmallocTotal": 34359738367, + "VmallocUsed": 21932, + "VmallocChunk": 0, + "Percpu": 107520, + "HardwareCorrupted": 0, + "AnonHugePages": 0, + "ShmemHugePages": 0, + "ShmemPmdMapped": 0, + "FileHugePages": 0, + "FilePmdMapped": 0, + "HugePages_Total": 0, + "HugePages_Free": 0, + "HugePages_Rsvd": 0, + "HugePages_Surp": 0, + "Hugepagesize": 2048, + "Hugetlb": 0, + "DirectMap4k": 192320, + "DirectMap2M": 4001792, + "DirectMap1G": 2097152 + } """ from typing import Dict import jc.utils diff --git a/jc/parsers/proc_modules.py b/jc/parsers/proc_modules.py index 4cc8593e..92bb82c4 100644 --- a/jc/parsers/proc_modules.py +++ b/jc/parsers/proc_modules.py @@ -1,13 +1,20 @@ """jc - JSON Convert `/proc/modules` command output parser -<> - Usage (cli): $ cat /proc/modules | jc --proc +or + + $ cat /proc/modules | jc --proc-modules + Usage (module): + import jc + result = jc.parse('proc', proc_modules_file) + +or + import jc result = jc.parse('proc_modules', proc_modules_file) From d2895928bd515884eac02888e6aecdaa1045bee9 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Tue, 6 Sep 2022 11:46:35 -0700 Subject: [PATCH 010/124] add examples to doc --- docs/parsers/proc.md | 64 +++++++++++++++++++++++++++++++++++++++++--- jc/parsers/proc.py | 64 +++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 120 insertions(+), 8 deletions(-) diff --git a/docs/parsers/proc.md b/docs/parsers/proc.md index 38f977a1..531d601d 100644 --- a/docs/parsers/proc.md +++ b/docs/parsers/proc.md @@ -45,11 +45,67 @@ For example: Examples: - $ procfile | jc --procfile -p - [] + $ cat /proc/modules | jc --proc -p + [ + { + "module": "binfmt_misc", + "size": 24576, + "used": 1, + "used_by": [], + "status": "Live", + "location": "0xffffffffc0ab4000" + }, + { + "module": "vsock_loopback", + "size": 16384, + "used": 0, + "used_by": [], + "status": "Live", + "location": "0xffffffffc0a14000" + }, + { + "module": "vmw_vsock_virtio_transport_common", + "size": 36864, + "used": 1, + "used_by": [ + "vsock_loopback" + ], + "status": "Live", + "location": "0xffffffffc0a03000" + }, + ... + ] - $ procfile | jc --procfile -p -r - [] + $ proc_modules | jc --proc_modules -p -r + [ + { + "module": "binfmt_misc", + "size": "24576", + "used": "1", + "used_by": [], + "status": "Live", + "location": "0xffffffffc0ab4000" + }, + { + "module": "vsock_loopback", + "size": "16384", + "used": "0", + "used_by": [], + "status": "Live", + "location": "0xffffffffc0a14000" + }, + { + "module": "vmw_vsock_virtio_transport_common", + "size": "36864", + "used": "1", + "used_by": [ + "vsock_loopback" + ], + "status": "Live", + "location": "0xffffffffc0a03000" + }, + ... + ] diff --git a/jc/parsers/proc.py b/jc/parsers/proc.py index 46735933..d0a8495a 100644 --- a/jc/parsers/proc.py +++ b/jc/parsers/proc.py @@ -40,11 +40,67 @@ For example: Examples: - $ procfile | jc --procfile -p - [] + $ cat /proc/modules | jc --proc -p + [ + { + "module": "binfmt_misc", + "size": 24576, + "used": 1, + "used_by": [], + "status": "Live", + "location": "0xffffffffc0ab4000" + }, + { + "module": "vsock_loopback", + "size": 16384, + "used": 0, + "used_by": [], + "status": "Live", + "location": "0xffffffffc0a14000" + }, + { + "module": "vmw_vsock_virtio_transport_common", + "size": 36864, + "used": 1, + "used_by": [ + "vsock_loopback" + ], + "status": "Live", + "location": "0xffffffffc0a03000" + }, + ... + ] - $ procfile | jc --procfile -p -r - [] + $ proc_modules | jc --proc_modules -p -r + [ + { + "module": "binfmt_misc", + "size": "24576", + "used": "1", + "used_by": [], + "status": "Live", + "location": "0xffffffffc0ab4000" + }, + { + "module": "vsock_loopback", + "size": "16384", + "used": "0", + "used_by": [], + "status": "Live", + "location": "0xffffffffc0a14000" + }, + { + "module": "vmw_vsock_virtio_transport_common", + "size": "36864", + "used": "1", + "used_by": [ + "vsock_loopback" + ], + "status": "Live", + "location": "0xffffffffc0a03000" + }, + ... + ] """ import re import importlib From 61cd9acaa2a618872c4c88dfbc3711fed2813622 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Tue, 6 Sep 2022 15:19:59 -0700 Subject: [PATCH 011/124] add buddyinfo parser and doc update --- docs/parsers/proc_buddyinfo.md | 124 +++++++++++++++++++++++ jc/lib.py | 1 + jc/parsers/proc_buddyinfo.py | 175 +++++++++++++++++++++++++++++++++ jc/parsers/proc_meminfo.py | 2 +- jc/parsers/proc_modules.py | 2 +- man/jc.1 | 9 +- 6 files changed, 309 insertions(+), 4 deletions(-) create mode 100644 docs/parsers/proc_buddyinfo.md create mode 100644 jc/parsers/proc_buddyinfo.py diff --git a/docs/parsers/proc_buddyinfo.md b/docs/parsers/proc_buddyinfo.md new file mode 100644 index 00000000..df66ef22 --- /dev/null +++ b/docs/parsers/proc_buddyinfo.md @@ -0,0 +1,124 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_buddyinfo + +jc - JSON Convert `/proc/buddyinfo` file parser + +Usage (cli): + + $ cat /proc/buddyinfo | jc --proc + +or + + $ cat /proc/buddyinfo | jc --proc-buddyinfo + +Usage (module): + + import jc + result = jc.parse('proc', proc_buddyinfo_file) + +or + + import jc + result = jc.parse('proc_buddyinfo', proc_buddyinfo_file) + +Schema: + +All values are integers. + + [ + { + "node": integer, + "zone": string, + "free_chunks": [ + integer # [0] + ] + } + ] + + [0] array index correlates to the Order number. + E.g. free_chunks[0] is the value for Order 0 + + +Examples: + + $ cat /proc/buddyinfo | jc --proc -p + [ + { + "node": 0, + "zone": "DMA", + "free_chunks": [ + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 3 + ] + }, + { + "node": 0, + "zone": "DMA32", + "free_chunks": [ + 78, + 114, + 82, + 52, + 38, + 25, + 13, + 9, + 3, + 4, + 629 + ] + }, + { + "node": 0, + "zone": "Normal", + "free_chunks": [ + 0, + 22, + 8, + 10, + 1, + 1, + 2, + 11, + 13, + 0, + 0 + ] + } + ] + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict] +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + List of Dictionaries. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/lib.py b/jc/lib.py index 49a343b7..51261484 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -85,6 +85,7 @@ parsers = [ 'plist', 'postconf', 'proc', + 'proc-buddyinfo', 'proc-meminfo', 'proc-modules', 'ps', diff --git a/jc/parsers/proc_buddyinfo.py b/jc/parsers/proc_buddyinfo.py new file mode 100644 index 00000000..3c2bd44e --- /dev/null +++ b/jc/parsers/proc_buddyinfo.py @@ -0,0 +1,175 @@ +"""jc - JSON Convert `/proc/buddyinfo` file parser + +Usage (cli): + + $ cat /proc/buddyinfo | jc --proc + +or + + $ cat /proc/buddyinfo | jc --proc-buddyinfo + +Usage (module): + + import jc + result = jc.parse('proc', proc_buddyinfo_file) + +or + + import jc + result = jc.parse('proc_buddyinfo', proc_buddyinfo_file) + +Schema: + +All values are integers. + + [ + { + "node": integer, + "zone": string, + "free_chunks": [ + integer # [0] + ] + } + ] + + [0] array index correlates to the Order number. + E.g. free_chunks[0] is the value for Order 0 + + +Examples: + + $ cat /proc/buddyinfo | jc --proc -p + [ + { + "node": 0, + "zone": "DMA", + "free_chunks": [ + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 3 + ] + }, + { + "node": 0, + "zone": "DMA32", + "free_chunks": [ + 78, + 114, + 82, + 52, + 38, + 25, + 13, + 9, + 3, + 4, + 629 + ] + }, + { + "node": 0, + "zone": "Normal", + "free_chunks": [ + 0, + 22, + 8, + 10, + 1, + 1, + 2, + 11, + 13, + 0, + 0 + ] + } + ] +""" +from typing import List, Dict +import jc.utils + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc/buddyinfo` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + hidden = True + + +__version__ = info.version + + +def _process(proc_data: List[Dict]) -> List[Dict]: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (List of Dictionaries) raw structured data to process + + Returns: + + List of Dictionaries. Structured to conform to the schema. + """ + int_list = {'node'} + + for entry in proc_data: + for key in entry: + if key in int_list: + entry[key] = jc.utils.convert_to_int(entry[key]) + + if 'free_chunks' in entry: + entry['free_chunks'] = [int(x) for x in entry['free_chunks']] + + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> List[Dict]: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + List of Dictionaries. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: List = [] + + if jc.utils.has_data(data): + + for line in filter(None, data.splitlines()): + + buddy_list = line.split() + + raw_output.append( + { + 'node': buddy_list[1][:-1], + 'zone': buddy_list[3], + 'free_chunks': buddy_list[4:] + } + ) + + return raw_output if raw else _process(raw_output) diff --git a/jc/parsers/proc_meminfo.py b/jc/parsers/proc_meminfo.py index f1571441..daed6188 100644 --- a/jc/parsers/proc_meminfo.py +++ b/jc/parsers/proc_meminfo.py @@ -90,7 +90,7 @@ import jc.utils class info(): """Provides parser metadata (version, author, etc.)""" version = '1.0' - description = '`/proc/meminfo` command parser' + description = '`/proc/meminfo` file parser' author = 'Kelly Brazil' author_email = 'kellyjonbrazil@gmail.com' compatible = ['linux'] diff --git a/jc/parsers/proc_modules.py b/jc/parsers/proc_modules.py index 92bb82c4..59715dff 100644 --- a/jc/parsers/proc_modules.py +++ b/jc/parsers/proc_modules.py @@ -104,7 +104,7 @@ import jc.utils class info(): """Provides parser metadata (version, author, etc.)""" version = '1.0' - description = '`/proc/modules` command parser' + description = '`/proc/modules` file parser' author = 'Kelly Brazil' author_email = 'kellyjonbrazil@gmail.com' compatible = ['linux'] diff --git a/man/jc.1 b/man/jc.1 index 92497f32..37af3839 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -397,15 +397,20 @@ PLIST file parser \fB--proc\fP `/proc/` file parser +.TP +.B +\fB--proc-buddyinfo\fP +`/proc/buddyinfo` file parser + .TP .B \fB--proc-meminfo\fP -`/proc/meminfo` command parser +`/proc/meminfo` file parser .TP .B \fB--proc-modules\fP -`/proc/modules` command parser +`/proc/modules` file parser .TP .B From 5b4e4fd9432ddb55a2e23d1b35089a12a81559ab Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Tue, 6 Sep 2022 15:52:26 -0700 Subject: [PATCH 012/124] add proc-consoles parser and doc update --- docs/parsers/proc_consoles.md | 107 ++++++++++++++++++++ jc/lib.py | 1 + jc/parsers/proc_consoles.py | 184 ++++++++++++++++++++++++++++++++++ man/jc.1 | 5 + 4 files changed, 297 insertions(+) create mode 100644 docs/parsers/proc_consoles.md create mode 100644 jc/parsers/proc_consoles.py diff --git a/docs/parsers/proc_consoles.md b/docs/parsers/proc_consoles.md new file mode 100644 index 00000000..72093124 --- /dev/null +++ b/docs/parsers/proc_consoles.md @@ -0,0 +1,107 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_consoles + +jc - JSON Convert `/proc/consoles` command output parser + +Usage (cli): + + $ cat /proc/consoles | jc --proc + +or + + $ cat /proc/consoles | jc --proc-consoles + +Usage (module): + + import jc + result = jc.parse('proc', proc_consoles_file) + +or + + import jc + result = jc.parse('proc_consoles', proc_consoles_file) + +Schema: + + [ + { + "device": string, + "operations": string, + "operations_list": [ + string # [0] + ], + "flags": string, + "flags_list": [ + string # [1] + ], + "major": integer, + "minor": integer + } + ] + + [0] Values: read, write, unblank + [1] Values: enabled, preferred, primary boot, prink buffer, + braille device, safe when CPU offline + +Examples: + + $ cat /proc/consoles | jc --proc -p + [ + { + "device": "tty0", + "operations": "-WU", + "operations_list": [ + "write", + "unblank" + ], + "flags": "ECp", + "flags_list": [ + "enabled", + "preferred", + "printk buffer" + ], + "major": 4, + "minor": 7 + }, + { + "device": "ttyS0", + "operations": "-W-", + "operations_list": [ + "write" + ], + "flags": "Ep", + "flags_list": [ + "enabled", + "printk buffer" + ], + "major": 4, + "minor": 64 + } + ] + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict] +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + List of Dictionaries. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/lib.py b/jc/lib.py index 51261484..76bd1000 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -86,6 +86,7 @@ parsers = [ 'postconf', 'proc', 'proc-buddyinfo', + 'proc-consoles', 'proc-meminfo', 'proc-modules', 'ps', diff --git a/jc/parsers/proc_consoles.py b/jc/parsers/proc_consoles.py new file mode 100644 index 00000000..5724a9b5 --- /dev/null +++ b/jc/parsers/proc_consoles.py @@ -0,0 +1,184 @@ +"""jc - JSON Convert `/proc/consoles` command output parser + +Usage (cli): + + $ cat /proc/consoles | jc --proc + +or + + $ cat /proc/consoles | jc --proc-consoles + +Usage (module): + + import jc + result = jc.parse('proc', proc_consoles_file) + +or + + import jc + result = jc.parse('proc_consoles', proc_consoles_file) + +Schema: + + [ + { + "device": string, + "operations": string, + "operations_list": [ + string # [0] + ], + "flags": string, + "flags_list": [ + string # [1] + ], + "major": integer, + "minor": integer + } + ] + + [0] Values: read, write, unblank + [1] Values: enabled, preferred, primary boot, prink buffer, + braille device, safe when CPU offline + +Examples: + + $ cat /proc/consoles | jc --proc -p + [ + { + "device": "tty0", + "operations": "-WU", + "operations_list": [ + "write", + "unblank" + ], + "flags": "ECp", + "flags_list": [ + "enabled", + "preferred", + "printk buffer" + ], + "major": 4, + "minor": 7 + }, + { + "device": "ttyS0", + "operations": "-W-", + "operations_list": [ + "write" + ], + "flags": "Ep", + "flags_list": [ + "enabled", + "printk buffer" + ], + "major": 4, + "minor": 64 + } + ] +""" +import shlex +from typing import List, Dict +import jc.utils + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc/consoles` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + hidden = True + + +__version__ = info.version + + +def _process(proc_data: List[Dict]) -> List[Dict]: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (List of Dictionaries) raw structured data to process + + Returns: + + List of Dictionaries. Structured to conform to the schema. + """ + int_list = {'major', 'minor'} + + for entry in proc_data: + for key in entry: + if key in int_list: + entry[key] = jc.utils.convert_to_int(entry[key]) + + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> List[Dict]: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + List of Dictionaries. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: List = [] + + operations_map = { + 'R': 'read', + 'W': 'write', + 'U': 'unblank' + } + + flags_map = { + 'E': 'enabled', + 'C': 'preferred', + 'B': 'primary boot', + 'p': 'printk buffer', + 'b': 'braille device', + 'a': 'safe when CPU offline' + } + + if jc.utils.has_data(data): + + for line in filter(None, data.splitlines()): + + # since parens are acting like quotation marks, use shlex.split() + # after converting parens to quotes. + line = line.replace('(', '"'). replace(')', '"') + device, operations, flags, maj_min = shlex.split(line) + + operations_str = operations.replace('-', '') + operations_list = [operations_map[i] for i in operations_str] + + flags_str = flags.replace (' ', '') + flags_list = [flags_map[i] for i in flags_str] + + raw_output.append( + { + 'device': device, + 'operations': operations, + 'operations_list': operations_list, + 'flags': flags, + 'flags_list': flags_list, + 'major': maj_min.split(':')[0], + 'minor': maj_min.split(':')[1] + } + ) + + return raw_output if raw else _process(raw_output) diff --git a/man/jc.1 b/man/jc.1 index 37af3839..3dc3f98f 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -402,6 +402,11 @@ PLIST file parser \fB--proc-buddyinfo\fP `/proc/buddyinfo` file parser +.TP +.B +\fB--proc-consoles\fP +`/proc/consoles` file parser + .TP .B \fB--proc-meminfo\fP From b83cd24d5742a7660b90bfc7d80489ef182181e7 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Tue, 6 Sep 2022 17:05:14 -0700 Subject: [PATCH 013/124] add proc-cpuinfo parser and doc update --- docs/parsers/proc_consoles.md | 2 +- docs/parsers/proc_cpuinfo.md | 247 +++++++++++++++++++++++++ docs/parsers/proc_modules.md | 2 +- jc/lib.py | 1 + jc/parsers/proc.py | 2 +- jc/parsers/proc_consoles.py | 2 +- jc/parsers/proc_cpuinfo.py | 333 ++++++++++++++++++++++++++++++++++ jc/parsers/proc_modules.py | 2 +- man/jc.1 | 5 + 9 files changed, 591 insertions(+), 5 deletions(-) create mode 100644 docs/parsers/proc_cpuinfo.md create mode 100644 jc/parsers/proc_cpuinfo.py diff --git a/docs/parsers/proc_consoles.md b/docs/parsers/proc_consoles.md index 72093124..e3441ec1 100644 --- a/docs/parsers/proc_consoles.md +++ b/docs/parsers/proc_consoles.md @@ -3,7 +3,7 @@ # jc.parsers.proc\_consoles -jc - JSON Convert `/proc/consoles` command output parser +jc - JSON Convert `/proc/consoles` file parser Usage (cli): diff --git a/docs/parsers/proc_cpuinfo.md b/docs/parsers/proc_cpuinfo.md new file mode 100644 index 00000000..3bf9c967 --- /dev/null +++ b/docs/parsers/proc_cpuinfo.md @@ -0,0 +1,247 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_cpuinfo + +jc - JSON Convert `/proc/cpuinfo` file parser + +Usage (cli): + + $ cat /proc/cpuinfo | jc --proc + +or + + $ cat /proc/cpuinfo | jc --proc-cpuinfo + +Usage (module): + + import jc + result = jc.parse('proc', proc_cpuinfo_file) + +or + + import jc + result = jc.parse('proc_cpuinfo', proc_cpuinfo_file) + +Schema: + +Integer, float, and boolean ("yes"/"no") conversions are attempted. Blank +strings are converted to `null`. + +"Well-known" keys like `cache size`, `address types`, `bugs`, and `flags` +are processed into sensible data types. (see below) + +If this is not desired, then use the `--raw` (CLI) or `raw=True` (Module) +option. + + [ + { + "processor": integer, + "address sizes": string, + "address_size_physical": integer, # in bits + "address_size_virtual": integer, # in bits + "cache size": string, + "cache_size_num": integer, + "cache_size_unit": string, + "flags": string, + "flag_list": [ + string + ], + "bugs": string, + "bug_list": [ + string + ], + "bogomips": float, + : string/int/float/boolean/null + } + ] + +Examples: + + $ cat /proc/cpuinfo | jc --proc -p + [ + { + "processor": 0, + "vendor_id": "GenuineIntel", + "cpu family": 6, + "model": 142, + "model name": "Intel(R) Core(TM) i5-8279U CPU @ 2.40GHz", + "stepping": 10, + "cpu MHz": 2400.0, + "cache size": "6144 KB", + "physical id": 0, + "siblings": 1, + "core id": 0, + "cpu cores": 1, + "apicid": 0, + "initial apicid": 0, + "fpu": true, + "fpu_exception": true, + "cpuid level": 22, + "wp": true, + "flags": "fpu vme de pse tsc msr pae mce cx8 apic sep mtrr ...", + "bugs": "cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass ...", + "bogomips": 4800.0, + "clflush size": 64, + "cache_alignment": 64, + "address sizes": "45 bits physical, 48 bits virtual", + "power management": null, + "address_size_physical": 45, + "address_size_virtual": 48, + "cache_size_num": 6144, + "cache_size_unit": "KB", + "flag_list": [ + "fpu", + "vme", + "de", + "pse", + "tsc", + "msr", + "pae", + "mce", + "cx8", + "apic", + "sep", + "mtrr", + "pge", + "mca", + "cmov", + "pat", + "pse36", + "clflush", + "mmx", + "fxsr", + "sse", + "sse2", + "ss", + "syscall", + "nx", + "pdpe1gb", + "rdtscp", + "lm", + "constant_tsc", + "arch_perfmon", + "nopl", + "xtopology", + "tsc_reliable", + "nonstop_tsc", + "cpuid", + "pni", + "pclmulqdq", + "ssse3", + "fma", + "cx16", + "pcid", + "sse4_1", + "sse4_2", + "x2apic", + "movbe", + "popcnt", + "tsc_deadline_timer", + "aes", + "xsave", + "avx", + "f16c", + "rdrand", + "hypervisor", + "lahf_lm", + "abm", + "3dnowprefetch", + "cpuid_fault", + "invpcid_single", + "pti", + "ssbd", + "ibrs", + "ibpb", + "stibp", + "fsgsbase", + "tsc_adjust", + "bmi1", + "avx2", + "smep", + "bmi2", + "invpcid", + "rdseed", + "adx", + "smap", + "clflushopt", + "xsaveopt", + "xsavec", + "xgetbv1", + "xsaves", + "arat", + "md_clear", + "flush_l1d", + "arch_capabilities" + ], + "bug_list": [ + "cpu_meltdown", + "spectre_v1", + "spectre_v2", + "spec_store_bypass", + "l1tf", + "mds", + "swapgs", + "itlb_multihit", + "srbds" + ] + }, + ... + ] + + $ proc_cpuinfo | jc --proc_cpuinfo -p -r + [ + { + "processor": "0", + "vendor_id": "GenuineIntel", + "cpu family": "6", + "model": "142", + "model name": "Intel(R) Core(TM) i5-8279U CPU @ 2.40GHz", + "stepping": "10", + "cpu MHz": "2400.000", + "cache size": "6144 KB", + "physical id": "0", + "siblings": "1", + "core id": "0", + "cpu cores": "1", + "apicid": "0", + "initial apicid": "0", + "fpu": "yes", + "fpu_exception": "yes", + "cpuid level": "22", + "wp": "yes", + "flags": "fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge ...", + "bugs": "cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass ...", + "bogomips": "4800.00", + "clflush size": "64", + "cache_alignment": "64", + "address sizes": "45 bits physical, 48 bits virtual", + "power management": "" + }, + ... + ] + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict] +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + List of Dictionaries. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/docs/parsers/proc_modules.md b/docs/parsers/proc_modules.md index 7497d141..6fda08cc 100644 --- a/docs/parsers/proc_modules.md +++ b/docs/parsers/proc_modules.md @@ -3,7 +3,7 @@ # jc.parsers.proc\_modules -jc - JSON Convert `/proc/modules` command output parser +jc - JSON Convert `/proc/modules` file parser Usage (cli): diff --git a/jc/lib.py b/jc/lib.py index 76bd1000..9cecbe5d 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -87,6 +87,7 @@ parsers = [ 'proc', 'proc-buddyinfo', 'proc-consoles', + 'proc-cpuinfo', 'proc-meminfo', 'proc-modules', 'ps', diff --git a/jc/parsers/proc.py b/jc/parsers/proc.py index d0a8495a..0317ff53 100644 --- a/jc/parsers/proc.py +++ b/jc/parsers/proc.py @@ -145,7 +145,7 @@ def parse( # signatures buddyinfo_p = re.compile(r'^Node \d+, zone\s+\w+\s+(?:\d+\s+){11}\n') consoles_p = re.compile(r'^\w+\s+[\-WUR]{3} \([ECBpba ]+\)\s+\d+:\d+\n') - cpuinfo_p = re.compile(r'^processor\s+:.*\nvendor_id\s+:.*\ncpu family\s+:.*\n') + cpuinfo_p = re.compile(r'^processor\t+: \d+.*bogomips\t+: \d+.\d\d\n', re.DOTALL) crypto_p = re.compile(r'^name\s+:.*\ndriver\s+:.*\nmodule\s+:.*\n') devices_p = re.compile(r'^Character devices:\n\s+\d+ .*\n') diskstats_p = re.compile(r'^\s*\d+\s+\d\s\w+\s(?:\d+\s){16}\d\n') diff --git a/jc/parsers/proc_consoles.py b/jc/parsers/proc_consoles.py index 5724a9b5..5f517f4b 100644 --- a/jc/parsers/proc_consoles.py +++ b/jc/parsers/proc_consoles.py @@ -1,4 +1,4 @@ -"""jc - JSON Convert `/proc/consoles` command output parser +"""jc - JSON Convert `/proc/consoles` file parser Usage (cli): diff --git a/jc/parsers/proc_cpuinfo.py b/jc/parsers/proc_cpuinfo.py new file mode 100644 index 00000000..a059eea5 --- /dev/null +++ b/jc/parsers/proc_cpuinfo.py @@ -0,0 +1,333 @@ +"""jc - JSON Convert `/proc/cpuinfo` file parser + +Usage (cli): + + $ cat /proc/cpuinfo | jc --proc + +or + + $ cat /proc/cpuinfo | jc --proc-cpuinfo + +Usage (module): + + import jc + result = jc.parse('proc', proc_cpuinfo_file) + +or + + import jc + result = jc.parse('proc_cpuinfo', proc_cpuinfo_file) + +Schema: + +Integer, float, and boolean ("yes"/"no") conversions are attempted. Blank +strings are converted to `null`. + +"Well-known" keys like `cache size`, `address types`, `bugs`, and `flags` +are processed into sensible data types. (see below) + +If this is not desired, then use the `--raw` (CLI) or `raw=True` (Module) +option. + + [ + { + "processor": integer, + "address sizes": string, + "address_size_physical": integer, # in bits + "address_size_virtual": integer, # in bits + "cache size": string, + "cache_size_num": integer, + "cache_size_unit": string, + "flags": string, + "flag_list": [ + string + ], + "bugs": string, + "bug_list": [ + string + ], + "bogomips": float, + : string/int/float/boolean/null + } + ] + +Examples: + + $ cat /proc/cpuinfo | jc --proc -p + [ + { + "processor": 0, + "vendor_id": "GenuineIntel", + "cpu family": 6, + "model": 142, + "model name": "Intel(R) Core(TM) i5-8279U CPU @ 2.40GHz", + "stepping": 10, + "cpu MHz": 2400.0, + "cache size": "6144 KB", + "physical id": 0, + "siblings": 1, + "core id": 0, + "cpu cores": 1, + "apicid": 0, + "initial apicid": 0, + "fpu": true, + "fpu_exception": true, + "cpuid level": 22, + "wp": true, + "flags": "fpu vme de pse tsc msr pae mce cx8 apic sep mtrr ...", + "bugs": "cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass ...", + "bogomips": 4800.0, + "clflush size": 64, + "cache_alignment": 64, + "address sizes": "45 bits physical, 48 bits virtual", + "power management": null, + "address_size_physical": 45, + "address_size_virtual": 48, + "cache_size_num": 6144, + "cache_size_unit": "KB", + "flag_list": [ + "fpu", + "vme", + "de", + "pse", + "tsc", + "msr", + "pae", + "mce", + "cx8", + "apic", + "sep", + "mtrr", + "pge", + "mca", + "cmov", + "pat", + "pse36", + "clflush", + "mmx", + "fxsr", + "sse", + "sse2", + "ss", + "syscall", + "nx", + "pdpe1gb", + "rdtscp", + "lm", + "constant_tsc", + "arch_perfmon", + "nopl", + "xtopology", + "tsc_reliable", + "nonstop_tsc", + "cpuid", + "pni", + "pclmulqdq", + "ssse3", + "fma", + "cx16", + "pcid", + "sse4_1", + "sse4_2", + "x2apic", + "movbe", + "popcnt", + "tsc_deadline_timer", + "aes", + "xsave", + "avx", + "f16c", + "rdrand", + "hypervisor", + "lahf_lm", + "abm", + "3dnowprefetch", + "cpuid_fault", + "invpcid_single", + "pti", + "ssbd", + "ibrs", + "ibpb", + "stibp", + "fsgsbase", + "tsc_adjust", + "bmi1", + "avx2", + "smep", + "bmi2", + "invpcid", + "rdseed", + "adx", + "smap", + "clflushopt", + "xsaveopt", + "xsavec", + "xgetbv1", + "xsaves", + "arat", + "md_clear", + "flush_l1d", + "arch_capabilities" + ], + "bug_list": [ + "cpu_meltdown", + "spectre_v1", + "spectre_v2", + "spec_store_bypass", + "l1tf", + "mds", + "swapgs", + "itlb_multihit", + "srbds" + ] + }, + ... + ] + + $ proc_cpuinfo | jc --proc_cpuinfo -p -r + [ + { + "processor": "0", + "vendor_id": "GenuineIntel", + "cpu family": "6", + "model": "142", + "model name": "Intel(R) Core(TM) i5-8279U CPU @ 2.40GHz", + "stepping": "10", + "cpu MHz": "2400.000", + "cache size": "6144 KB", + "physical id": "0", + "siblings": "1", + "core id": "0", + "cpu cores": "1", + "apicid": "0", + "initial apicid": "0", + "fpu": "yes", + "fpu_exception": "yes", + "cpuid level": "22", + "wp": "yes", + "flags": "fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge ...", + "bugs": "cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass ...", + "bogomips": "4800.00", + "clflush size": "64", + "cache_alignment": "64", + "address sizes": "45 bits physical, 48 bits virtual", + "power management": "" + }, + ... + ] +""" +from typing import List, Dict +import jc.utils + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc/cpuinfo` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + hidden = True + + +__version__ = info.version + + +def _process(proc_data: List[Dict]) -> List[Dict]: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (List of Dictionaries) raw structured data to process + + Returns: + + List of Dictionaries. Structured to conform to the schema. + """ + int_list = {'size', 'used'} + + for entry in proc_data: + for key in entry: + if entry[key] == '': + entry[key] = None + + try: + entry[key] = int(entry[key]) + except Exception: + pass + + try: + if isinstance(entry[key], str) and (entry[key] == 'yes' or entry[key] == 'no'): + entry[key] = jc.utils.convert_to_bool(entry[key]) + except Exception: + pass + + try: + if isinstance(entry[key], str) and '.' in entry[key]: + entry[key] = float(entry[key]) + except Exception: + pass + + if 'address sizes' in entry: + phy = int(entry['address sizes'].split()[0]) + virt = int(entry['address sizes'].split()[3]) + entry['address_size_physical'] = phy + entry['address_size_virtual'] = virt + + if 'cache size' in entry: + cache_size_int, unit = entry['cache size'].split() + entry['cache_size_num'] = int(cache_size_int) + entry['cache_size_unit'] = unit + + if 'flags' in entry: + flag_list = entry['flags'].split() + entry['flag_list'] = flag_list + + if 'bugs' in entry: + bug_list = entry['bugs'].split() + entry['bug_list'] = bug_list + + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> List[Dict]: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + List of Dictionaries. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: List = [] + output_line: Dict = {} + + if jc.utils.has_data(data): + + for line in filter(None, data.splitlines()): + + if line.startswith('processor'): + if output_line: + raw_output.append(output_line) + output_line = {} + + key, val = line.split(':', maxsplit=1) + output_line[key.strip()] = val.strip() + + if output_line: + raw_output.append(output_line) + + return raw_output if raw else _process(raw_output) diff --git a/jc/parsers/proc_modules.py b/jc/parsers/proc_modules.py index 59715dff..1404c66a 100644 --- a/jc/parsers/proc_modules.py +++ b/jc/parsers/proc_modules.py @@ -1,4 +1,4 @@ -"""jc - JSON Convert `/proc/modules` command output parser +"""jc - JSON Convert `/proc/modules` file parser Usage (cli): diff --git a/man/jc.1 b/man/jc.1 index 3dc3f98f..f21b2ea9 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -407,6 +407,11 @@ PLIST file parser \fB--proc-consoles\fP `/proc/consoles` file parser +.TP +.B +\fB--proc-cpuinfo\fP +`/proc/cpuinfo` file parser + .TP .B \fB--proc-meminfo\fP From 1f2fe65185544a399216f29ce1d5233fef44a920 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Tue, 6 Sep 2022 17:29:56 -0700 Subject: [PATCH 014/124] add proc-crypto parser and doc update --- docs/parsers/proc_crypto.md | 139 ++++++++++++++++++++++++++ jc/lib.py | 1 + jc/parsers/proc_cpuinfo.py | 6 +- jc/parsers/proc_crypto.py | 189 ++++++++++++++++++++++++++++++++++++ man/jc.1 | 5 + 5 files changed, 336 insertions(+), 4 deletions(-) create mode 100644 docs/parsers/proc_crypto.md create mode 100644 jc/parsers/proc_crypto.py diff --git a/docs/parsers/proc_crypto.md b/docs/parsers/proc_crypto.md new file mode 100644 index 00000000..119a3378 --- /dev/null +++ b/docs/parsers/proc_crypto.md @@ -0,0 +1,139 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_crypto + +jc - JSON Convert `/proc/crypto` file parser + +Usage (cli): + + $ cat /proc/crypto | jc --proc + +or + + $ cat /proc/crypto | jc --proc-crypto + +Usage (module): + + import jc + result = jc.parse('proc', proc_crypto_file) + +or + + import jc + result = jc.parse('proc_crypto', proc_crypto_file) + +Schema: + +"Well-known" keys like `priority` and `refcnt` are converted to integers. +Also, keynames ending in "size" are converted to integers. + +If this is not desired, then use the `--raw` (CLI) or `raw=True` (Module) +option. + + [ + { + "name": string, + "driver": string, + "module": string, + "priority": integer, + "refcnt": integer, + "selftest": string, + "internal": string, + "type": string, + "*size": integer + } + ] + +Examples: + + $ cat /proc/crypto | jc --proc -p + [ + { + "name": "ecdh", + "driver": "ecdh-generic", + "module": "ecdh_generic", + "priority": 100, + "refcnt": 1, + "selftest": "passed", + "internal": "no", + "type": "kpp" + }, + { + "name": "blake2b-512", + "driver": "blake2b-512-generic", + "module": "blake2b_generic", + "priority": 100, + "refcnt": 1, + "selftest": "passed", + "internal": "no", + "type": "shash", + "blocksize": 128, + "digestsize": 64 + }, + ... + ] + + $ proc_crypto | jc --proc_crypto -p -r + [ + { + "name": "ecdh", + "driver": "ecdh-generic", + "module": "ecdh_generic", + "priority": "100", + "refcnt": "1", + "selftest": "passed", + "internal": "no", + "type": "kpp" + }, + { + "name": "blake2b-512", + "driver": "blake2b-512-generic", + "module": "blake2b_generic", + "priority": "100", + "refcnt": "1", + "selftest": "passed", + "internal": "no", + "type": "shash", + "blocksize": "128", + "digestsize": "64" + }, + { + "name": "blake2b-384", + "driver": "blake2b-384-generic", + "module": "blake2b_generic", + "priority": "100", + "refcnt": "1", + "selftest": "passed", + "internal": "no", + "type": "shash", + "blocksize": "128", + "digestsize": "48" + }, + ... + ] + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict] +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + List of Dictionaries. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/lib.py b/jc/lib.py index 9cecbe5d..d5624c06 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -88,6 +88,7 @@ parsers = [ 'proc-buddyinfo', 'proc-consoles', 'proc-cpuinfo', + 'proc-crypto', 'proc-meminfo', 'proc-modules', 'ps', diff --git a/jc/parsers/proc_cpuinfo.py b/jc/parsers/proc_cpuinfo.py index a059eea5..0627783f 100644 --- a/jc/parsers/proc_cpuinfo.py +++ b/jc/parsers/proc_cpuinfo.py @@ -245,8 +245,6 @@ def _process(proc_data: List[Dict]) -> List[Dict]: List of Dictionaries. Structured to conform to the schema. """ - int_list = {'size', 'used'} - for entry in proc_data: for key in entry: if entry[key] == '': @@ -327,7 +325,7 @@ def parse( key, val = line.split(':', maxsplit=1) output_line[key.strip()] = val.strip() - if output_line: - raw_output.append(output_line) + if output_line: + raw_output.append(output_line) return raw_output if raw else _process(raw_output) diff --git a/jc/parsers/proc_crypto.py b/jc/parsers/proc_crypto.py new file mode 100644 index 00000000..8e75c21f --- /dev/null +++ b/jc/parsers/proc_crypto.py @@ -0,0 +1,189 @@ +"""jc - JSON Convert `/proc/crypto` file parser + +Usage (cli): + + $ cat /proc/crypto | jc --proc + +or + + $ cat /proc/crypto | jc --proc-crypto + +Usage (module): + + import jc + result = jc.parse('proc', proc_crypto_file) + +or + + import jc + result = jc.parse('proc_crypto', proc_crypto_file) + +Schema: + +"Well-known" keys like `priority` and `refcnt` are converted to integers. +Also, keynames ending in "size" are converted to integers. + +If this is not desired, then use the `--raw` (CLI) or `raw=True` (Module) +option. + + [ + { + "name": string, + "driver": string, + "module": string, + "priority": integer, + "refcnt": integer, + "selftest": string, + "internal": string, + "type": string, + "*size": integer + } + ] + +Examples: + + $ cat /proc/crypto | jc --proc -p + [ + { + "name": "ecdh", + "driver": "ecdh-generic", + "module": "ecdh_generic", + "priority": 100, + "refcnt": 1, + "selftest": "passed", + "internal": "no", + "type": "kpp" + }, + { + "name": "blake2b-512", + "driver": "blake2b-512-generic", + "module": "blake2b_generic", + "priority": 100, + "refcnt": 1, + "selftest": "passed", + "internal": "no", + "type": "shash", + "blocksize": 128, + "digestsize": 64 + }, + ... + ] + + $ proc_crypto | jc --proc_crypto -p -r + [ + { + "name": "ecdh", + "driver": "ecdh-generic", + "module": "ecdh_generic", + "priority": "100", + "refcnt": "1", + "selftest": "passed", + "internal": "no", + "type": "kpp" + }, + { + "name": "blake2b-512", + "driver": "blake2b-512-generic", + "module": "blake2b_generic", + "priority": "100", + "refcnt": "1", + "selftest": "passed", + "internal": "no", + "type": "shash", + "blocksize": "128", + "digestsize": "64" + }, + { + "name": "blake2b-384", + "driver": "blake2b-384-generic", + "module": "blake2b_generic", + "priority": "100", + "refcnt": "1", + "selftest": "passed", + "internal": "no", + "type": "shash", + "blocksize": "128", + "digestsize": "48" + }, + ... + ] +""" +from typing import List, Dict +import jc.utils + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc/crypto` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + hidden = True + + +__version__ = info.version + + +def _process(proc_data: List[Dict]) -> List[Dict]: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (List of Dictionaries) raw structured data to process + + Returns: + + List of Dictionaries. Structured to conform to the schema. + """ + int_list = {'priority', 'refcnt'} + + for entry in proc_data: + for key in entry: + if key in int_list or key.endswith('size'): + entry[key] = jc.utils.convert_to_int(entry[key]) + + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> List[Dict]: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + List of Dictionaries. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: List = [] + output_line: Dict = {} + + if jc.utils.has_data(data): + + for line in filter(None, data.splitlines()): + + if line.startswith('name'): + if output_line: + raw_output.append(output_line) + output_line = {} + + key, val = line.split(':', maxsplit=1) + output_line[key.strip()] = val.strip() + + if output_line: + raw_output.append(output_line) + + return raw_output if raw else _process(raw_output) diff --git a/man/jc.1 b/man/jc.1 index f21b2ea9..3ba16bea 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -412,6 +412,11 @@ PLIST file parser \fB--proc-cpuinfo\fP `/proc/cpuinfo` file parser +.TP +.B +\fB--proc-crypto\fP +`/proc/crypto` file parser + .TP .B \fB--proc-meminfo\fP From 966fe97759b0751e92a81556f0ead4ae1b4d8499 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Tue, 6 Sep 2022 17:59:26 -0700 Subject: [PATCH 015/124] add proc-devices parser and doc update --- docs/parsers/proc_devices.md | 99 +++++++++++++++++++++ jc/lib.py | 1 + jc/parsers/proc_devices.py | 162 +++++++++++++++++++++++++++++++++++ man/jc.1 | 5 ++ 4 files changed, 267 insertions(+) create mode 100644 docs/parsers/proc_devices.md create mode 100644 jc/parsers/proc_devices.py diff --git a/docs/parsers/proc_devices.md b/docs/parsers/proc_devices.md new file mode 100644 index 00000000..b269b321 --- /dev/null +++ b/docs/parsers/proc_devices.md @@ -0,0 +1,99 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_devices + +jc - JSON Convert `/proc/devices` file parser + +Usage (cli): + + $ cat /proc/devices | jc --proc + +or + + $ cat /proc/devices | jc --proc-devices + +Usage (module): + + import jc + result = jc.parse('proc', proc_devices_file) + +or + + import jc + result = jc.parse('proc_devices', proc_devices_file) + +Schema: + +Since devices can be members of multiple groups, the value for each device +is a list. + + { + "character": { + "": [ + string + ] + }, + "block": { + "": [ + string + ] + } + } + +Examples: + + $ cat /proc/devices | jc --proc -p + { + "character": { + "1": [ + "mem" + ], + "4": [ + "/dev/vc/0", + "tty", + "ttyS" + ], + "5": [ + "/dev/tty", + "/dev/console", + "/dev/ptmx", + "ttyprintk" + ], + "block": { + "7": [ + "loop" + ], + "8": [ + "sd" + ], + "9": [ + "md" + ] + } + } + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> Dict +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + Dictionary. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/lib.py b/jc/lib.py index d5624c06..625bdcea 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -89,6 +89,7 @@ parsers = [ 'proc-consoles', 'proc-cpuinfo', 'proc-crypto', + 'proc-devices', 'proc-meminfo', 'proc-modules', 'ps', diff --git a/jc/parsers/proc_devices.py b/jc/parsers/proc_devices.py new file mode 100644 index 00000000..deec4866 --- /dev/null +++ b/jc/parsers/proc_devices.py @@ -0,0 +1,162 @@ +"""jc - JSON Convert `/proc/devices` file parser + +Usage (cli): + + $ cat /proc/devices | jc --proc + +or + + $ cat /proc/devices | jc --proc-devices + +Usage (module): + + import jc + result = jc.parse('proc', proc_devices_file) + +or + + import jc + result = jc.parse('proc_devices', proc_devices_file) + +Schema: + +Since devices can be members of multiple groups, the value for each device +is a list. + + { + "character": { + "": [ + string + ] + }, + "block": { + "": [ + string + ] + } + } + +Examples: + + $ cat /proc/devices | jc --proc -p + { + "character": { + "1": [ + "mem" + ], + "4": [ + "/dev/vc/0", + "tty", + "ttyS" + ], + "5": [ + "/dev/tty", + "/dev/console", + "/dev/ptmx", + "ttyprintk" + ], + "block": { + "7": [ + "loop" + ], + "8": [ + "sd" + ], + "9": [ + "md" + ] + } + } +""" +from typing import Dict +import jc.utils + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc/devices` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + hidden = True + + +__version__ = info.version + + +def _process(proc_data: Dict) -> Dict: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (Dictionary) raw structured data to process + + Returns: + + Dictionary. Structured to conform to the schema. + """ + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> Dict: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + Dictionary. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: Dict = {} + character: Dict = {} + block: Dict = {} + section = '' + + if jc.utils.has_data(data): + + for line in filter(None, data.splitlines()): + if 'Character devices:' in line: + section = 'character' + continue + + if 'Block devices:' in line: + section = 'block' + continue + + devnum, group = line.split() + + if section == 'character': + if not devnum in character: + character[devnum] = [] + + character[devnum].append(group) + continue + + if section == 'block': + if not devnum in block: + block[devnum] = [] + + block[devnum].append(group) + continue + + if character or block: + raw_output = { + 'character': character, + 'block': block + } + + return raw_output if raw else _process(raw_output) diff --git a/man/jc.1 b/man/jc.1 index 3ba16bea..33be6f91 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -417,6 +417,11 @@ PLIST file parser \fB--proc-crypto\fP `/proc/crypto` file parser +.TP +.B +\fB--proc-devices\fP +`/proc/devices` file parser + .TP .B \fB--proc-meminfo\fP From cc6287c12451c5f3f618ffaec17cb758804ccab7 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Wed, 7 Sep 2022 08:40:37 -0700 Subject: [PATCH 016/124] try/except int conversions --- jc/parsers/proc_crypto.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/jc/parsers/proc_crypto.py b/jc/parsers/proc_crypto.py index 8e75c21f..c2c9352f 100644 --- a/jc/parsers/proc_crypto.py +++ b/jc/parsers/proc_crypto.py @@ -142,7 +142,10 @@ def _process(proc_data: List[Dict]) -> List[Dict]: for entry in proc_data: for key in entry: if key in int_list or key.endswith('size'): - entry[key] = jc.utils.convert_to_int(entry[key]) + try: + entry[key] = int(entry[key]) + except Exception: + pass return proc_data From c976c3226d76a07f698412d0cb12529fadab653b Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Wed, 7 Sep 2022 11:59:54 -0700 Subject: [PATCH 017/124] add magic support for /proc files --- jc/cli.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/jc/cli.py b/jc/cli.py index b272f277..c8615f90 100644 --- a/jc/cli.py +++ b/jc/cli.py @@ -419,6 +419,9 @@ def magic_parser(args): options # jc options to preserve ) +def open_text_file(path_string): + with open(path_string, 'r') as f: + return f.read() def run_user_command(command): """ @@ -571,13 +574,19 @@ def main(): # if magic syntax used, try to run the command and error if it's not found, etc. magic_stdout, magic_stderr, magic_exit_code = None, None, 0 + run_command_str = '' if run_command: try: run_command_str = shlex.join(run_command) # python 3.8+ except AttributeError: run_command_str = ' '.join(run_command) # older python versions - if valid_command: + if run_command_str.startswith('/proc'): + magic_found_parser = 'proc' + magic_stdout = open_text_file(run_command_str) + print(f'this is a procfile. Magic parser={magic_found_parser}, runstring={run_command_str}') + + elif valid_command: try: magic_stdout, magic_stderr, magic_exit_code = run_user_command(run_command) if magic_stderr: @@ -625,12 +634,7 @@ def main(): utils.error_message(['Missing or incorrect arguments. Use "jc -h" for help.']) sys.exit(combined_exit_code(magic_exit_code, JC_ERROR_EXIT)) - # check for input errors (pipe vs magic) - if not sys.stdin.isatty() and magic_stdout: - utils.error_message(['Piped data and Magic syntax used simultaneously. Use "jc -h" for help.']) - sys.exit(combined_exit_code(magic_exit_code, JC_ERROR_EXIT)) - - elif sys.stdin.isatty() and magic_stdout is None: + if sys.stdin.isatty() and magic_stdout is None: utils.error_message(['Missing piped data. Use "jc -h" for help.']) sys.exit(combined_exit_code(magic_exit_code, JC_ERROR_EXIT)) From c1f36f74557f61d083286983fdabc2aff178f4ce Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Wed, 7 Sep 2022 12:31:17 -0700 Subject: [PATCH 018/124] add magic syntax for /proc to docs --- docs/parsers/proc.md | 15 ++++++++++++--- docs/parsers/proc_buddyinfo.md | 4 ++++ docs/parsers/proc_consoles.md | 4 ++++ docs/parsers/proc_cpuinfo.md | 4 ++++ docs/parsers/proc_crypto.md | 4 ++++ docs/parsers/proc_devices.md | 4 ++++ docs/parsers/proc_meminfo.md | 4 ++++ docs/parsers/proc_modules.md | 4 ++++ jc/cli.py | 24 +++++++++++++++++++----- jc/parsers/proc.py | 15 ++++++++++++--- jc/parsers/proc_buddyinfo.py | 4 ++++ jc/parsers/proc_consoles.py | 4 ++++ jc/parsers/proc_cpuinfo.py | 4 ++++ jc/parsers/proc_crypto.py | 4 ++++ jc/parsers/proc_devices.py | 4 ++++ jc/parsers/proc_meminfo.py | 4 ++++ jc/parsers/proc_modules.py | 4 ++++ man/jc.1 | 2 +- 18 files changed, 100 insertions(+), 12 deletions(-) diff --git a/docs/parsers/proc.md b/docs/parsers/proc.md index 531d601d..d51a25d9 100644 --- a/docs/parsers/proc.md +++ b/docs/parsers/proc.md @@ -6,14 +6,23 @@ jc - JSON Convert Proc file output parser This parser automatically identifies the Proc file and calls the -corresponding parser to peform the parsing. The specific parsers can also -be called directly, if desired and have a naming convention of -`proc-` (cli) or `proc_` (module). +corresponding parser to peform the parsing. + +Magic syntax for converting `/proc` files is also supported by running +`jc /proc/`. Any `jc` options must be specified before the +`/proc` path. + +specific Proc file parsers can also be called directly, if desired and have +a naming convention of `proc-` (cli) or `proc_` (module). Usage (cli): $ cat /proc/meminfo | jc --proc +or + + $ jc /proc/meminfo + or $ cat /proc/meminfo | jc --proc-memifno diff --git a/docs/parsers/proc_buddyinfo.md b/docs/parsers/proc_buddyinfo.md index df66ef22..7bed14e5 100644 --- a/docs/parsers/proc_buddyinfo.md +++ b/docs/parsers/proc_buddyinfo.md @@ -9,6 +9,10 @@ Usage (cli): $ cat /proc/buddyinfo | jc --proc +or + + $ jc /proc/buddyinfo + or $ cat /proc/buddyinfo | jc --proc-buddyinfo diff --git a/docs/parsers/proc_consoles.md b/docs/parsers/proc_consoles.md index e3441ec1..db00dced 100644 --- a/docs/parsers/proc_consoles.md +++ b/docs/parsers/proc_consoles.md @@ -9,6 +9,10 @@ Usage (cli): $ cat /proc/consoles | jc --proc +or + + $ jc /proc/consoles + or $ cat /proc/consoles | jc --proc-consoles diff --git a/docs/parsers/proc_cpuinfo.md b/docs/parsers/proc_cpuinfo.md index 3bf9c967..39e39643 100644 --- a/docs/parsers/proc_cpuinfo.md +++ b/docs/parsers/proc_cpuinfo.md @@ -9,6 +9,10 @@ Usage (cli): $ cat /proc/cpuinfo | jc --proc +or + + $ jc /proc/cpuinfo + or $ cat /proc/cpuinfo | jc --proc-cpuinfo diff --git a/docs/parsers/proc_crypto.md b/docs/parsers/proc_crypto.md index 119a3378..835489d7 100644 --- a/docs/parsers/proc_crypto.md +++ b/docs/parsers/proc_crypto.md @@ -9,6 +9,10 @@ Usage (cli): $ cat /proc/crypto | jc --proc +or + + $ jc /proc/crypto + or $ cat /proc/crypto | jc --proc-crypto diff --git a/docs/parsers/proc_devices.md b/docs/parsers/proc_devices.md index b269b321..c5b82a06 100644 --- a/docs/parsers/proc_devices.md +++ b/docs/parsers/proc_devices.md @@ -9,6 +9,10 @@ Usage (cli): $ cat /proc/devices | jc --proc +or + + $ jc /proc/devices + or $ cat /proc/devices | jc --proc-devices diff --git a/docs/parsers/proc_meminfo.md b/docs/parsers/proc_meminfo.md index edf76d2e..45328325 100644 --- a/docs/parsers/proc_meminfo.md +++ b/docs/parsers/proc_meminfo.md @@ -9,6 +9,10 @@ Usage (cli): $ cat /proc/meminfo | jc --proc +or + + $ jc /proc/meminfo + or $ cat /proc/meminfo | jc --proc-meminfo diff --git a/docs/parsers/proc_modules.md b/docs/parsers/proc_modules.md index 6fda08cc..82833a42 100644 --- a/docs/parsers/proc_modules.md +++ b/docs/parsers/proc_modules.md @@ -9,6 +9,10 @@ Usage (cli): $ cat /proc/modules | jc --proc +or + + $ jc /proc/modules + or $ cat /proc/modules | jc --proc-modules diff --git a/jc/cli.py b/jc/cli.py index c8615f90..3077513d 100644 --- a/jc/cli.py +++ b/jc/cli.py @@ -179,14 +179,23 @@ def helptext(show_hidden=False): options_string = options_text(indent=4, pad=20) helptext_string = f'''\ -jc converts the output of many commands and file-types to JSON or YAML +jc converts the output of many commands, file-types, and strings to JSON or YAML Usage: - COMMAND | jc PARSER [OPTIONS] - or magic syntax: + Standard syntax: - jc [OPTIONS] COMMAND + COMMAND | jc PARSER [OPTIONS] + + cat FILE | jc PARSER [OPTIONS] + + echo STRING | jc PARSER [OPTIONS] + + Magic syntax: + + jc [OPTIONS] COMMAND + + jc [OPTIONS] /proc/ Parsers: {parsers_string} @@ -195,12 +204,18 @@ Options: Examples: Standard Syntax: $ dig www.google.com | jc --dig --pretty + $ cat /proc/meminfo | jc --proc --pretty Magic Syntax: $ jc --pretty dig www.google.com + $ jc --pretty /proc/meminfo Parser Documentation: $ jc --help --dig + + Show Hidden Parsers: + $ jc -hh + $ jc --about --pretty ''' return helptext_string @@ -584,7 +599,6 @@ def main(): if run_command_str.startswith('/proc'): magic_found_parser = 'proc' magic_stdout = open_text_file(run_command_str) - print(f'this is a procfile. Magic parser={magic_found_parser}, runstring={run_command_str}') elif valid_command: try: diff --git a/jc/parsers/proc.py b/jc/parsers/proc.py index 0317ff53..a4309329 100644 --- a/jc/parsers/proc.py +++ b/jc/parsers/proc.py @@ -1,14 +1,23 @@ """jc - JSON Convert Proc file output parser This parser automatically identifies the Proc file and calls the -corresponding parser to peform the parsing. The specific parsers can also -be called directly, if desired and have a naming convention of -`proc-` (cli) or `proc_` (module). +corresponding parser to peform the parsing. + +Magic syntax for converting `/proc` files is also supported by running +`jc /proc/`. Any `jc` options must be specified before the +`/proc` path. + +specific Proc file parsers can also be called directly, if desired and have +a naming convention of `proc-` (cli) or `proc_` (module). Usage (cli): $ cat /proc/meminfo | jc --proc +or + + $ jc /proc/meminfo + or $ cat /proc/meminfo | jc --proc-memifno diff --git a/jc/parsers/proc_buddyinfo.py b/jc/parsers/proc_buddyinfo.py index 3c2bd44e..1efd5680 100644 --- a/jc/parsers/proc_buddyinfo.py +++ b/jc/parsers/proc_buddyinfo.py @@ -4,6 +4,10 @@ Usage (cli): $ cat /proc/buddyinfo | jc --proc +or + + $ jc /proc/buddyinfo + or $ cat /proc/buddyinfo | jc --proc-buddyinfo diff --git a/jc/parsers/proc_consoles.py b/jc/parsers/proc_consoles.py index 5f517f4b..3423d0b0 100644 --- a/jc/parsers/proc_consoles.py +++ b/jc/parsers/proc_consoles.py @@ -4,6 +4,10 @@ Usage (cli): $ cat /proc/consoles | jc --proc +or + + $ jc /proc/consoles + or $ cat /proc/consoles | jc --proc-consoles diff --git a/jc/parsers/proc_cpuinfo.py b/jc/parsers/proc_cpuinfo.py index 0627783f..16c93892 100644 --- a/jc/parsers/proc_cpuinfo.py +++ b/jc/parsers/proc_cpuinfo.py @@ -4,6 +4,10 @@ Usage (cli): $ cat /proc/cpuinfo | jc --proc +or + + $ jc /proc/cpuinfo + or $ cat /proc/cpuinfo | jc --proc-cpuinfo diff --git a/jc/parsers/proc_crypto.py b/jc/parsers/proc_crypto.py index c2c9352f..f2b4fa4a 100644 --- a/jc/parsers/proc_crypto.py +++ b/jc/parsers/proc_crypto.py @@ -4,6 +4,10 @@ Usage (cli): $ cat /proc/crypto | jc --proc +or + + $ jc /proc/crypto + or $ cat /proc/crypto | jc --proc-crypto diff --git a/jc/parsers/proc_devices.py b/jc/parsers/proc_devices.py index deec4866..4d2a4441 100644 --- a/jc/parsers/proc_devices.py +++ b/jc/parsers/proc_devices.py @@ -4,6 +4,10 @@ Usage (cli): $ cat /proc/devices | jc --proc +or + + $ jc /proc/devices + or $ cat /proc/devices | jc --proc-devices diff --git a/jc/parsers/proc_meminfo.py b/jc/parsers/proc_meminfo.py index daed6188..7b069f12 100644 --- a/jc/parsers/proc_meminfo.py +++ b/jc/parsers/proc_meminfo.py @@ -4,6 +4,10 @@ Usage (cli): $ cat /proc/meminfo | jc --proc +or + + $ jc /proc/meminfo + or $ cat /proc/meminfo | jc --proc-meminfo diff --git a/jc/parsers/proc_modules.py b/jc/parsers/proc_modules.py index 1404c66a..f74e9539 100644 --- a/jc/parsers/proc_modules.py +++ b/jc/parsers/proc_modules.py @@ -4,6 +4,10 @@ Usage (cli): $ cat /proc/modules | jc --proc +or + + $ jc /proc/modules + or $ cat /proc/modules | jc --proc-modules diff --git a/man/jc.1 b/man/jc.1 index 33be6f91..6291f633 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -1,4 +1,4 @@ -.TH jc 1 2022-09-06 1.21.2 "JSON Convert" +.TH jc 1 2022-09-07 1.21.2 "JSON Convert" .SH NAME \fBjc\fP \- JSON Convert JSONifies the output of many CLI tools and file-types .SH SYNOPSIS From 4d761d7e8ae2cd38b1e09a05c188b5f25ee7f15e Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Wed, 7 Sep 2022 12:52:05 -0700 Subject: [PATCH 019/124] add exception handling for file open errors --- jc/cli.py | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/jc/cli.py b/jc/cli.py index 3077513d..8a5100cc 100644 --- a/jc/cli.py +++ b/jc/cli.py @@ -434,10 +434,12 @@ def magic_parser(args): options # jc options to preserve ) + def open_text_file(path_string): with open(path_string, 'r') as f: return f.read() + def run_user_command(command): """ Use subprocess to run the user's command. Returns the STDOUT, STDERR, @@ -597,8 +599,28 @@ def main(): run_command_str = ' '.join(run_command) # older python versions if run_command_str.startswith('/proc'): - magic_found_parser = 'proc' - magic_stdout = open_text_file(run_command_str) + try: + magic_found_parser = 'proc' + magic_stdout = open_text_file(run_command_str) + + except OSError as e: + if debug: + raise + + error_msg = os.strerror(e.errno) + utils.error_message([ + f'"{run_command_str}" file could not be opened: {error_msg}.' + ]) + sys.exit(combined_exit_code(magic_exit_code, JC_ERROR_EXIT)) + + except Exception: + if debug: + raise + + utils.error_message([ + f'"{run_command_str}" file could not be opened. For details use the -d or -dd option.' + ]) + sys.exit(combined_exit_code(magic_exit_code, JC_ERROR_EXIT)) elif valid_command: try: From c4c159f0560ed7c81fd4e2d031dee4f905d0421b Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Wed, 7 Sep 2022 13:56:16 -0700 Subject: [PATCH 020/124] clean up examples --- README.md | 37 ++++++++++++++++++++----------------- jc/cli.py | 1 - man/jc.1 | 29 +++++++++++++++++++++++------ templates/manpage_template | 29 +++++++++++++++++++++++------ templates/readme_template | 37 ++++++++++++++++++++----------------- 5 files changed, 86 insertions(+), 47 deletions(-) diff --git a/README.md b/README.md index 6092740b..cfb329f6 100644 --- a/README.md +++ b/README.md @@ -133,7 +133,9 @@ on Github. `jc` accepts piped input from `STDIN` and outputs a JSON representation of the previous command's output to `STDOUT`. ```bash -COMMAND | jc PARSER [OPTIONS] +COMMAND | jc [OPTIONS] PARSER +cat FILE | jc [OPTIONS] PARSER +echo STRING | jc [OPTIONS] PARSER ``` Alternatively, the "magic" syntax can be used by prepending `jc` to the command @@ -141,6 +143,7 @@ to be converted. Options can be passed to `jc` immediately before the command is given. (Note: command aliases and shell builtins are not supported) ```bash jc [OPTIONS] COMMAND +jc [OPTIONS] /proc/ ``` The JSON output can be compact (default) or pretty formatted with the `-p` @@ -538,12 +541,12 @@ that case you can suppress the warning message with the `-q` cli option or the macOS: ```bash -cat lsof.out | jc --lsof -q +cat lsof.out | jc -q --lsof ``` or Windows: ```bash -type lsof.out | jc --lsof -q +type lsof.out | jc -q --lsof ``` Tested on: @@ -587,7 +590,7 @@ documentation. ### arp ```bash -arp | jc --arp -p # or: jc -p arp +arp | jc -p --arp # or: jc -p arp ``` ```json [ @@ -626,7 +629,7 @@ cat homes.csv ... ``` ```bash -cat homes.csv | jc --csv -p +cat homes.csv | jc -p --csv ``` ```json [ @@ -667,7 +670,7 @@ cat homes.csv | jc --csv -p ``` ### /etc/hosts file ```bash -cat /etc/hosts | jc --hosts -p +cat /etc/hosts | jc -p --hosts ``` ```json [ @@ -694,7 +697,7 @@ cat /etc/hosts | jc --hosts -p ``` ### ifconfig ```bash -ifconfig | jc --ifconfig -p # or: jc -p ifconfig +ifconfig | jc -p --ifconfig # or: jc -p ifconfig ``` ```json [ @@ -752,7 +755,7 @@ Port = 50022 ForwardX11 = no ``` ```bash -cat example.ini | jc --ini -p +cat example.ini | jc -p --ini ``` ```json { @@ -774,7 +777,7 @@ cat example.ini | jc --ini -p ``` ### ls ```bash -$ ls -l /usr/bin | jc --ls -p # or: jc -p ls -l /usr/bin +$ ls -l /usr/bin | jc -p --ls # or: jc -p ls -l /usr/bin ``` ```json [ @@ -810,7 +813,7 @@ $ ls -l /usr/bin | jc --ls -p # or: jc -p ls -l /usr/bin ``` ### netstat ```bash -netstat -apee | jc --netstat -p # or: jc -p netstat -apee +netstat -apee | jc -p --netstat # or: jc -p netstat -apee ``` ```json [ @@ -898,7 +901,7 @@ netstat -apee | jc --netstat -p # or: jc -p netstat -apee ``` ### /etc/passwd file ```bash -cat /etc/passwd | jc --passwd -p +cat /etc/passwd | jc -p --passwd ``` ```json [ @@ -924,7 +927,7 @@ cat /etc/passwd | jc --passwd -p ``` ### ping ```bash -ping 8.8.8.8 -c 3 | jc --ping -p # or: jc -p ping 8.8.8.8 -c 3 +ping 8.8.8.8 -c 3 | jc -p --ping # or: jc -p ping 8.8.8.8 -c 3 ``` ```json { @@ -977,7 +980,7 @@ ping 8.8.8.8 -c 3 | jc --ping -p # or: jc -p ping 8.8.8.8 -c 3 ``` ### ps ```bash -ps axu | jc --ps -p # or: jc -p ps axu +ps axu | jc -p --ps # or: jc -p ps axu ``` ```json [ @@ -1024,7 +1027,7 @@ ps axu | jc --ps -p # or: jc -p ps axu ``` ### traceroute ```bash -traceroute -m 2 8.8.8.8 | jc --traceroute -p +traceroute -m 2 8.8.8.8 | jc -p --traceroute # or: jc -p traceroute -m 2 8.8.8.8 ``` ```json @@ -1089,7 +1092,7 @@ traceroute -m 2 8.8.8.8 | jc --traceroute -p ``` ### uptime ```bash -uptime | jc --uptime -p # or: jc -p uptime +uptime | jc -p --uptime # or: jc -p uptime ``` ```json { @@ -1134,7 +1137,7 @@ cat cd_catalog.xml ... ``` ```bash -cat cd_catalog.xml | jc --xml -p +cat cd_catalog.xml | jc -p --xml ``` ```json { @@ -1186,7 +1189,7 @@ spec: mode: ISTIO_MUTUAL ``` ```bash -cat istio.yaml | jc --yaml -p +cat istio.yaml | jc -p --yaml ``` ```json [ diff --git a/jc/cli.py b/jc/cli.py index 8a5100cc..cab5581c 100644 --- a/jc/cli.py +++ b/jc/cli.py @@ -215,7 +215,6 @@ Examples: Show Hidden Parsers: $ jc -hh - $ jc --about --pretty ''' return helptext_string diff --git a/man/jc.1 b/man/jc.1 index 6291f633..0cbd86e9 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -1,13 +1,26 @@ .TH jc 1 2022-09-07 1.21.2 "JSON Convert" .SH NAME -\fBjc\fP \- JSON Convert JSONifies the output of many CLI tools and file-types +\fBjc\fP \- JSON Convert JSONifies the output of many CLI tools, file-types, and strings .SH SYNOPSIS -COMMAND | jc PARSER [OPTIONS] -or "Magic" syntax: +Standard syntax: +.RS +COMMAND | \fBjc\fP [OPTIONS] PARSER + +cat FILE | \fBjc\fP [OPTIONS] PARSER + +echo STRING | \fBjc\fP [OPTIONS] PARSER +.RE + +Magic syntax: + +.RS \fBjc\fP [OPTIONS] COMMAND +\fBjc\fP [OPTIONS] /proc/ +.RE + .SH DESCRIPTION \fBjc\fP JSONifies the output of many CLI tools, file-types, and common strings for easier parsing in scripts. \fBjc\fP accepts piped input from \fBSTDIN\fP and outputs a JSON representation of the previous command's output to \fBSTDOUT\fP. Alternatively, the "Magic" syntax can be used by prepending \fBjc\fP to the command to be converted. Options can be passed to \fBjc\fP immediately before the command is given. (Note: "Magic" syntax does not support shell builtins or command aliases) @@ -912,17 +925,21 @@ If a UTC timezone can be detected in the text of the command output, the timesta .SH EXAMPLES Standard Syntax: .RS -$ dig www.google.com | jc \fB--dig\fP \fB-p\fP +$ dig www.google.com | jc \fB-p\fP \fB--dig\fP + +$ cat /proc/meminfo | jc \fB--pretty\fP \fB--proc\fP .RE Magic Syntax: .RS -$ jc \fB-p\fP dig www.google.com +$ jc \fB--pretty\fP dig www.google.com + +$ jc \fB--pretty\fP /proc/meminfo .RE For parser documentation: .RS -$ jc \fB-h\fP \fB--dig\fP +$ jc \fB--help\fP \fB--dig\fP .RE .SH AUTHOR Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/templates/manpage_template b/templates/manpage_template index 03ebcd57..d6a8cc40 100644 --- a/templates/manpage_template +++ b/templates/manpage_template @@ -1,13 +1,26 @@ .TH jc 1 {{ today }} {{ jc.version}} "JSON Convert" .SH NAME -\fBjc\fP \- JSON Convert JSONifies the output of many CLI tools and file-types +\fBjc\fP \- JSON Convert JSONifies the output of many CLI tools, file-types, and strings .SH SYNOPSIS -COMMAND | jc PARSER [OPTIONS] -or "Magic" syntax: +Standard syntax: +.RS +COMMAND | \fBjc\fP [OPTIONS] PARSER + +cat FILE | \fBjc\fP [OPTIONS] PARSER + +echo STRING | \fBjc\fP [OPTIONS] PARSER +.RE + +Magic syntax: + +.RS \fBjc\fP [OPTIONS] COMMAND +\fBjc\fP [OPTIONS] /proc/ +.RE + .SH DESCRIPTION \fBjc\fP JSONifies the output of many CLI tools, file-types, and common strings for easier parsing in scripts. \fBjc\fP accepts piped input from \fBSTDIN\fP and outputs a JSON representation of the previous command's output to \fBSTDOUT\fP. Alternatively, the "Magic" syntax can be used by prepending \fBjc\fP to the command to be converted. Options can be passed to \fBjc\fP immediately before the command is given. (Note: "Magic" syntax does not support shell builtins or command aliases) @@ -277,17 +290,21 @@ If a UTC timezone can be detected in the text of the command output, the timesta .SH EXAMPLES Standard Syntax: .RS -$ dig www.google.com | jc \fB--dig\fP \fB-p\fP +$ dig www.google.com | jc \fB-p\fP \fB--dig\fP + +$ cat /proc/meminfo | jc \fB--pretty\fP \fB--proc\fP .RE Magic Syntax: .RS -$ jc \fB-p\fP dig www.google.com +$ jc \fB--pretty\fP dig www.google.com + +$ jc \fB--pretty\fP /proc/meminfo .RE For parser documentation: .RS -$ jc \fB-h\fP \fB--dig\fP +$ jc \fB--help\fP \fB--dig\fP .RE .SH AUTHOR {{ jc.author }} ({{ jc.author_email }}) diff --git a/templates/readme_template b/templates/readme_template index 6e98f351..9a5c2c1a 100644 --- a/templates/readme_template +++ b/templates/readme_template @@ -133,7 +133,9 @@ on Github. `jc` accepts piped input from `STDIN` and outputs a JSON representation of the previous command's output to `STDOUT`. ```bash -COMMAND | jc PARSER [OPTIONS] +COMMAND | jc [OPTIONS] PARSER +cat FILE | jc [OPTIONS] PARSER +echo STRING | jc [OPTIONS] PARSER ``` Alternatively, the "magic" syntax can be used by prepending `jc` to the command @@ -141,6 +143,7 @@ to be converted. Options can be passed to `jc` immediately before the command is given. (Note: command aliases and shell builtins are not supported) ```bash jc [OPTIONS] COMMAND +jc [OPTIONS] /proc/ ``` The JSON output can be compact (default) or pretty formatted with the `-p` @@ -418,12 +421,12 @@ that case you can suppress the warning message with the `-q` cli option or the macOS: ```bash -cat lsof.out | jc --lsof -q +cat lsof.out | jc -q --lsof ``` or Windows: ```bash -type lsof.out | jc --lsof -q +type lsof.out | jc -q --lsof ``` Tested on: @@ -467,7 +470,7 @@ documentation. ### arp ```bash -arp | jc --arp -p # or: jc -p arp +arp | jc -p --arp # or: jc -p arp ``` ```json [ @@ -506,7 +509,7 @@ cat homes.csv ... ``` ```bash -cat homes.csv | jc --csv -p +cat homes.csv | jc -p --csv ``` ```json [ @@ -547,7 +550,7 @@ cat homes.csv | jc --csv -p ``` ### /etc/hosts file ```bash -cat /etc/hosts | jc --hosts -p +cat /etc/hosts | jc -p --hosts ``` ```json [ @@ -574,7 +577,7 @@ cat /etc/hosts | jc --hosts -p ``` ### ifconfig ```bash -ifconfig | jc --ifconfig -p # or: jc -p ifconfig +ifconfig | jc -p --ifconfig # or: jc -p ifconfig ``` ```json [ @@ -632,7 +635,7 @@ Port = 50022 ForwardX11 = no ``` ```bash -cat example.ini | jc --ini -p +cat example.ini | jc -p --ini ``` ```json { @@ -654,7 +657,7 @@ cat example.ini | jc --ini -p ``` ### ls ```bash -$ ls -l /usr/bin | jc --ls -p # or: jc -p ls -l /usr/bin +$ ls -l /usr/bin | jc -p --ls # or: jc -p ls -l /usr/bin ``` ```json [ @@ -690,7 +693,7 @@ $ ls -l /usr/bin | jc --ls -p # or: jc -p ls -l /usr/bin ``` ### netstat ```bash -netstat -apee | jc --netstat -p # or: jc -p netstat -apee +netstat -apee | jc -p --netstat # or: jc -p netstat -apee ``` ```json [ @@ -778,7 +781,7 @@ netstat -apee | jc --netstat -p # or: jc -p netstat -apee ``` ### /etc/passwd file ```bash -cat /etc/passwd | jc --passwd -p +cat /etc/passwd | jc -p --passwd ``` ```json [ @@ -804,7 +807,7 @@ cat /etc/passwd | jc --passwd -p ``` ### ping ```bash -ping 8.8.8.8 -c 3 | jc --ping -p # or: jc -p ping 8.8.8.8 -c 3 +ping 8.8.8.8 -c 3 | jc -p --ping # or: jc -p ping 8.8.8.8 -c 3 ``` ```json { @@ -857,7 +860,7 @@ ping 8.8.8.8 -c 3 | jc --ping -p # or: jc -p ping 8.8.8.8 -c 3 ``` ### ps ```bash -ps axu | jc --ps -p # or: jc -p ps axu +ps axu | jc -p --ps # or: jc -p ps axu ``` ```json [ @@ -904,7 +907,7 @@ ps axu | jc --ps -p # or: jc -p ps axu ``` ### traceroute ```bash -traceroute -m 2 8.8.8.8 | jc --traceroute -p +traceroute -m 2 8.8.8.8 | jc -p --traceroute # or: jc -p traceroute -m 2 8.8.8.8 ``` ```json @@ -969,7 +972,7 @@ traceroute -m 2 8.8.8.8 | jc --traceroute -p ``` ### uptime ```bash -uptime | jc --uptime -p # or: jc -p uptime +uptime | jc -p --uptime # or: jc -p uptime ``` ```json { @@ -1014,7 +1017,7 @@ cat cd_catalog.xml ... ``` ```bash -cat cd_catalog.xml | jc --xml -p +cat cd_catalog.xml | jc -p --xml ``` ```json { @@ -1066,7 +1069,7 @@ spec: mode: ISTIO_MUTUAL ``` ```bash -cat istio.yaml | jc --yaml -p +cat istio.yaml | jc -p --yaml ``` ```json [ From cfe98506a56f095b59e4d46e48c3a5cdf0cfd0d7 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Wed, 7 Sep 2022 14:25:09 -0700 Subject: [PATCH 021/124] fix help examples --- jc/cli.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/jc/cli.py b/jc/cli.py index cab5581c..6696651e 100644 --- a/jc/cli.py +++ b/jc/cli.py @@ -185,11 +185,11 @@ Usage: Standard syntax: - COMMAND | jc PARSER [OPTIONS] + COMMAND | jc [OPTIONS] PARSER - cat FILE | jc PARSER [OPTIONS] + cat FILE | jc [OPTIONS] PARSER - echo STRING | jc PARSER [OPTIONS] + echo STRING | jc [OPTIONS] PARSER Magic syntax: @@ -203,8 +203,8 @@ Options: {options_string} Examples: Standard Syntax: - $ dig www.google.com | jc --dig --pretty - $ cat /proc/meminfo | jc --proc --pretty + $ dig www.google.com | jc --pretty --dig + $ cat /proc/meminfo | jc --pretty --proc Magic Syntax: $ jc --pretty dig www.google.com From bc9cdadfb06abd57597b5e8dd7a5b8aadb47b7fe Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Wed, 7 Sep 2022 15:23:48 -0700 Subject: [PATCH 022/124] updated schema --- jc/parsers/proc_cpuinfo.py | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/jc/parsers/proc_cpuinfo.py b/jc/parsers/proc_cpuinfo.py index 16c93892..5e826e99 100644 --- a/jc/parsers/proc_cpuinfo.py +++ b/jc/parsers/proc_cpuinfo.py @@ -42,12 +42,10 @@ option. "cache size": string, "cache_size_num": integer, "cache_size_unit": string, - "flags": string, - "flag_list": [ + "flags": [ string ], - "bugs": string, - "bug_list": [ + "bugs": [ string ], "bogomips": float, @@ -78,8 +76,6 @@ Examples: "fpu_exception": true, "cpuid level": 22, "wp": true, - "flags": "fpu vme de pse tsc msr pae mce cx8 apic sep mtrr ...", - "bugs": "cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass ...", "bogomips": 4800.0, "clflush size": 64, "cache_alignment": 64, @@ -89,7 +85,7 @@ Examples: "address_size_virtual": 48, "cache_size_num": 6144, "cache_size_unit": "KB", - "flag_list": [ + "flags": [ "fpu", "vme", "de", @@ -173,7 +169,7 @@ Examples: "flush_l1d", "arch_capabilities" ], - "bug_list": [ + "bugs": [ "cpu_meltdown", "spectre_v1", "spectre_v2", @@ -283,12 +279,10 @@ def _process(proc_data: List[Dict]) -> List[Dict]: entry['cache_size_unit'] = unit if 'flags' in entry: - flag_list = entry['flags'].split() - entry['flag_list'] = flag_list + entry['flags'] = entry['flags'].split() if 'bugs' in entry: - bug_list = entry['bugs'].split() - entry['bug_list'] = bug_list + entry['bugs'] = entry['bugs'].split() return proc_data From 6d6054d1dc63e51fe797ea9e596ae772d0748424 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Thu, 8 Sep 2022 16:52:26 -0700 Subject: [PATCH 023/124] update compatibility --- jc/parsers/lsof.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jc/parsers/lsof.py b/jc/parsers/lsof.py index ef14cd56..ac167fd0 100644 --- a/jc/parsers/lsof.py +++ b/jc/parsers/lsof.py @@ -124,7 +124,7 @@ class info(): description = '`lsof` command parser' author = 'Kelly Brazil' author_email = 'kellyjonbrazil@gmail.com' - compatible = ['linux'] + compatible = ['linux', 'darwin', 'aix', 'freebsd'] magic_commands = ['lsof'] From 0a89652ae5a9be7d6d55a3a051ea6a4dd8d86481 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Thu, 8 Sep 2022 16:53:26 -0700 Subject: [PATCH 024/124] doc update --- docs/parsers/lsof.md | 2 +- docs/parsers/proc_cpuinfo.md | 12 ++++-------- man/jc.1 | 2 +- 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/docs/parsers/lsof.md b/docs/parsers/lsof.md index 6a0f7945..2fbdc0af 100644 --- a/docs/parsers/lsof.md +++ b/docs/parsers/lsof.md @@ -140,6 +140,6 @@ Returns: List of Dictionaries. Raw or processed structured data. ### Parser Information -Compatibility: linux +Compatibility: linux, darwin, aix, freebsd Version 1.6 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/docs/parsers/proc_cpuinfo.md b/docs/parsers/proc_cpuinfo.md index 39e39643..0c24ddc7 100644 --- a/docs/parsers/proc_cpuinfo.md +++ b/docs/parsers/proc_cpuinfo.md @@ -47,12 +47,10 @@ option. "cache size": string, "cache_size_num": integer, "cache_size_unit": string, - "flags": string, - "flag_list": [ + "flags": [ string ], - "bugs": string, - "bug_list": [ + "bugs": [ string ], "bogomips": float, @@ -83,8 +81,6 @@ Examples: "fpu_exception": true, "cpuid level": 22, "wp": true, - "flags": "fpu vme de pse tsc msr pae mce cx8 apic sep mtrr ...", - "bugs": "cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass ...", "bogomips": 4800.0, "clflush size": 64, "cache_alignment": 64, @@ -94,7 +90,7 @@ Examples: "address_size_virtual": 48, "cache_size_num": 6144, "cache_size_unit": "KB", - "flag_list": [ + "flags": [ "fpu", "vme", "de", @@ -178,7 +174,7 @@ Examples: "flush_l1d", "arch_capabilities" ], - "bug_list": [ + "bugs": [ "cpu_meltdown", "spectre_v1", "spectre_v2", diff --git a/man/jc.1 b/man/jc.1 index 0cbd86e9..3a70c413 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -1,4 +1,4 @@ -.TH jc 1 2022-09-07 1.21.2 "JSON Convert" +.TH jc 1 2022-09-08 1.21.2 "JSON Convert" .SH NAME \fBjc\fP \- JSON Convert JSONifies the output of many CLI tools, file-types, and strings .SH SYNOPSIS From 8a239b8f9c4e8931983e5f75aed3925677633283 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Fri, 9 Sep 2022 14:33:12 -0700 Subject: [PATCH 025/124] add proc-diskstats parser --- docs/parsers/proc_diskstats.md | 202 +++++++++++++++++++++++++ jc/lib.py | 1 + jc/parsers/proc_diskstats.py | 269 +++++++++++++++++++++++++++++++++ man/jc.1 | 7 +- 4 files changed, 478 insertions(+), 1 deletion(-) create mode 100644 docs/parsers/proc_diskstats.md create mode 100644 jc/parsers/proc_diskstats.py diff --git a/docs/parsers/proc_diskstats.md b/docs/parsers/proc_diskstats.md new file mode 100644 index 00000000..5273814a --- /dev/null +++ b/docs/parsers/proc_diskstats.md @@ -0,0 +1,202 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_diskstats + +jc - JSON Convert `/proc/diskstats` file parser + +Usage (cli): + + $ cat /proc/diskstats | jc --proc + +or + + $ jc /proc/diskstats + +or + + $ cat /proc/diskstats | jc --proc-diskstats + +Usage (module): + + import jc + result = jc.parse('proc', proc_diskstats_file) + +or + + import jc + result = jc.parse('proc_diskstats', proc_diskstats_file) + +Schema: + + [ + { + "maj": integer, + "min": integer, + "device": string, + "reads_completed": integer, + "reads_merged": integer, + "sectors_read": integer, + "read_time_ms": integer, + "writes_completed": integer, + "writes_merged": integer, + "sectors_written": integer, + "write_time_ms": integer, + "io_in_progress": integer, + "io_time_ms": integer, + "weighted_io_time_ms": integer, + "discards_completed_successfully": integer, + "discards_merged": integer, + "sectors_discarded": integer, + "discarding_time_ms": integer, + "flush_requests_completed_successfully": integer, + "flushing_time_ms": integer + } + ] + +Examples: + + $ cat /proc/diskstats | jc --proc -p + [ + { + "maj": 7, + "min": 0, + "device": "loop0", + "reads_completed": 48, + "reads_merged": 0, + "sectors_read": 718, + "read_time_ms": 19, + "writes_completed": 0, + "writes_merged": 0, + "sectors_written": 0, + "write_time_ms": 0, + "io_in_progress": 0, + "io_time_ms": 36, + "weighted_io_time_ms": 19, + "discards_completed_successfully": 0, + "discards_merged": 0, + "sectors_discarded": 0, + "discarding_time_ms": 0, + "flush_requests_completed_successfully": 0, + "flushing_time_ms": 0 + }, + { + "maj": 7, + "min": 1, + "device": "loop1", + "reads_completed": 41, + "reads_merged": 0, + "sectors_read": 688, + "read_time_ms": 17, + "writes_completed": 0, + "writes_merged": 0, + "sectors_written": 0, + "write_time_ms": 0, + "io_in_progress": 0, + "io_time_ms": 28, + "weighted_io_time_ms": 17, + "discards_completed_successfully": 0, + "discards_merged": 0, + "sectors_discarded": 0, + "discarding_time_ms": 0, + "flush_requests_completed_successfully": 0, + "flushing_time_ms": 0 + }, + ... + ] + + $ proc_diskstats | jc --proc_diskstats -p -r + [ + { + "maj": "7", + "min": "0", + "device": "loop0", + "reads_completed": "48", + "reads_merged": "0", + "sectors_read": "718", + "read_time_ms": "19", + "writes_completed": "0", + "writes_merged": "0", + "sectors_written": "0", + "write_time_ms": "0", + "io_in_progress": "0", + "io_time_ms": "36", + "weighted_io_time_ms": "19", + "discards_completed_successfully": "0", + "discards_merged": "0", + "sectors_discarded": "0", + "discarding_time_ms": "0", + "flush_requests_completed_successfully": "0", + "flushing_time_ms": "0" + }, + { + "maj": "7", + "min": "1", + "device": "loop1", + "reads_completed": "41", + "reads_merged": "0", + "sectors_read": "688", + "read_time_ms": "17", + "writes_completed": "0", + "writes_merged": "0", + "sectors_written": "0", + "write_time_ms": "0", + "io_in_progress": "0", + "io_time_ms": "28", + "weighted_io_time_ms": "17", + "discards_completed_successfully": "0", + "discards_merged": "0", + "sectors_discarded": "0", + "discarding_time_ms": "0", + "flush_requests_completed_successfully": "0", + "flushing_time_ms": "0" + }, + { + "maj": "7", + "min": "2", + "device": "loop2", + "reads_completed": "119", + "reads_merged": "0", + "sectors_read": "2956", + "read_time_ms": "18", + "writes_completed": "0", + "writes_merged": "0", + "sectors_written": "0", + "write_time_ms": "0", + "io_in_progress": "0", + "io_time_ms": "56", + "weighted_io_time_ms": "18", + "discards_completed_successfully": "0", + "discards_merged": "0", + "sectors_discarded": "0", + "discarding_time_ms": "0", + "flush_requests_completed_successfully": "0", + "flushing_time_ms": "0" + }, + ... + ] + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict] +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + List of Dictionaries. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/lib.py b/jc/lib.py index 625bdcea..d7eda470 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -90,6 +90,7 @@ parsers = [ 'proc-cpuinfo', 'proc-crypto', 'proc-devices', + 'proc-diskstats', 'proc-meminfo', 'proc-modules', 'ps', diff --git a/jc/parsers/proc_diskstats.py b/jc/parsers/proc_diskstats.py new file mode 100644 index 00000000..630c8def --- /dev/null +++ b/jc/parsers/proc_diskstats.py @@ -0,0 +1,269 @@ +"""jc - JSON Convert `/proc/diskstats` file parser + +Usage (cli): + + $ cat /proc/diskstats | jc --proc + +or + + $ jc /proc/diskstats + +or + + $ cat /proc/diskstats | jc --proc-diskstats + +Usage (module): + + import jc + result = jc.parse('proc', proc_diskstats_file) + +or + + import jc + result = jc.parse('proc_diskstats', proc_diskstats_file) + +Schema: + + [ + { + "maj": integer, + "min": integer, + "device": string, + "reads_completed": integer, + "reads_merged": integer, + "sectors_read": integer, + "read_time_ms": integer, + "writes_completed": integer, + "writes_merged": integer, + "sectors_written": integer, + "write_time_ms": integer, + "io_in_progress": integer, + "io_time_ms": integer, + "weighted_io_time_ms": integer, + "discards_completed_successfully": integer, + "discards_merged": integer, + "sectors_discarded": integer, + "discarding_time_ms": integer, + "flush_requests_completed_successfully": integer, + "flushing_time_ms": integer + } + ] + +Examples: + + $ cat /proc/diskstats | jc --proc -p + [ + { + "maj": 7, + "min": 0, + "device": "loop0", + "reads_completed": 48, + "reads_merged": 0, + "sectors_read": 718, + "read_time_ms": 19, + "writes_completed": 0, + "writes_merged": 0, + "sectors_written": 0, + "write_time_ms": 0, + "io_in_progress": 0, + "io_time_ms": 36, + "weighted_io_time_ms": 19, + "discards_completed_successfully": 0, + "discards_merged": 0, + "sectors_discarded": 0, + "discarding_time_ms": 0, + "flush_requests_completed_successfully": 0, + "flushing_time_ms": 0 + }, + { + "maj": 7, + "min": 1, + "device": "loop1", + "reads_completed": 41, + "reads_merged": 0, + "sectors_read": 688, + "read_time_ms": 17, + "writes_completed": 0, + "writes_merged": 0, + "sectors_written": 0, + "write_time_ms": 0, + "io_in_progress": 0, + "io_time_ms": 28, + "weighted_io_time_ms": 17, + "discards_completed_successfully": 0, + "discards_merged": 0, + "sectors_discarded": 0, + "discarding_time_ms": 0, + "flush_requests_completed_successfully": 0, + "flushing_time_ms": 0 + }, + ... + ] + + $ proc_diskstats | jc --proc_diskstats -p -r + [ + { + "maj": "7", + "min": "0", + "device": "loop0", + "reads_completed": "48", + "reads_merged": "0", + "sectors_read": "718", + "read_time_ms": "19", + "writes_completed": "0", + "writes_merged": "0", + "sectors_written": "0", + "write_time_ms": "0", + "io_in_progress": "0", + "io_time_ms": "36", + "weighted_io_time_ms": "19", + "discards_completed_successfully": "0", + "discards_merged": "0", + "sectors_discarded": "0", + "discarding_time_ms": "0", + "flush_requests_completed_successfully": "0", + "flushing_time_ms": "0" + }, + { + "maj": "7", + "min": "1", + "device": "loop1", + "reads_completed": "41", + "reads_merged": "0", + "sectors_read": "688", + "read_time_ms": "17", + "writes_completed": "0", + "writes_merged": "0", + "sectors_written": "0", + "write_time_ms": "0", + "io_in_progress": "0", + "io_time_ms": "28", + "weighted_io_time_ms": "17", + "discards_completed_successfully": "0", + "discards_merged": "0", + "sectors_discarded": "0", + "discarding_time_ms": "0", + "flush_requests_completed_successfully": "0", + "flushing_time_ms": "0" + }, + { + "maj": "7", + "min": "2", + "device": "loop2", + "reads_completed": "119", + "reads_merged": "0", + "sectors_read": "2956", + "read_time_ms": "18", + "writes_completed": "0", + "writes_merged": "0", + "sectors_written": "0", + "write_time_ms": "0", + "io_in_progress": "0", + "io_time_ms": "56", + "weighted_io_time_ms": "18", + "discards_completed_successfully": "0", + "discards_merged": "0", + "sectors_discarded": "0", + "discarding_time_ms": "0", + "flush_requests_completed_successfully": "0", + "flushing_time_ms": "0" + }, + ... + ] +""" +from typing import List, Dict +import jc.utils + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc/diskstats` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + hidden = True + + +__version__ = info.version + + +def _process(proc_data: List[Dict]) -> List[Dict]: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (List of Dictionaries) raw structured data to process + + Returns: + + List of Dictionaries. Structured to conform to the schema. + """ + for entry in proc_data: + for key in entry: + if key != 'device': + entry[key] = int(entry[key]) + + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> List[Dict]: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + List of Dictionaries. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: List = [] + + if jc.utils.has_data(data): + + for line in filter(None, data.splitlines()): + + split_line = line.split() + + output_line = { + 'maj': split_line[0], + 'min': split_line[1], + 'device': split_line[2], + 'reads_completed': split_line[3], + 'reads_merged': split_line[4], + 'sectors_read': split_line[5], + 'read_time_ms': split_line[6], + 'writes_completed': split_line[7], + 'writes_merged': split_line[8], + 'sectors_written': split_line[9], + 'write_time_ms': split_line[10], + 'io_in_progress': split_line[11], + 'io_time_ms': split_line[12], + 'weighted_io_time_ms': split_line[13] + } + + if len(split_line) > 14: + output_line['discards_completed_successfully'] = split_line[14] + output_line['discards_merged'] = split_line[15] + output_line['sectors_discarded'] = split_line[16] + output_line['discarding_time_ms'] = split_line[17] + + if len(split_line) > 18: + output_line['flush_requests_completed_successfully'] = split_line[18] + output_line['flushing_time_ms'] = split_line[19] + + raw_output.append(output_line) + + return raw_output if raw else _process(raw_output) diff --git a/man/jc.1 b/man/jc.1 index 3a70c413..4adf2055 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -1,4 +1,4 @@ -.TH jc 1 2022-09-08 1.21.2 "JSON Convert" +.TH jc 1 2022-09-09 1.21.2 "JSON Convert" .SH NAME \fBjc\fP \- JSON Convert JSONifies the output of many CLI tools, file-types, and strings .SH SYNOPSIS @@ -435,6 +435,11 @@ PLIST file parser \fB--proc-devices\fP `/proc/devices` file parser +.TP +.B +\fB--proc-diskstats\fP +`/proc/diskstats` file parser + .TP .B \fB--proc-meminfo\fP From 23d5204634104cff857a5b04077a58102c1ca041 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Fri, 9 Sep 2022 15:07:44 -0700 Subject: [PATCH 026/124] simplify parser by using simple_table_parse --- jc/parsers/proc_diskstats.py | 43 +++++++++--------------------------- 1 file changed, 11 insertions(+), 32 deletions(-) diff --git a/jc/parsers/proc_diskstats.py b/jc/parsers/proc_diskstats.py index 630c8def..309bb609 100644 --- a/jc/parsers/proc_diskstats.py +++ b/jc/parsers/proc_diskstats.py @@ -173,6 +173,7 @@ Examples: """ from typing import List, Dict import jc.utils +from jc.parsers.universal import simple_table_parse class info(): @@ -233,37 +234,15 @@ def parse( if jc.utils.has_data(data): - for line in filter(None, data.splitlines()): - - split_line = line.split() - - output_line = { - 'maj': split_line[0], - 'min': split_line[1], - 'device': split_line[2], - 'reads_completed': split_line[3], - 'reads_merged': split_line[4], - 'sectors_read': split_line[5], - 'read_time_ms': split_line[6], - 'writes_completed': split_line[7], - 'writes_merged': split_line[8], - 'sectors_written': split_line[9], - 'write_time_ms': split_line[10], - 'io_in_progress': split_line[11], - 'io_time_ms': split_line[12], - 'weighted_io_time_ms': split_line[13] - } - - if len(split_line) > 14: - output_line['discards_completed_successfully'] = split_line[14] - output_line['discards_merged'] = split_line[15] - output_line['sectors_discarded'] = split_line[16] - output_line['discarding_time_ms'] = split_line[17] - - if len(split_line) > 18: - output_line['flush_requests_completed_successfully'] = split_line[18] - output_line['flushing_time_ms'] = split_line[19] - - raw_output.append(output_line) + header = ( + 'maj min device reads_completed reads_merged sectors_read read_time_ms ' + 'writes_completed writes_merged sectors_written write_time_ms io_in_progress ' + 'io_time_ms weighted_io_time_ms discards_completed_successfully discards_merged ' + 'sectors_discarded discarding_time_ms flush_requests_completed_successfully ' + 'flushing_time_ms\n' + ) + data = header + data + cleandata = filter(None, data.splitlines()) + raw_output = simple_table_parse(cleandata) return raw_output if raw else _process(raw_output) From 65d647bc0a32ce09a145521c412517bffbc24b84 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Fri, 9 Sep 2022 15:20:38 -0700 Subject: [PATCH 027/124] tighten up diskstats signature --- jc/parsers/proc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jc/parsers/proc.py b/jc/parsers/proc.py index a4309329..69c5d550 100644 --- a/jc/parsers/proc.py +++ b/jc/parsers/proc.py @@ -157,7 +157,7 @@ def parse( cpuinfo_p = re.compile(r'^processor\t+: \d+.*bogomips\t+: \d+.\d\d\n', re.DOTALL) crypto_p = re.compile(r'^name\s+:.*\ndriver\s+:.*\nmodule\s+:.*\n') devices_p = re.compile(r'^Character devices:\n\s+\d+ .*\n') - diskstats_p = re.compile(r'^\s*\d+\s+\d\s\w+\s(?:\d+\s){16}\d\n') + diskstats_p = re.compile(r'^\s*\d+\s+\d\s\w+\s(?:\d+\s){10,16}\d+\n') filesystems_p = re.compile(r'^(?:(?:nodev\t|\t)\w+\n){3}') interrupts_p = re.compile(r'^\s+(?:CPU\d+ +)+\n\s*\d+:\s+\d+') iomem_p = re.compile(r'^00000000-[0-9a-f]{8} : .*\n[0-9a-f]{8}-[0-9a-f]{8} : ') From 993fcd989b226b2e27e32bb207c2b2387859ce33 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Fri, 9 Sep 2022 16:28:34 -0700 Subject: [PATCH 028/124] add driver_rtc parser --- docs/parsers/proc_driver_rtc.md | 126 +++++++++++++++++++++++ jc/lib.py | 1 + jc/parsers/proc_driver_rtc.py | 173 ++++++++++++++++++++++++++++++++ man/jc.1 | 5 + 4 files changed, 305 insertions(+) create mode 100644 docs/parsers/proc_driver_rtc.md create mode 100644 jc/parsers/proc_driver_rtc.py diff --git a/docs/parsers/proc_driver_rtc.md b/docs/parsers/proc_driver_rtc.md new file mode 100644 index 00000000..199f2396 --- /dev/null +++ b/docs/parsers/proc_driver_rtc.md @@ -0,0 +1,126 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_driver\_rtc + +jc - JSON Convert `/proc/driver-rtc` file parser + +Usage (cli): + + $ cat /proc/driver_rtc | jc --proc + +or + + $ jc /proc/driver_rtc + +or + + $ cat /proc/driver_rtc | jc --proc-driver-rtc + +Usage (module): + + import jc + result = jc.parse('proc', proc_driver_rtc_file) + +or + + import jc + result = jc.parse('proc_driver_rtc', proc_driver_rtc_file) + +Schema: + +"yes" and "no" values are converted to true/false. Integer conversions are +attempted. If you do not want this behavior, then use `--raw` (CLI) or +`raw=True` (module). + + { + "rtc_time": string, + "rtc_date": string, + "alrm_time": string, + "alrm_date": string, + "alarm_IRQ": boolean, + "alrm_pending": boolean, + "update IRQ enabled": boolean, + "periodic IRQ enabled": boolean, + "periodic IRQ frequency": integer, + "max user IRQ frequency": integer, + "24hr": boolean, + "periodic_IRQ": boolean, + "update_IRQ": boolean, + "HPET_emulated": boolean, + "BCD": boolean, + "DST_enable": boolean, + "periodic_freq": integer, + "batt_status": string + } + +Examples: + + $ cat /proc/driver_rtc | jc --proc -p + { + "rtc_time": "16:09:21", + "rtc_date": "2022-09-03", + "alrm_time": "00:00:00", + "alrm_date": "2022-09-03", + "alarm_IRQ": false, + "alrm_pending": false, + "update IRQ enabled": false, + "periodic IRQ enabled": false, + "periodic IRQ frequency": 1024, + "max user IRQ frequency": 64, + "24hr": true, + "periodic_IRQ": false, + "update_IRQ": false, + "HPET_emulated": true, + "BCD": true, + "DST_enable": false, + "periodic_freq": 1024, + "batt_status": "okay" + } + + $ cat /proc/driver_rtc | jc --proc -p -r + { + "rtc_time": "16:09:21", + "rtc_date": "2022-09-03", + "alrm_time": "00:00:00", + "alrm_date": "2022-09-03", + "alarm_IRQ": "no", + "alrm_pending": "no", + "update IRQ enabled": "no", + "periodic IRQ enabled": "no", + "periodic IRQ frequency": "1024", + "max user IRQ frequency": "64", + "24hr": "yes", + "periodic_IRQ": "no", + "update_IRQ": "no", + "HPET_emulated": "yes", + "BCD": "yes", + "DST_enable": "no", + "periodic_freq": "1024", + "batt_status": "okay" + } + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> Dict +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + Dictionary. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/lib.py b/jc/lib.py index d7eda470..fe5d7d2c 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -91,6 +91,7 @@ parsers = [ 'proc-crypto', 'proc-devices', 'proc-diskstats', + 'proc-driver-rtc', 'proc-meminfo', 'proc-modules', 'ps', diff --git a/jc/parsers/proc_driver_rtc.py b/jc/parsers/proc_driver_rtc.py new file mode 100644 index 00000000..54c1066f --- /dev/null +++ b/jc/parsers/proc_driver_rtc.py @@ -0,0 +1,173 @@ +"""jc - JSON Convert `/proc/driver-rtc` file parser + +Usage (cli): + + $ cat /proc/driver_rtc | jc --proc + +or + + $ jc /proc/driver_rtc + +or + + $ cat /proc/driver_rtc | jc --proc-driver-rtc + +Usage (module): + + import jc + result = jc.parse('proc', proc_driver_rtc_file) + +or + + import jc + result = jc.parse('proc_driver_rtc', proc_driver_rtc_file) + +Schema: + +"yes" and "no" values are converted to true/false. Integer conversions are +attempted. If you do not want this behavior, then use `--raw` (CLI) or +`raw=True` (module). + + { + "rtc_time": string, + "rtc_date": string, + "alrm_time": string, + "alrm_date": string, + "alarm_IRQ": boolean, + "alrm_pending": boolean, + "update IRQ enabled": boolean, + "periodic IRQ enabled": boolean, + "periodic IRQ frequency": integer, + "max user IRQ frequency": integer, + "24hr": boolean, + "periodic_IRQ": boolean, + "update_IRQ": boolean, + "HPET_emulated": boolean, + "BCD": boolean, + "DST_enable": boolean, + "periodic_freq": integer, + "batt_status": string + } + +Examples: + + $ cat /proc/driver_rtc | jc --proc -p + { + "rtc_time": "16:09:21", + "rtc_date": "2022-09-03", + "alrm_time": "00:00:00", + "alrm_date": "2022-09-03", + "alarm_IRQ": false, + "alrm_pending": false, + "update IRQ enabled": false, + "periodic IRQ enabled": false, + "periodic IRQ frequency": 1024, + "max user IRQ frequency": 64, + "24hr": true, + "periodic_IRQ": false, + "update_IRQ": false, + "HPET_emulated": true, + "BCD": true, + "DST_enable": false, + "periodic_freq": 1024, + "batt_status": "okay" + } + + $ cat /proc/driver_rtc | jc --proc -p -r + { + "rtc_time": "16:09:21", + "rtc_date": "2022-09-03", + "alrm_time": "00:00:00", + "alrm_date": "2022-09-03", + "alarm_IRQ": "no", + "alrm_pending": "no", + "update IRQ enabled": "no", + "periodic IRQ enabled": "no", + "periodic IRQ frequency": "1024", + "max user IRQ frequency": "64", + "24hr": "yes", + "periodic_IRQ": "no", + "update_IRQ": "no", + "HPET_emulated": "yes", + "BCD": "yes", + "DST_enable": "no", + "periodic_freq": "1024", + "batt_status": "okay" + } +""" +from typing import Dict +import jc.utils + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc/driver_rtc` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + hidden = True + + +__version__ = info.version + + +def _process(proc_data: Dict) -> Dict: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (Dictionary) raw structured data to process + + Returns: + + Dictionary. Structured to conform to the schema. + """ + for key, val in proc_data.items(): + try: + proc_data[key] = int(val) + except: + pass + + if val == 'yes': + proc_data[key] = True + + if val == 'no': + proc_data[key] = False + + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> Dict: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + Dictionary. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: Dict = {} + + if jc.utils.has_data(data): + + for line in filter(None, data.splitlines()): + split_line = line.split(':', maxsplit=1) + key = split_line[0].strip() + val = split_line[1].rsplit(maxsplit=1)[0] + raw_output[key] = val + + return raw_output if raw else _process(raw_output) diff --git a/man/jc.1 b/man/jc.1 index 4adf2055..bb13036b 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -440,6 +440,11 @@ PLIST file parser \fB--proc-diskstats\fP `/proc/diskstats` file parser +.TP +.B +\fB--proc-driver-rtc\fP +`/proc/driver_rtc` file parser + .TP .B \fB--proc-meminfo\fP From 0508256d280cb882de0d535cc6efae14a0aa8439 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Fri, 9 Sep 2022 16:32:33 -0700 Subject: [PATCH 029/124] formatting --- docs/parsers/proc_driver_rtc.md | 2 +- jc/parsers/proc_driver_rtc.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/parsers/proc_driver_rtc.md b/docs/parsers/proc_driver_rtc.md index 199f2396..26c7193f 100644 --- a/docs/parsers/proc_driver_rtc.md +++ b/docs/parsers/proc_driver_rtc.md @@ -3,7 +3,7 @@ # jc.parsers.proc\_driver\_rtc -jc - JSON Convert `/proc/driver-rtc` file parser +jc - JSON Convert `/proc/driver_rtc` file parser Usage (cli): diff --git a/jc/parsers/proc_driver_rtc.py b/jc/parsers/proc_driver_rtc.py index 54c1066f..6b384b42 100644 --- a/jc/parsers/proc_driver_rtc.py +++ b/jc/parsers/proc_driver_rtc.py @@ -1,4 +1,4 @@ -"""jc - JSON Convert `/proc/driver-rtc` file parser +"""jc - JSON Convert `/proc/driver_rtc` file parser Usage (cli): From e1f6007dea6647115e58c6f7965b5d632611182b Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Fri, 9 Sep 2022 17:03:51 -0700 Subject: [PATCH 030/124] add proc-filesystems parser --- docs/parsers/proc_filesystems.md | 81 ++++++++++++++++++++ jc/lib.py | 1 + jc/parsers/proc_filesystems.py | 122 +++++++++++++++++++++++++++++++ man/jc.1 | 5 ++ 4 files changed, 209 insertions(+) create mode 100644 docs/parsers/proc_filesystems.md create mode 100644 jc/parsers/proc_filesystems.py diff --git a/docs/parsers/proc_filesystems.md b/docs/parsers/proc_filesystems.md new file mode 100644 index 00000000..b4b8b443 --- /dev/null +++ b/docs/parsers/proc_filesystems.md @@ -0,0 +1,81 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_filesystems + +jc - JSON Convert `/proc/filesystems` file parser + +Usage (cli): + + $ cat /proc/filesystems | jc --proc + +or + + $ jc /proc/filesystems + +or + + $ cat /proc/filesystems | jc --proc-filesystems + +Usage (module): + + import jc + result = jc.parse('proc', proc_filesystems_file) + +or + + import jc + result = jc.parse('proc_filesystems', proc_filesystems_file) + +Schema: + + [ + { + "filesystem": string, + "nodev": boolean + } + ] + +Examples: + + $ cat /proc/filesystems | jc --proc -p + [ + { + "filesystem": "sysfs", + "nodev": true + }, + { + "filesystem": "tmpfs", + "nodev": true + }, + { + "filesystem": "bdev", + "nodev": true + }, + ... + ] + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict] +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + List of Dictionaries. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/lib.py b/jc/lib.py index fe5d7d2c..f6bbc733 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -92,6 +92,7 @@ parsers = [ 'proc-devices', 'proc-diskstats', 'proc-driver-rtc', + 'proc-filesystems', 'proc-meminfo', 'proc-modules', 'ps', diff --git a/jc/parsers/proc_filesystems.py b/jc/parsers/proc_filesystems.py new file mode 100644 index 00000000..91170de4 --- /dev/null +++ b/jc/parsers/proc_filesystems.py @@ -0,0 +1,122 @@ +"""jc - JSON Convert `/proc/filesystems` file parser + +Usage (cli): + + $ cat /proc/filesystems | jc --proc + +or + + $ jc /proc/filesystems + +or + + $ cat /proc/filesystems | jc --proc-filesystems + +Usage (module): + + import jc + result = jc.parse('proc', proc_filesystems_file) + +or + + import jc + result = jc.parse('proc_filesystems', proc_filesystems_file) + +Schema: + + [ + { + "filesystem": string, + "nodev": boolean + } + ] + +Examples: + + $ cat /proc/filesystems | jc --proc -p + [ + { + "filesystem": "sysfs", + "nodev": true + }, + { + "filesystem": "tmpfs", + "nodev": true + }, + { + "filesystem": "bdev", + "nodev": true + }, + ... + ] +""" +from typing import List, Dict +import jc.utils + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc/filesystems` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + hidden = True + + +__version__ = info.version + + +def _process(proc_data: List[Dict]) -> List[Dict]: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (List of Dictionaries) raw structured data to process + + Returns: + + List of Dictionaries. Structured to conform to the schema. + """ + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> List[Dict]: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + List of Dictionaries. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: List = [] + + if jc.utils.has_data(data): + + for line in filter(None, data.splitlines()): + + split_line = line.split() + output_line = {'filesystem': split_line[-1]} + + if len(split_line) == 2: + output_line['nodev'] = True # type: ignore + else: + output_line['nodev'] = False # type: ignore + + raw_output.append(output_line) + + return raw_output if raw else _process(raw_output) diff --git a/man/jc.1 b/man/jc.1 index bb13036b..23069a54 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -445,6 +445,11 @@ PLIST file parser \fB--proc-driver-rtc\fP `/proc/driver_rtc` file parser +.TP +.B +\fB--proc-filesystems\fP +`/proc/filesystems` file parser + .TP .B \fB--proc-meminfo\fP From 03f0984e1d48a2eb3d302a72b6fd482d16af1202 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Fri, 9 Sep 2022 17:13:43 -0700 Subject: [PATCH 031/124] doc update --- README.md | 9 +++++---- docs/parsers/proc_driver_rtc.md | 4 ++-- jc/cli.py | 2 +- jc/parsers/proc_driver_rtc.py | 4 ++-- man/jc.1 | 2 +- templates/manpage_template | 2 +- templates/readme_template | 9 +++++---- 7 files changed, 17 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index cfb329f6..24bd24c0 100644 --- a/README.md +++ b/README.md @@ -70,7 +70,7 @@ values are converted, and, in some cases, additional semantic context fields are added. To access the raw, pre-processed JSON, use the `-r` cli option or the `raw=True` -function parameter in `parse()`. +function parameter in `parse()` when using `jc` as a python library. Schemas for each parser can be found at the documentation link beside each [**Parser**](#parsers) below. @@ -139,11 +139,12 @@ echo STRING | jc [OPTIONS] PARSER ``` Alternatively, the "magic" syntax can be used by prepending `jc` to the command -to be converted. Options can be passed to `jc` immediately before the command is -given. (Note: command aliases and shell builtins are not supported) +to be converted or in front of the absolute path for Proc files. Options can be +passed to `jc` immediately before the command or Proc file path is given. +(Note: command aliases and shell builtins are not supported) ```bash jc [OPTIONS] COMMAND -jc [OPTIONS] /proc/ +jc [OPTIONS] /proc/ ``` The JSON output can be compact (default) or pretty formatted with the `-p` diff --git a/docs/parsers/proc_driver_rtc.md b/docs/parsers/proc_driver_rtc.md index 26c7193f..05ea5972 100644 --- a/docs/parsers/proc_driver_rtc.md +++ b/docs/parsers/proc_driver_rtc.md @@ -29,8 +29,8 @@ or Schema: -"yes" and "no" values are converted to true/false. Integer conversions are -attempted. If you do not want this behavior, then use `--raw` (CLI) or +"yes" and "no" values are converted to `true`/`false`. Integer conversions +are attempted. If you do not want this behavior, then use `--raw` (cli) or `raw=True` (module). { diff --git a/jc/cli.py b/jc/cli.py index 6696651e..9c35ee95 100644 --- a/jc/cli.py +++ b/jc/cli.py @@ -195,7 +195,7 @@ Usage: jc [OPTIONS] COMMAND - jc [OPTIONS] /proc/ + jc [OPTIONS] /proc/ Parsers: {parsers_string} diff --git a/jc/parsers/proc_driver_rtc.py b/jc/parsers/proc_driver_rtc.py index 6b384b42..2bc40f33 100644 --- a/jc/parsers/proc_driver_rtc.py +++ b/jc/parsers/proc_driver_rtc.py @@ -24,8 +24,8 @@ or Schema: -"yes" and "no" values are converted to true/false. Integer conversions are -attempted. If you do not want this behavior, then use `--raw` (CLI) or +"yes" and "no" values are converted to `true`/`false`. Integer conversions +are attempted. If you do not want this behavior, then use `--raw` (cli) or `raw=True` (module). { diff --git a/man/jc.1 b/man/jc.1 index 23069a54..aa896893 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -18,7 +18,7 @@ Magic syntax: .RS \fBjc\fP [OPTIONS] COMMAND -\fBjc\fP [OPTIONS] /proc/ +\fBjc\fP [OPTIONS] /proc/ .RE .SH DESCRIPTION diff --git a/templates/manpage_template b/templates/manpage_template index d6a8cc40..8854f421 100644 --- a/templates/manpage_template +++ b/templates/manpage_template @@ -18,7 +18,7 @@ Magic syntax: .RS \fBjc\fP [OPTIONS] COMMAND -\fBjc\fP [OPTIONS] /proc/ +\fBjc\fP [OPTIONS] /proc/ .RE .SH DESCRIPTION diff --git a/templates/readme_template b/templates/readme_template index 9a5c2c1a..5f25970a 100644 --- a/templates/readme_template +++ b/templates/readme_template @@ -70,7 +70,7 @@ values are converted, and, in some cases, additional semantic context fields are added. To access the raw, pre-processed JSON, use the `-r` cli option or the `raw=True` -function parameter in `parse()`. +function parameter in `parse()` when using `jc` as a python library. Schemas for each parser can be found at the documentation link beside each [**Parser**](#parsers) below. @@ -139,11 +139,12 @@ echo STRING | jc [OPTIONS] PARSER ``` Alternatively, the "magic" syntax can be used by prepending `jc` to the command -to be converted. Options can be passed to `jc` immediately before the command is -given. (Note: command aliases and shell builtins are not supported) +to be converted or in front of the absolute path for Proc files. Options can be +passed to `jc` immediately before the command or Proc file path is given. +(Note: command aliases and shell builtins are not supported) ```bash jc [OPTIONS] COMMAND -jc [OPTIONS] /proc/ +jc [OPTIONS] /proc/ ``` The JSON output can be compact (default) or pretty formatted with the `-p` From da51b2b5a07716c2d4909a1ca58fe21f9e778bc5 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Mon, 12 Sep 2022 22:43:37 -0700 Subject: [PATCH 032/124] initial proc_interrupts parser --- jc/lib.py | 1 + jc/parsers/proc_interrupts.py | 213 ++++++++++++++++++++++++++++++++++ 2 files changed, 214 insertions(+) create mode 100644 jc/parsers/proc_interrupts.py diff --git a/jc/lib.py b/jc/lib.py index f6bbc733..106052cd 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -93,6 +93,7 @@ parsers = [ 'proc-diskstats', 'proc-driver-rtc', 'proc-filesystems', + 'proc-interrupts', 'proc-meminfo', 'proc-modules', 'ps', diff --git a/jc/parsers/proc_interrupts.py b/jc/parsers/proc_interrupts.py new file mode 100644 index 00000000..11057953 --- /dev/null +++ b/jc/parsers/proc_interrupts.py @@ -0,0 +1,213 @@ +"""jc - JSON Convert `/proc/interrupts` file parser + +Usage (cli): + + $ cat /proc/interrupts | jc --proc + +or + + $ jc /proc/interrupts + +or + + $ cat /proc/interrupts | jc --proc-interrupts + +Usage (module): + + import jc + result = jc.parse('proc', proc_interrupts_file) + +or + + import jc + result = jc.parse('proc_interrupts', proc_interrupts_file) + +Schema: + + [ + { + "module": string, + "size": integer, + "used": integer, + "used_by": [ + string + ], + "status": string, + "location": string + } + ] + +Examples: + + $ cat /proc/interrupts | jc --proc -p + [ + { + "module": "binfmt_misc", + "size": 24576, + "used": 1, + "used_by": [], + "status": "Live", + "location": "0xffffffffc0ab4000" + }, + { + "module": "vsock_loopback", + "size": 16384, + "used": 0, + "used_by": [], + "status": "Live", + "location": "0xffffffffc0a14000" + }, + { + "module": "vmw_vsock_virtio_transport_common", + "size": 36864, + "used": 1, + "used_by": [ + "vsock_loopback" + ], + "status": "Live", + "location": "0xffffffffc0a03000" + }, + ... + ] + + $ proc_interrupts | jc --proc_interrupts -p -r + [ + { + "module": "binfmt_misc", + "size": "24576", + "used": "1", + "used_by": [], + "status": "Live", + "location": "0xffffffffc0ab4000" + }, + { + "module": "vsock_loopback", + "size": "16384", + "used": "0", + "used_by": [], + "status": "Live", + "location": "0xffffffffc0a14000" + }, + { + "module": "vmw_vsock_virtio_transport_common", + "size": "36864", + "used": "1", + "used_by": [ + "vsock_loopback" + ], + "status": "Live", + "location": "0xffffffffc0a03000" + }, + ... + ] +""" +from typing import List, Dict +import jc.utils + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc/interrupts` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + hidden = True + + +__version__ = info.version + + +def _process(proc_data: List[Dict]) -> List[Dict]: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (List of Dictionaries) raw structured data to process + + Returns: + + List of Dictionaries. Structured to conform to the schema. + """ + int_list = {'size', 'used'} + + for entry in proc_data: + for key in entry: + if key in int_list: + entry[key] = jc.utils.convert_to_int(entry[key]) + + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> List[Dict]: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + List of Dictionaries. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: List = [] + + if jc.utils.has_data(data): + data_lines = data.splitlines() + + # get the number of cpus + cpu_num = len(data_lines[0].split()) + + for line in filter(None, data_lines): + + # skip non-data lines + if not ':' in line: + continue + + # process data lines + split_line = line.split() + irq = split_line.pop(0)[:-1] + + interrupts = [] + if irq == 'ERR' or irq == 'MIS': + interrupts.extend(split_line) + + elif irq.isdigit(): + for _ in range(cpu_num): + interrupts.append(split_line.pop(0)) + + interrupt_type = split_line.pop(0) + interrupt_info = split_line + + else: + for _ in range(cpu_num): + interrupts.append(split_line.pop(0)) + + interrupt_type = ' '.join(split_line) + interrupt_info = [] + + + print(f'{cpu_num=}, {irq=}, {interrupts=}, {interrupt_type=}, {interrupt_info=}') + + raw_output.append( + { + 'irq': irq, + 'cpu_num': cpu_num, + 'interrupts': interrupts, + 'interrupt_type': interrupt_type, + 'interrupt_info': interrupt_info or None + } + ) + + return raw_output if raw else _process(raw_output) From de6307dc382406d2294e9f2920b8231bd79d7345 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Mon, 12 Sep 2022 22:59:14 -0700 Subject: [PATCH 033/124] remove debug print --- jc/parsers/proc_interrupts.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/jc/parsers/proc_interrupts.py b/jc/parsers/proc_interrupts.py index 11057953..0ba288c2 100644 --- a/jc/parsers/proc_interrupts.py +++ b/jc/parsers/proc_interrupts.py @@ -197,9 +197,6 @@ def parse( interrupt_type = ' '.join(split_line) interrupt_info = [] - - print(f'{cpu_num=}, {irq=}, {interrupts=}, {interrupt_type=}, {interrupt_info=}') - raw_output.append( { 'irq': irq, From cb684fa6de33caa3cb45a56ddcf43a37865b3962 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Tue, 13 Sep 2022 13:42:06 -0700 Subject: [PATCH 034/124] update schema and docs --- docs/parsers/proc_interrupts.md | 133 ++++++++++++++++++++++++++++++++ jc/parsers/proc_interrupts.py | 121 ++++++++++++++--------------- man/jc.1 | 7 +- 3 files changed, 198 insertions(+), 63 deletions(-) create mode 100644 docs/parsers/proc_interrupts.md diff --git a/docs/parsers/proc_interrupts.md b/docs/parsers/proc_interrupts.md new file mode 100644 index 00000000..412449eb --- /dev/null +++ b/docs/parsers/proc_interrupts.md @@ -0,0 +1,133 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_interrupts + +jc - JSON Convert `/proc/interrupts` file parser + +Usage (cli): + + $ cat /proc/interrupts | jc --proc + +or + + $ jc /proc/interrupts + +or + + $ cat /proc/interrupts | jc --proc-interrupts + +Usage (module): + + import jc + result = jc.parse('proc', proc_interrupts_file) + +or + + import jc + result = jc.parse('proc_interrupts', proc_interrupts_file) + +Schema: + + [ + { + "irq": string, + "cpu_num": integer, + "interrupts": [ + integer + ], + "type": string, + "device": [ + string + ] + } + ] + +Examples: + + $ cat /proc/interrupts | jc --proc -p + [ + { + "irq": "0", + "cpu_num": 2, + "interrupts": [ + 18, + 0 + ], + "type": "IO-APIC", + "device": [ + "2-edge", + "timer" + ] + }, + { + "irq": "1", + "cpu_num": 2, + "interrupts": [ + 0, + 73 + ], + "type": "IO-APIC", + "device": [ + "1-edge", + "i8042" + ] + }, + ... + ] + + $ proc_interrupts | jc --proc_interrupts -p -r + [ + { + "irq": "0", + "cpu_num": 2, + "interrupts": [ + "18", + "0" + ], + "type": "IO-APIC", + "device": [ + "2-edge", + "timer" + ] + }, + { + "irq": "1", + "cpu_num": 2, + "interrupts": [ + "0", + "73" + ], + "type": "IO-APIC", + "device": [ + "1-edge", + "i8042" + ] + }, + ... + ] + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict] +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + List of Dictionaries. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/parsers/proc_interrupts.py b/jc/parsers/proc_interrupts.py index 0ba288c2..76b76fe3 100644 --- a/jc/parsers/proc_interrupts.py +++ b/jc/parsers/proc_interrupts.py @@ -26,14 +26,15 @@ Schema: [ { - "module": string, - "size": integer, - "used": integer, - "used_by": [ - string + "irq": string, + "cpu_num": integer, + "interrupts": [ + integer ], - "status": string, - "location": string + "type": string, + "device": [ + string + ] } ] @@ -42,30 +43,30 @@ Examples: $ cat /proc/interrupts | jc --proc -p [ { - "module": "binfmt_misc", - "size": 24576, - "used": 1, - "used_by": [], - "status": "Live", - "location": "0xffffffffc0ab4000" - }, - { - "module": "vsock_loopback", - "size": 16384, - "used": 0, - "used_by": [], - "status": "Live", - "location": "0xffffffffc0a14000" - }, - { - "module": "vmw_vsock_virtio_transport_common", - "size": 36864, - "used": 1, - "used_by": [ - "vsock_loopback" + "irq": "0", + "cpu_num": 2, + "interrupts": [ + 18, + 0 ], - "status": "Live", - "location": "0xffffffffc0a03000" + "type": "IO-APIC", + "device": [ + "2-edge", + "timer" + ] + }, + { + "irq": "1", + "cpu_num": 2, + "interrupts": [ + 0, + 73 + ], + "type": "IO-APIC", + "device": [ + "1-edge", + "i8042" + ] }, ... ] @@ -73,30 +74,30 @@ Examples: $ proc_interrupts | jc --proc_interrupts -p -r [ { - "module": "binfmt_misc", - "size": "24576", - "used": "1", - "used_by": [], - "status": "Live", - "location": "0xffffffffc0ab4000" - }, - { - "module": "vsock_loopback", - "size": "16384", - "used": "0", - "used_by": [], - "status": "Live", - "location": "0xffffffffc0a14000" - }, - { - "module": "vmw_vsock_virtio_transport_common", - "size": "36864", - "used": "1", - "used_by": [ - "vsock_loopback" + "irq": "0", + "cpu_num": 2, + "interrupts": [ + "18", + "0" ], - "status": "Live", - "location": "0xffffffffc0a03000" + "type": "IO-APIC", + "device": [ + "2-edge", + "timer" + ] + }, + { + "irq": "1", + "cpu_num": 2, + "interrupts": [ + "0", + "73" + ], + "type": "IO-APIC", + "device": [ + "1-edge", + "i8042" + ] }, ... ] @@ -130,12 +131,8 @@ def _process(proc_data: List[Dict]) -> List[Dict]: List of Dictionaries. Structured to conform to the schema. """ - int_list = {'size', 'used'} - for entry in proc_data: - for key in entry: - if key in int_list: - entry[key] = jc.utils.convert_to_int(entry[key]) + entry['interrupts'] = [int(x) for x in entry['interrupts']] return proc_data @@ -188,22 +185,22 @@ def parse( interrupts.append(split_line.pop(0)) interrupt_type = split_line.pop(0) - interrupt_info = split_line + device = split_line else: for _ in range(cpu_num): interrupts.append(split_line.pop(0)) interrupt_type = ' '.join(split_line) - interrupt_info = [] + device = [] raw_output.append( { 'irq': irq, 'cpu_num': cpu_num, 'interrupts': interrupts, - 'interrupt_type': interrupt_type, - 'interrupt_info': interrupt_info or None + 'type': interrupt_type, + 'device': device or None } ) diff --git a/man/jc.1 b/man/jc.1 index aa896893..c9df998f 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -1,4 +1,4 @@ -.TH jc 1 2022-09-09 1.21.2 "JSON Convert" +.TH jc 1 2022-09-13 1.21.2 "JSON Convert" .SH NAME \fBjc\fP \- JSON Convert JSONifies the output of many CLI tools, file-types, and strings .SH SYNOPSIS @@ -450,6 +450,11 @@ PLIST file parser \fB--proc-filesystems\fP `/proc/filesystems` file parser +.TP +.B +\fB--proc-interrupts\fP +`/proc/interrupts` file parser + .TP .B \fB--proc-meminfo\fP From ab33836637634269d25f08b12b2c39caceaab48d Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Tue, 13 Sep 2022 14:04:15 -0700 Subject: [PATCH 035/124] add proc-iomem parser --- docs/parsers/proc_iomem.md | 85 ++++++++++++++++++++++++ jc/lib.py | 1 + jc/parsers/proc_iomem.py | 130 +++++++++++++++++++++++++++++++++++++ man/jc.1 | 5 ++ 4 files changed, 221 insertions(+) create mode 100644 docs/parsers/proc_iomem.md create mode 100644 jc/parsers/proc_iomem.py diff --git a/docs/parsers/proc_iomem.md b/docs/parsers/proc_iomem.md new file mode 100644 index 00000000..4bd0ce2f --- /dev/null +++ b/docs/parsers/proc_iomem.md @@ -0,0 +1,85 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_iomem + +jc - JSON Convert `/proc/iomem` file parser + +Usage (cli): + + $ cat /proc/iomem | jc --proc + +or + + $ jc /proc/iomem + +or + + $ cat /proc/iomem | jc --proc-iomem + +Usage (module): + + import jc + result = jc.parse('proc', proc_iomem_file) + +or + + import jc + result = jc.parse('proc_iomem', proc_iomem_file) + +Schema: + + [ + { + "start": string, + "end": string, + "device": string + } + ] + +Examples: + + $ cat /proc/iomem | jc --proc -p + [ + { + "start": "00000000", + "end": "00000fff", + "device": "Reserved" + }, + { + "start": "00001000", + "end": "0009e7ff", + "device": "System RAM" + }, + { + "start": "0009e800", + "end": "0009ffff", + "device": "Reserved" + }, + ... + ] + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict] +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + List of Dictionaries. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/lib.py b/jc/lib.py index 106052cd..a693fb7c 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -94,6 +94,7 @@ parsers = [ 'proc-driver-rtc', 'proc-filesystems', 'proc-interrupts', + 'proc-iomem', 'proc-meminfo', 'proc-modules', 'ps', diff --git a/jc/parsers/proc_iomem.py b/jc/parsers/proc_iomem.py new file mode 100644 index 00000000..4b526d7a --- /dev/null +++ b/jc/parsers/proc_iomem.py @@ -0,0 +1,130 @@ +"""jc - JSON Convert `/proc/iomem` file parser + +Usage (cli): + + $ cat /proc/iomem | jc --proc + +or + + $ jc /proc/iomem + +or + + $ cat /proc/iomem | jc --proc-iomem + +Usage (module): + + import jc + result = jc.parse('proc', proc_iomem_file) + +or + + import jc + result = jc.parse('proc_iomem', proc_iomem_file) + +Schema: + + [ + { + "start": string, + "end": string, + "device": string + } + ] + +Examples: + + $ cat /proc/iomem | jc --proc -p + [ + { + "start": "00000000", + "end": "00000fff", + "device": "Reserved" + }, + { + "start": "00001000", + "end": "0009e7ff", + "device": "System RAM" + }, + { + "start": "0009e800", + "end": "0009ffff", + "device": "Reserved" + }, + ... + ] +""" +from typing import List, Dict +import jc.utils + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc/iomem` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + hidden = True + + +__version__ = info.version + + +def _process(proc_data: List[Dict]) -> List[Dict]: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (List of Dictionaries) raw structured data to process + + Returns: + + List of Dictionaries. Structured to conform to the schema. + """ + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> List[Dict]: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + List of Dictionaries. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: List = [] + + if jc.utils.has_data(data): + + for line in filter(None, data.splitlines()): + + colon_split = line.split(':', maxsplit=1) + device = colon_split[1].strip() + mem_split = colon_split[0].split('-', maxsplit=1) + start = mem_split[0].strip() + end = mem_split[1].strip() + + raw_output.append( + { + 'start': start, + 'end': end, + 'device': device + } + ) + + return raw_output if raw else _process(raw_output) diff --git a/man/jc.1 b/man/jc.1 index c9df998f..db93f147 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -455,6 +455,11 @@ PLIST file parser \fB--proc-interrupts\fP `/proc/interrupts` file parser +.TP +.B +\fB--proc-iomem\fP +`/proc/iomem` file parser + .TP .B \fB--proc-meminfo\fP From 9e5c3ae6fb5cd0e59e1cec4cf1d813104536bb7b Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Tue, 13 Sep 2022 14:12:24 -0700 Subject: [PATCH 036/124] add proc-ioports parser --- docs/parsers/proc_ioports.md | 85 ++++++++++++++++++++++++++ jc/lib.py | 1 + jc/parsers/proc_ioports.py | 113 +++++++++++++++++++++++++++++++++++ man/jc.1 | 5 ++ 4 files changed, 204 insertions(+) create mode 100644 docs/parsers/proc_ioports.md create mode 100644 jc/parsers/proc_ioports.py diff --git a/docs/parsers/proc_ioports.md b/docs/parsers/proc_ioports.md new file mode 100644 index 00000000..9606509c --- /dev/null +++ b/docs/parsers/proc_ioports.md @@ -0,0 +1,85 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_ioports + +jc - JSON Convert `/proc/ioports` file parser + +Usage (cli): + + $ cat /proc/ioports | jc --proc + +or + + $ jc /proc/ioports + +or + + $ cat /proc/ioports | jc --proc-ioports + +Usage (module): + + import jc + result = jc.parse('proc', proc_ioports_file) + +or + + import jc + result = jc.parse('proc_ioports', proc_ioports_file) + +Schema: + + [ + { + "start": string, + "end": string, + "device": string + } + ] + +Examples: + + $ cat /proc/ioports | jc --proc -p + [ + { + "start": "0000", + "end": "0cf7", + "device": "PCI Bus 0000:00" + }, + { + "start": "0000", + "end": "001f", + "device": "dma1" + }, + { + "start": "0020", + "end": "0021", + "device": "PNP0001:00" + }, + ... + ] + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict] +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + List of Dictionaries. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/lib.py b/jc/lib.py index a693fb7c..dac00e19 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -95,6 +95,7 @@ parsers = [ 'proc-filesystems', 'proc-interrupts', 'proc-iomem', + 'proc-ioports', 'proc-meminfo', 'proc-modules', 'ps', diff --git a/jc/parsers/proc_ioports.py b/jc/parsers/proc_ioports.py new file mode 100644 index 00000000..0c861b0d --- /dev/null +++ b/jc/parsers/proc_ioports.py @@ -0,0 +1,113 @@ +"""jc - JSON Convert `/proc/ioports` file parser + +Usage (cli): + + $ cat /proc/ioports | jc --proc + +or + + $ jc /proc/ioports + +or + + $ cat /proc/ioports | jc --proc-ioports + +Usage (module): + + import jc + result = jc.parse('proc', proc_ioports_file) + +or + + import jc + result = jc.parse('proc_ioports', proc_ioports_file) + +Schema: + + [ + { + "start": string, + "end": string, + "device": string + } + ] + +Examples: + + $ cat /proc/ioports | jc --proc -p + [ + { + "start": "0000", + "end": "0cf7", + "device": "PCI Bus 0000:00" + }, + { + "start": "0000", + "end": "001f", + "device": "dma1" + }, + { + "start": "0020", + "end": "0021", + "device": "PNP0001:00" + }, + ... + ] +""" +from typing import List, Dict +import jc.utils +import jc.parsers.proc_iomem as proc_iomem + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc/ioports` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + hidden = True + + +__version__ = info.version + + +def _process(proc_data: List[Dict]) -> List[Dict]: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (List of Dictionaries) raw structured data to process + + Returns: + + List of Dictionaries. Structured to conform to the schema. + """ + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> List[Dict]: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + List of Dictionaries. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: List = proc_iomem.parse(data) + + return raw_output if raw else _process(raw_output) diff --git a/man/jc.1 b/man/jc.1 index db93f147..78bc4903 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -460,6 +460,11 @@ PLIST file parser \fB--proc-iomem\fP `/proc/iomem` file parser +.TP +.B +\fB--proc-ioports\fP +`/proc/ioports` file parser + .TP .B \fB--proc-meminfo\fP From 2cad23a7f3ecd71c89bd72181387518bbf98194a Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Tue, 13 Sep 2022 16:27:11 -0700 Subject: [PATCH 037/124] add proc-loadavg parser --- docs/parsers/proc_loadavg.md | 88 ++++++++++++++++++++++ jc/lib.py | 1 + jc/parsers/proc_loadavg.py | 139 +++++++++++++++++++++++++++++++++++ man/jc.1 | 5 ++ 4 files changed, 233 insertions(+) create mode 100644 docs/parsers/proc_loadavg.md create mode 100644 jc/parsers/proc_loadavg.py diff --git a/docs/parsers/proc_loadavg.md b/docs/parsers/proc_loadavg.md new file mode 100644 index 00000000..05168398 --- /dev/null +++ b/docs/parsers/proc_loadavg.md @@ -0,0 +1,88 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_loadavg + +jc - JSON Convert `/proc/loadavg` file parser + +Usage (cli): + + $ cat /proc/loadavg | jc --proc + +or + + $ jc /proc/loadavg + +or + + $ cat /proc/loadavg | jc --proc-loadavg + +Usage (module): + + import jc + result = jc.parse('proc', proc_loadavg_file) + +or + + import jc + result = jc.parse('proc_loadavg', proc_loadavg_file) + +Schema: + +All values are integers. + + { + "load_1m": float, + "load_5m": float, + "load_15m": float, + "running": integer, + "available": integer, + "last_pid": integer + } + +Examples: + + $ cat /proc/loadavg | jc --proc -p + { + "load_1m": 0.0, + "load_5m": 0.01, + "load_15m": 0.03, + "running": 2, + "available": 111, + "last_pid": 2039 + } + + $ cat /proc/loadavg | jc --proc -p -r + { + "load_1m": "0.00", + "load_5m": "0.01", + "load_15m": "0.03", + "running": "2", + "available": "111", + "last_pid": "2039" + } + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> Dict +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + Dictionary. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/lib.py b/jc/lib.py index dac00e19..e9537127 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -96,6 +96,7 @@ parsers = [ 'proc-interrupts', 'proc-iomem', 'proc-ioports', + 'proc-loadavg', 'proc-meminfo', 'proc-modules', 'ps', diff --git a/jc/parsers/proc_loadavg.py b/jc/parsers/proc_loadavg.py new file mode 100644 index 00000000..dc234c71 --- /dev/null +++ b/jc/parsers/proc_loadavg.py @@ -0,0 +1,139 @@ +"""jc - JSON Convert `/proc/loadavg` file parser + +Usage (cli): + + $ cat /proc/loadavg | jc --proc + +or + + $ jc /proc/loadavg + +or + + $ cat /proc/loadavg | jc --proc-loadavg + +Usage (module): + + import jc + result = jc.parse('proc', proc_loadavg_file) + +or + + import jc + result = jc.parse('proc_loadavg', proc_loadavg_file) + +Schema: + +All values are integers. + + { + "load_1m": float, + "load_5m": float, + "load_15m": float, + "running": integer, + "available": integer, + "last_pid": integer + } + +Examples: + + $ cat /proc/loadavg | jc --proc -p + { + "load_1m": 0.0, + "load_5m": 0.01, + "load_15m": 0.03, + "running": 2, + "available": 111, + "last_pid": 2039 + } + + $ cat /proc/loadavg | jc --proc -p -r + { + "load_1m": "0.00", + "load_5m": "0.01", + "load_15m": "0.03", + "running": "2", + "available": "111", + "last_pid": "2039" + } +""" +from typing import Dict +import jc.utils + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc/loadavg` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + hidden = True + + +__version__ = info.version + + +def _process(proc_data: Dict) -> Dict: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (Dictionary) raw structured data to process + + Returns: + + Dictionary. Structured to conform to the schema. + """ + float_list = {'load_1m', 'load_5m', 'load_15m'} + int_list = {'running', 'available', 'last_pid'} + + for key in proc_data: + if key in float_list: + proc_data[key] = float(proc_data[key]) + + if key in int_list: + proc_data[key] = int(proc_data[key]) + + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> Dict: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + Dictionary. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: Dict = {} + + if jc.utils.has_data(data): + + load_1m, load_5m, load_15m, runnable, last_pid = data.split() + running, available = runnable.split('/') + + raw_output = { + 'load_1m': load_1m, + 'load_5m': load_5m, + 'load_15m': load_15m, + 'running': running, + 'available': available, + 'last_pid': last_pid + } + + return raw_output if raw else _process(raw_output) diff --git a/man/jc.1 b/man/jc.1 index 78bc4903..54b939e7 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -465,6 +465,11 @@ PLIST file parser \fB--proc-ioports\fP `/proc/ioports` file parser +.TP +.B +\fB--proc-loadavg\fP +`/proc/loadavg` file parser + .TP .B \fB--proc-meminfo\fP From 140dc656a25100745d4890c1022c01c3e04b8dd6 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Tue, 13 Sep 2022 16:45:33 -0700 Subject: [PATCH 038/124] initial proc-locks parser --- jc/lib.py | 1 + jc/parsers/proc_locks.py | 188 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 189 insertions(+) create mode 100644 jc/parsers/proc_locks.py diff --git a/jc/lib.py b/jc/lib.py index e9537127..29e28d78 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -97,6 +97,7 @@ parsers = [ 'proc-iomem', 'proc-ioports', 'proc-loadavg', + 'proc-locks', 'proc-meminfo', 'proc-modules', 'ps', diff --git a/jc/parsers/proc_locks.py b/jc/parsers/proc_locks.py new file mode 100644 index 00000000..9bf54c6e --- /dev/null +++ b/jc/parsers/proc_locks.py @@ -0,0 +1,188 @@ +"""jc - JSON Convert `/proc/locks` file parser + +Usage (cli): + + $ cat /proc/locks | jc --proc + +or + + $ jc /proc/locks + +or + + $ cat /proc/locks | jc --proc-locks + +Usage (module): + + import jc + result = jc.parse('proc', proc_locks_file) + +or + + import jc + result = jc.parse('proc_locks', proc_locks_file) + +Schema: + + [ + { + "module": string, + "size": integer, + "used": integer, + "used_by": [ + string + ], + "status": string, + "location": string + } + ] + +Examples: + + $ cat /proc/locks | jc --proc -p + [ + { + "module": "binfmt_misc", + "size": 24576, + "used": 1, + "used_by": [], + "status": "Live", + "location": "0xffffffffc0ab4000" + }, + { + "module": "vsock_loopback", + "size": 16384, + "used": 0, + "used_by": [], + "status": "Live", + "location": "0xffffffffc0a14000" + }, + { + "module": "vmw_vsock_virtio_transport_common", + "size": 36864, + "used": 1, + "used_by": [ + "vsock_loopback" + ], + "status": "Live", + "location": "0xffffffffc0a03000" + }, + ... + ] + + $ proc_locks | jc --proc_locks -p -r + [ + { + "module": "binfmt_misc", + "size": "24576", + "used": "1", + "used_by": [], + "status": "Live", + "location": "0xffffffffc0ab4000" + }, + { + "module": "vsock_loopback", + "size": "16384", + "used": "0", + "used_by": [], + "status": "Live", + "location": "0xffffffffc0a14000" + }, + { + "module": "vmw_vsock_virtio_transport_common", + "size": "36864", + "used": "1", + "used_by": [ + "vsock_loopback" + ], + "status": "Live", + "location": "0xffffffffc0a03000" + }, + ... + ] +""" +from typing import List, Dict +import jc.utils + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc/locks` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + hidden = True + + +__version__ = info.version + + +def _process(proc_data: List[Dict]) -> List[Dict]: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (List of Dictionaries) raw structured data to process + + Returns: + + List of Dictionaries. Structured to conform to the schema. + """ + int_list = {'size', 'used'} + + for entry in proc_data: + for key in entry: + if key in int_list: + entry[key] = jc.utils.convert_to_int(entry[key]) + + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> List[Dict]: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + List of Dictionaries. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: List = [] + + if jc.utils.has_data(data): + + for line in filter(None, data.splitlines()): + + id, class_, type_, access, pid, file, start, end = line.split() + maj, min, inode = file.split(':') + + raw_output.append( + { + 'id': id[:-1], + 'class': class_, + 'type': type_, + 'access': access, + 'pid': pid, + 'maj': maj, + 'min': min, + 'inode': inode, + 'start': start, + 'end': end + } + ) + + return raw_output if raw else _process(raw_output) From c348fa89a938099662c4fe8f89bdfd9422230ab5 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Tue, 13 Sep 2022 20:40:48 -0700 Subject: [PATCH 039/124] proc-locks fixes --- docs/parsers/proc_locks.md | 130 +++++++++++++++++++++++++++++++++++++ jc/parsers/proc_locks.py | 106 +++++++++++++++--------------- man/jc.1 | 5 ++ 3 files changed, 187 insertions(+), 54 deletions(-) create mode 100644 docs/parsers/proc_locks.md diff --git a/docs/parsers/proc_locks.md b/docs/parsers/proc_locks.md new file mode 100644 index 00000000..38ebb3f9 --- /dev/null +++ b/docs/parsers/proc_locks.md @@ -0,0 +1,130 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_locks + +jc - JSON Convert `/proc/locks` file parser + +Usage (cli): + + $ cat /proc/locks | jc --proc + +or + + $ jc /proc/locks + +or + + $ cat /proc/locks | jc --proc-locks + +Usage (module): + + import jc + result = jc.parse('proc', proc_locks_file) + +or + + import jc + result = jc.parse('proc_locks', proc_locks_file) + +Schema: + + [ + { + "id": integer, + "class": string, + "type": string, + "access": string, + "pid": integer, + "maj": string, + "min": string, + "inode": integer, + "start": string, + "end": string + } + ] + +Examples: + + $ cat /proc/locks | jc --proc -p + [ + { + "id": 1, + "class": "POSIX", + "type": "ADVISORY", + "access": "WRITE", + "pid": 877, + "maj": "00", + "min": "19", + "inode": 812, + "start": "0", + "end": "EOF" + }, + { + "id": 2, + "class": "FLOCK", + "type": "ADVISORY", + "access": "WRITE", + "pid": 854, + "maj": "00", + "min": "19", + "inode": 805, + "start": "0", + "end": "EOF" + }, + ... + ] + + $ proc_locks | jc --proc_locks -p -r + [ + { + "id": "1", + "class": "POSIX", + "type": "ADVISORY", + "access": "WRITE", + "pid": "877", + "maj": "00", + "min": "19", + "inode": "812", + "start": "0", + "end": "EOF" + }, + { + "id": "2", + "class": "FLOCK", + "type": "ADVISORY", + "access": "WRITE", + "pid": "854", + "maj": "00", + "min": "19", + "inode": "805", + "start": "0", + "end": "EOF" + }, + ... + ] + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict] +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + List of Dictionaries. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/parsers/proc_locks.py b/jc/parsers/proc_locks.py index 9bf54c6e..9550645a 100644 --- a/jc/parsers/proc_locks.py +++ b/jc/parsers/proc_locks.py @@ -26,14 +26,16 @@ Schema: [ { - "module": string, - "size": integer, - "used": integer, - "used_by": [ - string - ], - "status": string, - "location": string + "id": integer, + "class": string, + "type": string, + "access": string, + "pid": integer, + "maj": string, + "min": string, + "inode": integer, + "start": string, + "end": string } ] @@ -42,30 +44,28 @@ Examples: $ cat /proc/locks | jc --proc -p [ { - "module": "binfmt_misc", - "size": 24576, - "used": 1, - "used_by": [], - "status": "Live", - "location": "0xffffffffc0ab4000" + "id": 1, + "class": "POSIX", + "type": "ADVISORY", + "access": "WRITE", + "pid": 877, + "maj": "00", + "min": "19", + "inode": 812, + "start": "0", + "end": "EOF" }, { - "module": "vsock_loopback", - "size": 16384, - "used": 0, - "used_by": [], - "status": "Live", - "location": "0xffffffffc0a14000" - }, - { - "module": "vmw_vsock_virtio_transport_common", - "size": 36864, - "used": 1, - "used_by": [ - "vsock_loopback" - ], - "status": "Live", - "location": "0xffffffffc0a03000" + "id": 2, + "class": "FLOCK", + "type": "ADVISORY", + "access": "WRITE", + "pid": 854, + "maj": "00", + "min": "19", + "inode": 805, + "start": "0", + "end": "EOF" }, ... ] @@ -73,30 +73,28 @@ Examples: $ proc_locks | jc --proc_locks -p -r [ { - "module": "binfmt_misc", - "size": "24576", - "used": "1", - "used_by": [], - "status": "Live", - "location": "0xffffffffc0ab4000" + "id": "1", + "class": "POSIX", + "type": "ADVISORY", + "access": "WRITE", + "pid": "877", + "maj": "00", + "min": "19", + "inode": "812", + "start": "0", + "end": "EOF" }, { - "module": "vsock_loopback", - "size": "16384", - "used": "0", - "used_by": [], - "status": "Live", - "location": "0xffffffffc0a14000" - }, - { - "module": "vmw_vsock_virtio_transport_common", - "size": "36864", - "used": "1", - "used_by": [ - "vsock_loopback" - ], - "status": "Live", - "location": "0xffffffffc0a03000" + "id": "2", + "class": "FLOCK", + "type": "ADVISORY", + "access": "WRITE", + "pid": "854", + "maj": "00", + "min": "19", + "inode": "805", + "start": "0", + "end": "EOF" }, ... ] @@ -130,12 +128,12 @@ def _process(proc_data: List[Dict]) -> List[Dict]: List of Dictionaries. Structured to conform to the schema. """ - int_list = {'size', 'used'} + int_list = {'id', 'pid', 'inode'} for entry in proc_data: for key in entry: if key in int_list: - entry[key] = jc.utils.convert_to_int(entry[key]) + entry[key] = int(entry[key]) return proc_data diff --git a/man/jc.1 b/man/jc.1 index 54b939e7..78afe6e0 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -470,6 +470,11 @@ PLIST file parser \fB--proc-loadavg\fP `/proc/loadavg` file parser +.TP +.B +\fB--proc-locks\fP +`/proc/locks` file parser + .TP .B \fB--proc-meminfo\fP From ab5e9a46b4fff0e9fdb6be7da2cad6f3f0b40b8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavel=20B=C5=99ezina?= Date: Wed, 14 Sep 2022 13:36:53 +0200 Subject: [PATCH 040/124] id: support space in names id parser did not work correctly if space is present in user or group name. --- jc/parsers/id.py | 32 ++++++++++++++++---------------- tests/test_id.py | 24 ++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 16 deletions(-) diff --git a/jc/parsers/id.py b/jc/parsers/id.py index 897ba494..6f52f9c2 100644 --- a/jc/parsers/id.py +++ b/jc/parsers/id.py @@ -100,6 +100,7 @@ Examples: } } """ +import re import jc.utils @@ -170,28 +171,28 @@ def parse(data, raw=False, quiet=False): raw_output = {} - # Clear any blank lines - cleandata = list(filter(None, data.split())) + # re.split produces first element empty + cleandata = re.split(r' ?(uid|gid|groups|context)=', data.strip())[1:] if jc.utils.has_data(data): - for section in cleandata: - if section.startswith('uid'): - uid_parsed = section.replace('(', '=').replace(')', '=') + for key, value in zip(cleandata[0::2], cleandata[1::2]): + if key == 'uid': + uid_parsed = value.replace('(', '=').replace(')', '=') uid_parsed = uid_parsed.split('=') raw_output['uid'] = {} - raw_output['uid']['id'] = uid_parsed[1] - raw_output['uid']['name'] = _get_item(uid_parsed, 2) + raw_output['uid']['id'] = uid_parsed[0] + raw_output['uid']['name'] = _get_item(uid_parsed, 1) - if section.startswith('gid'): - gid_parsed = section.replace('(', '=').replace(')', '=') + if key == 'gid': + gid_parsed = value.replace('(', '=').replace(')', '=') gid_parsed = gid_parsed.split('=') raw_output['gid'] = {} - raw_output['gid']['id'] = gid_parsed[1] - raw_output['gid']['name'] = _get_item(gid_parsed, 2) + raw_output['gid']['id'] = gid_parsed[0] + raw_output['gid']['name'] = _get_item(gid_parsed, 1) - if section.startswith('groups'): - groups_parsed = section.replace('(', '=').replace(')', '=') + if key == 'groups': + groups_parsed = value.replace('(', '=').replace(')', '=') groups_parsed = groups_parsed.replace('groups=', '') groups_parsed = groups_parsed.split(',') raw_output['groups'] = [] @@ -203,9 +204,8 @@ def parse(data, raw=False, quiet=False): group_dict['name'] = _get_item(grp_parsed, 1) raw_output['groups'].append(group_dict) - if section.startswith('context'): - context_parsed = section.replace('context=', '') - context_parsed = context_parsed.split(':', maxsplit=3) + if key == 'context': + context_parsed = value.split(':', maxsplit=3) raw_output['context'] = {} raw_output['context']['user'] = context_parsed[0] raw_output['context']['role'] = context_parsed[1] diff --git a/tests/test_id.py b/tests/test_id.py index b3752dfe..bcd6a9eb 100644 --- a/tests/test_id.py +++ b/tests/test_id.py @@ -43,6 +43,30 @@ class MyTests(unittest.TestCase): {'uid': {'id': 1000, 'name': 'user'}, 'gid': {'id': 1000, 'name': None}, 'groups': [{'id': 1000, 'name': None}, {'id': 10, 'name': 'wheel'}]} ) + def test_id_space(self): + """ + Test 'id' with with space in name + """ + self.assertEqual( + jc.parsers.id.parse('uid=1000(user 1) gid=1000 groups=1000,10(wheel)', quiet=True), + {'uid': {'id': 1000, 'name': 'user 1'}, 'gid': {'id': 1000, 'name': None}, 'groups': [{'id': 1000, 'name': None}, {'id': 10, 'name': 'wheel'}]} + ) + + self.assertEqual( + jc.parsers.id.parse('uid=1000(user) gid=1000(group 1) groups=1000,10(wheel)', quiet=True), + {'uid': {'id': 1000, 'name': 'user'}, 'gid': {'id': 1000, 'name': 'group 1'}, 'groups': [{'id': 1000, 'name': None}, {'id': 10, 'name': 'wheel'}]} + ) + + self.assertEqual( + jc.parsers.id.parse('uid=1000(user) gid=1000 groups=1000,10(wheel 1)', quiet=True), + {'uid': {'id': 1000, 'name': 'user'}, 'gid': {'id': 1000, 'name': None}, 'groups': [{'id': 1000, 'name': None}, {'id': 10, 'name': 'wheel 1'}]} + ) + + self.assertEqual( + jc.parsers.id.parse('uid=1000(user 1) gid=1000(group 1) groups=1000,10(wheel 1)', quiet=True), + {'uid': {'id': 1000, 'name': 'user 1'}, 'gid': {'id': 1000, 'name': 'group 1'}, 'groups': [{'id': 1000, 'name': None}, {'id': 10, 'name': 'wheel 1'}]} + ) + def test_id_centos_7_7(self): """ Test 'id' on Centos 7.7 From 4ebde3af5f8d6019db51c7c3e9d53dcecebb667a Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Thu, 15 Sep 2022 08:40:58 -0700 Subject: [PATCH 041/124] parser version bump --- jc/parsers/id.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jc/parsers/id.py b/jc/parsers/id.py index 6f52f9c2..d3f310a2 100644 --- a/jc/parsers/id.py +++ b/jc/parsers/id.py @@ -106,7 +106,7 @@ import jc.utils class info(): """Provides parser metadata (version, author, etc.)""" - version = '1.5' + version = '1.6' description = '`id` command parser' author = 'Kelly Brazil' author_email = 'kellyjonbrazil@gmail.com' From d3c1a73ced56c13a5e3079e49cde03ffa9ab81bc Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Thu, 15 Sep 2022 08:49:12 -0700 Subject: [PATCH 042/124] doc update --- CHANGELOG | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index e42e2302..c8491521 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,9 @@ jc changelog +20220915 v1.22.0 +- Add /proc file parsers +- Fix `id` command parser to allow usernames and groupnames with spaces + 20220829 v1.21.2 - Fix IP Address string parser for older python versions that don't cleanly accept decimal input format - IPv6 fix (e.g. python 3.6) From e4e07b76ec724f96b2532b659a54089379313186 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Thu, 15 Sep 2022 16:57:45 -0700 Subject: [PATCH 043/124] doc update --- docs/parsers/id.md | 2 +- docs/parsers/proc_cpuinfo.md | 2 +- docs/parsers/proc_crypto.md | 2 +- docs/parsers/proc_diskstats.md | 2 +- docs/parsers/proc_interrupts.md | 2 +- docs/parsers/proc_locks.md | 2 +- docs/parsers/proc_modules.md | 2 +- jc/lib.py | 1 + jc/parsers/proc_cpuinfo.py | 2 +- jc/parsers/proc_crypto.py | 2 +- jc/parsers/proc_diskstats.py | 2 +- jc/parsers/proc_interrupts.py | 2 +- jc/parsers/proc_locks.py | 2 +- jc/parsers/proc_modules.py | 2 +- jc/parsers/proc_mtrr.py | 183 ++++++++++++++++++++++++++++++++ man/jc.1 | 2 +- 16 files changed, 198 insertions(+), 14 deletions(-) create mode 100644 jc/parsers/proc_mtrr.py diff --git a/docs/parsers/id.md b/docs/parsers/id.md index eaf32554..0bac2060 100644 --- a/docs/parsers/id.md +++ b/docs/parsers/id.md @@ -128,4 +128,4 @@ Returns: ### Parser Information Compatibility: linux, darwin, aix, freebsd -Version 1.5 by Kelly Brazil (kellyjonbrazil@gmail.com) +Version 1.6 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/docs/parsers/proc_cpuinfo.md b/docs/parsers/proc_cpuinfo.md index 0c24ddc7..574c919f 100644 --- a/docs/parsers/proc_cpuinfo.md +++ b/docs/parsers/proc_cpuinfo.md @@ -189,7 +189,7 @@ Examples: ... ] - $ proc_cpuinfo | jc --proc_cpuinfo -p -r + $ cat /proc/cpuinfo | jc --proc_cpuinfo -p -r [ { "processor": "0", diff --git a/docs/parsers/proc_crypto.md b/docs/parsers/proc_crypto.md index 835489d7..25e9adc0 100644 --- a/docs/parsers/proc_crypto.md +++ b/docs/parsers/proc_crypto.md @@ -78,7 +78,7 @@ Examples: ... ] - $ proc_crypto | jc --proc_crypto -p -r + $ cat /proc/crypto | jc --proc_crypto -p -r [ { "name": "ecdh", diff --git a/docs/parsers/proc_diskstats.md b/docs/parsers/proc_diskstats.md index 5273814a..43accf9e 100644 --- a/docs/parsers/proc_diskstats.md +++ b/docs/parsers/proc_diskstats.md @@ -105,7 +105,7 @@ Examples: ... ] - $ proc_diskstats | jc --proc_diskstats -p -r + $ cat /proc/diskstats | jc --proc_diskstats -p -r [ { "maj": "7", diff --git a/docs/parsers/proc_interrupts.md b/docs/parsers/proc_interrupts.md index 412449eb..f0f8c123 100644 --- a/docs/parsers/proc_interrupts.md +++ b/docs/parsers/proc_interrupts.md @@ -76,7 +76,7 @@ Examples: ... ] - $ proc_interrupts | jc --proc_interrupts -p -r + $ cat /proc/interrupts | jc --proc_interrupts -p -r [ { "irq": "0", diff --git a/docs/parsers/proc_locks.md b/docs/parsers/proc_locks.md index 38ebb3f9..a611bb62 100644 --- a/docs/parsers/proc_locks.md +++ b/docs/parsers/proc_locks.md @@ -75,7 +75,7 @@ Examples: ... ] - $ proc_locks | jc --proc_locks -p -r + $ cat /proc/locks | jc --proc_locks -p -r [ { "id": "1", diff --git a/docs/parsers/proc_modules.md b/docs/parsers/proc_modules.md index 82833a42..f300ae06 100644 --- a/docs/parsers/proc_modules.md +++ b/docs/parsers/proc_modules.md @@ -75,7 +75,7 @@ Examples: ... ] - $ proc_modules | jc --proc_modules -p -r + $ cat /proc/modules | jc --proc_modules -p -r [ { "module": "binfmt_misc", diff --git a/jc/lib.py b/jc/lib.py index 29e28d78..69065411 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -100,6 +100,7 @@ parsers = [ 'proc-locks', 'proc-meminfo', 'proc-modules', + 'proc-mtrr', 'ps', 'route', 'rpm-qi', diff --git a/jc/parsers/proc_cpuinfo.py b/jc/parsers/proc_cpuinfo.py index 5e826e99..5de13991 100644 --- a/jc/parsers/proc_cpuinfo.py +++ b/jc/parsers/proc_cpuinfo.py @@ -184,7 +184,7 @@ Examples: ... ] - $ proc_cpuinfo | jc --proc_cpuinfo -p -r + $ cat /proc/cpuinfo | jc --proc_cpuinfo -p -r [ { "processor": "0", diff --git a/jc/parsers/proc_crypto.py b/jc/parsers/proc_crypto.py index f2b4fa4a..93cab164 100644 --- a/jc/parsers/proc_crypto.py +++ b/jc/parsers/proc_crypto.py @@ -73,7 +73,7 @@ Examples: ... ] - $ proc_crypto | jc --proc_crypto -p -r + $ cat /proc/crypto | jc --proc_crypto -p -r [ { "name": "ecdh", diff --git a/jc/parsers/proc_diskstats.py b/jc/parsers/proc_diskstats.py index 309bb609..c230b2f8 100644 --- a/jc/parsers/proc_diskstats.py +++ b/jc/parsers/proc_diskstats.py @@ -100,7 +100,7 @@ Examples: ... ] - $ proc_diskstats | jc --proc_diskstats -p -r + $ cat /proc/diskstats | jc --proc_diskstats -p -r [ { "maj": "7", diff --git a/jc/parsers/proc_interrupts.py b/jc/parsers/proc_interrupts.py index 76b76fe3..606cadc1 100644 --- a/jc/parsers/proc_interrupts.py +++ b/jc/parsers/proc_interrupts.py @@ -71,7 +71,7 @@ Examples: ... ] - $ proc_interrupts | jc --proc_interrupts -p -r + $ cat /proc/interrupts | jc --proc_interrupts -p -r [ { "irq": "0", diff --git a/jc/parsers/proc_locks.py b/jc/parsers/proc_locks.py index 9550645a..24d3cd58 100644 --- a/jc/parsers/proc_locks.py +++ b/jc/parsers/proc_locks.py @@ -70,7 +70,7 @@ Examples: ... ] - $ proc_locks | jc --proc_locks -p -r + $ cat /proc/locks | jc --proc_locks -p -r [ { "id": "1", diff --git a/jc/parsers/proc_modules.py b/jc/parsers/proc_modules.py index f74e9539..18e35b15 100644 --- a/jc/parsers/proc_modules.py +++ b/jc/parsers/proc_modules.py @@ -70,7 +70,7 @@ Examples: ... ] - $ proc_modules | jc --proc_modules -p -r + $ cat /proc/modules | jc --proc_modules -p -r [ { "module": "binfmt_misc", diff --git a/jc/parsers/proc_mtrr.py b/jc/parsers/proc_mtrr.py new file mode 100644 index 00000000..bc325f26 --- /dev/null +++ b/jc/parsers/proc_mtrr.py @@ -0,0 +1,183 @@ +"""jc - JSON Convert `/proc/mtrr` file parser + +Usage (cli): + + $ cat /proc/mtrr | jc --proc + +or + + $ jc /proc/mtrr + +or + + $ cat /proc/mtrr | jc --proc-mtrr + +Usage (module): + + import jc + result = jc.parse('proc', proc_mtrr_file) + +or + + import jc + result = jc.parse('proc_mtrr', proc_mtrr_file) + +Schema: + + [ + { + "register": string, + "type": string, + "base": string, + "base_mb": integer, + "size": integer, + "count": integer, + "": string # additional key/values are strings + } + ] + +Examples: + + $ cat /proc/mtrr | jc --proc -p + [ + { + "register": "reg00", + "type": "write-back", + "base": "0x000000000", + "base_mb": 0, + "size": 2048, + "count": 1 + }, + { + "register": "reg01", + "type": "write-back", + "base": "0x080000000", + "base_mb": 2048, + "size": 1024, + "count": 1 + }, + ... + ] + + $ cat /proc/mtrr | jc --proc_mtrr -p -r + [ + { + "register": "reg00", + "type": "write-back", + "base": "0x000000000", + "base_mb": "0", + "size": "2048MB", + "count": "1" + }, + { + "register": "reg01", + "type": "write-back", + "base": "0x080000000", + "base_mb": "2048", + "size": "1024MB", + "count": "1" + }, + ... + ] +""" +import re +from typing import List, Dict +import jc.utils + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc/mtrr` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + hidden = True + + +__version__ = info.version + + +def _process(proc_data: List[Dict]) -> List[Dict]: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (List of Dictionaries) raw structured data to process + + Returns: + + List of Dictionaries. Structured to conform to the schema. + """ + int_list = {'size', 'count', 'base_mb'} + + for entry in proc_data: + for key in entry: + if key in int_list: + entry[key] = jc.utils.convert_to_int(entry[key]) + + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> List[Dict]: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + List of Dictionaries. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: List = [] + + if jc.utils.has_data(data): + + for line in filter(None, data.splitlines()): + + split_line = re.split(r',|:', line) + register = split_line.pop(0) + type_ = None + key_vals: list = [] + + base, base_mb = split_line.pop(0).split(maxsplit=1) + key_vals.append(base) + + base_mb = base_mb.replace('(', '').replace(')', '').replace('MB', '').strip() + key_vals.append(f'base_mb={base_mb}') + + for item in split_line: + if '=' in item: + key_vals.append(item.strip()) + + else: + type_ = item.strip() + + output_line = { + 'register': register, + 'type': type_ + } + + kv_dict = {} + + for item in key_vals: + key, val = item.split('=') + kv_dict[key.strip()] = val.strip() + + output_line.update(kv_dict) + raw_output.append(output_line) + + + return raw_output if raw else _process(raw_output) diff --git a/man/jc.1 b/man/jc.1 index 78afe6e0..0a41ffe5 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -1,4 +1,4 @@ -.TH jc 1 2022-09-13 1.21.2 "JSON Convert" +.TH jc 1 2022-09-15 1.21.2 "JSON Convert" .SH NAME \fBjc\fP \- JSON Convert JSONifies the output of many CLI tools, file-types, and strings .SH SYNOPSIS From bdb218cb0f65834bf4e682f0dca731abae5e6325 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Thu, 15 Sep 2022 16:59:15 -0700 Subject: [PATCH 044/124] doc update --- docs/parsers/proc_mtrr.md | 111 ++++++++++++++++++++++++++++++++++++++ man/jc.1 | 5 ++ 2 files changed, 116 insertions(+) create mode 100644 docs/parsers/proc_mtrr.md diff --git a/docs/parsers/proc_mtrr.md b/docs/parsers/proc_mtrr.md new file mode 100644 index 00000000..d6e905ab --- /dev/null +++ b/docs/parsers/proc_mtrr.md @@ -0,0 +1,111 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_mtrr + +jc - JSON Convert `/proc/mtrr` file parser + +Usage (cli): + + $ cat /proc/mtrr | jc --proc + +or + + $ jc /proc/mtrr + +or + + $ cat /proc/mtrr | jc --proc-mtrr + +Usage (module): + + import jc + result = jc.parse('proc', proc_mtrr_file) + +or + + import jc + result = jc.parse('proc_mtrr', proc_mtrr_file) + +Schema: + + [ + { + "register": string, + "type": string, + "base": string, + "base_mb": integer, + "size": integer, + "count": integer, + "": string # additional key/values are strings + } + ] + +Examples: + + $ cat /proc/mtrr | jc --proc -p + [ + { + "register": "reg00", + "type": "write-back", + "base": "0x000000000", + "base_mb": 0, + "size": 2048, + "count": 1 + }, + { + "register": "reg01", + "type": "write-back", + "base": "0x080000000", + "base_mb": 2048, + "size": 1024, + "count": 1 + }, + ... + ] + + $ cat /proc/mtrr | jc --proc_mtrr -p -r + [ + { + "register": "reg00", + "type": "write-back", + "base": "0x000000000", + "base_mb": "0", + "size": "2048MB", + "count": "1" + }, + { + "register": "reg01", + "type": "write-back", + "base": "0x080000000", + "base_mb": "2048", + "size": "1024MB", + "count": "1" + }, + ... + ] + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict] +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + List of Dictionaries. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/man/jc.1 b/man/jc.1 index 0a41ffe5..251f6bcf 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -485,6 +485,11 @@ PLIST file parser \fB--proc-modules\fP `/proc/modules` file parser +.TP +.B +\fB--proc-mtrr\fP +`/proc/mtrr` file parser + .TP .B \fB--ps\fP From d115d435590f7e21b3bd02254c52ce83f5dbc915 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Fri, 16 Sep 2022 10:02:44 -0700 Subject: [PATCH 045/124] add proc-pid-numa-maps parser --- docs/parsers/proc_pid_numa_maps.md | 126 ++++++++++++++++++++ jc/lib.py | 1 + jc/parsers/proc_mtrr.py | 1 - jc/parsers/proc_pid_numa_maps.py | 185 +++++++++++++++++++++++++++++ man/jc.1 | 7 +- 5 files changed, 318 insertions(+), 2 deletions(-) create mode 100644 docs/parsers/proc_pid_numa_maps.md create mode 100644 jc/parsers/proc_pid_numa_maps.py diff --git a/docs/parsers/proc_pid_numa_maps.md b/docs/parsers/proc_pid_numa_maps.md new file mode 100644 index 00000000..94e444a6 --- /dev/null +++ b/docs/parsers/proc_pid_numa_maps.md @@ -0,0 +1,126 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_pid\_numa\_maps + +jc - JSON Convert `/proc//numa_maps` file parser + +This parser will attempt to convert number values to integers. If that is +not desired, please use the `--raw` option (cli) or `raw=True` argument +(module). + +Usage (cli): + + $ cat /proc/1/numa_maps | jc --proc + +or + + $ jc /proc/1/numa_maps + +or + + $ cat /proc/1/numa_maps | jc --proc-numa-maps + +Usage (module): + + import jc + result = jc.parse('proc', proc_numa_maps_file) + +or + + import jc + result = jc.parse('proc_numa_maps', proc_numa_maps_file) + +Schema: + +Integer conversion for Key/value pairs will be attempted. + + [ + { + "address": string, + "policy": string, + "": string/integer, + "options": [ + string # [0] + ] + } + ] + + [0] remaining individual words that are not part of a key/value pair + +Examples: + + $ cat /proc/1/numa_maps | jc --proc -p + [ + { + "address": "7f53b5083000", + "policy": "default", + "file": "/usr/lib/x86_64-linux-gnu/ld-2.32.so", + "anon": 2, + "dirty": 2, + "N0": 2, + "kernelpagesize_kB": 4 + }, + { + "address": "7ffd1b23e000", + "policy": "default", + "anon": 258, + "dirty": 258, + "N0": 258, + "kernelpagesize_kB": 4, + "options": [ + "stack" + ] + }, + ... + ] + + $ cat /proc/1/numa_maps | jc --proc_numa_maps -p -r + [ + { + "address": "7f53b5083000", + "policy": "default", + "file": "/usr/lib/x86_64-linux-gnu/ld-2.32.so", + "anon": "2", + "dirty": "2", + "N0": "2", + "kernelpagesize_kB": "4" + }, + { + "address": "7ffd1b23e000", + "policy": "default", + "anon": "258", + "dirty": "258", + "N0": "258", + "kernelpagesize_kB": "4", + "options": [ + "stack" + ] + }, + ... + ] + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict] +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + List of Dictionaries. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/lib.py b/jc/lib.py index 69065411..d8dfcb5c 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -101,6 +101,7 @@ parsers = [ 'proc-meminfo', 'proc-modules', 'proc-mtrr', + 'proc-pid-numa-maps', 'ps', 'route', 'rpm-qi', diff --git a/jc/parsers/proc_mtrr.py b/jc/parsers/proc_mtrr.py index bc325f26..ea6e89e8 100644 --- a/jc/parsers/proc_mtrr.py +++ b/jc/parsers/proc_mtrr.py @@ -179,5 +179,4 @@ def parse( output_line.update(kv_dict) raw_output.append(output_line) - return raw_output if raw else _process(raw_output) diff --git a/jc/parsers/proc_pid_numa_maps.py b/jc/parsers/proc_pid_numa_maps.py new file mode 100644 index 00000000..f05714bc --- /dev/null +++ b/jc/parsers/proc_pid_numa_maps.py @@ -0,0 +1,185 @@ +"""jc - JSON Convert `/proc//numa_maps` file parser + +This parser will attempt to convert number values to integers. If that is +not desired, please use the `--raw` option (cli) or `raw=True` argument +(module). + +Usage (cli): + + $ cat /proc/1/numa_maps | jc --proc + +or + + $ jc /proc/1/numa_maps + +or + + $ cat /proc/1/numa_maps | jc --proc-numa-maps + +Usage (module): + + import jc + result = jc.parse('proc', proc_numa_maps_file) + +or + + import jc + result = jc.parse('proc_numa_maps', proc_numa_maps_file) + +Schema: + +Integer conversion for Key/value pairs will be attempted. + + [ + { + "address": string, + "policy": string, + "": string/integer, + "options": [ + string # [0] + ] + } + ] + + [0] remaining individual words that are not part of a key/value pair + +Examples: + + $ cat /proc/1/numa_maps | jc --proc -p + [ + { + "address": "7f53b5083000", + "policy": "default", + "file": "/usr/lib/x86_64-linux-gnu/ld-2.32.so", + "anon": 2, + "dirty": 2, + "N0": 2, + "kernelpagesize_kB": 4 + }, + { + "address": "7ffd1b23e000", + "policy": "default", + "anon": 258, + "dirty": 258, + "N0": 258, + "kernelpagesize_kB": 4, + "options": [ + "stack" + ] + }, + ... + ] + + $ cat /proc/1/numa_maps | jc --proc_numa_maps -p -r + [ + { + "address": "7f53b5083000", + "policy": "default", + "file": "/usr/lib/x86_64-linux-gnu/ld-2.32.so", + "anon": "2", + "dirty": "2", + "N0": "2", + "kernelpagesize_kB": "4" + }, + { + "address": "7ffd1b23e000", + "policy": "default", + "anon": "258", + "dirty": "258", + "N0": "258", + "kernelpagesize_kB": "4", + "options": [ + "stack" + ] + }, + ... + ] +""" +from typing import List, Dict +import jc.utils +from jc.parsers.universal import simple_table_parse + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc//numa_maps` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + hidden = True + + +__version__ = info.version + + +def _process(proc_data: List[Dict]) -> List[Dict]: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (List of Dictionaries) raw structured data to process + + Returns: + + List of Dictionaries. Structured to conform to the schema. + """ + for entry in proc_data: + for key, val in entry.items(): + try: + entry[key] = int(val) + except Exception: + pass + + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> List[Dict]: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + List of Dictionaries. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: List = [] + + if jc.utils.has_data(data): + + header = 'address policy details\n' + data = header + data + + raw_output = simple_table_parse(data.splitlines()) + + for row in raw_output: + if 'details' in row: + detail_split = row['details'].split() + + options = [] + for item in detail_split: + if '=' in item: + key, val = item.split('=') + row.update({key: val}) + else: + options.append(item) + + if options: + row['options'] = options + + del row['details'] + + return raw_output if raw else _process(raw_output) diff --git a/man/jc.1 b/man/jc.1 index 251f6bcf..0448d21e 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -1,4 +1,4 @@ -.TH jc 1 2022-09-15 1.21.2 "JSON Convert" +.TH jc 1 2022-09-16 1.21.2 "JSON Convert" .SH NAME \fBjc\fP \- JSON Convert JSONifies the output of many CLI tools, file-types, and strings .SH SYNOPSIS @@ -490,6 +490,11 @@ PLIST file parser \fB--proc-mtrr\fP `/proc/mtrr` file parser +.TP +.B +\fB--proc-pid-numa-maps\fP +`/proc//numa_maps` file parser + .TP .B \fB--ps\fP From edbae09a178f167b32a02263c18b5f439bd2074c Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Fri, 16 Sep 2022 11:06:33 -0700 Subject: [PATCH 046/124] add proc-pagetypeinfo parser --- docs/parsers/proc_pagetypeinfo.md | 139 +++++++++++++++++++ jc/lib.py | 1 + jc/parsers/proc_pagetypeinfo.py | 222 ++++++++++++++++++++++++++++++ man/jc.1 | 5 + 4 files changed, 367 insertions(+) create mode 100644 docs/parsers/proc_pagetypeinfo.md create mode 100644 jc/parsers/proc_pagetypeinfo.py diff --git a/docs/parsers/proc_pagetypeinfo.md b/docs/parsers/proc_pagetypeinfo.md new file mode 100644 index 00000000..3fdebf03 --- /dev/null +++ b/docs/parsers/proc_pagetypeinfo.md @@ -0,0 +1,139 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_pagetypeinfo + +jc - JSON Convert `/proc/pagetypeinfo` file parser + +Usage (cli): + + $ cat /proc/pagetypeinfo | jc --proc + +or + + $ jc /proc/pagetypeinfo + +or + + $ cat /proc/pagetypeinfo | jc --proc-pagetypeinfo + +Usage (module): + + import jc + result = jc.parse('proc', proc_pagetypeinfo_file) + +or + + import jc + result = jc.parse('proc_pagetypeinfo', proc_pagetypeinfo_file) + +Schema: + + { + "page_block_order": integer, + "pages_per_block": integer, + "free_pages": [ + { + "node": integer, + "zone": string, + "type": string, + "free": [ + integer + ] + ], + "num_blocks_type": [ + { + "node": integer, + "zone": string, + "unmovable": integer, + "movable": integer, + "reclaimable": integer, + "high_atomic": integer, + "isolate": integer + } + ] + } + + +Examples: + + $ cat /proc/pagetypeinfo | jc --proc -p + { + "page_block_order": 9, + "pages_per_block": 512, + "free_pages": [ + { + "node": 0, + "zone": "DMA", + "type": "Unmovable", + "free": [ + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 0 + ] + }, + ... + ], + "num_blocks_type": [ + { + "node": 0, + "zone": "DMA", + "unmovable": 1, + "movable": 7, + "reclaimable": 0, + "high_atomic": 0, + "isolate": 0 + }, + { + "node": 0, + "zone": "DMA32", + "unmovable": 8, + "movable": 1472, + "reclaimable": 48, + "high_atomic": 0, + "isolate": 0 + }, + { + "node": 0, + "zone": "Normal", + "unmovable": 120, + "movable": 345, + "reclaimable": 47, + "high_atomic": 0, + "isolate": 0 + } + ] + } + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> Dict +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + Dictionary. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/lib.py b/jc/lib.py index d8dfcb5c..d4683bd7 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -101,6 +101,7 @@ parsers = [ 'proc-meminfo', 'proc-modules', 'proc-mtrr', + 'proc-pagetypeinfo', 'proc-pid-numa-maps', 'ps', 'route', diff --git a/jc/parsers/proc_pagetypeinfo.py b/jc/parsers/proc_pagetypeinfo.py new file mode 100644 index 00000000..9eaeadb4 --- /dev/null +++ b/jc/parsers/proc_pagetypeinfo.py @@ -0,0 +1,222 @@ +"""jc - JSON Convert `/proc/pagetypeinfo` file parser + +Usage (cli): + + $ cat /proc/pagetypeinfo | jc --proc + +or + + $ jc /proc/pagetypeinfo + +or + + $ cat /proc/pagetypeinfo | jc --proc-pagetypeinfo + +Usage (module): + + import jc + result = jc.parse('proc', proc_pagetypeinfo_file) + +or + + import jc + result = jc.parse('proc_pagetypeinfo', proc_pagetypeinfo_file) + +Schema: + + { + "page_block_order": integer, + "pages_per_block": integer, + "free_pages": [ + { + "node": integer, + "zone": string, + "type": string, + "free": [ + integer + ] + ], + "num_blocks_type": [ + { + "node": integer, + "zone": string, + "unmovable": integer, + "movable": integer, + "reclaimable": integer, + "high_atomic": integer, + "isolate": integer + } + ] + } + + +Examples: + + $ cat /proc/pagetypeinfo | jc --proc -p + { + "page_block_order": 9, + "pages_per_block": 512, + "free_pages": [ + { + "node": 0, + "zone": "DMA", + "type": "Unmovable", + "free": [ + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 0 + ] + }, + ... + ], + "num_blocks_type": [ + { + "node": 0, + "zone": "DMA", + "unmovable": 1, + "movable": 7, + "reclaimable": 0, + "high_atomic": 0, + "isolate": 0 + }, + { + "node": 0, + "zone": "DMA32", + "unmovable": 8, + "movable": 1472, + "reclaimable": 48, + "high_atomic": 0, + "isolate": 0 + }, + { + "node": 0, + "zone": "Normal", + "unmovable": 120, + "movable": 345, + "reclaimable": 47, + "high_atomic": 0, + "isolate": 0 + } + ] + } +""" +from typing import Dict +import jc.utils + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc/pagetypeinfo` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + hidden = True + + +__version__ = info.version + + +def _process(proc_data: Dict) -> Dict: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (Dictionary) raw structured data to process + + Returns: + + Dictionary. Structured to conform to the schema. + """ + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> Dict: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + Dictionary. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: Dict = {} + section = '' + + if jc.utils.has_data(data): + + for line in filter(None, data.splitlines()): + + if line.startswith('Page block order:'): + raw_output['page_block_order'] = int(line.split(':', maxsplit=1)[1]) + continue + + if line.startswith('Pages per block:'): + raw_output['pages_per_block'] = int(line.split(':', maxsplit=1)[1]) + continue + + if line.startswith('Free pages count per migrate type at order'): + section = 'free_pages' + raw_output['free_pages'] = [] + continue + + if line.startswith('Number of blocks type'): + section = 'num_blocks_type' + raw_output['num_blocks_type'] = [] + continue + + # Free pages count per migrate type at order 0 1 2 3 4 5 6 7 8 9 10 + # Node 0, zone DMA, type Unmovable 0 0 0 1 1 1 1 1 0 0 0 + if section == 'free_pages': + split_line = line.replace(',', ' ').split() + + output_line = { + 'node': int(split_line[1]), + 'zone': split_line[3], + 'type': split_line[5], + 'free': [int(x) for x in split_line[6:]] + } + + raw_output['free_pages'].append(output_line) + continue + + # Number of blocks type Unmovable Movable Reclaimable HighAtomic Isolate + # Node 0, zone DMA 1 7 0 0 0 + if section == 'num_blocks_type': + split_line = line.replace(',', ' ').split() + + output_line = { + 'node': int(split_line[1]), + 'zone': split_line[3], + 'unmovable': int(split_line[4]), + 'movable': int(split_line[5]), + 'reclaimable': int(split_line[6]), + 'high_atomic': int(split_line[7]), + 'isolate': int(split_line[8]), + } + + raw_output['num_blocks_type'].append(output_line) + continue + + return raw_output if raw else _process(raw_output) diff --git a/man/jc.1 b/man/jc.1 index 0448d21e..5d493eab 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -490,6 +490,11 @@ PLIST file parser \fB--proc-mtrr\fP `/proc/mtrr` file parser +.TP +.B +\fB--proc-pagetypeinfo\fP +`/proc/pagetypeinfo` file parser + .TP .B \fB--proc-pid-numa-maps\fP From 8bd935791ef31467020c328c1f1b974bea82d0e7 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Fri, 16 Sep 2022 11:17:02 -0700 Subject: [PATCH 047/124] add proc-partitions parser --- docs/parsers/proc_partitions.md | 100 ++++++++++++++++++++++ jc/lib.py | 1 + jc/parsers/proc_partitions.py | 141 ++++++++++++++++++++++++++++++++ man/jc.1 | 5 ++ 4 files changed, 247 insertions(+) create mode 100644 docs/parsers/proc_partitions.md create mode 100644 jc/parsers/proc_partitions.py diff --git a/docs/parsers/proc_partitions.md b/docs/parsers/proc_partitions.md new file mode 100644 index 00000000..78e0b3f1 --- /dev/null +++ b/docs/parsers/proc_partitions.md @@ -0,0 +1,100 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_partitions + +jc - JSON Convert `/proc/partitions` file parser + +Usage (cli): + + $ cat /proc/partitions | jc --proc + +or + + $ jc /proc/partitions + +or + + $ cat /proc/partitions | jc --proc-partitions + +Usage (module): + + import jc + result = jc.parse('proc', proc_partitions_file) + +or + + import jc + result = jc.parse('proc_partitions', proc_partitions_file) + +Schema: + + [ + { + "major": integer, + "minor": integer, + "num_blocks": integer, + "name": string + } + ] + +Examples: + + $ cat /proc/partitions | jc --proc -p + [ + { + "major": 7, + "minor": 0, + "num_blocks": 56896, + "name": "loop0" + }, + { + "major": 7, + "minor": 1, + "num_blocks": 56868, + "name": "loop1" + }, + ... + ] + + $ cat /proc/partitions | jc --proc_partitions -p -r + [ + { + "major": "7", + "minor": "0", + "num_blocks": "56896", + "name": "loop0" + }, + { + "major": "7", + "minor": "1", + "num_blocks": "56868", + "name": "loop1" + }, + ... + ] + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict] +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + List of Dictionaries. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/lib.py b/jc/lib.py index d4683bd7..d18af816 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -102,6 +102,7 @@ parsers = [ 'proc-modules', 'proc-mtrr', 'proc-pagetypeinfo', + 'proc-partitions', 'proc-pid-numa-maps', 'ps', 'route', diff --git a/jc/parsers/proc_partitions.py b/jc/parsers/proc_partitions.py new file mode 100644 index 00000000..c04ab215 --- /dev/null +++ b/jc/parsers/proc_partitions.py @@ -0,0 +1,141 @@ +"""jc - JSON Convert `/proc/partitions` file parser + +Usage (cli): + + $ cat /proc/partitions | jc --proc + +or + + $ jc /proc/partitions + +or + + $ cat /proc/partitions | jc --proc-partitions + +Usage (module): + + import jc + result = jc.parse('proc', proc_partitions_file) + +or + + import jc + result = jc.parse('proc_partitions', proc_partitions_file) + +Schema: + + [ + { + "major": integer, + "minor": integer, + "num_blocks": integer, + "name": string + } + ] + +Examples: + + $ cat /proc/partitions | jc --proc -p + [ + { + "major": 7, + "minor": 0, + "num_blocks": 56896, + "name": "loop0" + }, + { + "major": 7, + "minor": 1, + "num_blocks": 56868, + "name": "loop1" + }, + ... + ] + + $ cat /proc/partitions | jc --proc_partitions -p -r + [ + { + "major": "7", + "minor": "0", + "num_blocks": "56896", + "name": "loop0" + }, + { + "major": "7", + "minor": "1", + "num_blocks": "56868", + "name": "loop1" + }, + ... + ] +""" +from typing import List, Dict +import jc.utils +from jc.parsers.universal import simple_table_parse + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc/partitions` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + hidden = True + + +__version__ = info.version + + +def _process(proc_data: List[Dict]) -> List[Dict]: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (List of Dictionaries) raw structured data to process + + Returns: + + List of Dictionaries. Structured to conform to the schema. + """ + for entry in proc_data: + for key in entry: + try: + entry[key] = int(entry[key]) + except Exception: + pass + + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> List[Dict]: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + List of Dictionaries. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: List = [] + + if jc.utils.has_data(data): + + cleandata = list(filter(None, data.splitlines())) + cleandata[0] = cleandata[0].replace('#', 'num_') + raw_output = simple_table_parse(cleandata) + + return raw_output if raw else _process(raw_output) diff --git a/man/jc.1 b/man/jc.1 index 5d493eab..e6f1380e 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -495,6 +495,11 @@ PLIST file parser \fB--proc-pagetypeinfo\fP `/proc/pagetypeinfo` file parser +.TP +.B +\fB--proc-partitions\fP +`/proc/partitions` file parser + .TP .B \fB--proc-pid-numa-maps\fP From 122a4d8f32ca76ce73bf0b8fe0d5e7d726c63a71 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Fri, 16 Sep 2022 11:40:54 -0700 Subject: [PATCH 048/124] add proc-slabinfo parser --- docs/parsers/proc_slabinfo.md | 100 ++++++++++++++++++++++ jc/lib.py | 1 + jc/parsers/proc_slabinfo.py | 157 ++++++++++++++++++++++++++++++++++ man/jc.1 | 5 ++ 4 files changed, 263 insertions(+) create mode 100644 docs/parsers/proc_slabinfo.md create mode 100644 jc/parsers/proc_slabinfo.py diff --git a/docs/parsers/proc_slabinfo.md b/docs/parsers/proc_slabinfo.md new file mode 100644 index 00000000..736a5576 --- /dev/null +++ b/docs/parsers/proc_slabinfo.md @@ -0,0 +1,100 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_slabinfo + +jc - JSON Convert `/proc/slabinfo` file parser + +Usage (cli): + + $ cat /proc/slabinfo | jc --proc + +or + + $ jc /proc/slabinfo + +or + + $ cat /proc/slabinfo | jc --proc-slabinfo + +Usage (module): + + import jc + result = jc.parse('proc', proc_slabinfo_file) + +or + + import jc + result = jc.parse('proc_slabinfo', proc_slabinfo_file) + +Schema: + + [ + { + "name": string, + "active_objs": integer, + "num_objs": integer, + "obj_size": integer, + "obj_per_slab": integer, + "pages_per_slab": integer, + "tunables": { + "limit": integer, + "batch_count": integer, + "shared_factor": integer + }, + "slabdata": { + "active_slabs": integer, + "num_slabs": integer, + "shared_avail": integer + } + ] + +Examples: + + $ cat /proc/slabinfo | jc --proc -p + [ + { + "name": "ext4_groupinfo_4k", + "active_objs": 224, + "num_objs": 224, + "obj_size": 144, + "obj_per_slab": 56, + "pages_per_slab": 2, + "tunables": { + "limit": 0, + "batch_count": 0, + "shared_factor": 0 + }, + "slabdata": { + "active_slabs": 4, + "num_slabs": 4, + "shared_avail": 0 + } + }, + ... + ] + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict] +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + List of Dictionaries. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/lib.py b/jc/lib.py index d18af816..7620d6f6 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -103,6 +103,7 @@ parsers = [ 'proc-mtrr', 'proc-pagetypeinfo', 'proc-partitions', + 'proc-slabinfo', 'proc-pid-numa-maps', 'ps', 'route', diff --git a/jc/parsers/proc_slabinfo.py b/jc/parsers/proc_slabinfo.py new file mode 100644 index 00000000..9ebbde1e --- /dev/null +++ b/jc/parsers/proc_slabinfo.py @@ -0,0 +1,157 @@ +"""jc - JSON Convert `/proc/slabinfo` file parser + +Usage (cli): + + $ cat /proc/slabinfo | jc --proc + +or + + $ jc /proc/slabinfo + +or + + $ cat /proc/slabinfo | jc --proc-slabinfo + +Usage (module): + + import jc + result = jc.parse('proc', proc_slabinfo_file) + +or + + import jc + result = jc.parse('proc_slabinfo', proc_slabinfo_file) + +Schema: + + [ + { + "name": string, + "active_objs": integer, + "num_objs": integer, + "obj_size": integer, + "obj_per_slab": integer, + "pages_per_slab": integer, + "tunables": { + "limit": integer, + "batch_count": integer, + "shared_factor": integer + }, + "slabdata": { + "active_slabs": integer, + "num_slabs": integer, + "shared_avail": integer + } + ] + +Examples: + + $ cat /proc/slabinfo | jc --proc -p + [ + { + "name": "ext4_groupinfo_4k", + "active_objs": 224, + "num_objs": 224, + "obj_size": 144, + "obj_per_slab": 56, + "pages_per_slab": 2, + "tunables": { + "limit": 0, + "batch_count": 0, + "shared_factor": 0 + }, + "slabdata": { + "active_slabs": 4, + "num_slabs": 4, + "shared_avail": 0 + } + }, + ... + ] +""" +from typing import List, Dict +import jc.utils + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc/slabinfo` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + hidden = True + + +__version__ = info.version + + +def _process(proc_data: List[Dict]) -> List[Dict]: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (List of Dictionaries) raw structured data to process + + Returns: + + List of Dictionaries. Structured to conform to the schema. + """ + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> List[Dict]: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + List of Dictionaries. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: List = [] + + if jc.utils.has_data(data): + + cleandata = data.splitlines()[2:] + + for line in filter(None, cleandata): + + line = line.replace(':', ' ') + split_line = line.split() + + raw_output.append( + { + 'name': split_line[0], + 'active_objs': int(split_line[1]), + 'num_objs': int(split_line[2]), + 'obj_size': int(split_line[3]), + 'obj_per_slab': int(split_line[4]), + 'pages_per_slab': int(split_line[5]), + 'tunables': { + 'limit': int(split_line[7]), + 'batch_count': int(split_line[8]), + 'shared_factor': int(split_line[9]) + }, + 'slabdata': { + 'active_slabs': int(split_line[11]), + 'num_slabs': int(split_line[12]), + 'shared_avail': int(split_line[13]) + } + } + ) + + return raw_output if raw else _process(raw_output) diff --git a/man/jc.1 b/man/jc.1 index e6f1380e..ab202336 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -500,6 +500,11 @@ PLIST file parser \fB--proc-partitions\fP `/proc/partitions` file parser +.TP +.B +\fB--proc-slabinfo\fP +`/proc/slabinfo` file parser + .TP .B \fB--proc-pid-numa-maps\fP From 8f539af4ab4ad4c4fae2dbc4197ca383e6a75235 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Fri, 16 Sep 2022 14:50:14 -0700 Subject: [PATCH 049/124] add proc-softirqs parser --- docs/parsers/proc_pagetypeinfo.md | 4 +- docs/parsers/proc_softirqs.md | 85 ++++++++++++++++++++ jc/lib.py | 1 + jc/parsers/proc_pagetypeinfo.py | 4 +- jc/parsers/proc_softirqs.py | 129 ++++++++++++++++++++++++++++++ man/jc.1 | 5 ++ 6 files changed, 226 insertions(+), 2 deletions(-) create mode 100644 docs/parsers/proc_softirqs.md create mode 100644 jc/parsers/proc_softirqs.py diff --git a/docs/parsers/proc_pagetypeinfo.md b/docs/parsers/proc_pagetypeinfo.md index 3fdebf03..f1cfb990 100644 --- a/docs/parsers/proc_pagetypeinfo.md +++ b/docs/parsers/proc_pagetypeinfo.md @@ -38,7 +38,7 @@ Schema: "zone": string, "type": string, "free": [ - integer + integer # [0] ] ], "num_blocks_type": [ @@ -54,6 +54,8 @@ Schema: ] } + [0] array index correlates to the Order number. + E.g. free[0] is the value for Order 0 Examples: diff --git a/docs/parsers/proc_softirqs.md b/docs/parsers/proc_softirqs.md new file mode 100644 index 00000000..150b5a73 --- /dev/null +++ b/docs/parsers/proc_softirqs.md @@ -0,0 +1,85 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_softirqs + +jc - JSON Convert `/proc/softirqs` file parser + +Usage (cli): + + $ cat /proc/softirqs | jc --proc + +or + + $ jc /proc/softirqs + +or + + $ cat /proc/softirqs | jc --proc-softirqs + +Usage (module): + + import jc + result = jc.parse('proc', proc_softirqs_file) + +or + + import jc + result = jc.parse('proc_softirqs', proc_softirqs_file) + +Schema: + + [ + { + "counter": string, + "CPU": integer, + } + ] + +Examples: + + $ cat /proc/softirqs | jc --proc -p + [ + { + "counter": "HI", + "CPU0": 1, + "CPU1": 34056, + "CPU2": 0, + "CPU3": 0, + "CPU4": 0 + }, + { + "counter": "TIMER", + "CPU0": 322970, + "CPU1": 888166, + "CPU2": 0, + "CPU3": 0, + "CPU4": 0 + }, + ... + ] + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict] +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + List of Dictionaries. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/lib.py b/jc/lib.py index 7620d6f6..72c680bd 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -104,6 +104,7 @@ parsers = [ 'proc-pagetypeinfo', 'proc-partitions', 'proc-slabinfo', + 'proc-softirqs', 'proc-pid-numa-maps', 'ps', 'route', diff --git a/jc/parsers/proc_pagetypeinfo.py b/jc/parsers/proc_pagetypeinfo.py index 9eaeadb4..08ef08ba 100644 --- a/jc/parsers/proc_pagetypeinfo.py +++ b/jc/parsers/proc_pagetypeinfo.py @@ -33,7 +33,7 @@ Schema: "zone": string, "type": string, "free": [ - integer + integer # [0] ] ], "num_blocks_type": [ @@ -49,6 +49,8 @@ Schema: ] } + [0] array index correlates to the Order number. + E.g. free[0] is the value for Order 0 Examples: diff --git a/jc/parsers/proc_softirqs.py b/jc/parsers/proc_softirqs.py new file mode 100644 index 00000000..d4068ec1 --- /dev/null +++ b/jc/parsers/proc_softirqs.py @@ -0,0 +1,129 @@ +"""jc - JSON Convert `/proc/softirqs` file parser + +Usage (cli): + + $ cat /proc/softirqs | jc --proc + +or + + $ jc /proc/softirqs + +or + + $ cat /proc/softirqs | jc --proc-softirqs + +Usage (module): + + import jc + result = jc.parse('proc', proc_softirqs_file) + +or + + import jc + result = jc.parse('proc_softirqs', proc_softirqs_file) + +Schema: + + [ + { + "counter": string, + "CPU": integer, + } + ] + +Examples: + + $ cat /proc/softirqs | jc --proc -p + [ + { + "counter": "HI", + "CPU0": 1, + "CPU1": 34056, + "CPU2": 0, + "CPU3": 0, + "CPU4": 0 + }, + { + "counter": "TIMER", + "CPU0": 322970, + "CPU1": 888166, + "CPU2": 0, + "CPU3": 0, + "CPU4": 0 + }, + ... + ] +""" +from typing import List, Dict +import jc.utils +from jc.parsers.universal import simple_table_parse + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc/softirqs` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + hidden = True + + +__version__ = info.version + + +def _process(proc_data: List[Dict]) -> List[Dict]: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (List of Dictionaries) raw structured data to process + + Returns: + + List of Dictionaries. Structured to conform to the schema. + """ + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> List[Dict]: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + List of Dictionaries. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: List = [] + + if jc.utils.has_data(data): + + cleandata = list(filter(None, data.splitlines())) + cleandata[0] = 'counter ' + cleandata[0] + raw_output = simple_table_parse(cleandata) + + for item in raw_output: + if 'counter' in item: + item['counter'] = item['counter'][:-1] + + for key in item: + try: + item[key] = int(item[key]) + except Exception: + pass + + return raw_output if raw else _process(raw_output) diff --git a/man/jc.1 b/man/jc.1 index ab202336..506b65bd 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -505,6 +505,11 @@ PLIST file parser \fB--proc-slabinfo\fP `/proc/slabinfo` file parser +.TP +.B +\fB--proc-softirqs\fP +`/proc/softirqs` file parser + .TP .B \fB--proc-pid-numa-maps\fP From e171861629c878e3decb26c030c09d4cefbc76b3 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Fri, 16 Sep 2022 15:54:13 -0700 Subject: [PATCH 050/124] add proc-stat parser --- docs/parsers/proc_stat.md | 161 ++++++++++++++++++++++++ jc/lib.py | 1 + jc/parsers/proc.py | 2 +- jc/parsers/proc_stat.py | 250 ++++++++++++++++++++++++++++++++++++++ man/jc.1 | 5 + 5 files changed, 418 insertions(+), 1 deletion(-) create mode 100644 docs/parsers/proc_stat.md create mode 100644 jc/parsers/proc_stat.py diff --git a/docs/parsers/proc_stat.md b/docs/parsers/proc_stat.md new file mode 100644 index 00000000..1e7dc002 --- /dev/null +++ b/docs/parsers/proc_stat.md @@ -0,0 +1,161 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_stat + +jc - JSON Convert `/proc/stat` file parser + +Usage (cli): + + $ cat /proc/stat | jc --proc + +or + + $ jc /proc/stat + +or + + $ cat /proc/stat | jc --proc-stat + +Usage (module): + + import jc + result = jc.parse('proc', proc_stat_file) + +or + + import jc + result = jc.parse('proc_stat', proc_stat_file) + +Schema: + + { + "cpu": { + "user": integer, + "nice": integer, + "system": integer, + "idle": integer, + "iowait": integer, + "irq": integer, + "softirq": integer, + "steal": integer, + "guest": integer, + "guest_nice": integer + }, + "cpu": { + "user": integer, + "nice": integer, + "system": integer, + "idle": integer, + "iowait": integer, + "irq": integer, + "softirq": integer, + "steal": integer, + "guest": integer, + "guest_nice": integer + }, + "interrupts": [ + integer + ], + "context_switches": integer, + "boot_time": integer, + "processes": integer, + "processes_running": integer, + "processes_blocked": integer, + "softirq": [ + integer + ] + } + +Examples: + + $ cat /proc/stat | jc --proc -p + { + "cpu": { + "user": 6002, + "nice": 152, + "system": 8398, + "idle": 3444436, + "iowait": 448, + "irq": 0, + "softirq": 1174, + "steal": 0, + "guest": 0, + "guest_nice": 0 + }, + "cpu0": { + "user": 2784, + "nice": 137, + "system": 4367, + "idle": 1732802, + "iowait": 225, + "irq": 0, + "softirq": 221, + "steal": 0, + "guest": 0, + "guest_nice": 0 + }, + "cpu1": { + "user": 3218, + "nice": 15, + "system": 4031, + "idle": 1711634, + "iowait": 223, + "irq": 0, + "softirq": 953, + "steal": 0, + "guest": 0, + "guest_nice": 0 + }, + "interrupts": [ + 2496709, + 18, + 73, + 0, + 0, + ... + ], + "context_switches": 4622716, + "boot_time": 1662154781, + "processes": 9831, + "processes_running": 1, + "processes_blocked": 0, + "softirq": [ + 3478985, + 35230, + 1252057, + 3467, + 128583, + 51014, + 0, + 171199, + 1241297, + 0, + 596138 + ] + } + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> Dict +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + Dictionary. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/lib.py b/jc/lib.py index 72c680bd..c43b3e33 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -105,6 +105,7 @@ parsers = [ 'proc-partitions', 'proc-slabinfo', 'proc-softirqs', + 'proc-stat', 'proc-pid-numa-maps', 'ps', 'route', diff --git a/jc/parsers/proc.py b/jc/parsers/proc.py index 69c5d550..872647de 100644 --- a/jc/parsers/proc.py +++ b/jc/parsers/proc.py @@ -171,7 +171,7 @@ def parse( partitions_p = re.compile(r'^major minor #blocks name\n\n\s*\d+\s+\d+\s+\d+ \w+\n') slabinfo_p = re.compile(r'^slabinfo - version: \d+.\d+\n') softirqs_p = re.compile(r'^\s+(CPU\d+\s+)+\n\s+HI:\s+\d') - stat_p = re.compile(r'^cpu\s+(?: \d+){10}.*intr ', re.DOTALL) + stat_p = re.compile(r'^cpu\s+(?: \d+){7,10}.*intr ', re.DOTALL) swaps_p = re.compile(r'^Filename\t\t\t\tType\t\tSize\t\tUsed\t\tPriority\n') uptime_p = re.compile(r'^\d+.\d\d \d+.\d\d$') version_p = re.compile(r'^.+\sversion\s[^\n]+$') diff --git a/jc/parsers/proc_stat.py b/jc/parsers/proc_stat.py new file mode 100644 index 00000000..99f974cc --- /dev/null +++ b/jc/parsers/proc_stat.py @@ -0,0 +1,250 @@ +"""jc - JSON Convert `/proc/stat` file parser + +Usage (cli): + + $ cat /proc/stat | jc --proc + +or + + $ jc /proc/stat + +or + + $ cat /proc/stat | jc --proc-stat + +Usage (module): + + import jc + result = jc.parse('proc', proc_stat_file) + +or + + import jc + result = jc.parse('proc_stat', proc_stat_file) + +Schema: + + { + "cpu": { + "user": integer, + "nice": integer, + "system": integer, + "idle": integer, + "iowait": integer, + "irq": integer, + "softirq": integer, + "steal": integer, + "guest": integer, + "guest_nice": integer + }, + "cpu": { + "user": integer, + "nice": integer, + "system": integer, + "idle": integer, + "iowait": integer, + "irq": integer, + "softirq": integer, + "steal": integer, + "guest": integer, + "guest_nice": integer + }, + "interrupts": [ + integer + ], + "context_switches": integer, + "boot_time": integer, + "processes": integer, + "processes_running": integer, + "processes_blocked": integer, + "softirq": [ + integer + ] + } + +Examples: + + $ cat /proc/stat | jc --proc -p + { + "cpu": { + "user": 6002, + "nice": 152, + "system": 8398, + "idle": 3444436, + "iowait": 448, + "irq": 0, + "softirq": 1174, + "steal": 0, + "guest": 0, + "guest_nice": 0 + }, + "cpu0": { + "user": 2784, + "nice": 137, + "system": 4367, + "idle": 1732802, + "iowait": 225, + "irq": 0, + "softirq": 221, + "steal": 0, + "guest": 0, + "guest_nice": 0 + }, + "cpu1": { + "user": 3218, + "nice": 15, + "system": 4031, + "idle": 1711634, + "iowait": 223, + "irq": 0, + "softirq": 953, + "steal": 0, + "guest": 0, + "guest_nice": 0 + }, + "interrupts": [ + 2496709, + 18, + 73, + 0, + 0, + ... + ], + "context_switches": 4622716, + "boot_time": 1662154781, + "processes": 9831, + "processes_running": 1, + "processes_blocked": 0, + "softirq": [ + 3478985, + 35230, + 1252057, + 3467, + 128583, + 51014, + 0, + 171199, + 1241297, + 0, + 596138 + ] + } +""" +from typing import Dict +import jc.utils + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc/stat` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + hidden = True + + +__version__ = info.version + + +def _process(proc_data: Dict) -> Dict: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (Dictionary) raw structured data to process + + Returns: + + Dictionary. Structured to conform to the schema. + """ + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> Dict: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + Dictionary. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: Dict = {} + + if jc.utils.has_data(data): + + for line in filter(None, data.splitlines()): + + if line.startswith('cpu'): + split_line = line.split() + cpu_num = split_line[0] + raw_output[cpu_num] = { + 'user': int(split_line[1]), + 'nice': int(split_line[2]), + 'system': int(split_line[3]), + 'idle': int(split_line[4]) + } + + if len(split_line) > 5: + raw_output[cpu_num]['iowait'] = int(split_line[5]) + + if len(split_line) > 6: + raw_output[cpu_num]['irq'] = int(split_line[6]) + raw_output[cpu_num]['softirq'] = int(split_line[7]) + + if len(split_line) > 8: + raw_output[cpu_num]['steal'] = int(split_line[8]) + + if len(split_line) > 9: + raw_output[cpu_num]['guest'] = int(split_line[9]) + + if len(split_line) > 10: + raw_output[cpu_num]['guest_nice'] = int(split_line[10]) + + continue + + if line.startswith('intr '): + split_line = line.split() + raw_output['interrupts'] = [int(x) for x in split_line[1:]] + continue + + if line.startswith('ctxt '): + raw_output['context_switches'] = int(line.split(maxsplit=1)[1]) + continue + + if line.startswith('btime '): + raw_output['boot_time'] = int(line.split(maxsplit=1)[1]) + continue + + if line.startswith('processes '): + raw_output['processes'] = int(line.split(maxsplit=1)[1]) + continue + + if line.startswith('procs_running '): + raw_output['processes_running'] = int(line.split(maxsplit=1)[1]) + continue + + if line.startswith('procs_blocked '): + raw_output['processes_blocked'] = int(line.split(maxsplit=1)[1]) + continue + + if line.startswith('softirq '): + split_line = line.split() + raw_output['softirq'] = [int(x) for x in split_line[1:]] + continue + + return raw_output if raw else _process(raw_output) diff --git a/man/jc.1 b/man/jc.1 index 506b65bd..d6d52b16 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -510,6 +510,11 @@ PLIST file parser \fB--proc-softirqs\fP `/proc/softirqs` file parser +.TP +.B +\fB--proc-stat\fP +`/proc/stat` file parser + .TP .B \fB--proc-pid-numa-maps\fP From bc816bb8584423ec39bd336d699c322e8ac1913e Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Fri, 16 Sep 2022 16:04:25 -0700 Subject: [PATCH 051/124] add proc-swaps parser --- docs/parsers/proc_swaps.md | 91 +++++++++++++++++++++++++ jc/lib.py | 1 + jc/parsers/proc_swaps.py | 132 +++++++++++++++++++++++++++++++++++++ man/jc.1 | 5 ++ 4 files changed, 229 insertions(+) create mode 100644 docs/parsers/proc_swaps.md create mode 100644 jc/parsers/proc_swaps.py diff --git a/docs/parsers/proc_swaps.md b/docs/parsers/proc_swaps.md new file mode 100644 index 00000000..47237358 --- /dev/null +++ b/docs/parsers/proc_swaps.md @@ -0,0 +1,91 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_swaps + +jc - JSON Convert `/proc/swaps` file parser + +Usage (cli): + + $ cat /proc/swaps | jc --proc + +or + + $ jc /proc/swaps + +or + + $ cat /proc/swaps | jc --proc-swaps + +Usage (module): + + import jc + result = jc.parse('proc', proc_swaps_file) + +or + + import jc + result = jc.parse('proc_swaps', proc_swaps_file) + +Schema: + + [ + { + "filename": string, + "type": string, + "size": integer, + "used": integer, + "priority": integer + } + ] + +Examples: + + $ cat /proc/swaps | jc --proc -p + [ + { + "filename": "/swap.img", + "type": "file", + "size": 3996668, + "used": 0, + "priority": -2 + }, + ... + ] + + $ cat /proc/swaps | jc --proc_swaps -p -r + [ + { + "filename": "/swap.img", + "type": "file", + "size": "3996668", + "used": "0", + "priority": "-2" + }, + ... + ] + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict] +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + List of Dictionaries. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/lib.py b/jc/lib.py index c43b3e33..36e26946 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -106,6 +106,7 @@ parsers = [ 'proc-slabinfo', 'proc-softirqs', 'proc-stat', + 'proc-swaps', 'proc-pid-numa-maps', 'ps', 'route', diff --git a/jc/parsers/proc_swaps.py b/jc/parsers/proc_swaps.py new file mode 100644 index 00000000..2669159d --- /dev/null +++ b/jc/parsers/proc_swaps.py @@ -0,0 +1,132 @@ +"""jc - JSON Convert `/proc/swaps` file parser + +Usage (cli): + + $ cat /proc/swaps | jc --proc + +or + + $ jc /proc/swaps + +or + + $ cat /proc/swaps | jc --proc-swaps + +Usage (module): + + import jc + result = jc.parse('proc', proc_swaps_file) + +or + + import jc + result = jc.parse('proc_swaps', proc_swaps_file) + +Schema: + + [ + { + "filename": string, + "type": string, + "size": integer, + "used": integer, + "priority": integer + } + ] + +Examples: + + $ cat /proc/swaps | jc --proc -p + [ + { + "filename": "/swap.img", + "type": "file", + "size": 3996668, + "used": 0, + "priority": -2 + }, + ... + ] + + $ cat /proc/swaps | jc --proc_swaps -p -r + [ + { + "filename": "/swap.img", + "type": "file", + "size": "3996668", + "used": "0", + "priority": "-2" + }, + ... + ] +""" +from typing import List, Dict +import jc.utils +from jc.parsers.universal import simple_table_parse + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc/swaps` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + hidden = True + + +__version__ = info.version + + +def _process(proc_data: List[Dict]) -> List[Dict]: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (List of Dictionaries) raw structured data to process + + Returns: + + List of Dictionaries. Structured to conform to the schema. + """ + int_list = {'size', 'used', 'priority'} + + for entry in proc_data: + for key in entry: + if key in int_list: + entry[key] = jc.utils.convert_to_int(entry[key]) + + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> List[Dict]: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + List of Dictionaries. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: List = [] + + if jc.utils.has_data(data): + + cleandata = list(filter(None, data.splitlines())) + cleandata[0] = cleandata[0].lower() + raw_output = simple_table_parse(cleandata) + + return raw_output if raw else _process(raw_output) diff --git a/man/jc.1 b/man/jc.1 index d6d52b16..c2545fb4 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -515,6 +515,11 @@ PLIST file parser \fB--proc-stat\fP `/proc/stat` file parser +.TP +.B +\fB--proc-swaps\fP +`/proc/swaps` file parser + .TP .B \fB--proc-pid-numa-maps\fP From 0e35e857534adb2f6a713e3b85a8d5c4dcb7e4a2 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Fri, 16 Sep 2022 16:14:28 -0700 Subject: [PATCH 052/124] add proc-uptime parser --- docs/parsers/proc_uptime.md | 68 +++++++++++++++++++++++ jc/lib.py | 1 + jc/parsers/proc_uptime.py | 104 ++++++++++++++++++++++++++++++++++++ man/jc.1 | 5 ++ 4 files changed, 178 insertions(+) create mode 100644 docs/parsers/proc_uptime.md create mode 100644 jc/parsers/proc_uptime.py diff --git a/docs/parsers/proc_uptime.md b/docs/parsers/proc_uptime.md new file mode 100644 index 00000000..47fadf70 --- /dev/null +++ b/docs/parsers/proc_uptime.md @@ -0,0 +1,68 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_uptime + +jc - JSON Convert `/proc/uptime` file parser + +Usage (cli): + + $ cat /proc/uptime | jc --proc + +or + + $ jc /proc/uptime + +or + + $ cat /proc/uptime | jc --proc-uptime + +Usage (module): + + import jc + result = jc.parse('proc', proc_uptime_file) + +or + + import jc + result = jc.parse('proc_uptime', proc_uptime_file) + +Schema: + + { + "up_time": float, + "idle_time": float + } + +Examples: + + $ cat /proc/uptime | jc --proc -p + { + "up_time": 46901.13, + "idle_time": 46856.66 + } + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> Dict +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + Dictionary. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/lib.py b/jc/lib.py index 36e26946..535240de 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -107,6 +107,7 @@ parsers = [ 'proc-softirqs', 'proc-stat', 'proc-swaps', + 'proc-uptime', 'proc-pid-numa-maps', 'ps', 'route', diff --git a/jc/parsers/proc_uptime.py b/jc/parsers/proc_uptime.py new file mode 100644 index 00000000..abea777f --- /dev/null +++ b/jc/parsers/proc_uptime.py @@ -0,0 +1,104 @@ +"""jc - JSON Convert `/proc/uptime` file parser + +Usage (cli): + + $ cat /proc/uptime | jc --proc + +or + + $ jc /proc/uptime + +or + + $ cat /proc/uptime | jc --proc-uptime + +Usage (module): + + import jc + result = jc.parse('proc', proc_uptime_file) + +or + + import jc + result = jc.parse('proc_uptime', proc_uptime_file) + +Schema: + + { + "up_time": float, + "idle_time": float + } + +Examples: + + $ cat /proc/uptime | jc --proc -p + { + "up_time": 46901.13, + "idle_time": 46856.66 + } +""" +from typing import Dict +import jc.utils + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc/uptime` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + hidden = True + + +__version__ = info.version + + +def _process(proc_data: Dict) -> Dict: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (Dictionary) raw structured data to process + + Returns: + + Dictionary. Structured to conform to the schema. + """ + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> Dict: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + Dictionary. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: Dict = {} + + if jc.utils.has_data(data): + + uptime, idletime = data.split() + + raw_output = { + 'up_time': float(uptime), + 'idle_time': float(idletime) + } + + return raw_output if raw else _process(raw_output) diff --git a/man/jc.1 b/man/jc.1 index c2545fb4..b59a8963 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -520,6 +520,11 @@ PLIST file parser \fB--proc-swaps\fP `/proc/swaps` file parser +.TP +.B +\fB--proc-uptime\fP +`/proc/uptime` file parser + .TP .B \fB--proc-pid-numa-maps\fP From 0bebb312dd208c61d508855e863a77b3ec88057d Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Sat, 17 Sep 2022 12:32:15 -0700 Subject: [PATCH 053/124] add proc-version parser --- docs/parsers/proc_version.md | 79 ++++++++++++++++++++++ jc/lib.py | 1 + jc/parsers/proc_version.py | 127 +++++++++++++++++++++++++++++++++++ man/jc.1 | 7 +- 4 files changed, 213 insertions(+), 1 deletion(-) create mode 100644 docs/parsers/proc_version.md create mode 100644 jc/parsers/proc_version.py diff --git a/docs/parsers/proc_version.md b/docs/parsers/proc_version.md new file mode 100644 index 00000000..178ca9e1 --- /dev/null +++ b/docs/parsers/proc_version.md @@ -0,0 +1,79 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_version + +jc - JSON Convert `/proc/version` file parser + +> Note: This parser will parse `/proc/version` files that follow the +> common format used by most popular distributions. + +Usage (cli): + + $ cat /proc/version | jc --proc + +or + + $ jc /proc/version + +or + + $ cat /proc/version | jc --proc-version + +Usage (module): + + import jc + result = jc.parse('proc', proc_version_file) + +or + + import jc + result = jc.parse('proc_version', proc_version_file) + +Schema: + + { + "version": string, + "email": string, + "gcc": string, + "build": string, + "flags": string/null, + "date": string + } + +Examples: + + $ cat /proc/version | jc --proc -p + { + "version": "5.8.0-63-generic", + "email": "buildd@lcy01-amd64-028", + "gcc": "gcc (Ubuntu 10.3.0-1ubuntu1~20.10) 10.3.0, GNU ld (GNU Binutils for Ubuntu) 2.35.1", + "build": "#71-Ubuntu", + "flags": "SMP", + "date": "Tue Jul 13 15:59:12 UTC 2021" + } + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> Dict +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + Dictionary. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/lib.py b/jc/lib.py index 535240de..cee0f3e6 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -108,6 +108,7 @@ parsers = [ 'proc-stat', 'proc-swaps', 'proc-uptime', + 'proc-version', 'proc-pid-numa-maps', 'ps', 'route', diff --git a/jc/parsers/proc_version.py b/jc/parsers/proc_version.py new file mode 100644 index 00000000..89bab8a1 --- /dev/null +++ b/jc/parsers/proc_version.py @@ -0,0 +1,127 @@ +"""jc - JSON Convert `/proc/version` file parser + +> Note: This parser will parse `/proc/version` files that follow the +> common format used by most popular distributions. + +Usage (cli): + + $ cat /proc/version | jc --proc + +or + + $ jc /proc/version + +or + + $ cat /proc/version | jc --proc-version + +Usage (module): + + import jc + result = jc.parse('proc', proc_version_file) + +or + + import jc + result = jc.parse('proc_version', proc_version_file) + +Schema: + + { + "version": string, + "email": string, + "gcc": string, + "build": string, + "flags": string/null, + "date": string + } + +Examples: + + $ cat /proc/version | jc --proc -p + { + "version": "5.8.0-63-generic", + "email": "buildd@lcy01-amd64-028", + "gcc": "gcc (Ubuntu 10.3.0-1ubuntu1~20.10) 10.3.0, GNU ld (GNU Binutils for Ubuntu) 2.35.1", + "build": "#71-Ubuntu", + "flags": "SMP", + "date": "Tue Jul 13 15:59:12 UTC 2021" + } +""" +import re +from typing import Dict +import jc.utils + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc/version` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + hidden = True + + +__version__ = info.version + + +# inspired by https://gist.github.com/ty2/ad61340e7a4067def2e3c709496bca9d +version_pattern = re.compile(r''' + Linux\ version\ (?P\S+)\s + \((?P\S+?)\)\s + \((?Pgcc.+)\)\s + (?P\#\d+(\S+)?)\s + (?P.*)? + (?P(Sun|Mon|Tue|Wed|Thu|Fri|Sat).+) + ''', re.VERBOSE +) + + +def _process(proc_data: Dict) -> Dict: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (Dictionary) raw structured data to process + + Returns: + + Dictionary. Structured to conform to the schema. + """ + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> Dict: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + Dictionary. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: Dict = {} + + if jc.utils.has_data(data): + version_match = version_pattern.match(data) + + if version_match: + + ver_dict = version_match.groupdict() + raw_output = {x: y.strip() or None for x, y in ver_dict.items()} + + return raw_output if raw else _process(raw_output) diff --git a/man/jc.1 b/man/jc.1 index b59a8963..7d74df22 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -1,4 +1,4 @@ -.TH jc 1 2022-09-16 1.21.2 "JSON Convert" +.TH jc 1 2022-09-17 1.21.2 "JSON Convert" .SH NAME \fBjc\fP \- JSON Convert JSONifies the output of many CLI tools, file-types, and strings .SH SYNOPSIS @@ -525,6 +525,11 @@ PLIST file parser \fB--proc-uptime\fP `/proc/uptime` file parser +.TP +.B +\fB--proc-version\fP +`/proc/version` file parser + .TP .B \fB--proc-pid-numa-maps\fP From a0ae19a8fdb901c637925a8c3bd7f3b7061868b0 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Sat, 17 Sep 2022 12:36:22 -0700 Subject: [PATCH 054/124] formatting --- docs/parsers/proc_version.md | 2 +- jc/parsers/proc_version.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/parsers/proc_version.md b/docs/parsers/proc_version.md index 178ca9e1..5234e916 100644 --- a/docs/parsers/proc_version.md +++ b/docs/parsers/proc_version.md @@ -6,7 +6,7 @@ jc - JSON Convert `/proc/version` file parser > Note: This parser will parse `/proc/version` files that follow the -> common format used by most popular distributions. +> common format used by most popular linux distributions. Usage (cli): diff --git a/jc/parsers/proc_version.py b/jc/parsers/proc_version.py index 89bab8a1..8b888274 100644 --- a/jc/parsers/proc_version.py +++ b/jc/parsers/proc_version.py @@ -1,7 +1,7 @@ """jc - JSON Convert `/proc/version` file parser > Note: This parser will parse `/proc/version` files that follow the -> common format used by most popular distributions. +> common format used by most popular linux distributions. Usage (cli): From 28425cc493677bd0d198a382437875bea08ef200 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Sat, 17 Sep 2022 13:26:10 -0700 Subject: [PATCH 055/124] add proc-vmallocinfo parser --- docs/parsers/proc_vmallocinfo.md | 126 ++++++++++++++++++++ jc/lib.py | 1 + jc/parsers/proc_vmallocinfo.py | 195 +++++++++++++++++++++++++++++++ man/jc.1 | 5 + 4 files changed, 327 insertions(+) create mode 100644 docs/parsers/proc_vmallocinfo.md create mode 100644 jc/parsers/proc_vmallocinfo.py diff --git a/docs/parsers/proc_vmallocinfo.md b/docs/parsers/proc_vmallocinfo.md new file mode 100644 index 00000000..1eb11bf0 --- /dev/null +++ b/docs/parsers/proc_vmallocinfo.md @@ -0,0 +1,126 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_vmallocinfo + +jc - JSON Convert `/proc/vmallocinfo` file parser + +This parser will attempt to convert number values to integers. If that is +not desired, please use the `--raw` option (cli) or `raw=True` argument +(module). + +Usage (cli): + + $ cat /proc/vmallocinfo | jc --proc + +or + + $ jc /proc/vmallocinfo + +or + + $ cat /proc/vmallocinfo | jc --proc-vmallocinfo + +Usage (module): + + import jc + result = jc.parse('proc', proc_vmallocinfo_file) + +or + + import jc + result = jc.parse('proc_vmallocinfo', proc_vmallocinfo_file) + +Schema: + + [ + { + "start": string, + "end": string, + "size": integer, + "caller": string, + "options": [ + string + ], + "phys": string + "pages": integer, + "N": integer + } + ] + +Examples: + + $ cat /proc/vmallocinfo | jc --proc -p + [ + { + "start": "0xffffb3c1c0000000", + "end": "0xffffb3c1c0005000", + "size": 20480, + "caller": "map_irq_stack+0x93/0xe0", + "options": [ + "vmap" + ], + "phys": "0x00000000bfefe000" + }, + { + "start": "0xffffb3c1c0005000", + "end": "0xffffb3c1c0007000", + "size": 8192, + "caller": "acpi_os_map_iomem+0x1ac/0x1c0", + "options": [ + "ioremap" + ], + "phys": "0x00000000bfeff000" + }, + ... + ] + + $ cat /proc/vmallocinfo | jc --proc -p -r + [ + { + "start": "0xffffb3c1c0000000", + "end": "0xffffb3c1c0005000", + "size": "20480", + "caller": "map_irq_stack+0x93/0xe0", + "options": [ + "vmap" + ], + "phys": "0x00000000bfefe000" + }, + { + "start": "0xffffb3c1c0005000", + "end": "0xffffb3c1c0007000", + "size": "8192", + "caller": "acpi_os_map_iomem+0x1ac/0x1c0", + "options": [ + "ioremap" + ], + "phys": "0x00000000bfeff000" + }, + ... + ] + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict] +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + List of Dictionaries. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/lib.py b/jc/lib.py index cee0f3e6..88fa425a 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -109,6 +109,7 @@ parsers = [ 'proc-swaps', 'proc-uptime', 'proc-version', + 'proc-vmallocinfo', 'proc-pid-numa-maps', 'ps', 'route', diff --git a/jc/parsers/proc_vmallocinfo.py b/jc/parsers/proc_vmallocinfo.py new file mode 100644 index 00000000..b2044264 --- /dev/null +++ b/jc/parsers/proc_vmallocinfo.py @@ -0,0 +1,195 @@ +"""jc - JSON Convert `/proc/vmallocinfo` file parser + +This parser will attempt to convert number values to integers. If that is +not desired, please use the `--raw` option (cli) or `raw=True` argument +(module). + +Usage (cli): + + $ cat /proc/vmallocinfo | jc --proc + +or + + $ jc /proc/vmallocinfo + +or + + $ cat /proc/vmallocinfo | jc --proc-vmallocinfo + +Usage (module): + + import jc + result = jc.parse('proc', proc_vmallocinfo_file) + +or + + import jc + result = jc.parse('proc_vmallocinfo', proc_vmallocinfo_file) + +Schema: + + [ + { + "start": string, + "end": string, + "size": integer, + "caller": string, + "options": [ + string + ], + "phys": string + "pages": integer, + "N": integer + } + ] + +Examples: + + $ cat /proc/vmallocinfo | jc --proc -p + [ + { + "start": "0xffffb3c1c0000000", + "end": "0xffffb3c1c0005000", + "size": 20480, + "caller": "map_irq_stack+0x93/0xe0", + "options": [ + "vmap" + ], + "phys": "0x00000000bfefe000" + }, + { + "start": "0xffffb3c1c0005000", + "end": "0xffffb3c1c0007000", + "size": 8192, + "caller": "acpi_os_map_iomem+0x1ac/0x1c0", + "options": [ + "ioremap" + ], + "phys": "0x00000000bfeff000" + }, + ... + ] + + $ cat /proc/vmallocinfo | jc --proc -p -r + [ + { + "start": "0xffffb3c1c0000000", + "end": "0xffffb3c1c0005000", + "size": "20480", + "caller": "map_irq_stack+0x93/0xe0", + "options": [ + "vmap" + ], + "phys": "0x00000000bfefe000" + }, + { + "start": "0xffffb3c1c0005000", + "end": "0xffffb3c1c0007000", + "size": "8192", + "caller": "acpi_os_map_iomem+0x1ac/0x1c0", + "options": [ + "ioremap" + ], + "phys": "0x00000000bfeff000" + }, + ... + ] +""" +from typing import List, Dict +import jc.utils + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc/vmallocinfo` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + hidden = True + + +__version__ = info.version + + +def _process(proc_data: List[Dict]) -> List[Dict]: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (List of Dictionaries) raw structured data to process + + Returns: + + List of Dictionaries. Structured to conform to the schema. + """ + for entry in proc_data: + for key in entry: + if isinstance(entry[key], str): + try: + entry[key] = int(entry[key]) + except Exception: + pass + + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> List[Dict]: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + List of Dictionaries. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: List = [] + output_line: Dict = {} + + if jc.utils.has_data(data): + + for line in filter(None, data.splitlines()): + area, size, details = line.split(maxsplit=2) + start, end = area.split('-', maxsplit=1) + detail_split = details.split() + caller = '' + options: List = [] + + + if details == 'unpurged vm_area': + caller = 'unpurged vm_area' + + else: + caller = detail_split[0] + for item in detail_split[1:]: + if '=' in item: + key, val = item.split('=') + output_line.update({key: val}) + else: + options.append(item) + + output_line = { + 'start': start, + 'end': end, + 'size': size, + 'caller': caller or None, + 'options': options + } + + if output_line: + raw_output.append(output_line) + + return raw_output if raw else _process(raw_output) diff --git a/man/jc.1 b/man/jc.1 index 7d74df22..d29f7b9a 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -530,6 +530,11 @@ PLIST file parser \fB--proc-version\fP `/proc/version` file parser +.TP +.B +\fB--proc-vmallocinfo\fP +`/proc/vmallocinfo` file parser + .TP .B \fB--proc-pid-numa-maps\fP From 52d252f1996d5c13691066ec1fb9605f0357bcd6 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Sat, 17 Sep 2022 13:27:50 -0700 Subject: [PATCH 056/124] formatting --- jc/parsers/proc_vmallocinfo.py | 1 - 1 file changed, 1 deletion(-) diff --git a/jc/parsers/proc_vmallocinfo.py b/jc/parsers/proc_vmallocinfo.py index b2044264..86f58eed 100644 --- a/jc/parsers/proc_vmallocinfo.py +++ b/jc/parsers/proc_vmallocinfo.py @@ -168,7 +168,6 @@ def parse( caller = '' options: List = [] - if details == 'unpurged vm_area': caller = 'unpurged vm_area' From e5913cd10d80ccb8147aec15fe1168404915e4a1 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Sat, 17 Sep 2022 13:33:31 -0700 Subject: [PATCH 057/124] add proc-vmstat parser --- jc/parsers/proc_vmstat.py | 117 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 jc/parsers/proc_vmstat.py diff --git a/jc/parsers/proc_vmstat.py b/jc/parsers/proc_vmstat.py new file mode 100644 index 00000000..128d0f70 --- /dev/null +++ b/jc/parsers/proc_vmstat.py @@ -0,0 +1,117 @@ +"""jc - JSON Convert `/proc/vmstat` file parser + +Usage (cli): + + $ cat /proc/vmstat | jc --proc + +or + + $ jc /proc/vmstat + +or + + $ cat /proc/vmstat | jc --proc-vmstat + +Usage (module): + + import jc + result = jc.parse('proc', proc_vmstat_file) + +or + + import jc + result = jc.parse('proc_vmstat', proc_vmstat_file) + +Schema: + +All values are integers. + + { + integer + } + +Examples: + + $ cat /proc/vmstat | jc --proc -p + { + "nr_free_pages": 615337, + "nr_zone_inactive_anon": 39, + "nr_zone_active_anon": 34838, + "nr_zone_inactive_file": 104036, + "nr_zone_active_file": 130601, + "nr_zone_unevictable": 4897, + "nr_zone_write_pending": 45, + "nr_mlock": 4897, + "nr_page_table_pages": 548, + "nr_kernel_stack": 5984, + "nr_bounce": 0, + "nr_zspages": 0, + "nr_free_cma": 0, + "numa_hit": 1910597, + "numa_miss": 0, + "numa_foreign": 0, + ... + } +""" +from typing import Dict +import jc.utils + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc/vmstat` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + hidden = True + + +__version__ = info.version + + +def _process(proc_data: Dict) -> Dict: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (Dictionary) raw structured data to process + + Returns: + + Dictionary. Structured to conform to the schema. + """ + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> Dict: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + Dictionary. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: Dict = {} + + if jc.utils.has_data(data): + + for line in filter(None, data.splitlines()): + key, val = line.split(maxsplit=1) + raw_output[key] = int(val) + + return raw_output if raw else _process(raw_output) From 906eeefa522098794b6397bff1e5a28567cf0354 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Sat, 17 Sep 2022 13:34:40 -0700 Subject: [PATCH 058/124] add proc-vmstat parser --- docs/parsers/proc_vmstat.md | 84 +++++++++++++++++++++++++++++++++++++ jc/lib.py | 1 + man/jc.1 | 5 +++ 3 files changed, 90 insertions(+) create mode 100644 docs/parsers/proc_vmstat.md diff --git a/docs/parsers/proc_vmstat.md b/docs/parsers/proc_vmstat.md new file mode 100644 index 00000000..d1e6a098 --- /dev/null +++ b/docs/parsers/proc_vmstat.md @@ -0,0 +1,84 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_vmstat + +jc - JSON Convert `/proc/vmstat` file parser + +Usage (cli): + + $ cat /proc/vmstat | jc --proc + +or + + $ jc /proc/vmstat + +or + + $ cat /proc/vmstat | jc --proc-vmstat + +Usage (module): + + import jc + result = jc.parse('proc', proc_vmstat_file) + +or + + import jc + result = jc.parse('proc_vmstat', proc_vmstat_file) + +Schema: + +All values are integers. + + { + integer + } + +Examples: + + $ cat /proc/vmstat | jc --proc -p + { + "nr_free_pages": 615337, + "nr_zone_inactive_anon": 39, + "nr_zone_active_anon": 34838, + "nr_zone_inactive_file": 104036, + "nr_zone_active_file": 130601, + "nr_zone_unevictable": 4897, + "nr_zone_write_pending": 45, + "nr_mlock": 4897, + "nr_page_table_pages": 548, + "nr_kernel_stack": 5984, + "nr_bounce": 0, + "nr_zspages": 0, + "nr_free_cma": 0, + "numa_hit": 1910597, + "numa_miss": 0, + "numa_foreign": 0, + ... + } + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> Dict +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + Dictionary. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/lib.py b/jc/lib.py index 88fa425a..a8777f9c 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -110,6 +110,7 @@ parsers = [ 'proc-uptime', 'proc-version', 'proc-vmallocinfo', + 'proc-vmstat', 'proc-pid-numa-maps', 'ps', 'route', diff --git a/man/jc.1 b/man/jc.1 index d29f7b9a..d679395c 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -535,6 +535,11 @@ PLIST file parser \fB--proc-vmallocinfo\fP `/proc/vmallocinfo` file parser +.TP +.B +\fB--proc-vmstat\fP +`/proc/vmstat` file parser + .TP .B \fB--proc-pid-numa-maps\fP From 92a044ba9b9163a1e2ce7c8db359210964ed2965 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Sat, 17 Sep 2022 17:39:16 -0700 Subject: [PATCH 059/124] add proc-zoneinfo parser --- docs/parsers/proc_zoneinfo.md | 334 +++++++++++++++++++++++++ jc/lib.py | 1 + jc/parsers/proc_zoneinfo.py | 448 ++++++++++++++++++++++++++++++++++ man/jc.1 | 5 + 4 files changed, 788 insertions(+) create mode 100644 docs/parsers/proc_zoneinfo.md create mode 100644 jc/parsers/proc_zoneinfo.py diff --git a/docs/parsers/proc_zoneinfo.md b/docs/parsers/proc_zoneinfo.md new file mode 100644 index 00000000..e21faf8a --- /dev/null +++ b/docs/parsers/proc_zoneinfo.md @@ -0,0 +1,334 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_zoneinfo + +jc - JSON Convert `/proc/zoneinfo` file parser + +Usage (cli): + + $ cat /proc/zoneinfo | jc --proc + +or + + $ jc /proc/zoneinfo + +or + + $ cat /proc/zoneinfo | jc --proc-zoneinfo + +Usage (module): + + import jc + result = jc.parse('proc', proc_zoneinfo_file) + +or + + import jc + result = jc.parse('proc_zoneinfo', proc_zoneinfo_file) + +Schema: + +All values are integers. + + [ + { + "node": integer, + "": { + "pages": { + "free": integer, + "min": integer, + "low": integer, + "high": integer, + "spanned": integer, + "present": integer, + "managed": integer, + "protection": [ + integer + ], + "": integer + }, + "pagesets": [ + { + "cpu": integer, + "count": integer, + "high": integer, + "batch": integer, + "vm stats threshold": integer, + "": integer + } + ] + }, + "": integer, # [0] + } + ] + + [0] per-node stats + +Examples: + + $ cat /proc/zoneinfo | jc --proc -p + [ + { + "node": 0, + "DMA": { + "pages": { + "free": 3832, + "min": 68, + "low": 85, + "high": 102, + "spanned": 4095, + "present": 3997, + "managed": 3976, + "protection": [ + 0, + 2871, + 3795, + 3795, + 3795 + ], + "nr_free_pages": 3832, + "nr_zone_inactive_anon": 0, + "nr_zone_active_anon": 0, + "nr_zone_inactive_file": 0, + "nr_zone_active_file": 0, + "nr_zone_unevictable": 0, + "nr_zone_write_pending": 0, + "nr_mlock": 0, + "nr_page_table_pages": 0, + "nr_kernel_stack": 0, + "nr_bounce": 0, + "nr_zspages": 0, + "nr_free_cma": 0, + "numa_hit": 3, + "numa_miss": 0, + "numa_foreign": 0, + "numa_interleave": 1, + "numa_local": 3, + "numa_other": 0 + }, + "pagesets": [ + { + "cpu": 0, + "count": 0, + "high": 0, + "batch": 1, + "vm stats threshold": 4 + }, + { + "cpu": 1, + "count": 0, + "high": 0, + "batch": 1, + "vm stats threshold": 4, + "node_unreclaimable": 0, + "start_pfn": 1 + } + ] + }, + "nr_inactive_anon": 39, + "nr_active_anon": 34839, + "nr_inactive_file": 104172, + "nr_active_file": 130748, + "nr_unevictable": 4897, + "nr_slab_reclaimable": 49017, + "nr_slab_unreclaimable": 26177, + "nr_isolated_anon": 0, + "nr_isolated_file": 0, + "workingset_nodes": 0, + "workingset_refault": 0, + "workingset_activate": 0, + "workingset_restore": 0, + "workingset_nodereclaim": 0, + "nr_anon_pages": 40299, + "nr_mapped": 25140, + "nr_file_pages": 234396, + "nr_dirty": 0, + "nr_writeback": 0, + "nr_writeback_temp": 0, + "nr_shmem": 395, + "nr_shmem_hugepages": 0, + "nr_shmem_pmdmapped": 0, + "nr_file_hugepages": 0, + "nr_file_pmdmapped": 0, + "nr_anon_transparent_hugepages": 0, + "nr_vmscan_write": 0, + "nr_vmscan_immediate_reclaim": 0, + "nr_dirtied": 168223, + "nr_written": 144616, + "nr_kernel_misc_reclaimable": 0, + "nr_foll_pin_acquired": 0, + "nr_foll_pin_released": 0, + "DMA32": { + "pages": { + "free": 606010, + "min": 12729, + "low": 15911, + "high": 19093, + "spanned": 1044480, + "present": 782288, + "managed": 758708, + "protection": [ + 0, + 0, + 924, + 924, + 924 + ], + "nr_free_pages": 606010, + "nr_zone_inactive_anon": 4, + "nr_zone_active_anon": 17380, + "nr_zone_inactive_file": 41785, + "nr_zone_active_file": 64545, + "nr_zone_unevictable": 5, + "nr_zone_write_pending": 0, + "nr_mlock": 5, + "nr_page_table_pages": 101, + "nr_kernel_stack": 224, + "nr_bounce": 0, + "nr_zspages": 0, + "nr_free_cma": 0, + "numa_hit": 576595, + "numa_miss": 0, + "numa_foreign": 0, + "numa_interleave": 2, + "numa_local": 576595, + "numa_other": 0 + }, + "pagesets": [ + { + "cpu": 0, + "count": 253, + "high": 378, + "batch": 63, + "vm stats threshold": 24 + }, + { + "cpu": 1, + "count": 243, + "high": 378, + "batch": 63, + "vm stats threshold": 24, + "node_unreclaimable": 0, + "start_pfn": 4096 + } + ] + }, + "Normal": { + "pages": { + "free": 5113, + "min": 4097, + "low": 5121, + "high": 6145, + "spanned": 262144, + "present": 262144, + "managed": 236634, + "protection": [ + 0, + 0, + 0, + 0, + 0 + ], + "nr_free_pages": 5113, + "nr_zone_inactive_anon": 35, + "nr_zone_active_anon": 17459, + "nr_zone_inactive_file": 62387, + "nr_zone_active_file": 66203, + "nr_zone_unevictable": 4892, + "nr_zone_write_pending": 0, + "nr_mlock": 4892, + "nr_page_table_pages": 447, + "nr_kernel_stack": 5760, + "nr_bounce": 0, + "nr_zspages": 0, + "nr_free_cma": 0, + "numa_hit": 1338441, + "numa_miss": 0, + "numa_foreign": 0, + "numa_interleave": 66037, + "numa_local": 1338441, + "numa_other": 0 + }, + "pagesets": [ + { + "cpu": 0, + "count": 340, + "high": 378, + "batch": 63, + "vm stats threshold": 16 + }, + { + "cpu": 1, + "count": 174, + "high": 378, + "batch": 63, + "vm stats threshold": 16, + "node_unreclaimable": 0, + "start_pfn": 1048576 + } + ] + }, + "Movable": { + "pages": { + "free": 0, + "min": 0, + "low": 0, + "high": 0, + "spanned": 0, + "present": 0, + "managed": 0, + "protection": [ + 0, + 0, + 0, + 0, + 0 + ] + } + }, + "Device": { + "pages": { + "free": 0, + "min": 0, + "low": 0, + "high": 0, + "spanned": 0, + "present": 0, + "managed": 0, + "protection": [ + 0, + 0, + 0, + 0, + 0 + ] + } + } + } + ] + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict] +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + List of Dictionaries. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/lib.py b/jc/lib.py index a8777f9c..0a01105a 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -111,6 +111,7 @@ parsers = [ 'proc-version', 'proc-vmallocinfo', 'proc-vmstat', + 'proc-zoneinfo', 'proc-pid-numa-maps', 'ps', 'route', diff --git a/jc/parsers/proc_zoneinfo.py b/jc/parsers/proc_zoneinfo.py new file mode 100644 index 00000000..d2f92be7 --- /dev/null +++ b/jc/parsers/proc_zoneinfo.py @@ -0,0 +1,448 @@ +"""jc - JSON Convert `/proc/zoneinfo` file parser + +Usage (cli): + + $ cat /proc/zoneinfo | jc --proc + +or + + $ jc /proc/zoneinfo + +or + + $ cat /proc/zoneinfo | jc --proc-zoneinfo + +Usage (module): + + import jc + result = jc.parse('proc', proc_zoneinfo_file) + +or + + import jc + result = jc.parse('proc_zoneinfo', proc_zoneinfo_file) + +Schema: + +All values are integers. + + [ + { + "node": integer, + "": { + "pages": { + "free": integer, + "min": integer, + "low": integer, + "high": integer, + "spanned": integer, + "present": integer, + "managed": integer, + "protection": [ + integer + ], + "": integer + }, + "pagesets": [ + { + "cpu": integer, + "count": integer, + "high": integer, + "batch": integer, + "vm stats threshold": integer, + "": integer + } + ] + }, + "": integer, # [0] + } + ] + + [0] per-node stats + +Examples: + + $ cat /proc/zoneinfo | jc --proc -p + [ + { + "node": 0, + "DMA": { + "pages": { + "free": 3832, + "min": 68, + "low": 85, + "high": 102, + "spanned": 4095, + "present": 3997, + "managed": 3976, + "protection": [ + 0, + 2871, + 3795, + 3795, + 3795 + ], + "nr_free_pages": 3832, + "nr_zone_inactive_anon": 0, + "nr_zone_active_anon": 0, + "nr_zone_inactive_file": 0, + "nr_zone_active_file": 0, + "nr_zone_unevictable": 0, + "nr_zone_write_pending": 0, + "nr_mlock": 0, + "nr_page_table_pages": 0, + "nr_kernel_stack": 0, + "nr_bounce": 0, + "nr_zspages": 0, + "nr_free_cma": 0, + "numa_hit": 3, + "numa_miss": 0, + "numa_foreign": 0, + "numa_interleave": 1, + "numa_local": 3, + "numa_other": 0 + }, + "pagesets": [ + { + "cpu": 0, + "count": 0, + "high": 0, + "batch": 1, + "vm stats threshold": 4 + }, + { + "cpu": 1, + "count": 0, + "high": 0, + "batch": 1, + "vm stats threshold": 4, + "node_unreclaimable": 0, + "start_pfn": 1 + } + ] + }, + "nr_inactive_anon": 39, + "nr_active_anon": 34839, + "nr_inactive_file": 104172, + "nr_active_file": 130748, + "nr_unevictable": 4897, + "nr_slab_reclaimable": 49017, + "nr_slab_unreclaimable": 26177, + "nr_isolated_anon": 0, + "nr_isolated_file": 0, + "workingset_nodes": 0, + "workingset_refault": 0, + "workingset_activate": 0, + "workingset_restore": 0, + "workingset_nodereclaim": 0, + "nr_anon_pages": 40299, + "nr_mapped": 25140, + "nr_file_pages": 234396, + "nr_dirty": 0, + "nr_writeback": 0, + "nr_writeback_temp": 0, + "nr_shmem": 395, + "nr_shmem_hugepages": 0, + "nr_shmem_pmdmapped": 0, + "nr_file_hugepages": 0, + "nr_file_pmdmapped": 0, + "nr_anon_transparent_hugepages": 0, + "nr_vmscan_write": 0, + "nr_vmscan_immediate_reclaim": 0, + "nr_dirtied": 168223, + "nr_written": 144616, + "nr_kernel_misc_reclaimable": 0, + "nr_foll_pin_acquired": 0, + "nr_foll_pin_released": 0, + "DMA32": { + "pages": { + "free": 606010, + "min": 12729, + "low": 15911, + "high": 19093, + "spanned": 1044480, + "present": 782288, + "managed": 758708, + "protection": [ + 0, + 0, + 924, + 924, + 924 + ], + "nr_free_pages": 606010, + "nr_zone_inactive_anon": 4, + "nr_zone_active_anon": 17380, + "nr_zone_inactive_file": 41785, + "nr_zone_active_file": 64545, + "nr_zone_unevictable": 5, + "nr_zone_write_pending": 0, + "nr_mlock": 5, + "nr_page_table_pages": 101, + "nr_kernel_stack": 224, + "nr_bounce": 0, + "nr_zspages": 0, + "nr_free_cma": 0, + "numa_hit": 576595, + "numa_miss": 0, + "numa_foreign": 0, + "numa_interleave": 2, + "numa_local": 576595, + "numa_other": 0 + }, + "pagesets": [ + { + "cpu": 0, + "count": 253, + "high": 378, + "batch": 63, + "vm stats threshold": 24 + }, + { + "cpu": 1, + "count": 243, + "high": 378, + "batch": 63, + "vm stats threshold": 24, + "node_unreclaimable": 0, + "start_pfn": 4096 + } + ] + }, + "Normal": { + "pages": { + "free": 5113, + "min": 4097, + "low": 5121, + "high": 6145, + "spanned": 262144, + "present": 262144, + "managed": 236634, + "protection": [ + 0, + 0, + 0, + 0, + 0 + ], + "nr_free_pages": 5113, + "nr_zone_inactive_anon": 35, + "nr_zone_active_anon": 17459, + "nr_zone_inactive_file": 62387, + "nr_zone_active_file": 66203, + "nr_zone_unevictable": 4892, + "nr_zone_write_pending": 0, + "nr_mlock": 4892, + "nr_page_table_pages": 447, + "nr_kernel_stack": 5760, + "nr_bounce": 0, + "nr_zspages": 0, + "nr_free_cma": 0, + "numa_hit": 1338441, + "numa_miss": 0, + "numa_foreign": 0, + "numa_interleave": 66037, + "numa_local": 1338441, + "numa_other": 0 + }, + "pagesets": [ + { + "cpu": 0, + "count": 340, + "high": 378, + "batch": 63, + "vm stats threshold": 16 + }, + { + "cpu": 1, + "count": 174, + "high": 378, + "batch": 63, + "vm stats threshold": 16, + "node_unreclaimable": 0, + "start_pfn": 1048576 + } + ] + }, + "Movable": { + "pages": { + "free": 0, + "min": 0, + "low": 0, + "high": 0, + "spanned": 0, + "present": 0, + "managed": 0, + "protection": [ + 0, + 0, + 0, + 0, + 0 + ] + } + }, + "Device": { + "pages": { + "free": 0, + "min": 0, + "low": 0, + "high": 0, + "spanned": 0, + "present": 0, + "managed": 0, + "protection": [ + 0, + 0, + 0, + 0, + 0 + ] + } + } + } + ] +""" +from typing import List, Dict +import jc.utils + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc/zoneinfo` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + hidden = True + + +__version__ = info.version + + +def _process(proc_data: List[Dict]) -> List[Dict]: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (List of Dictionaries) raw structured data to process + + Returns: + + List of Dictionaries. Structured to conform to the schema. + """ + int_list = {'size', 'used'} + + for entry in proc_data: + for key in entry: + if key in int_list: + entry[key] = jc.utils.convert_to_int(entry[key]) + + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> List[Dict]: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + List of Dictionaries. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: List = [] + ouptput_line: Dict = {} + node = None + section = 'stats' # stats, pages, pagesets + pageset = None + + if jc.utils.has_data(data): + + for line in filter(None, data.splitlines()): + + if line == ' per-node stats': + continue + + if line.startswith('Node ') and line.endswith('DMA'): + if ouptput_line: + raw_output.append(ouptput_line) + ouptput_line = {} + + section = 'stats' + _, node, _, zone = line.replace(',', '').split() + ouptput_line['node'] = int(node) + ouptput_line[zone] = {} + continue + + if line.startswith('Node '): + section = 'stats' + + if pageset: + ouptput_line[zone]['pagesets'].append(pageset) + pageset = {} + + _, node, _, zone = line.replace(',', '').split() + ouptput_line['node'] = int(node) + ouptput_line[zone] = {} + continue + + if line.startswith(' pages free '): + section = 'pages' + ouptput_line[zone]['pages'] = {} + ouptput_line[zone]['pages']['free'] = int(line.split()[-1]) + continue + + if line.startswith(' pagesets'): + section = 'pagesets' + ouptput_line[zone]['pagesets'] = [] + pageset = {} # type: ignore + continue + + if section == 'stats': + key, val = line.split(maxsplit=1) + ouptput_line[key] = int(val) + continue + + if section == 'pages' and line.startswith(' protection: '): + protection = line.replace('(', '').replace(')', '').replace(',', '').split()[1:] + ouptput_line[zone]['pages']['protection'] = [int(x) for x in protection] + continue + + if section == 'pages': + key, val = line.split(maxsplit=1) + ouptput_line[zone]['pages'][key] = int(val) + continue + + if section == 'pagesets' and line.startswith(' cpu: '): + if pageset: + ouptput_line[zone]['pagesets'].append(pageset) + + split_line = line.replace(':', '').split(maxsplit=1) + pageset = {"cpu": int(split_line[1])} + continue + + if section == 'pagesets': + key, val = line.split(':', maxsplit=1) + pageset[key.strip()] = int(val) + continue + + if ouptput_line: + if pageset: + ouptput_line[zone]['pagesets'].append(pageset) + + raw_output.append(ouptput_line) + + return raw_output if raw else _process(raw_output) diff --git a/man/jc.1 b/man/jc.1 index d679395c..614b5b62 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -540,6 +540,11 @@ PLIST file parser \fB--proc-vmstat\fP `/proc/vmstat` file parser +.TP +.B +\fB--proc-zoneinfo\fP +`/proc/zoneinfo` file parser + .TP .B \fB--proc-pid-numa-maps\fP From e623ceacc8cd282742103f81505efe2afd1660eb Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Sat, 17 Sep 2022 17:43:21 -0700 Subject: [PATCH 060/124] remove unused _process code --- jc/parsers/proc_zoneinfo.py | 7 ------- 1 file changed, 7 deletions(-) diff --git a/jc/parsers/proc_zoneinfo.py b/jc/parsers/proc_zoneinfo.py index d2f92be7..ec3db99b 100644 --- a/jc/parsers/proc_zoneinfo.py +++ b/jc/parsers/proc_zoneinfo.py @@ -332,13 +332,6 @@ def _process(proc_data: List[Dict]) -> List[Dict]: List of Dictionaries. Structured to conform to the schema. """ - int_list = {'size', 'used'} - - for entry in proc_data: - for key in entry: - if key in int_list: - entry[key] = jc.utils.convert_to_int(entry[key]) - return proc_data From c88bf3e94b1a028d4df17fa82e162e21d9670faf Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Sat, 17 Sep 2022 17:50:43 -0700 Subject: [PATCH 061/124] fix signature order --- jc/parsers/proc.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jc/parsers/proc.py b/jc/parsers/proc.py index 872647de..0c6bdd5c 100644 --- a/jc/parsers/proc.py +++ b/jc/parsers/proc.py @@ -233,8 +233,8 @@ def parse( uptime_p: 'proc_uptime', version_p: 'proc_version', vmallocinfo_p: 'proc_vmallocinfo', - vmstat_p: 'proc_vmstat', - zoneinfo_p: 'proc_zoneinfo', + zoneinfo_p: 'proc_zoneinfo', # before vmstat + vmstat_p: 'proc_vmstat', # after zoneinfo driver_rtc_p: 'proc_driver_rtc', From 8ffde41fa42ae9806f319fd6b1cca3a2d6337f43 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Mon, 19 Sep 2022 16:50:01 -0700 Subject: [PATCH 062/124] add proc-pid-fdinfo parser --- docs/parsers/proc_pid_fdinfo.md | 127 +++++++++++++++++++ jc/lib.py | 1 + jc/parsers/proc.py | 16 +-- jc/parsers/proc_pid_fdinfo.py | 217 ++++++++++++++++++++++++++++++++ man/jc.1 | 7 +- 5 files changed, 359 insertions(+), 9 deletions(-) create mode 100644 docs/parsers/proc_pid_fdinfo.md create mode 100644 jc/parsers/proc_pid_fdinfo.py diff --git a/docs/parsers/proc_pid_fdinfo.md b/docs/parsers/proc_pid_fdinfo.md new file mode 100644 index 00000000..4f266668 --- /dev/null +++ b/docs/parsers/proc_pid_fdinfo.md @@ -0,0 +1,127 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_pid\_fdinfo + +jc - JSON Convert `/proc//fdinfo` file parser + +Usage (cli): + + $ cat /proc/1/fdinfo/5 | jc --proc + +or + + $ jc /proc/1/fdinfo/5 + +or + + $ cat /proc/1/fdinfo/5 | jc --proc-pid-fdinfo + +Usage (module): + + import jc + result = jc.parse('proc', proc_pid_fdinfo_file) + +or + + import jc + result = jc.parse('proc_pid_fdinfo', proc_pid_fdinfo_file) + +Schema: + +Any unspecified fields are strings. + + { + "pos": integer, + "flags": integer, + "mnt_id": integer, + "scm_fds": string, + "ino": integer, + "lock": string, + "epoll": { + "tfd": integer, + "events": string, + "data": string, + "pos": integer, + "ino": string, + "sdev": string + }, + "inotify": { + "wd": integer, + "ino": string, + "sdev": string, + "mask": string, + "ignored_mask": string, + "fhandle-bytes": string, + "fhandle-type": string, + "f_handle": string + }, + "fanotify": { + "flags": string, + "event-flags": string, + "mnt_id": string, + "mflags": string, + "mask": string, + "ignored_mask": string, + "ino": string, + "sdev": string, + "fhandle-bytes": string, + "fhandle-type": string, + "f_handle": string + }, + "clockid": integer, + "ticks": integer, + "settime flags": integer, + "it_value": [ + integer + ], + "it_interval": [ + integer + ] + } + +Examples: + + $ cat /proc/1/fdinfo/5 | jc --proc -p + { + "pos": 0, + "flags": 2, + "mnt_id": 9, + "ino": 63107, + "clockid": 0, + "ticks": 0, + "settime flags": 1, + "it_value": [ + 0, + 49406829 + ], + "it_interval": [ + 1, + 0 + ] + } + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> Dict +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + Dictionary. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/lib.py b/jc/lib.py index 0a01105a..f2506197 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -112,6 +112,7 @@ parsers = [ 'proc-vmallocinfo', 'proc-vmstat', 'proc-zoneinfo', + 'proc-pid-fdinfo', 'proc-pid-numa-maps', 'ps', 'route', diff --git a/jc/parsers/proc.py b/jc/parsers/proc.py index 0c6bdd5c..cfe59399 100644 --- a/jc/parsers/proc.py +++ b/jc/parsers/proc.py @@ -195,15 +195,15 @@ def parse( net_route_p = re.compile(r'^Iface\tDestination\tGateway \tFlags\tRefCnt\tUse\tMetric\tMask\t\tMTU\tWindow\tIRTT\s+\n') net_unix_p = re.compile(r'^Num RefCount Protocol Flags Type St Inode Path\n') - pid_status_p = re.compile(r'^Name:\t.+\nUmask:\t\d+\nState:\t.+\nTgid:\t\d+\n') - pid_statm_p = re.compile(r'^\d+ \d+ \d+\s\d+\s\d+\s\d+\s\d+$') - pid_stat_p = re.compile(r'^\d+ \(.{1,16}\) \w \d+ \d+ \d+ \d+ -?\d+ (?:\d+ ){43}\d+$') - pid_smaps_p = re.compile(r'^[0-9a-f]{12}-[0-9a-f]{12} [rwxsp\-]{4} [0-9a-f]{8} [0-9a-f]{2}:[0-9a-f]{2} \d+ [^\n]+\nSize:\s+\d+ \S\S\n') - pid_maps_p = re.compile(r'^[0-9a-f]{12}-[0-9a-f]{12} [rwxsp\-]{4} [0-9a-f]{8} [0-9a-f]{2}:[0-9a-f]{2} \d+ ') - pid_numa_maps_p = re.compile(r'^[a-f0-9]{12} default [^\n]+\n') - pid_io_p = re.compile(r'^rchar: \d+\nwchar: \d+\nsyscr: \d+\n') - pid_mountinfo_p = re.compile(r'^\d+ \d+ \d+:\d+ /.+\n') pid_fdinfo_p = re.compile(r'^pos:\t\d+\nflags:\t\d+\nmnt_id:\t\d+\n') + pid_io_p = re.compile(r'^rchar: \d+\nwchar: \d+\nsyscr: \d+\n') + pid_maps_p = re.compile(r'^[0-9a-f]{12}-[0-9a-f]{12} [rwxsp\-]{4} [0-9a-f]{8} [0-9a-f]{2}:[0-9a-f]{2} \d+ ') + pid_mountinfo_p = re.compile(r'^\d+ \d+ \d+:\d+ /.+\n') + pid_numa_maps_p = re.compile(r'^[a-f0-9]{12} default [^\n]+\n') + pid_smaps_p = re.compile(r'^[0-9a-f]{12}-[0-9a-f]{12} [rwxsp\-]{4} [0-9a-f]{8} [0-9a-f]{2}:[0-9a-f]{2} \d+ [^\n]+\nSize:\s+\d+ \S\S\n') + pid_statm_p = re.compile(r'^\d+ \d+ \d+\s\d+\s\d+\s\d+\s\d+$') + pid_status_p = re.compile(r'^Name:\t.+\nUmask:\t\d+\nState:\t.+\nTgid:\t\d+\n') + pid_stat_p = re.compile(r'^\d+ \(.{1,16}\) \w \d+ \d+ \d+ \d+ -?\d+ (?:\d+ ){43}\d+$') scsi_device_info = re.compile(r"^'\w+' '.+' 0x\d+") scsi_scsi_p = re.compile(r'^Attached devices:\nHost: \w+ ') diff --git a/jc/parsers/proc_pid_fdinfo.py b/jc/parsers/proc_pid_fdinfo.py new file mode 100644 index 00000000..b752c30f --- /dev/null +++ b/jc/parsers/proc_pid_fdinfo.py @@ -0,0 +1,217 @@ +"""jc - JSON Convert `/proc//fdinfo` file parser + +Usage (cli): + + $ cat /proc/1/fdinfo/5 | jc --proc + +or + + $ jc /proc/1/fdinfo/5 + +or + + $ cat /proc/1/fdinfo/5 | jc --proc-pid-fdinfo + +Usage (module): + + import jc + result = jc.parse('proc', proc_pid_fdinfo_file) + +or + + import jc + result = jc.parse('proc_pid_fdinfo', proc_pid_fdinfo_file) + +Schema: + +Any unspecified fields are strings. + + { + "pos": integer, + "flags": integer, + "mnt_id": integer, + "scm_fds": string, + "ino": integer, + "lock": string, + "epoll": { + "tfd": integer, + "events": string, + "data": string, + "pos": integer, + "ino": string, + "sdev": string + }, + "inotify": { + "wd": integer, + "ino": string, + "sdev": string, + "mask": string, + "ignored_mask": string, + "fhandle-bytes": string, + "fhandle-type": string, + "f_handle": string + }, + "fanotify": { + "flags": string, + "event-flags": string, + "mnt_id": string, + "mflags": string, + "mask": string, + "ignored_mask": string, + "ino": string, + "sdev": string, + "fhandle-bytes": string, + "fhandle-type": string, + "f_handle": string + }, + "clockid": integer, + "ticks": integer, + "settime flags": integer, + "it_value": [ + integer + ], + "it_interval": [ + integer + ] + } + +Examples: + + $ cat /proc/1/fdinfo/5 | jc --proc -p + { + "pos": 0, + "flags": 2, + "mnt_id": 9, + "ino": 63107, + "clockid": 0, + "ticks": 0, + "settime flags": 1, + "it_value": [ + 0, + 49406829 + ], + "it_interval": [ + 1, + 0 + ] + } +""" +import re +from typing import Dict +import jc.utils + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc/pid-fdinfo` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + hidden = True + + +__version__ = info.version + + +def _process(proc_data: Dict) -> Dict: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (List of Dictionaries) raw structured data to process + + Returns: + + Dictionary. Structured to conform to the schema. + """ + root_int_list = {'pos', 'flags', 'mnt_id', 'ino', 'clockid', 'ticks', + 'settime flags', 'size', 'count'} + epoll_int_list = {'tfd', 'pos'} + inotify_int_list = {'wd'} + + for key, val in proc_data.items(): + if key in root_int_list: + proc_data[key] = int(val) + + if 'epoll' in proc_data: + for key, val in proc_data['epoll'].items(): + if key in epoll_int_list: + proc_data['epoll'][key] = int(val) + + if 'inotify' in proc_data: + for key, val in proc_data['inotify'].items(): + if key in inotify_int_list: + proc_data['inotify'][key] = int(val) + + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> Dict: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + Dictionary. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: Dict = {} + split_me = {'it_value:', 'it_interval:'} + + if jc.utils.has_data(data): + + for line in filter(None, data.splitlines()): + + # epoll files + if line.startswith('tfd:'): + line_match = re.findall(r'(?P\S+):(?:\s+)?(?P\S+s*)', line) + if line_match: + raw_output.update({'epoll': {k.strip(): v.strip() for k, v in line_match}}) + continue + + # inotify files + if line.startswith('inotify'): + split_line = line[8:].split() + raw_output['inotify'] = {} + for item in split_line: + k, v = item.split(':', maxsplit=1) + raw_output['inotify'][k] = v + continue + + # fanotify files + if line.startswith('fanotify'): + split_line = line[9:].split() + + if not 'fanotify' in raw_output: + raw_output['fanotify'] = {} + + for item in split_line: + k, v = item.split(':', maxsplit=1) + raw_output['fanotify'][k] = v + continue + + # timerfd files + if line.split()[0] in split_me: + split_line = line.replace(':', '').replace('(', '').replace(')', '').replace(',', '').split() + raw_output[split_line[0]] = [int(x) for x in split_line[1:]] + continue + + key, val = line.split(':', maxsplit=1) + raw_output[key.strip()] = val.strip() + continue + + return raw_output if raw else _process(raw_output) diff --git a/man/jc.1 b/man/jc.1 index 614b5b62..2c073c3a 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -1,4 +1,4 @@ -.TH jc 1 2022-09-17 1.21.2 "JSON Convert" +.TH jc 1 2022-09-19 1.21.2 "JSON Convert" .SH NAME \fBjc\fP \- JSON Convert JSONifies the output of many CLI tools, file-types, and strings .SH SYNOPSIS @@ -545,6 +545,11 @@ PLIST file parser \fB--proc-zoneinfo\fP `/proc/zoneinfo` file parser +.TP +.B +\fB--proc-pid-fdinfo\fP +`/proc/pid-fdinfo` file parser + .TP .B \fB--proc-pid-numa-maps\fP From 859bece92124c1a54047e5e6c5a205281d85e302 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Mon, 19 Sep 2022 17:49:18 -0700 Subject: [PATCH 063/124] add proc-pid-io parser --- docs/parsers/proc_pid_io.md | 74 +++++++++++++++++++++++++ jc/lib.py | 1 + jc/parsers/proc_pid_io.py | 107 ++++++++++++++++++++++++++++++++++++ man/jc.1 | 5 ++ 4 files changed, 187 insertions(+) create mode 100644 docs/parsers/proc_pid_io.md create mode 100644 jc/parsers/proc_pid_io.py diff --git a/docs/parsers/proc_pid_io.md b/docs/parsers/proc_pid_io.md new file mode 100644 index 00000000..471420ee --- /dev/null +++ b/docs/parsers/proc_pid_io.md @@ -0,0 +1,74 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_pid\_io + +jc - JSON Convert `/proc//io` file parser + +Usage (cli): + + $ cat /proc//io | jc --proc + +or + + $ jc /proc//io + +or + + $ cat /proc//io | jc --proc-pid-io + +Usage (module): + + import jc + result = jc.parse('proc', proc_pid_io_file) + +or + + import jc + result = jc.parse('proc_pid_io', proc_pid_io_file) + +Schema: + +All values are integers. + + { + integer + } + +Examples: + + $ cat /proc/1/io | jc --proc -p + { + "rchar": 4699288382, + "wchar": 2931802997, + "syscr": 661897, + "syscw": 890910, + "read_bytes": 168468480, + "write_bytes": 27357184, + "cancelled_write_bytes": 16883712 + } + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> Dict +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + Dictionary. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/lib.py b/jc/lib.py index f2506197..c7e21bd2 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -113,6 +113,7 @@ parsers = [ 'proc-vmstat', 'proc-zoneinfo', 'proc-pid-fdinfo', + 'proc-pid-io', 'proc-pid-numa-maps', 'ps', 'route', diff --git a/jc/parsers/proc_pid_io.py b/jc/parsers/proc_pid_io.py new file mode 100644 index 00000000..c34c4d8d --- /dev/null +++ b/jc/parsers/proc_pid_io.py @@ -0,0 +1,107 @@ +"""jc - JSON Convert `/proc//io` file parser + +Usage (cli): + + $ cat /proc//io | jc --proc + +or + + $ jc /proc//io + +or + + $ cat /proc//io | jc --proc-pid-io + +Usage (module): + + import jc + result = jc.parse('proc', proc_pid_io_file) + +or + + import jc + result = jc.parse('proc_pid_io', proc_pid_io_file) + +Schema: + +All values are integers. + + { + integer + } + +Examples: + + $ cat /proc/1/io | jc --proc -p + { + "rchar": 4699288382, + "wchar": 2931802997, + "syscr": 661897, + "syscw": 890910, + "read_bytes": 168468480, + "write_bytes": 27357184, + "cancelled_write_bytes": 16883712 + } +""" +from typing import Dict +import jc.utils + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc/pid-io` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + hidden = True + + +__version__ = info.version + + +def _process(proc_data: Dict) -> Dict: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (Dictionary) raw structured data to process + + Returns: + + Dictionary. Structured to conform to the schema. + """ + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> Dict: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + Dictionary. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: Dict = {} + + if jc.utils.has_data(data): + + for line in filter(None, data.splitlines()): + key, val = line.split(':', maxsplit=1) + raw_output[key] = int(val) + + return raw_output if raw else _process(raw_output) diff --git a/man/jc.1 b/man/jc.1 index 2c073c3a..1dbffce2 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -550,6 +550,11 @@ PLIST file parser \fB--proc-pid-fdinfo\fP `/proc/pid-fdinfo` file parser +.TP +.B +\fB--proc-pid-io\fP +`/proc/pid-io` file parser + .TP .B \fB--proc-pid-numa-maps\fP From e49e6ad1793bf553699938b1f0b53db0c544ff58 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Mon, 19 Sep 2022 17:54:04 -0700 Subject: [PATCH 064/124] simplify parse code --- jc/parsers/proc_meminfo.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/jc/parsers/proc_meminfo.py b/jc/parsers/proc_meminfo.py index 7b069f12..bf378374 100644 --- a/jc/parsers/proc_meminfo.py +++ b/jc/parsers/proc_meminfo.py @@ -145,9 +145,7 @@ def parse( if jc.utils.has_data(data): for line in filter(None, data.splitlines()): - split_line = line.split(':', maxsplit=1) - key = split_line[0] - val = int(split_line[1].rsplit(maxsplit=1)[0]) - raw_output[key] = val + key, val, *_ = line.replace(':', '').split() + raw_output[key] = int(val) return raw_output if raw else _process(raw_output) From 76e7347ecfebfda702e193b4de52130bacb1078d Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Mon, 19 Sep 2022 18:33:30 -0700 Subject: [PATCH 065/124] add proc-pid-maps parser --- docs/parsers/proc_pid_maps.md | 125 ++++++++++++++++++++++ jc/lib.py | 1 + jc/parsers/proc_pid_maps.py | 191 ++++++++++++++++++++++++++++++++++ man/jc.1 | 5 + 4 files changed, 322 insertions(+) create mode 100644 docs/parsers/proc_pid_maps.md create mode 100644 jc/parsers/proc_pid_maps.py diff --git a/docs/parsers/proc_pid_maps.md b/docs/parsers/proc_pid_maps.md new file mode 100644 index 00000000..7ca1557b --- /dev/null +++ b/docs/parsers/proc_pid_maps.md @@ -0,0 +1,125 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_pid\_maps + +jc - JSON Convert `/proc//maps` file parser + +Usage (cli): + + $ cat /proc/1/maps | jc --proc + +or + + $ jc /proc/1/maps + +or + + $ cat /proc/1/maps | jc --proc-pid-maps + +Usage (module): + + import jc + result = jc.parse('proc', proc_pid_maps_file) + +or + + import jc + result = jc.parse('proc_pid_maps', proc_pid_maps_file) + +Schema: + + [ + { + "start": string, + "end": string, + "perms": [ + string + ], + "offset": string, + "inode": integer, + "pathname": string, + "maj": string, + "min": string + } + ] + +Examples: + + $ cat /proc/1/maps | jc --proc -p + [ + { + "perms": [ + "read", + "private" + ], + "offset": "00000000", + "inode": 798126, + "pathname": "/usr/lib/systemd/systemd", + "start": "55a9e753c000", + "end": "55a9e7570000", + "maj": "fd", + "min": "00" + }, + { + "perms": [ + "read", + "execute", + "private" + ], + "offset": "00034000", + "inode": 798126, + "pathname": "/usr/lib/systemd/systemd", + "start": "55a9e7570000", + "end": "55a9e763a000", + "maj": "fd", + "min": "00" + }, + ... + ] + + $ cat /proc/1/maps | jc --proc-pid-maps -p -r + [ + { + "address": "55a9e753c000-55a9e7570000", + "perms": "r--p", + "offset": "00000000", + "dev": "fd:00", + "inode": "798126", + "pathname": "/usr/lib/systemd/systemd" + }, + { + "address": "55a9e7570000-55a9e763a000", + "perms": "r-xp", + "offset": "00034000", + "dev": "fd:00", + "inode": "798126", + "pathname": "/usr/lib/systemd/systemd" + }, + ... + ] + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict] +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + List of Dictionaries. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/lib.py b/jc/lib.py index c7e21bd2..4fbb91a7 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -114,6 +114,7 @@ parsers = [ 'proc-zoneinfo', 'proc-pid-fdinfo', 'proc-pid-io', + 'proc-pid-maps', 'proc-pid-numa-maps', 'ps', 'route', diff --git a/jc/parsers/proc_pid_maps.py b/jc/parsers/proc_pid_maps.py new file mode 100644 index 00000000..22c8765b --- /dev/null +++ b/jc/parsers/proc_pid_maps.py @@ -0,0 +1,191 @@ +"""jc - JSON Convert `/proc//maps` file parser + +Usage (cli): + + $ cat /proc/1/maps | jc --proc + +or + + $ jc /proc/1/maps + +or + + $ cat /proc/1/maps | jc --proc-pid-maps + +Usage (module): + + import jc + result = jc.parse('proc', proc_pid_maps_file) + +or + + import jc + result = jc.parse('proc_pid_maps', proc_pid_maps_file) + +Schema: + + [ + { + "start": string, + "end": string, + "perms": [ + string + ], + "offset": string, + "inode": integer, + "pathname": string, + "maj": string, + "min": string + } + ] + +Examples: + + $ cat /proc/1/maps | jc --proc -p + [ + { + "perms": [ + "read", + "private" + ], + "offset": "00000000", + "inode": 798126, + "pathname": "/usr/lib/systemd/systemd", + "start": "55a9e753c000", + "end": "55a9e7570000", + "maj": "fd", + "min": "00" + }, + { + "perms": [ + "read", + "execute", + "private" + ], + "offset": "00034000", + "inode": 798126, + "pathname": "/usr/lib/systemd/systemd", + "start": "55a9e7570000", + "end": "55a9e763a000", + "maj": "fd", + "min": "00" + }, + ... + ] + + $ cat /proc/1/maps | jc --proc-pid-maps -p -r + [ + { + "address": "55a9e753c000-55a9e7570000", + "perms": "r--p", + "offset": "00000000", + "dev": "fd:00", + "inode": "798126", + "pathname": "/usr/lib/systemd/systemd" + }, + { + "address": "55a9e7570000-55a9e763a000", + "perms": "r-xp", + "offset": "00034000", + "dev": "fd:00", + "inode": "798126", + "pathname": "/usr/lib/systemd/systemd" + }, + ... + ] +""" +from typing import List, Dict +import jc.utils +from jc.parsers.universal import simple_table_parse + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc//maps` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + hidden = True + + +__version__ = info.version + + +def _process(proc_data: List[Dict]) -> List[Dict]: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (List of Dictionaries) raw structured data to process + + Returns: + + List of Dictionaries. Structured to conform to the schema. + """ + int_list = {'inode'} + + perms_map = { + 'r': 'read', + 'w': 'write', + 'x': 'execute', + 's': 'shared', + 'p': 'private', + '-': None + } + + for entry in proc_data: + for key in entry: + if key in int_list: + entry[key] = int(entry[key]) + + if 'address' in entry: + start, end = entry['address'].split('-') + entry['start'] = start + entry['end'] = end + del entry['address'] + + if 'perms' in entry: + perms_list = [perms_map[x] for x in entry['perms'] if perms_map[x]] + entry['perms'] = perms_list + + if 'dev' in entry: + maj, min = entry['dev'].split(':', maxsplit=1) + entry['maj'] = maj + entry['min'] = min + del entry['dev'] + + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> List[Dict]: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + List of Dictionaries. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: List = [] + + if jc.utils.has_data(data): + + header = 'address perms offset dev inode pathname\n' + data = header + data + raw_output = simple_table_parse(data.splitlines()) + + return raw_output if raw else _process(raw_output) diff --git a/man/jc.1 b/man/jc.1 index 1dbffce2..641d3a6f 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -555,6 +555,11 @@ PLIST file parser \fB--proc-pid-io\fP `/proc/pid-io` file parser +.TP +.B +\fB--proc-pid-maps\fP +`/proc//maps` file parser + .TP .B \fB--proc-pid-numa-maps\fP From a583ecba7b1c46cf38564a493c3bcf531656b462 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Mon, 19 Sep 2022 19:26:08 -0700 Subject: [PATCH 066/124] add proc-pid-mountinfo parser (initial) --- docs/parsers/proc_pid_io.md | 6 +- docs/parsers/proc_pid_mountinfo.md | 132 ++++++++++++++++++++ jc/lib.py | 1 + jc/parsers/proc_pid_io.py | 8 +- jc/parsers/proc_pid_mountinfo.py | 190 +++++++++++++++++++++++++++++ man/jc.1 | 7 +- 6 files changed, 336 insertions(+), 8 deletions(-) create mode 100644 docs/parsers/proc_pid_mountinfo.md create mode 100644 jc/parsers/proc_pid_mountinfo.py diff --git a/docs/parsers/proc_pid_io.md b/docs/parsers/proc_pid_io.md index 471420ee..63884858 100644 --- a/docs/parsers/proc_pid_io.md +++ b/docs/parsers/proc_pid_io.md @@ -7,15 +7,15 @@ jc - JSON Convert `/proc//io` file parser Usage (cli): - $ cat /proc//io | jc --proc + $ cat /proc/1/io | jc --proc or - $ jc /proc//io + $ jc /proc/1/io or - $ cat /proc//io | jc --proc-pid-io + $ cat /proc/1/io | jc --proc-pid-io Usage (module): diff --git a/docs/parsers/proc_pid_mountinfo.md b/docs/parsers/proc_pid_mountinfo.md new file mode 100644 index 00000000..58ecc4d3 --- /dev/null +++ b/docs/parsers/proc_pid_mountinfo.md @@ -0,0 +1,132 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_pid\_mountinfo + +jc - JSON Convert `/proc//mountinfo` file parser + +Usage (cli): + + $ cat /proc/1/mountinfo | jc --proc + +or + + $ jc /proc/1/mountinfo + +or + + $ cat /proc/1/mountinfo | jc --proc-pid-mountinfo + +Usage (module): + + import jc + result = jc.parse('proc', proc_pid_mountinfo_file) + +or + + import jc + result = jc.parse('proc_pid_mountinfo', proc_pid_mountinfo_file) + +Schema: + + [ + { + "module": string, + "size": integer, + "used": integer, + "used_by": [ + string + ], + "status": string, + "location": string + } + ] + +Examples: + + $ cat /proc/1/mountinfo | jc --proc -p + [ + { + "module": "binfmt_misc", + "size": 24576, + "used": 1, + "used_by": [], + "status": "Live", + "location": "0xffffffffc0ab4000" + }, + { + "module": "vsock_loopback", + "size": 16384, + "used": 0, + "used_by": [], + "status": "Live", + "location": "0xffffffffc0a14000" + }, + { + "module": "vmw_vsock_virtio_transport_common", + "size": 36864, + "used": 1, + "used_by": [ + "vsock_loopback" + ], + "status": "Live", + "location": "0xffffffffc0a03000" + }, + ... + ] + + $ cat /proc/1/mountinfo | jc --proc_pid-mountinfo -p -r + [ + { + "module": "binfmt_misc", + "size": "24576", + "used": "1", + "used_by": [], + "status": "Live", + "location": "0xffffffffc0ab4000" + }, + { + "module": "vsock_loopback", + "size": "16384", + "used": "0", + "used_by": [], + "status": "Live", + "location": "0xffffffffc0a14000" + }, + { + "module": "vmw_vsock_virtio_transport_common", + "size": "36864", + "used": "1", + "used_by": [ + "vsock_loopback" + ], + "status": "Live", + "location": "0xffffffffc0a03000" + }, + ... + ] + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict] +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + List of Dictionaries. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/lib.py b/jc/lib.py index 4fbb91a7..da8bf7a9 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -115,6 +115,7 @@ parsers = [ 'proc-pid-fdinfo', 'proc-pid-io', 'proc-pid-maps', + 'proc-pid-mountinfo', 'proc-pid-numa-maps', 'ps', 'route', diff --git a/jc/parsers/proc_pid_io.py b/jc/parsers/proc_pid_io.py index c34c4d8d..8bfe71c1 100644 --- a/jc/parsers/proc_pid_io.py +++ b/jc/parsers/proc_pid_io.py @@ -2,15 +2,15 @@ Usage (cli): - $ cat /proc//io | jc --proc + $ cat /proc/1/io | jc --proc or - $ jc /proc//io + $ jc /proc/1/io or - $ cat /proc//io | jc --proc-pid-io + $ cat /proc/1/io | jc --proc-pid-io Usage (module): @@ -50,7 +50,7 @@ import jc.utils class info(): """Provides parser metadata (version, author, etc.)""" version = '1.0' - description = '`/proc/pid-io` file parser' + description = '`/proc//io` file parser' author = 'Kelly Brazil' author_email = 'kellyjonbrazil@gmail.com' compatible = ['linux'] diff --git a/jc/parsers/proc_pid_mountinfo.py b/jc/parsers/proc_pid_mountinfo.py new file mode 100644 index 00000000..f64018f7 --- /dev/null +++ b/jc/parsers/proc_pid_mountinfo.py @@ -0,0 +1,190 @@ +"""jc - JSON Convert `/proc//mountinfo` file parser + +Usage (cli): + + $ cat /proc/1/mountinfo | jc --proc + +or + + $ jc /proc/1/mountinfo + +or + + $ cat /proc/1/mountinfo | jc --proc-pid-mountinfo + +Usage (module): + + import jc + result = jc.parse('proc', proc_pid_mountinfo_file) + +or + + import jc + result = jc.parse('proc_pid_mountinfo', proc_pid_mountinfo_file) + +Schema: + + [ + { + "module": string, + "size": integer, + "used": integer, + "used_by": [ + string + ], + "status": string, + "location": string + } + ] + +Examples: + + $ cat /proc/1/mountinfo | jc --proc -p + [ + { + "module": "binfmt_misc", + "size": 24576, + "used": 1, + "used_by": [], + "status": "Live", + "location": "0xffffffffc0ab4000" + }, + { + "module": "vsock_loopback", + "size": 16384, + "used": 0, + "used_by": [], + "status": "Live", + "location": "0xffffffffc0a14000" + }, + { + "module": "vmw_vsock_virtio_transport_common", + "size": 36864, + "used": 1, + "used_by": [ + "vsock_loopback" + ], + "status": "Live", + "location": "0xffffffffc0a03000" + }, + ... + ] + + $ cat /proc/1/mountinfo | jc --proc_pid-mountinfo -p -r + [ + { + "module": "binfmt_misc", + "size": "24576", + "used": "1", + "used_by": [], + "status": "Live", + "location": "0xffffffffc0ab4000" + }, + { + "module": "vsock_loopback", + "size": "16384", + "used": "0", + "used_by": [], + "status": "Live", + "location": "0xffffffffc0a14000" + }, + { + "module": "vmw_vsock_virtio_transport_common", + "size": "36864", + "used": "1", + "used_by": [ + "vsock_loopback" + ], + "status": "Live", + "location": "0xffffffffc0a03000" + }, + ... + ] +""" +import re +from typing import List, Dict +import jc.utils + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc//mountinfo` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + hidden = True + + +__version__ = info.version + + +def _process(proc_data: List[Dict]) -> List[Dict]: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (List of Dictionaries) raw structured data to process + + Returns: + + List of Dictionaries. Structured to conform to the schema. + """ + int_list = {'size', 'used'} + + for entry in proc_data: + for key in entry: + if key in int_list: + entry[key] = jc.utils.convert_to_int(entry[key]) + + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> List[Dict]: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + List of Dictionaries. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: List = [] + + if jc.utils.has_data(data): + + line_pattern = re.compile(r''' + ^(?P\d+)\s + (?P\d+)\s + (?P\d+): + (?P\d+)\s + (?P\S+)\s + (?P\S+)\s + (?P\S+)\s? + (?P(?:\s?\S+:\S+\s?)*)\s?-\s + (?P\S+)\s + (?P\S+)\s + (?P\S+) + ''', re.VERBOSE + ) + + for line in filter(None, data.splitlines()): + + line_match = line_pattern.search(line) + if line_match: + raw_output.append(line_match.groupdict()) + + return raw_output if raw else _process(raw_output) diff --git a/man/jc.1 b/man/jc.1 index 641d3a6f..4a72b238 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -553,13 +553,18 @@ PLIST file parser .TP .B \fB--proc-pid-io\fP -`/proc/pid-io` file parser +`/proc//io` file parser .TP .B \fB--proc-pid-maps\fP `/proc//maps` file parser +.TP +.B +\fB--proc-pid-mountinfo\fP +`/proc//mountinfo` file parser + .TP .B \fB--proc-pid-numa-maps\fP From 7c772d3a5a91a3ba99c9aee7c9a8ef275b5b9a5a Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Mon, 19 Sep 2022 19:58:40 -0700 Subject: [PATCH 067/124] split super_options --- jc/parsers/proc_pid_mountinfo.py | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/jc/parsers/proc_pid_mountinfo.py b/jc/parsers/proc_pid_mountinfo.py index f64018f7..0e11ee94 100644 --- a/jc/parsers/proc_pid_mountinfo.py +++ b/jc/parsers/proc_pid_mountinfo.py @@ -138,6 +138,31 @@ def _process(proc_data: List[Dict]) -> List[Dict]: if key in int_list: entry[key] = jc.utils.convert_to_int(entry[key]) + if 'mount_options' in entry: + entry['mount_options'] = entry['mount_options'].split(',') + + if 'optional_fields' in entry: + entry['optional_fields'] = {x.split(':')[0]: x.split(':')[1] for x in entry['optional_fields'].split()} + + if 'super_options' in entry: + if entry['super_options']: + super_options_split = entry['super_options'].split(',') + s_options = [x for x in super_options_split if '=' not in x] + s_options_fields = [x for x in super_options_split if '=' in x] + + if s_options: + entry['super_options'] = s_options + else: + del entry['super_options'] + + if s_options_fields: + if not 'super_options_fields' in entry: + entry['super_options_fields'] = {} + + for field in s_options_fields: + key, val = field.split('=') + entry['super_options_fields'][key] = val + return proc_data @@ -177,7 +202,7 @@ def parse( (?P(?:\s?\S+:\S+\s?)*)\s?-\s (?P\S+)\s (?P\S+)\s - (?P\S+) + (?P\S+)? ''', re.VERBOSE ) From 52d98a1157ba99392ee059addc8ce6997923c4de Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Mon, 19 Sep 2022 20:32:26 -0700 Subject: [PATCH 068/124] doc update and schema update --- docs/parsers/proc_pid_mountinfo.md | 137 +++++++++++++++++---------- jc/parsers/proc_pid_mountinfo.py | 144 ++++++++++++++++++----------- 2 files changed, 177 insertions(+), 104 deletions(-) diff --git a/docs/parsers/proc_pid_mountinfo.md b/docs/parsers/proc_pid_mountinfo.md index 58ecc4d3..33463209 100644 --- a/docs/parsers/proc_pid_mountinfo.md +++ b/docs/parsers/proc_pid_mountinfo.md @@ -31,46 +31,81 @@ Schema: [ { - "module": string, - "size": integer, - "used": integer, - "used_by": [ + "mount_id": integer, + "parent_id": integer, + "maj": integer, + "min": integer, + "root": string, + "mount_point": string, + "mount_options": [ string ], - "status": string, - "location": string + "optional_fields": { # [0] + "": integer + }, + "fs_type": string, + "mount_source": string, + "super_options": [ + string + ], + "super_options_fields": { + "": string + } } ] + [0] if empty, then unbindable + Examples: $ cat /proc/1/mountinfo | jc --proc -p [ { - "module": "binfmt_misc", - "size": 24576, - "used": 1, - "used_by": [], - "status": "Live", - "location": "0xffffffffc0ab4000" - }, - { - "module": "vsock_loopback", - "size": 16384, - "used": 0, - "used_by": [], - "status": "Live", - "location": "0xffffffffc0a14000" - }, - { - "module": "vmw_vsock_virtio_transport_common", - "size": 36864, - "used": 1, - "used_by": [ - "vsock_loopback" + "mount_id": 24, + "parent_id": 30, + "maj": 0, + "min": 22, + "root": "/", + "mount_point": "/sys", + "mount_options": [ + "rw", + "nosuid", + "nodev", + "noexec", + "relatime" ], - "status": "Live", - "location": "0xffffffffc0a03000" + "optional_fields": { + "master": 1, + "shared": 7 + }, + "fs_type": "sysfs", + "mount_source": "sysfs", + "super_options": [ + "rw" + ] + }, + { + "mount_id": 25, + "parent_id": 30, + "maj": 0, + "min": 23, + "root": "/", + "mount_point": "/proc", + "mount_options": [ + "rw", + "nosuid", + "nodev", + "noexec", + "relatime" + ], + "optional_fields": { + "shared": 14 + }, + "fs_type": "proc", + "mount_source": "proc", + "super_options": [ + "rw" + ] }, ... ] @@ -78,30 +113,30 @@ Examples: $ cat /proc/1/mountinfo | jc --proc_pid-mountinfo -p -r [ { - "module": "binfmt_misc", - "size": "24576", - "used": "1", - "used_by": [], - "status": "Live", - "location": "0xffffffffc0ab4000" + "mount_id": "24", + "parent_id": "30", + "maj": "0", + "min": "22", + "root": "/", + "mount_point": "/sys", + "mount_options": "rw,nosuid,nodev,noexec,relatime", + "optional_fields": "master:1 shared:7 ", + "fs_type": "sysfs", + "mount_source": "sysfs", + "super_options": "rw" }, { - "module": "vsock_loopback", - "size": "16384", - "used": "0", - "used_by": [], - "status": "Live", - "location": "0xffffffffc0a14000" - }, - { - "module": "vmw_vsock_virtio_transport_common", - "size": "36864", - "used": "1", - "used_by": [ - "vsock_loopback" - ], - "status": "Live", - "location": "0xffffffffc0a03000" + "mount_id": "25", + "parent_id": "30", + "maj": "0", + "min": "23", + "root": "/", + "mount_point": "/proc", + "mount_options": "rw,nosuid,nodev,noexec,relatime", + "optional_fields": "shared:14 ", + "fs_type": "proc", + "mount_source": "proc", + "super_options": "rw" }, ... ] diff --git a/jc/parsers/proc_pid_mountinfo.py b/jc/parsers/proc_pid_mountinfo.py index 0e11ee94..55329b7a 100644 --- a/jc/parsers/proc_pid_mountinfo.py +++ b/jc/parsers/proc_pid_mountinfo.py @@ -26,46 +26,81 @@ Schema: [ { - "module": string, - "size": integer, - "used": integer, - "used_by": [ + "mount_id": integer, + "parent_id": integer, + "maj": integer, + "min": integer, + "root": string, + "mount_point": string, + "mount_options": [ string ], - "status": string, - "location": string + "optional_fields": { # [0] + "": integer + }, + "fs_type": string, + "mount_source": string, + "super_options": [ + string + ], + "super_options_fields": { + "": string + } } ] + [0] if empty, then unbindable + Examples: $ cat /proc/1/mountinfo | jc --proc -p [ { - "module": "binfmt_misc", - "size": 24576, - "used": 1, - "used_by": [], - "status": "Live", - "location": "0xffffffffc0ab4000" - }, - { - "module": "vsock_loopback", - "size": 16384, - "used": 0, - "used_by": [], - "status": "Live", - "location": "0xffffffffc0a14000" - }, - { - "module": "vmw_vsock_virtio_transport_common", - "size": 36864, - "used": 1, - "used_by": [ - "vsock_loopback" + "mount_id": 24, + "parent_id": 30, + "maj": 0, + "min": 22, + "root": "/", + "mount_point": "/sys", + "mount_options": [ + "rw", + "nosuid", + "nodev", + "noexec", + "relatime" ], - "status": "Live", - "location": "0xffffffffc0a03000" + "optional_fields": { + "master": 1, + "shared": 7 + }, + "fs_type": "sysfs", + "mount_source": "sysfs", + "super_options": [ + "rw" + ] + }, + { + "mount_id": 25, + "parent_id": 30, + "maj": 0, + "min": 23, + "root": "/", + "mount_point": "/proc", + "mount_options": [ + "rw", + "nosuid", + "nodev", + "noexec", + "relatime" + ], + "optional_fields": { + "shared": 14 + }, + "fs_type": "proc", + "mount_source": "proc", + "super_options": [ + "rw" + ] }, ... ] @@ -73,30 +108,30 @@ Examples: $ cat /proc/1/mountinfo | jc --proc_pid-mountinfo -p -r [ { - "module": "binfmt_misc", - "size": "24576", - "used": "1", - "used_by": [], - "status": "Live", - "location": "0xffffffffc0ab4000" + "mount_id": "24", + "parent_id": "30", + "maj": "0", + "min": "22", + "root": "/", + "mount_point": "/sys", + "mount_options": "rw,nosuid,nodev,noexec,relatime", + "optional_fields": "master:1 shared:7 ", + "fs_type": "sysfs", + "mount_source": "sysfs", + "super_options": "rw" }, { - "module": "vsock_loopback", - "size": "16384", - "used": "0", - "used_by": [], - "status": "Live", - "location": "0xffffffffc0a14000" - }, - { - "module": "vmw_vsock_virtio_transport_common", - "size": "36864", - "used": "1", - "used_by": [ - "vsock_loopback" - ], - "status": "Live", - "location": "0xffffffffc0a03000" + "mount_id": "25", + "parent_id": "30", + "maj": "0", + "min": "23", + "root": "/", + "mount_point": "/proc", + "mount_options": "rw,nosuid,nodev,noexec,relatime", + "optional_fields": "shared:14 ", + "fs_type": "proc", + "mount_source": "proc", + "super_options": "rw" }, ... ] @@ -131,7 +166,7 @@ def _process(proc_data: List[Dict]) -> List[Dict]: List of Dictionaries. Structured to conform to the schema. """ - int_list = {'size', 'used'} + int_list = {'mount_id', 'parent_id', 'maj', 'min'} for entry in proc_data: for key in entry: @@ -142,7 +177,7 @@ def _process(proc_data: List[Dict]) -> List[Dict]: entry['mount_options'] = entry['mount_options'].split(',') if 'optional_fields' in entry: - entry['optional_fields'] = {x.split(':')[0]: x.split(':')[1] for x in entry['optional_fields'].split()} + entry['optional_fields'] = {x.split(':')[0]: int(x.split(':')[1]) for x in entry['optional_fields'].split()} if 'super_options' in entry: if entry['super_options']: @@ -163,6 +198,9 @@ def _process(proc_data: List[Dict]) -> List[Dict]: key, val = field.split('=') entry['super_options_fields'][key] = val + else: + del entry['super_options'] + return proc_data From 3df006fb9760922226a865226c387a4068b23bf3 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Mon, 19 Sep 2022 20:35:18 -0700 Subject: [PATCH 069/124] use stdlib int conversion --- jc/parsers/proc_pid_mountinfo.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jc/parsers/proc_pid_mountinfo.py b/jc/parsers/proc_pid_mountinfo.py index 55329b7a..8f197a2d 100644 --- a/jc/parsers/proc_pid_mountinfo.py +++ b/jc/parsers/proc_pid_mountinfo.py @@ -171,7 +171,7 @@ def _process(proc_data: List[Dict]) -> List[Dict]: for entry in proc_data: for key in entry: if key in int_list: - entry[key] = jc.utils.convert_to_int(entry[key]) + entry[key] = int(entry[key]) if 'mount_options' in entry: entry['mount_options'] = entry['mount_options'].split(',') From df3f94b017b4c3b0d37724855171334857be543b Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Mon, 19 Sep 2022 20:54:46 -0700 Subject: [PATCH 070/124] doc update and unbindable fix --- docs/parsers/proc_pid_mountinfo.md | 5 +++-- jc/parsers/proc_pid_mountinfo.py | 13 +++++++++---- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/docs/parsers/proc_pid_mountinfo.md b/docs/parsers/proc_pid_mountinfo.md index 33463209..9e0a4e2e 100644 --- a/docs/parsers/proc_pid_mountinfo.md +++ b/docs/parsers/proc_pid_mountinfo.md @@ -41,7 +41,7 @@ Schema: string ], "optional_fields": { # [0] - "": integer + "": integer # [1] }, "fs_type": string, "mount_source": string, @@ -54,7 +54,8 @@ Schema: } ] - [0] if empty, then unbindable + [0] if empty, then private mount + [1] unbindable will always have a value of 0 Examples: diff --git a/jc/parsers/proc_pid_mountinfo.py b/jc/parsers/proc_pid_mountinfo.py index 8f197a2d..72399911 100644 --- a/jc/parsers/proc_pid_mountinfo.py +++ b/jc/parsers/proc_pid_mountinfo.py @@ -36,7 +36,7 @@ Schema: string ], "optional_fields": { # [0] - "": integer + "": integer # [1] }, "fs_type": string, "mount_source": string, @@ -49,7 +49,8 @@ Schema: } ] - [0] if empty, then unbindable + [0] if empty, then private mount + [1] unbindable will always have a value of 0 Examples: @@ -177,7 +178,10 @@ def _process(proc_data: List[Dict]) -> List[Dict]: entry['mount_options'] = entry['mount_options'].split(',') if 'optional_fields' in entry: - entry['optional_fields'] = {x.split(':')[0]: int(x.split(':')[1]) for x in entry['optional_fields'].split()} + if 'unbindable' in entry['optional_fields']: + entry['optional_fields'] = {'unbindable': 0} + else: + entry['optional_fields'] = {x.split(':')[0]: int(x.split(':')[1]) for x in entry['optional_fields'].split()} if 'super_options' in entry: if entry['super_options']: @@ -237,7 +241,8 @@ def parse( (?P\S+)\s (?P\S+)\s (?P\S+)\s? - (?P(?:\s?\S+:\S+\s?)*)\s?-\s + # (?P(?:\s?\S+:\S+\s?)*)\s?-\s + (?P(?:\s?(?:\S+:\S+|unbindable)\s?)*)\s?-\s (?P\S+)\s (?P\S+)\s (?P\S+)? From 075e2301e4aa3efffa3083901e061b772ba2e36e Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Mon, 19 Sep 2022 21:00:00 -0700 Subject: [PATCH 071/124] doc update --- docs/parsers/proc_pid_fdinfo.md | 2 +- jc/parsers/proc_pid_fdinfo.py | 4 ++-- man/jc.1 | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/parsers/proc_pid_fdinfo.md b/docs/parsers/proc_pid_fdinfo.md index 4f266668..2d946fbc 100644 --- a/docs/parsers/proc_pid_fdinfo.md +++ b/docs/parsers/proc_pid_fdinfo.md @@ -3,7 +3,7 @@ # jc.parsers.proc\_pid\_fdinfo -jc - JSON Convert `/proc//fdinfo` file parser +jc - JSON Convert `/proc//fdinfo/` file parser Usage (cli): diff --git a/jc/parsers/proc_pid_fdinfo.py b/jc/parsers/proc_pid_fdinfo.py index b752c30f..e8e99460 100644 --- a/jc/parsers/proc_pid_fdinfo.py +++ b/jc/parsers/proc_pid_fdinfo.py @@ -1,4 +1,4 @@ -"""jc - JSON Convert `/proc//fdinfo` file parser +"""jc - JSON Convert `/proc//fdinfo/` file parser Usage (cli): @@ -104,7 +104,7 @@ import jc.utils class info(): """Provides parser metadata (version, author, etc.)""" version = '1.0' - description = '`/proc/pid-fdinfo` file parser' + description = '`/proc//fdinfo/` file parser' author = 'Kelly Brazil' author_email = 'kellyjonbrazil@gmail.com' compatible = ['linux'] diff --git a/man/jc.1 b/man/jc.1 index 4a72b238..b177429e 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -548,7 +548,7 @@ PLIST file parser .TP .B \fB--proc-pid-fdinfo\fP -`/proc/pid-fdinfo` file parser +`/proc//fdinfo/` file parser .TP .B From da4e3670b1f400c3bfb8cf1df08ca94ebc3e02d1 Mon Sep 17 00:00:00 2001 From: papparapa Date: Tue, 20 Sep 2022 13:02:14 +0000 Subject: [PATCH 072/124] fix free -w parse --- jc/parsers/free.py | 2 +- tests/fixtures/centos-7.7/free-w.json | 1 + tests/fixtures/centos-7.7/free-w.out | 3 +++ tests/fixtures/ubuntu-18.04/free-w.json | 1 + tests/fixtures/ubuntu-18.04/free-w.out | 3 +++ tests/test_free.py | 24 ++++++++++++++++++++++++ 6 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 tests/fixtures/centos-7.7/free-w.json create mode 100644 tests/fixtures/centos-7.7/free-w.out create mode 100644 tests/fixtures/ubuntu-18.04/free-w.json create mode 100644 tests/fixtures/ubuntu-18.04/free-w.out diff --git a/jc/parsers/free.py b/jc/parsers/free.py index ec6e5844..d54beab8 100644 --- a/jc/parsers/free.py +++ b/jc/parsers/free.py @@ -96,7 +96,7 @@ def _process(proc_data): List of Dictionaries. Structured data to conform to the schema. """ - int_list = {'total', 'used', 'free', 'shared', 'buff_cache', 'available'} + int_list = {'total', 'used', 'free', 'shared', 'buff_cache', 'buffers', 'cache', 'available'} for entry in proc_data: for key in entry: diff --git a/tests/fixtures/centos-7.7/free-w.json b/tests/fixtures/centos-7.7/free-w.json new file mode 100644 index 00000000..8992dbdb --- /dev/null +++ b/tests/fixtures/centos-7.7/free-w.json @@ -0,0 +1 @@ +[{"type": "Mem", "total": 8053804, "used": 1262704, "free": 5830864, "shared": 60576, "buffers": 61596, "cache": 898640, "available": 6483996}, {"type": "Swap", "total": 2097152, "used": 0, "free": 2097152}] diff --git a/tests/fixtures/centos-7.7/free-w.out b/tests/fixtures/centos-7.7/free-w.out new file mode 100644 index 00000000..bdb41d53 --- /dev/null +++ b/tests/fixtures/centos-7.7/free-w.out @@ -0,0 +1,3 @@ + total used free shared buffers cache available +Mem: 8053804 1262704 5830864 60576 61596 898640 6483996 +Swap: 2097152 0 2097152 diff --git a/tests/fixtures/ubuntu-18.04/free-w.json b/tests/fixtures/ubuntu-18.04/free-w.json new file mode 100644 index 00000000..8992dbdb --- /dev/null +++ b/tests/fixtures/ubuntu-18.04/free-w.json @@ -0,0 +1 @@ +[{"type": "Mem", "total": 8053804, "used": 1262704, "free": 5830864, "shared": 60576, "buffers": 61596, "cache": 898640, "available": 6483996}, {"type": "Swap", "total": 2097152, "used": 0, "free": 2097152}] diff --git a/tests/fixtures/ubuntu-18.04/free-w.out b/tests/fixtures/ubuntu-18.04/free-w.out new file mode 100644 index 00000000..bdb41d53 --- /dev/null +++ b/tests/fixtures/ubuntu-18.04/free-w.out @@ -0,0 +1,3 @@ + total used free shared buffers cache available +Mem: 8053804 1262704 5830864 60576 61596 898640 6483996 +Swap: 2097152 0 2097152 diff --git a/tests/test_free.py b/tests/test_free.py index 40a031e4..0bfb8f47 100644 --- a/tests/test_free.py +++ b/tests/test_free.py @@ -22,6 +22,12 @@ class MyTests(unittest.TestCase): with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/free-h.out'), 'r', encoding='utf-8') as f: self.ubuntu_18_4_free_h = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/free-w.out'), 'r', encoding='utf-8') as f: + self.centos_7_7_free_w = f.read() + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/free-w.out'), 'r', encoding='utf-8') as f: + self.ubuntu_18_4_free_w = f.read() + # output with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/free.json'), 'r', encoding='utf-8') as f: self.centos_7_7_free_json = json.loads(f.read()) @@ -35,6 +41,12 @@ class MyTests(unittest.TestCase): with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/free-h.json'), 'r', encoding='utf-8') as f: self.ubuntu_18_4_free_h_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/free-w.json'), 'r', encoding='utf-8') as f: + self.centos_7_7_free_w_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/free-w.json'), 'r', encoding='utf-8') as f: + self.ubuntu_18_4_free_w_json = json.loads(f.read()) + def test_free_nodata(self): """ Test 'free' with no data @@ -65,6 +77,18 @@ class MyTests(unittest.TestCase): """ self.assertEqual(jc.parsers.free.parse(self.ubuntu_18_4_free_h, quiet=True), self.ubuntu_18_4_free_h_json) + def test_free_h_centos_7_7(self): + """ + Test 'free -w' on Centos 7.7 + """ + self.assertEqual(jc.parsers.free.parse(self.centos_7_7_free_w, quiet=True), self.centos_7_7_free_w_json) + + def test_free_h_ubuntu_18_4(self): + """ + Test 'free -w' on Ubuntu 18.4 + """ + self.assertEqual(jc.parsers.free.parse(self.ubuntu_18_4_free_w, quiet=True), self.ubuntu_18_4_free_w_json) + if __name__ == '__main__': unittest.main() From 2d9dcde0e380c8e178dabfa6c8dd8f8fb03ded83 Mon Sep 17 00:00:00 2001 From: papparapa Date: Wed, 21 Sep 2022 10:36:11 +0000 Subject: [PATCH 073/124] fix wrong test function name --- tests/test_free.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_free.py b/tests/test_free.py index 0bfb8f47..83264f10 100644 --- a/tests/test_free.py +++ b/tests/test_free.py @@ -77,13 +77,13 @@ class MyTests(unittest.TestCase): """ self.assertEqual(jc.parsers.free.parse(self.ubuntu_18_4_free_h, quiet=True), self.ubuntu_18_4_free_h_json) - def test_free_h_centos_7_7(self): + def test_free_w_centos_7_7(self): """ Test 'free -w' on Centos 7.7 """ self.assertEqual(jc.parsers.free.parse(self.centos_7_7_free_w, quiet=True), self.centos_7_7_free_w_json) - def test_free_h_ubuntu_18_4(self): + def test_free_w_ubuntu_18_4(self): """ Test 'free -w' on Ubuntu 18.4 """ From e29262b95aa04ced1c70f860d906870f453f8ffc Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Thu, 22 Sep 2022 08:05:05 -0700 Subject: [PATCH 074/124] version bump for free parser --- docs/parsers/free.md | 2 +- jc/parsers/free.py | 2 +- man/jc.1 | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/parsers/free.md b/docs/parsers/free.md index 1e9fb92f..bc2e63dc 100644 --- a/docs/parsers/free.md +++ b/docs/parsers/free.md @@ -95,4 +95,4 @@ Returns: ### Parser Information Compatibility: linux -Version 1.6 by Kelly Brazil (kellyjonbrazil@gmail.com) +Version 1.7 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/parsers/free.py b/jc/parsers/free.py index d54beab8..8116f2e9 100644 --- a/jc/parsers/free.py +++ b/jc/parsers/free.py @@ -73,7 +73,7 @@ import jc.parsers.universal class info(): """Provides parser metadata (version, author, etc.)""" - version = '1.6' + version = '1.7' description = '`free` command parser' author = 'Kelly Brazil' author_email = 'kellyjonbrazil@gmail.com' diff --git a/man/jc.1 b/man/jc.1 index b177429e..4c63ebd3 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -1,4 +1,4 @@ -.TH jc 1 2022-09-19 1.21.2 "JSON Convert" +.TH jc 1 2022-09-22 1.21.2 "JSON Convert" .SH NAME \fBjc\fP \- JSON Convert JSONifies the output of many CLI tools, file-types, and strings .SH SYNOPSIS From 02e08403e3a7794ba9a0510cac23b58f3056b2ed Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Thu, 22 Sep 2022 08:15:51 -0700 Subject: [PATCH 075/124] schema update --- docs/parsers/proc_pid_mountinfo.md | 4 +++- jc/parsers/proc_pid_mountinfo.py | 6 ++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/docs/parsers/proc_pid_mountinfo.md b/docs/parsers/proc_pid_mountinfo.md index 9e0a4e2e..f0114ee2 100644 --- a/docs/parsers/proc_pid_mountinfo.md +++ b/docs/parsers/proc_pid_mountinfo.md @@ -46,7 +46,7 @@ Schema: "fs_type": string, "mount_source": string, "super_options": [ - string + integer # [2] ], "super_options_fields": { "": string @@ -56,6 +56,8 @@ Schema: [0] if empty, then private mount [1] unbindable will always have a value of 0 + [2] integer conversions are attempted. Use --raw or raw=True for + original string values. Examples: diff --git a/jc/parsers/proc_pid_mountinfo.py b/jc/parsers/proc_pid_mountinfo.py index 72399911..2babb5bb 100644 --- a/jc/parsers/proc_pid_mountinfo.py +++ b/jc/parsers/proc_pid_mountinfo.py @@ -41,7 +41,7 @@ Schema: "fs_type": string, "mount_source": string, "super_options": [ - string + integer # [2] ], "super_options_fields": { "": string @@ -51,6 +51,8 @@ Schema: [0] if empty, then private mount [1] unbindable will always have a value of 0 + [2] integer conversions are attempted. Use --raw or raw=True for + original string values. Examples: @@ -200,7 +202,7 @@ def _process(proc_data: List[Dict]) -> List[Dict]: for field in s_options_fields: key, val = field.split('=') - entry['super_options_fields'][key] = val + entry['super_options_fields'][key] = jc.utils.convert_to_int(val) else: del entry['super_options'] From 7ca0a511d599fda1a49fa0f6fb1e8cfbaf2c237a Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Thu, 22 Sep 2022 08:15:55 -0700 Subject: [PATCH 076/124] doc update --- CHANGELOG | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG b/CHANGELOG index c8491521..bfe9a2ba 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -2,6 +2,7 @@ jc changelog 20220915 v1.22.0 - Add /proc file parsers +- Enhance `free` parser to support `-w` option integer conversions - Fix `id` command parser to allow usernames and groupnames with spaces 20220829 v1.21.2 From 88222edb7f7eda34b933304d01335832ced677a1 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Thu, 22 Sep 2022 08:39:01 -0700 Subject: [PATCH 077/124] ini and kv parser: don't convert keynames to lowercase --- jc/parsers/ini.py | 6 +++- tests/fixtures/generic/ini-iptelserver.json | 2 +- tests/fixtures/generic/ini-test.json | 2 +- tests/fixtures/generic/keyvalue-ifcfg.json | 2 +- tests/test_ini.py | 37 ++++++++++----------- tests/test_kv.py | 22 ++++++------ 6 files changed, 37 insertions(+), 34 deletions(-) diff --git a/jc/parsers/ini.py b/jc/parsers/ini.py index 09313294..e947086f 100644 --- a/jc/parsers/ini.py +++ b/jc/parsers/ini.py @@ -70,7 +70,7 @@ import configparser class info(): """Provides parser metadata (version, author, etc.)""" - version = '1.7' + version = '1.8' description = 'INI file parser' author = 'Kelly Brazil' author_email = 'kellyjonbrazil@gmail.com' @@ -145,6 +145,10 @@ def parse(data, raw=False, quiet=False): ini = configparser.ConfigParser(allow_no_value=True, interpolation=None, strict=False) + + # don't convert keys to lower-case: + ini.optionxform = lambda option: option + try: ini.read_string(data) raw_output = {s: dict(ini.items(s)) for s in ini.sections()} diff --git a/tests/fixtures/generic/ini-iptelserver.json b/tests/fixtures/generic/ini-iptelserver.json index 68a0d7d4..c74d7d4a 100644 --- a/tests/fixtures/generic/ini-iptelserver.json +++ b/tests/fixtures/generic/ini-iptelserver.json @@ -1 +1 @@ -{"Settings": {"detailedlog": "1", "runstatus": "1", "statusport": "6090", "statusrefresh": "10", "archive": "1", "logfile": "/opt/ecs/mvuser/MV_IPTel/log/MV_IPTel.log", "version": "0.9 Build 4 Created July 11 2004 14:00", "servername": "Unknown"}, "FTP": {"runftp": "1", "ftpport": "21", "ftpdataport": "20", "ftpdir": "/opt/ecs/mvuser/MV_IPTel/data/FTPdata", "ftp_timeout": "5", "enablesu": "1", "suusername": "mvuser", "supassword": "Avaya"}, "FTPS": {"runftps": "0", "ftpport": "990", "ftpdataport": "889"}, "TFTP": {"runtrivialftp": "1", "trivialftpport": "69", "tftpdir": "/opt/ecs/mvuser/MV_IPTel/data/TFTPdata"}, "HTTP": {"runhttp": "1", "httpport": "81", "httpdir": "/opt/ecs/mvuser/MV_IPTel/data/HTTPdata"}, "HTTPS": {"runhttps": "0", "httpsport": "411", "httpsdir": "/opt/ecs/mvuser/MV_IPTel/data/HTTPSdata", "certfile": "/opt/ecs/mvuser/MV_IPTel/certs/IPTelcert.pem", "keyfile": "/opt/ecs/mvuser/MV_IPTel/certs/IPTelkey.pem", "clientauth": "0", "iptel": "0", "sslv2": "0", "sslv3": "0", "tlsv1": "1", "useproxy": "0", "proxyaddr": "simon.avaya.com", "proxyport": "9000"}, "BACKUP_SERVERS": {"fileserver": "0", "requestupdates": "0", "requestbackup": "0", "useprimarysvr": "0", "primaryip": "192.168.0.13", "usesecondarysvr": "0", "secondaryip": "192.168.0.10", "updateinterval": "2", "customftp": "1", "customftpdir": "home/mvuser/backup", "customftpuname": "tom", "customftppwd": "jerry", "cdrbackup": "0", "bcmsbackup": "0", "retaindays": "7.0"}, "SNMP": {"usesnmp": "1"}} +{"Settings":{"DetailedLog":"1","RunStatus":"1","StatusPort":"6090","StatusRefresh":"10","Archive":"1","LogFile":"/opt/ecs/mvuser/MV_IPTel/log/MV_IPTel.log","Version":"0.9 Build 4 Created July 11 2004 14:00","ServerName":"Unknown"},"FTP":{"RunFTP":"1","FTPPort":"21","FTPDataPort":"20","FTPDir":"/opt/ecs/mvuser/MV_IPTel/data/FTPdata","FTP_TimeOut":"5","EnableSU":"1","SUUserName":"mvuser","SUPassword":"Avaya"},"FTPS":{"RunFTPS":"0","FTPPort":"990","FTPDataPort":"889"},"TFTP":{"RunTrivialFTP":"1","TrivialFTPPort":"69","TFTPDir":"/opt/ecs/mvuser/MV_IPTel/data/TFTPdata"},"HTTP":{"RunHTTP":"1","HTTPPort":"81","HTTPDir":"/opt/ecs/mvuser/MV_IPTel/data/HTTPdata"},"HTTPS":{"RunHTTPS":"0","HTTPSPort":"411","HTTPSDir":"/opt/ecs/mvuser/MV_IPTel/data/HTTPSdata","CertFile":"/opt/ecs/mvuser/MV_IPTel/certs/IPTelcert.pem","KeyFile":"/opt/ecs/mvuser/MV_IPTel/certs/IPTelkey.pem","ClientAuth":"0","IPTel":"0","SSLV2":"0","SSLV3":"0","TLSV1":"1","UseProxy":"0","ProxyAddr":"simon.avaya.com","ProxyPort":"9000"},"BACKUP_SERVERS":{"FileServer":"0","RequestUpdates":"0","RequestBackup":"0","UsePrimarySvr":"0","PrimaryIP":"192.168.0.13","UseSecondarySvr":"0","SecondaryIP":"192.168.0.10","UpdateInterval":"2","CustomFTP":"1","CustomFTPDir":"home/mvuser/backup","CustomFTPUName":"tom","CustomFTPPwd":"jerry","CDRBackup":"0","BCMSBackup":"0","RetainDays":"7.0"},"SNMP":{"UseSNMP":"1"}} diff --git a/tests/fixtures/generic/ini-test.json b/tests/fixtures/generic/ini-test.json index 30d55804..c3250682 100644 --- a/tests/fixtures/generic/ini-test.json +++ b/tests/fixtures/generic/ini-test.json @@ -1 +1 @@ -{"bitbucket.org": {"serveraliveinterval": "45", "compression": "yes", "compressionlevel": "9", "forwardx11": "yes", "user": "hg"}, "topsecret.server.com": {"serveraliveinterval": "45", "compression": "yes", "compressionlevel": "9", "forwardx11": "no", "port": "50022"}} +{"bitbucket.org":{"ServerAliveInterval":"45","Compression":"yes","CompressionLevel":"9","ForwardX11":"yes","User":"hg"},"topsecret.server.com":{"ServerAliveInterval":"45","Compression":"yes","CompressionLevel":"9","ForwardX11":"no","Port":"50022"}} diff --git a/tests/fixtures/generic/keyvalue-ifcfg.json b/tests/fixtures/generic/keyvalue-ifcfg.json index 3d399e7e..01e53893 100644 --- a/tests/fixtures/generic/keyvalue-ifcfg.json +++ b/tests/fixtures/generic/keyvalue-ifcfg.json @@ -1 +1 @@ -{"type": "Ethernet", "proxy_method": "none", "browser_only": "no", "bootproto": "dhcp", "defroute": "yes", "ipv4_failure_fatal": "no", "ipv6init": "yes", "ipv6_autoconf": "yes", "ipv6_defroute": "yes", "ipv6_failure_fatal": "no", "ipv6_addr_gen_mode": "stable-privacy", "name": "ens33", "uuid": "d92ece08-9e02-47d5-b2d2-92c80e155744", "device": "ens33", "onboot": "yes", "value_with_spaces": "this value includes spaces", "value_with_quotes_inside": "this value \"has quotation marks\" inside", "value_with_quotes_inside2": "\"this value\" has quotations at the beginning but not the end", "value_with_quotes_inside3": "this value has quotation marks \"at the end\""} +{"TYPE":"Ethernet","PROXY_METHOD":"none","BROWSER_ONLY":"no","BOOTPROTO":"dhcp","DEFROUTE":"yes","IPV4_FAILURE_FATAL":"no","IPV6INIT":"yes","IPV6_AUTOCONF":"yes","IPV6_DEFROUTE":"yes","IPV6_FAILURE_FATAL":"no","IPV6_ADDR_GEN_MODE":"stable-privacy","NAME":"ens33","UUID":"d92ece08-9e02-47d5-b2d2-92c80e155744","DEVICE":"ens33","ONBOOT":"yes","value_with_spaces":"this value includes spaces","value_with_quotes_inside":"this value \"has quotation marks\" inside","value_with_quotes_inside2":"\"this value\" has quotations at the beginning but not the end","value_with_quotes_inside3":"this value has quotation marks \"at the end\""} diff --git a/tests/test_ini.py b/tests/test_ini.py index bd815d77..4e69e5df 100644 --- a/tests/test_ini.py +++ b/tests/test_ini.py @@ -8,32 +8,31 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ini-test.ini'), 'r', encoding='utf-8') as f: - self.generic_ini_test = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ini-test.ini'), 'r', encoding='utf-8') as f: + generic_ini_test = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ini-iptelserver.ini'), 'r', encoding='utf-8') as f: - self.generic_ini_iptelserver = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ini-iptelserver.ini'), 'r', encoding='utf-8') as f: + generic_ini_iptelserver = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ini-double-quote.ini'), 'r', encoding='utf-8') as f: - self.generic_ini_double_quote = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ini-double-quote.ini'), 'r', encoding='utf-8') as f: + generic_ini_double_quote = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ini-single-quote.ini'), 'r', encoding='utf-8') as f: - self.generic_ini_single_quote = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ini-single-quote.ini'), 'r', encoding='utf-8') as f: + generic_ini_single_quote = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ini-test.json'), 'r', encoding='utf-8') as f: - self.generic_ini_test_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ini-test.json'), 'r', encoding='utf-8') as f: + generic_ini_test_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ini-iptelserver.json'), 'r', encoding='utf-8') as f: - self.generic_ini_iptelserver_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ini-iptelserver.json'), 'r', encoding='utf-8') as f: + generic_ini_iptelserver_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ini-double-quote.json'), 'r', encoding='utf-8') as f: - self.generic_ini_double_quote_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ini-double-quote.json'), 'r', encoding='utf-8') as f: + generic_ini_double_quote_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ini-single-quote.json'), 'r', encoding='utf-8') as f: - self.generic_ini_single_quote_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ini-single-quote.json'), 'r', encoding='utf-8') as f: + generic_ini_single_quote_json = json.loads(f.read()) def test_ini_nodata(self): """ diff --git a/tests/test_kv.py b/tests/test_kv.py index 6815cca8..ebf3a4d6 100644 --- a/tests/test_kv.py +++ b/tests/test_kv.py @@ -8,20 +8,20 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/keyvalue.txt'), 'r', encoding='utf-8') as f: - self.generic_ini_keyvalue = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/keyvalue.txt'), 'r', encoding='utf-8') as f: + generic_ini_keyvalue = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/keyvalue-ifcfg.txt'), 'r', encoding='utf-8') as f: - self.generic_ini_keyvalue_ifcfg = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/keyvalue-ifcfg.txt'), 'r', encoding='utf-8') as f: + generic_ini_keyvalue_ifcfg = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/keyvalue.json'), 'r', encoding='utf-8') as f: - self.generic_ini_keyvalue_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/keyvalue.json'), 'r', encoding='utf-8') as f: + generic_ini_keyvalue_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/keyvalue-ifcfg.json'), 'r', encoding='utf-8') as f: + generic_ini_keyvalue_ifcfg_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/keyvalue-ifcfg.json'), 'r', encoding='utf-8') as f: - self.generic_ini_keyvalue_ifcfg_json = json.loads(f.read()) def test_kv_nodata(self): """ From 12cc670fa0adb656b610e65336a1de9d58d648cb Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Thu, 22 Sep 2022 08:50:06 -0700 Subject: [PATCH 078/124] doc update --- CHANGELOG | 1 + docs/parsers/ini.md | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index bfe9a2ba..311a878e 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ jc changelog 20220915 v1.22.0 - Add /proc file parsers - Enhance `free` parser to support `-w` option integer conversions +- Fix `ini` and `kv` parsers so they don't change keynames to lower case - Fix `id` command parser to allow usernames and groupnames with spaces 20220829 v1.21.2 diff --git a/docs/parsers/ini.md b/docs/parsers/ini.md index 5f77a36f..32eae32b 100644 --- a/docs/parsers/ini.md +++ b/docs/parsers/ini.md @@ -92,4 +92,4 @@ Returns: ### Parser Information Compatibility: linux, darwin, cygwin, win32, aix, freebsd -Version 1.7 by Kelly Brazil (kellyjonbrazil@gmail.com) +Version 1.8 by Kelly Brazil (kellyjonbrazil@gmail.com) From 8da203648bf0b7dc1bcb08ac2926e90ad9338486 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Thu, 22 Sep 2022 14:28:03 -0700 Subject: [PATCH 079/124] update ini examples --- EXAMPLES.md | 20 ++++++++++---------- README.md | 20 ++++++++++---------- docs/parsers/ini.md | 20 ++++++++++---------- jc/parsers/ini.py | 20 ++++++++++---------- templates/readme_template | 20 ++++++++++---------- 5 files changed, 50 insertions(+), 50 deletions(-) diff --git a/EXAMPLES.md b/EXAMPLES.md index 2019bc7c..f8037aff 100644 --- a/EXAMPLES.md +++ b/EXAMPLES.md @@ -1637,18 +1637,18 @@ cat example.ini | jc --ini -p ```json { "bitbucket.org": { - "serveraliveinterval": "45", - "compression": "yes", - "compressionlevel": "9", - "forwardx11": "yes", - "user": "hg" + "ServeraLiveInterval": "45", + "Compression": "yes", + "CompressionLevel": "9", + "ForwardX11": "yes", + "User": "hg" }, "topsecret.server.com": { - "serveraliveinterval": "45", - "compression": "yes", - "compressionlevel": "9", - "forwardx11": "no", - "port": "50022" + "ServeraLiveInterval": "45", + "Compression": "yes", + "CompressionLevel": "9", + "ForwardX11": "no", + "Port": "50022" } } ``` diff --git a/README.md b/README.md index 24bd24c0..d295fafb 100644 --- a/README.md +++ b/README.md @@ -761,18 +761,18 @@ cat example.ini | jc -p --ini ```json { "bitbucket.org": { - "serveraliveinterval": "45", - "compression": "yes", - "compressionlevel": "9", - "forwardx11": "yes", - "user": "hg" + "ServeraLiveInterval": "45", + "Compression": "yes", + "CompressionLevel": "9", + "ForwardX11": "yes", + "User": "hg" }, "topsecret.server.com": { - "serveraliveinterval": "45", - "compression": "yes", - "compressionlevel": "9", - "forwardx11": "no", - "port": "50022" + "ServeraLiveInterval": "45", + "Compression": "yes", + "CompressionLevel": "9", + "ForwardX11": "no", + "Port": "50022" } } ``` diff --git a/docs/parsers/ini.md b/docs/parsers/ini.md index 32eae32b..984e9d83 100644 --- a/docs/parsers/ini.md +++ b/docs/parsers/ini.md @@ -54,18 +54,18 @@ Examples: $ cat example.ini | jc --ini -p { "bitbucket.org": { - "serveraliveinterval": "45", - "compression": "yes", - "compressionlevel": "9", - "forwardx11": "yes", - "user": "hg" + "ServerAliveInterval": "45", + "Compression": "yes", + "CompressionLevel": "9", + "ForwardX11": "yes", + "User": "hg" }, "topsecret.server.com": { - "serveraliveinterval": "45", - "compression": "yes", - "compressionlevel": "9", - "forwardx11": "no", - "port": "50022" + "ServerAliveInterval": "45", + "Compression": "yes", + "CompressionLevel": "9", + "ForwardX11": "no", + "Port": "50022" } } diff --git a/jc/parsers/ini.py b/jc/parsers/ini.py index e947086f..6a68ba07 100644 --- a/jc/parsers/ini.py +++ b/jc/parsers/ini.py @@ -49,18 +49,18 @@ Examples: $ cat example.ini | jc --ini -p { "bitbucket.org": { - "serveraliveinterval": "45", - "compression": "yes", - "compressionlevel": "9", - "forwardx11": "yes", - "user": "hg" + "ServerAliveInterval": "45", + "Compression": "yes", + "CompressionLevel": "9", + "ForwardX11": "yes", + "User": "hg" }, "topsecret.server.com": { - "serveraliveinterval": "45", - "compression": "yes", - "compressionlevel": "9", - "forwardx11": "no", - "port": "50022" + "ServerAliveInterval": "45", + "Compression": "yes", + "CompressionLevel": "9", + "ForwardX11": "no", + "Port": "50022" } } """ diff --git a/templates/readme_template b/templates/readme_template index 5f25970a..2811435c 100644 --- a/templates/readme_template +++ b/templates/readme_template @@ -641,18 +641,18 @@ cat example.ini | jc -p --ini ```json { "bitbucket.org": { - "serveraliveinterval": "45", - "compression": "yes", - "compressionlevel": "9", - "forwardx11": "yes", - "user": "hg" + "ServeraLiveInterval": "45", + "Compression": "yes", + "CompressionLevel": "9", + "ForwardX11": "yes", + "User": "hg" }, "topsecret.server.com": { - "serveraliveinterval": "45", - "compression": "yes", - "compressionlevel": "9", - "forwardx11": "no", - "port": "50022" + "ServeraLiveInterval": "45", + "Compression": "yes", + "CompressionLevel": "9", + "ForwardX11": "no", + "Port": "50022" } } ``` From d51df73f3718014e96a599ffa146a3d4b978f29f Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Thu, 22 Sep 2022 14:35:53 -0700 Subject: [PATCH 080/124] pid -H vs -h doc fix --- README.md | 2 +- completions/jc_zsh_completion.sh | 2 +- docs/parsers/pidstat.md | 10 +++++----- jc/parsers/pidstat.py | 14 +++++++------- man/jc.1 | 2 +- 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index d295fafb..8411b9df 100644 --- a/README.md +++ b/README.md @@ -221,7 +221,7 @@ option. | ` --nmcli` | `nmcli` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/nmcli) | | ` --ntpq` | `ntpq -p` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/ntpq) | | ` --passwd` | `/etc/passwd` file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/passwd) | -| ` --pidstat` | `pidstat -h` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/pidstat) | +| ` --pidstat` | `pidstat -H` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/pidstat) | | ` --pidstat-s` | `pidstat -h` command streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/pidstat_s) | | ` --ping` | `ping` and `ping6` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/ping) | | ` --ping-s` | `ping` and `ping6` command streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/ping_s) | diff --git a/completions/jc_zsh_completion.sh b/completions/jc_zsh_completion.sh index 13cddabf..3b250a45 100644 --- a/completions/jc_zsh_completion.sh +++ b/completions/jc_zsh_completion.sh @@ -164,7 +164,7 @@ _jc() { '--nmcli:`nmcli` command parser' '--ntpq:`ntpq -p` command parser' '--passwd:`/etc/passwd` file parser' - '--pidstat:`pidstat -h` command parser' + '--pidstat:`pidstat -H` command parser' '--pidstat-s:`pidstat -h` command streaming parser' '--ping:`ping` and `ping6` command parser' '--ping-s:`ping` and `ping6` command streaming parser' diff --git a/docs/parsers/pidstat.md b/docs/parsers/pidstat.md index e8d97af5..0d536aa5 100644 --- a/docs/parsers/pidstat.md +++ b/docs/parsers/pidstat.md @@ -3,10 +3,10 @@ # jc.parsers.pidstat -jc - JSON Convert `pidstat -h` command output parser +jc - JSON Convert `pidstat -H` command output parser -Must use the `-h` option in `pidstat`. All other `pidstat` options are -supported in combination with `-h`. +Must use the `-H` (or `-h`, if `-H` is not available) option in `pidstat`. +All other `pidstat` options are supported in combination with this option. Usage (cli): @@ -51,7 +51,7 @@ Schema: Examples: - $ pidstat -hl | jc --pidstat -p + $ pidstat -Hl | jc --pidstat -p [ { "time": 1646859134, @@ -88,7 +88,7 @@ Examples: } ] - $ pidstat -hl | jc --pidstat -p -r + $ pidstat -Hl | jc --pidstat -p -r [ { "time": "1646859134", diff --git a/jc/parsers/pidstat.py b/jc/parsers/pidstat.py index ee031eae..65742006 100644 --- a/jc/parsers/pidstat.py +++ b/jc/parsers/pidstat.py @@ -1,7 +1,7 @@ -"""jc - JSON Convert `pidstat -h` command output parser +"""jc - JSON Convert `pidstat -H` command output parser -Must use the `-h` option in `pidstat`. All other `pidstat` options are -supported in combination with `-h`. +Must use the `-H` (or `-h`, if `-H` is not available) option in `pidstat`. +All other `pidstat` options are supported in combination with this option. Usage (cli): @@ -46,7 +46,7 @@ Schema: Examples: - $ pidstat -hl | jc --pidstat -p + $ pidstat -Hl | jc --pidstat -p [ { "time": 1646859134, @@ -83,7 +83,7 @@ Examples: } ] - $ pidstat -hl | jc --pidstat -p -r + $ pidstat -Hl | jc --pidstat -p -r [ { "time": "1646859134", @@ -129,7 +129,7 @@ from jc.exceptions import ParseError class info(): """Provides parser metadata (version, author, etc.)""" version = '1.1' - description = '`pidstat -h` command parser' + description = '`pidstat -H` command parser' author = 'Kelly Brazil' author_email = 'kellyjonbrazil@gmail.com' compatible = ['linux'] @@ -210,7 +210,7 @@ def parse( .replace('%', 'percent_')\ .lower() - # remove remaining header lines (e.g. pidstat -h 2 5) + # remove remaining header lines (e.g. pidstat -H 2 5) data_list = [i for i in data_list if not i.startswith('#')] raw_output = simple_table_parse(data_list) diff --git a/man/jc.1 b/man/jc.1 index 4c63ebd3..40a41991 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -368,7 +368,7 @@ M3U and M3U8 file parser .TP .B \fB--pidstat\fP -`pidstat -h` command parser +`pidstat -H` command parser .TP .B From 7c0e43b2e147b9a0cfa3c737f91fcccde28f45f0 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Thu, 22 Sep 2022 14:41:40 -0700 Subject: [PATCH 081/124] pidstat doc update --- README.md | 2 +- completions/jc_zsh_completion.sh | 2 +- docs/parsers/pidstat.md | 4 ++-- docs/parsers/pidstat_s.md | 12 ++++++------ jc/parsers/pidstat.py | 4 ++-- jc/parsers/pidstat_s.py | 14 +++++++------- man/jc.1 | 2 +- 7 files changed, 20 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 8411b9df..709ee872 100644 --- a/README.md +++ b/README.md @@ -222,7 +222,7 @@ option. | ` --ntpq` | `ntpq -p` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/ntpq) | | ` --passwd` | `/etc/passwd` file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/passwd) | | ` --pidstat` | `pidstat -H` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/pidstat) | -| ` --pidstat-s` | `pidstat -h` command streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/pidstat_s) | +| ` --pidstat-s` | `pidstat -H` command streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/pidstat_s) | | ` --ping` | `ping` and `ping6` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/ping) | | ` --ping-s` | `ping` and `ping6` command streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/ping_s) | | ` --pip-list` | `pip list` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/pip_list) | diff --git a/completions/jc_zsh_completion.sh b/completions/jc_zsh_completion.sh index 3b250a45..ced2aa52 100644 --- a/completions/jc_zsh_completion.sh +++ b/completions/jc_zsh_completion.sh @@ -165,7 +165,7 @@ _jc() { '--ntpq:`ntpq -p` command parser' '--passwd:`/etc/passwd` file parser' '--pidstat:`pidstat -H` command parser' - '--pidstat-s:`pidstat -h` command streaming parser' + '--pidstat-s:`pidstat -H` command streaming parser' '--ping:`ping` and `ping6` command parser' '--ping-s:`ping` and `ping6` command streaming parser' '--pip-list:`pip list` command parser' diff --git a/docs/parsers/pidstat.md b/docs/parsers/pidstat.md index 0d536aa5..b40ad23c 100644 --- a/docs/parsers/pidstat.md +++ b/docs/parsers/pidstat.md @@ -10,11 +10,11 @@ All other `pidstat` options are supported in combination with this option. Usage (cli): - $ pidstat -h | jc --pidstat + $ pidstat -H | jc --pidstat or - $ jc pidstat -h + $ jc pidstat -H Usage (module): diff --git a/docs/parsers/pidstat_s.md b/docs/parsers/pidstat_s.md index 3de747c8..f3639c16 100644 --- a/docs/parsers/pidstat_s.md +++ b/docs/parsers/pidstat_s.md @@ -3,17 +3,17 @@ # jc.parsers.pidstat\_s -jc - JSON Convert `pidstat -h` command output streaming parser +jc - JSON Convert `pidstat -H` command output streaming parser > This streaming parser outputs JSON Lines (cli) or returns an Iterable of > Dictionaries (module) -Must use the `-h` option in `pidstat`. All other `pidstat` options are -supported in combination with `-h`. +Must use the `-H` (or `-h`, if `-H` is not available) option in `pidstat`. +All other `pidstat` options are supported in combination with this option. Usage (cli): - $ pidstat | jc --pidstat-s + $ pidstat -H | jc --pidstat-s > Note: When piping `jc` converted `pidstat` output to other processes it > may appear the output is hanging due to the OS pipe buffers. This is @@ -65,13 +65,13 @@ Schema: Examples: - $ pidstat -hl | jc --pidstat-s + $ pidstat -Hl | jc --pidstat-s {"time":1646859134,"uid":0,"pid":1,"percent_usr":0.0,"percent_syste...} {"time":1646859134,"uid":0,"pid":6,"percent_usr":0.0,"percent_syste...} {"time":1646859134,"uid":0,"pid":9,"percent_usr":0.0,"percent_syste...} ... - $ pidstat -hl | jc --pidstat-s -r + $ pidstat -Hl | jc --pidstat-s -r {"time":"1646859134","uid":"0","pid":"1","percent_usr":"0.00","perc...} {"time":"1646859134","uid":"0","pid":"6","percent_usr":"0.00","perc...} {"time":"1646859134","uid":"0","pid":"9","percent_usr":"0.00","perc...} diff --git a/jc/parsers/pidstat.py b/jc/parsers/pidstat.py index 65742006..b89427d0 100644 --- a/jc/parsers/pidstat.py +++ b/jc/parsers/pidstat.py @@ -5,11 +5,11 @@ All other `pidstat` options are supported in combination with this option. Usage (cli): - $ pidstat -h | jc --pidstat + $ pidstat -H | jc --pidstat or - $ jc pidstat -h + $ jc pidstat -H Usage (module): diff --git a/jc/parsers/pidstat_s.py b/jc/parsers/pidstat_s.py index 9242d97a..f27cd9bf 100644 --- a/jc/parsers/pidstat_s.py +++ b/jc/parsers/pidstat_s.py @@ -1,14 +1,14 @@ -"""jc - JSON Convert `pidstat -h` command output streaming parser +"""jc - JSON Convert `pidstat -H` command output streaming parser > This streaming parser outputs JSON Lines (cli) or returns an Iterable of > Dictionaries (module) -Must use the `-h` option in `pidstat`. All other `pidstat` options are -supported in combination with `-h`. +Must use the `-H` (or `-h`, if `-H` is not available) option in `pidstat`. +All other `pidstat` options are supported in combination with this option. Usage (cli): - $ pidstat | jc --pidstat-s + $ pidstat -H | jc --pidstat-s > Note: When piping `jc` converted `pidstat` output to other processes it > may appear the output is hanging due to the OS pipe buffers. This is @@ -60,13 +60,13 @@ Schema: Examples: - $ pidstat -hl | jc --pidstat-s + $ pidstat -Hl | jc --pidstat-s {"time":1646859134,"uid":0,"pid":1,"percent_usr":0.0,"percent_syste...} {"time":1646859134,"uid":0,"pid":6,"percent_usr":0.0,"percent_syste...} {"time":1646859134,"uid":0,"pid":9,"percent_usr":0.0,"percent_syste...} ... - $ pidstat -hl | jc --pidstat-s -r + $ pidstat -Hl | jc --pidstat-s -r {"time":"1646859134","uid":"0","pid":"1","percent_usr":"0.00","perc...} {"time":"1646859134","uid":"0","pid":"6","percent_usr":"0.00","perc...} {"time":"1646859134","uid":"0","pid":"9","percent_usr":"0.00","perc...} @@ -84,7 +84,7 @@ from jc.exceptions import ParseError class info(): """Provides parser metadata (version, author, etc.)""" version = '1.1' - description = '`pidstat -h` command streaming parser' + description = '`pidstat -H` command streaming parser' author = 'Kelly Brazil' author_email = 'kellyjonbrazil@gmail.com' compatible = ['linux'] diff --git a/man/jc.1 b/man/jc.1 index 40a41991..0888ea5b 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -373,7 +373,7 @@ M3U and M3U8 file parser .TP .B \fB--pidstat-s\fP -`pidstat -h` command streaming parser +`pidstat -H` command streaming parser .TP .B From 113a90a5a0bc701729c551f37c939119349c7977 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Fri, 23 Sep 2022 10:58:28 -0700 Subject: [PATCH 082/124] optimize tests --- tests/templates/_test_foo.py | 13 ++- tests/templates/_test_foo_s.py | 13 ++- tests/test_acpi.py | 45 ++++---- tests/test_airport.py | 13 ++- tests/test_airport_s.py | 13 ++- tests/test_arp.py | 93 ++++++++-------- tests/test_blkid.py | 85 ++++++++------- tests/test_cef.py | 13 ++- tests/test_cef_s.py | 13 ++- tests/test_chage.py | 13 ++- tests/test_cksum.py | 37 ++++--- tests/test_crontab.py | 14 +-- tests/test_crontab_u.py | 30 +++--- tests/test_csv.py | 86 +++++++-------- tests/test_csv_s.py | 86 +++++++-------- tests/test_date.py | 46 ++++---- tests/test_df.py | 78 +++++++------- tests/test_dig.py | 190 ++++++++++++++++----------------- tests/test_dir.py | 80 +++++++------- tests/test_dmidecode.py | 30 +++--- tests/test_dpkg_l.py | 30 +++--- tests/test_du.py | 38 +++---- tests/test_env.py | 22 ++-- tests/test_file.py | 46 ++++---- tests/test_finger.py | 29 +++-- tests/test_free.py | 53 +++++---- tests/test_fstab.py | 22 ++-- tests/test_git_log.py | 149 +++++++++++++------------- tests/test_git_log_s.py | 154 +++++++++++++------------- tests/test_gpg.py | 13 ++- tests/test_group.py | 30 +++--- tests/test_gshadow.py | 22 ++-- tests/test_hash.py | 14 +-- tests/test_hashsum.py | 46 ++++---- tests/test_hciconfig.py | 38 +++---- tests/test_history.py | 22 ++-- tests/test_hosts.py | 22 ++-- tests/test_id.py | 22 ++-- tests/test_ifconfig.py | 53 +++++---- tests/test_ini.py | 1 + tests/test_iostat.py | 118 ++++++++++---------- tests/test_iostat_s.py | 118 ++++++++++---------- 42 files changed, 1019 insertions(+), 1034 deletions(-) diff --git a/tests/templates/_test_foo.py b/tests/templates/_test_foo.py index 9ca7b75c..de2b7618 100644 --- a/tests/templates/_test_foo.py +++ b/tests/templates/_test_foo.py @@ -8,14 +8,13 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/foo.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_foo = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/foo.out'), 'r', encoding='utf-8') as f: + centos_7_7_foo = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/foo.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_foo_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/foo.json'), 'r', encoding='utf-8') as f: + centos_7_7_foo_json = json.loads(f.read()) def test_foo_nodata(self): diff --git a/tests/templates/_test_foo_s.py b/tests/templates/_test_foo_s.py index 21db72e2..67b34d2a 100644 --- a/tests/templates/_test_foo_s.py +++ b/tests/templates/_test_foo_s.py @@ -11,14 +11,13 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/foo.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_foo = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/foo.out'), 'r', encoding='utf-8') as f: + centos_7_7_foo = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/foo-streaming.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_foo_streaming_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/foo-streaming.json'), 'r', encoding='utf-8') as f: + centos_7_7_foo_streaming_json = json.loads(f.read()) def test_foo_s_nodata(self): """ diff --git a/tests/test_acpi.py b/tests/test_acpi.py index 389027da..a795f88a 100644 --- a/tests/test_acpi.py +++ b/tests/test_acpi.py @@ -8,38 +8,37 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/acpi-V.out'), 'r', encoding='utf-8') as f: - self.generic_acpi_V = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/acpi-V.out'), 'r', encoding='utf-8') as f: + generic_acpi_V = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/acpi-V2.out'), 'r', encoding='utf-8') as f: - self.generic_acpi_V2 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/acpi-V2.out'), 'r', encoding='utf-8') as f: + generic_acpi_V2 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/acpi-V3.out'), 'r', encoding='utf-8') as f: - self.generic_acpi_V3 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/acpi-V3.out'), 'r', encoding='utf-8') as f: + generic_acpi_V3 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/acpi-V4.out'), 'r', encoding='utf-8') as f: - self.generic_acpi_V4 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/acpi-V4.out'), 'r', encoding='utf-8') as f: + generic_acpi_V4 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/acpi-V.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_04_acpi_V = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/acpi-V.out'), 'r', encoding='utf-8') as f: + ubuntu_18_04_acpi_V = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/acpi-V.json'), 'r', encoding='utf-8') as f: - self.generic_acpi_V_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/acpi-V.json'), 'r', encoding='utf-8') as f: + generic_acpi_V_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/acpi-V2.json'), 'r', encoding='utf-8') as f: - self.generic_acpi_V2_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/acpi-V2.json'), 'r', encoding='utf-8') as f: + generic_acpi_V2_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/acpi-V3.json'), 'r', encoding='utf-8') as f: - self.generic_acpi_V3_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/acpi-V3.json'), 'r', encoding='utf-8') as f: + generic_acpi_V3_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/acpi-V4.json'), 'r', encoding='utf-8') as f: - self.generic_acpi_V4_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/acpi-V4.json'), 'r', encoding='utf-8') as f: + generic_acpi_V4_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/acpi-V.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_04_acpi_V_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/acpi-V.json'), 'r', encoding='utf-8') as f: + ubuntu_18_04_acpi_V_json = json.loads(f.read()) def test_acpi_nodata(self): """ diff --git a/tests/test_airport.py b/tests/test_airport.py index 67a0c16f..5d723585 100644 --- a/tests/test_airport.py +++ b/tests/test_airport.py @@ -8,14 +8,13 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/airport-I.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_airport_I = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/airport-I.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_airport_I = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/airport-I.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_airport_I_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/airport-I.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_airport_I_json = json.loads(f.read()) def test_airport_I_nodata(self): """ diff --git a/tests/test_airport_s.py b/tests/test_airport_s.py index fa228d5c..0789cb10 100644 --- a/tests/test_airport_s.py +++ b/tests/test_airport_s.py @@ -8,14 +8,13 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/airport-s.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_airport_s = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/airport-s.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_airport_s = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/airport-s.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_airport_s_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/airport-s.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_airport_s_json = json.loads(f.read()) def test_airport_s_nodata(self): """ diff --git a/tests/test_arp.py b/tests/test_arp.py index 5ac7a6c3..0dccf7f2 100644 --- a/tests/test_arp.py +++ b/tests/test_arp.py @@ -8,74 +8,73 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/arp.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_arp = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/arp.out'), 'r', encoding='utf-8') as f: + centos_7_7_arp = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/arp.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_arp = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/arp.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_arp = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/arp-a.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_arp_a = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/arp-a.out'), 'r', encoding='utf-8') as f: + centos_7_7_arp_a = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/arp-a.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_arp_a = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/arp-a.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_arp_a = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/arp-v.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_arp_v = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/arp-v.out'), 'r', encoding='utf-8') as f: + centos_7_7_arp_v = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/arp-v.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_arp_v = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/arp-v.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_arp_v = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/arp-a.out'), 'r', encoding='utf-8') as f: - self.osx_10_11_6_arp_a = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/arp-a.out'), 'r', encoding='utf-8') as f: + osx_10_11_6_arp_a = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/arp-a.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_arp_a = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/arp-a.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_arp_a = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/arp-a2.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_arp_a2 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/arp-a2.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_arp_a2 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/arp-a.out'), 'r', encoding='utf-8') as f: - self.freebsd_arp_a = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/arp-a.out'), 'r', encoding='utf-8') as f: + freebsd_arp_a = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-8/arp-a.out'), 'r', encoding='utf-8') as f: - self.centos8_arp_a = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-8/arp-a.out'), 'r', encoding='utf-8') as f: + centos8_arp_a = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/arp.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_arp_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/arp.json'), 'r', encoding='utf-8') as f: + centos_7_7_arp_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/arp.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_arp_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/arp.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_arp_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/arp-a.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_arp_a_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/arp-a.json'), 'r', encoding='utf-8') as f: + centos_7_7_arp_a_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/arp-a.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_arp_a_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/arp-a.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_arp_a_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/arp-v.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_arp_v_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/arp-v.json'), 'r', encoding='utf-8') as f: + centos_7_7_arp_v_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/arp-v.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_arp_v_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/arp-v.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_arp_v_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/arp-a.json'), 'r', encoding='utf-8') as f: - self.osx_10_11_6_arp_a_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/arp-a.json'), 'r', encoding='utf-8') as f: + osx_10_11_6_arp_a_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/arp-a.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_arp_a_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/arp-a.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_arp_a_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/arp-a2.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_arp_a2_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/arp-a2.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_arp_a2_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/arp-a.json'), 'r', encoding='utf-8') as f: - self.freebsd12_arp_a_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/arp-a.json'), 'r', encoding='utf-8') as f: + freebsd12_arp_a_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-8/arp-a.json'), 'r', encoding='utf-8') as f: - self.centos8_arp_a_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-8/arp-a.json'), 'r', encoding='utf-8') as f: + centos8_arp_a_json = json.loads(f.read()) def test_arp_nodata(self): """ diff --git a/tests/test_blkid.py b/tests/test_blkid.py index d76d3a67..656b9f95 100644 --- a/tests/test_blkid.py +++ b/tests/test_blkid.py @@ -8,68 +8,67 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/blkid.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_blkid = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/blkid.out'), 'r', encoding='utf-8') as f: + centos_7_7_blkid = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/blkid.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_blkid = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/blkid.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_blkid = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/blkid-sda2.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_blkid_sda2 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/blkid-sda2.out'), 'r', encoding='utf-8') as f: + centos_7_7_blkid_sda2 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/blkid-sda2.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_blkid_sda2 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/blkid-sda2.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_blkid_sda2 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/blkid-ip-udev.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_blkid_ip_udev = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/blkid-ip-udev.out'), 'r', encoding='utf-8') as f: + centos_7_7_blkid_ip_udev = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/blkid-ip-udev.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_blkid_ip_udev = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/blkid-ip-udev.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_blkid_ip_udev = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/blkid-ip-multi.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_blkid_ip_multi = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/blkid-ip-multi.out'), 'r', encoding='utf-8') as f: + centos_7_7_blkid_ip_multi = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/blkid-ip-multi.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_blkid_ip_multi = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/blkid-ip-multi.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_blkid_ip_multi = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/blkid-ip-udev-multi.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_blkid_ip_udev_multi = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/blkid-ip-udev-multi.out'), 'r', encoding='utf-8') as f: + centos_7_7_blkid_ip_udev_multi = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/blkid-ip-udev-multi.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_blkid_ip_udev_multi = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/blkid-ip-udev-multi.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_blkid_ip_udev_multi = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/blkid.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_blkid_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/blkid.json'), 'r', encoding='utf-8') as f: + centos_7_7_blkid_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/blkid.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_blkid_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/blkid.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_blkid_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/blkid-sda2.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_blkid_sda2_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/blkid-sda2.json'), 'r', encoding='utf-8') as f: + centos_7_7_blkid_sda2_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/blkid-sda2.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_blkid_sda2_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/blkid-sda2.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_blkid_sda2_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/blkid-ip-udev.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_blkid_ip_udev_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/blkid-ip-udev.json'), 'r', encoding='utf-8') as f: + centos_7_7_blkid_ip_udev_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/blkid-ip-udev.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_blkid_ip_udev_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/blkid-ip-udev.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_blkid_ip_udev_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/blkid-ip-multi.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_blkid_ip_multi_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/blkid-ip-multi.json'), 'r', encoding='utf-8') as f: + centos_7_7_blkid_ip_multi_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/blkid-ip-multi.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_blkid_ip_multi_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/blkid-ip-multi.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_blkid_ip_multi_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/blkid-ip-udev-multi.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_blkid_ip_udev_multi_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/blkid-ip-udev-multi.json'), 'r', encoding='utf-8') as f: + centos_7_7_blkid_ip_udev_multi_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/blkid-ip-udev-multi.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_blkid_ip_udev_multi_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/blkid-ip-udev-multi.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_blkid_ip_udev_multi_json = json.loads(f.read()) def test_blkid_nodata(self): """ diff --git a/tests/test_cef.py b/tests/test_cef.py index 5154bfff..b49916a0 100644 --- a/tests/test_cef.py +++ b/tests/test_cef.py @@ -8,14 +8,13 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/cef.out'), 'r', encoding='utf-8') as f: - self.cef = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/cef.out'), 'r', encoding='utf-8') as f: + cef = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/cef.json'), 'r', encoding='utf-8') as f: - self.cef_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/cef.json'), 'r', encoding='utf-8') as f: + cef_json = json.loads(f.read()) def test_cef_nodata(self): diff --git a/tests/test_cef_s.py b/tests/test_cef_s.py index 426d2523..1459749a 100644 --- a/tests/test_cef_s.py +++ b/tests/test_cef_s.py @@ -11,14 +11,13 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/cef.out'), 'r', encoding='utf-8') as f: - self.cef = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/cef.out'), 'r', encoding='utf-8') as f: + cef = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/cef-streaming.json'), 'r', encoding='utf-8') as f: - self.cef_streaming_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/cef-streaming.json'), 'r', encoding='utf-8') as f: + cef_streaming_json = json.loads(f.read()) def test_cef_s_nodata(self): """ diff --git a/tests/test_chage.py b/tests/test_chage.py index d861869c..3d6af93f 100644 --- a/tests/test_chage.py +++ b/tests/test_chage.py @@ -8,14 +8,13 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/chage.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_chage = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/chage.out'), 'r', encoding='utf-8') as f: + centos_7_7_chage = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/chage.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_chage_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/chage.json'), 'r', encoding='utf-8') as f: + centos_7_7_chage_json = json.loads(f.read()) def test_chage_nodata(self): diff --git a/tests/test_cksum.py b/tests/test_cksum.py index d52f8f52..48072be2 100644 --- a/tests/test_cksum.py +++ b/tests/test_cksum.py @@ -8,32 +8,31 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/cksum.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_cksum = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/cksum.out'), 'r', encoding='utf-8') as f: + centos_7_7_cksum = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/sum.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_sum = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/sum.out'), 'r', encoding='utf-8') as f: + centos_7_7_sum = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/cksum.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_cksum = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/cksum.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_cksum = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/sum.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_sum = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/sum.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_sum = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/cksum.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_cksum_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/cksum.json'), 'r', encoding='utf-8') as f: + centos_7_7_cksum_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/sum.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_sum_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/sum.json'), 'r', encoding='utf-8') as f: + centos_7_7_sum_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/cksum.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_cksum_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/cksum.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_cksum_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/sum.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_sum_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/sum.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_sum_json = json.loads(f.read()) def test_cksum_nodata(self): """ diff --git a/tests/test_crontab.py b/tests/test_crontab.py index f40650d2..ccb5e145 100644 --- a/tests/test_crontab.py +++ b/tests/test_crontab.py @@ -8,14 +8,14 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/crontab.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_crontab = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/crontab.out'), 'r', encoding='utf-8') as f: + centos_7_7_crontab = f.read() + + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/crontab.json'), 'r', encoding='utf-8') as f: + centos_7_7_crontab_json = json.loads(f.read()) - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/crontab.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_crontab_json = json.loads(f.read()) def test_crontab_nodata(self): """ diff --git a/tests/test_crontab_u.py b/tests/test_crontab_u.py index e191599d..9e4c07b2 100644 --- a/tests/test_crontab_u.py +++ b/tests/test_crontab_u.py @@ -8,26 +8,26 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/crontab-u.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_crontab_u = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/crontab-u.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_crontab_u = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/crontab-u.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_crontab_u = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/crontab-u.out'), 'r', encoding='utf-8') as f: + centos_7_7_crontab_u = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/debian10/crontab-u.out'), 'r', encoding='utf-8') as f: - self.debian10_crontab_u = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/debian10/crontab-u.out'), 'r', encoding='utf-8') as f: + debian10_crontab_u = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/crontab-u.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_crontab_u_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/crontab-u.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_crontab_u_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/crontab-u.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_crontab_u_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/crontab-u.json'), 'r', encoding='utf-8') as f: + centos_7_7_crontab_u_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/debian10/crontab-u.json'), 'r', encoding='utf-8') as f: + debian10_crontab_u_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/debian10/crontab-u.json'), 'r', encoding='utf-8') as f: - self.debian10_crontab_u_json = json.loads(f.read()) def test_crontab_u_nodata(self): """ diff --git a/tests/test_csv.py b/tests/test_csv.py index a62cf0f2..6e4f5cda 100644 --- a/tests/test_csv.py +++ b/tests/test_csv.py @@ -8,68 +8,68 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-biostats.csv'), 'r', encoding='utf-8') as f: - self.generic_csv_biostats = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-biostats.csv'), 'r', encoding='utf-8') as f: + generic_csv_biostats = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-cities.csv'), 'r', encoding='utf-8') as f: - self.generic_csv_cities = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-cities.csv'), 'r', encoding='utf-8') as f: + generic_csv_cities = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-deniro.csv'), 'r', encoding='utf-8') as f: - self.generic_csv_deniro = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-deniro.csv'), 'r', encoding='utf-8') as f: + generic_csv_deniro = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-example.csv'), 'r', encoding='utf-8') as f: - self.generic_csv_example = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-example.csv'), 'r', encoding='utf-8') as f: + generic_csv_example = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-flyrna.tsv'), 'r', encoding='utf-8') as f: - self.generic_csv_flyrna = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-flyrna.tsv'), 'r', encoding='utf-8') as f: + generic_csv_flyrna = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-flyrna2.tsv'), 'r', encoding='utf-8') as f: - self.generic_csv_flyrna2 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-flyrna2.tsv'), 'r', encoding='utf-8') as f: + generic_csv_flyrna2 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-homes-pipe.csv'), 'r', encoding='utf-8') as f: - self.generic_csv_homes_pipe = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-homes-pipe.csv'), 'r', encoding='utf-8') as f: + generic_csv_homes_pipe = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-homes.csv'), 'r', encoding='utf-8') as f: - self.generic_csv_homes = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-homes.csv'), 'r', encoding='utf-8') as f: + generic_csv_homes = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-insurance.csv'), 'r', encoding='utf-8') as f: - self.generic_csv_insurance = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-insurance.csv'), 'r', encoding='utf-8') as f: + generic_csv_insurance = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-doubleqouted.csv'), 'r', encoding='utf-8') as f: - self.generic_csv_doubleqouted = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-doubleqouted.csv'), 'r', encoding='utf-8') as f: + generic_csv_doubleqouted = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-biostats.json'), 'r', encoding='utf-8') as f: - self.generic_csv_biostats_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-biostats.json'), 'r', encoding='utf-8') as f: + generic_csv_biostats_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-cities.json'), 'r', encoding='utf-8') as f: - self.generic_csv_cities_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-cities.json'), 'r', encoding='utf-8') as f: + generic_csv_cities_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-deniro.json'), 'r', encoding='utf-8') as f: - self.generic_csv_deniro_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-deniro.json'), 'r', encoding='utf-8') as f: + generic_csv_deniro_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-example.json'), 'r', encoding='utf-8') as f: - self.generic_csv_example_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-example.json'), 'r', encoding='utf-8') as f: + generic_csv_example_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-flyrna.json'), 'r', encoding='utf-8') as f: - self.generic_csv_flyrna_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-flyrna.json'), 'r', encoding='utf-8') as f: + generic_csv_flyrna_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-flyrna2.json'), 'r', encoding='utf-8') as f: - self.generic_csv_flyrna2_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-flyrna2.json'), 'r', encoding='utf-8') as f: + generic_csv_flyrna2_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-homes-pipe.json'), 'r', encoding='utf-8') as f: - self.generic_csv_homes_pipe_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-homes-pipe.json'), 'r', encoding='utf-8') as f: + generic_csv_homes_pipe_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-homes.json'), 'r', encoding='utf-8') as f: - self.generic_csv_homes_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-homes.json'), 'r', encoding='utf-8') as f: + generic_csv_homes_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-insurance.json'), 'r', encoding='utf-8') as f: - self.generic_csv_insurance_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-insurance.json'), 'r', encoding='utf-8') as f: + generic_csv_insurance_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-doubleqouted.json'), 'r', encoding='utf-8') as f: + generic_csv_doubleqouted_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-doubleqouted.json'), 'r', encoding='utf-8') as f: - self.generic_csv_doubleqouted_json = json.loads(f.read()) def test_csv_nodata(self): """ diff --git a/tests/test_csv_s.py b/tests/test_csv_s.py index 757d7cfc..a33da660 100644 --- a/tests/test_csv_s.py +++ b/tests/test_csv_s.py @@ -13,68 +13,68 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-biostats.csv'), 'r', encoding='utf-8') as f: - self.generic_csv_biostats = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-biostats.csv'), 'r', encoding='utf-8') as f: + generic_csv_biostats = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-cities.csv'), 'r', encoding='utf-8') as f: - self.generic_csv_cities = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-cities.csv'), 'r', encoding='utf-8') as f: + generic_csv_cities = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-deniro.csv'), 'r', encoding='utf-8') as f: - self.generic_csv_deniro = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-deniro.csv'), 'r', encoding='utf-8') as f: + generic_csv_deniro = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-example.csv'), 'r', encoding='utf-8') as f: - self.generic_csv_example = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-example.csv'), 'r', encoding='utf-8') as f: + generic_csv_example = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-flyrna.tsv'), 'r', encoding='utf-8') as f: - self.generic_csv_flyrna = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-flyrna.tsv'), 'r', encoding='utf-8') as f: + generic_csv_flyrna = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-flyrna2.tsv'), 'r', encoding='utf-8') as f: - self.generic_csv_flyrna2 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-flyrna2.tsv'), 'r', encoding='utf-8') as f: + generic_csv_flyrna2 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-homes-pipe.csv'), 'r', encoding='utf-8') as f: - self.generic_csv_homes_pipe = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-homes-pipe.csv'), 'r', encoding='utf-8') as f: + generic_csv_homes_pipe = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-homes.csv'), 'r', encoding='utf-8') as f: - self.generic_csv_homes = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-homes.csv'), 'r', encoding='utf-8') as f: + generic_csv_homes = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-10k-sales-records.csv'), 'r', encoding='utf-8') as f: - self.generic_csv_10k_sales_records = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-10k-sales-records.csv'), 'r', encoding='utf-8') as f: + generic_csv_10k_sales_records = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-doubleqouted.csv'), 'r', encoding='utf-8') as f: - self.generic_csv_doubleqouted = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-doubleqouted.csv'), 'r', encoding='utf-8') as f: + generic_csv_doubleqouted = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-biostats-streaming.json'), 'r', encoding='utf-8') as f: - self.generic_csv_biostats_streaming_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-biostats-streaming.json'), 'r', encoding='utf-8') as f: + generic_csv_biostats_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-cities-streaming.json'), 'r', encoding='utf-8') as f: - self.generic_csv_cities_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-cities-streaming.json'), 'r', encoding='utf-8') as f: + generic_csv_cities_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-deniro-streaming.json'), 'r', encoding='utf-8') as f: - self.generic_csv_deniro_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-deniro-streaming.json'), 'r', encoding='utf-8') as f: + generic_csv_deniro_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-example-streaming.json'), 'r', encoding='utf-8') as f: - self.generic_csv_example_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-example-streaming.json'), 'r', encoding='utf-8') as f: + generic_csv_example_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-flyrna-streaming.json'), 'r', encoding='utf-8') as f: - self.generic_csv_flyrna_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-flyrna-streaming.json'), 'r', encoding='utf-8') as f: + generic_csv_flyrna_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-flyrna2-streaming.json'), 'r', encoding='utf-8') as f: - self.generic_csv_flyrna2_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-flyrna2-streaming.json'), 'r', encoding='utf-8') as f: + generic_csv_flyrna2_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-homes-pipe-streaming.json'), 'r', encoding='utf-8') as f: - self.generic_csv_homes_pipe_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-homes-pipe-streaming.json'), 'r', encoding='utf-8') as f: + generic_csv_homes_pipe_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-homes-streaming.json'), 'r', encoding='utf-8') as f: - self.generic_csv_homes_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-homes-streaming.json'), 'r', encoding='utf-8') as f: + generic_csv_homes_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-10k-sales-records-streaming.json'), 'r', encoding='utf-8') as f: - self.generic_csv_10k_sales_records_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-10k-sales-records-streaming.json'), 'r', encoding='utf-8') as f: + generic_csv_10k_sales_records_streaming_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-doubleqouted-streaming.json'), 'r', encoding='utf-8') as f: + generic_csv_doublequoted_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/csv-doubleqouted-streaming.json'), 'r', encoding='utf-8') as f: - self.generic_csv_doublequoted_streaming_json = json.loads(f.read()) def test_csv_s_nodata(self): """ diff --git a/tests/test_date.py b/tests/test_date.py index fc318217..b28dadad 100644 --- a/tests/test_date.py +++ b/tests/test_date.py @@ -15,38 +15,38 @@ if not sys.platform.startswith('win32'): class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/date.out'), 'r', encoding='utf-8') as f: - self.generic_date = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/date.out'), 'r', encoding='utf-8') as f: + generic_date = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/date-before-midnight.out'), 'r', encoding='utf-8') as f: - self.generic_date_before_midnight = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/date-before-midnight.out'), 'r', encoding='utf-8') as f: + generic_date_before_midnight = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/date-after-midnight.out'), 'r', encoding='utf-8') as f: - self.generic_date_after_midnight = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/date-after-midnight.out'), 'r', encoding='utf-8') as f: + generic_date_after_midnight = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.04/date.out'), 'r', encoding='utf-8') as f: - self.ubuntu_20_04_date = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.04/date.out'), 'r', encoding='utf-8') as f: + ubuntu_20_04_date = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.04/date2.out'), 'r', encoding='utf-8') as f: - self.ubuntu_20_04_date2 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.04/date2.out'), 'r', encoding='utf-8') as f: + ubuntu_20_04_date2 = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/date.json'), 'r', encoding='utf-8') as f: - self.generic_date_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/date.json'), 'r', encoding='utf-8') as f: + generic_date_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/date-before-midnight.json'), 'r', encoding='utf-8') as f: - self.generic_date_before_midnight_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/date-before-midnight.json'), 'r', encoding='utf-8') as f: + generic_date_before_midnight_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/date-after-midnight.json'), 'r', encoding='utf-8') as f: - self.generic_date_after_midnight_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/date-after-midnight.json'), 'r', encoding='utf-8') as f: + generic_date_after_midnight_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.04/date.json'), 'r', encoding='utf-8') as f: - self.ubuntu_20_04_date_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.04/date.json'), 'r', encoding='utf-8') as f: + ubuntu_20_04_date_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.04/date2.json'), 'r', encoding='utf-8') as f: + ubuntu_20_04_date2_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.04/date2.json'), 'r', encoding='utf-8') as f: - self.ubuntu_20_04_date2_json = json.loads(f.read()) def test_date_nodata(self): """ diff --git a/tests/test_df.py b/tests/test_df.py index 2595dc71..3fab2c41 100644 --- a/tests/test_df.py +++ b/tests/test_df.py @@ -8,62 +8,62 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/df.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_df = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/df.out'), 'r', encoding='utf-8') as f: + centos_7_7_df = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/df.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_df = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/df.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_df = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/df.out'), 'r', encoding='utf-8') as f: - self.osx_10_11_6_df = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/df.out'), 'r', encoding='utf-8') as f: + osx_10_11_6_df = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/df.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_df = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/df.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_df = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/df-h.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_df_h = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/df-h.out'), 'r', encoding='utf-8') as f: + centos_7_7_df_h = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/df-h.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_df_h = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/df-h.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_df_h = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/df-h.out'), 'r', encoding='utf-8') as f: - self.osx_10_11_6_df_h = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/df-h.out'), 'r', encoding='utf-8') as f: + osx_10_11_6_df_h = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/df-h.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_df_h = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/df-h.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_df_h = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/df-long-filesystem.out'), 'r', encoding='utf-8') as f: - self.generic_df_long_filesystem = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/df-long-filesystem.out'), 'r', encoding='utf-8') as f: + generic_df_long_filesystem = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/df.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_df_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/df.json'), 'r', encoding='utf-8') as f: + centos_7_7_df_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/df.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_df_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/df.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_df_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/df.json'), 'r', encoding='utf-8') as f: - self.osx_10_11_6_df_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/df.json'), 'r', encoding='utf-8') as f: + osx_10_11_6_df_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/df.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_df_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/df.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_df_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/df-h.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_df_h_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/df-h.json'), 'r', encoding='utf-8') as f: + centos_7_7_df_h_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/df-h.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_df_h_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/df-h.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_df_h_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/df-h.json'), 'r', encoding='utf-8') as f: - self.osx_10_11_6_df_h_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/df-h.json'), 'r', encoding='utf-8') as f: + osx_10_11_6_df_h_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/df-h.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_df_h_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/df-h.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_df_h_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/df-long-filesystem.json'), 'r', encoding='utf-8') as f: + generic_df_long_filesystem_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/df-long-filesystem.json'), 'r', encoding='utf-8') as f: - self.generic_df_long_filesystem_json = json.loads(f.read()) def test_df_nodata(self): """ diff --git a/tests/test_dig.py b/tests/test_dig.py index 8de41ea7..b7b6eb9d 100644 --- a/tests/test_dig.py +++ b/tests/test_dig.py @@ -15,146 +15,146 @@ if not sys.platform.startswith('win32'): class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/dig.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_dig = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/dig.out'), 'r', encoding='utf-8') as f: + centos_7_7_dig = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/dig.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_dig = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/dig.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_dig = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/dig-x.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_dig_x = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/dig-x.out'), 'r', encoding='utf-8') as f: + centos_7_7_dig_x = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/dig-x.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_dig_x = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/dig-x.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_dig_x = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/dig-aaaa.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_dig_aaaa = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/dig-aaaa.out'), 'r', encoding='utf-8') as f: + centos_7_7_dig_aaaa = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/dig-aaaa.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_dig_aaaa = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/dig-aaaa.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_dig_aaaa = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/dig-axfr.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_dig_axfr = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/dig-axfr.out'), 'r', encoding='utf-8') as f: + centos_7_7_dig_axfr = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/dig-axfr.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_dig_axfr = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/dig-axfr.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_dig_axfr = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/dig.out'), 'r', encoding='utf-8') as f: - self.osx_10_11_6_dig = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/dig.out'), 'r', encoding='utf-8') as f: + osx_10_11_6_dig = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/dig-x.out'), 'r', encoding='utf-8') as f: - self.osx_10_11_6_dig_x = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/dig-x.out'), 'r', encoding='utf-8') as f: + osx_10_11_6_dig_x = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/dig-aaaa.out'), 'r', encoding='utf-8') as f: - self.osx_10_11_6_dig_aaaa = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/dig-aaaa.out'), 'r', encoding='utf-8') as f: + osx_10_11_6_dig_aaaa = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/dig.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_dig = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/dig.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_dig = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/dig-x.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_dig_x = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/dig-x.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_dig_x = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/dig-aaaa.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_dig_aaaa = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/dig-aaaa.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_dig_aaaa = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/dig-axfr.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_dig_axfr = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/dig-axfr.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_dig_axfr = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/dig-noall-answer.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_dig_noall_answer = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/dig-noall-answer.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_dig_noall_answer = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/dig-answer-spaces.out'), 'r', encoding='utf-8') as f: - self.generic_dig_answer_spaces = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/dig-answer-spaces.out'), 'r', encoding='utf-8') as f: + generic_dig_answer_spaces = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/dig-additional.out'), 'r', encoding='utf-8') as f: - self.generic_dig_additional = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/dig-additional.out'), 'r', encoding='utf-8') as f: + generic_dig_additional = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/dig-additional2.out'), 'r', encoding='utf-8') as f: - self.generic_dig_additional2 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/dig-additional2.out'), 'r', encoding='utf-8') as f: + generic_dig_additional2 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/dig-additional3.out'), 'r', encoding='utf-8') as f: - self.generic_dig_additional3 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/dig-additional3.out'), 'r', encoding='utf-8') as f: + generic_dig_additional3 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/dig-edns.out'), 'r', encoding='utf-8') as f: - self.generic_dig_edns = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/dig-edns.out'), 'r', encoding='utf-8') as f: + generic_dig_edns = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/dig-edns2.out'), 'r', encoding='utf-8') as f: - self.generic_dig_edns2 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/dig-edns2.out'), 'r', encoding='utf-8') as f: + generic_dig_edns2 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/dig-edns3.out'), 'r', encoding='utf-8') as f: - self.generic_dig_edns3 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/dig-edns3.out'), 'r', encoding='utf-8') as f: + generic_dig_edns3 = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/dig.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_dig_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/dig.json'), 'r', encoding='utf-8') as f: + centos_7_7_dig_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/dig.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_dig_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/dig.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_dig_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/dig-x.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_dig_x_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/dig-x.json'), 'r', encoding='utf-8') as f: + centos_7_7_dig_x_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/dig-x.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_dig_x_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/dig-x.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_dig_x_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/dig-aaaa.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_dig_aaaa_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/dig-aaaa.json'), 'r', encoding='utf-8') as f: + centos_7_7_dig_aaaa_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/dig-aaaa.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_dig_aaaa_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/dig-aaaa.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_dig_aaaa_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/dig-axfr.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_dig_axfr_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/dig-axfr.json'), 'r', encoding='utf-8') as f: + centos_7_7_dig_axfr_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/dig-axfr.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_dig_axfr_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/dig-axfr.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_dig_axfr_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/dig.json'), 'r', encoding='utf-8') as f: - self.osx_10_11_6_dig_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/dig.json'), 'r', encoding='utf-8') as f: + osx_10_11_6_dig_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/dig-x.json'), 'r', encoding='utf-8') as f: - self.osx_10_11_6_dig_x_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/dig-x.json'), 'r', encoding='utf-8') as f: + osx_10_11_6_dig_x_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/dig-aaaa.json'), 'r', encoding='utf-8') as f: - self.osx_10_11_6_dig_aaaa_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/dig-aaaa.json'), 'r', encoding='utf-8') as f: + osx_10_11_6_dig_aaaa_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/dig.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_dig_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/dig.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_dig_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/dig-x.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_dig_x_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/dig-x.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_dig_x_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/dig-aaaa.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_dig_aaaa_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/dig-aaaa.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_dig_aaaa_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/dig-axfr.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_dig_axfr_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/dig-axfr.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_dig_axfr_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/dig-noall-answer.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_dig_noall_answer_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/dig-noall-answer.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_dig_noall_answer_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/dig-answer-spaces.json'), 'r', encoding='utf-8') as f: - self.generic_dig_answer_spaces_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/dig-answer-spaces.json'), 'r', encoding='utf-8') as f: + generic_dig_answer_spaces_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/dig-additional.json'), 'r', encoding='utf-8') as f: - self.generic_dig_additional_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/dig-additional.json'), 'r', encoding='utf-8') as f: + generic_dig_additional_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/dig-additional2.json'), 'r', encoding='utf-8') as f: - self.generic_dig_additional2_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/dig-additional2.json'), 'r', encoding='utf-8') as f: + generic_dig_additional2_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/dig-additional3.json'), 'r', encoding='utf-8') as f: - self.generic_dig_additional3_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/dig-additional3.json'), 'r', encoding='utf-8') as f: + generic_dig_additional3_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/dig-edns.json'), 'r', encoding='utf-8') as f: - self.generic_dig_edns_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/dig-edns.json'), 'r', encoding='utf-8') as f: + generic_dig_edns_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/dig-edns2.json'), 'r', encoding='utf-8') as f: - self.generic_dig_edns2_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/dig-edns2.json'), 'r', encoding='utf-8') as f: + generic_dig_edns2_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/dig-edns3.json'), 'r', encoding='utf-8') as f: + generic_dig_edns3_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/dig-edns3.json'), 'r', encoding='utf-8') as f: - self.generic_dig_edns3_json = json.loads(f.read()) def test_dig_nodata(self): """ diff --git a/tests/test_dir.py b/tests/test_dir.py index 6fbcb62c..036fa83c 100644 --- a/tests/test_dir.py +++ b/tests/test_dir.py @@ -15,58 +15,58 @@ if not sys.platform.startswith('win32'): class MyTests(unittest.TestCase): - def setUp(self): - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir.out'), - 'r', encoding='utf-8') as f: - self.windows_10_dir = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir.out'), + 'r', encoding='utf-8') as f: + windows_10_dir = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir.json'), - 'r', encoding='utf-8') as f: - self.windows_10_dir_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir.json'), + 'r', encoding='utf-8') as f: + windows_10_dir_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir-ODTC.out'), - 'r', encoding='utf-8') as f: - self.windows_10_dir_ODTC = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir-ODTC.out'), + 'r', encoding='utf-8') as f: + windows_10_dir_ODTC = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir-ODTC.json'), - 'r', encoding='utf-8') as f: - self.windows_10_dir_ODTC_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir-ODTC.json'), + 'r', encoding='utf-8') as f: + windows_10_dir_ODTC_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir-C.out'), - 'r', encoding='utf-8') as f: - self.windows_10_dir_C = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir-C.out'), + 'r', encoding='utf-8') as f: + windows_10_dir_C = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir-mix.out'), - 'r', encoding='utf-8') as f: - self.windows_10_dir_mix = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir-mix.out'), + 'r', encoding='utf-8') as f: + windows_10_dir_mix = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir-mix.json'), - 'r', encoding='utf-8') as f: - self.windows_10_dir_mix_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir-mix.json'), + 'r', encoding='utf-8') as f: + windows_10_dir_mix_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir-files.out'), - 'r', encoding='utf-8') as f: - self.windows_10_dir_files = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir-files.out'), + 'r', encoding='utf-8') as f: + windows_10_dir_files = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir-files.json'), - 'r', encoding='utf-8') as f: - self.windows_10_dir_files_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir-files.json'), + 'r', encoding='utf-8') as f: + windows_10_dir_files_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir-dirs.out'), - 'r', encoding='utf-8') as f: - self.windows_10_dir_dirs = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir-dirs.out'), + 'r', encoding='utf-8') as f: + windows_10_dir_dirs = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir-dirs.json'), - 'r', encoding='utf-8') as f: - self.windows_10_dir_dirs_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir-dirs.json'), + 'r', encoding='utf-8') as f: + windows_10_dir_dirs_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir-S.out'), - 'r', encoding='utf-8') as f: - self.windows_10_dir_S = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir-S.out'), + 'r', encoding='utf-8') as f: + windows_10_dir_S = f.read() + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir-S.json'), + 'r', encoding='utf-8') as f: + windows_10_dir_S_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/windows-10/dir-S.json'), - 'r', encoding='utf-8') as f: - self.windows_10_dir_S_json = json.loads(f.read()) def test_dir_error(self): self.assertEqual(jc.parsers.dir.parse("Access is denied.", quiet=True), []) diff --git a/tests/test_dmidecode.py b/tests/test_dmidecode.py index 3d5476e6..f6ee031e 100644 --- a/tests/test_dmidecode.py +++ b/tests/test_dmidecode.py @@ -8,26 +8,26 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/dmidecode.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_dmidecode = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/dmidecode.out'), 'r', encoding='utf-8') as f: + centos_7_7_dmidecode = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/dmidecode.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_dmidecode = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/dmidecode.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_dmidecode = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/dmidecode.out'), 'r', encoding='utf-8') as f: - self.fedora32_dmidecode = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/dmidecode.out'), 'r', encoding='utf-8') as f: + fedora32_dmidecode = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/dmidecode.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_dmidecode_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/dmidecode.json'), 'r', encoding='utf-8') as f: + centos_7_7_dmidecode_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/dmidecode.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_dmidecode_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/dmidecode.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_dmidecode_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/dmidecode.json'), 'r', encoding='utf-8') as f: + fedora32_dmidecode_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/dmidecode.json'), 'r', encoding='utf-8') as f: - self.fedora32_dmidecode_json = json.loads(f.read()) def test_dmidecode_nodata(self): """ diff --git a/tests/test_dpkg_l.py b/tests/test_dpkg_l.py index 80275866..fd2481b7 100644 --- a/tests/test_dpkg_l.py +++ b/tests/test_dpkg_l.py @@ -8,26 +8,26 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/dpkg-l.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_dpkg_l = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/dpkg-l.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_dpkg_l = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/dpkg-l-columns500.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_dpkg_l_columns500 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/dpkg-l-columns500.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_dpkg_l_columns500 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/dpkg-l-codes.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_dpkg_l_codes = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/dpkg-l-codes.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_dpkg_l_codes = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/dpkg-l.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_dpkg_l_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/dpkg-l.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_dpkg_l_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/dpkg-l-columns500.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_dpkg_l_columns500_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/dpkg-l-columns500.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_dpkg_l_columns500_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/dpkg-l-codes.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_dpkg_l_codes_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/dpkg-l-codes.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_dpkg_l_codes_json = json.loads(f.read()) def test_dpkg_l_nodata(self): """ diff --git a/tests/test_du.py b/tests/test_du.py index b10b21e0..84954c06 100644 --- a/tests/test_du.py +++ b/tests/test_du.py @@ -8,32 +8,32 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/du.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_du = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/du.out'), 'r', encoding='utf-8') as f: + centos_7_7_du = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/du.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_du = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/du.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_du = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/du.out'), 'r', encoding='utf-8') as f: - self.osx_10_11_6_du = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/du.out'), 'r', encoding='utf-8') as f: + osx_10_11_6_du = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/du.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_du = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/du.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_du = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/du.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_du_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/du.json'), 'r', encoding='utf-8') as f: + centos_7_7_du_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/du.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_du_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/du.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_du_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/du.json'), 'r', encoding='utf-8') as f: - self.osx_10_11_6_du_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/du.json'), 'r', encoding='utf-8') as f: + osx_10_11_6_du_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/du.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_du_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/du.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_du_json = json.loads(f.read()) def test_du_nodata(self): """ diff --git a/tests/test_env.py b/tests/test_env.py index 558ee6e3..a0144dca 100644 --- a/tests/test_env.py +++ b/tests/test_env.py @@ -8,20 +8,20 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/env.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_env = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/env.out'), 'r', encoding='utf-8') as f: + centos_7_7_env = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/env.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_env = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/env.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_env = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/env.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_env_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/env.json'), 'r', encoding='utf-8') as f: + centos_7_7_env_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/env.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_env_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/env.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_env_json = json.loads(f.read()) def test_env_nodata(self): """ diff --git a/tests/test_file.py b/tests/test_file.py index e0e76e9f..4cae74ef 100644 --- a/tests/test_file.py +++ b/tests/test_file.py @@ -8,38 +8,38 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/file.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_file = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/file.out'), 'r', encoding='utf-8') as f: + centos_7_7_file = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/file.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_file = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/file.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_file = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/file.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_file = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/file.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_file = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/file2.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_file2 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/file2.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_file2 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/file3.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_file3 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/file3.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_file3 = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/file.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_file_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/file.json'), 'r', encoding='utf-8') as f: + centos_7_7_file_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/file.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_file_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/file.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_file_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/file.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_file_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/file.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_file_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/file2.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_file2_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/file2.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_file2_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/file3.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_file3_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/file3.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_file3_json = json.loads(f.read()) def test_file_nodata(self): """ diff --git a/tests/test_finger.py b/tests/test_finger.py index 6230c961..bd5b0e7e 100644 --- a/tests/test_finger.py +++ b/tests/test_finger.py @@ -8,26 +8,25 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/finger.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_finger = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/finger.out'), 'r', encoding='utf-8') as f: + centos_7_7_finger = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/finger.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_finger = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/finger.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_finger = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/finger.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_finger = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/finger.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_finger = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/finger.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_finger_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/finger.json'), 'r', encoding='utf-8') as f: + centos_7_7_finger_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/finger.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_finger_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/finger.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_finger_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/finger.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_finger_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/finger.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_finger_json = json.loads(f.read()) def test_finger_nodata(self): diff --git a/tests/test_free.py b/tests/test_free.py index 83264f10..bfc069e8 100644 --- a/tests/test_free.py +++ b/tests/test_free.py @@ -8,44 +8,43 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/free.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_free = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/free.out'), 'r', encoding='utf-8') as f: + centos_7_7_free = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/free.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_free = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/free.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_free = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/free-h.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_free_h = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/free-h.out'), 'r', encoding='utf-8') as f: + centos_7_7_free_h = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/free-h.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_free_h = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/free-h.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_free_h = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/free-w.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_free_w = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/free-w.out'), 'r', encoding='utf-8') as f: + centos_7_7_free_w = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/free-w.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_free_w = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/free-w.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_free_w = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/free.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_free_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/free.json'), 'r', encoding='utf-8') as f: + centos_7_7_free_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/free.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_free_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/free.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_free_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/free-h.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_free_h_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/free-h.json'), 'r', encoding='utf-8') as f: + centos_7_7_free_h_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/free-h.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_free_h_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/free-h.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_free_h_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/free-w.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_free_w_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/free-w.json'), 'r', encoding='utf-8') as f: + centos_7_7_free_w_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/free-w.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_free_w_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/free-w.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_free_w_json = json.loads(f.read()) def test_free_nodata(self): """ diff --git a/tests/test_fstab.py b/tests/test_fstab.py index 1e04ee2f..252385cf 100644 --- a/tests/test_fstab.py +++ b/tests/test_fstab.py @@ -8,20 +8,20 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/fstab.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_fstab = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/fstab.out'), 'r', encoding='utf-8') as f: + centos_7_7_fstab = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/fstab.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_fstab = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/fstab.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_fstab = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/fstab.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_fstab_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/fstab.json'), 'r', encoding='utf-8') as f: + centos_7_7_fstab_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/fstab.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_fstab_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/fstab.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_fstab_json = json.loads(f.read()) def test_fstab_nodata(self): """ diff --git a/tests/test_git_log.py b/tests/test_git_log.py index 26f38bc0..41f34a51 100644 --- a/tests/test_git_log.py +++ b/tests/test_git_log.py @@ -8,116 +8,115 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log.out'), 'r', encoding='utf-8') as f: - self.git_log = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log.out'), 'r', encoding='utf-8') as f: + git_log = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-short.out'), 'r', encoding='utf-8') as f: - self.git_log_short = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-short.out'), 'r', encoding='utf-8') as f: + git_log_short = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-short-stat.out'), 'r', encoding='utf-8') as f: - self.git_log_short_stat = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-short-stat.out'), 'r', encoding='utf-8') as f: + git_log_short_stat = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-short-shortstat.out'), 'r', encoding='utf-8') as f: - self.git_log_short_shortstat = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-short-shortstat.out'), 'r', encoding='utf-8') as f: + git_log_short_shortstat = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-medium.out'), 'r', encoding='utf-8') as f: - self.git_log_medium = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-medium.out'), 'r', encoding='utf-8') as f: + git_log_medium = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-medium-stat.out'), 'r', encoding='utf-8') as f: - self.git_log_medium_stat = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-medium-stat.out'), 'r', encoding='utf-8') as f: + git_log_medium_stat = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-medium-shortstat.out'), 'r', encoding='utf-8') as f: - self.git_log_medium_shortstat = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-medium-shortstat.out'), 'r', encoding='utf-8') as f: + git_log_medium_shortstat = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-full.out'), 'r', encoding='utf-8') as f: - self.git_log_full = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-full.out'), 'r', encoding='utf-8') as f: + git_log_full = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-full-stat.out'), 'r', encoding='utf-8') as f: - self.git_log_full_stat = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-full-stat.out'), 'r', encoding='utf-8') as f: + git_log_full_stat = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-full-shortstat.out'), 'r', encoding='utf-8') as f: - self.git_log_full_shortstat = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-full-shortstat.out'), 'r', encoding='utf-8') as f: + git_log_full_shortstat = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-fuller.out'), 'r', encoding='utf-8') as f: - self.git_log_fuller = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-fuller.out'), 'r', encoding='utf-8') as f: + git_log_fuller = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-fuller-stat.out'), 'r', encoding='utf-8') as f: - self.git_log_fuller_stat = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-fuller-stat.out'), 'r', encoding='utf-8') as f: + git_log_fuller_stat = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-fuller-shortstat.out'), 'r', encoding='utf-8') as f: - self.git_log_fuller_shortstat = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-fuller-shortstat.out'), 'r', encoding='utf-8') as f: + git_log_fuller_shortstat = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-oneline.out'), 'r', encoding='utf-8') as f: - self.git_log_oneline = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-oneline.out'), 'r', encoding='utf-8') as f: + git_log_oneline = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-oneline-stat.out'), 'r', encoding='utf-8') as f: - self.git_log_oneline_stat = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-oneline-stat.out'), 'r', encoding='utf-8') as f: + git_log_oneline_stat = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-oneline-shortstat.out'), 'r', encoding='utf-8') as f: - self.git_log_oneline_shortstat = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-oneline-shortstat.out'), 'r', encoding='utf-8') as f: + git_log_oneline_shortstat = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-hash-in-message-fix.out'), 'r', encoding='utf-8') as f: - self.git_log_fuller_hash_in_message_fix = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-hash-in-message-fix.out'), 'r', encoding='utf-8') as f: + git_log_fuller_hash_in_message_fix = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-is-hash-regex-fix.out'), 'r', encoding='utf-8') as f: - self.git_log_fuller_is_hash_regex_fix = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-is-hash-regex-fix.out'), 'r', encoding='utf-8') as f: + git_log_fuller_is_hash_regex_fix = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log.json'), 'r', encoding='utf-8') as f: - self.git_log_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log.json'), 'r', encoding='utf-8') as f: + git_log_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-short.json'), 'r', encoding='utf-8') as f: - self.git_log_short_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-short.json'), 'r', encoding='utf-8') as f: + git_log_short_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-short-stat.json'), 'r', encoding='utf-8') as f: - self.git_log_short_stat_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-short-stat.json'), 'r', encoding='utf-8') as f: + git_log_short_stat_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-short-shortstat.json'), 'r', encoding='utf-8') as f: - self.git_log_short_shortstat_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-short-shortstat.json'), 'r', encoding='utf-8') as f: + git_log_short_shortstat_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-medium.json'), 'r', encoding='utf-8') as f: - self.git_log_medium_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-medium.json'), 'r', encoding='utf-8') as f: + git_log_medium_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-medium-stat.json'), 'r', encoding='utf-8') as f: - self.git_log_medium_stat_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-medium-stat.json'), 'r', encoding='utf-8') as f: + git_log_medium_stat_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-medium-shortstat.json'), 'r', encoding='utf-8') as f: - self.git_log_medium_shortstat_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-medium-shortstat.json'), 'r', encoding='utf-8') as f: + git_log_medium_shortstat_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-full.json'), 'r', encoding='utf-8') as f: - self.git_log_full_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-full.json'), 'r', encoding='utf-8') as f: + git_log_full_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-full-stat.json'), 'r', encoding='utf-8') as f: - self.git_log_full_stat_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-full-stat.json'), 'r', encoding='utf-8') as f: + git_log_full_stat_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-full-shortstat.json'), 'r', encoding='utf-8') as f: - self.git_log_full_shortstat_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-full-shortstat.json'), 'r', encoding='utf-8') as f: + git_log_full_shortstat_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-fuller.json'), 'r', encoding='utf-8') as f: - self.git_log_fuller_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-fuller.json'), 'r', encoding='utf-8') as f: + git_log_fuller_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-fuller-stat.json'), 'r', encoding='utf-8') as f: - self.git_log_fuller_stat_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-fuller-stat.json'), 'r', encoding='utf-8') as f: + git_log_fuller_stat_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-fuller-shortstat.json'), 'r', encoding='utf-8') as f: - self.git_log_fuller_shortstat_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-fuller-shortstat.json'), 'r', encoding='utf-8') as f: + git_log_fuller_shortstat_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-oneline.json'), 'r', encoding='utf-8') as f: - self.git_log_oneline_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-oneline.json'), 'r', encoding='utf-8') as f: + git_log_oneline_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-oneline-stat.json'), 'r', encoding='utf-8') as f: - self.git_log_oneline_stat_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-oneline-stat.json'), 'r', encoding='utf-8') as f: + git_log_oneline_stat_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-oneline-shortstat.json'), 'r', encoding='utf-8') as f: - self.git_log_oneline_shortstat_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-oneline-shortstat.json'), 'r', encoding='utf-8') as f: + git_log_oneline_shortstat_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-hash-in-message-fix.json'), 'r', encoding='utf-8') as f: - self.git_log_fuller_hash_in_message_fix_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-hash-in-message-fix.json'), 'r', encoding='utf-8') as f: + git_log_fuller_hash_in_message_fix_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-is-hash-regex-fix.json'), 'r', encoding='utf-8') as f: - self.git_log_fuller_is_hash_regex_fix_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-is-hash-regex-fix.json'), 'r', encoding='utf-8') as f: + git_log_fuller_is_hash_regex_fix_json = json.loads(f.read()) def test_git_log_nodata(self): diff --git a/tests/test_git_log_s.py b/tests/test_git_log_s.py index ae42584c..8626f372 100644 --- a/tests/test_git_log_s.py +++ b/tests/test_git_log_s.py @@ -12,119 +12,119 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log.out'), 'r', encoding='utf-8') as f: - self.generic_git_log = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log.out'), 'r', encoding='utf-8') as f: + generic_git_log = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-short.out'), 'r', encoding='utf-8') as f: - self.generic_git_log_short = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-short.out'), 'r', encoding='utf-8') as f: + generic_git_log_short = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-short-stat.out'), 'r', encoding='utf-8') as f: - self.generic_git_log_short_stat = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-short-stat.out'), 'r', encoding='utf-8') as f: + generic_git_log_short_stat = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-short-shortstat.out'), 'r', encoding='utf-8') as f: - self.generic_git_log_short_shortstat = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-short-shortstat.out'), 'r', encoding='utf-8') as f: + generic_git_log_short_shortstat = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-medium.out'), 'r', encoding='utf-8') as f: - self.generic_git_log_medium = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-medium.out'), 'r', encoding='utf-8') as f: + generic_git_log_medium = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-medium-stat.out'), 'r', encoding='utf-8') as f: - self.generic_git_log_medium_stat = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-medium-stat.out'), 'r', encoding='utf-8') as f: + generic_git_log_medium_stat = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-medium-shortstat.out'), 'r', encoding='utf-8') as f: - self.generic_git_log_medium_shortstat = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-medium-shortstat.out'), 'r', encoding='utf-8') as f: + generic_git_log_medium_shortstat = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-full.out'), 'r', encoding='utf-8') as f: - self.generic_git_log_full = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-full.out'), 'r', encoding='utf-8') as f: + generic_git_log_full = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-full-stat.out'), 'r', encoding='utf-8') as f: - self.generic_git_log_full_stat = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-full-stat.out'), 'r', encoding='utf-8') as f: + generic_git_log_full_stat = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-full-shortstat.out'), 'r', encoding='utf-8') as f: - self.generic_git_log_full_shortstat = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-full-shortstat.out'), 'r', encoding='utf-8') as f: + generic_git_log_full_shortstat = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-fuller.out'), 'r', encoding='utf-8') as f: - self.generic_git_log_fuller = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-fuller.out'), 'r', encoding='utf-8') as f: + generic_git_log_fuller = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-fuller-stat.out'), 'r', encoding='utf-8') as f: - self.generic_git_log_fuller_stat = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-fuller-stat.out'), 'r', encoding='utf-8') as f: + generic_git_log_fuller_stat = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-fuller-shortstat.out'), 'r', encoding='utf-8') as f: - self.generic_git_log_fuller_shortstat = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-fuller-shortstat.out'), 'r', encoding='utf-8') as f: + generic_git_log_fuller_shortstat = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-oneline.out'), 'r', encoding='utf-8') as f: - self.generic_git_log_oneline = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-oneline.out'), 'r', encoding='utf-8') as f: + generic_git_log_oneline = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-oneline-stat.out'), 'r', encoding='utf-8') as f: - self.generic_git_log_oneline_stat = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-oneline-stat.out'), 'r', encoding='utf-8') as f: + generic_git_log_oneline_stat = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-oneline-shortstat.out'), 'r', encoding='utf-8') as f: - self.generic_git_log_oneline_shortstat = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-oneline-shortstat.out'), 'r', encoding='utf-8') as f: + generic_git_log_oneline_shortstat = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-hash-in-message-fix.out'), 'r', encoding='utf-8') as f: - self.generic_git_log_fuller_hash_in_message_fix = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-hash-in-message-fix.out'), 'r', encoding='utf-8') as f: + generic_git_log_fuller_hash_in_message_fix = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-is-hash-regex-fix.out'), 'r', encoding='utf-8') as f: - self.generic_git_log_fuller_is_hash_regex_fix = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-is-hash-regex-fix.out'), 'r', encoding='utf-8') as f: + generic_git_log_fuller_is_hash_regex_fix = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-streaming.json'), 'r', encoding='utf-8') as f: - self.generic_git_log_streaming_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-streaming.json'), 'r', encoding='utf-8') as f: + generic_git_log_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-short-streaming.json'), 'r', encoding='utf-8') as f: - self.generic_git_log_short_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-short-streaming.json'), 'r', encoding='utf-8') as f: + generic_git_log_short_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-short-stat-streaming.json'), 'r', encoding='utf-8') as f: - self.generic_git_log_short_stat_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-short-stat-streaming.json'), 'r', encoding='utf-8') as f: + generic_git_log_short_stat_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-short-shortstat-streaming.json'), 'r', encoding='utf-8') as f: - self.generic_git_log_short_shortstat_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-short-shortstat-streaming.json'), 'r', encoding='utf-8') as f: + generic_git_log_short_shortstat_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-medium-streaming.json'), 'r', encoding='utf-8') as f: - self.generic_git_log_medium_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-medium-streaming.json'), 'r', encoding='utf-8') as f: + generic_git_log_medium_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-medium-stat-streaming.json'), 'r', encoding='utf-8') as f: - self.generic_git_log_medium_stat_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-medium-stat-streaming.json'), 'r', encoding='utf-8') as f: + generic_git_log_medium_stat_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-medium-shortstat-streaming.json'), 'r', encoding='utf-8') as f: - self.generic_git_log_medium_shortstat_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-medium-shortstat-streaming.json'), 'r', encoding='utf-8') as f: + generic_git_log_medium_shortstat_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-full-streaming.json'), 'r', encoding='utf-8') as f: - self.generic_git_log_full_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-full-streaming.json'), 'r', encoding='utf-8') as f: + generic_git_log_full_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-full-stat-streaming.json'), 'r', encoding='utf-8') as f: - self.generic_git_log_full_stat_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-full-stat-streaming.json'), 'r', encoding='utf-8') as f: + generic_git_log_full_stat_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-full-shortstat-streaming.json'), 'r', encoding='utf-8') as f: - self.generic_git_log_full_shortstat_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-full-shortstat-streaming.json'), 'r', encoding='utf-8') as f: + generic_git_log_full_shortstat_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-fuller-streaming.json'), 'r', encoding='utf-8') as f: - self.generic_git_log_fuller_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-fuller-streaming.json'), 'r', encoding='utf-8') as f: + generic_git_log_fuller_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-fuller-stat-streaming.json'), 'r', encoding='utf-8') as f: - self.generic_git_log_fuller_stat_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-fuller-stat-streaming.json'), 'r', encoding='utf-8') as f: + generic_git_log_fuller_stat_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-fuller-shortstat-streaming.json'), 'r', encoding='utf-8') as f: - self.generic_git_log_fuller_shortstat_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-fuller-shortstat-streaming.json'), 'r', encoding='utf-8') as f: + generic_git_log_fuller_shortstat_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-oneline-streaming.json'), 'r', encoding='utf-8') as f: - self.generic_git_log_oneline_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-oneline-streaming.json'), 'r', encoding='utf-8') as f: + generic_git_log_oneline_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-oneline-stat-streaming.json'), 'r', encoding='utf-8') as f: - self.generic_git_log_oneline_stat_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-oneline-stat-streaming.json'), 'r', encoding='utf-8') as f: + generic_git_log_oneline_stat_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-oneline-shortstat-streaming.json'), 'r', encoding='utf-8') as f: - self.generic_git_log_oneline_shortstat_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-oneline-shortstat-streaming.json'), 'r', encoding='utf-8') as f: + generic_git_log_oneline_shortstat_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-streaming-ignore-exceptions.json'), 'r', encoding='utf-8') as f: - self.generic_git_log_streaming_ignore_exceptions_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-streaming-ignore-exceptions.json'), 'r', encoding='utf-8') as f: + generic_git_log_streaming_ignore_exceptions_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-hash-in-message-fix-streaming.json'), 'r', encoding='utf-8') as f: - self.generic_git_log_fuller_hash_in_message_fix_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-hash-in-message-fix-streaming.json'), 'r', encoding='utf-8') as f: + generic_git_log_fuller_hash_in_message_fix_streaming_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-is-hash-regex-fix-streaming.json'), 'r', encoding='utf-8') as f: + generic_git_log_fuller_is_hash_regex_fix_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/git-log-is-hash-regex-fix-streaming.json'), 'r', encoding='utf-8') as f: - self.generic_git_log_fuller_is_hash_regex_fix_streaming_json = json.loads(f.read()) def test_git_log_s_nodata(self): """ diff --git a/tests/test_gpg.py b/tests/test_gpg.py index 50e9e6be..acd9653a 100644 --- a/tests/test_gpg.py +++ b/tests/test_gpg.py @@ -8,14 +8,13 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/gpg.out'), 'r', encoding='utf-8') as f: - self.gpg = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/gpg.out'), 'r', encoding='utf-8') as f: + gpg = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/gpg.json'), 'r', encoding='utf-8') as f: - self.gpg_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/gpg.json'), 'r', encoding='utf-8') as f: + gpg_json = json.loads(f.read()) def test_gpg_nodata(self): diff --git a/tests/test_group.py b/tests/test_group.py index cf192e4f..09fdbb25 100644 --- a/tests/test_group.py +++ b/tests/test_group.py @@ -8,26 +8,26 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/group.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_group = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/group.out'), 'r', encoding='utf-8') as f: + centos_7_7_group = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/group.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_group = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/group.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_group = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/group.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_group = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/group.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_group = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/group.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_group_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/group.json'), 'r', encoding='utf-8') as f: + centos_7_7_group_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/group.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_group_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/group.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_group_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/group.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_group_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/group.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_group_json = json.loads(f.read()) def test_group_nodata(self): """ diff --git a/tests/test_gshadow.py b/tests/test_gshadow.py index 2a3eb7e5..3312ba47 100644 --- a/tests/test_gshadow.py +++ b/tests/test_gshadow.py @@ -8,20 +8,20 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/gshadow.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_gshadow = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/gshadow.out'), 'r', encoding='utf-8') as f: + centos_7_7_gshadow = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/gshadow.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_gshadow = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/gshadow.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_gshadow = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/gshadow.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_gshadow_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/gshadow.json'), 'r', encoding='utf-8') as f: + centos_7_7_gshadow_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/gshadow.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_gshadow_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/gshadow.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_gshadow_json = json.loads(f.read()) def test_gshadow_nodata(self): """ diff --git a/tests/test_hash.py b/tests/test_hash.py index f370fc15..e9d502a2 100644 --- a/tests/test_hash.py +++ b/tests/test_hash.py @@ -8,14 +8,14 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/hash.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_hash = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/hash.out'), 'r', encoding='utf-8') as f: + centos_7_7_hash = f.read() + + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/hash.json'), 'r', encoding='utf-8') as f: + centos_7_7_hash_json = json.loads(f.read()) - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/hash.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_hash_json = json.loads(f.read()) def test_hash_nodata(self): """ diff --git a/tests/test_hashsum.py b/tests/test_hashsum.py index c58cbfba..882cb1d5 100644 --- a/tests/test_hashsum.py +++ b/tests/test_hashsum.py @@ -8,38 +8,38 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/md5sum.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_md5sum = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/md5sum.out'), 'r', encoding='utf-8') as f: + centos_7_7_md5sum = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/sha256sum.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_sha256sum = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/sha256sum.out'), 'r', encoding='utf-8') as f: + centos_7_7_sha256sum = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/sha384sum.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_sha384sum = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/sha384sum.out'), 'r', encoding='utf-8') as f: + centos_7_7_sha384sum = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/md5.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_md5 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/md5.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_md5 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/shasum.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_shasum = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/shasum.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_shasum = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/md5sum.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_md5sum_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/md5sum.json'), 'r', encoding='utf-8') as f: + centos_7_7_md5sum_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/sha256sum.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_sha256sum_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/sha256sum.json'), 'r', encoding='utf-8') as f: + centos_7_7_sha256sum_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/sha384sum.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_sha384sum_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/sha384sum.json'), 'r', encoding='utf-8') as f: + centos_7_7_sha384sum_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/md5.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_md5_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/md5.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_md5_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/shasum.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_shasum_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/shasum.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_shasum_json = json.loads(f.read()) def test_hashsum_nodata(self): """ diff --git a/tests/test_hciconfig.py b/tests/test_hciconfig.py index 61662956..503b134d 100644 --- a/tests/test_hciconfig.py +++ b/tests/test_hciconfig.py @@ -8,32 +8,32 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/hciconfig.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_hciconfig = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/hciconfig.out'), 'r', encoding='utf-8') as f: + centos_7_7_hciconfig = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/hciconfig-a.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_hciconfig_a = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/hciconfig-a.out'), 'r', encoding='utf-8') as f: + centos_7_7_hciconfig_a = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.04/hciconfig.out'), 'r', encoding='utf-8') as f: - self.ubuntu_20_4_hciconfig = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.04/hciconfig.out'), 'r', encoding='utf-8') as f: + ubuntu_20_4_hciconfig = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.04/hciconfig-a.out'), 'r', encoding='utf-8') as f: - self.ubuntu_20_4_hciconfig_a = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.04/hciconfig-a.out'), 'r', encoding='utf-8') as f: + ubuntu_20_4_hciconfig_a = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/hciconfig.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_hciconfig_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/hciconfig.json'), 'r', encoding='utf-8') as f: + centos_7_7_hciconfig_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/hciconfig-a.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_hciconfig_a_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/hciconfig-a.json'), 'r', encoding='utf-8') as f: + centos_7_7_hciconfig_a_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.04/hciconfig.json'), 'r', encoding='utf-8') as f: - self.ubuntu_20_4_hciconfig_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.04/hciconfig.json'), 'r', encoding='utf-8') as f: + ubuntu_20_4_hciconfig_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.04/hciconfig-a.json'), 'r', encoding='utf-8') as f: + ubuntu_20_4_hciconfig_a_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.04/hciconfig-a.json'), 'r', encoding='utf-8') as f: - self.ubuntu_20_4_hciconfig_a_json = json.loads(f.read()) def test_hciconfig_nodata(self): """ diff --git a/tests/test_history.py b/tests/test_history.py index b7cdaa8c..a28157b1 100644 --- a/tests/test_history.py +++ b/tests/test_history.py @@ -8,20 +8,20 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/history.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_history = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/history.out'), 'r', encoding='utf-8') as f: + centos_7_7_history = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/history.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_history = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/history.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_history = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/history.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_history_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/history.json'), 'r', encoding='utf-8') as f: + centos_7_7_history_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/history.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_history_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/history.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_history_json = json.loads(f.read()) def test_history_nodata(self): """ diff --git a/tests/test_hosts.py b/tests/test_hosts.py index 2a5205bb..4f60c29d 100644 --- a/tests/test_hosts.py +++ b/tests/test_hosts.py @@ -8,20 +8,20 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/hosts.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_hosts = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/hosts.out'), 'r', encoding='utf-8') as f: + centos_7_7_hosts = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/hosts.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_hosts = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/hosts.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_hosts = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/hosts.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_hosts_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/hosts.json'), 'r', encoding='utf-8') as f: + centos_7_7_hosts_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/hosts.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_hosts_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/hosts.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_hosts_json = json.loads(f.read()) def test_hosts_nodata(self): """ diff --git a/tests/test_id.py b/tests/test_id.py index bcd6a9eb..ae08b37e 100644 --- a/tests/test_id.py +++ b/tests/test_id.py @@ -8,20 +8,20 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/id.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_id = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/id.out'), 'r', encoding='utf-8') as f: + centos_7_7_id = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/id.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_id = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/id.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_id = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/id.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_id_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/id.json'), 'r', encoding='utf-8') as f: + centos_7_7_id_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/id.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_id_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/id.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_id_json = json.loads(f.read()) def test_id_nodata(self): """ diff --git a/tests/test_ifconfig.py b/tests/test_ifconfig.py index 8038d29d..19863d02 100644 --- a/tests/test_ifconfig.py +++ b/tests/test_ifconfig.py @@ -8,44 +8,43 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ifconfig.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_ifconfig = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ifconfig.out'), 'r', encoding='utf-8') as f: + centos_7_7_ifconfig = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ifconfig.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ifconfig = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ifconfig.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ifconfig = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/ifconfig.out'), 'r', encoding='utf-8') as f: - self.osx_10_11_6_ifconfig = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/ifconfig.out'), 'r', encoding='utf-8') as f: + osx_10_11_6_ifconfig = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/ifconfig2.out'), 'r', encoding='utf-8') as f: - self.osx_10_11_6_ifconfig2 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/ifconfig2.out'), 'r', encoding='utf-8') as f: + osx_10_11_6_ifconfig2 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ifconfig.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ifconfig = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ifconfig.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ifconfig = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ifconfig2.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ifconfig2 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ifconfig2.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ifconfig2 = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ifconfig.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_ifconfig_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ifconfig.json'), 'r', encoding='utf-8') as f: + centos_7_7_ifconfig_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ifconfig.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ifconfig_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ifconfig.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ifconfig_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/ifconfig.json'), 'r', encoding='utf-8') as f: - self.osx_10_11_6_ifconfig_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/ifconfig.json'), 'r', encoding='utf-8') as f: + osx_10_11_6_ifconfig_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/ifconfig2.json'), 'r', encoding='utf-8') as f: - self.osx_10_11_6_ifconfig2_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/ifconfig2.json'), 'r', encoding='utf-8') as f: + osx_10_11_6_ifconfig2_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ifconfig.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ifconfig_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ifconfig.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ifconfig_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ifconfig2.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ifconfig2_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ifconfig2.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ifconfig2_json = json.loads(f.read()) def test_ifconfig_nodata(self): """ diff --git a/tests/test_ini.py b/tests/test_ini.py index 4e69e5df..1c655939 100644 --- a/tests/test_ini.py +++ b/tests/test_ini.py @@ -34,6 +34,7 @@ class MyTests(unittest.TestCase): with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ini-single-quote.json'), 'r', encoding='utf-8') as f: generic_ini_single_quote_json = json.loads(f.read()) + def test_ini_nodata(self): """ Test the test ini file with no data diff --git a/tests/test_iostat.py b/tests/test_iostat.py index 1288f998..ca660d6e 100644 --- a/tests/test_iostat.py +++ b/tests/test_iostat.py @@ -8,92 +8,92 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iostat.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_iostat = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iostat.out'), 'r', encoding='utf-8') as f: + centos_7_7_iostat = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iostat-m.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_iostat_m = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iostat-m.out'), 'r', encoding='utf-8') as f: + centos_7_7_iostat_m = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iostat-x.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_iostat_x = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iostat-x.out'), 'r', encoding='utf-8') as f: + centos_7_7_iostat_x = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iostat-mx.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_iostat_mx = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iostat-mx.out'), 'r', encoding='utf-8') as f: + centos_7_7_iostat_mx = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iostat-1.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_iostat_1 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iostat-1.out'), 'r', encoding='utf-8') as f: + centos_7_7_iostat_1 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iostat.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_iostat = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iostat.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_iostat = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iostat-m.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_iostat_m = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iostat-m.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_iostat_m = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iostat-x.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_iostat_x = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iostat-x.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_iostat_x = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iostat-mx.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_iostat_mx = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iostat-mx.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_iostat_mx = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iostat-1.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_iostat_1 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iostat-1.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_iostat_1 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/iostat.out'), 'r', encoding='utf-8') as f: - self.ubuntu_20_10_iostat = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/iostat.out'), 'r', encoding='utf-8') as f: + ubuntu_20_10_iostat = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/iostat-m.out'), 'r', encoding='utf-8') as f: - self.ubuntu_20_10_iostat_m = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/iostat-m.out'), 'r', encoding='utf-8') as f: + ubuntu_20_10_iostat_m = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/iostat-x.out'), 'r', encoding='utf-8') as f: - self.ubuntu_20_10_iostat_x = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/iostat-x.out'), 'r', encoding='utf-8') as f: + ubuntu_20_10_iostat_x = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/iostat-mx.out'), 'r', encoding='utf-8') as f: - self.ubuntu_20_10_iostat_mx = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/iostat-mx.out'), 'r', encoding='utf-8') as f: + ubuntu_20_10_iostat_mx = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iostat.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_iostat_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iostat.json'), 'r', encoding='utf-8') as f: + centos_7_7_iostat_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iostat-m.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_iostat_m_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iostat-m.json'), 'r', encoding='utf-8') as f: + centos_7_7_iostat_m_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iostat-x.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_iostat_x_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iostat-x.json'), 'r', encoding='utf-8') as f: + centos_7_7_iostat_x_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iostat-mx.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_iostat_mx_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iostat-mx.json'), 'r', encoding='utf-8') as f: + centos_7_7_iostat_mx_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iostat-1.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_iostat_1_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iostat-1.json'), 'r', encoding='utf-8') as f: + centos_7_7_iostat_1_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iostat.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_iostat_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iostat.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_iostat_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iostat-m.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_iostat_m_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iostat-m.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_iostat_m_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iostat-x.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_iostat_x_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iostat-x.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_iostat_x_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iostat-mx.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_iostat_mx_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iostat-mx.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_iostat_mx_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iostat-1.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_iostat_1_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iostat-1.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_iostat_1_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/iostat.json'), 'r', encoding='utf-8') as f: - self.ubuntu_20_10_iostat_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/iostat.json'), 'r', encoding='utf-8') as f: + ubuntu_20_10_iostat_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/iostat-m.json'), 'r', encoding='utf-8') as f: - self.ubuntu_20_10_iostat_m_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/iostat-m.json'), 'r', encoding='utf-8') as f: + ubuntu_20_10_iostat_m_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/iostat-x.json'), 'r', encoding='utf-8') as f: - self.ubuntu_20_10_iostat_x_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/iostat-x.json'), 'r', encoding='utf-8') as f: + ubuntu_20_10_iostat_x_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/iostat-mx.json'), 'r', encoding='utf-8') as f: + ubuntu_20_10_iostat_mx_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/iostat-mx.json'), 'r', encoding='utf-8') as f: - self.ubuntu_20_10_iostat_mx_json = json.loads(f.read()) def test_iostat_nodata(self): """ diff --git a/tests/test_iostat_s.py b/tests/test_iostat_s.py index a29c78a5..8ffc3da0 100644 --- a/tests/test_iostat_s.py +++ b/tests/test_iostat_s.py @@ -12,93 +12,93 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iostat.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_iostat = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iostat.out'), 'r', encoding='utf-8') as f: + centos_7_7_iostat = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iostat-m.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_iostat_m = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iostat-m.out'), 'r', encoding='utf-8') as f: + centos_7_7_iostat_m = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iostat-x.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_iostat_x = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iostat-x.out'), 'r', encoding='utf-8') as f: + centos_7_7_iostat_x = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iostat-mx.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_iostat_mx = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iostat-mx.out'), 'r', encoding='utf-8') as f: + centos_7_7_iostat_mx = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iostat-1.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_iostat_1 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iostat-1.out'), 'r', encoding='utf-8') as f: + centos_7_7_iostat_1 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iostat.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_iostat = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iostat.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_iostat = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iostat-m.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_iostat_m = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iostat-m.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_iostat_m = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iostat-x.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_iostat_x = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iostat-x.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_iostat_x = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iostat-mx.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_iostat_mx = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iostat-mx.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_iostat_mx = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iostat-1.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_iostat_1 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iostat-1.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_iostat_1 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/iostat.out'), 'r', encoding='utf-8') as f: - self.ubuntu_20_10_iostat = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/iostat.out'), 'r', encoding='utf-8') as f: + ubuntu_20_10_iostat = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/iostat-m.out'), 'r', encoding='utf-8') as f: - self.ubuntu_20_10_iostat_m = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/iostat-m.out'), 'r', encoding='utf-8') as f: + ubuntu_20_10_iostat_m = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/iostat-x.out'), 'r', encoding='utf-8') as f: - self.ubuntu_20_10_iostat_x = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/iostat-x.out'), 'r', encoding='utf-8') as f: + ubuntu_20_10_iostat_x = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/iostat-mx.out'), 'r', encoding='utf-8') as f: - self.ubuntu_20_10_iostat_mx = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/iostat-mx.out'), 'r', encoding='utf-8') as f: + ubuntu_20_10_iostat_mx = f.read() - # output + # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iostat-streaming.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_iostat_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iostat-streaming.json'), 'r', encoding='utf-8') as f: + centos_7_7_iostat_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iostat-m-streaming.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_iostat_m_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iostat-m-streaming.json'), 'r', encoding='utf-8') as f: + centos_7_7_iostat_m_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iostat-x-streaming.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_iostat_x_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iostat-x-streaming.json'), 'r', encoding='utf-8') as f: + centos_7_7_iostat_x_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iostat-mx-streaming.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_iostat_mx_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iostat-mx-streaming.json'), 'r', encoding='utf-8') as f: + centos_7_7_iostat_mx_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iostat-1-streaming.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_iostat_1_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iostat-1-streaming.json'), 'r', encoding='utf-8') as f: + centos_7_7_iostat_1_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iostat-streaming.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_iostat_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iostat-streaming.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_iostat_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iostat-m-streaming.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_iostat_m_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iostat-m-streaming.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_iostat_m_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iostat-x-streaming.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_iostat_x_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iostat-x-streaming.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_iostat_x_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iostat-mx-streaming.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_iostat_mx_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iostat-mx-streaming.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_iostat_mx_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iostat-1-streaming.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_iostat_1_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iostat-1-streaming.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_iostat_1_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/iostat-streaming.json'), 'r', encoding='utf-8') as f: - self.ubuntu_20_10_iostat_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/iostat-streaming.json'), 'r', encoding='utf-8') as f: + ubuntu_20_10_iostat_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/iostat-m-streaming.json'), 'r', encoding='utf-8') as f: - self.ubuntu_20_10_iostat_m_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/iostat-m-streaming.json'), 'r', encoding='utf-8') as f: + ubuntu_20_10_iostat_m_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/iostat-x-streaming.json'), 'r', encoding='utf-8') as f: - self.ubuntu_20_10_iostat_x_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/iostat-x-streaming.json'), 'r', encoding='utf-8') as f: + ubuntu_20_10_iostat_x_streaming_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/iostat-mx-streaming.json'), 'r', encoding='utf-8') as f: + ubuntu_20_10_iostat_mx_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/iostat-mx-streaming.json'), 'r', encoding='utf-8') as f: - self.ubuntu_20_10_iostat_mx_streaming_json = json.loads(f.read()) def test_iostat_empty_dir(self): """ From c8720b259c0988e8eaf8731008c1a8a4631919dc Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Fri, 23 Sep 2022 14:02:27 -0700 Subject: [PATCH 083/124] optimize tests --- tests/test_asciitable_m.py | 2 +- tests/test_iptables.py | 102 +++---- tests/test_iw_scan.py | 22 +- tests/test_jar_manifest.py | 22 +- tests/test_jobs.py | 22 +- tests/test_last.py | 102 +++---- tests/test_ls.py | 286 +++++++++---------- tests/test_ls_s.py | 106 +++---- tests/test_lsblk.py | 38 +-- tests/test_lsmod.py | 22 +- tests/test_lsof.py | 38 +-- tests/test_lsusb.py | 66 ++--- tests/test_m3u.py | 21 +- tests/test_mdadm.py | 325 +++++++++++---------- tests/test_mount.py | 38 +-- tests/test_mpstat.py | 37 ++- tests/test_mpstat_s.py | 38 +-- tests/test_netstat.py | 306 ++++++++++---------- tests/test_nmcli.py | 113 ++++---- tests/test_ntpq.py | 54 ++-- tests/test_passwd.py | 30 +- tests/test_pidstat.py | 33 ++- tests/test_pidstat_s.py | 34 +-- tests/test_ping.py | 545 ++++++++++++++++++------------------ tests/test_ping_s.py | 514 +++++++++++++++++----------------- tests/test_pip_list.py | 46 +-- tests/test_pip_show.py | 46 +-- tests/test_plist.py | 37 ++- tests/test_postconf.py | 13 +- tests/test_ps.py | 70 ++--- tests/test_route.py | 62 ++-- tests/test_rpm_qai.py | 22 +- tests/test_rsync.py | 102 +++---- tests/test_rsync_s.py | 102 +++---- tests/test_sfdisk.py | 117 ++++---- tests/test_shadow.py | 21 +- tests/test_ss.py | 22 +- tests/test_stat.py | 46 +-- tests/test_stat_s.py | 46 +-- tests/test_sysctl.py | 38 +-- tests/test_syslog.py | 13 +- tests/test_syslog_bsd.py | 13 +- tests/test_syslog_bsd_s.py | 14 +- tests/test_syslog_s.py | 14 +- tests/test_systemctl.py | 22 +- tests/test_systemctl_lj.py | 14 +- tests/test_systemctl_ls.py | 22 +- tests/test_systemctl_luf.py | 22 +- tests/test_time.py | 70 ++--- tests/test_timedatectl.py | 22 +- tests/test_top.py | 45 ++- tests/test_top_s.py | 46 +-- tests/test_tracepath.py | 22 +- tests/test_traceroute.py | 173 ++++++------ tests/test_ufw.py | 54 ++-- tests/test_ufw_appinfo.py | 46 +-- tests/test_uname.py | 86 +++--- tests/test_update_alt_gs.py | 13 +- tests/test_update_alt_q.py | 22 +- tests/test_upower.py | 54 ++-- tests/test_uptime.py | 38 +-- tests/test_vmstat.py | 70 ++--- tests/test_vmstat_s.py | 70 ++--- tests/test_w.py | 46 +-- tests/test_wc.py | 30 +- tests/test_who.py | 54 ++-- tests/test_x509_cert.py | 37 ++- tests/test_xml.py | 22 +- tests/test_yaml.py | 22 +- tests/test_zipinfo.py | 22 +- 70 files changed, 2443 insertions(+), 2461 deletions(-) diff --git a/tests/test_asciitable_m.py b/tests/test_asciitable_m.py index 9a29945c..b9b86a8d 100644 --- a/tests/test_asciitable_m.py +++ b/tests/test_asciitable_m.py @@ -362,7 +362,7 @@ class MyTests(unittest.TestCase): } ] - self.assertEqual(jc.parsers.asciitable_m.parse(input, quiet=False), expected) + self.assertEqual(jc.parsers.asciitable_m.parse(input, quiet=True), expected) def test_asciitable_m_markdown(self): """ diff --git a/tests/test_iptables.py b/tests/test_iptables.py index 148a5d73..70e98747 100644 --- a/tests/test_iptables.py +++ b/tests/test_iptables.py @@ -8,80 +8,80 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iptables-filter.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_iptables_filter = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iptables-filter.out'), 'r', encoding='utf-8') as f: + centos_7_7_iptables_filter = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iptables-filter.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_iptables_filter = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iptables-filter.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_iptables_filter = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iptables-filter-line-numbers.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_iptables_filter_line_numbers = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iptables-filter-line-numbers.out'), 'r', encoding='utf-8') as f: + centos_7_7_iptables_filter_line_numbers = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iptables-filter-line-numbers.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_iptables_filter_line_numbers = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iptables-filter-line-numbers.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_iptables_filter_line_numbers = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iptables-filter-nv.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_iptables_filter_nv = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iptables-filter-nv.out'), 'r', encoding='utf-8') as f: + centos_7_7_iptables_filter_nv = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iptables-filter-nv.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_iptables_filter_nv = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iptables-filter-nv.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_iptables_filter_nv = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iptables-mangle.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_iptables_mangle = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iptables-mangle.out'), 'r', encoding='utf-8') as f: + centos_7_7_iptables_mangle = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iptables-mangle.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_iptables_mangle = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iptables-mangle.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_iptables_mangle = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iptables-nat.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_iptables_nat = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iptables-nat.out'), 'r', encoding='utf-8') as f: + centos_7_7_iptables_nat = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iptables-nat.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_iptables_nat = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iptables-nat.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_iptables_nat = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iptables-raw.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_iptables_raw = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iptables-raw.out'), 'r', encoding='utf-8') as f: + centos_7_7_iptables_raw = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iptables-raw.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_iptables_raw = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iptables-raw.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_iptables_raw = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iptables-filter.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_iptables_filter_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iptables-filter.json'), 'r', encoding='utf-8') as f: + centos_7_7_iptables_filter_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iptables-filter.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_iptables_filter_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iptables-filter.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_iptables_filter_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iptables-filter-line-numbers.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_iptables_filter_line_numbers_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iptables-filter-line-numbers.json'), 'r', encoding='utf-8') as f: + centos_7_7_iptables_filter_line_numbers_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iptables-filter-line-numbers.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_iptables_filter_line_numbers_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iptables-filter-line-numbers.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_iptables_filter_line_numbers_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iptables-filter-nv.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_iptables_filter_nv_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iptables-filter-nv.json'), 'r', encoding='utf-8') as f: + centos_7_7_iptables_filter_nv_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iptables-filter-nv.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_iptables_filter_nv_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iptables-filter-nv.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_iptables_filter_nv_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iptables-mangle.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_iptables_mangle_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iptables-mangle.json'), 'r', encoding='utf-8') as f: + centos_7_7_iptables_mangle_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iptables-mangle.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_iptables_mangle_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iptables-mangle.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_iptables_mangle_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iptables-nat.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_iptables_nat_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iptables-nat.json'), 'r', encoding='utf-8') as f: + centos_7_7_iptables_nat_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iptables-nat.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_iptables_nat_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iptables-nat.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_iptables_nat_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iptables-raw.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_iptables_raw_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iptables-raw.json'), 'r', encoding='utf-8') as f: + centos_7_7_iptables_raw_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iptables-raw.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_iptables_raw_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/iptables-raw.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_iptables_raw_json = json.loads(f.read()) def test_iptables_nodata(self): """ diff --git a/tests/test_iw_scan.py b/tests/test_iw_scan.py index d34747ba..fb4db26c 100644 --- a/tests/test_iw_scan.py +++ b/tests/test_iw_scan.py @@ -8,20 +8,20 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iw-scan0.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_iw_scan0 = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iw-scan0.out'), 'r', encoding='utf-8') as f: + centos_7_7_iw_scan0 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iw-scan1.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_iw_scan1 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iw-scan1.out'), 'r', encoding='utf-8') as f: + centos_7_7_iw_scan1 = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iw-scan0.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_iw_scan0_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iw-scan0.json'), 'r', encoding='utf-8') as f: + centos_7_7_iw_scan0_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iw-scan1.json'), 'r', encoding='utf-8') as f: + centos_7_7_iw_scan1_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/iw-scan1.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_iw_scan1_json = json.loads(f.read()) def test_iw_scan_nodata(self): """ diff --git a/tests/test_jar_manifest.py b/tests/test_jar_manifest.py index 568b1c87..fc797046 100644 --- a/tests/test_jar_manifest.py +++ b/tests/test_jar_manifest.py @@ -8,20 +8,20 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/rhel-8/MANIFEST.MF.out'), 'r', encoding='utf-8') as f: - self.rhel_8_manifest_mf = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/rhel-8/MANIFEST.MF.out'), 'r', encoding='utf-8') as f: + rhel_8_manifest_mf = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/rhel-8/MANIFEST.MF.MULTI.out'), 'r', encoding='utf-8') as f: - self.rhel_8_manifest_mf_multi = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/rhel-8/MANIFEST.MF.MULTI.out'), 'r', encoding='utf-8') as f: + rhel_8_manifest_mf_multi = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/rhel-8/MANIFEST.MF.json'), 'r', encoding='utf-8') as f: - self.rhel_8_manifest_mf_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/rhel-8/MANIFEST.MF.json'), 'r', encoding='utf-8') as f: + rhel_8_manifest_mf_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/rhel-8/MANIFEST.MF.MULTI.json'), 'r', encoding='utf-8') as f: + rhel_8_manifest_mf_multi_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/rhel-8/MANIFEST.MF.MULTI.json'), 'r', encoding='utf-8') as f: - self.rhel_8_manifest_mf_multi_json = json.loads(f.read()) def test_jar_manifest_nodata(self): """ diff --git a/tests/test_jobs.py b/tests/test_jobs.py index c359b8d3..e5ebaf55 100644 --- a/tests/test_jobs.py +++ b/tests/test_jobs.py @@ -8,20 +8,20 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/jobs.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_jobs = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/jobs.out'), 'r', encoding='utf-8') as f: + centos_7_7_jobs = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/jobs.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_jobs = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/jobs.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_jobs = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/jobs.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_jobs_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/jobs.json'), 'r', encoding='utf-8') as f: + centos_7_7_jobs_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/jobs.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_jobs_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/jobs.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_jobs_json = json.loads(f.read()) def test_jobs_nodata(self): """ diff --git a/tests/test_last.py b/tests/test_last.py index 30b0d536..89880bd1 100644 --- a/tests/test_last.py +++ b/tests/test_last.py @@ -15,80 +15,80 @@ if not sys.platform.startswith('win32'): class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/last.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_last = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/last.out'), 'r', encoding='utf-8') as f: + centos_7_7_last = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/last.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_last = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/last.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_last = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/last.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_last = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/last.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_last = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/lastb.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_lastb = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/lastb.out'), 'r', encoding='utf-8') as f: + centos_7_7_lastb = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/lastb.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_lastb = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/lastb.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_lastb = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/last-w.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_last_w = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/last-w.out'), 'r', encoding='utf-8') as f: + centos_7_7_last_w = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/last-w.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_last_w = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/last-w.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_last_w = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/last.out'), 'r', encoding='utf-8') as f: - self.fedora32_last = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/last.out'), 'r', encoding='utf-8') as f: + fedora32_last = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/last.out'), 'r', encoding='utf-8') as f: - self.freebsd12_last = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/last.out'), 'r', encoding='utf-8') as f: + freebsd12_last = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.04/last-F.out'), 'r', encoding='utf-8') as f: - self.ubuntu_20_4_last_F = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.04/last-F.out'), 'r', encoding='utf-8') as f: + ubuntu_20_4_last_F = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/last-crash.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_last_crash = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/last-crash.out'), 'r', encoding='utf-8') as f: + centos_7_7_last_crash = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/last-wF.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_last_wF = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/last-wF.out'), 'r', encoding='utf-8') as f: + centos_7_7_last_wF = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/last.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_last_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/last.json'), 'r', encoding='utf-8') as f: + centos_7_7_last_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/last.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_last_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/last.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_last_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/last.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_last_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/last.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_last_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/lastb.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_lastb_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/lastb.json'), 'r', encoding='utf-8') as f: + centos_7_7_lastb_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/lastb.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_lastb_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/lastb.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_lastb_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/last-w.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_last_w_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/last-w.json'), 'r', encoding='utf-8') as f: + centos_7_7_last_w_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/last-w.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_last_w_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/last-w.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_last_w_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/last.json'), 'r', encoding='utf-8') as f: - self.fedora32_last_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/last.json'), 'r', encoding='utf-8') as f: + fedora32_last_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/last.json'), 'r', encoding='utf-8') as f: - self.freebsd12_last_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/last.json'), 'r', encoding='utf-8') as f: + freebsd12_last_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.04/last-F.json'), 'r', encoding='utf-8') as f: - self.ubuntu_20_4_last_F_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.04/last-F.json'), 'r', encoding='utf-8') as f: + ubuntu_20_4_last_F_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/last-crash.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_last_crash_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/last-crash.json'), 'r', encoding='utf-8') as f: + centos_7_7_last_crash_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/last-wF.json'), 'r', encoding='utf-8') as f: + centos_7_7_last_wF_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/last-wF.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_last_wF_json = json.loads(f.read()) def test_last_nodata(self): """ diff --git a/tests/test_ls.py b/tests/test_ls.py index 13372bd5..1735c64b 100644 --- a/tests/test_ls.py +++ b/tests/test_ls.py @@ -15,218 +15,218 @@ if not sys.platform.startswith('win32'): class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_ls = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls.out'), 'r', encoding='utf-8') as f: + centos_7_7_ls = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ls = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ls = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/ls.out'), 'r', encoding='utf-8') as f: - self.osx_10_11_6_ls = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/ls.out'), 'r', encoding='utf-8') as f: + osx_10_11_6_ls = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ls = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ls = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-al.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_ls_al = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-al.out'), 'r', encoding='utf-8') as f: + centos_7_7_ls_al = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-al.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ls_al = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-al.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ls_al = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/ls-al.out'), 'r', encoding='utf-8') as f: - self.osx_10_11_6_ls_al = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/ls-al.out'), 'r', encoding='utf-8') as f: + osx_10_11_6_ls_al = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-al.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ls_al = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-al.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ls_al = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-alh.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_ls_alh = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-alh.out'), 'r', encoding='utf-8') as f: + centos_7_7_ls_alh = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-alh.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ls_alh = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-alh.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ls_alh = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/ls-alh.out'), 'r', encoding='utf-8') as f: - self.osx_10_11_6_ls_alh = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/ls-alh.out'), 'r', encoding='utf-8') as f: + osx_10_11_6_ls_alh = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-alh.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ls_alh = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-alh.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ls_alh = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-R.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_ls_R = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-R.out'), 'r', encoding='utf-8') as f: + centos_7_7_ls_R = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-R.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ls_R = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-R.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ls_R = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-R.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ls_R = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-R.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ls_R = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-alR.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_ls_alR = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-alR.out'), 'r', encoding='utf-8') as f: + centos_7_7_ls_alR = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-alR.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ls_alR = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-alR.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ls_alR = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-alR.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ls_alR = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-alR.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ls_alR = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-glob.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_ls_glob = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-glob.out'), 'r', encoding='utf-8') as f: + centos_7_7_ls_glob = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-glob.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ls_glob = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-glob.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ls_glob = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-glob.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ls_glob = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-glob.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ls_glob = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-R-newlines.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_ls_R_newlines = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-R-newlines.out'), 'r', encoding='utf-8') as f: + centos_7_7_ls_R_newlines = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-R-newlines.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ls_R_newlines = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-R-newlines.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ls_R_newlines = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-R-newlines.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ls_R_newlines = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-R-newlines.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ls_R_newlines = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-l-newlines.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_ls_l_newlines = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-l-newlines.out'), 'r', encoding='utf-8') as f: + centos_7_7_ls_l_newlines = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-l-newlines.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ls_l_newlines = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-l-newlines.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ls_l_newlines = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-l-newlines.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ls_l_newlines = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-l-newlines.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ls_l_newlines = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-lR-newlines.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_ls_lR_newlines = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-lR-newlines.out'), 'r', encoding='utf-8') as f: + centos_7_7_ls_lR_newlines = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-lR-newlines.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ls_lR_newlines = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-lR-newlines.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ls_lR_newlines = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-lR-newlines.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ls_lR_newlines = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-lR-newlines.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ls_lR_newlines = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-newlines.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_ls_newlines = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-newlines.out'), 'r', encoding='utf-8') as f: + centos_7_7_ls_newlines = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-newlines.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ls_newlines = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-newlines.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ls_newlines = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-newlines.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ls_newlines = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-newlines.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ls_newlines = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-lR-empty-folder.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ls_lR_empty_folder = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-lR-empty-folder.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ls_lR_empty_folder = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-l-iso.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ls_l_iso = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-l-iso.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ls_l_iso = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_ls_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls.json'), 'r', encoding='utf-8') as f: + centos_7_7_ls_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ls_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ls_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/ls.json'), 'r', encoding='utf-8') as f: - self.osx_10_11_6_ls_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/ls.json'), 'r', encoding='utf-8') as f: + osx_10_11_6_ls_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ls_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ls_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-al.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_ls_al_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-al.json'), 'r', encoding='utf-8') as f: + centos_7_7_ls_al_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-al.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ls_al_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-al.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ls_al_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/ls-al.json'), 'r', encoding='utf-8') as f: - self.osx_10_11_6_ls_al_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/ls-al.json'), 'r', encoding='utf-8') as f: + osx_10_11_6_ls_al_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-al.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ls_al_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-al.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ls_al_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-alh.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_ls_alh_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-alh.json'), 'r', encoding='utf-8') as f: + centos_7_7_ls_alh_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-alh.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ls_alh_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-alh.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ls_alh_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/ls-alh.json'), 'r', encoding='utf-8') as f: - self.osx_10_11_6_ls_alh_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/ls-alh.json'), 'r', encoding='utf-8') as f: + osx_10_11_6_ls_alh_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-alh.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ls_alh_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-alh.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ls_alh_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-R.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_ls_R_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-R.json'), 'r', encoding='utf-8') as f: + centos_7_7_ls_R_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-R.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ls_R_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-R.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ls_R_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-R.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ls_R_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-R.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ls_R_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-alR.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_ls_alR_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-alR.json'), 'r', encoding='utf-8') as f: + centos_7_7_ls_alR_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-alR.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ls_alR_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-alR.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ls_alR_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-alR.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ls_alR_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-alR.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ls_alR_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-glob.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_ls_glob_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-glob.json'), 'r', encoding='utf-8') as f: + centos_7_7_ls_glob_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-glob.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ls_glob_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-glob.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ls_glob_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-glob.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ls_glob_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-glob.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ls_glob_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-R-newlines.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_ls_R_newlines_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-R-newlines.json'), 'r', encoding='utf-8') as f: + centos_7_7_ls_R_newlines_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-R-newlines.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ls_R_newlines_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-R-newlines.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ls_R_newlines_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-R-newlines.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ls_R_newlines_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-R-newlines.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ls_R_newlines_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-l-newlines.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_ls_l_newlines_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-l-newlines.json'), 'r', encoding='utf-8') as f: + centos_7_7_ls_l_newlines_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-l-newlines.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ls_l_newlines_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-l-newlines.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ls_l_newlines_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-l-newlines.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ls_l_newlines_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-l-newlines.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ls_l_newlines_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-lR-newlines.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_ls_lR_newlines_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-lR-newlines.json'), 'r', encoding='utf-8') as f: + centos_7_7_ls_lR_newlines_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-lR-newlines.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ls_lR_newlines_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-lR-newlines.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ls_lR_newlines_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-lR-newlines.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ls_lR_newlines_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-lR-newlines.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ls_lR_newlines_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-newlines.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_ls_newlines_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-newlines.json'), 'r', encoding='utf-8') as f: + centos_7_7_ls_newlines_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-newlines.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ls_newlines_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-newlines.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ls_newlines_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-newlines.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ls_newlines_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-newlines.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ls_newlines_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-lR-empty-folder.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ls_lR_empty_folder_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-lR-empty-folder.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ls_lR_empty_folder_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-l-iso.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ls_l_iso_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-l-iso.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ls_l_iso_json = json.loads(f.read()) def test_ls_empty_dir(self): """ diff --git a/tests/test_ls_s.py b/tests/test_ls_s.py index a4fcac78..385fa25a 100644 --- a/tests/test_ls_s.py +++ b/tests/test_ls_s.py @@ -20,84 +20,84 @@ if not sys.platform.startswith('win32'): class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_ls = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls.out'), 'r', encoding='utf-8') as f: + centos_7_7_ls = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-al.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_ls_al = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-al.out'), 'r', encoding='utf-8') as f: + centos_7_7_ls_al = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-al.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ls_al = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-al.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ls_al = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/ls-al.out'), 'r', encoding='utf-8') as f: - self.osx_10_11_6_ls_al = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/ls-al.out'), 'r', encoding='utf-8') as f: + osx_10_11_6_ls_al = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-al.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ls_al = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-al.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ls_al = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-alh.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_ls_alh = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-alh.out'), 'r', encoding='utf-8') as f: + centos_7_7_ls_alh = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-alh.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ls_alh = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-alh.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ls_alh = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/ls-alh.out'), 'r', encoding='utf-8') as f: - self.osx_10_11_6_ls_alh = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/ls-alh.out'), 'r', encoding='utf-8') as f: + osx_10_11_6_ls_alh = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-alh.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ls_alh = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-alh.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ls_alh = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-alR.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_ls_alR = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-alR.out'), 'r', encoding='utf-8') as f: + centos_7_7_ls_alR = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-alR.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ls_alR = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-alR.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ls_alR = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-alR.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ls_alR = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-alR.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ls_alR = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-lR-empty-folder.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ls_lR_empty_folder = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-lR-empty-folder.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ls_lR_empty_folder = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-l-iso.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ls_l_iso = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-l-iso.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ls_l_iso = f.read() - # output + # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-al-streaming.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_ls_al_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-al-streaming.json'), 'r', encoding='utf-8') as f: + centos_7_7_ls_al_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-al-streaming.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ls_al_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-al-streaming.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ls_al_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-al-streaming.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ls_al_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-al-streaming.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ls_al_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-alh-streaming.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_ls_alh_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-alh-streaming.json'), 'r', encoding='utf-8') as f: + centos_7_7_ls_alh_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-alh-streaming.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ls_alh_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-alh-streaming.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ls_alh_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-alh-streaming.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ls_alh_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-alh-streaming.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ls_alh_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-alR-streaming.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_ls_alR_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ls-alR-streaming.json'), 'r', encoding='utf-8') as f: + centos_7_7_ls_alR_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-alR-streaming.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ls_alR_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-alR-streaming.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ls_alR_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-alR-streaming.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ls_alR_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-alR-streaming.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ls_alR_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-lR-empty-folder-streaming.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ls_lR_empty_folder_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ls-lR-empty-folder-streaming.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ls_lR_empty_folder_streaming_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-l-iso-streaming.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ls_l_iso_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ls-l-iso-streaming.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ls_l_iso_streaming_json = json.loads(f.read()) def test_ls_s_empty_dir(self): """ diff --git a/tests/test_lsblk.py b/tests/test_lsblk.py index 606ce638..ca549971 100644 --- a/tests/test_lsblk.py +++ b/tests/test_lsblk.py @@ -8,32 +8,32 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/lsblk.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_lsblk = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/lsblk.out'), 'r', encoding='utf-8') as f: + centos_7_7_lsblk = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/lsblk.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_lsblk = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/lsblk.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_lsblk = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/lsblk-allcols.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_lsblk_allcols = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/lsblk-allcols.out'), 'r', encoding='utf-8') as f: + centos_7_7_lsblk_allcols = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/lsblk-allcols.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_lsblk_allcols = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/lsblk-allcols.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_lsblk_allcols = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/lsblk.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_lsblk_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/lsblk.json'), 'r', encoding='utf-8') as f: + centos_7_7_lsblk_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/lsblk.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_lsblk_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/lsblk.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_lsblk_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/lsblk-allcols.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_lsblk_allcols_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/lsblk-allcols.json'), 'r', encoding='utf-8') as f: + centos_7_7_lsblk_allcols_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/lsblk-allcols.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_lsblk_allcols_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/lsblk-allcols.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_lsblk_allcols_json = json.loads(f.read()) def test_lsblk_nodata(self): """ diff --git a/tests/test_lsmod.py b/tests/test_lsmod.py index 5cd9b768..97316d09 100644 --- a/tests/test_lsmod.py +++ b/tests/test_lsmod.py @@ -8,20 +8,20 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/lsmod.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_lsmod = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/lsmod.out'), 'r', encoding='utf-8') as f: + centos_7_7_lsmod = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/lsmod.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_lsmod = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/lsmod.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_lsmod = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/lsmod.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_lsmod_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/lsmod.json'), 'r', encoding='utf-8') as f: + centos_7_7_lsmod_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/lsmod.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_lsmod_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/lsmod.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_lsmod_json = json.loads(f.read()) def test_lsmod_nodata(self): """ diff --git a/tests/test_lsof.py b/tests/test_lsof.py index 94311a80..1a375686 100644 --- a/tests/test_lsof.py +++ b/tests/test_lsof.py @@ -8,32 +8,32 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/lsof.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_lsof = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/lsof.out'), 'r', encoding='utf-8') as f: + centos_7_7_lsof = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/lsof.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_lsof = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/lsof.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_lsof = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/lsof-sudo.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_lsof_sudo = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/lsof-sudo.out'), 'r', encoding='utf-8') as f: + centos_7_7_lsof_sudo = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/lsof-sudo.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_lsof_sudo = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/lsof-sudo.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_lsof_sudo = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/lsof.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_lsof_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/lsof.json'), 'r', encoding='utf-8') as f: + centos_7_7_lsof_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/lsof.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_lsof_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/lsof.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_lsof_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/lsof-sudo.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_lsof_sudo_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/lsof-sudo.json'), 'r', encoding='utf-8') as f: + centos_7_7_lsof_sudo_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/lsof-sudo.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_lsof_sudo_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/lsof-sudo.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_lsof_sudo_json = json.loads(f.read()) def test_lsof_nodata(self): """ diff --git a/tests/test_lsusb.py b/tests/test_lsusb.py index 1999763b..e7693ca3 100644 --- a/tests/test_lsusb.py +++ b/tests/test_lsusb.py @@ -9,53 +9,53 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/lsusb.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_lsusb = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/lsusb.out'), 'r', encoding='utf-8') as f: + centos_7_7_lsusb = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/lsusb-v.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_lsusb_v = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/lsusb-v.out'), 'r', encoding='utf-8') as f: + centos_7_7_lsusb_v = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/lsusb-v-single.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_lsusb_v_single = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/lsusb-v-single.out'), 'r', encoding='utf-8') as f: + centos_7_7_lsusb_v_single = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/lsusb-test-attributes.out'), 'r', encoding='utf-8') as f: - self.generic_lsusb_test_attributes = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/lsusb-test-attributes.out'), 'r', encoding='utf-8') as f: + generic_lsusb_test_attributes = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/lsusb-test-attributes2.out'), 'r', encoding='utf-8') as f: - self.generic_lsusb_test_attributes2 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/lsusb-test-attributes2.out'), 'r', encoding='utf-8') as f: + generic_lsusb_test_attributes2 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/lsusb-t.out'), 'r', encoding='utf-8') as f: - self.generic_lsusb_t = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/lsusb-t.out'), 'r', encoding='utf-8') as f: + generic_lsusb_t = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/lsusb-device-qualifier.out'), 'r', encoding='utf-8') as f: - self.generic_lsusb_device_qualifier = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/lsusb-device-qualifier.out'), 'r', encoding='utf-8') as f: + generic_lsusb_device_qualifier = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/lsusb-binary-object-store.out'), 'r', encoding='utf-8') as f: - self.generic_lsusb_binary_object_store = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/lsusb-binary-object-store.out'), 'r', encoding='utf-8') as f: + generic_lsusb_binary_object_store = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/lsusb.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_lsusb_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/lsusb.json'), 'r', encoding='utf-8') as f: + centos_7_7_lsusb_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/lsusb-v.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_lsusb_v_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/lsusb-v.json'), 'r', encoding='utf-8') as f: + centos_7_7_lsusb_v_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/lsusb-v-single.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_lsusb_v_single_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/lsusb-v-single.json'), 'r', encoding='utf-8') as f: + centos_7_7_lsusb_v_single_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/lsusb-test-attributes.json'), 'r', encoding='utf-8') as f: - self.generic_lsusb_test_attributes_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/lsusb-test-attributes.json'), 'r', encoding='utf-8') as f: + generic_lsusb_test_attributes_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/lsusb-test-attributes2.json'), 'r', encoding='utf-8') as f: - self.generic_lsusb_test_attributes2_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/lsusb-test-attributes2.json'), 'r', encoding='utf-8') as f: + generic_lsusb_test_attributes2_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/lsusb-device-qualifier.json'), 'r', encoding='utf-8') as f: - self.generic_lsusb_devicez_qualifier_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/lsusb-device-qualifier.json'), 'r', encoding='utf-8') as f: + generic_lsusb_devicez_qualifier_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/lsusb-binary-object-store.json'), 'r', encoding='utf-8') as f: + generic_lsusb_binary_object_store_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/lsusb-binary-object-store.json'), 'r', encoding='utf-8') as f: - self.generic_lsusb_binary_object_store_json = json.loads(f.read()) def test_lsusb_nodata(self): """ diff --git a/tests/test_m3u.py b/tests/test_m3u.py index 59982388..77cc4d0b 100644 --- a/tests/test_m3u.py +++ b/tests/test_m3u.py @@ -8,20 +8,19 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/m3u-example.m3u'), 'r', encoding='utf-8') as f: - self.m3u_example = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/m3u-example.m3u'), 'r', encoding='utf-8') as f: + m3u_example = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/m3u-dirty.m3u'), 'r', encoding='utf-8') as f: - self.m3u_dirty = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/m3u-dirty.m3u'), 'r', encoding='utf-8') as f: + m3u_dirty = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/m3u-example.json'), 'r', encoding='utf-8') as f: - self.m3u_example_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/m3u-example.json'), 'r', encoding='utf-8') as f: + m3u_example_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/m3u-dirty.json'), 'r', encoding='utf-8') as f: - self.m3u_dirty_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/m3u-dirty.json'), 'r', encoding='utf-8') as f: + m3u_dirty_json = json.loads(f.read()) def test_m3u_nodata(self): diff --git a/tests/test_mdadm.py b/tests/test_mdadm.py index d095fc89..f0d048bc 100644 --- a/tests/test_mdadm.py +++ b/tests/test_mdadm.py @@ -8,248 +8,247 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid0-offline.out'), 'r', encoding='utf-8') as f: - self.mdadm_examine_raid0_offline = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid0-offline.out'), 'r', encoding='utf-8') as f: + mdadm_examine_raid0_offline = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid0-ok.out'), 'r', encoding='utf-8') as f: - self.mdadm_examine_raid0_ok = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid0-ok.out'), 'r', encoding='utf-8') as f: + mdadm_examine_raid0_ok = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid1-0-90-ok.out'), 'r', encoding='utf-8') as f: - self.mdadm_examine_raid1_0_90_ok = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid1-0-90-ok.out'), 'r', encoding='utf-8') as f: + mdadm_examine_raid1_0_90_ok = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid1-checking.out'), 'r', encoding='utf-8') as f: - self.mdadm_examine_raid1_checking = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid1-checking.out'), 'r', encoding='utf-8') as f: + mdadm_examine_raid1_checking = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid1-failfast.out'), 'r', encoding='utf-8') as f: - self.mdadm_examine_raid1_failfast = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid1-failfast.out'), 'r', encoding='utf-8') as f: + mdadm_examine_raid1_failfast = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid1-faulty1.out'), 'r', encoding='utf-8') as f: - self.mdadm_examine_raid1_faulty1 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid1-faulty1.out'), 'r', encoding='utf-8') as f: + mdadm_examine_raid1_faulty1 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid1-faulty2.out'), 'r', encoding='utf-8') as f: - self.mdadm_examine_raid1_faulty2 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid1-faulty2.out'), 'r', encoding='utf-8') as f: + mdadm_examine_raid1_faulty2 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid1-moreflags.out'), 'r', encoding='utf-8') as f: - self.mdadm_examine_raid1_moreflags = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid1-moreflags.out'), 'r', encoding='utf-8') as f: + mdadm_examine_raid1_moreflags = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid1-ok.out'), 'r', encoding='utf-8') as f: - self.mdadm_examine_raid1_ok = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid1-ok.out'), 'r', encoding='utf-8') as f: + mdadm_examine_raid1_ok = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid1-replacing.out'), 'r', encoding='utf-8') as f: - self.mdadm_examine_raid1_replacing = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid1-replacing.out'), 'r', encoding='utf-8') as f: + mdadm_examine_raid1_replacing = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid1-resync.out'), 'r', encoding='utf-8') as f: - self.mdadm_examine_raid1_resync = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid1-resync.out'), 'r', encoding='utf-8') as f: + mdadm_examine_raid1_resync = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid1-spare.out'), 'r', encoding='utf-8') as f: - self.mdadm_examine_raid1_spare = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid1-spare.out'), 'r', encoding='utf-8') as f: + mdadm_examine_raid1_spare = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid1-syncing.out'), 'r', encoding='utf-8') as f: - self.mdadm_examine_raid1_syncing = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid1-syncing.out'), 'r', encoding='utf-8') as f: + mdadm_examine_raid1_syncing = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine.out'), 'r', encoding='utf-8') as f: - self.mdadm_examine = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine.out'), 'r', encoding='utf-8') as f: + mdadm_examine = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-detail.out'), 'r', encoding='utf-8') as f: - self.mdadm_query_detail = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-detail.out'), 'r', encoding='utf-8') as f: + mdadm_query_detail = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid0-ok.out'), 'r', encoding='utf-8') as f: - self.mdadm_query_raid0_ok = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid0-ok.out'), 'r', encoding='utf-8') as f: + mdadm_query_raid0_ok = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid1-failed-and-flags.out'), 'r', encoding='utf-8') as f: - self.mdadm_query_raid1_failed_and_flags = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid1-failed-and-flags.out'), 'r', encoding='utf-8') as f: + mdadm_query_raid1_failed_and_flags = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid1-faulty-and-removed.out'), 'r', encoding='utf-8') as f: - self.mdadm_query_raid1_faulty_and_removed = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid1-faulty-and-removed.out'), 'r', encoding='utf-8') as f: + mdadm_query_raid1_faulty_and_removed = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid1-faulty-with-spare.out'), 'r', encoding='utf-8') as f: - self.mdadm_query_raid1_faulty_with_spare = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid1-faulty-with-spare.out'), 'r', encoding='utf-8') as f: + mdadm_query_raid1_faulty_with_spare = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid1-faulty.out'), 'r', encoding='utf-8') as f: - self.mdadm_query_raid1_faulty = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid1-faulty.out'), 'r', encoding='utf-8') as f: + mdadm_query_raid1_faulty = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid1-ok-0-9.out'), 'r', encoding='utf-8') as f: - self.mdadm_query_raid1_ok_0_9 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid1-ok-0-9.out'), 'r', encoding='utf-8') as f: + mdadm_query_raid1_ok_0_9 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid1-ok-failfast.out'), 'r', encoding='utf-8') as f: - self.mdadm_query_raid1_ok_failfast = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid1-ok-failfast.out'), 'r', encoding='utf-8') as f: + mdadm_query_raid1_ok_failfast = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid1-ok-spare.out'), 'r', encoding='utf-8') as f: - self.mdadm_query_raid1_ok_spare = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid1-ok-spare.out'), 'r', encoding='utf-8') as f: + mdadm_query_raid1_ok_spare = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid1-ok.out'), 'r', encoding='utf-8') as f: - self.mdadm_query_raid1_ok = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid1-ok.out'), 'r', encoding='utf-8') as f: + mdadm_query_raid1_ok = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid1-rebuild-failfast.out'), 'r', encoding='utf-8') as f: - self.mdadm_query_raid1_rebuild_failfast = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid1-rebuild-failfast.out'), 'r', encoding='utf-8') as f: + mdadm_query_raid1_rebuild_failfast = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid1-spare-writem-rebuild.out'), 'r', encoding='utf-8') as f: - self.mdadm_query_raid1_spare_writem_rebuild = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid1-spare-writem-rebuild.out'), 'r', encoding='utf-8') as f: + mdadm_query_raid1_spare_writem_rebuild = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid1-syncing.out'), 'r', encoding='utf-8') as f: - self.mdadm_query_raid1_syncing = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid1-syncing.out'), 'r', encoding='utf-8') as f: + mdadm_query_raid1_syncing = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-container1.out'), 'r', encoding='utf-8') as f: - self.mdadm_examine_container1 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-container1.out'), 'r', encoding='utf-8') as f: + mdadm_examine_container1 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-container2-dev1.out'), 'r', encoding='utf-8') as f: - self.mdadm_examine_container2_dev1 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-container2-dev1.out'), 'r', encoding='utf-8') as f: + mdadm_examine_container2_dev1 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-container2-dev2.out'), 'r', encoding='utf-8') as f: - self.mdadm_examine_container2_dev2 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-container2-dev2.out'), 'r', encoding='utf-8') as f: + mdadm_examine_container2_dev2 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid5-homehost.out'), 'r', encoding='utf-8') as f: - self.mdadm_examine_raid5_homehost = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid5-homehost.out'), 'r', encoding='utf-8') as f: + mdadm_examine_raid5_homehost = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid5-meta09.out'), 'r', encoding='utf-8') as f: - self.mdadm_examine_raid5_meta09 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid5-meta09.out'), 'r', encoding='utf-8') as f: + mdadm_examine_raid5_meta09 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid5-ok.out'), 'r', encoding='utf-8') as f: - self.mdadm_examine_raid5_ok = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid5-ok.out'), 'r', encoding='utf-8') as f: + mdadm_examine_raid5_ok = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-container1-member.out'), 'r', encoding='utf-8') as f: - self.mdadm_query_container1_member = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-container1-member.out'), 'r', encoding='utf-8') as f: + mdadm_query_container1_member = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-container1-root.out'), 'r', encoding='utf-8') as f: - self.mdadm_query_container1_root = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-container1-root.out'), 'r', encoding='utf-8') as f: + mdadm_query_container1_root = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-container2-member.out'), 'r', encoding='utf-8') as f: - self.mdadm_query_container2_member = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-container2-member.out'), 'r', encoding='utf-8') as f: + mdadm_query_container2_member = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-container2-root.out'), 'r', encoding='utf-8') as f: - self.mdadm_query_container2_root = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-container2-root.out'), 'r', encoding='utf-8') as f: + mdadm_query_container2_root = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid5-homehost.out'), 'r', encoding='utf-8') as f: - self.mdadm_query_raid5_homehost = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid5-homehost.out'), 'r', encoding='utf-8') as f: + mdadm_query_raid5_homehost = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid5-meta09.out'), 'r', encoding='utf-8') as f: - self.mdadm_query_raid5_meta09 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid5-meta09.out'), 'r', encoding='utf-8') as f: + mdadm_query_raid5_meta09 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid5-ok.out'), 'r', encoding='utf-8') as f: - self.mdadm_query_raid5_ok = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid5-ok.out'), 'r', encoding='utf-8') as f: + mdadm_query_raid5_ok = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid0-offline.json'), 'r', encoding='utf-8') as f: - self.mdadm_examine_raid0_offline_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid0-offline.json'), 'r', encoding='utf-8') as f: + mdadm_examine_raid0_offline_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid0-ok.json'), 'r', encoding='utf-8') as f: - self.mdadm_examine_raid0_ok_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid0-ok.json'), 'r', encoding='utf-8') as f: + mdadm_examine_raid0_ok_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid1-0-90-ok.json'), 'r', encoding='utf-8') as f: - self.mdadm_examine_raid1_0_90_ok_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid1-0-90-ok.json'), 'r', encoding='utf-8') as f: + mdadm_examine_raid1_0_90_ok_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid1-checking.json'), 'r', encoding='utf-8') as f: - self.mdadm_examine_raid1_checking_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid1-checking.json'), 'r', encoding='utf-8') as f: + mdadm_examine_raid1_checking_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid1-failfast.json'), 'r', encoding='utf-8') as f: - self.mdadm_examine_raid1_failfast_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid1-failfast.json'), 'r', encoding='utf-8') as f: + mdadm_examine_raid1_failfast_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid1-faulty1.json'), 'r', encoding='utf-8') as f: - self.mdadm_examine_raid1_faulty1_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid1-faulty1.json'), 'r', encoding='utf-8') as f: + mdadm_examine_raid1_faulty1_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid1-faulty2.json'), 'r', encoding='utf-8') as f: - self.mdadm_examine_raid1_faulty2_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid1-faulty2.json'), 'r', encoding='utf-8') as f: + mdadm_examine_raid1_faulty2_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid1-moreflags.json'), 'r', encoding='utf-8') as f: - self.mdadm_examine_raid1_moreflags_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid1-moreflags.json'), 'r', encoding='utf-8') as f: + mdadm_examine_raid1_moreflags_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid1-ok.json'), 'r', encoding='utf-8') as f: - self.mdadm_examine_raid1_ok_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid1-ok.json'), 'r', encoding='utf-8') as f: + mdadm_examine_raid1_ok_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid1-replacing.json'), 'r', encoding='utf-8') as f: - self.mdadm_examine_raid1_replacing_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid1-replacing.json'), 'r', encoding='utf-8') as f: + mdadm_examine_raid1_replacing_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid1-resync.json'), 'r', encoding='utf-8') as f: - self.mdadm_examine_raid1_resync_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid1-resync.json'), 'r', encoding='utf-8') as f: + mdadm_examine_raid1_resync_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid1-spare.json'), 'r', encoding='utf-8') as f: - self.mdadm_examine_raid1_spare_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid1-spare.json'), 'r', encoding='utf-8') as f: + mdadm_examine_raid1_spare_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid1-syncing.json'), 'r', encoding='utf-8') as f: - self.mdadm_examine_raid1_syncing_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid1-syncing.json'), 'r', encoding='utf-8') as f: + mdadm_examine_raid1_syncing_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine.json'), 'r', encoding='utf-8') as f: - self.mdadm_examine_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine.json'), 'r', encoding='utf-8') as f: + mdadm_examine_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-detail.json'), 'r', encoding='utf-8') as f: - self.mdadm_query_detial_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-detail.json'), 'r', encoding='utf-8') as f: + mdadm_query_detial_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid0-ok.json'), 'r', encoding='utf-8') as f: - self.mdadm_query_raid0_ok_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid0-ok.json'), 'r', encoding='utf-8') as f: + mdadm_query_raid0_ok_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid1-failed-and-flags.json'), 'r', encoding='utf-8') as f: - self.mdadm_query_raid1_failed_and_flags_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid1-failed-and-flags.json'), 'r', encoding='utf-8') as f: + mdadm_query_raid1_failed_and_flags_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid1-faulty-and-removed.json'), 'r', encoding='utf-8') as f: - self.mdadm_query_raid1_faulty_and_removed_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid1-faulty-and-removed.json'), 'r', encoding='utf-8') as f: + mdadm_query_raid1_faulty_and_removed_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid1-faulty-with-spare.json'), 'r', encoding='utf-8') as f: - self.mdadm_query_raid1_faulty_with_spare_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid1-faulty-with-spare.json'), 'r', encoding='utf-8') as f: + mdadm_query_raid1_faulty_with_spare_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid1-faulty.json'), 'r', encoding='utf-8') as f: - self.mdadm_query_raid1_faulty_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid1-faulty.json'), 'r', encoding='utf-8') as f: + mdadm_query_raid1_faulty_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid1-ok-0-9.json'), 'r', encoding='utf-8') as f: - self.mdadm_query_raid1_ok_0_9_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid1-ok-0-9.json'), 'r', encoding='utf-8') as f: + mdadm_query_raid1_ok_0_9_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid1-ok-failfast.json'), 'r', encoding='utf-8') as f: - self.mdadm_query_raid1_ok_failfast_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid1-ok-failfast.json'), 'r', encoding='utf-8') as f: + mdadm_query_raid1_ok_failfast_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid1-ok-spare.json'), 'r', encoding='utf-8') as f: - self.mdadm_query_raid1_ok_spare_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid1-ok-spare.json'), 'r', encoding='utf-8') as f: + mdadm_query_raid1_ok_spare_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid1-ok.json'), 'r', encoding='utf-8') as f: - self.mdadm_query_raid1_ok_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid1-ok.json'), 'r', encoding='utf-8') as f: + mdadm_query_raid1_ok_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid1-rebuild-failfast.json'), 'r', encoding='utf-8') as f: - self.mdadm_query_raid1_rebuild_failfast_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid1-rebuild-failfast.json'), 'r', encoding='utf-8') as f: + mdadm_query_raid1_rebuild_failfast_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid1-spare-writem-rebuild.json'), 'r', encoding='utf-8') as f: - self.mdadm_query_raid1_spare_writem_rebuild_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid1-spare-writem-rebuild.json'), 'r', encoding='utf-8') as f: + mdadm_query_raid1_spare_writem_rebuild_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid1-syncing.json'), 'r', encoding='utf-8') as f: - self.mdadm_query_raid1_syncing_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid1-syncing.json'), 'r', encoding='utf-8') as f: + mdadm_query_raid1_syncing_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-container1.json'), 'r', encoding='utf-8') as f: - self.mdadm_examine_container1_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-container1.json'), 'r', encoding='utf-8') as f: + mdadm_examine_container1_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-container2-dev1.json'), 'r', encoding='utf-8') as f: - self.mdadm_examine_container2_dev1_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-container2-dev1.json'), 'r', encoding='utf-8') as f: + mdadm_examine_container2_dev1_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-container2-dev2.json'), 'r', encoding='utf-8') as f: - self.mdadm_examine_container2_dev2_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-container2-dev2.json'), 'r', encoding='utf-8') as f: + mdadm_examine_container2_dev2_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid5-homehost.json'), 'r', encoding='utf-8') as f: - self.mdadm_examine_raid5_homehost_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid5-homehost.json'), 'r', encoding='utf-8') as f: + mdadm_examine_raid5_homehost_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid5-meta09.json'), 'r', encoding='utf-8') as f: - self.mdadm_examine_raid5_meta09_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid5-meta09.json'), 'r', encoding='utf-8') as f: + mdadm_examine_raid5_meta09_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid5-ok.json'), 'r', encoding='utf-8') as f: - self.mdadm_examine_raid5_ok_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-examine-raid5-ok.json'), 'r', encoding='utf-8') as f: + mdadm_examine_raid5_ok_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-container1-member.json'), 'r', encoding='utf-8') as f: - self.mdadm_query_container1_member_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-container1-member.json'), 'r', encoding='utf-8') as f: + mdadm_query_container1_member_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-container1-root.json'), 'r', encoding='utf-8') as f: - self.mdadm_query_container1_root_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-container1-root.json'), 'r', encoding='utf-8') as f: + mdadm_query_container1_root_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-container2-member.json'), 'r', encoding='utf-8') as f: - self.mdadm_query_container2_member_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-container2-member.json'), 'r', encoding='utf-8') as f: + mdadm_query_container2_member_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-container2-root.json'), 'r', encoding='utf-8') as f: - self.mdadm_query_container2_root_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-container2-root.json'), 'r', encoding='utf-8') as f: + mdadm_query_container2_root_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid5-homehost.json'), 'r', encoding='utf-8') as f: - self.mdadm_query_raid5_homehost_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid5-homehost.json'), 'r', encoding='utf-8') as f: + mdadm_query_raid5_homehost_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid5-meta09.json'), 'r', encoding='utf-8') as f: - self.mdadm_query_raid5_meta09_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid5-meta09.json'), 'r', encoding='utf-8') as f: + mdadm_query_raid5_meta09_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid5-ok.json'), 'r', encoding='utf-8') as f: - self.mdadm_query_raid5_ok_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/mdadm-query-raid5-ok.json'), 'r', encoding='utf-8') as f: + mdadm_query_raid5_ok_json = json.loads(f.read()) def test_mdadm_nodata(self): diff --git a/tests/test_mount.py b/tests/test_mount.py index 6e9dad64..430da3c2 100644 --- a/tests/test_mount.py +++ b/tests/test_mount.py @@ -8,32 +8,32 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/mount.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_mount = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/mount.out'), 'r', encoding='utf-8') as f: + centos_7_7_mount = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/mount.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_mount = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/mount.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_mount = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/mount.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_mount = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/mount.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_mount = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/mount2.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_mount2 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/mount2.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_mount2 = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/mount.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_mount_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/mount.json'), 'r', encoding='utf-8') as f: + centos_7_7_mount_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/mount.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_mount_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/mount.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_mount_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/mount.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_mount_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/mount.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_mount_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/mount2.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_mount2_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/mount2.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_mount2_json = json.loads(f.read()) def test_mount_nodata(self): """ diff --git a/tests/test_mpstat.py b/tests/test_mpstat.py index 389562e9..b2e0551c 100644 --- a/tests/test_mpstat.py +++ b/tests/test_mpstat.py @@ -8,32 +8,31 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/mpstat.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_mpstat = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/mpstat.out'), 'r', encoding='utf-8') as f: + centos_7_7_mpstat = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/mpstat-A.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_mpstat_A = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/mpstat-A.out'), 'r', encoding='utf-8') as f: + centos_7_7_mpstat_A = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/mpstat-A-2-5.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_mpstat_A_2_5 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/mpstat-A-2-5.out'), 'r', encoding='utf-8') as f: + centos_7_7_mpstat_A_2_5 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/mpstat-A.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_mpstat_A = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/mpstat-A.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_mpstat_A = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/mpstat.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_mpstat_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/mpstat.json'), 'r', encoding='utf-8') as f: + centos_7_7_mpstat_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/mpstat-A.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_mpstat_A_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/mpstat-A.json'), 'r', encoding='utf-8') as f: + centos_7_7_mpstat_A_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/mpstat-A-2-5.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_mpstat_A_2_5_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/mpstat-A-2-5.json'), 'r', encoding='utf-8') as f: + centos_7_7_mpstat_A_2_5_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/mpstat-A.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_mpstat_A_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/mpstat-A.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_mpstat_A_json = json.loads(f.read()) def test_mpstat_nodata(self): diff --git a/tests/test_mpstat_s.py b/tests/test_mpstat_s.py index 15ea69ec..fde59e02 100644 --- a/tests/test_mpstat_s.py +++ b/tests/test_mpstat_s.py @@ -11,32 +11,32 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/mpstat.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_mpstat = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/mpstat.out'), 'r', encoding='utf-8') as f: + centos_7_7_mpstat = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/mpstat-A.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_mpstat_A = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/mpstat-A.out'), 'r', encoding='utf-8') as f: + centos_7_7_mpstat_A = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/mpstat-A-2-5.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_mpstat_A_2_5 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/mpstat-A-2-5.out'), 'r', encoding='utf-8') as f: + centos_7_7_mpstat_A_2_5 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/mpstat-A.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_mpstat_A = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/mpstat-A.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_mpstat_A = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/mpstat-streaming.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_mpstat_streaming_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/mpstat-streaming.json'), 'r', encoding='utf-8') as f: + centos_7_7_mpstat_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/mpstat-A-streaming.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_mpstat_A_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/mpstat-A-streaming.json'), 'r', encoding='utf-8') as f: + centos_7_7_mpstat_A_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/mpstat-A-2-5-streaming.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_mpstat_A_2_5_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/mpstat-A-2-5-streaming.json'), 'r', encoding='utf-8') as f: + centos_7_7_mpstat_A_2_5_streaming_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/mpstat-A-streaming.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_mpstat_A_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/mpstat-A-streaming.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_mpstat_A_streaming_json = json.loads(f.read()) def test_mpstat_s_nodata(self): """ diff --git a/tests/test_netstat.py b/tests/test_netstat.py index 5e1a6af6..209cfb85 100644 --- a/tests/test_netstat.py +++ b/tests/test_netstat.py @@ -8,230 +8,230 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # - # input - # + # + # input + # - # netstat - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/netstat.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_netstat = f.read() + # netstat + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/netstat.out'), 'r', encoding='utf-8') as f: + centos_7_7_netstat = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/netstat.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_netstat = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/netstat.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_netstat = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/netstat-l.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_netstat_l = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/netstat-l.out'), 'r', encoding='utf-8') as f: + centos_7_7_netstat_l = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/netstat-l.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_netstat_l = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/netstat-l.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_netstat_l = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/netstat-p.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_netstat_p = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/netstat-p.out'), 'r', encoding='utf-8') as f: + centos_7_7_netstat_p = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/netstat-p.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_netstat_p = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/netstat-p.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_netstat_p = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/netstat-sudo-lnp.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_netstat_sudo_lnp = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/netstat-sudo-lnp.out'), 'r', encoding='utf-8') as f: + centos_7_7_netstat_sudo_lnp = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/netstat-sudo-lnp.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_netstat_sudo_lnp = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/netstat-sudo-lnp.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_netstat_sudo_lnp = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/netstat-sudo-aeep.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_netstat_sudo_aeep = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/netstat-sudo-aeep.out'), 'r', encoding='utf-8') as f: + centos_7_7_netstat_sudo_aeep = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/netstat-sudo-aeep.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_netstat_sudo_aeep = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/netstat-sudo-aeep.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_netstat_sudo_aeep = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/netstat.out'), 'r', encoding='utf-8') as f: - self.fedora32_netstat = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/netstat.out'), 'r', encoding='utf-8') as f: + fedora32_netstat = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/netstat.out'), 'r', encoding='utf-8') as f: - self.osx_14_6_netstat = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/netstat.out'), 'r', encoding='utf-8') as f: + osx_14_6_netstat = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/netstat-An.out'), 'r', encoding='utf-8') as f: - self.osx_14_6_netstat_An = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/netstat-An.out'), 'r', encoding='utf-8') as f: + osx_14_6_netstat_An = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/netstat-Abn.out'), 'r', encoding='utf-8') as f: - self.osx_14_6_netstat_Abn = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/netstat-Abn.out'), 'r', encoding='utf-8') as f: + osx_14_6_netstat_Abn = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/netstat-Aa.out'), 'r', encoding='utf-8') as f: - self.freebsd12_netstat_Aa = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/netstat-Aa.out'), 'r', encoding='utf-8') as f: + freebsd12_netstat_Aa = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/netstat-an.out'), 'r', encoding='utf-8') as f: - self.freebsd12_netstat_an = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/netstat-an.out'), 'r', encoding='utf-8') as f: + freebsd12_netstat_an = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/netstat-AanP.out'), 'r', encoding='utf-8') as f: - self.freebsd12_netstat_AanP = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/netstat-AanP.out'), 'r', encoding='utf-8') as f: + freebsd12_netstat_AanP = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/netstat-AaT.out'), 'r', encoding='utf-8') as f: - self.freebsd12_netstat_AaT = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/netstat-AaT.out'), 'r', encoding='utf-8') as f: + freebsd12_netstat_AaT = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/netstat-Aax.out'), 'r', encoding='utf-8') as f: - self.freebsd12_netstat_Aax = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/netstat-Aax.out'), 'r', encoding='utf-8') as f: + freebsd12_netstat_Aax = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/netstat-aT.out'), 'r', encoding='utf-8') as f: - self.freebsd12_netstat_aT = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/netstat-aT.out'), 'r', encoding='utf-8') as f: + freebsd12_netstat_aT = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/netstat-old.out'), 'r', encoding='utf-8') as f: - self.generic_netstat_old = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/netstat-old.out'), 'r', encoding='utf-8') as f: + generic_netstat_old = f.read() - # netstat -r - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/netstat-r.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_netstat_r = f.read() + # netstat -r + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/netstat-r.out'), 'r', encoding='utf-8') as f: + centos_7_7_netstat_r = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/netstat-rne.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_netstat_rne = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/netstat-rne.out'), 'r', encoding='utf-8') as f: + centos_7_7_netstat_rne = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/netstat-rnee.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_netstat_rnee = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/netstat-rnee.out'), 'r', encoding='utf-8') as f: + centos_7_7_netstat_rnee = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/netstat-r.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_netstat_r = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/netstat-r.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_netstat_r = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/netstat-rne.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_netstat_rne = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/netstat-rne.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_netstat_rne = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/netstat-rnee.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_netstat_rnee = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/netstat-rnee.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_netstat_rnee = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/netstat-r.out'), 'r', encoding='utf-8') as f: - self.osx_14_6_netstat_r = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/netstat-r.out'), 'r', encoding='utf-8') as f: + osx_14_6_netstat_r = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/netstat-rnl.out'), 'r', encoding='utf-8') as f: - self.osx_14_6_netstat_rnl = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/netstat-rnl.out'), 'r', encoding='utf-8') as f: + osx_14_6_netstat_rnl = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/netstat-r.out'), 'r', encoding='utf-8') as f: - self.freebsd12_netstat_r = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/netstat-r.out'), 'r', encoding='utf-8') as f: + freebsd12_netstat_r = f.read() - # netstat -i - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/netstat-i.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_netstat_i = f.read() + # netstat -i + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/netstat-i.out'), 'r', encoding='utf-8') as f: + centos_7_7_netstat_i = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/netstat-i.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_netstat_i = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/netstat-i.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_netstat_i = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/netstat-i.out'), 'r', encoding='utf-8') as f: - self.osx_14_6_netstat_i = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/netstat-i.out'), 'r', encoding='utf-8') as f: + osx_14_6_netstat_i = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/netstat-i.out'), 'r', encoding='utf-8') as f: - self.freebsd12_netstat_i = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/netstat-i.out'), 'r', encoding='utf-8') as f: + freebsd12_netstat_i = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/netstat-ib.out'), 'r', encoding='utf-8') as f: - self.freebsd12_netstat_ib = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/netstat-ib.out'), 'r', encoding='utf-8') as f: + freebsd12_netstat_ib = f.read() - # - # output - # + # + # output + # - # netstat - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/netstat.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_netstat_json = json.loads(f.read()) + # netstat + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/netstat.json'), 'r', encoding='utf-8') as f: + centos_7_7_netstat_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/netstat.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_netstat_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/netstat.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_netstat_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/netstat-l.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_netstat_l_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/netstat-l.json'), 'r', encoding='utf-8') as f: + centos_7_7_netstat_l_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/netstat-l.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_netstat_l_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/netstat-l.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_netstat_l_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/netstat-p.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_netstat_p_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/netstat-p.json'), 'r', encoding='utf-8') as f: + centos_7_7_netstat_p_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/netstat-p.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_netstat_p_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/netstat-p.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_netstat_p_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/netstat-sudo-lnp.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_netstat_sudo_lnp_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/netstat-sudo-lnp.json'), 'r', encoding='utf-8') as f: + centos_7_7_netstat_sudo_lnp_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/netstat-sudo-lnp.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_netstat_sudo_lnp_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/netstat-sudo-lnp.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_netstat_sudo_lnp_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/netstat-sudo-aeep.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_netstat_sudo_aeep_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/netstat-sudo-aeep.json'), 'r', encoding='utf-8') as f: + centos_7_7_netstat_sudo_aeep_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/netstat-sudo-aeep.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_netstat_sudo_aeep_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/netstat-sudo-aeep.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_netstat_sudo_aeep_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/netstat.json'), 'r', encoding='utf-8') as f: - self.fedora32_netstat_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/netstat.json'), 'r', encoding='utf-8') as f: + fedora32_netstat_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/netstat.json'), 'r', encoding='utf-8') as f: - self.osx_14_6_netstat_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/netstat.json'), 'r', encoding='utf-8') as f: + osx_14_6_netstat_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/netstat-An.json'), 'r', encoding='utf-8') as f: - self.osx_14_6_netstat_An_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/netstat-An.json'), 'r', encoding='utf-8') as f: + osx_14_6_netstat_An_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/netstat-Abn.json'), 'r', encoding='utf-8') as f: - self.osx_14_6_netstat_Abn_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/netstat-Abn.json'), 'r', encoding='utf-8') as f: + osx_14_6_netstat_Abn_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/netstat-Aa.json'), 'r', encoding='utf-8') as f: - self.freebsd12_netstat_Aa_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/netstat-Aa.json'), 'r', encoding='utf-8') as f: + freebsd12_netstat_Aa_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/netstat-AanP.json'), 'r', encoding='utf-8') as f: - self.freebsd12_netstat_AanP_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/netstat-AanP.json'), 'r', encoding='utf-8') as f: + freebsd12_netstat_AanP_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/netstat-AaT.json'), 'r', encoding='utf-8') as f: - self.freebsd12_netstat_AaT_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/netstat-AaT.json'), 'r', encoding='utf-8') as f: + freebsd12_netstat_AaT_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/netstat-Aax.json'), 'r', encoding='utf-8') as f: - self.freebsd12_netstat_Aax_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/netstat-Aax.json'), 'r', encoding='utf-8') as f: + freebsd12_netstat_Aax_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/netstat-aT.json'), 'r', encoding='utf-8') as f: - self.freebsd12_netstat_aT_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/netstat-aT.json'), 'r', encoding='utf-8') as f: + freebsd12_netstat_aT_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/netstat-an.json'), 'r', encoding='utf-8') as f: - self.freebsd12_netstat_an_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/netstat-an.json'), 'r', encoding='utf-8') as f: + freebsd12_netstat_an_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/netstat-old.json'), 'r', encoding='utf-8') as f: - self.generic_netstat_old_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/netstat-old.json'), 'r', encoding='utf-8') as f: + generic_netstat_old_json = json.loads(f.read()) - # netsat -r - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/netstat-r.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_netstat_r_json = json.loads(f.read()) + # netsat -r + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/netstat-r.json'), 'r', encoding='utf-8') as f: + centos_7_7_netstat_r_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/netstat-rne.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_netstat_rne_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/netstat-rne.json'), 'r', encoding='utf-8') as f: + centos_7_7_netstat_rne_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/netstat-rnee.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_netstat_rnee_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/netstat-rnee.json'), 'r', encoding='utf-8') as f: + centos_7_7_netstat_rnee_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/netstat-r.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_netstat_r_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/netstat-r.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_netstat_r_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/netstat-rne.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_netstat_rne_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/netstat-rne.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_netstat_rne_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/netstat-rnee.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_netstat_rnee_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/netstat-rnee.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_netstat_rnee_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/netstat-r.json'), 'r', encoding='utf-8') as f: - self.osx_14_6_netstat_r_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/netstat-r.json'), 'r', encoding='utf-8') as f: + osx_14_6_netstat_r_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/netstat-rnl.json'), 'r', encoding='utf-8') as f: - self.osx_14_6_netstat_rnl_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/netstat-rnl.json'), 'r', encoding='utf-8') as f: + osx_14_6_netstat_rnl_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/netstat-r.json'), 'r', encoding='utf-8') as f: - self.freebsd12_netstat_r_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/netstat-r.json'), 'r', encoding='utf-8') as f: + freebsd12_netstat_r_json = json.loads(f.read()) - # netstat -i - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/netstat-i.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_netstat_i_json = json.loads(f.read()) + # netstat -i + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/netstat-i.json'), 'r', encoding='utf-8') as f: + centos_7_7_netstat_i_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/netstat-i.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_netstat_i_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/netstat-i.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_netstat_i_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/netstat-i.json'), 'r', encoding='utf-8') as f: - self.osx_14_6_netstat_i_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/netstat-i.json'), 'r', encoding='utf-8') as f: + osx_14_6_netstat_i_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/netstat-i.json'), 'r', encoding='utf-8') as f: - self.freebsd12_netstat_i_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/netstat-i.json'), 'r', encoding='utf-8') as f: + freebsd12_netstat_i_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/netstat-ib.json'), 'r', encoding='utf-8') as f: + freebsd12_netstat_ib_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/netstat-ib.json'), 'r', encoding='utf-8') as f: - self.freebsd12_netstat_ib_json = json.loads(f.read()) def test_netstat_nodata(self): """ diff --git a/tests/test_nmcli.py b/tests/test_nmcli.py index 9091564f..7f0eb4ab 100644 --- a/tests/test_nmcli.py +++ b/tests/test_nmcli.py @@ -9,90 +9,89 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/nmcli.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_nmcli = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/nmcli.out'), 'r', encoding='utf-8') as f: + centos_7_7_nmcli = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/nmcli-connection-all.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_nmcli_connection_all = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/nmcli-connection-all.out'), 'r', encoding='utf-8') as f: + centos_7_7_nmcli_connection_all = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/nmcli-connection-show-ens33.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_nmcli_connection_show_ens33 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/nmcli-connection-show-ens33.out'), 'r', encoding='utf-8') as f: + centos_7_7_nmcli_connection_show_ens33 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/nmcli-connection.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_nmcli_connection = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/nmcli-connection.out'), 'r', encoding='utf-8') as f: + centos_7_7_nmcli_connection = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/nmcli-device-all.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_nmcli_device_all = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/nmcli-device-all.out'), 'r', encoding='utf-8') as f: + centos_7_7_nmcli_device_all = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/nmcli-device-show-ens33.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_nmcli_device_show_ens33 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/nmcli-device-show-ens33.out'), 'r', encoding='utf-8') as f: + centos_7_7_nmcli_device_show_ens33 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/nmcli-device-show-lo.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_nmcli_device_show_lo = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/nmcli-device-show-lo.out'), 'r', encoding='utf-8') as f: + centos_7_7_nmcli_device_show_lo = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/nmcli-device-show.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_nmcli_device_show = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/nmcli-device-show.out'), 'r', encoding='utf-8') as f: + centos_7_7_nmcli_device_show = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/nmcli-device.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_nmcli_device = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/nmcli-device.out'), 'r', encoding='utf-8') as f: + centos_7_7_nmcli_device = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/nmcli-general-all.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_nmcli_general_all = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/nmcli-general-all.out'), 'r', encoding='utf-8') as f: + centos_7_7_nmcli_general_all = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/nmcli-general-permissions.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_nmcli_general_permissions = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/nmcli-general-permissions.out'), 'r', encoding='utf-8') as f: + centos_7_7_nmcli_general_permissions = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/nmcli-connection-show-ens33.out'), 'r', encoding='utf-8') as f: - self.fedora32_nmcli_connection_show_ens33 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/nmcli-connection-show-ens33.out'), 'r', encoding='utf-8') as f: + fedora32_nmcli_connection_show_ens33 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/nmcli-device-show-ens33.out'), 'r', encoding='utf-8') as f: - self.fedora32_nmcli_device_show_ens33 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/nmcli-device-show-ens33.out'), 'r', encoding='utf-8') as f: + fedora32_nmcli_device_show_ens33 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/nmcli-device-show.out'), 'r', encoding='utf-8') as f: - self.fedora32_nmcli_device_show = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/nmcli-device-show.out'), 'r', encoding='utf-8') as f: + fedora32_nmcli_device_show = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/nmcli-connection-all.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_nmcli_connection_all_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/nmcli-connection-all.json'), 'r', encoding='utf-8') as f: + centos_7_7_nmcli_connection_all_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/nmcli-connection-show-ens33.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_nmcli_connection_show_ens33_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/nmcli-connection-show-ens33.json'), 'r', encoding='utf-8') as f: + centos_7_7_nmcli_connection_show_ens33_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/nmcli-connection.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_nmcli_connection_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/nmcli-connection.json'), 'r', encoding='utf-8') as f: + centos_7_7_nmcli_connection_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/nmcli-device-all.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_nmcli_device_all_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/nmcli-device-all.json'), 'r', encoding='utf-8') as f: + centos_7_7_nmcli_device_all_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/nmcli-device-show-ens33.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_nmcli_device_show_ens33_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/nmcli-device-show-ens33.json'), 'r', encoding='utf-8') as f: + centos_7_7_nmcli_device_show_ens33_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/nmcli-device-show-lo.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_nmcli_device_show_lo_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/nmcli-device-show-lo.json'), 'r', encoding='utf-8') as f: + centos_7_7_nmcli_device_show_lo_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/nmcli-device-show.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_nmcli_device_show_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/nmcli-device-show.json'), 'r', encoding='utf-8') as f: + centos_7_7_nmcli_device_show_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/nmcli-device.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_nmcli_device_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/nmcli-device.json'), 'r', encoding='utf-8') as f: + centos_7_7_nmcli_device_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/nmcli-general-all.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_nmcli_general_all_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/nmcli-general-all.json'), 'r', encoding='utf-8') as f: + centos_7_7_nmcli_general_all_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/nmcli-general-permissions.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_nmcli_general_permissions_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/nmcli-general-permissions.json'), 'r', encoding='utf-8') as f: + centos_7_7_nmcli_general_permissions_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/nmcli-connection-show-ens33.json'), 'r', encoding='utf-8') as f: - self.fedora32_nmcli_connection_show_ens33_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/nmcli-connection-show-ens33.json'), 'r', encoding='utf-8') as f: + fedora32_nmcli_connection_show_ens33_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/nmcli-device-show-ens33.json'), 'r', encoding='utf-8') as f: - self.fedora32_nmcli_device_show_ens33_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/nmcli-device-show-ens33.json'), 'r', encoding='utf-8') as f: + fedora32_nmcli_device_show_ens33_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/nmcli-device-show.json'), 'r', encoding='utf-8') as f: - self.fedora32_nmcli_device_show_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/nmcli-device-show.json'), 'r', encoding='utf-8') as f: + fedora32_nmcli_device_show_json = json.loads(f.read()) diff --git a/tests/test_ntpq.py b/tests/test_ntpq.py index 23e40a9c..695721e2 100644 --- a/tests/test_ntpq.py +++ b/tests/test_ntpq.py @@ -8,44 +8,44 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ntpq-p.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_ntpq_p = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ntpq-p.out'), 'r', encoding='utf-8') as f: + centos_7_7_ntpq_p = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ntpq-p.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ntpq_p = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ntpq-p.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ntpq_p = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ntpq-pn.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_ntpq_pn = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ntpq-pn.out'), 'r', encoding='utf-8') as f: + centos_7_7_ntpq_pn = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ntpq-pn.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ntpq_pn = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ntpq-pn.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ntpq_pn = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ntpq-p2.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ntpq_p2 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ntpq-p2.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ntpq_p2 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ntpq-p.out'), 'r', encoding='utf-8') as f: - self.freebsd12_ntpq_p = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ntpq-p.out'), 'r', encoding='utf-8') as f: + freebsd12_ntpq_p = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ntpq-p.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_ntpq_p_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ntpq-p.json'), 'r', encoding='utf-8') as f: + centos_7_7_ntpq_p_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ntpq-p.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ntpq_p_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ntpq-p.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ntpq_p_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ntpq-pn.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_ntpq_pn_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ntpq-pn.json'), 'r', encoding='utf-8') as f: + centos_7_7_ntpq_pn_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ntpq-pn.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ntpq_pn_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ntpq-pn.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ntpq_pn_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ntpq-p2.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ntpq_p2_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ntpq-p2.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ntpq_p2_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ntpq-p.json'), 'r', encoding='utf-8') as f: + freebsd12_ntpq_p_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ntpq-p.json'), 'r', encoding='utf-8') as f: - self.freebsd12_ntpq_p_json = json.loads(f.read()) def test_ntpq_p_nodata(self): """ diff --git a/tests/test_passwd.py b/tests/test_passwd.py index 51cea4f9..08d01859 100644 --- a/tests/test_passwd.py +++ b/tests/test_passwd.py @@ -8,26 +8,26 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/passwd.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_passwd = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/passwd.out'), 'r', encoding='utf-8') as f: + centos_7_7_passwd = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/passwd.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_passwd = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/passwd.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_passwd = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/passwd.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_passwd = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/passwd.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_passwd = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/passwd.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_passwd_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/passwd.json'), 'r', encoding='utf-8') as f: + centos_7_7_passwd_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/passwd.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_passwd_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/passwd.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_passwd_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/passwd.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_passwd_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/passwd.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_passwd_json = json.loads(f.read()) def test_passwd_nodata(self): """ diff --git a/tests/test_pidstat.py b/tests/test_pidstat.py index 01c2e60e..7544d0f3 100644 --- a/tests/test_pidstat.py +++ b/tests/test_pidstat.py @@ -9,29 +9,28 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/pidstat.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_pidstat = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/pidstat.out'), 'r', encoding='utf-8') as f: + centos_7_7_pidstat = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/pidstat-hl.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_pidstat_hl = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/pidstat-hl.out'), 'r', encoding='utf-8') as f: + centos_7_7_pidstat_hl = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/pidstat-hdlrsuw.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_pidstat_hdlrsuw = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/pidstat-hdlrsuw.out'), 'r', encoding='utf-8') as f: + centos_7_7_pidstat_hdlrsuw = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/pidstat-hdlrsuw-2-5.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_pidstat_hdlrsuw_2_5 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/pidstat-hdlrsuw-2-5.out'), 'r', encoding='utf-8') as f: + centos_7_7_pidstat_hdlrsuw_2_5 = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/pidstat-hl.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_pidstat_hl_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/pidstat-hl.json'), 'r', encoding='utf-8') as f: + centos_7_7_pidstat_hl_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/pidstat-hdlrsuw.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_pidstat_hdlrsuw_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/pidstat-hdlrsuw.json'), 'r', encoding='utf-8') as f: + centos_7_7_pidstat_hdlrsuw_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/pidstat-hdlrsuw-2-5.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_pidstat_hdlrsuw_2_5_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/pidstat-hdlrsuw-2-5.json'), 'r', encoding='utf-8') as f: + centos_7_7_pidstat_hdlrsuw_2_5_json = json.loads(f.read()) def test_pidstat_nodata(self): diff --git a/tests/test_pidstat_s.py b/tests/test_pidstat_s.py index 9c4282d0..fce3156d 100644 --- a/tests/test_pidstat_s.py +++ b/tests/test_pidstat_s.py @@ -11,29 +11,29 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/pidstat.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_pidstat = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/pidstat.out'), 'r', encoding='utf-8') as f: + centos_7_7_pidstat = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/pidstat-hl.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_pidstat_hl = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/pidstat-hl.out'), 'r', encoding='utf-8') as f: + centos_7_7_pidstat_hl = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/pidstat-hdlrsuw.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_pidstat_hdlrsuw = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/pidstat-hdlrsuw.out'), 'r', encoding='utf-8') as f: + centos_7_7_pidstat_hdlrsuw = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/pidstat-hdlrsuw-2-5.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_pidstat_hdlrsuw_2_5 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/pidstat-hdlrsuw-2-5.out'), 'r', encoding='utf-8') as f: + centos_7_7_pidstat_hdlrsuw_2_5 = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/pidstat-hl-streaming.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_pidstat_hl_streaming_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/pidstat-hl-streaming.json'), 'r', encoding='utf-8') as f: + centos_7_7_pidstat_hl_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/pidstat-hdlrsuw-streaming.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_pidstat_hdlrsuw_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/pidstat-hdlrsuw-streaming.json'), 'r', encoding='utf-8') as f: + centos_7_7_pidstat_hdlrsuw_streaming_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/pidstat-hdlrsuw-2-5-streaming.json'), 'r', encoding='utf-8') as f: + centos_7_7_pidstat_hdlrsuw_2_5_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/pidstat-hdlrsuw-2-5-streaming.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_pidstat_hdlrsuw_2_5_streaming_json = json.loads(f.read()) def test_pidstat_s_nodata(self): """ diff --git a/tests/test_ping.py b/tests/test_ping.py index 71558cae..0e10d317 100644 --- a/tests/test_ping.py +++ b/tests/test_ping.py @@ -8,408 +8,407 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input + # input - # centos - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-ip-O.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping_ip_O = f.read() + # centos + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-ip-O.out'), 'r', encoding='utf-8') as f: + centos_7_7_ping_ip_O = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-ip-O-D.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping_ip_O_D = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-ip-O-D.out'), 'r', encoding='utf-8') as f: + centos_7_7_ping_ip_O_D = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-hostname-O.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping_hostname_O = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-hostname-O.out'), 'r', encoding='utf-8') as f: + centos_7_7_ping_hostname_O = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-hostname-O-p.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping_hostname_O_p = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-hostname-O-p.out'), 'r', encoding='utf-8') as f: + centos_7_7_ping_hostname_O_p = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-hostname-O-D-p-s.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping_hostname_O_D_p_s = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-hostname-O-D-p-s.out'), 'r', encoding='utf-8') as f: + centos_7_7_ping_hostname_O_D_p_s = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping6-ip-O-p.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping6_ip_O_p = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping6-ip-O-p.out'), 'r', encoding='utf-8') as f: + centos_7_7_ping6_ip_O_p = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping6-ip-O-p-unparsable.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping6_ip_O_p_unparsable = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping6-ip-O-p-unparsable.out'), 'r', encoding='utf-8') as f: + centos_7_7_ping6_ip_O_p_unparsable = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping6-ip-O-D-p.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping6_ip_O_D_p = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping6-ip-O-D-p.out'), 'r', encoding='utf-8') as f: + centos_7_7_ping6_ip_O_D_p = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping6-hostname-O-p.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping6_hostname_O_p = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping6-hostname-O-p.out'), 'r', encoding='utf-8') as f: + centos_7_7_ping6_hostname_O_p = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping6-hostname-O-D-p-s.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping6_hostname_O_D_p_s = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping6-hostname-O-D-p-s.out'), 'r', encoding='utf-8') as f: + centos_7_7_ping6_hostname_O_D_p_s = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-ip-dup.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping_ip_dup = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-ip-dup.out'), 'r', encoding='utf-8') as f: + centos_7_7_ping_ip_dup = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping6-ip-dup.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping6_ip_dup = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping6-ip-dup.out'), 'r', encoding='utf-8') as f: + centos_7_7_ping6_ip_dup = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-ip-O-unparsedlines.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping_ip_O_unparsedlines = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-ip-O-unparsedlines.out'), 'r', encoding='utf-8') as f: + centos_7_7_ping_ip_O_unparsedlines = f.read() - # ubuntu - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping-ip-O.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ping_ip_O = f.read() + # ubuntu + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping-ip-O.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ping_ip_O = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping-ip-O-D.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ping_ip_O_D = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping-ip-O-D.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ping_ip_O_D = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping-hostname-O.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ping_hostname_O = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping-hostname-O.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ping_hostname_O = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping-hostname-O-p.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ping_hostname_O_p = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping-hostname-O-p.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ping_hostname_O_p = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping-hostname-O-D-p-s.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ping_hostname_O_D_p_s = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping-hostname-O-D-p-s.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ping_hostname_O_D_p_s = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping6-ip-O-p.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ping6_ip_O_p = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping6-ip-O-p.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ping6_ip_O_p = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping6-ip-O-D-p.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ping6_ip_O_D_p = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping6-ip-O-D-p.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ping6_ip_O_D_p = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping6-hostname-O-p.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ping6_hostname_O_p = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping6-hostname-O-p.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ping6_hostname_O_p = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping6-hostname-O-D-p-s.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ping6_hostname_O_D_p_s = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping6-hostname-O-D-p-s.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ping6_hostname_O_D_p_s = f.read() - # fedora - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping-ip-O.out'), 'r', encoding='utf-8') as f: - self.fedora32_ping_ip_O = f.read() + # fedora + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping-ip-O.out'), 'r', encoding='utf-8') as f: + fedora32_ping_ip_O = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping-ip-O-D.out'), 'r', encoding='utf-8') as f: - self.fedora32_ping_ip_O_D = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping-ip-O-D.out'), 'r', encoding='utf-8') as f: + fedora32_ping_ip_O_D = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping-hostname-O.out'), 'r', encoding='utf-8') as f: - self.fedora32_ping_hostname_O = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping-hostname-O.out'), 'r', encoding='utf-8') as f: + fedora32_ping_hostname_O = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping-hostname-O-p.out'), 'r', encoding='utf-8') as f: - self.fedora32_ping_hostname_O_p = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping-hostname-O-p.out'), 'r', encoding='utf-8') as f: + fedora32_ping_hostname_O_p = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping-hostname-O-D-p-s.out'), 'r', encoding='utf-8') as f: - self.fedora32_ping_hostname_O_D_p_s = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping-hostname-O-D-p-s.out'), 'r', encoding='utf-8') as f: + fedora32_ping_hostname_O_D_p_s = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping6-ip-O-p.out'), 'r', encoding='utf-8') as f: - self.fedora32_ping6_ip_O_p = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping6-ip-O-p.out'), 'r', encoding='utf-8') as f: + fedora32_ping6_ip_O_p = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping6-ip-O-D-p.out'), 'r', encoding='utf-8') as f: - self.fedora32_ping6_ip_O_D_p = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping6-ip-O-D-p.out'), 'r', encoding='utf-8') as f: + fedora32_ping6_ip_O_D_p = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping6-hostname-O-p.out'), 'r', encoding='utf-8') as f: - self.fedora32_ping6_hostname_O_p = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping6-hostname-O-p.out'), 'r', encoding='utf-8') as f: + fedora32_ping6_hostname_O_p = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping6-hostname-O-D-p-s.out'), 'r', encoding='utf-8') as f: - self.fedora32_ping6_hostname_O_D_p_s = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping6-hostname-O-D-p-s.out'), 'r', encoding='utf-8') as f: + fedora32_ping6_hostname_O_D_p_s = f.read() - # freebsd - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-hostname-p.out'), 'r', encoding='utf-8') as f: - self.freebsd12_ping_hostname_p = f.read() + # freebsd + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-hostname-p.out'), 'r', encoding='utf-8') as f: + freebsd12_ping_hostname_p = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-hostname-s.out'), 'r', encoding='utf-8') as f: - self.freebsd12_ping_hostname_s = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-hostname-s.out'), 'r', encoding='utf-8') as f: + freebsd12_ping_hostname_s = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-hostname.out'), 'r', encoding='utf-8') as f: - self.freebsd12_ping_hostname = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-hostname.out'), 'r', encoding='utf-8') as f: + freebsd12_ping_hostname = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-ip-p.out'), 'r', encoding='utf-8') as f: - self.freebsd12_ping_ip_p = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-ip-p.out'), 'r', encoding='utf-8') as f: + freebsd12_ping_ip_p = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-ip-s.out'), 'r', encoding='utf-8') as f: - self.freebsd12_ping_ip_s = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-ip-s.out'), 'r', encoding='utf-8') as f: + freebsd12_ping_ip_s = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-ip.out'), 'r', encoding='utf-8') as f: - self.freebsd12_ping_ip = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-ip.out'), 'r', encoding='utf-8') as f: + freebsd12_ping_ip = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-hostname-p.out'), 'r', encoding='utf-8') as f: - self.freebsd12_ping6_hostname_p = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-hostname-p.out'), 'r', encoding='utf-8') as f: + freebsd12_ping6_hostname_p = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-hostname-s.out'), 'r', encoding='utf-8') as f: - self.freebsd12_ping6_hostname_s = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-hostname-s.out'), 'r', encoding='utf-8') as f: + freebsd12_ping6_hostname_s = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-hostname.out'), 'r', encoding='utf-8') as f: - self.freebsd12_ping6_hostname = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-hostname.out'), 'r', encoding='utf-8') as f: + freebsd12_ping6_hostname = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-ip-p.out'), 'r', encoding='utf-8') as f: - self.freebsd12_ping6_ip_p = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-ip-p.out'), 'r', encoding='utf-8') as f: + freebsd12_ping6_ip_p = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-ip-s.out'), 'r', encoding='utf-8') as f: - self.freebsd12_ping6_ip_s = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-ip-s.out'), 'r', encoding='utf-8') as f: + freebsd12_ping6_ip_s = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-ip.out'), 'r', encoding='utf-8') as f: - self.freebsd12_ping6_ip = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-ip.out'), 'r', encoding='utf-8') as f: + freebsd12_ping6_ip = f.read() - # osx - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-hostname-p.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping_hostname_p = f.read() + # osx + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-hostname-p.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping_hostname_p = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-hostname-s.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping_hostname_s = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-hostname-s.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping_hostname_s = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-hostname.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping_hostname = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-hostname.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping_hostname = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip-p.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping_ip_p = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip-p.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping_ip_p = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip-s.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping_ip_s = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip-s.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping_ip_s = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping_ip = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping_ip = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip-unreachable.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping_ip_unreachable = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip-unreachable.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping_ip_unreachable = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip-unknown-errors.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping_ip_unknown_errors = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip-unknown-errors.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping_ip_unknown_errors = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-hostname-p.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping6_hostname_p = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-hostname-p.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping6_hostname_p = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-hostname-s.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping6_hostname_s = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-hostname-s.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping6_hostname_s = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-hostname.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping6_hostname = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-hostname.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping6_hostname = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-ip-p.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping6_ip_p = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-ip-p.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping6_ip_p = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-ip-s.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping6_ip_s = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-ip-s.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping6_ip_s = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-ip.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping6_ip = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-ip.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping6_ip = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-ip-unparsable.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping6_ip_unparsable = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-ip-unparsable.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping6_ip_unparsable = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip-dup.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping_ip_dup = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip-dup.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping_ip_dup = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-ip-dup.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping6_ip_dup = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-ip-dup.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping6_ip_dup = f.read() - # raspberry pi - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/pi/ping-ip-O.out'), 'r', encoding='utf-8') as f: - self.pi_ping_ip_O = f.read() + # raspberry pi + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/pi/ping-ip-O.out'), 'r', encoding='utf-8') as f: + pi_ping_ip_O = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/pi/ping-ip-O-D.out'), 'r', encoding='utf-8') as f: - self.pi_ping_ip_O_D = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/pi/ping-ip-O-D.out'), 'r', encoding='utf-8') as f: + pi_ping_ip_O_D = f.read() - # alpine-linux - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/alpine-linux-3.13/ping-ip.out'), 'r', encoding='utf-8') as f: - self.alpine_linux_3_13_ping_ip = f.read() + # alpine-linux + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/alpine-linux-3.13/ping-ip.out'), 'r', encoding='utf-8') as f: + alpine_linux_3_13_ping_ip = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/alpine-linux-3.13/ping-hostname.out'), 'r', encoding='utf-8') as f: - self.alpine_linux_3_13_ping_hostname = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/alpine-linux-3.13/ping-hostname.out'), 'r', encoding='utf-8') as f: + alpine_linux_3_13_ping_hostname = f.read() - # output + # output - # centos - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-ip-O.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping_ip_O_json = json.loads(f.read()) + # centos + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-ip-O.json'), 'r', encoding='utf-8') as f: + centos_7_7_ping_ip_O_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-ip-O-D.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping_ip_O_D_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-ip-O-D.json'), 'r', encoding='utf-8') as f: + centos_7_7_ping_ip_O_D_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-hostname-O.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping_hostname_O_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-hostname-O.json'), 'r', encoding='utf-8') as f: + centos_7_7_ping_hostname_O_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-hostname-O-p.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping_hostname_O_p_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-hostname-O-p.json'), 'r', encoding='utf-8') as f: + centos_7_7_ping_hostname_O_p_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-hostname-O-D-p-s.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping_hostname_O_D_p_s_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-hostname-O-D-p-s.json'), 'r', encoding='utf-8') as f: + centos_7_7_ping_hostname_O_D_p_s_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping6-ip-O-p.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping6_ip_O_p_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping6-ip-O-p.json'), 'r', encoding='utf-8') as f: + centos_7_7_ping6_ip_O_p_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping6-ip-O-p-unparsable.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping6_ip_O_p_unparsable_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping6-ip-O-p-unparsable.json'), 'r', encoding='utf-8') as f: + centos_7_7_ping6_ip_O_p_unparsable_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping6-ip-O-D-p.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping6_ip_O_D_p_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping6-ip-O-D-p.json'), 'r', encoding='utf-8') as f: + centos_7_7_ping6_ip_O_D_p_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping6-hostname-O-p.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping6_hostname_O_p_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping6-hostname-O-p.json'), 'r', encoding='utf-8') as f: + centos_7_7_ping6_hostname_O_p_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping6-hostname-O-D-p-s.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping6_hostname_O_D_p_s_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping6-hostname-O-D-p-s.json'), 'r', encoding='utf-8') as f: + centos_7_7_ping6_hostname_O_D_p_s_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-ip-dup.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping_ip_dup_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-ip-dup.json'), 'r', encoding='utf-8') as f: + centos_7_7_ping_ip_dup_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping6-ip-dup.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping6_ip_dup_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping6-ip-dup.json'), 'r', encoding='utf-8') as f: + centos_7_7_ping6_ip_dup_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-ip-O-unparsedlines.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping_ip_O_unparsedlines_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-ip-O-unparsedlines.json'), 'r', encoding='utf-8') as f: + centos_7_7_ping_ip_O_unparsedlines_json = json.loads(f.read()) - # ubunutu - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping-ip-O.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ping_ip_O_json = json.loads(f.read()) + # ubunutu + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping-ip-O.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ping_ip_O_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping-ip-O-D.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ping_ip_O_D_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping-ip-O-D.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ping_ip_O_D_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping-hostname-O.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ping_hostname_O_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping-hostname-O.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ping_hostname_O_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping-hostname-O-p.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ping_hostname_O_p_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping-hostname-O-p.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ping_hostname_O_p_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping-hostname-O-D-p-s.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ping_hostname_O_D_p_s_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping-hostname-O-D-p-s.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ping_hostname_O_D_p_s_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping6-ip-O-p.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ping6_ip_O_p_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping6-ip-O-p.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ping6_ip_O_p_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping6-ip-O-D-p.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ping6_ip_O_D_p_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping6-ip-O-D-p.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ping6_ip_O_D_p_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping6-hostname-O-p.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ping6_hostname_O_p_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping6-hostname-O-p.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ping6_hostname_O_p_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping6-hostname-O-D-p-s.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ping6_hostname_O_D_p_s_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping6-hostname-O-D-p-s.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ping6_hostname_O_D_p_s_json = json.loads(f.read()) - # fedora - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping-ip-O.json'), 'r', encoding='utf-8') as f: - self.fedora32_ping_ip_O_json = json.loads(f.read()) + # fedora + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping-ip-O.json'), 'r', encoding='utf-8') as f: + fedora32_ping_ip_O_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping-ip-O-D.json'), 'r', encoding='utf-8') as f: - self.fedora32_ping_ip_O_D_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping-ip-O-D.json'), 'r', encoding='utf-8') as f: + fedora32_ping_ip_O_D_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping-hostname-O.json'), 'r', encoding='utf-8') as f: - self.fedora32_ping_hostname_O_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping-hostname-O.json'), 'r', encoding='utf-8') as f: + fedora32_ping_hostname_O_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping-hostname-O-p.json'), 'r', encoding='utf-8') as f: - self.fedora32_ping_hostname_O_p_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping-hostname-O-p.json'), 'r', encoding='utf-8') as f: + fedora32_ping_hostname_O_p_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping-hostname-O-D-p-s.json'), 'r', encoding='utf-8') as f: - self.fedora32_ping_hostname_O_D_p_s_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping-hostname-O-D-p-s.json'), 'r', encoding='utf-8') as f: + fedora32_ping_hostname_O_D_p_s_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping6-ip-O-p.json'), 'r', encoding='utf-8') as f: - self.fedora32_ping6_ip_O_p_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping6-ip-O-p.json'), 'r', encoding='utf-8') as f: + fedora32_ping6_ip_O_p_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping6-ip-O-D-p.json'), 'r', encoding='utf-8') as f: - self.fedora32_ping6_ip_O_D_p_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping6-ip-O-D-p.json'), 'r', encoding='utf-8') as f: + fedora32_ping6_ip_O_D_p_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping6-hostname-O-p.json'), 'r', encoding='utf-8') as f: - self.fedora32_ping6_hostname_O_p_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping6-hostname-O-p.json'), 'r', encoding='utf-8') as f: + fedora32_ping6_hostname_O_p_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping6-hostname-O-D-p-s.json'), 'r', encoding='utf-8') as f: - self.fedora32_ping6_hostname_O_D_p_s_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping6-hostname-O-D-p-s.json'), 'r', encoding='utf-8') as f: + fedora32_ping6_hostname_O_D_p_s_json = json.loads(f.read()) - # freebsd - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-hostname-p.json'), 'r', encoding='utf-8') as f: - self.freebsd12_ping_hostname_p_json = json.loads(f.read()) + # freebsd + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-hostname-p.json'), 'r', encoding='utf-8') as f: + freebsd12_ping_hostname_p_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-hostname-s.json'), 'r', encoding='utf-8') as f: - self.freebsd12_ping_hostname_s_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-hostname-s.json'), 'r', encoding='utf-8') as f: + freebsd12_ping_hostname_s_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-hostname.json'), 'r', encoding='utf-8') as f: - self.freebsd12_ping_hostname_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-hostname.json'), 'r', encoding='utf-8') as f: + freebsd12_ping_hostname_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-ip-p.json'), 'r', encoding='utf-8') as f: - self.freebsd12_ping_ip_p_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-ip-p.json'), 'r', encoding='utf-8') as f: + freebsd12_ping_ip_p_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-ip-s.json'), 'r', encoding='utf-8') as f: - self.freebsd12_ping_ip_s_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-ip-s.json'), 'r', encoding='utf-8') as f: + freebsd12_ping_ip_s_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-ip.json'), 'r', encoding='utf-8') as f: - self.freebsd12_ping_ip_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-ip.json'), 'r', encoding='utf-8') as f: + freebsd12_ping_ip_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-hostname-p.json'), 'r', encoding='utf-8') as f: - self.freebsd12_ping6_hostname_p_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-hostname-p.json'), 'r', encoding='utf-8') as f: + freebsd12_ping6_hostname_p_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-hostname-s.json'), 'r', encoding='utf-8') as f: - self.freebsd12_ping6_hostname_s_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-hostname-s.json'), 'r', encoding='utf-8') as f: + freebsd12_ping6_hostname_s_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-hostname.json'), 'r', encoding='utf-8') as f: - self.freebsd12_ping6_hostname_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-hostname.json'), 'r', encoding='utf-8') as f: + freebsd12_ping6_hostname_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-ip-p.json'), 'r', encoding='utf-8') as f: - self.freebsd12_ping6_ip_p_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-ip-p.json'), 'r', encoding='utf-8') as f: + freebsd12_ping6_ip_p_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-ip-s.json'), 'r', encoding='utf-8') as f: - self.freebsd12_ping6_ip_s_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-ip-s.json'), 'r', encoding='utf-8') as f: + freebsd12_ping6_ip_s_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-ip.json'), 'r', encoding='utf-8') as f: - self.freebsd12_ping6_ip_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-ip.json'), 'r', encoding='utf-8') as f: + freebsd12_ping6_ip_json = json.loads(f.read()) - # osx: - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-hostname-p.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping_hostname_p_json = json.loads(f.read()) + # osx: + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-hostname-p.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping_hostname_p_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-hostname-s.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping_hostname_s_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-hostname-s.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping_hostname_s_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-hostname.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping_hostname_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-hostname.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping_hostname_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip-p.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping_ip_p_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip-p.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping_ip_p_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip-s.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping_ip_s_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip-s.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping_ip_s_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping_ip_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping_ip_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip-unreachable.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping_ip_unreachable_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip-unreachable.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping_ip_unreachable_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip-unknown-errors.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping_ip_unknown_errors_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip-unknown-errors.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping_ip_unknown_errors_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-hostname-p.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping6_hostname_p_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-hostname-p.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping6_hostname_p_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-hostname-s.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping6_hostname_s_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-hostname-s.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping6_hostname_s_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-hostname.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping6_hostname_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-hostname.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping6_hostname_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-ip-p.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping6_ip_p_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-ip-p.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping6_ip_p_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-ip-s.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping6_ip_s_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-ip-s.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping6_ip_s_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-ip.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping6_ip_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-ip.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping6_ip_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-ip-unparsable.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping6_ip_unparsable_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-ip-unparsable.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping6_ip_unparsable_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip-dup.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping_ip_dup_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip-dup.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping_ip_dup_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-ip-dup.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping6_ip_dup_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-ip-dup.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping6_ip_dup_json = json.loads(f.read()) - # raspberry pi - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/pi/ping-ip-O.json'), 'r', encoding='utf-8') as f: - self.pi_ping_ip_O_json = json.loads(f.read()) + # raspberry pi + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/pi/ping-ip-O.json'), 'r', encoding='utf-8') as f: + pi_ping_ip_O_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/pi/ping-ip-O-D.json'), 'r', encoding='utf-8') as f: - self.pi_ping_ip_O_D_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/pi/ping-ip-O-D.json'), 'r', encoding='utf-8') as f: + pi_ping_ip_O_D_json = json.loads(f.read()) - # alpine-linux - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/alpine-linux-3.13/ping-ip.json'), 'r', encoding='utf-8') as f: - self.alpine_linux_3_13_ping_ip_json = json.loads(f.read()) + # alpine-linux + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/alpine-linux-3.13/ping-ip.json'), 'r', encoding='utf-8') as f: + alpine_linux_3_13_ping_ip_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/alpine-linux-3.13/ping-hostname.json'), 'r', encoding='utf-8') as f: - self.alpine_linux_3_13_ping_hostname_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/alpine-linux-3.13/ping-hostname.json'), 'r', encoding='utf-8') as f: + alpine_linux_3_13_ping_hostname_json = json.loads(f.read()) def test_ping_nodata(self): diff --git a/tests/test_ping_s.py b/tests/test_ping_s.py index c1eaa63b..55377fea 100644 --- a/tests/test_ping_s.py +++ b/tests/test_ping_s.py @@ -13,385 +13,385 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input + # input - # centos - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-ip-O.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping_ip_O = f.read() + # centos + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-ip-O.out'), 'r', encoding='utf-8') as f: + centos_7_7_ping_ip_O = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-ip-O-D.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping_ip_O_D = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-ip-O-D.out'), 'r', encoding='utf-8') as f: + centos_7_7_ping_ip_O_D = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-hostname-O.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping_hostname_O = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-hostname-O.out'), 'r', encoding='utf-8') as f: + centos_7_7_ping_hostname_O = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-hostname-O-p.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping_hostname_O_p = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-hostname-O-p.out'), 'r', encoding='utf-8') as f: + centos_7_7_ping_hostname_O_p = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-hostname-O-D-p-s.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping_hostname_O_D_p_s = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-hostname-O-D-p-s.out'), 'r', encoding='utf-8') as f: + centos_7_7_ping_hostname_O_D_p_s = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping6-ip-O-p.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping6_ip_O_p = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping6-ip-O-p.out'), 'r', encoding='utf-8') as f: + centos_7_7_ping6_ip_O_p = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping6-ip-O-p-unparsable.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping6_ip_O_p_unparsable = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping6-ip-O-p-unparsable.out'), 'r', encoding='utf-8') as f: + centos_7_7_ping6_ip_O_p_unparsable = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping6-ip-O-D-p.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping6_ip_O_D_p = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping6-ip-O-D-p.out'), 'r', encoding='utf-8') as f: + centos_7_7_ping6_ip_O_D_p = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping6-hostname-O-p.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping6_hostname_O_p = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping6-hostname-O-p.out'), 'r', encoding='utf-8') as f: + centos_7_7_ping6_hostname_O_p = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping6-hostname-O-D-p-s.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping6_hostname_O_D_p_s = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping6-hostname-O-D-p-s.out'), 'r', encoding='utf-8') as f: + centos_7_7_ping6_hostname_O_D_p_s = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-ip-dup.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping_ip_dup = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-ip-dup.out'), 'r', encoding='utf-8') as f: + centos_7_7_ping_ip_dup = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping6-ip-dup.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping6_ip_dup = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping6-ip-dup.out'), 'r', encoding='utf-8') as f: + centos_7_7_ping6_ip_dup = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-ip-O-unparsedlines.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping_ip_O_unparsedlines = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-ip-O-unparsedlines.out'), 'r', encoding='utf-8') as f: + centos_7_7_ping_ip_O_unparsedlines = f.read() - # ubuntu - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping-ip-O.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ping_ip_O = f.read() + # ubuntu + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping-ip-O.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ping_ip_O = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping-ip-O-D.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ping_ip_O_D = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping-ip-O-D.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ping_ip_O_D = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping-hostname-O.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ping_hostname_O = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping-hostname-O.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ping_hostname_O = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping-hostname-O-p.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ping_hostname_O_p = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping-hostname-O-p.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ping_hostname_O_p = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping-hostname-O-D-p-s.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ping_hostname_O_D_p_s = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping-hostname-O-D-p-s.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ping_hostname_O_D_p_s = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping6-ip-O-p.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ping6_ip_O_p = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping6-ip-O-p.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ping6_ip_O_p = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping6-ip-O-D-p.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ping6_ip_O_D_p = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping6-ip-O-D-p.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ping6_ip_O_D_p = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping6-hostname-O-p.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ping6_hostname_O_p = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping6-hostname-O-p.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ping6_hostname_O_p = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping6-hostname-O-D-p-s.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ping6_hostname_O_D_p_s = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping6-hostname-O-D-p-s.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ping6_hostname_O_D_p_s = f.read() - # fedora - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping-ip-O.out'), 'r', encoding='utf-8') as f: - self.fedora32_ping_ip_O = f.read() + # fedora + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping-ip-O.out'), 'r', encoding='utf-8') as f: + fedora32_ping_ip_O = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping-ip-O-D.out'), 'r', encoding='utf-8') as f: - self.fedora32_ping_ip_O_D = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping-ip-O-D.out'), 'r', encoding='utf-8') as f: + fedora32_ping_ip_O_D = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping-hostname-O.out'), 'r', encoding='utf-8') as f: - self.fedora32_ping_hostname_O = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping-hostname-O.out'), 'r', encoding='utf-8') as f: + fedora32_ping_hostname_O = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping-hostname-O-p.out'), 'r', encoding='utf-8') as f: - self.fedora32_ping_hostname_O_p = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping-hostname-O-p.out'), 'r', encoding='utf-8') as f: + fedora32_ping_hostname_O_p = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping-hostname-O-D-p-s.out'), 'r', encoding='utf-8') as f: - self.fedora32_ping_hostname_O_D_p_s = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping-hostname-O-D-p-s.out'), 'r', encoding='utf-8') as f: + fedora32_ping_hostname_O_D_p_s = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping6-ip-O-p.out'), 'r', encoding='utf-8') as f: - self.fedora32_ping6_ip_O_p = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping6-ip-O-p.out'), 'r', encoding='utf-8') as f: + fedora32_ping6_ip_O_p = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping6-ip-O-D-p.out'), 'r', encoding='utf-8') as f: - self.fedora32_ping6_ip_O_D_p = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping6-ip-O-D-p.out'), 'r', encoding='utf-8') as f: + fedora32_ping6_ip_O_D_p = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping6-hostname-O-p.out'), 'r', encoding='utf-8') as f: - self.fedora32_ping6_hostname_O_p = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping6-hostname-O-p.out'), 'r', encoding='utf-8') as f: + fedora32_ping6_hostname_O_p = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping6-hostname-O-D-p-s.out'), 'r', encoding='utf-8') as f: - self.fedora32_ping6_hostname_O_D_p_s = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping6-hostname-O-D-p-s.out'), 'r', encoding='utf-8') as f: + fedora32_ping6_hostname_O_D_p_s = f.read() - # freebsd - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-hostname-p.out'), 'r', encoding='utf-8') as f: - self.freebsd12_ping_hostname_p = f.read() + # freebsd + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-hostname-p.out'), 'r', encoding='utf-8') as f: + freebsd12_ping_hostname_p = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-hostname-s.out'), 'r', encoding='utf-8') as f: - self.freebsd12_ping_hostname_s = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-hostname-s.out'), 'r', encoding='utf-8') as f: + freebsd12_ping_hostname_s = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-hostname.out'), 'r', encoding='utf-8') as f: - self.freebsd12_ping_hostname = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-hostname.out'), 'r', encoding='utf-8') as f: + freebsd12_ping_hostname = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-ip-p.out'), 'r', encoding='utf-8') as f: - self.freebsd12_ping_ip_p = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-ip-p.out'), 'r', encoding='utf-8') as f: + freebsd12_ping_ip_p = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-ip-s.out'), 'r', encoding='utf-8') as f: - self.freebsd12_ping_ip_s = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-ip-s.out'), 'r', encoding='utf-8') as f: + freebsd12_ping_ip_s = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-ip.out'), 'r', encoding='utf-8') as f: - self.freebsd12_ping_ip = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-ip.out'), 'r', encoding='utf-8') as f: + freebsd12_ping_ip = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-hostname-p.out'), 'r', encoding='utf-8') as f: - self.freebsd12_ping6_hostname_p = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-hostname-p.out'), 'r', encoding='utf-8') as f: + freebsd12_ping6_hostname_p = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-hostname-s.out'), 'r', encoding='utf-8') as f: - self.freebsd12_ping6_hostname_s = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-hostname-s.out'), 'r', encoding='utf-8') as f: + freebsd12_ping6_hostname_s = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-hostname.out'), 'r', encoding='utf-8') as f: - self.freebsd12_ping6_hostname = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-hostname.out'), 'r', encoding='utf-8') as f: + freebsd12_ping6_hostname = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-ip-p.out'), 'r', encoding='utf-8') as f: - self.freebsd12_ping6_ip_p = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-ip-p.out'), 'r', encoding='utf-8') as f: + freebsd12_ping6_ip_p = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-ip-s.out'), 'r', encoding='utf-8') as f: - self.freebsd12_ping6_ip_s = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-ip-s.out'), 'r', encoding='utf-8') as f: + freebsd12_ping6_ip_s = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-ip.out'), 'r', encoding='utf-8') as f: - self.freebsd12_ping6_ip = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-ip.out'), 'r', encoding='utf-8') as f: + freebsd12_ping6_ip = f.read() - # osx - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-hostname-p.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping_hostname_p = f.read() + # osx + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-hostname-p.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping_hostname_p = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-hostname-s.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping_hostname_s = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-hostname-s.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping_hostname_s = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-hostname.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping_hostname = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-hostname.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping_hostname = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip-p.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping_ip_p = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip-p.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping_ip_p = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip-s.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping_ip_s = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip-s.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping_ip_s = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping_ip = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping_ip = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip-unreachable.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping_ip_unreachable = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip-unreachable.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping_ip_unreachable = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip-unknown-errors.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping_ip_unknown_errors = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip-unknown-errors.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping_ip_unknown_errors = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-hostname-p.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping6_hostname_p = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-hostname-p.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping6_hostname_p = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-hostname-s.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping6_hostname_s = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-hostname-s.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping6_hostname_s = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-hostname.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping6_hostname = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-hostname.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping6_hostname = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-ip-p.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping6_ip_p = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-ip-p.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping6_ip_p = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-ip-s.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping6_ip_s = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-ip-s.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping6_ip_s = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-ip.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping6_ip = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-ip.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping6_ip = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-ip-unparsable.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping6_ip_unparsable = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-ip-unparsable.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping6_ip_unparsable = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip-dup.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping_ip_dup = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip-dup.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping_ip_dup = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-ip-dup.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping6_ip_dup = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-ip-dup.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping6_ip_dup = f.read() - # raspberry pi - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/pi/ping-ip-O.out'), 'r', encoding='utf-8') as f: - self.pi_ping_ip_O = f.read() + # raspberry pi + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/pi/ping-ip-O.out'), 'r', encoding='utf-8') as f: + pi_ping_ip_O = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/pi/ping-ip-O-D.out'), 'r', encoding='utf-8') as f: - self.pi_ping_ip_O_D = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/pi/ping-ip-O-D.out'), 'r', encoding='utf-8') as f: + pi_ping_ip_O_D = f.read() - # output + # output - # centos - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-ip-O-streaming.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping_ip_O_streaming_json = json.loads(f.read()) + # centos + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-ip-O-streaming.json'), 'r', encoding='utf-8') as f: + centos_7_7_ping_ip_O_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-ip-O-streaming-ignore-exceptions.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping_ip_O_streaming_ignore_exceptions_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-ip-O-streaming-ignore-exceptions.json'), 'r', encoding='utf-8') as f: + centos_7_7_ping_ip_O_streaming_ignore_exceptions_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-ip-O-D-streaming.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping_ip_O_D_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-ip-O-D-streaming.json'), 'r', encoding='utf-8') as f: + centos_7_7_ping_ip_O_D_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-hostname-O-streaming.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping_hostname_O_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-hostname-O-streaming.json'), 'r', encoding='utf-8') as f: + centos_7_7_ping_hostname_O_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-hostname-O-p-streaming.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping_hostname_O_p_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-hostname-O-p-streaming.json'), 'r', encoding='utf-8') as f: + centos_7_7_ping_hostname_O_p_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-hostname-O-D-p-s-streaming.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping_hostname_O_D_p_s_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-hostname-O-D-p-s-streaming.json'), 'r', encoding='utf-8') as f: + centos_7_7_ping_hostname_O_D_p_s_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping6-ip-O-p-streaming.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping6_ip_O_p_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping6-ip-O-p-streaming.json'), 'r', encoding='utf-8') as f: + centos_7_7_ping6_ip_O_p_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping6-ip-O-D-p-streaming.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping6_ip_O_D_p_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping6-ip-O-D-p-streaming.json'), 'r', encoding='utf-8') as f: + centos_7_7_ping6_ip_O_D_p_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping6-hostname-O-p-streaming.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping6_hostname_O_p_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping6-hostname-O-p-streaming.json'), 'r', encoding='utf-8') as f: + centos_7_7_ping6_hostname_O_p_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping6-hostname-O-D-p-s-streaming.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping6_hostname_O_D_p_s_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping6-hostname-O-D-p-s-streaming.json'), 'r', encoding='utf-8') as f: + centos_7_7_ping6_hostname_O_D_p_s_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-ip-dup-streaming.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping_ip_dup_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-ip-dup-streaming.json'), 'r', encoding='utf-8') as f: + centos_7_7_ping_ip_dup_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping6-ip-dup-streaming.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_ping6_ip_dup_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping6-ip-dup-streaming.json'), 'r', encoding='utf-8') as f: + centos_7_7_ping6_ip_dup_streaming_json = json.loads(f.read()) - # ubunutu - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping-ip-O-streaming.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ping_ip_O_streaming_json = json.loads(f.read()) + # ubunutu + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping-ip-O-streaming.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ping_ip_O_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping-ip-O-D-streaming.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ping_ip_O_D_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping-ip-O-D-streaming.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ping_ip_O_D_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping-hostname-O-streaming.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ping_hostname_O_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping-hostname-O-streaming.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ping_hostname_O_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping-hostname-O-p-streaming.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ping_hostname_O_p_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping-hostname-O-p-streaming.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ping_hostname_O_p_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping-hostname-O-D-p-s-streaming.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ping_hostname_O_D_p_s_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping-hostname-O-D-p-s-streaming.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ping_hostname_O_D_p_s_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping6-ip-O-p-streaming.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ping6_ip_O_p_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping6-ip-O-p-streaming.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ping6_ip_O_p_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping6-ip-O-D-p-streaming.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ping6_ip_O_D_p_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping6-ip-O-D-p-streaming.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ping6_ip_O_D_p_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping6-hostname-O-p-streaming.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ping6_hostname_O_p_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping6-hostname-O-p-streaming.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ping6_hostname_O_p_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping6-hostname-O-D-p-s-streaming.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ping6_hostname_O_D_p_s_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ping6-hostname-O-D-p-s-streaming.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ping6_hostname_O_D_p_s_streaming_json = json.loads(f.read()) - # fedora - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping-ip-O-streaming.json'), 'r', encoding='utf-8') as f: - self.fedora32_ping_ip_O_streaming_json = json.loads(f.read()) + # fedora + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping-ip-O-streaming.json'), 'r', encoding='utf-8') as f: + fedora32_ping_ip_O_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping-ip-O-D-streaming.json'), 'r', encoding='utf-8') as f: - self.fedora32_ping_ip_O_D_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping-ip-O-D-streaming.json'), 'r', encoding='utf-8') as f: + fedora32_ping_ip_O_D_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping-hostname-O-streaming.json'), 'r', encoding='utf-8') as f: - self.fedora32_ping_hostname_O_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping-hostname-O-streaming.json'), 'r', encoding='utf-8') as f: + fedora32_ping_hostname_O_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping-hostname-O-p-streaming.json'), 'r', encoding='utf-8') as f: - self.fedora32_ping_hostname_O_p_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping-hostname-O-p-streaming.json'), 'r', encoding='utf-8') as f: + fedora32_ping_hostname_O_p_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping-hostname-O-D-p-s-streaming.json'), 'r', encoding='utf-8') as f: - self.fedora32_ping_hostname_O_D_p_s_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping-hostname-O-D-p-s-streaming.json'), 'r', encoding='utf-8') as f: + fedora32_ping_hostname_O_D_p_s_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping6-ip-O-p-streaming.json'), 'r', encoding='utf-8') as f: - self.fedora32_ping6_ip_O_p_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping6-ip-O-p-streaming.json'), 'r', encoding='utf-8') as f: + fedora32_ping6_ip_O_p_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping6-ip-O-D-p-streaming.json'), 'r', encoding='utf-8') as f: - self.fedora32_ping6_ip_O_D_p_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping6-ip-O-D-p-streaming.json'), 'r', encoding='utf-8') as f: + fedora32_ping6_ip_O_D_p_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping6-hostname-O-p-streaming.json'), 'r', encoding='utf-8') as f: - self.fedora32_ping6_hostname_O_p_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping6-hostname-O-p-streaming.json'), 'r', encoding='utf-8') as f: + fedora32_ping6_hostname_O_p_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping6-hostname-O-D-p-s-streaming.json'), 'r', encoding='utf-8') as f: - self.fedora32_ping6_hostname_O_D_p_s_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/ping6-hostname-O-D-p-s-streaming.json'), 'r', encoding='utf-8') as f: + fedora32_ping6_hostname_O_D_p_s_streaming_json = json.loads(f.read()) - # freebsd - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-hostname-p-streaming.json'), 'r', encoding='utf-8') as f: - self.freebsd12_ping_hostname_p_streaming_json = json.loads(f.read()) + # freebsd + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-hostname-p-streaming.json'), 'r', encoding='utf-8') as f: + freebsd12_ping_hostname_p_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-hostname-s-streaming.json'), 'r', encoding='utf-8') as f: - self.freebsd12_ping_hostname_s_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-hostname-s-streaming.json'), 'r', encoding='utf-8') as f: + freebsd12_ping_hostname_s_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-hostname-streaming.json'), 'r', encoding='utf-8') as f: - self.freebsd12_ping_hostname_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-hostname-streaming.json'), 'r', encoding='utf-8') as f: + freebsd12_ping_hostname_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-ip-p-streaming.json'), 'r', encoding='utf-8') as f: - self.freebsd12_ping_ip_p_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-ip-p-streaming.json'), 'r', encoding='utf-8') as f: + freebsd12_ping_ip_p_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-ip-s-streaming.json'), 'r', encoding='utf-8') as f: - self.freebsd12_ping_ip_s_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-ip-s-streaming.json'), 'r', encoding='utf-8') as f: + freebsd12_ping_ip_s_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-ip-streaming.json'), 'r', encoding='utf-8') as f: - self.freebsd12_ping_ip_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping-ip-streaming.json'), 'r', encoding='utf-8') as f: + freebsd12_ping_ip_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-hostname-p-streaming.json'), 'r', encoding='utf-8') as f: - self.freebsd12_ping6_hostname_p_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-hostname-p-streaming.json'), 'r', encoding='utf-8') as f: + freebsd12_ping6_hostname_p_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-hostname-s-streaming.json'), 'r', encoding='utf-8') as f: - self.freebsd12_ping6_hostname_s_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-hostname-s-streaming.json'), 'r', encoding='utf-8') as f: + freebsd12_ping6_hostname_s_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-hostname-streaming.json'), 'r', encoding='utf-8') as f: - self.freebsd12_ping6_hostname_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-hostname-streaming.json'), 'r', encoding='utf-8') as f: + freebsd12_ping6_hostname_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-ip-p-streaming.json'), 'r', encoding='utf-8') as f: - self.freebsd12_ping6_ip_p_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-ip-p-streaming.json'), 'r', encoding='utf-8') as f: + freebsd12_ping6_ip_p_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-ip-s-streaming.json'), 'r', encoding='utf-8') as f: - self.freebsd12_ping6_ip_s_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-ip-s-streaming.json'), 'r', encoding='utf-8') as f: + freebsd12_ping6_ip_s_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-ip-streaming.json'), 'r', encoding='utf-8') as f: - self.freebsd12_ping6_ip_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/ping6-ip-streaming.json'), 'r', encoding='utf-8') as f: + freebsd12_ping6_ip_streaming_json = json.loads(f.read()) - # osx: - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-hostname-p-streaming.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping_hostname_p_streaming_json = json.loads(f.read()) + # osx: + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-hostname-p-streaming.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping_hostname_p_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-hostname-s-streaming.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping_hostname_s_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-hostname-s-streaming.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping_hostname_s_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-hostname-streaming.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping_hostname_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-hostname-streaming.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping_hostname_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip-p-streaming.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping_ip_p_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip-p-streaming.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping_ip_p_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip-s-streaming.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping_ip_s_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip-s-streaming.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping_ip_s_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip-streaming.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping_ip_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip-streaming.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping_ip_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip-unreachable-streaming.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping_ip_unreachable_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip-unreachable-streaming.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping_ip_unreachable_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-hostname-p-streaming.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping6_hostname_p_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-hostname-p-streaming.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping6_hostname_p_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-hostname-s-streaming.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping6_hostname_s_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-hostname-s-streaming.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping6_hostname_s_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-hostname-streaming.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping6_hostname_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-hostname-streaming.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping6_hostname_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-ip-p-streaming.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping6_ip_p_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-ip-p-streaming.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping6_ip_p_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-ip-s-streaming.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping6_ip_s_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-ip-s-streaming.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping6_ip_s_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-ip-streaming.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping6_ip_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-ip-streaming.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping6_ip_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip-dup-streaming.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping_ip_dup_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping-ip-dup-streaming.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping_ip_dup_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-ip-dup-streaming.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ping6_ip_dup_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ping6-ip-dup-streaming.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ping6_ip_dup_streaming_json = json.loads(f.read()) - # raspberry pi - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/pi/ping-ip-O-streaming.json'), 'r', encoding='utf-8') as f: - self.pi_ping_ip_O_streaming_json = json.loads(f.read()) + # raspberry pi + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/pi/ping-ip-O-streaming.json'), 'r', encoding='utf-8') as f: + pi_ping_ip_O_streaming_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/pi/ping-ip-O-D-streaming.json'), 'r', encoding='utf-8') as f: + pi_ping_ip_O_D_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/pi/ping-ip-O-D-streaming.json'), 'r', encoding='utf-8') as f: - self.pi_ping_ip_O_D_streaming_json = json.loads(f.read()) def test_ping_s_nodata(self): """ diff --git a/tests/test_pip_list.py b/tests/test_pip_list.py index f38ba9d3..43633683 100644 --- a/tests/test_pip_list.py +++ b/tests/test_pip_list.py @@ -8,38 +8,38 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/pip-list.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_pip_list = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/pip-list.out'), 'r', encoding='utf-8') as f: + centos_7_7_pip_list = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/pip-list.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_pip_list = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/pip-list.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_pip_list = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/pip-list-legacy.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_pip_list_legacy = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/pip-list-legacy.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_pip_list_legacy = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/pip-list.out'), 'r', encoding='utf-8') as f: - self.osx_10_11_6_pip_list = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/pip-list.out'), 'r', encoding='utf-8') as f: + osx_10_11_6_pip_list = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/pip-list.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_pip_list = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/pip-list.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_pip_list = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/pip-list.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_pip_list_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/pip-list.json'), 'r', encoding='utf-8') as f: + centos_7_7_pip_list_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/pip-list.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_pip_list_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/pip-list.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_pip_list_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/pip-list-legacy.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_pip_list_legacy_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/pip-list-legacy.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_pip_list_legacy_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/pip-list.json'), 'r', encoding='utf-8') as f: - self.osx_10_11_6_pip_list_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/pip-list.json'), 'r', encoding='utf-8') as f: + osx_10_11_6_pip_list_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/pip-list.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_pip_list_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/pip-list.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_pip_list_json = json.loads(f.read()) def test_pip_list_nodata(self): """ diff --git a/tests/test_pip_show.py b/tests/test_pip_show.py index 1923980b..9e69976e 100644 --- a/tests/test_pip_show.py +++ b/tests/test_pip_show.py @@ -8,38 +8,38 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/pip-show.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_pip_show = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/pip-show.out'), 'r', encoding='utf-8') as f: + centos_7_7_pip_show = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/pip-show.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_pip_show = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/pip-show.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_pip_show = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/pip-show.out'), 'r', encoding='utf-8') as f: - self.osx_10_11_6_pip_show = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/pip-show.out'), 'r', encoding='utf-8') as f: + osx_10_11_6_pip_show = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/pip-show.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_pip_show = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/pip-show.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_pip_show = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/pip-show-multiline-license.out'), 'r', encoding='utf-8') as f: - self.generic_pip_show_multiline_license = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/pip-show-multiline-license.out'), 'r', encoding='utf-8') as f: + generic_pip_show_multiline_license = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/pip-show.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_pip_show_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/pip-show.json'), 'r', encoding='utf-8') as f: + centos_7_7_pip_show_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/pip-show.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_pip_show_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/pip-show.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_pip_show_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/pip-show.json'), 'r', encoding='utf-8') as f: - self.osx_10_11_6_pip_show_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/pip-show.json'), 'r', encoding='utf-8') as f: + osx_10_11_6_pip_show_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/pip-show.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_pip_show_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/pip-show.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_pip_show_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/pip-show-multiline-license.json'), 'r', encoding='utf-8') as f: + generic_pip_show_multiline_license_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/pip-show-multiline-license.json'), 'r', encoding='utf-8') as f: - self.generic_pip_show_multiline_license_json = json.loads(f.read()) def test_pip_show_nodata(self): """ diff --git a/tests/test_plist.py b/tests/test_plist.py index 432be1d0..ce38856e 100644 --- a/tests/test_plist.py +++ b/tests/test_plist.py @@ -8,32 +8,31 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/plist-garageband-info.plist'), 'rb') as f: - self.generic_garageband = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/plist-garageband-info.plist'), 'rb') as f: + generic_garageband = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/plist-safari-info.plist'), 'r', encoding='utf-8') as f: - self.generic_safari = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/plist-safari-info.plist'), 'r', encoding='utf-8') as f: + generic_safari = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/plist-alltypes.plist'), 'r', encoding='utf-8') as f: - self.generic_alltypes = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/plist-alltypes.plist'), 'r', encoding='utf-8') as f: + generic_alltypes = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/plist-alltypes-bin.plist'), 'rb') as f: - self.generic_alltypes_bin = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/plist-alltypes-bin.plist'), 'rb') as f: + generic_alltypes_bin = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/plist-garageband-info.json'), 'r', encoding='utf-8') as f: - self.generic_garageband_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/plist-garageband-info.json'), 'r', encoding='utf-8') as f: + generic_garageband_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/plist-safari-info.json'), 'r', encoding='utf-8') as f: - self.generic_safari_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/plist-safari-info.json'), 'r', encoding='utf-8') as f: + generic_safari_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/plist-alltypes.json'), 'r', encoding='utf-8') as f: - self.generic_alltypes_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/plist-alltypes.json'), 'r', encoding='utf-8') as f: + generic_alltypes_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/plist-alltypes-bin.json'), 'r', encoding='utf-8') as f: - self.generic_alltypes_bin_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/plist-alltypes-bin.json'), 'r', encoding='utf-8') as f: + generic_alltypes_bin_json = json.loads(f.read()) def test_plist_nodata(self): diff --git a/tests/test_postconf.py b/tests/test_postconf.py index c02dad57..8ad71e24 100644 --- a/tests/test_postconf.py +++ b/tests/test_postconf.py @@ -8,14 +8,13 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/postconf-M.out'), 'r', encoding='utf-8') as f: - self.generic_postconf_m = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/postconf-M.out'), 'r', encoding='utf-8') as f: + generic_postconf_m = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/postconf-M.json'), 'r', encoding='utf-8') as f: - self.generic_postconf_m_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/postconf-M.json'), 'r', encoding='utf-8') as f: + generic_postconf_m_json = json.loads(f.read()) def test_postconf_nodata(self): diff --git a/tests/test_ps.py b/tests/test_ps.py index d573a4ae..1deb6a3b 100644 --- a/tests/test_ps.py +++ b/tests/test_ps.py @@ -8,56 +8,56 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ps-ef.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_ps_ef = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ps-ef.out'), 'r', encoding='utf-8') as f: + centos_7_7_ps_ef = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ps-ef.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ps_ef = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ps-ef.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ps_ef = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/ps-ef.out'), 'r', encoding='utf-8') as f: - self.osx_10_11_6_ps_ef = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/ps-ef.out'), 'r', encoding='utf-8') as f: + osx_10_11_6_ps_ef = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ps-ef.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ps_ef = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ps-ef.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ps_ef = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ps-axu.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_ps_axu = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ps-axu.out'), 'r', encoding='utf-8') as f: + centos_7_7_ps_axu = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ps-axu.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ps_axu = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ps-axu.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ps_axu = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/ps-axu.out'), 'r', encoding='utf-8') as f: - self.osx_10_11_6_ps_axu = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/ps-axu.out'), 'r', encoding='utf-8') as f: + osx_10_11_6_ps_axu = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ps-axu.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ps_axu = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ps-axu.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_ps_axu = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ps-ef.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_ps_ef_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ps-ef.json'), 'r', encoding='utf-8') as f: + centos_7_7_ps_ef_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ps-ef.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ps_ef_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ps-ef.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ps_ef_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/ps-ef.json'), 'r', encoding='utf-8') as f: - self.osx_10_11_6_ps_ef_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/ps-ef.json'), 'r', encoding='utf-8') as f: + osx_10_11_6_ps_ef_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ps-ef.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ps_ef_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ps-ef.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ps_ef_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ps-axu.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_ps_axu_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ps-axu.json'), 'r', encoding='utf-8') as f: + centos_7_7_ps_axu_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ps-axu.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ps_axu_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ps-axu.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ps_axu_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/ps-axu.json'), 'r', encoding='utf-8') as f: - self.osx_10_11_6_ps_axu_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/ps-axu.json'), 'r', encoding='utf-8') as f: + osx_10_11_6_ps_axu_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ps-axu.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_ps_axu_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/ps-axu.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_ps_axu_json = json.loads(f.read()) def test_ps_nodata(self): """ diff --git a/tests/test_route.py b/tests/test_route.py index 19b319df..5a7c1933 100644 --- a/tests/test_route.py +++ b/tests/test_route.py @@ -8,50 +8,50 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/route.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_route = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/route.out'), 'r', encoding='utf-8') as f: + centos_7_7_route = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/route.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_route = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/route.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_route = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/route-vn.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_route_vn = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/route-vn.out'), 'r', encoding='utf-8') as f: + centos_7_7_route_vn = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/route-vn.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_route_vn = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/route-vn.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_route_vn = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/nixos/route-ee.out'), 'r', encoding='utf-8') as f: - self.nixos_route_ee = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/nixos/route-ee.out'), 'r', encoding='utf-8') as f: + nixos_route_ee = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/route-6.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_route_6 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/route-6.out'), 'r', encoding='utf-8') as f: + centos_7_7_route_6 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/route-6-n.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_route_6_n = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/route-6-n.out'), 'r', encoding='utf-8') as f: + centos_7_7_route_6_n = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/route.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_route_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/route.json'), 'r', encoding='utf-8') as f: + centos_7_7_route_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/route.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_route_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/route.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_route_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/route-vn.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_route_vn_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/route-vn.json'), 'r', encoding='utf-8') as f: + centos_7_7_route_vn_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/route-vn.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_route_vn_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/route-vn.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_route_vn_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/nixos/route-ee.json'), 'r', encoding='utf-8') as f: - self.nixos_route_ee_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/nixos/route-ee.json'), 'r', encoding='utf-8') as f: + nixos_route_ee_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/route-6.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_route_6_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/route-6.json'), 'r', encoding='utf-8') as f: + centos_7_7_route_6_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/route-6-n.json'), 'r', encoding='utf-8') as f: + centos_7_7_route_6_n_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/route-6-n.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_route_6_n_json = json.loads(f.read()) def test_route_nodata(self): """ diff --git a/tests/test_rpm_qai.py b/tests/test_rpm_qai.py index fa4a4463..384d6fcf 100644 --- a/tests/test_rpm_qai.py +++ b/tests/test_rpm_qai.py @@ -15,20 +15,20 @@ if not sys.platform.startswith('win32'): class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rpm-qai.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_rpm_qai = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rpm-qai.out'), 'r', encoding='utf-8') as f: + centos_7_7_rpm_qai = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rpm-qi-package.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_rpm_qi_package = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rpm-qi-package.out'), 'r', encoding='utf-8') as f: + centos_7_7_rpm_qi_package = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rpm-qai.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_rpm_qai_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rpm-qai.json'), 'r', encoding='utf-8') as f: + centos_7_7_rpm_qai_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rpm-qi-package.json'), 'r', encoding='utf-8') as f: + centos_7_7_rpm_qi_package_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rpm-qi-package.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_rpm_qi_package_json = json.loads(f.read()) def test_rpm_qi_nodata(self): """ diff --git a/tests/test_rsync.py b/tests/test_rsync.py index 62e8de21..0ef0187b 100644 --- a/tests/test_rsync.py +++ b/tests/test_rsync.py @@ -8,80 +8,80 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_rsync_i = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i.out'), 'r', encoding='utf-8') as f: + centos_7_7_rsync_i = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/rsync-i.out'), 'r', encoding='utf-8') as f: - self.generic_rsync_i = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/rsync-i.out'), 'r', encoding='utf-8') as f: + generic_rsync_i = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-ivvv.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_rsync_ivvv = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-ivvv.out'), 'r', encoding='utf-8') as f: + centos_7_7_rsync_ivvv = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/rsync-i-vvv.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_rsync_ivvv = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/rsync-i-vvv.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_rsync_ivvv = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-ivvv-nochange.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_rsync_ivvv_nochange = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-ivvv-nochange.out'), 'r', encoding='utf-8') as f: + centos_7_7_rsync_ivvv_nochange = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/rsync-i-vvv-nochange.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_rsync_ivvv_nochange = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/rsync-i-vvv-nochange.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_rsync_ivvv_nochange = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i-logfile.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_rsync_i_logfile = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i-logfile.out'), 'r', encoding='utf-8') as f: + centos_7_7_rsync_i_logfile = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i-v-logfile.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_rsync_i_v_logfile = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i-v-logfile.out'), 'r', encoding='utf-8') as f: + centos_7_7_rsync_i_v_logfile = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i-vv-logfile.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_rsync_i_vv_logfile = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i-vv-logfile.out'), 'r', encoding='utf-8') as f: + centos_7_7_rsync_i_vv_logfile = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i-vvv-logfile.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_rsync_i_vvv_logfile = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i-vvv-logfile.out'), 'r', encoding='utf-8') as f: + centos_7_7_rsync_i_vvv_logfile = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i-vvv-logfile-nochange.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_rsync_i_vvv_logfile_nochange = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i-vvv-logfile-nochange.out'), 'r', encoding='utf-8') as f: + centos_7_7_rsync_i_vvv_logfile_nochange = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/rsync-i-vvv-logfile-nochange.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_rsync_i_vvv_logfile_nochange = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/rsync-i-vvv-logfile-nochange.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_rsync_i_vvv_logfile_nochange = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_rsync_i_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i.json'), 'r', encoding='utf-8') as f: + centos_7_7_rsync_i_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/rsync-i.json'), 'r', encoding='utf-8') as f: - self.generic_rsync_i_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/rsync-i.json'), 'r', encoding='utf-8') as f: + generic_rsync_i_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-ivvv.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_rsync_ivvv_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-ivvv.json'), 'r', encoding='utf-8') as f: + centos_7_7_rsync_ivvv_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/rsync-i-vvv.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_rsync_ivvv_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/rsync-i-vvv.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_rsync_ivvv_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-ivvv-nochange.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_rsync_ivvv_nochange_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-ivvv-nochange.json'), 'r', encoding='utf-8') as f: + centos_7_7_rsync_ivvv_nochange_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/rsync-i-vvv-nochange.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_rsync_ivvv_nochange_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/rsync-i-vvv-nochange.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_rsync_ivvv_nochange_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i-logfile.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_rsync_i_logfile_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i-logfile.json'), 'r', encoding='utf-8') as f: + centos_7_7_rsync_i_logfile_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i-v-logfile.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_rsync_i_v_logfile_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i-v-logfile.json'), 'r', encoding='utf-8') as f: + centos_7_7_rsync_i_v_logfile_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i-vv-logfile.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_rsync_i_vv_logfile_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i-vv-logfile.json'), 'r', encoding='utf-8') as f: + centos_7_7_rsync_i_vv_logfile_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i-vvv-logfile.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_rsync_i_vvv_logfile_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i-vvv-logfile.json'), 'r', encoding='utf-8') as f: + centos_7_7_rsync_i_vvv_logfile_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i-vvv-logfile-nochange.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_rsync_i_vvv_logfile_nochange_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i-vvv-logfile-nochange.json'), 'r', encoding='utf-8') as f: + centos_7_7_rsync_i_vvv_logfile_nochange_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/rsync-i-vvv-logfile-nochange.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_rsync_i_vvv_logfile_nochange_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/rsync-i-vvv-logfile-nochange.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_rsync_i_vvv_logfile_nochange_json = json.loads(f.read()) def test_rsync_nodata(self): """ diff --git a/tests/test_rsync_s.py b/tests/test_rsync_s.py index c6193a7a..99617172 100644 --- a/tests/test_rsync_s.py +++ b/tests/test_rsync_s.py @@ -19,80 +19,80 @@ if not sys.platform.startswith('win32'): class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_rsync_i = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i.out'), 'r', encoding='utf-8') as f: + centos_7_7_rsync_i = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/rsync-i.out'), 'r', encoding='utf-8') as f: - self.generic_rsync_i = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/rsync-i.out'), 'r', encoding='utf-8') as f: + generic_rsync_i = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-ivvv.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_rsync_ivvv = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-ivvv.out'), 'r', encoding='utf-8') as f: + centos_7_7_rsync_ivvv = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/rsync-i-vvv.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_rsync_ivvv = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/rsync-i-vvv.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_rsync_ivvv = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-ivvv-nochange.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_rsync_ivvv_nochange = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-ivvv-nochange.out'), 'r', encoding='utf-8') as f: + centos_7_7_rsync_ivvv_nochange = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/rsync-i-vvv-nochange.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_rsync_ivvv_nochange = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/rsync-i-vvv-nochange.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_rsync_ivvv_nochange = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i-logfile.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_rsync_i_logfile = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i-logfile.out'), 'r', encoding='utf-8') as f: + centos_7_7_rsync_i_logfile = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i-v-logfile.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_rsync_i_v_logfile = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i-v-logfile.out'), 'r', encoding='utf-8') as f: + centos_7_7_rsync_i_v_logfile = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i-vv-logfile.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_rsync_i_vv_logfile = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i-vv-logfile.out'), 'r', encoding='utf-8') as f: + centos_7_7_rsync_i_vv_logfile = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i-vvv-logfile.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_rsync_i_vvv_logfile = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i-vvv-logfile.out'), 'r', encoding='utf-8') as f: + centos_7_7_rsync_i_vvv_logfile = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i-vvv-logfile-nochange.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_rsync_i_vvv_logfile_nochange = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i-vvv-logfile-nochange.out'), 'r', encoding='utf-8') as f: + centos_7_7_rsync_i_vvv_logfile_nochange = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/rsync-i-vvv-logfile-nochange.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_rsync_i_vvv_logfile_nochange = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/rsync-i-vvv-logfile-nochange.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_rsync_i_vvv_logfile_nochange = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i-streaming.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_rsync_i_streaming_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i-streaming.json'), 'r', encoding='utf-8') as f: + centos_7_7_rsync_i_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/rsync-i-streaming.json'), 'r', encoding='utf-8') as f: - self.generic_rsync_i_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/rsync-i-streaming.json'), 'r', encoding='utf-8') as f: + generic_rsync_i_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-ivvv-streaming.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_rsync_ivvv_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-ivvv-streaming.json'), 'r', encoding='utf-8') as f: + centos_7_7_rsync_ivvv_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/rsync-i-vvv-streaming.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_rsync_ivvv_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/rsync-i-vvv-streaming.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_rsync_ivvv_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-ivvv-nochange-streaming.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_rsync_ivvv_nochange_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-ivvv-nochange-streaming.json'), 'r', encoding='utf-8') as f: + centos_7_7_rsync_ivvv_nochange_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/rsync-i-vvv-nochange-streaming.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_rsync_ivvv_nochange_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/rsync-i-vvv-nochange-streaming.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_rsync_ivvv_nochange_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i-logfile-streaming.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_rsync_i_logfile_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i-logfile-streaming.json'), 'r', encoding='utf-8') as f: + centos_7_7_rsync_i_logfile_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i-v-logfile-streaming.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_rsync_i_v_logfile_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i-v-logfile-streaming.json'), 'r', encoding='utf-8') as f: + centos_7_7_rsync_i_v_logfile_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i-vv-logfile-streaming.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_rsync_i_vv_logfile_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i-vv-logfile-streaming.json'), 'r', encoding='utf-8') as f: + centos_7_7_rsync_i_vv_logfile_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i-vvv-logfile-streaming.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_rsync_i_vvv_logfile_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i-vvv-logfile-streaming.json'), 'r', encoding='utf-8') as f: + centos_7_7_rsync_i_vvv_logfile_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i-vvv-logfile-nochange-streaming.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_rsync_i_vvv_logfile_nochange_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/rsync-i-vvv-logfile-nochange-streaming.json'), 'r', encoding='utf-8') as f: + centos_7_7_rsync_i_vvv_logfile_nochange_streaming_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/rsync-i-vvv-logfile-nochange-streaming.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_rsync_i_vvv_logfile_nochange_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/rsync-i-vvv-logfile-nochange-streaming.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_rsync_i_vvv_logfile_nochange_streaming_json = json.loads(f.read()) def test_rsync_s_nodata(self): """ diff --git a/tests/test_sfdisk.py b/tests/test_sfdisk.py index ce5a79f4..5d7f1fb2 100644 --- a/tests/test_sfdisk.py +++ b/tests/test_sfdisk.py @@ -8,93 +8,92 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/sfdisk-l.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_sfdisk_l = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/sfdisk-l.out'), 'r', encoding='utf-8') as f: + centos_7_7_sfdisk_l = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/sfdisk-l-multi.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_sfdisk_l_multi = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/sfdisk-l-multi.out'), 'r', encoding='utf-8') as f: + centos_7_7_sfdisk_l_multi = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/sfdisk-d.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_sfdisk_d = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/sfdisk-d.out'), 'r', encoding='utf-8') as f: + centos_7_7_sfdisk_d = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/sfdisk-d-multi.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_sfdisk_d_multi = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/sfdisk-d-multi.out'), 'r', encoding='utf-8') as f: + centos_7_7_sfdisk_d_multi = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/sfdisk-luB.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_sfdisk_luB = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/sfdisk-luB.out'), 'r', encoding='utf-8') as f: + centos_7_7_sfdisk_luB = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/sfdisk-luM.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_sfdisk_luM = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/sfdisk-luM.out'), 'r', encoding='utf-8') as f: + centos_7_7_sfdisk_luM = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/sfdisk-luS.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_sfdisk_luS = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/sfdisk-luS.out'), 'r', encoding='utf-8') as f: + centos_7_7_sfdisk_luS = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-8/sfdisk-l.out'), 'r', encoding='utf-8') as f: - self.centos_8_sfdisk_l = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-8/sfdisk-l.out'), 'r', encoding='utf-8') as f: + centos_8_sfdisk_l = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-8/sfdisk-F.out'), 'r', encoding='utf-8') as f: - self.centos_8_sfdisk_F = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-8/sfdisk-F.out'), 'r', encoding='utf-8') as f: + centos_8_sfdisk_F = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/debian10/sfdisk-l.out'), 'r', encoding='utf-8') as f: - self.debian_10_sfdisk_l = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/debian10/sfdisk-l.out'), 'r', encoding='utf-8') as f: + debian_10_sfdisk_l = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/debian10/sfdisk-l2.out'), 'r', encoding='utf-8') as f: - self.debian_10_sfdisk_l2 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/debian10/sfdisk-l2.out'), 'r', encoding='utf-8') as f: + debian_10_sfdisk_l2 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/debian10/sfdisk-l3.out'), 'r', encoding='utf-8') as f: - self.debian_10_sfdisk_l3 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/debian10/sfdisk-l3.out'), 'r', encoding='utf-8') as f: + debian_10_sfdisk_l3 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/debian10/sfdisk-F.out'), 'r', encoding='utf-8') as f: - self.debian_10_sfdisk_F = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/debian10/sfdisk-F.out'), 'r', encoding='utf-8') as f: + debian_10_sfdisk_F = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/debian10/sfdisk-F2.out'), 'r', encoding='utf-8') as f: - self.debian_10_sfdisk_F2 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/debian10/sfdisk-F2.out'), 'r', encoding='utf-8') as f: + debian_10_sfdisk_F2 = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/sfdisk-l.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_sfdisk_l_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/sfdisk-l.json'), 'r', encoding='utf-8') as f: + centos_7_7_sfdisk_l_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/sfdisk-l-multi.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_sfdisk_l_multi_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/sfdisk-l-multi.json'), 'r', encoding='utf-8') as f: + centos_7_7_sfdisk_l_multi_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/sfdisk-d.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_sfdisk_d_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/sfdisk-d.json'), 'r', encoding='utf-8') as f: + centos_7_7_sfdisk_d_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/sfdisk-d-multi.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_sfdisk_d_multi_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/sfdisk-d-multi.json'), 'r', encoding='utf-8') as f: + centos_7_7_sfdisk_d_multi_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/sfdisk-luB.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_sfdisk_luB_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/sfdisk-luB.json'), 'r', encoding='utf-8') as f: + centos_7_7_sfdisk_luB_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/sfdisk-luM.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_sfdisk_luM_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/sfdisk-luM.json'), 'r', encoding='utf-8') as f: + centos_7_7_sfdisk_luM_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/sfdisk-luS.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_sfdisk_luS_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/sfdisk-luS.json'), 'r', encoding='utf-8') as f: + centos_7_7_sfdisk_luS_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-8/sfdisk-l.json'), 'r', encoding='utf-8') as f: - self.centos_8_sfdisk_l_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-8/sfdisk-l.json'), 'r', encoding='utf-8') as f: + centos_8_sfdisk_l_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-8/sfdisk-F.json'), 'r', encoding='utf-8') as f: - self.centos_8_sfdisk_F_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-8/sfdisk-F.json'), 'r', encoding='utf-8') as f: + centos_8_sfdisk_F_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/debian10/sfdisk-l.json'), 'r', encoding='utf-8') as f: - self.debian_10_sfdisk_l_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/debian10/sfdisk-l.json'), 'r', encoding='utf-8') as f: + debian_10_sfdisk_l_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/debian10/sfdisk-l2.json'), 'r', encoding='utf-8') as f: - self.debian_10_sfdisk_l2_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/debian10/sfdisk-l2.json'), 'r', encoding='utf-8') as f: + debian_10_sfdisk_l2_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/debian10/sfdisk-l3.json'), 'r', encoding='utf-8') as f: - self.debian_10_sfdisk_l3_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/debian10/sfdisk-l3.json'), 'r', encoding='utf-8') as f: + debian_10_sfdisk_l3_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/debian10/sfdisk-F.json'), 'r', encoding='utf-8') as f: - self.debian_10_sfdisk_F_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/debian10/sfdisk-F.json'), 'r', encoding='utf-8') as f: + debian_10_sfdisk_F_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/debian10/sfdisk-F2.json'), 'r', encoding='utf-8') as f: - self.debian_10_sfdisk_F2_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/debian10/sfdisk-F2.json'), 'r', encoding='utf-8') as f: + debian_10_sfdisk_F2_json = json.loads(f.read()) def test_sfdisk_nodata(self): diff --git a/tests/test_shadow.py b/tests/test_shadow.py index d00742d7..1c12e386 100644 --- a/tests/test_shadow.py +++ b/tests/test_shadow.py @@ -8,20 +8,19 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/shadow.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_shadow = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/shadow.out'), 'r', encoding='utf-8') as f: + centos_7_7_shadow = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/shadow.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_shadow = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/shadow.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_shadow = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/shadow.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_shadow_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/shadow.json'), 'r', encoding='utf-8') as f: + centos_7_7_shadow_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/shadow.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_shadow_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/shadow.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_shadow_json = json.loads(f.read()) def test_shadow_nodata(self): """ diff --git a/tests/test_ss.py b/tests/test_ss.py index 4f0c5449..fc370c4e 100644 --- a/tests/test_ss.py +++ b/tests/test_ss.py @@ -8,20 +8,20 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ss-sudo-a.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_ss_sudo_a = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ss-sudo-a.out'), 'r', encoding='utf-8') as f: + centos_7_7_ss_sudo_a = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ss-sudo-a.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ss_sudo_a = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ss-sudo-a.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ss_sudo_a = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ss-sudo-a.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_ss_sudo_a_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ss-sudo-a.json'), 'r', encoding='utf-8') as f: + centos_7_7_ss_sudo_a_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ss-sudo-a.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_ss_sudo_a_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ss-sudo-a.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_ss_sudo_a_json = json.loads(f.read()) def test_ss_nodata(self): """ diff --git a/tests/test_stat.py b/tests/test_stat.py index 3f8ad60c..0e748f68 100644 --- a/tests/test_stat.py +++ b/tests/test_stat.py @@ -15,38 +15,38 @@ if not sys.platform.startswith('win32'): class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/stat.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_stat = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/stat.out'), 'r', encoding='utf-8') as f: + centos_7_7_stat = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/stat.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_stat = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/stat.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_stat = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/stat.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_stat = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/stat.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_stat = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/stat-filename-with-spaces.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_stat_filename_with_spaces = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/stat-filename-with-spaces.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_stat_filename_with_spaces = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/stat.out'), 'r', encoding='utf-8') as f: - self.freebsd12_stat = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/stat.out'), 'r', encoding='utf-8') as f: + freebsd12_stat = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/stat.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_stat_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/stat.json'), 'r', encoding='utf-8') as f: + centos_7_7_stat_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/stat.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_stat_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/stat.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_stat_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/stat.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_stat_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/stat.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_stat_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/stat-filename-with-spaces.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_stat_filename_with_spaces_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/stat-filename-with-spaces.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_stat_filename_with_spaces_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/stat.json'), 'r', encoding='utf-8') as f: + freebsd12_stat_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/stat.json'), 'r', encoding='utf-8') as f: - self.freebsd12_stat_json = json.loads(f.read()) def test_stat_nodata(self): """ diff --git a/tests/test_stat_s.py b/tests/test_stat_s.py index 0329be61..c2ecbe7c 100644 --- a/tests/test_stat_s.py +++ b/tests/test_stat_s.py @@ -20,38 +20,38 @@ if not sys.platform.startswith('win32'): class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/stat.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_stat = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/stat.out'), 'r', encoding='utf-8') as f: + centos_7_7_stat = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/stat.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_stat = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/stat.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_stat = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/stat.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_stat = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/stat.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_stat = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/stat-filename-with-spaces.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_stat_filename_with_spaces = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/stat-filename-with-spaces.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_stat_filename_with_spaces = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/stat.out'), 'r', encoding='utf-8') as f: - self.freebsd12_stat = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/stat.out'), 'r', encoding='utf-8') as f: + freebsd12_stat = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/stat-streaming.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_stat_streaming_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/stat-streaming.json'), 'r', encoding='utf-8') as f: + centos_7_7_stat_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/stat-streaming.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_stat_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/stat-streaming.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_stat_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/stat-streaming.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_stat_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/stat-streaming.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_stat_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/stat-filename-with-spaces-streaming.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_stat_filename_with_spaces_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/stat-filename-with-spaces-streaming.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_stat_filename_with_spaces_streaming_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/stat-streaming.json'), 'r', encoding='utf-8') as f: + freebsd12_stat_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/stat-streaming.json'), 'r', encoding='utf-8') as f: - self.freebsd12_stat_streaming_json = json.loads(f.read()) def test_stat_s_nodata(self): """ diff --git a/tests/test_sysctl.py b/tests/test_sysctl.py index c21495e9..504a8ab4 100644 --- a/tests/test_sysctl.py +++ b/tests/test_sysctl.py @@ -8,32 +8,32 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/sysctl-a.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_sysctl = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/sysctl-a.out'), 'r', encoding='utf-8') as f: + centos_7_7_sysctl = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/sysctl-a.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_sysctl = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/sysctl-a.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_sysctl = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/sysctl-a.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_sysctl = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/sysctl-a.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_sysctl = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/sysctl-a.out'), 'r', encoding='utf-8') as f: - self.freebsd12_sysctl = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/sysctl-a.out'), 'r', encoding='utf-8') as f: + freebsd12_sysctl = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/sysctl-a.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_sysctl_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/sysctl-a.json'), 'r', encoding='utf-8') as f: + centos_7_7_sysctl_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/sysctl-a.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_sysctl_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/sysctl-a.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_sysctl_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/sysctl-a.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_sysctl_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/sysctl-a.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_sysctl_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/sysctl-a.json'), 'r', encoding='utf-8') as f: + freebsd12_sysctl_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/sysctl-a.json'), 'r', encoding='utf-8') as f: - self.freebsd12_sysctl_json = json.loads(f.read()) def test_sysctl_nodata(self): """ diff --git a/tests/test_syslog.py b/tests/test_syslog.py index 2a05e4a4..e7e00ea0 100644 --- a/tests/test_syslog.py +++ b/tests/test_syslog.py @@ -8,14 +8,13 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/syslog-5424.out'), 'r', encoding='utf-8') as f: - self.syslog = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/syslog-5424.out'), 'r', encoding='utf-8') as f: + syslog = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/syslog-5424.json'), 'r', encoding='utf-8') as f: - self.syslog_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/syslog-5424.json'), 'r', encoding='utf-8') as f: + syslog_json = json.loads(f.read()) def test_syslog_nodata(self): diff --git a/tests/test_syslog_bsd.py b/tests/test_syslog_bsd.py index ff0516c9..f1a3e389 100644 --- a/tests/test_syslog_bsd.py +++ b/tests/test_syslog_bsd.py @@ -8,14 +8,13 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/syslog-3164.out'), 'r', encoding='utf-8') as f: - self.syslog = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/syslog-3164.out'), 'r', encoding='utf-8') as f: + syslog = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/syslog-3164.json'), 'r', encoding='utf-8') as f: - self.syslog_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/syslog-3164.json'), 'r', encoding='utf-8') as f: + syslog_json = json.loads(f.read()) def test_syslog_bsd_nodata(self): diff --git a/tests/test_syslog_bsd_s.py b/tests/test_syslog_bsd_s.py index 82c24b0c..bcaa28d0 100644 --- a/tests/test_syslog_bsd_s.py +++ b/tests/test_syslog_bsd_s.py @@ -11,14 +11,14 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/syslog-3164.out'), 'r', encoding='utf-8') as f: - self.syslog_bsd = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/syslog-3164.out'), 'r', encoding='utf-8') as f: + syslog_bsd = f.read() + + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/syslog-3164-streaming.json'), 'r', encoding='utf-8') as f: + syslog_bsd_streaming_json = json.loads(f.read()) - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/syslog-3164-streaming.json'), 'r', encoding='utf-8') as f: - self.syslog_bsd_streaming_json = json.loads(f.read()) def test_syslog_bsd_s_nodata(self): """ diff --git a/tests/test_syslog_s.py b/tests/test_syslog_s.py index 97c5adff..e725aaca 100644 --- a/tests/test_syslog_s.py +++ b/tests/test_syslog_s.py @@ -11,14 +11,14 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/syslog-5424.out'), 'r', encoding='utf-8') as f: - self.syslog = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/syslog-5424.out'), 'r', encoding='utf-8') as f: + syslog = f.read() + + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/syslog-5424-streaming.json'), 'r', encoding='utf-8') as f: + syslog_streaming_json = json.loads(f.read()) - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/syslog-5424-streaming.json'), 'r', encoding='utf-8') as f: - self.syslog_streaming_json = json.loads(f.read()) def test_syslog_s_nodata(self): """ diff --git a/tests/test_systemctl.py b/tests/test_systemctl.py index 70516c4f..4cb36fd0 100644 --- a/tests/test_systemctl.py +++ b/tests/test_systemctl.py @@ -8,20 +8,20 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/systemctl.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_systemctl = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/systemctl.out'), 'r', encoding='utf-8') as f: + centos_7_7_systemctl = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/systemctl.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_systemctl = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/systemctl.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_systemctl = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/systemctl.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_systemctl_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/systemctl.json'), 'r', encoding='utf-8') as f: + centos_7_7_systemctl_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/systemctl.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_systemctl_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/systemctl.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_systemctl_json = json.loads(f.read()) def test_systemctl_nodata(self): """ diff --git a/tests/test_systemctl_lj.py b/tests/test_systemctl_lj.py index 4c82f6cc..3c1502b6 100644 --- a/tests/test_systemctl_lj.py +++ b/tests/test_systemctl_lj.py @@ -8,14 +8,14 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/systemctl-lj.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_systemctl_lj = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/systemctl-lj.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_systemctl_lj = f.read() + + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/systemctl-lj.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_systemctl_lj_json = json.loads(f.read()) - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/systemctl-lj.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_systemctl_lj_json = json.loads(f.read()) def test_systemctl_lj_nodata(self): """ diff --git a/tests/test_systemctl_ls.py b/tests/test_systemctl_ls.py index 1f0c2bf6..4af6dced 100644 --- a/tests/test_systemctl_ls.py +++ b/tests/test_systemctl_ls.py @@ -8,20 +8,20 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/systemctl-ls.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_systemctl_ls = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/systemctl-ls.out'), 'r', encoding='utf-8') as f: + centos_7_7_systemctl_ls = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/systemctl-ls.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_systemctl_ls = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/systemctl-ls.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_systemctl_ls = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/systemctl-ls.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_systemctl_ls_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/systemctl-ls.json'), 'r', encoding='utf-8') as f: + centos_7_7_systemctl_ls_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/systemctl-ls.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_systemctl_ls_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/systemctl-ls.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_systemctl_ls_json = json.loads(f.read()) def test_systemctl_ls_nodata(self): """ diff --git a/tests/test_systemctl_luf.py b/tests/test_systemctl_luf.py index b773fdcc..7c7ebf42 100644 --- a/tests/test_systemctl_luf.py +++ b/tests/test_systemctl_luf.py @@ -8,20 +8,20 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/systemctl-luf.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_systemctl_luf = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/systemctl-luf.out'), 'r', encoding='utf-8') as f: + centos_7_7_systemctl_luf = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/systemctl-luf.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_systemctl_luf = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/systemctl-luf.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_systemctl_luf = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/systemctl-luf.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_systemctl_luf_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/systemctl-luf.json'), 'r', encoding='utf-8') as f: + centos_7_7_systemctl_luf_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/systemctl-luf.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_systemctl_luf_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/systemctl-luf.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_systemctl_luf_json = json.loads(f.read()) def test_systemctl_luf_nodata(self): """ diff --git a/tests/test_time.py b/tests/test_time.py index 14451244..eaa08b0b 100644 --- a/tests/test_time.py +++ b/tests/test_time.py @@ -8,56 +8,56 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/time.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_time = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/time.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_time = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/time2.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_time2 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/time2.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_time2 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/time-p.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_time_p = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/time-p.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_time_p = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/time-verbose.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_time_verbose = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/time-verbose.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_time_verbose = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/time.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_time = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/time.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_time = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/time-l.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_time_l = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/time-l.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_time_l = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/time-p.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_time_p = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/time-p.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_time_p = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/time-lp.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_time_lp = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/time-lp.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_time_lp = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/time.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_time_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/time.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_time_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/time2.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_time2_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/time2.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_time2_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/time-p.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_time_p_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/time-p.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_time_p_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/time-verbose.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_time_verbose_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/time-verbose.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_time_verbose_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/time.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_time_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/time.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_time_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/time-l.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_time_l_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/time-l.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_time_l_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/time-p.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_time_p_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/time-p.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_time_p_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/time-lp.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_time_lp_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/time-lp.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_time_lp_json = json.loads(f.read()) def test_time_nodata(self): """ diff --git a/tests/test_timedatectl.py b/tests/test_timedatectl.py index 1653b6ef..fe4b1204 100644 --- a/tests/test_timedatectl.py +++ b/tests/test_timedatectl.py @@ -8,20 +8,20 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/timedatectl.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_timedatectl = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/timedatectl.out'), 'r', encoding='utf-8') as f: + centos_7_7_timedatectl = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/timedatectl.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_timedatectl = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/timedatectl.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_timedatectl = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/timedatectl.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_timedatectl_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/timedatectl.json'), 'r', encoding='utf-8') as f: + centos_7_7_timedatectl_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/timedatectl.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_timedatectl_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/timedatectl.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_timedatectl_json = json.loads(f.read()) def test_timedatectl_nodata(self): """ diff --git a/tests/test_top.py b/tests/test_top.py index 74a1389a..1f4a4d05 100644 --- a/tests/test_top.py +++ b/tests/test_top.py @@ -8,38 +8,37 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/top-b-n3.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_top_b_n3 = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/top-b-n3.out'), 'r', encoding='utf-8') as f: + centos_7_7_top_b_n3 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/top-b-n1-gib.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_top_b_n1_gib = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/top-b-n1-gib.out'), 'r', encoding='utf-8') as f: + centos_7_7_top_b_n1_gib = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/top-b-n1-gib-allfields-w.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_top_b_n1_gib_allfields_w = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/top-b-n1-gib-allfields-w.out'), 'r', encoding='utf-8') as f: + centos_7_7_top_b_n1_gib_allfields_w = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/top-b-n1.out'), 'r', encoding='utf-8') as f: - self.ubuntu_20_10_top_b_n1 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/top-b-n1.out'), 'r', encoding='utf-8') as f: + ubuntu_20_10_top_b_n1 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/top-b-allfields.out'), 'r', encoding='utf-8') as f: - self.ubuntu_20_10_top_b_allfields = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/top-b-allfields.out'), 'r', encoding='utf-8') as f: + ubuntu_20_10_top_b_allfields = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/top-b-n3.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_top_b_n3_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/top-b-n3.json'), 'r', encoding='utf-8') as f: + centos_7_7_top_b_n3_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/top-b-n1-gib.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_top_b_n1_gib_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/top-b-n1-gib.json'), 'r', encoding='utf-8') as f: + centos_7_7_top_b_n1_gib_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/top-b-n1-gib-allfields-w.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_top_b_n1_gib_allfields_w_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/top-b-n1-gib-allfields-w.json'), 'r', encoding='utf-8') as f: + centos_7_7_top_b_n1_gib_allfields_w_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/top-b-n1.json'), 'r', encoding='utf-8') as f: - self.ubuntu_20_10_top_b_n1_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/top-b-n1.json'), 'r', encoding='utf-8') as f: + ubuntu_20_10_top_b_n1_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/top-b-allfields.json'), 'r', encoding='utf-8') as f: - self.ubuntu_20_10_top_b_allfields_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/top-b-allfields.json'), 'r', encoding='utf-8') as f: + ubuntu_20_10_top_b_allfields_json = json.loads(f.read()) def test_top_nodata(self): diff --git a/tests/test_top_s.py b/tests/test_top_s.py index 98566551..ebf478fb 100644 --- a/tests/test_top_s.py +++ b/tests/test_top_s.py @@ -12,38 +12,38 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/top-b-n3.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_top_b_n3 = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/top-b-n3.out'), 'r', encoding='utf-8') as f: + centos_7_7_top_b_n3 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/top-b-n1-gib.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_top_b_n1_gib = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/top-b-n1-gib.out'), 'r', encoding='utf-8') as f: + centos_7_7_top_b_n1_gib = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/top-b-n1-gib-allfields-w.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_top_b_n1_gib_allfields_w = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/top-b-n1-gib-allfields-w.out'), 'r', encoding='utf-8') as f: + centos_7_7_top_b_n1_gib_allfields_w = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/top-b-n1.out'), 'r', encoding='utf-8') as f: - self.ubuntu_20_10_top_b_n1 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/top-b-n1.out'), 'r', encoding='utf-8') as f: + ubuntu_20_10_top_b_n1 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/top-b-allfields.out'), 'r', encoding='utf-8') as f: - self.ubuntu_20_10_top_b_allfields = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/top-b-allfields.out'), 'r', encoding='utf-8') as f: + ubuntu_20_10_top_b_allfields = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/top-b-n3-streaming.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_top_b_n3_streaming_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/top-b-n3-streaming.json'), 'r', encoding='utf-8') as f: + centos_7_7_top_b_n3_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/top-b-n1-gib-streaming.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_top_b_n1_gib_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/top-b-n1-gib-streaming.json'), 'r', encoding='utf-8') as f: + centos_7_7_top_b_n1_gib_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/top-b-n1-gib-allfields-w-streaming.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_top_b_n1_gib_allfields_w_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/top-b-n1-gib-allfields-w-streaming.json'), 'r', encoding='utf-8') as f: + centos_7_7_top_b_n1_gib_allfields_w_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/top-b-n1-streaming.json'), 'r', encoding='utf-8') as f: - self.ubuntu_20_10_top_b_n1_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/top-b-n1-streaming.json'), 'r', encoding='utf-8') as f: + ubuntu_20_10_top_b_n1_streaming_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/top-b-allfields-streaming.json'), 'r', encoding='utf-8') as f: + ubuntu_20_10_top_b_allfields_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-20.10/top-b-allfields-streaming.json'), 'r', encoding='utf-8') as f: - self.ubuntu_20_10_top_b_allfields_streaming_json = json.loads(f.read()) def test_top_s_nodata(self): """ diff --git a/tests/test_tracepath.py b/tests/test_tracepath.py index d5ccbb5b..736db95f 100644 --- a/tests/test_tracepath.py +++ b/tests/test_tracepath.py @@ -8,20 +8,20 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/tracepath.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_tracepath = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/tracepath.out'), 'r', encoding='utf-8') as f: + centos_7_7_tracepath = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/tracepath6.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_tracepath6 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/tracepath6.out'), 'r', encoding='utf-8') as f: + centos_7_7_tracepath6 = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/tracepath.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_tracepath_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/tracepath.json'), 'r', encoding='utf-8') as f: + centos_7_7_tracepath_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/tracepath6.json'), 'r', encoding='utf-8') as f: + centos_7_7_tracepath6_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/tracepath6.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_tracepath6_json = json.loads(f.read()) def test_tracepath_nodata(self): """ diff --git a/tests/test_traceroute.py b/tests/test_traceroute.py index 5c68fc48..7a113f41 100644 --- a/tests/test_traceroute.py +++ b/tests/test_traceroute.py @@ -8,135 +8,134 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/traceroute.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_traceroute = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/traceroute.out'), 'r', encoding='utf-8') as f: + centos_7_7_traceroute = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/traceroute-no-header.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_traceroute_noheader = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/traceroute-no-header.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_traceroute_noheader = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/traceroute-asn.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_traceroute_asn = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/traceroute-asn.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_traceroute_asn = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/traceroute-mult-addresses.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_traceroute_mult_addresses = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/traceroute-mult-addresses.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_traceroute_mult_addresses = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/traceroute-q.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_traceroute_q = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/traceroute-q.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_traceroute_q = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/traceroute.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_traceroute = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/traceroute.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_traceroute = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/traceroute6-mult-addresses.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_traceroute6_mult_addresses = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/traceroute6-mult-addresses.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_traceroute6_mult_addresses = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/traceroute6.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_traceroute6 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/traceroute6.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_traceroute6 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/traceroute.out'), 'r', encoding='utf-8') as f: - self.freebsd12_traceroute = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/traceroute.out'), 'r', encoding='utf-8') as f: + freebsd12_traceroute = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/traceroute6.out'), 'r', encoding='utf-8') as f: - self.freebsd12_traceroute6 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/traceroute6.out'), 'r', encoding='utf-8') as f: + freebsd12_traceroute6 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute1.out'), 'r', encoding='utf-8') as f: - self.generic_traceroute1 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute1.out'), 'r', encoding='utf-8') as f: + generic_traceroute1 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute2.out'), 'r', encoding='utf-8') as f: - self.generic_traceroute2 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute2.out'), 'r', encoding='utf-8') as f: + generic_traceroute2 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute3.out'), 'r', encoding='utf-8') as f: - self.generic_traceroute3 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute3.out'), 'r', encoding='utf-8') as f: + generic_traceroute3 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute4.out'), 'r', encoding='utf-8') as f: - self.generic_traceroute4 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute4.out'), 'r', encoding='utf-8') as f: + generic_traceroute4 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute5.out'), 'r', encoding='utf-8') as f: - self.generic_traceroute5 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute5.out'), 'r', encoding='utf-8') as f: + generic_traceroute5 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute6.out'), 'r', encoding='utf-8') as f: - self.generic_traceroute6 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute6.out'), 'r', encoding='utf-8') as f: + generic_traceroute6 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute7.out'), 'r', encoding='utf-8') as f: - self.generic_traceroute7 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute7.out'), 'r', encoding='utf-8') as f: + generic_traceroute7 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute8.out'), 'r', encoding='utf-8') as f: - self.generic_traceroute8 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute8.out'), 'r', encoding='utf-8') as f: + generic_traceroute8 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute-n-ipv4.out'), 'r', encoding='utf-8') as f: - self.generic_traceroute_n_ipv4 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute-n-ipv4.out'), 'r', encoding='utf-8') as f: + generic_traceroute_n_ipv4 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute-n-q1-ipv4.out'), 'r', encoding='utf-8') as f: - self.generic_traceroute_n_q1_ipv4 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute-n-q1-ipv4.out'), 'r', encoding='utf-8') as f: + generic_traceroute_n_q1_ipv4 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute-n-ipv6.out'), 'r', encoding='utf-8') as f: - self.generic_traceroute_n_ipv6 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute-n-ipv6.out'), 'r', encoding='utf-8') as f: + generic_traceroute_n_ipv6 = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/traceroute-no-header.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_traceroute_no_header_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/traceroute-no-header.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_traceroute_no_header_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/traceroute.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_traceroute_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/traceroute.json'), 'r', encoding='utf-8') as f: + centos_7_7_traceroute_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/traceroute-asn.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_traceroute_asn_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/traceroute-asn.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_traceroute_asn_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/traceroute-mult-addresses.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_traceroute_mult_addresses_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/traceroute-mult-addresses.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_traceroute_mult_addresses_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/traceroute-q.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_traceroute_q_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/traceroute-q.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_traceroute_q_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/traceroute.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_traceroute_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/traceroute.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_traceroute_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/traceroute6-mult-addresses.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_traceroute6_mult_addresses_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/traceroute6-mult-addresses.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_traceroute6_mult_addresses_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/traceroute6.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_traceroute6_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/traceroute6.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_traceroute6_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/traceroute.json'), 'r', encoding='utf-8') as f: - self.freebsd12_traceroute_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/traceroute.json'), 'r', encoding='utf-8') as f: + freebsd12_traceroute_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/traceroute6.json'), 'r', encoding='utf-8') as f: - self.freebsd12_traceroute6_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/traceroute6.json'), 'r', encoding='utf-8') as f: + freebsd12_traceroute6_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute1.json'), 'r', encoding='utf-8') as f: - self.generic_traceroute1_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute1.json'), 'r', encoding='utf-8') as f: + generic_traceroute1_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute2.json'), 'r', encoding='utf-8') as f: - self.generic_traceroute2_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute2.json'), 'r', encoding='utf-8') as f: + generic_traceroute2_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute3.json'), 'r', encoding='utf-8') as f: - self.generic_traceroute3_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute3.json'), 'r', encoding='utf-8') as f: + generic_traceroute3_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute4.json'), 'r', encoding='utf-8') as f: - self.generic_traceroute4_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute4.json'), 'r', encoding='utf-8') as f: + generic_traceroute4_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute5.json'), 'r', encoding='utf-8') as f: - self.generic_traceroute5_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute5.json'), 'r', encoding='utf-8') as f: + generic_traceroute5_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute6.json'), 'r', encoding='utf-8') as f: - self.generic_traceroute6_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute6.json'), 'r', encoding='utf-8') as f: + generic_traceroute6_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute7.json'), 'r', encoding='utf-8') as f: - self.generic_traceroute7_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute7.json'), 'r', encoding='utf-8') as f: + generic_traceroute7_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute8.json'), 'r', encoding='utf-8') as f: - self.generic_traceroute8_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute8.json'), 'r', encoding='utf-8') as f: + generic_traceroute8_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute-n-ipv4.json'), 'r', encoding='utf-8') as f: - self.generic_traceroute_n_ipv4_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute-n-ipv4.json'), 'r', encoding='utf-8') as f: + generic_traceroute_n_ipv4_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute-n-q1-ipv4.json'), 'r', encoding='utf-8') as f: - self.generic_traceroute_n_q1_ipv4_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute-n-q1-ipv4.json'), 'r', encoding='utf-8') as f: + generic_traceroute_n_q1_ipv4_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute-n-ipv6.json'), 'r', encoding='utf-8') as f: - self.generic_traceroute_n_ipv6_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute-n-ipv6.json'), 'r', encoding='utf-8') as f: + generic_traceroute_n_ipv6_json = json.loads(f.read()) def test_traceroute_nodata(self): diff --git a/tests/test_ufw.py b/tests/test_ufw.py index 28fdcc69..77eb6967 100644 --- a/tests/test_ufw.py +++ b/tests/test_ufw.py @@ -8,44 +8,44 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ufw-verbose.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_04_ufw_verbose = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ufw-verbose.out'), 'r', encoding='utf-8') as f: + ubuntu_18_04_ufw_verbose = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ufw-numbered.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_04_ufw_numbered = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ufw-numbered.out'), 'r', encoding='utf-8') as f: + ubuntu_18_04_ufw_numbered = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ufw.out'), 'r', encoding='utf-8') as f: - self.generic_ufw = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ufw.out'), 'r', encoding='utf-8') as f: + generic_ufw = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ufw-numbered.out'), 'r', encoding='utf-8') as f: - self.generic_ufw_numbered = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ufw-numbered.out'), 'r', encoding='utf-8') as f: + generic_ufw_numbered = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ufw-numbered2.out'), 'r', encoding='utf-8') as f: - self.generic_ufw_numbered2 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ufw-numbered2.out'), 'r', encoding='utf-8') as f: + generic_ufw_numbered2 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ufw-inactive.out'), 'r', encoding='utf-8') as f: - self.generic_ufw_inactive = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ufw-inactive.out'), 'r', encoding='utf-8') as f: + generic_ufw_inactive = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ufw-verbose.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_04_ufw_verbose_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ufw-verbose.json'), 'r', encoding='utf-8') as f: + ubuntu_18_04_ufw_verbose_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ufw-numbered.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_04_ufw_numbered_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ufw-numbered.json'), 'r', encoding='utf-8') as f: + ubuntu_18_04_ufw_numbered_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ufw.json'), 'r', encoding='utf-8') as f: - self.generic_ufw_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ufw.json'), 'r', encoding='utf-8') as f: + generic_ufw_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ufw-numbered.json'), 'r', encoding='utf-8') as f: - self.generic_ufw_numbered_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ufw-numbered.json'), 'r', encoding='utf-8') as f: + generic_ufw_numbered_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ufw-numbered2.json'), 'r', encoding='utf-8') as f: - self.generic_ufw_numbered2_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ufw-numbered2.json'), 'r', encoding='utf-8') as f: + generic_ufw_numbered2_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ufw-inactive.json'), 'r', encoding='utf-8') as f: + generic_ufw_inactive_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ufw-inactive.json'), 'r', encoding='utf-8') as f: - self.generic_ufw_inactive_json = json.loads(f.read()) def test_ufw_nodata(self): """ diff --git a/tests/test_ufw_appinfo.py b/tests/test_ufw_appinfo.py index 0e408042..caf6eea3 100644 --- a/tests/test_ufw_appinfo.py +++ b/tests/test_ufw_appinfo.py @@ -8,38 +8,38 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ufw-appinfo-all.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_04_ufw_appinfo_all = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ufw-appinfo-all.out'), 'r', encoding='utf-8') as f: + ubuntu_18_04_ufw_appinfo_all = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ufw-appinfo-test.out'), 'r', encoding='utf-8') as f: - self.generic_ufw_appinfo_test = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ufw-appinfo-test.out'), 'r', encoding='utf-8') as f: + generic_ufw_appinfo_test = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ufw-appinfo-test2.out'), 'r', encoding='utf-8') as f: - self.generic_ufw_appinfo_test2 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ufw-appinfo-test2.out'), 'r', encoding='utf-8') as f: + generic_ufw_appinfo_test2 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ufw-appinfo-test3.out'), 'r', encoding='utf-8') as f: - self.generic_ufw_appinfo_test3 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ufw-appinfo-test3.out'), 'r', encoding='utf-8') as f: + generic_ufw_appinfo_test3 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ufw-appinfo-msn.out'), 'r', encoding='utf-8') as f: - self.generic_ufw_appinfo_msn = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ufw-appinfo-msn.out'), 'r', encoding='utf-8') as f: + generic_ufw_appinfo_msn = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ufw-appinfo-all.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_04_ufw_appinfo_all_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/ufw-appinfo-all.json'), 'r', encoding='utf-8') as f: + ubuntu_18_04_ufw_appinfo_all_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ufw-appinfo-test.json'), 'r', encoding='utf-8') as f: - self.generic_ufw_appinfo_test_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ufw-appinfo-test.json'), 'r', encoding='utf-8') as f: + generic_ufw_appinfo_test_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ufw-appinfo-test2.json'), 'r', encoding='utf-8') as f: - self.generic_ufw_appinfo_test2_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ufw-appinfo-test2.json'), 'r', encoding='utf-8') as f: + generic_ufw_appinfo_test2_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ufw-appinfo-test3.json'), 'r', encoding='utf-8') as f: - self.generic_ufw_appinfo_test3_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ufw-appinfo-test3.json'), 'r', encoding='utf-8') as f: + generic_ufw_appinfo_test3_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ufw-appinfo-msn.json'), 'r', encoding='utf-8') as f: + generic_ufw_appinfo_msn_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/ufw-appinfo-msn.json'), 'r', encoding='utf-8') as f: - self.generic_ufw_appinfo_msn_json = json.loads(f.read()) def test_ufw_appinfo_nodata(self): """ diff --git a/tests/test_uname.py b/tests/test_uname.py index 03e33c2b..07c1a321 100644 --- a/tests/test_uname.py +++ b/tests/test_uname.py @@ -9,68 +9,68 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/uname-a.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_uname_a = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/uname-a.out'), 'r', encoding='utf-8') as f: + centos_7_7_uname_a = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/uname.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_uname = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/uname.out'), 'r', encoding='utf-8') as f: + centos_7_7_uname = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/uname-a.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_uname_a = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/uname-a.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_uname_a = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/uname-a.out'), 'r', encoding='utf-8') as f: - self.osx_10_11_6_uname_a = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/uname-a.out'), 'r', encoding='utf-8') as f: + osx_10_11_6_uname_a = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/uname-a.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_uname_a = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/uname-a.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_uname_a = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/uname.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_uname = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/uname.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_uname = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/uname-a.out'), 'r', encoding='utf-8') as f: - self.freebsd12_uname_a = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/uname-a.out'), 'r', encoding='utf-8') as f: + freebsd12_uname_a = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/uname-a2.out'), 'r', encoding='utf-8') as f: - self.freebsd12_uname_a2 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/uname-a2.out'), 'r', encoding='utf-8') as f: + freebsd12_uname_a2 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/uname-a.out'), 'r', encoding='utf-8') as f: - self.generic_uname_a = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/uname-a.out'), 'r', encoding='utf-8') as f: + generic_uname_a = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/uname-a-different-proc.out'), 'r', encoding='utf-8') as f: - self.generic_uname_a_different_proc = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/uname-a-different-proc.out'), 'r', encoding='utf-8') as f: + generic_uname_a_different_proc = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/debian10/uname-a.out'), 'r', encoding='utf-8') as f: - self.debian_10_uname_a = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/debian10/uname-a.out'), 'r', encoding='utf-8') as f: + debian_10_uname_a = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/uname-a.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_uname_a_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/uname-a.json'), 'r', encoding='utf-8') as f: + centos_7_7_uname_a_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/uname-a.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_uname_a_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/uname-a.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_uname_a_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/uname-a.json'), 'r', encoding='utf-8') as f: - self.osx_10_11_6_uname_a_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/uname-a.json'), 'r', encoding='utf-8') as f: + osx_10_11_6_uname_a_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/uname-a.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_uname_a_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/uname-a.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_uname_a_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/uname-a.json'), 'r', encoding='utf-8') as f: - self.freebsd12_uname_a_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/uname-a.json'), 'r', encoding='utf-8') as f: + freebsd12_uname_a_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/uname-a2.json'), 'r', encoding='utf-8') as f: - self.freebsd12_uname_a2_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/uname-a2.json'), 'r', encoding='utf-8') as f: + freebsd12_uname_a2_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/uname-a.json'), 'r', encoding='utf-8') as f: - self.generic_uname_a_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/uname-a.json'), 'r', encoding='utf-8') as f: + generic_uname_a_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/uname-a-different-proc.json'), 'r', encoding='utf-8') as f: - self.generic_uname_a_different_proc_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/uname-a-different-proc.json'), 'r', encoding='utf-8') as f: + generic_uname_a_different_proc_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/debian10/uname-a.json'), 'r', encoding='utf-8') as f: + debian_10_uname_a_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/debian10/uname-a.json'), 'r', encoding='utf-8') as f: - self.debian_10_uname_a_json = json.loads(f.read()) def test_uname_nodata(self): """ diff --git a/tests/test_update_alt_gs.py b/tests/test_update_alt_gs.py index fdda7f45..34929d13 100644 --- a/tests/test_update_alt_gs.py +++ b/tests/test_update_alt_gs.py @@ -8,14 +8,13 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/update-alternatives-get-selections.out'), 'r', encoding='utf-8') as f: - self.update_alternatives_get_selections = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/update-alternatives-get-selections.out'), 'r', encoding='utf-8') as f: + update_alternatives_get_selections = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/update-alternatives-get-selections.json'), 'r', encoding='utf-8') as f: - self.update_alternatives_get_selections_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/update-alternatives-get-selections.json'), 'r', encoding='utf-8') as f: + update_alternatives_get_selections_json = json.loads(f.read()) def test_update_alt_gs_nodata(self): diff --git a/tests/test_update_alt_q.py b/tests/test_update_alt_q.py index 7957f675..43484529 100644 --- a/tests/test_update_alt_q.py +++ b/tests/test_update_alt_q.py @@ -8,21 +8,19 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/update-alternatives-query.out'), 'r', encoding='utf-8') as f: - self.update_alternatives_query = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/update-alternatives-query.out'), 'r', encoding='utf-8') as f: + update_alternatives_query = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/update-alternatives-query2.out'), 'r', encoding='utf-8') as f: - self.update_alternatives_query2 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/update-alternatives-query2.out'), 'r', encoding='utf-8') as f: + update_alternatives_query2 = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/update-alternatives-query.json'), 'r', encoding='utf-8') as f: - self.update_alternatives_query_json = json.loads(f.read()) - - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/update-alternatives-query2.json'), 'r', encoding='utf-8') as f: - self.update_alternatives_query2_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/update-alternatives-query.json'), 'r', encoding='utf-8') as f: + update_alternatives_query_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/update-alternatives-query2.json'), 'r', encoding='utf-8') as f: + update_alternatives_query2_json = json.loads(f.read()) def test_update_alt_q_nodata(self): diff --git a/tests/test_upower.py b/tests/test_upower.py index a4f1b295..1281375c 100644 --- a/tests/test_upower.py +++ b/tests/test_upower.py @@ -15,44 +15,44 @@ if not sys.platform.startswith('win32'): class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/upower-i.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_upower_i = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/upower-i.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_upower_i = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/upower-d.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_upower_d = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/upower-d.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_upower_d = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/upower-d-clocale.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_upower_d_clocale = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/upower-d-clocale.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_upower_d_clocale = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/upower-i-utc.out'), 'r', encoding='utf-8') as f: - self.generic_upower_i_utc = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/upower-i-utc.out'), 'r', encoding='utf-8') as f: + generic_upower_i_utc = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/upower-i-non-utc.out'), 'r', encoding='utf-8') as f: - self.generic_upower_i_non_utc = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/upower-i-non-utc.out'), 'r', encoding='utf-8') as f: + generic_upower_i_non_utc = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/upower-i-c-locale.out'), 'r', encoding='utf-8') as f: - self.generic_upower_i_c_locale = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/upower-i-c-locale.out'), 'r', encoding='utf-8') as f: + generic_upower_i_c_locale = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/upower-i.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_upower_i_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/upower-i.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_upower_i_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/upower-d.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_upower_d_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/upower-d.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_upower_d_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/upower-d-clocale.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_upower_d_clocale_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/upower-d-clocale.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_upower_d_clocale_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/upower-i-utc.json'), 'r', encoding='utf-8') as f: - self.generic_upower_i_utc_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/upower-i-utc.json'), 'r', encoding='utf-8') as f: + generic_upower_i_utc_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/upower-i-non-utc.json'), 'r', encoding='utf-8') as f: - self.generic_upower_i_non_utc_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/upower-i-non-utc.json'), 'r', encoding='utf-8') as f: + generic_upower_i_non_utc_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/upower-i-c-locale.json'), 'r', encoding='utf-8') as f: + generic_upower_i_c_locale_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/upower-i-c-locale.json'), 'r', encoding='utf-8') as f: - self.generic_upower_i_c_locale_json = json.loads(f.read()) def test_upower_nodata(self): """ diff --git a/tests/test_uptime.py b/tests/test_uptime.py index 06a56c7e..cf8a75fd 100644 --- a/tests/test_uptime.py +++ b/tests/test_uptime.py @@ -8,32 +8,32 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/uptime.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_uptime = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/uptime.out'), 'r', encoding='utf-8') as f: + centos_7_7_uptime = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/uptime.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_uptime = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/uptime.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_uptime = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/uptime.out'), 'r', encoding='utf-8') as f: - self.osx_10_11_6_uptime = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/uptime.out'), 'r', encoding='utf-8') as f: + osx_10_11_6_uptime = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/uptime.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_uptime = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/uptime.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_uptime = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/uptime.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_uptime_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/uptime.json'), 'r', encoding='utf-8') as f: + centos_7_7_uptime_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/uptime.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_uptime_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/uptime.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_uptime_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/uptime.json'), 'r', encoding='utf-8') as f: - self.osx_10_11_6_uptime_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/uptime.json'), 'r', encoding='utf-8') as f: + osx_10_11_6_uptime_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/uptime.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_uptime_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/uptime.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_uptime_json = json.loads(f.read()) def test_uptime_nodata(self): """ diff --git a/tests/test_vmstat.py b/tests/test_vmstat.py index 93f8446e..689adb10 100644 --- a/tests/test_vmstat.py +++ b/tests/test_vmstat.py @@ -15,56 +15,56 @@ if not sys.platform.startswith('win32'): class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_vmstat = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat.out'), 'r', encoding='utf-8') as f: + centos_7_7_vmstat = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-a.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_vmstat_a = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-a.out'), 'r', encoding='utf-8') as f: + centos_7_7_vmstat_a = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-at-5-10.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_vmstat_at_5_10 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-at-5-10.out'), 'r', encoding='utf-8') as f: + centos_7_7_vmstat_at_5_10 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-awt.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_vmstat_awt = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-awt.out'), 'r', encoding='utf-8') as f: + centos_7_7_vmstat_awt = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-d.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_vmstat_d = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-d.out'), 'r', encoding='utf-8') as f: + centos_7_7_vmstat_d = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-dt.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_vmstat_dt = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-dt.out'), 'r', encoding='utf-8') as f: + centos_7_7_vmstat_dt = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-w.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_vmstat_w = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-w.out'), 'r', encoding='utf-8') as f: + centos_7_7_vmstat_w = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/vmstat-1-long.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_04_vmstat_1_long = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/vmstat-1-long.out'), 'r', encoding='utf-8') as f: + ubuntu_18_04_vmstat_1_long = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_vmstat_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat.json'), 'r', encoding='utf-8') as f: + centos_7_7_vmstat_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-a.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_vmstat_a_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-a.json'), 'r', encoding='utf-8') as f: + centos_7_7_vmstat_a_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-at-5-10.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_vmstat_at_5_10_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-at-5-10.json'), 'r', encoding='utf-8') as f: + centos_7_7_vmstat_at_5_10_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-awt.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_vmstat_awt_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-awt.json'), 'r', encoding='utf-8') as f: + centos_7_7_vmstat_awt_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-d.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_vmstat_d_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-d.json'), 'r', encoding='utf-8') as f: + centos_7_7_vmstat_d_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-dt.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_vmstat_dt_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-dt.json'), 'r', encoding='utf-8') as f: + centos_7_7_vmstat_dt_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-w.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_vmstat_w_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-w.json'), 'r', encoding='utf-8') as f: + centos_7_7_vmstat_w_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/vmstat-1-long.json'), 'r', encoding='utf-8') as f: + ubuntu_18_04_vmstat_1_long_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/vmstat-1-long.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_04_vmstat_1_long_json = json.loads(f.read()) def test_vmstat_nodata(self): """ diff --git a/tests/test_vmstat_s.py b/tests/test_vmstat_s.py index ec64bd31..01ed7a56 100644 --- a/tests/test_vmstat_s.py +++ b/tests/test_vmstat_s.py @@ -20,56 +20,56 @@ if not sys.platform.startswith('win32'): class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_vmstat = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat.out'), 'r', encoding='utf-8') as f: + centos_7_7_vmstat = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-a.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_vmstat_a = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-a.out'), 'r', encoding='utf-8') as f: + centos_7_7_vmstat_a = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-w.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_vmstat_w = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-w.out'), 'r', encoding='utf-8') as f: + centos_7_7_vmstat_w = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-at-5-10.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_vmstat_at_5_10 = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-at-5-10.out'), 'r', encoding='utf-8') as f: + centos_7_7_vmstat_at_5_10 = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-awt.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_vmstat_awt = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-awt.out'), 'r', encoding='utf-8') as f: + centos_7_7_vmstat_awt = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-d.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_vmstat_d = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-d.out'), 'r', encoding='utf-8') as f: + centos_7_7_vmstat_d = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-dt.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_vmstat_dt = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-dt.out'), 'r', encoding='utf-8') as f: + centos_7_7_vmstat_dt = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/vmstat-1-long.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_04_vmstat_1_long = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/vmstat-1-long.out'), 'r', encoding='utf-8') as f: + ubuntu_18_04_vmstat_1_long = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-streaming.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_vmstat_streaming_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-streaming.json'), 'r', encoding='utf-8') as f: + centos_7_7_vmstat_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-a-streaming.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_vmstat_a_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-a-streaming.json'), 'r', encoding='utf-8') as f: + centos_7_7_vmstat_a_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-w-streaming.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_vmstat_w_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-w-streaming.json'), 'r', encoding='utf-8') as f: + centos_7_7_vmstat_w_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-at-5-10-streaming.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_vmstat_at_5_10_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-at-5-10-streaming.json'), 'r', encoding='utf-8') as f: + centos_7_7_vmstat_at_5_10_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-awt-streaming.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_vmstat_awt_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-awt-streaming.json'), 'r', encoding='utf-8') as f: + centos_7_7_vmstat_awt_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-d-streaming.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_vmstat_d_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-d-streaming.json'), 'r', encoding='utf-8') as f: + centos_7_7_vmstat_d_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-dt-streaming.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_vmstat_dt_streaming_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/vmstat-dt-streaming.json'), 'r', encoding='utf-8') as f: + centos_7_7_vmstat_dt_streaming_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/vmstat-1-long-streaming.json'), 'r', encoding='utf-8') as f: + ubuntu_18_04_vmstat_1_long_streaming_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/vmstat-1-long-streaming.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_04_vmstat_1_long_streaming_json = json.loads(f.read()) def test_vmstat_s_nodata(self): """ diff --git a/tests/test_w.py b/tests/test_w.py index f360b4f9..327bfa95 100644 --- a/tests/test_w.py +++ b/tests/test_w.py @@ -8,38 +8,38 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/w.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_w = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/w.out'), 'r', encoding='utf-8') as f: + centos_7_7_w = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/w.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_w = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/w.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_w = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/w.out'), 'r', encoding='utf-8') as f: - self.osx_10_11_6_w = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/w.out'), 'r', encoding='utf-8') as f: + osx_10_11_6_w = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/w.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_w = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/w.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_w = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/nixos/w.out'), 'r', encoding='utf-8') as f: - self.nixos_w = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/nixos/w.out'), 'r', encoding='utf-8') as f: + nixos_w = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/w.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_w_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/w.json'), 'r', encoding='utf-8') as f: + centos_7_7_w_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/w.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_w_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/w.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_w_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/w.json'), 'r', encoding='utf-8') as f: - self.osx_10_11_6_w_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.11.6/w.json'), 'r', encoding='utf-8') as f: + osx_10_11_6_w_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/w.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_w_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/w.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_w_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/nixos/w.json'), 'r', encoding='utf-8') as f: + nixos_w_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/nixos/w.json'), 'r', encoding='utf-8') as f: - self.nixos_w_json = json.loads(f.read()) def test_w_nodata(self): """ diff --git a/tests/test_wc.py b/tests/test_wc.py index be21d612..516da8fc 100644 --- a/tests/test_wc.py +++ b/tests/test_wc.py @@ -8,26 +8,26 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/wc.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_wc = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/wc.out'), 'r', encoding='utf-8') as f: + centos_7_7_wc = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/wc.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_wc = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/wc.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_wc = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/wc-stdin.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_wc_stdin = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/wc-stdin.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_wc_stdin = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/wc.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_wc_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/wc.json'), 'r', encoding='utf-8') as f: + centos_7_7_wc_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/wc.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_wc_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/wc.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_wc_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/wc-stdin.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_wc_stdin_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/wc-stdin.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_wc_stdin_json = json.loads(f.read()) def test_wc_nodata(self): """ diff --git a/tests/test_who.py b/tests/test_who.py index 74357c5e..9678932d 100644 --- a/tests/test_who.py +++ b/tests/test_who.py @@ -15,44 +15,44 @@ if not sys.platform.startswith('win32'): class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/who.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_who = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/who.out'), 'r', encoding='utf-8') as f: + centos_7_7_who = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/who.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_who = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/who.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_who = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/who.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_who = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/who.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_who = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/who-a.out'), 'r', encoding='utf-8') as f: - self.centos_7_7_who_a = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/who-a.out'), 'r', encoding='utf-8') as f: + centos_7_7_who_a = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/who-a.out'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_who_a = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/who-a.out'), 'r', encoding='utf-8') as f: + ubuntu_18_4_who_a = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/who-a.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_who_a = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/who-a.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_who_a = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/who.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_who_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/who.json'), 'r', encoding='utf-8') as f: + centos_7_7_who_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/who.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_who_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/who.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_who_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/who.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_who_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/who.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_who_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/who-a.json'), 'r', encoding='utf-8') as f: - self.centos_7_7_who_a_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/who-a.json'), 'r', encoding='utf-8') as f: + centos_7_7_who_a_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/who-a.json'), 'r', encoding='utf-8') as f: - self.ubuntu_18_4_who_a_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/ubuntu-18.04/who-a.json'), 'r', encoding='utf-8') as f: + ubuntu_18_4_who_a_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/who-a.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_who_a_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/who-a.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_who_a_json = json.loads(f.read()) def test_who_nodata(self): """ diff --git a/tests/test_x509_cert.py b/tests/test_x509_cert.py index a9ffdc4d..4286e9de 100644 --- a/tests/test_x509_cert.py +++ b/tests/test_x509_cert.py @@ -8,32 +8,31 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/x509-ca-cert.der'), 'rb') as f: - self.x509_ca_cert = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/x509-ca-cert.der'), 'rb') as f: + x509_ca_cert = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/x509-cert-and-key.pem'), 'r', encoding='utf-8') as f: - self.x509_cert_and_key_pem = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/x509-cert-and-key.pem'), 'r', encoding='utf-8') as f: + x509_cert_and_key_pem = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/x509-letsencrypt.pem'), 'r', encoding='utf-8') as f: - self.x509_letsencrypt = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/x509-letsencrypt.pem'), 'r', encoding='utf-8') as f: + x509_letsencrypt = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/x509-multi-cert.pem'), 'r', encoding='utf-8') as f: - self.x509_multi_cert = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/x509-multi-cert.pem'), 'r', encoding='utf-8') as f: + x509_multi_cert = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/x509-ca-cert.json'), 'r', encoding='utf-8') as f: - self.x509_ca_cert_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/x509-ca-cert.json'), 'r', encoding='utf-8') as f: + x509_ca_cert_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/x509-cert-and-key.json'), 'r', encoding='utf-8') as f: - self.x509_cert_and_key_pem_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/x509-cert-and-key.json'), 'r', encoding='utf-8') as f: + x509_cert_and_key_pem_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/x509-letsencrypt.json'), 'r', encoding='utf-8') as f: - self.x509_letsencrypt_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/x509-letsencrypt.json'), 'r', encoding='utf-8') as f: + x509_letsencrypt_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/x509-multi-cert.json'), 'r', encoding='utf-8') as f: - self.x509_multi_cert_json = json.loads(f.read()) + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/x509-multi-cert.json'), 'r', encoding='utf-8') as f: + x509_multi_cert_json = json.loads(f.read()) def test_x509_cert_nodata(self): diff --git a/tests/test_xml.py b/tests/test_xml.py index a4b65c51..cf4eda9f 100644 --- a/tests/test_xml.py +++ b/tests/test_xml.py @@ -8,20 +8,20 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/xml-cd_catalog.xml'), 'r', encoding='utf-8') as f: - self.generic_xml_cd_catalog = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/xml-cd_catalog.xml'), 'r', encoding='utf-8') as f: + generic_xml_cd_catalog = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/xml-foodmenu.xml'), 'r', encoding='utf-8') as f: - self.generic_xml_foodmenu = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/xml-foodmenu.xml'), 'r', encoding='utf-8') as f: + generic_xml_foodmenu = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/xml-cd_catalog.json'), 'r', encoding='utf-8') as f: - self.generic_xml_cd_catalog_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/xml-cd_catalog.json'), 'r', encoding='utf-8') as f: + generic_xml_cd_catalog_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/xml-foodmenu.json'), 'r', encoding='utf-8') as f: + generic_xml_foodmenu_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/xml-foodmenu.json'), 'r', encoding='utf-8') as f: - self.generic_xml_foodmenu_json = json.loads(f.read()) def test_xml_nodata(self): """ diff --git a/tests/test_yaml.py b/tests/test_yaml.py index c6f07f80..92079cba 100644 --- a/tests/test_yaml.py +++ b/tests/test_yaml.py @@ -8,20 +8,20 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/yaml-istio-sc.yaml'), 'r', encoding='utf-8') as f: - self.generic_yaml_istio_sc = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/yaml-istio-sc.yaml'), 'r', encoding='utf-8') as f: + generic_yaml_istio_sc = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/yaml-istio-sidecar.yaml'), 'r', encoding='utf-8') as f: - self.generic_yaml_istio_sidecar = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/yaml-istio-sidecar.yaml'), 'r', encoding='utf-8') as f: + generic_yaml_istio_sidecar = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/yaml-istio-sc.json'), 'r', encoding='utf-8') as f: - self.generic_yaml_istio_sc_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/yaml-istio-sc.json'), 'r', encoding='utf-8') as f: + generic_yaml_istio_sc_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/yaml-istio-sidecar.json'), 'r', encoding='utf-8') as f: + generic_yaml_istio_sidecar_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/yaml-istio-sidecar.json'), 'r', encoding='utf-8') as f: - self.generic_yaml_istio_sidecar_json = json.loads(f.read()) def test_yaml_nodata(self): """ diff --git a/tests/test_zipinfo.py b/tests/test_zipinfo.py index 31d2aec4..2e0e9d56 100644 --- a/tests/test_zipinfo.py +++ b/tests/test_zipinfo.py @@ -8,20 +8,20 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): - def setUp(self): - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/rhel-8/zipinfo.out'), 'r', encoding='utf-8') as f: - self.rhel_8_zipinfo = f.read() + # input + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/rhel-8/zipinfo.out'), 'r', encoding='utf-8') as f: + rhel_8_zipinfo = f.read() - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/zipinfo-multi.out'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_zipinfo_multi = f.read() + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/zipinfo-multi.out'), 'r', encoding='utf-8') as f: + osx_10_14_6_zipinfo_multi = f.read() - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/rhel-8/zipinfo.json'), 'r', encoding='utf-8') as f: - self.rhel_8_zipinfo_json = json.loads(f.read()) + # output + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/rhel-8/zipinfo.json'), 'r', encoding='utf-8') as f: + rhel_8_zipinfo_json = json.loads(f.read()) + + with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/zipinfo-multi.json'), 'r', encoding='utf-8') as f: + osx_10_14_6_zipinfo_multi_json = json.loads(f.read()) - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/zipinfo-multi.json'), 'r', encoding='utf-8') as f: - self.osx_10_14_6_zipinfo_multi_json = json.loads(f.read()) def test_zipinfo_nodata(self): """ From fa1699298ba414b3b1c1bdbc8892af2ef79c920a Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Fri, 23 Sep 2022 16:19:35 -0700 Subject: [PATCH 084/124] new test templates --- tests/templates/_test_foo.py | 25 ++++++++++++++++++------- tests/templates/_test_foo_s.py | 26 +++++++++++++++++++------- 2 files changed, 37 insertions(+), 14 deletions(-) diff --git a/tests/templates/_test_foo.py b/tests/templates/_test_foo.py index de2b7618..fcdd1c30 100644 --- a/tests/templates/_test_foo.py +++ b/tests/templates/_test_foo.py @@ -1,20 +1,30 @@ import os import unittest import json +from typing import Dict import jc.parsers.foo THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/foo.out'), 'r', encoding='utf-8') as f: - centos_7_7_foo = f.read() + @classmethod + def setUpClass(cls): + fixtures = { + 'centos_7_7_foo': ( + 'fixtures/centos-7.7/foo.out', + 'fixtures/centos-7.7/foo.json') + } - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/foo.json'), 'r', encoding='utf-8') as f: - centos_7_7_foo_json = json.loads(f.read()) + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as f: + cls.f_in[file] = f.read() + + with open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as f: + cls.f_json[file] = json.loads(f.read()) def test_foo_nodata(self): @@ -27,7 +37,8 @@ class MyTests(unittest.TestCase): """ Test 'foo' on Centos 7.7 """ - self.assertEqual(jc.parsers.foo.parse(self.centos_7_7_foo, quiet=True), self.centos_7_7_foo_json) + self.assertEqual(jc.parsers.foo.parse(self.f_in['centos_7_7_foo'], quiet=True), + self.f_json['centos_7_7_foo']) if __name__ == '__main__': diff --git a/tests/templates/_test_foo_s.py b/tests/templates/_test_foo_s.py index 67b34d2a..1596c4ea 100644 --- a/tests/templates/_test_foo_s.py +++ b/tests/templates/_test_foo_s.py @@ -1,6 +1,7 @@ import os import json import unittest +from typing import Dict import jc.parsers.foo_s THIS_DIR = os.path.dirname(os.path.abspath(__file__)) @@ -10,14 +11,24 @@ THIS_DIR = os.path.dirname(os.path.abspath(__file__)) class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} - # input - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/foo.out'), 'r', encoding='utf-8') as f: - centos_7_7_foo = f.read() + @classmethod + def setUpClass(cls): + fixtures = { + 'centos_7_7_foo': ( + 'fixtures/centos-7.7/foo.out', + 'fixtures/centos-7.7/foo-streaming.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as f: + cls.f_in[file] = f.read() + + with open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as f: + cls.f_json[file] = json.loads(f.read()) - # output - with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/foo-streaming.json'), 'r', encoding='utf-8') as f: - centos_7_7_foo_streaming_json = json.loads(f.read()) def test_foo_s_nodata(self): """ @@ -29,7 +40,8 @@ class MyTests(unittest.TestCase): """ Test 'foo' on Centos 7.7 """ - self.assertEqual(list(jc.parsers.foo_s.parse(self.centos_7_7_foo.splitlines(), quiet=True)), self.centos_7_7_foo_streaming_json) + self.assertEqual(list(jc.parsers.foo_s.parse(self.f_in['centos_7_7_foo'].splitlines(), quiet=True)), + self.f_json['centos_7_7_foo']) if __name__ == '__main__': From ae9c1746f199020cb5d34b82b0236fbeb3b13a6d Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Fri, 23 Sep 2022 16:19:52 -0700 Subject: [PATCH 085/124] proc-buddyinfo tests --- tests/fixtures/linux-proc/buddyinfo | 3 ++ tests/fixtures/linux-proc/buddyinfo.json | 1 + tests/test_proc_buddyinfo.py | 45 ++++++++++++++++++++++++ 3 files changed, 49 insertions(+) create mode 100644 tests/fixtures/linux-proc/buddyinfo create mode 100644 tests/fixtures/linux-proc/buddyinfo.json create mode 100644 tests/test_proc_buddyinfo.py diff --git a/tests/fixtures/linux-proc/buddyinfo b/tests/fixtures/linux-proc/buddyinfo new file mode 100644 index 00000000..8ec94511 --- /dev/null +++ b/tests/fixtures/linux-proc/buddyinfo @@ -0,0 +1,3 @@ +Node 0, zone DMA 0 0 0 1 1 1 1 1 0 1 3 +Node 0, zone DMA32 78 114 82 52 38 25 13 9 3 4 629 +Node 0, zone Normal 0 22 8 10 1 1 2 11 13 0 0 diff --git a/tests/fixtures/linux-proc/buddyinfo.json b/tests/fixtures/linux-proc/buddyinfo.json new file mode 100644 index 00000000..b10535e1 --- /dev/null +++ b/tests/fixtures/linux-proc/buddyinfo.json @@ -0,0 +1 @@ +[{"node":0,"zone":"DMA","free_chunks":[0,0,0,1,1,1,1,1,0,1,3]},{"node":0,"zone":"DMA32","free_chunks":[78,114,82,52,38,25,13,9,3,4,629]},{"node":0,"zone":"Normal","free_chunks":[0,22,8,10,1,1,2,11,13,0,0]}] diff --git a/tests/test_proc_buddyinfo.py b/tests/test_proc_buddyinfo.py new file mode 100644 index 00000000..6418a0bd --- /dev/null +++ b/tests/test_proc_buddyinfo.py @@ -0,0 +1,45 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_buddyinfo + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_buddyinfo': ( + 'fixtures/linux-proc/buddyinfo', + 'fixtures/linux-proc/buddyinfo.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as f: + cls.f_in[file] = f.read() + + with open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as f: + cls.f_json[file] = json.loads(f.read()) + + + def test_proc_buddyinfo_nodata(self): + """ + Test 'proc_buddyinfo' with no data + """ + self.assertEqual(jc.parsers.proc_buddyinfo.parse('', quiet=True), []) + + def test_proc_buddyinfo(self): + """ + Test '/proc/buddyinfo' + """ + self.assertEqual(jc.parsers.proc_buddyinfo.parse(self.f_in['proc_buddyinfo'], quiet=True), + self.f_json['proc_buddyinfo']) + + +if __name__ == '__main__': + unittest.main() From 45fae976f0972db51cbddd4b0babfeb4530a8fa3 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Fri, 23 Sep 2022 16:30:43 -0700 Subject: [PATCH 086/124] test optimizations --- tests/templates/_test_foo.py | 9 ++++----- tests/templates/_test_foo_s.py | 9 ++++----- tests/test_proc_buddyinfo.py | 9 ++++----- 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/tests/templates/_test_foo.py b/tests/templates/_test_foo.py index fcdd1c30..e9440b6f 100644 --- a/tests/templates/_test_foo.py +++ b/tests/templates/_test_foo.py @@ -20,11 +20,10 @@ class MyTests(unittest.TestCase): } for file, filepaths in fixtures.items(): - with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as f: - cls.f_in[file] = f.read() - - with open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as f: - cls.f_json[file] = json.loads(f.read()) + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) def test_foo_nodata(self): diff --git a/tests/templates/_test_foo_s.py b/tests/templates/_test_foo_s.py index 1596c4ea..675567a6 100644 --- a/tests/templates/_test_foo_s.py +++ b/tests/templates/_test_foo_s.py @@ -23,11 +23,10 @@ class MyTests(unittest.TestCase): } for file, filepaths in fixtures.items(): - with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as f: - cls.f_in[file] = f.read() - - with open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as f: - cls.f_json[file] = json.loads(f.read()) + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) def test_foo_s_nodata(self): diff --git a/tests/test_proc_buddyinfo.py b/tests/test_proc_buddyinfo.py index 6418a0bd..6d74572b 100644 --- a/tests/test_proc_buddyinfo.py +++ b/tests/test_proc_buddyinfo.py @@ -20,11 +20,10 @@ class MyTests(unittest.TestCase): } for file, filepaths in fixtures.items(): - with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as f: - cls.f_in[file] = f.read() - - with open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as f: - cls.f_json[file] = json.loads(f.read()) + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) def test_proc_buddyinfo_nodata(self): From 00afd79858db5ed9d848a6dcb9721f77c5c08af4 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Fri, 23 Sep 2022 16:58:34 -0700 Subject: [PATCH 087/124] add test fixtures and tests --- tests/fixtures/linux-proc/consoles | 1 + tests/fixtures/linux-proc/consoles.json | 1 + tests/fixtures/linux-proc/consoles2 | 2 + tests/fixtures/linux-proc/consoles2.json | 1 + tests/fixtures/linux-proc/cpuinfo | 24 + tests/fixtures/linux-proc/cpuinfo.json | 1 + tests/fixtures/linux-proc/cpuinfo2 | 53 + tests/fixtures/linux-proc/cpuinfo2.json | 1 + tests/fixtures/linux-proc/crypto | 806 +++ tests/fixtures/linux-proc/crypto.json | 1 + tests/fixtures/linux-proc/devices | 67 + tests/fixtures/linux-proc/devices.json | 1 + tests/fixtures/linux-proc/diskstats | 16 + tests/fixtures/linux-proc/diskstats.json | 1 + tests/fixtures/linux-proc/driver_rtc | 18 + tests/fixtures/linux-proc/filesystems | 32 + tests/fixtures/linux-proc/interrupts | 66 + tests/fixtures/linux-proc/iomem | 119 + tests/fixtures/linux-proc/ioports | 63 + tests/fixtures/linux-proc/loadavg | 1 + tests/fixtures/linux-proc/locks | 4 + tests/fixtures/linux-proc/meminfo | 51 + tests/fixtures/linux-proc/modules | 92 + tests/fixtures/linux-proc/mtrr | 12 + tests/fixtures/linux-proc/net_arp | 4 + tests/fixtures/linux-proc/net_dev | 4 + tests/fixtures/linux-proc/net_dev_mcast | 6 + tests/fixtures/linux-proc/net_if_inet6 | 2 + tests/fixtures/linux-proc/net_igmp | 5 + tests/fixtures/linux-proc/net_igmp6 | 5 + tests/fixtures/linux-proc/net_ipv6_route | 7 + tests/fixtures/linux-proc/net_netlink | 27 + tests/fixtures/linux-proc/net_netstat | 6 + tests/fixtures/linux-proc/net_packet | 2 + tests/fixtures/linux-proc/net_protocols | 21 + tests/fixtures/linux-proc/net_route | 4 + tests/fixtures/linux-proc/net_unix | 131 + tests/fixtures/linux-proc/pagetypeinfo | 24 + tests/fixtures/linux-proc/partitions | 16 + tests/fixtures/linux-proc/pid_fdinfo | 6 + tests/fixtures/linux-proc/pid_fdinfo_dma | 7 + tests/fixtures/linux-proc/pid_fdinfo_epoll | 5 + tests/fixtures/linux-proc/pid_fdinfo_fanotify | 7 + tests/fixtures/linux-proc/pid_fdinfo_inotify | 5 + tests/fixtures/linux-proc/pid_fdinfo_timerfd | 9 + tests/fixtures/linux-proc/pid_io | 7 + tests/fixtures/linux-proc/pid_maps | 214 + tests/fixtures/linux-proc/pid_mountinfo | 46 + tests/fixtures/linux-proc/pid_numa_maps | 213 + tests/fixtures/linux-proc/pid_smaps | 4922 +++++++++++++++++ tests/fixtures/linux-proc/pid_stat | 1 + tests/fixtures/linux-proc/pid_statm | 1 + tests/fixtures/linux-proc/pid_status | 56 + tests/fixtures/linux-proc/scsi_device_info | 181 + tests/fixtures/linux-proc/scsi_scsi | 7 + tests/fixtures/linux-proc/slabinfo | 147 + tests/fixtures/linux-proc/softirqs | 12 + tests/fixtures/linux-proc/stat | 10 + tests/fixtures/linux-proc/stat2 | 24 + tests/fixtures/linux-proc/swaps | 2 + tests/fixtures/linux-proc/uptime | 1 + tests/fixtures/linux-proc/version | 1 + tests/fixtures/linux-proc/version2 | 1 + tests/fixtures/linux-proc/version3 | 1 + tests/fixtures/linux-proc/vmallocinfo | 1362 +++++ tests/fixtures/linux-proc/vmstat | 147 + tests/fixtures/linux-proc/zoneinfo | 175 + tests/fixtures/linux-proc/zoneinfo2 | 363 ++ tests/test_proc_consoles.py | 54 + tests/test_proc_cpuinfo.py | 54 + tests/test_proc_crypto.py | 44 + tests/test_proc_devices.py | 44 + tests/test_proc_diskstats.py | 44 + 73 files changed, 9871 insertions(+) create mode 100644 tests/fixtures/linux-proc/consoles create mode 100644 tests/fixtures/linux-proc/consoles.json create mode 100644 tests/fixtures/linux-proc/consoles2 create mode 100644 tests/fixtures/linux-proc/consoles2.json create mode 100644 tests/fixtures/linux-proc/cpuinfo create mode 100644 tests/fixtures/linux-proc/cpuinfo.json create mode 100644 tests/fixtures/linux-proc/cpuinfo2 create mode 100644 tests/fixtures/linux-proc/cpuinfo2.json create mode 100644 tests/fixtures/linux-proc/crypto create mode 100644 tests/fixtures/linux-proc/crypto.json create mode 100644 tests/fixtures/linux-proc/devices create mode 100644 tests/fixtures/linux-proc/devices.json create mode 100644 tests/fixtures/linux-proc/diskstats create mode 100644 tests/fixtures/linux-proc/diskstats.json create mode 100644 tests/fixtures/linux-proc/driver_rtc create mode 100644 tests/fixtures/linux-proc/filesystems create mode 100644 tests/fixtures/linux-proc/interrupts create mode 100644 tests/fixtures/linux-proc/iomem create mode 100644 tests/fixtures/linux-proc/ioports create mode 100644 tests/fixtures/linux-proc/loadavg create mode 100644 tests/fixtures/linux-proc/locks create mode 100644 tests/fixtures/linux-proc/meminfo create mode 100644 tests/fixtures/linux-proc/modules create mode 100644 tests/fixtures/linux-proc/mtrr create mode 100644 tests/fixtures/linux-proc/net_arp create mode 100644 tests/fixtures/linux-proc/net_dev create mode 100644 tests/fixtures/linux-proc/net_dev_mcast create mode 100644 tests/fixtures/linux-proc/net_if_inet6 create mode 100644 tests/fixtures/linux-proc/net_igmp create mode 100644 tests/fixtures/linux-proc/net_igmp6 create mode 100644 tests/fixtures/linux-proc/net_ipv6_route create mode 100644 tests/fixtures/linux-proc/net_netlink create mode 100644 tests/fixtures/linux-proc/net_netstat create mode 100644 tests/fixtures/linux-proc/net_packet create mode 100644 tests/fixtures/linux-proc/net_protocols create mode 100644 tests/fixtures/linux-proc/net_route create mode 100644 tests/fixtures/linux-proc/net_unix create mode 100644 tests/fixtures/linux-proc/pagetypeinfo create mode 100644 tests/fixtures/linux-proc/partitions create mode 100644 tests/fixtures/linux-proc/pid_fdinfo create mode 100644 tests/fixtures/linux-proc/pid_fdinfo_dma create mode 100644 tests/fixtures/linux-proc/pid_fdinfo_epoll create mode 100644 tests/fixtures/linux-proc/pid_fdinfo_fanotify create mode 100644 tests/fixtures/linux-proc/pid_fdinfo_inotify create mode 100644 tests/fixtures/linux-proc/pid_fdinfo_timerfd create mode 100644 tests/fixtures/linux-proc/pid_io create mode 100644 tests/fixtures/linux-proc/pid_maps create mode 100644 tests/fixtures/linux-proc/pid_mountinfo create mode 100644 tests/fixtures/linux-proc/pid_numa_maps create mode 100644 tests/fixtures/linux-proc/pid_smaps create mode 100644 tests/fixtures/linux-proc/pid_stat create mode 100644 tests/fixtures/linux-proc/pid_statm create mode 100644 tests/fixtures/linux-proc/pid_status create mode 100644 tests/fixtures/linux-proc/scsi_device_info create mode 100644 tests/fixtures/linux-proc/scsi_scsi create mode 100644 tests/fixtures/linux-proc/slabinfo create mode 100644 tests/fixtures/linux-proc/softirqs create mode 100644 tests/fixtures/linux-proc/stat create mode 100644 tests/fixtures/linux-proc/stat2 create mode 100644 tests/fixtures/linux-proc/swaps create mode 100644 tests/fixtures/linux-proc/uptime create mode 100644 tests/fixtures/linux-proc/version create mode 100644 tests/fixtures/linux-proc/version2 create mode 100644 tests/fixtures/linux-proc/version3 create mode 100644 tests/fixtures/linux-proc/vmallocinfo create mode 100644 tests/fixtures/linux-proc/vmstat create mode 100644 tests/fixtures/linux-proc/zoneinfo create mode 100644 tests/fixtures/linux-proc/zoneinfo2 create mode 100644 tests/test_proc_consoles.py create mode 100644 tests/test_proc_cpuinfo.py create mode 100644 tests/test_proc_crypto.py create mode 100644 tests/test_proc_devices.py create mode 100644 tests/test_proc_diskstats.py diff --git a/tests/fixtures/linux-proc/consoles b/tests/fixtures/linux-proc/consoles new file mode 100644 index 00000000..24927661 --- /dev/null +++ b/tests/fixtures/linux-proc/consoles @@ -0,0 +1 @@ +tty0 -WU (EC p ) 4:1 diff --git a/tests/fixtures/linux-proc/consoles.json b/tests/fixtures/linux-proc/consoles.json new file mode 100644 index 00000000..e3b758a9 --- /dev/null +++ b/tests/fixtures/linux-proc/consoles.json @@ -0,0 +1 @@ +[{"device":"tty0","operations":"-WU","operations_list":["write","unblank"],"flags":"EC p ","flags_list":["enabled","preferred","printk buffer"],"major":4,"minor":1}] diff --git a/tests/fixtures/linux-proc/consoles2 b/tests/fixtures/linux-proc/consoles2 new file mode 100644 index 00000000..ba4ce5f6 --- /dev/null +++ b/tests/fixtures/linux-proc/consoles2 @@ -0,0 +1,2 @@ +tty0 -WU (ECp) 4:7 +ttyS0 -W- (Ep) 4:64 diff --git a/tests/fixtures/linux-proc/consoles2.json b/tests/fixtures/linux-proc/consoles2.json new file mode 100644 index 00000000..f2ffa799 --- /dev/null +++ b/tests/fixtures/linux-proc/consoles2.json @@ -0,0 +1 @@ +[{"device":"tty0","operations":"-WU","operations_list":["write","unblank"],"flags":"ECp","flags_list":["enabled","preferred","printk buffer"],"major":4,"minor":7},{"device":"ttyS0","operations":"-W-","operations_list":["write"],"flags":"Ep","flags_list":["enabled","printk buffer"],"major":4,"minor":64}] diff --git a/tests/fixtures/linux-proc/cpuinfo b/tests/fixtures/linux-proc/cpuinfo new file mode 100644 index 00000000..c0a08587 --- /dev/null +++ b/tests/fixtures/linux-proc/cpuinfo @@ -0,0 +1,24 @@ +processor : 0 +vendor_id : GenuineIntel +cpu family : 6 +model : 142 +model name : Intel(R) Core(TM) i5-7360U CPU @ 2.30GHz +stepping : 9 +cpu MHz : 2303.998 +cache size : 4096 KB +physical id : 0 +siblings : 1 +core id : 0 +cpu cores : 1 +apicid : 0 +initial apicid : 0 +fpu : yes +fpu_exception : yes +cpuid level : 22 +wp : yes +flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc eagerfpu pni pclmulqdq monitor ssse3 cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx rdrand hypervisor lahf_lm abm 3dnowprefetch fsgsbase avx2 invpcid rdseed clflushopt md_clear flush_l1d +bogomips : 4607.99 +clflush size : 64 +cache_alignment : 64 +address sizes : 39 bits physical, 48 bits virtual +power management: diff --git a/tests/fixtures/linux-proc/cpuinfo.json b/tests/fixtures/linux-proc/cpuinfo.json new file mode 100644 index 00000000..3baeaff1 --- /dev/null +++ b/tests/fixtures/linux-proc/cpuinfo.json @@ -0,0 +1 @@ +[{"processor":0,"vendor_id":"GenuineIntel","cpu family":6,"model":142,"model name":"Intel(R) Core(TM) i5-7360U CPU @ 2.30GHz","stepping":9,"cpu MHz":2303.998,"cache size":"4096 KB","physical id":0,"siblings":1,"core id":0,"cpu cores":1,"apicid":0,"initial apicid":0,"fpu":true,"fpu_exception":true,"cpuid level":22,"wp":true,"flags":["fpu","vme","de","pse","tsc","msr","pae","mce","cx8","apic","sep","mtrr","pge","mca","cmov","pat","pse36","clflush","mmx","fxsr","sse","sse2","ht","syscall","nx","rdtscp","lm","constant_tsc","rep_good","nopl","xtopology","nonstop_tsc","eagerfpu","pni","pclmulqdq","monitor","ssse3","cx16","pcid","sse4_1","sse4_2","x2apic","movbe","popcnt","aes","xsave","avx","rdrand","hypervisor","lahf_lm","abm","3dnowprefetch","fsgsbase","avx2","invpcid","rdseed","clflushopt","md_clear","flush_l1d"],"bogomips":4607.99,"clflush size":64,"cache_alignment":64,"address sizes":"39 bits physical, 48 bits virtual","power management":null,"address_size_physical":39,"address_size_virtual":48,"cache_size_num":4096,"cache_size_unit":"KB"}] diff --git a/tests/fixtures/linux-proc/cpuinfo2 b/tests/fixtures/linux-proc/cpuinfo2 new file mode 100644 index 00000000..7970c910 --- /dev/null +++ b/tests/fixtures/linux-proc/cpuinfo2 @@ -0,0 +1,53 @@ +processor : 0 +vendor_id : GenuineIntel +cpu family : 6 +model : 142 +model name : Intel(R) Core(TM) i5-8279U CPU @ 2.40GHz +stepping : 10 +cpu MHz : 2400.000 +cache size : 6144 KB +physical id : 0 +siblings : 1 +core id : 0 +cpu cores : 1 +apicid : 0 +initial apicid : 0 +fpu : yes +fpu_exception : yes +cpuid level : 22 +wp : yes +flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc cpuid pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch cpuid_fault invpcid_single pti ssbd ibrs ibpb stibp fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 xsaves arat md_clear flush_l1d arch_capabilities +bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit srbds +bogomips : 4800.00 +clflush size : 64 +cache_alignment : 64 +address sizes : 45 bits physical, 48 bits virtual +power management: + +processor : 1 +vendor_id : GenuineIntel +cpu family : 6 +model : 142 +model name : Intel(R) Core(TM) i5-8279U CPU @ 2.40GHz +stepping : 10 +cpu MHz : 2400.000 +cache size : 6144 KB +physical id : 2 +siblings : 1 +core id : 0 +cpu cores : 1 +apicid : 2 +initial apicid : 2 +fpu : yes +fpu_exception : yes +cpuid level : 22 +wp : yes +flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc cpuid pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch cpuid_fault invpcid_single pti ssbd ibrs ibpb stibp fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 xsaves arat md_clear flush_l1d arch_capabilities +bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit srbds +bogomips : 4800.00 +clflush size : 64 +cache_alignment : 64 +address sizes : 45 bits physical, 48 bits virtual +power management: + + diff --git a/tests/fixtures/linux-proc/cpuinfo2.json b/tests/fixtures/linux-proc/cpuinfo2.json new file mode 100644 index 00000000..6a24797c --- /dev/null +++ b/tests/fixtures/linux-proc/cpuinfo2.json @@ -0,0 +1 @@ +[{"processor":0,"vendor_id":"GenuineIntel","cpu family":6,"model":142,"model name":"Intel(R) Core(TM) i5-8279U CPU @ 2.40GHz","stepping":10,"cpu MHz":2400.0,"cache size":"6144 KB","physical id":0,"siblings":1,"core id":0,"cpu cores":1,"apicid":0,"initial apicid":0,"fpu":true,"fpu_exception":true,"cpuid level":22,"wp":true,"flags":["fpu","vme","de","pse","tsc","msr","pae","mce","cx8","apic","sep","mtrr","pge","mca","cmov","pat","pse36","clflush","mmx","fxsr","sse","sse2","ss","syscall","nx","pdpe1gb","rdtscp","lm","constant_tsc","arch_perfmon","nopl","xtopology","tsc_reliable","nonstop_tsc","cpuid","pni","pclmulqdq","ssse3","fma","cx16","pcid","sse4_1","sse4_2","x2apic","movbe","popcnt","tsc_deadline_timer","aes","xsave","avx","f16c","rdrand","hypervisor","lahf_lm","abm","3dnowprefetch","cpuid_fault","invpcid_single","pti","ssbd","ibrs","ibpb","stibp","fsgsbase","tsc_adjust","bmi1","avx2","smep","bmi2","invpcid","rdseed","adx","smap","clflushopt","xsaveopt","xsavec","xgetbv1","xsaves","arat","md_clear","flush_l1d","arch_capabilities"],"bugs":["cpu_meltdown","spectre_v1","spectre_v2","spec_store_bypass","l1tf","mds","swapgs","itlb_multihit","srbds"],"bogomips":4800.0,"clflush size":64,"cache_alignment":64,"address sizes":"45 bits physical, 48 bits virtual","power management":null,"address_size_physical":45,"address_size_virtual":48,"cache_size_num":6144,"cache_size_unit":"KB"},{"processor":1,"vendor_id":"GenuineIntel","cpu family":6,"model":142,"model name":"Intel(R) Core(TM) i5-8279U CPU @ 2.40GHz","stepping":10,"cpu MHz":2400.0,"cache size":"6144 KB","physical id":2,"siblings":1,"core id":0,"cpu cores":1,"apicid":2,"initial apicid":2,"fpu":true,"fpu_exception":true,"cpuid level":22,"wp":true,"flags":["fpu","vme","de","pse","tsc","msr","pae","mce","cx8","apic","sep","mtrr","pge","mca","cmov","pat","pse36","clflush","mmx","fxsr","sse","sse2","ss","syscall","nx","pdpe1gb","rdtscp","lm","constant_tsc","arch_perfmon","nopl","xtopology","tsc_reliable","nonstop_tsc","cpuid","pni","pclmulqdq","ssse3","fma","cx16","pcid","sse4_1","sse4_2","x2apic","movbe","popcnt","tsc_deadline_timer","aes","xsave","avx","f16c","rdrand","hypervisor","lahf_lm","abm","3dnowprefetch","cpuid_fault","invpcid_single","pti","ssbd","ibrs","ibpb","stibp","fsgsbase","tsc_adjust","bmi1","avx2","smep","bmi2","invpcid","rdseed","adx","smap","clflushopt","xsaveopt","xsavec","xgetbv1","xsaves","arat","md_clear","flush_l1d","arch_capabilities"],"bugs":["cpu_meltdown","spectre_v1","spectre_v2","spec_store_bypass","l1tf","mds","swapgs","itlb_multihit","srbds"],"bogomips":4800.0,"clflush size":64,"cache_alignment":64,"address sizes":"45 bits physical, 48 bits virtual","power management":null,"address_size_physical":45,"address_size_virtual":48,"cache_size_num":6144,"cache_size_unit":"KB"}] diff --git a/tests/fixtures/linux-proc/crypto b/tests/fixtures/linux-proc/crypto new file mode 100644 index 00000000..662065bb --- /dev/null +++ b/tests/fixtures/linux-proc/crypto @@ -0,0 +1,806 @@ +name : ecdh +driver : ecdh-generic +module : ecdh_generic +priority : 100 +refcnt : 1 +selftest : passed +internal : no +type : kpp + +name : blake2b-512 +driver : blake2b-512-generic +module : blake2b_generic +priority : 100 +refcnt : 1 +selftest : passed +internal : no +type : shash +blocksize : 128 +digestsize : 64 + +name : blake2b-384 +driver : blake2b-384-generic +module : blake2b_generic +priority : 100 +refcnt : 1 +selftest : passed +internal : no +type : shash +blocksize : 128 +digestsize : 48 + +name : blake2b-256 +driver : blake2b-256-generic +module : blake2b_generic +priority : 100 +refcnt : 1 +selftest : passed +internal : no +type : shash +blocksize : 128 +digestsize : 32 + +name : blake2b-160 +driver : blake2b-160-generic +module : blake2b_generic +priority : 100 +refcnt : 1 +selftest : passed +internal : no +type : shash +blocksize : 128 +digestsize : 20 + +name : crct10dif +driver : crct10dif-pclmul +module : crct10dif_pclmul +priority : 200 +refcnt : 2 +selftest : passed +internal : no +type : shash +blocksize : 1 +digestsize : 2 + +name : crc32 +driver : crc32-pclmul +module : crc32_pclmul +priority : 200 +refcnt : 1 +selftest : passed +internal : no +type : shash +blocksize : 1 +digestsize : 4 + +name : ghash +driver : ghash-clmulni +module : ghash_clmulni_intel +priority : 400 +refcnt : 1 +selftest : passed +internal : no +type : ahash +async : yes +blocksize : 16 +digestsize : 16 + +name : __ghash +driver : __ghash-pclmulqdqni +module : ghash_clmulni_intel +priority : 0 +refcnt : 1 +selftest : passed +internal : yes +type : shash +blocksize : 16 +digestsize : 16 + +name : gcm(aes) +driver : generic-gcm-aesni +module : aesni_intel +priority : 400 +refcnt : 1 +selftest : passed +internal : no +type : aead +async : yes +blocksize : 1 +ivsize : 12 +maxauthsize : 16 +geniv : + +name : rfc4106(gcm(aes)) +driver : rfc4106-gcm-aesni +module : aesni_intel +priority : 400 +refcnt : 1 +selftest : passed +internal : no +type : aead +async : yes +blocksize : 1 +ivsize : 8 +maxauthsize : 16 +geniv : + +name : __gcm(aes) +driver : __generic-gcm-aesni +module : aesni_intel +priority : 400 +refcnt : 1 +selftest : passed +internal : yes +type : aead +async : no +blocksize : 1 +ivsize : 12 +maxauthsize : 16 +geniv : + +name : __rfc4106(gcm(aes)) +driver : __rfc4106-gcm-aesni +module : aesni_intel +priority : 400 +refcnt : 1 +selftest : passed +internal : yes +type : aead +async : no +blocksize : 1 +ivsize : 8 +maxauthsize : 16 +geniv : + +name : xts(aes) +driver : xts-aes-aesni +module : aesni_intel +priority : 401 +refcnt : 1 +selftest : passed +internal : no +type : skcipher +async : yes +blocksize : 16 +min keysize : 32 +max keysize : 64 +ivsize : 16 +chunksize : 16 +walksize : 16 + +name : ctr(aes) +driver : ctr-aes-aesni +module : aesni_intel +priority : 400 +refcnt : 1 +selftest : passed +internal : no +type : skcipher +async : yes +blocksize : 1 +min keysize : 16 +max keysize : 32 +ivsize : 16 +chunksize : 16 +walksize : 16 + +name : cbc(aes) +driver : cbc-aes-aesni +module : aesni_intel +priority : 400 +refcnt : 1 +selftest : passed +internal : no +type : skcipher +async : yes +blocksize : 16 +min keysize : 16 +max keysize : 32 +ivsize : 16 +chunksize : 16 +walksize : 16 + +name : ecb(aes) +driver : ecb-aes-aesni +module : aesni_intel +priority : 400 +refcnt : 1 +selftest : passed +internal : no +type : skcipher +async : yes +blocksize : 16 +min keysize : 16 +max keysize : 32 +ivsize : 0 +chunksize : 16 +walksize : 16 + +name : __xts(aes) +driver : __xts-aes-aesni +module : aesni_intel +priority : 401 +refcnt : 1 +selftest : passed +internal : yes +type : skcipher +async : no +blocksize : 16 +min keysize : 32 +max keysize : 64 +ivsize : 16 +chunksize : 16 +walksize : 16 + +name : __ctr(aes) +driver : __ctr-aes-aesni +module : aesni_intel +priority : 400 +refcnt : 1 +selftest : passed +internal : yes +type : skcipher +async : no +blocksize : 1 +min keysize : 16 +max keysize : 32 +ivsize : 16 +chunksize : 16 +walksize : 16 + +name : __cbc(aes) +driver : __cbc-aes-aesni +module : aesni_intel +priority : 400 +refcnt : 1 +selftest : passed +internal : yes +type : skcipher +async : no +blocksize : 16 +min keysize : 16 +max keysize : 32 +ivsize : 16 +chunksize : 16 +walksize : 16 + +name : __ecb(aes) +driver : __ecb-aes-aesni +module : aesni_intel +priority : 400 +refcnt : 1 +selftest : passed +internal : yes +type : skcipher +async : no +blocksize : 16 +min keysize : 16 +max keysize : 32 +ivsize : 0 +chunksize : 16 +walksize : 16 + +name : aes +driver : aes-aesni +module : aesni_intel +priority : 300 +refcnt : 1 +selftest : passed +internal : no +type : cipher +blocksize : 16 +min keysize : 16 +max keysize : 32 + +name : pkcs1pad(rsa,sha512) +driver : pkcs1pad(rsa-generic,sha512) +module : kernel +priority : 100 +refcnt : 1 +selftest : passed +internal : no +type : akcipher + +name : hmac(sha256) +driver : hmac(sha256-generic) +module : kernel +priority : 100 +refcnt : 129 +selftest : passed +internal : no +type : shash +blocksize : 64 +digestsize : 32 + +name : hmac(sha1) +driver : hmac(sha1-generic) +module : kernel +priority : 100 +refcnt : 129 +selftest : passed +internal : no +type : shash +blocksize : 64 +digestsize : 20 + +name : jitterentropy_rng +driver : jitterentropy_rng +module : kernel +priority : 100 +refcnt : 1 +selftest : passed +internal : no +type : rng +seedsize : 0 + +name : crc32c +driver : crc32c-intel +module : kernel +priority : 200 +refcnt : 6 +selftest : passed +internal : no +type : shash +blocksize : 1 +digestsize : 4 + +name : ghash +driver : ghash-generic +module : kernel +priority : 100 +refcnt : 1 +selftest : passed +internal : no +type : shash +blocksize : 16 +digestsize : 16 + +name : stdrng +driver : drbg_nopr_hmac_sha256 +module : kernel +priority : 221 +refcnt : 1 +selftest : passed +internal : no +type : rng +seedsize : 0 + +name : stdrng +driver : drbg_nopr_hmac_sha512 +module : kernel +priority : 220 +refcnt : 1 +selftest : passed +internal : no +type : rng +seedsize : 0 + +name : stdrng +driver : drbg_nopr_hmac_sha384 +module : kernel +priority : 219 +refcnt : 1 +selftest : passed +internal : no +type : rng +seedsize : 0 + +name : stdrng +driver : drbg_nopr_hmac_sha1 +module : kernel +priority : 218 +refcnt : 1 +selftest : passed +internal : no +type : rng +seedsize : 0 + +name : stdrng +driver : drbg_nopr_sha256 +module : kernel +priority : 217 +refcnt : 1 +selftest : passed +internal : no +type : rng +seedsize : 0 + +name : stdrng +driver : drbg_nopr_sha512 +module : kernel +priority : 216 +refcnt : 1 +selftest : passed +internal : no +type : rng +seedsize : 0 + +name : stdrng +driver : drbg_nopr_sha384 +module : kernel +priority : 215 +refcnt : 1 +selftest : passed +internal : no +type : rng +seedsize : 0 + +name : stdrng +driver : drbg_nopr_sha1 +module : kernel +priority : 214 +refcnt : 1 +selftest : passed +internal : no +type : rng +seedsize : 0 + +name : stdrng +driver : drbg_nopr_ctr_aes256 +module : kernel +priority : 213 +refcnt : 1 +selftest : passed +internal : no +type : rng +seedsize : 0 + +name : stdrng +driver : drbg_nopr_ctr_aes192 +module : kernel +priority : 212 +refcnt : 1 +selftest : passed +internal : no +type : rng +seedsize : 0 + +name : stdrng +driver : drbg_nopr_ctr_aes128 +module : kernel +priority : 211 +refcnt : 1 +selftest : passed +internal : no +type : rng +seedsize : 0 + +name : stdrng +driver : drbg_pr_hmac_sha256 +module : kernel +priority : 210 +refcnt : 1 +selftest : passed +internal : no +type : rng +seedsize : 0 + +name : stdrng +driver : drbg_pr_hmac_sha512 +module : kernel +priority : 209 +refcnt : 1 +selftest : passed +internal : no +type : rng +seedsize : 0 + +name : stdrng +driver : drbg_pr_hmac_sha384 +module : kernel +priority : 208 +refcnt : 1 +selftest : passed +internal : no +type : rng +seedsize : 0 + +name : stdrng +driver : drbg_pr_hmac_sha1 +module : kernel +priority : 207 +refcnt : 1 +selftest : passed +internal : no +type : rng +seedsize : 0 + +name : stdrng +driver : drbg_pr_sha256 +module : kernel +priority : 206 +refcnt : 1 +selftest : passed +internal : no +type : rng +seedsize : 0 + +name : stdrng +driver : drbg_pr_sha512 +module : kernel +priority : 205 +refcnt : 1 +selftest : passed +internal : no +type : rng +seedsize : 0 + +name : stdrng +driver : drbg_pr_sha384 +module : kernel +priority : 204 +refcnt : 1 +selftest : passed +internal : no +type : rng +seedsize : 0 + +name : stdrng +driver : drbg_pr_sha1 +module : kernel +priority : 203 +refcnt : 1 +selftest : passed +internal : no +type : rng +seedsize : 0 + +name : stdrng +driver : drbg_pr_ctr_aes256 +module : kernel +priority : 202 +refcnt : 1 +selftest : passed +internal : no +type : rng +seedsize : 0 + +name : stdrng +driver : drbg_pr_ctr_aes192 +module : kernel +priority : 201 +refcnt : 1 +selftest : passed +internal : no +type : rng +seedsize : 0 + +name : stdrng +driver : drbg_pr_ctr_aes128 +module : kernel +priority : 200 +refcnt : 1 +selftest : passed +internal : no +type : rng +seedsize : 0 + +name : lzo-rle +driver : lzo-rle-scomp +module : kernel +priority : 0 +refcnt : 1 +selftest : passed +internal : no +type : scomp + +name : lzo-rle +driver : lzo-rle-generic +module : kernel +priority : 0 +refcnt : 1 +selftest : passed +internal : no +type : compression + +name : lzo +driver : lzo-scomp +module : kernel +priority : 0 +refcnt : 1 +selftest : passed +internal : no +type : scomp + +name : lzo +driver : lzo-generic +module : kernel +priority : 0 +refcnt : 3 +selftest : passed +internal : no +type : compression + +name : crct10dif +driver : crct10dif-generic +module : kernel +priority : 100 +refcnt : 1 +selftest : passed +internal : no +type : shash +blocksize : 1 +digestsize : 2 + +name : crc32c +driver : crc32c-generic +module : kernel +priority : 100 +refcnt : 1 +selftest : passed +internal : no +type : shash +blocksize : 1 +digestsize : 4 + +name : zlib-deflate +driver : zlib-deflate-scomp +module : kernel +priority : 0 +refcnt : 1 +selftest : passed +internal : no +type : scomp + +name : deflate +driver : deflate-scomp +module : kernel +priority : 0 +refcnt : 1 +selftest : passed +internal : no +type : scomp + +name : deflate +driver : deflate-generic +module : kernel +priority : 0 +refcnt : 1 +selftest : passed +internal : no +type : compression + +name : aes +driver : aes-generic +module : kernel +priority : 100 +refcnt : 1 +selftest : passed +internal : no +type : cipher +blocksize : 16 +min keysize : 16 +max keysize : 32 + +name : sha384 +driver : sha384-generic +module : kernel +priority : 100 +refcnt : 1 +selftest : passed +internal : no +type : shash +blocksize : 128 +digestsize : 48 + +name : sha512 +driver : sha512-generic +module : kernel +priority : 100 +refcnt : 1 +selftest : passed +internal : no +type : shash +blocksize : 128 +digestsize : 64 + +name : sha224 +driver : sha224-generic +module : kernel +priority : 100 +refcnt : 1 +selftest : passed +internal : no +type : shash +blocksize : 64 +digestsize : 28 + +name : sha256 +driver : sha256-generic +module : kernel +priority : 100 +refcnt : 130 +selftest : passed +internal : no +type : shash +blocksize : 64 +digestsize : 32 + +name : sha1 +driver : sha1-generic +module : kernel +priority : 100 +refcnt : 132 +selftest : passed +internal : no +type : shash +blocksize : 64 +digestsize : 20 + +name : md5 +driver : md5-generic +module : kernel +priority : 0 +refcnt : 1 +selftest : passed +internal : no +type : shash +blocksize : 64 +digestsize : 16 + +name : ecb(cipher_null) +driver : ecb-cipher_null +module : kernel +priority : 100 +refcnt : 1 +selftest : passed +internal : no +type : skcipher +async : no +blocksize : 1 +min keysize : 0 +max keysize : 0 +ivsize : 0 +chunksize : 1 +walksize : 1 + +name : digest_null +driver : digest_null-generic +module : kernel +priority : 0 +refcnt : 1 +selftest : passed +internal : no +type : shash +blocksize : 1 +digestsize : 0 + +name : compress_null +driver : compress_null-generic +module : kernel +priority : 0 +refcnt : 1 +selftest : passed +internal : no +type : compression + +name : cipher_null +driver : cipher_null-generic +module : kernel +priority : 0 +refcnt : 1 +selftest : passed +internal : no +type : cipher +blocksize : 1 +min keysize : 0 +max keysize : 0 + +name : rsa +driver : rsa-generic +module : kernel +priority : 100 +refcnt : 1 +selftest : passed +internal : no +type : akcipher + +name : dh +driver : dh-generic +module : kernel +priority : 100 +refcnt : 1 +selftest : passed +internal : no +type : kpp + diff --git a/tests/fixtures/linux-proc/crypto.json b/tests/fixtures/linux-proc/crypto.json new file mode 100644 index 00000000..3ccdc9f4 --- /dev/null +++ b/tests/fixtures/linux-proc/crypto.json @@ -0,0 +1 @@ +[{"name":"ecdh","driver":"ecdh-generic","module":"ecdh_generic","priority":100,"refcnt":1,"selftest":"passed","internal":"no","type":"kpp"},{"name":"blake2b-512","driver":"blake2b-512-generic","module":"blake2b_generic","priority":100,"refcnt":1,"selftest":"passed","internal":"no","type":"shash","blocksize":128,"digestsize":64},{"name":"blake2b-384","driver":"blake2b-384-generic","module":"blake2b_generic","priority":100,"refcnt":1,"selftest":"passed","internal":"no","type":"shash","blocksize":128,"digestsize":48},{"name":"blake2b-256","driver":"blake2b-256-generic","module":"blake2b_generic","priority":100,"refcnt":1,"selftest":"passed","internal":"no","type":"shash","blocksize":128,"digestsize":32},{"name":"blake2b-160","driver":"blake2b-160-generic","module":"blake2b_generic","priority":100,"refcnt":1,"selftest":"passed","internal":"no","type":"shash","blocksize":128,"digestsize":20},{"name":"crct10dif","driver":"crct10dif-pclmul","module":"crct10dif_pclmul","priority":200,"refcnt":2,"selftest":"passed","internal":"no","type":"shash","blocksize":1,"digestsize":2},{"name":"crc32","driver":"crc32-pclmul","module":"crc32_pclmul","priority":200,"refcnt":1,"selftest":"passed","internal":"no","type":"shash","blocksize":1,"digestsize":4},{"name":"ghash","driver":"ghash-clmulni","module":"ghash_clmulni_intel","priority":400,"refcnt":1,"selftest":"passed","internal":"no","type":"ahash","async":"yes","blocksize":16,"digestsize":16},{"name":"__ghash","driver":"__ghash-pclmulqdqni","module":"ghash_clmulni_intel","priority":0,"refcnt":1,"selftest":"passed","internal":"yes","type":"shash","blocksize":16,"digestsize":16},{"name":"gcm(aes)","driver":"generic-gcm-aesni","module":"aesni_intel","priority":400,"refcnt":1,"selftest":"passed","internal":"no","type":"aead","async":"yes","blocksize":1,"ivsize":12,"maxauthsize":16,"geniv":""},{"name":"rfc4106(gcm(aes))","driver":"rfc4106-gcm-aesni","module":"aesni_intel","priority":400,"refcnt":1,"selftest":"passed","internal":"no","type":"aead","async":"yes","blocksize":1,"ivsize":8,"maxauthsize":16,"geniv":""},{"name":"__gcm(aes)","driver":"__generic-gcm-aesni","module":"aesni_intel","priority":400,"refcnt":1,"selftest":"passed","internal":"yes","type":"aead","async":"no","blocksize":1,"ivsize":12,"maxauthsize":16,"geniv":""},{"name":"__rfc4106(gcm(aes))","driver":"__rfc4106-gcm-aesni","module":"aesni_intel","priority":400,"refcnt":1,"selftest":"passed","internal":"yes","type":"aead","async":"no","blocksize":1,"ivsize":8,"maxauthsize":16,"geniv":""},{"name":"xts(aes)","driver":"xts-aes-aesni","module":"aesni_intel","priority":401,"refcnt":1,"selftest":"passed","internal":"no","type":"skcipher","async":"yes","blocksize":16,"min keysize":32,"max keysize":64,"ivsize":16,"chunksize":16,"walksize":16},{"name":"ctr(aes)","driver":"ctr-aes-aesni","module":"aesni_intel","priority":400,"refcnt":1,"selftest":"passed","internal":"no","type":"skcipher","async":"yes","blocksize":1,"min keysize":16,"max keysize":32,"ivsize":16,"chunksize":16,"walksize":16},{"name":"cbc(aes)","driver":"cbc-aes-aesni","module":"aesni_intel","priority":400,"refcnt":1,"selftest":"passed","internal":"no","type":"skcipher","async":"yes","blocksize":16,"min keysize":16,"max keysize":32,"ivsize":16,"chunksize":16,"walksize":16},{"name":"ecb(aes)","driver":"ecb-aes-aesni","module":"aesni_intel","priority":400,"refcnt":1,"selftest":"passed","internal":"no","type":"skcipher","async":"yes","blocksize":16,"min keysize":16,"max keysize":32,"ivsize":0,"chunksize":16,"walksize":16},{"name":"__xts(aes)","driver":"__xts-aes-aesni","module":"aesni_intel","priority":401,"refcnt":1,"selftest":"passed","internal":"yes","type":"skcipher","async":"no","blocksize":16,"min keysize":32,"max keysize":64,"ivsize":16,"chunksize":16,"walksize":16},{"name":"__ctr(aes)","driver":"__ctr-aes-aesni","module":"aesni_intel","priority":400,"refcnt":1,"selftest":"passed","internal":"yes","type":"skcipher","async":"no","blocksize":1,"min keysize":16,"max keysize":32,"ivsize":16,"chunksize":16,"walksize":16},{"name":"__cbc(aes)","driver":"__cbc-aes-aesni","module":"aesni_intel","priority":400,"refcnt":1,"selftest":"passed","internal":"yes","type":"skcipher","async":"no","blocksize":16,"min keysize":16,"max keysize":32,"ivsize":16,"chunksize":16,"walksize":16},{"name":"__ecb(aes)","driver":"__ecb-aes-aesni","module":"aesni_intel","priority":400,"refcnt":1,"selftest":"passed","internal":"yes","type":"skcipher","async":"no","blocksize":16,"min keysize":16,"max keysize":32,"ivsize":0,"chunksize":16,"walksize":16},{"name":"aes","driver":"aes-aesni","module":"aesni_intel","priority":300,"refcnt":1,"selftest":"passed","internal":"no","type":"cipher","blocksize":16,"min keysize":16,"max keysize":32},{"name":"pkcs1pad(rsa,sha512)","driver":"pkcs1pad(rsa-generic,sha512)","module":"kernel","priority":100,"refcnt":1,"selftest":"passed","internal":"no","type":"akcipher"},{"name":"hmac(sha256)","driver":"hmac(sha256-generic)","module":"kernel","priority":100,"refcnt":129,"selftest":"passed","internal":"no","type":"shash","blocksize":64,"digestsize":32},{"name":"hmac(sha1)","driver":"hmac(sha1-generic)","module":"kernel","priority":100,"refcnt":129,"selftest":"passed","internal":"no","type":"shash","blocksize":64,"digestsize":20},{"name":"jitterentropy_rng","driver":"jitterentropy_rng","module":"kernel","priority":100,"refcnt":1,"selftest":"passed","internal":"no","type":"rng","seedsize":0},{"name":"crc32c","driver":"crc32c-intel","module":"kernel","priority":200,"refcnt":6,"selftest":"passed","internal":"no","type":"shash","blocksize":1,"digestsize":4},{"name":"ghash","driver":"ghash-generic","module":"kernel","priority":100,"refcnt":1,"selftest":"passed","internal":"no","type":"shash","blocksize":16,"digestsize":16},{"name":"stdrng","driver":"drbg_nopr_hmac_sha256","module":"kernel","priority":221,"refcnt":1,"selftest":"passed","internal":"no","type":"rng","seedsize":0},{"name":"stdrng","driver":"drbg_nopr_hmac_sha512","module":"kernel","priority":220,"refcnt":1,"selftest":"passed","internal":"no","type":"rng","seedsize":0},{"name":"stdrng","driver":"drbg_nopr_hmac_sha384","module":"kernel","priority":219,"refcnt":1,"selftest":"passed","internal":"no","type":"rng","seedsize":0},{"name":"stdrng","driver":"drbg_nopr_hmac_sha1","module":"kernel","priority":218,"refcnt":1,"selftest":"passed","internal":"no","type":"rng","seedsize":0},{"name":"stdrng","driver":"drbg_nopr_sha256","module":"kernel","priority":217,"refcnt":1,"selftest":"passed","internal":"no","type":"rng","seedsize":0},{"name":"stdrng","driver":"drbg_nopr_sha512","module":"kernel","priority":216,"refcnt":1,"selftest":"passed","internal":"no","type":"rng","seedsize":0},{"name":"stdrng","driver":"drbg_nopr_sha384","module":"kernel","priority":215,"refcnt":1,"selftest":"passed","internal":"no","type":"rng","seedsize":0},{"name":"stdrng","driver":"drbg_nopr_sha1","module":"kernel","priority":214,"refcnt":1,"selftest":"passed","internal":"no","type":"rng","seedsize":0},{"name":"stdrng","driver":"drbg_nopr_ctr_aes256","module":"kernel","priority":213,"refcnt":1,"selftest":"passed","internal":"no","type":"rng","seedsize":0},{"name":"stdrng","driver":"drbg_nopr_ctr_aes192","module":"kernel","priority":212,"refcnt":1,"selftest":"passed","internal":"no","type":"rng","seedsize":0},{"name":"stdrng","driver":"drbg_nopr_ctr_aes128","module":"kernel","priority":211,"refcnt":1,"selftest":"passed","internal":"no","type":"rng","seedsize":0},{"name":"stdrng","driver":"drbg_pr_hmac_sha256","module":"kernel","priority":210,"refcnt":1,"selftest":"passed","internal":"no","type":"rng","seedsize":0},{"name":"stdrng","driver":"drbg_pr_hmac_sha512","module":"kernel","priority":209,"refcnt":1,"selftest":"passed","internal":"no","type":"rng","seedsize":0},{"name":"stdrng","driver":"drbg_pr_hmac_sha384","module":"kernel","priority":208,"refcnt":1,"selftest":"passed","internal":"no","type":"rng","seedsize":0},{"name":"stdrng","driver":"drbg_pr_hmac_sha1","module":"kernel","priority":207,"refcnt":1,"selftest":"passed","internal":"no","type":"rng","seedsize":0},{"name":"stdrng","driver":"drbg_pr_sha256","module":"kernel","priority":206,"refcnt":1,"selftest":"passed","internal":"no","type":"rng","seedsize":0},{"name":"stdrng","driver":"drbg_pr_sha512","module":"kernel","priority":205,"refcnt":1,"selftest":"passed","internal":"no","type":"rng","seedsize":0},{"name":"stdrng","driver":"drbg_pr_sha384","module":"kernel","priority":204,"refcnt":1,"selftest":"passed","internal":"no","type":"rng","seedsize":0},{"name":"stdrng","driver":"drbg_pr_sha1","module":"kernel","priority":203,"refcnt":1,"selftest":"passed","internal":"no","type":"rng","seedsize":0},{"name":"stdrng","driver":"drbg_pr_ctr_aes256","module":"kernel","priority":202,"refcnt":1,"selftest":"passed","internal":"no","type":"rng","seedsize":0},{"name":"stdrng","driver":"drbg_pr_ctr_aes192","module":"kernel","priority":201,"refcnt":1,"selftest":"passed","internal":"no","type":"rng","seedsize":0},{"name":"stdrng","driver":"drbg_pr_ctr_aes128","module":"kernel","priority":200,"refcnt":1,"selftest":"passed","internal":"no","type":"rng","seedsize":0},{"name":"lzo-rle","driver":"lzo-rle-scomp","module":"kernel","priority":0,"refcnt":1,"selftest":"passed","internal":"no","type":"scomp"},{"name":"lzo-rle","driver":"lzo-rle-generic","module":"kernel","priority":0,"refcnt":1,"selftest":"passed","internal":"no","type":"compression"},{"name":"lzo","driver":"lzo-scomp","module":"kernel","priority":0,"refcnt":1,"selftest":"passed","internal":"no","type":"scomp"},{"name":"lzo","driver":"lzo-generic","module":"kernel","priority":0,"refcnt":3,"selftest":"passed","internal":"no","type":"compression"},{"name":"crct10dif","driver":"crct10dif-generic","module":"kernel","priority":100,"refcnt":1,"selftest":"passed","internal":"no","type":"shash","blocksize":1,"digestsize":2},{"name":"crc32c","driver":"crc32c-generic","module":"kernel","priority":100,"refcnt":1,"selftest":"passed","internal":"no","type":"shash","blocksize":1,"digestsize":4},{"name":"zlib-deflate","driver":"zlib-deflate-scomp","module":"kernel","priority":0,"refcnt":1,"selftest":"passed","internal":"no","type":"scomp"},{"name":"deflate","driver":"deflate-scomp","module":"kernel","priority":0,"refcnt":1,"selftest":"passed","internal":"no","type":"scomp"},{"name":"deflate","driver":"deflate-generic","module":"kernel","priority":0,"refcnt":1,"selftest":"passed","internal":"no","type":"compression"},{"name":"aes","driver":"aes-generic","module":"kernel","priority":100,"refcnt":1,"selftest":"passed","internal":"no","type":"cipher","blocksize":16,"min keysize":16,"max keysize":32},{"name":"sha384","driver":"sha384-generic","module":"kernel","priority":100,"refcnt":1,"selftest":"passed","internal":"no","type":"shash","blocksize":128,"digestsize":48},{"name":"sha512","driver":"sha512-generic","module":"kernel","priority":100,"refcnt":1,"selftest":"passed","internal":"no","type":"shash","blocksize":128,"digestsize":64},{"name":"sha224","driver":"sha224-generic","module":"kernel","priority":100,"refcnt":1,"selftest":"passed","internal":"no","type":"shash","blocksize":64,"digestsize":28},{"name":"sha256","driver":"sha256-generic","module":"kernel","priority":100,"refcnt":130,"selftest":"passed","internal":"no","type":"shash","blocksize":64,"digestsize":32},{"name":"sha1","driver":"sha1-generic","module":"kernel","priority":100,"refcnt":132,"selftest":"passed","internal":"no","type":"shash","blocksize":64,"digestsize":20},{"name":"md5","driver":"md5-generic","module":"kernel","priority":0,"refcnt":1,"selftest":"passed","internal":"no","type":"shash","blocksize":64,"digestsize":16},{"name":"ecb(cipher_null)","driver":"ecb-cipher_null","module":"kernel","priority":100,"refcnt":1,"selftest":"passed","internal":"no","type":"skcipher","async":"no","blocksize":1,"min keysize":0,"max keysize":0,"ivsize":0,"chunksize":1,"walksize":1},{"name":"digest_null","driver":"digest_null-generic","module":"kernel","priority":0,"refcnt":1,"selftest":"passed","internal":"no","type":"shash","blocksize":1,"digestsize":0},{"name":"compress_null","driver":"compress_null-generic","module":"kernel","priority":0,"refcnt":1,"selftest":"passed","internal":"no","type":"compression"},{"name":"cipher_null","driver":"cipher_null-generic","module":"kernel","priority":0,"refcnt":1,"selftest":"passed","internal":"no","type":"cipher","blocksize":1,"min keysize":0,"max keysize":0},{"name":"rsa","driver":"rsa-generic","module":"kernel","priority":100,"refcnt":1,"selftest":"passed","internal":"no","type":"akcipher"},{"name":"dh","driver":"dh-generic","module":"kernel","priority":100,"refcnt":1,"selftest":"passed","internal":"no","type":"kpp"}] diff --git a/tests/fixtures/linux-proc/devices b/tests/fixtures/linux-proc/devices new file mode 100644 index 00000000..3abad9b5 --- /dev/null +++ b/tests/fixtures/linux-proc/devices @@ -0,0 +1,67 @@ +Character devices: + 1 mem + 4 /dev/vc/0 + 4 tty + 4 ttyS + 5 /dev/tty + 5 /dev/console + 5 /dev/ptmx + 5 ttyprintk + 7 vcs + 10 misc + 13 input + 14 sound/midi + 14 sound/dmmidi + 21 sg + 29 fb + 81 video4linux + 89 i2c +108 ppp +116 alsa +128 ptm +136 pts +180 usb +189 usb_device +204 ttyMAX +226 drm +238 media +239 hidraw +240 aux +241 cec +242 BaseRemoteCtl +243 vfio +244 bsg +245 watchdog +246 ptp +247 pps +248 rtc +249 dma_heap +250 dax +251 dimmctl +252 ndctl +253 tpm +254 gpiochip + +Block devices: + 7 loop + 8 sd + 9 md + 11 sr + 65 sd + 66 sd + 67 sd + 68 sd + 69 sd + 70 sd + 71 sd +128 sd +129 sd +130 sd +131 sd +132 sd +133 sd +134 sd +135 sd +253 device-mapper +254 mdp +259 blkext diff --git a/tests/fixtures/linux-proc/devices.json b/tests/fixtures/linux-proc/devices.json new file mode 100644 index 00000000..daba1bd5 --- /dev/null +++ b/tests/fixtures/linux-proc/devices.json @@ -0,0 +1 @@ +{"character":{"1":["mem"],"4":["/dev/vc/0","tty","ttyS"],"5":["/dev/tty","/dev/console","/dev/ptmx","ttyprintk"],"7":["vcs"],"10":["misc"],"13":["input"],"14":["sound/midi","sound/dmmidi"],"21":["sg"],"29":["fb"],"81":["video4linux"],"89":["i2c"],"108":["ppp"],"116":["alsa"],"128":["ptm"],"136":["pts"],"180":["usb"],"189":["usb_device"],"204":["ttyMAX"],"226":["drm"],"238":["media"],"239":["hidraw"],"240":["aux"],"241":["cec"],"242":["BaseRemoteCtl"],"243":["vfio"],"244":["bsg"],"245":["watchdog"],"246":["ptp"],"247":["pps"],"248":["rtc"],"249":["dma_heap"],"250":["dax"],"251":["dimmctl"],"252":["ndctl"],"253":["tpm"],"254":["gpiochip"]},"block":{"7":["loop"],"8":["sd"],"9":["md"],"11":["sr"],"65":["sd"],"66":["sd"],"67":["sd"],"68":["sd"],"69":["sd"],"70":["sd"],"71":["sd"],"128":["sd"],"129":["sd"],"130":["sd"],"131":["sd"],"132":["sd"],"133":["sd"],"134":["sd"],"135":["sd"],"253":["device-mapper"],"254":["mdp"],"259":["blkext"]}} diff --git a/tests/fixtures/linux-proc/diskstats b/tests/fixtures/linux-proc/diskstats new file mode 100644 index 00000000..ceedc0ad --- /dev/null +++ b/tests/fixtures/linux-proc/diskstats @@ -0,0 +1,16 @@ + 7 0 loop0 48 0 718 19 0 0 0 0 0 36 19 0 0 0 0 0 0 + 7 1 loop1 41 0 688 17 0 0 0 0 0 28 17 0 0 0 0 0 0 + 7 2 loop2 119 0 2956 18 0 0 0 0 0 56 18 0 0 0 0 0 0 + 7 3 loop3 220 0 4432 58 0 0 0 0 0 232 58 0 0 0 0 0 0 + 7 4 loop4 59 0 2184 19 0 0 0 0 0 28 19 0 0 0 0 0 0 + 7 5 loop5 810 0 57906 205 0 0 0 0 0 2360 205 0 0 0 0 0 0 + 7 6 loop6 41 0 688 12 0 0 0 0 0 28 12 0 0 0 0 0 0 + 7 7 loop7 64 0 2220 17 0 0 0 0 0 40 17 0 0 0 0 0 0 + 8 0 sda 14200 3361 892828 5058 18736 13416 715384 12604 0 24940 17663 0 0 0 0 0 0 + 8 1 sda1 171 0 1368 22 0 0 0 0 0 84 22 0 0 0 0 0 0 + 8 2 sda2 153 20 10906 22 14 13 216 3 0 96 26 0 0 0 0 0 0 + 8 3 sda3 6983 3341 876106 3409 18722 13403 715168 12601 0 18276 16010 0 0 0 0 0 0 + 11 0 sr0 283 0 20923 58 0 0 0 0 0 124 58 0 0 0 0 0 0 + 253 0 dm-0 10298 0 873914 7596 31994 0 715168 13140 0 18220 20736 0 0 0 0 0 0 + 7 8 loop8 250 0 4496 16 0 0 0 0 0 180 16 0 0 0 0 0 0 + diff --git a/tests/fixtures/linux-proc/diskstats.json b/tests/fixtures/linux-proc/diskstats.json new file mode 100644 index 00000000..6a11371c --- /dev/null +++ b/tests/fixtures/linux-proc/diskstats.json @@ -0,0 +1 @@ +[{"maj":7,"min":0,"device":"loop0","reads_completed":48,"reads_merged":0,"sectors_read":718,"read_time_ms":19,"writes_completed":0,"writes_merged":0,"sectors_written":0,"write_time_ms":0,"io_in_progress":0,"io_time_ms":36,"weighted_io_time_ms":19,"discards_completed_successfully":0,"discards_merged":0,"sectors_discarded":0,"discarding_time_ms":0,"flush_requests_completed_successfully":0,"flushing_time_ms":0},{"maj":7,"min":1,"device":"loop1","reads_completed":41,"reads_merged":0,"sectors_read":688,"read_time_ms":17,"writes_completed":0,"writes_merged":0,"sectors_written":0,"write_time_ms":0,"io_in_progress":0,"io_time_ms":28,"weighted_io_time_ms":17,"discards_completed_successfully":0,"discards_merged":0,"sectors_discarded":0,"discarding_time_ms":0,"flush_requests_completed_successfully":0,"flushing_time_ms":0},{"maj":7,"min":2,"device":"loop2","reads_completed":119,"reads_merged":0,"sectors_read":2956,"read_time_ms":18,"writes_completed":0,"writes_merged":0,"sectors_written":0,"write_time_ms":0,"io_in_progress":0,"io_time_ms":56,"weighted_io_time_ms":18,"discards_completed_successfully":0,"discards_merged":0,"sectors_discarded":0,"discarding_time_ms":0,"flush_requests_completed_successfully":0,"flushing_time_ms":0},{"maj":7,"min":3,"device":"loop3","reads_completed":220,"reads_merged":0,"sectors_read":4432,"read_time_ms":58,"writes_completed":0,"writes_merged":0,"sectors_written":0,"write_time_ms":0,"io_in_progress":0,"io_time_ms":232,"weighted_io_time_ms":58,"discards_completed_successfully":0,"discards_merged":0,"sectors_discarded":0,"discarding_time_ms":0,"flush_requests_completed_successfully":0,"flushing_time_ms":0},{"maj":7,"min":4,"device":"loop4","reads_completed":59,"reads_merged":0,"sectors_read":2184,"read_time_ms":19,"writes_completed":0,"writes_merged":0,"sectors_written":0,"write_time_ms":0,"io_in_progress":0,"io_time_ms":28,"weighted_io_time_ms":19,"discards_completed_successfully":0,"discards_merged":0,"sectors_discarded":0,"discarding_time_ms":0,"flush_requests_completed_successfully":0,"flushing_time_ms":0},{"maj":7,"min":5,"device":"loop5","reads_completed":810,"reads_merged":0,"sectors_read":57906,"read_time_ms":205,"writes_completed":0,"writes_merged":0,"sectors_written":0,"write_time_ms":0,"io_in_progress":0,"io_time_ms":2360,"weighted_io_time_ms":205,"discards_completed_successfully":0,"discards_merged":0,"sectors_discarded":0,"discarding_time_ms":0,"flush_requests_completed_successfully":0,"flushing_time_ms":0},{"maj":7,"min":6,"device":"loop6","reads_completed":41,"reads_merged":0,"sectors_read":688,"read_time_ms":12,"writes_completed":0,"writes_merged":0,"sectors_written":0,"write_time_ms":0,"io_in_progress":0,"io_time_ms":28,"weighted_io_time_ms":12,"discards_completed_successfully":0,"discards_merged":0,"sectors_discarded":0,"discarding_time_ms":0,"flush_requests_completed_successfully":0,"flushing_time_ms":0},{"maj":7,"min":7,"device":"loop7","reads_completed":64,"reads_merged":0,"sectors_read":2220,"read_time_ms":17,"writes_completed":0,"writes_merged":0,"sectors_written":0,"write_time_ms":0,"io_in_progress":0,"io_time_ms":40,"weighted_io_time_ms":17,"discards_completed_successfully":0,"discards_merged":0,"sectors_discarded":0,"discarding_time_ms":0,"flush_requests_completed_successfully":0,"flushing_time_ms":0},{"maj":8,"min":0,"device":"sda","reads_completed":14200,"reads_merged":3361,"sectors_read":892828,"read_time_ms":5058,"writes_completed":18736,"writes_merged":13416,"sectors_written":715384,"write_time_ms":12604,"io_in_progress":0,"io_time_ms":24940,"weighted_io_time_ms":17663,"discards_completed_successfully":0,"discards_merged":0,"sectors_discarded":0,"discarding_time_ms":0,"flush_requests_completed_successfully":0,"flushing_time_ms":0},{"maj":8,"min":1,"device":"sda1","reads_completed":171,"reads_merged":0,"sectors_read":1368,"read_time_ms":22,"writes_completed":0,"writes_merged":0,"sectors_written":0,"write_time_ms":0,"io_in_progress":0,"io_time_ms":84,"weighted_io_time_ms":22,"discards_completed_successfully":0,"discards_merged":0,"sectors_discarded":0,"discarding_time_ms":0,"flush_requests_completed_successfully":0,"flushing_time_ms":0},{"maj":8,"min":2,"device":"sda2","reads_completed":153,"reads_merged":20,"sectors_read":10906,"read_time_ms":22,"writes_completed":14,"writes_merged":13,"sectors_written":216,"write_time_ms":3,"io_in_progress":0,"io_time_ms":96,"weighted_io_time_ms":26,"discards_completed_successfully":0,"discards_merged":0,"sectors_discarded":0,"discarding_time_ms":0,"flush_requests_completed_successfully":0,"flushing_time_ms":0},{"maj":8,"min":3,"device":"sda3","reads_completed":6983,"reads_merged":3341,"sectors_read":876106,"read_time_ms":3409,"writes_completed":18722,"writes_merged":13403,"sectors_written":715168,"write_time_ms":12601,"io_in_progress":0,"io_time_ms":18276,"weighted_io_time_ms":16010,"discards_completed_successfully":0,"discards_merged":0,"sectors_discarded":0,"discarding_time_ms":0,"flush_requests_completed_successfully":0,"flushing_time_ms":0},{"maj":11,"min":0,"device":"sr0","reads_completed":283,"reads_merged":0,"sectors_read":20923,"read_time_ms":58,"writes_completed":0,"writes_merged":0,"sectors_written":0,"write_time_ms":0,"io_in_progress":0,"io_time_ms":124,"weighted_io_time_ms":58,"discards_completed_successfully":0,"discards_merged":0,"sectors_discarded":0,"discarding_time_ms":0,"flush_requests_completed_successfully":0,"flushing_time_ms":0},{"maj":253,"min":0,"device":"dm-0","reads_completed":10298,"reads_merged":0,"sectors_read":873914,"read_time_ms":7596,"writes_completed":31994,"writes_merged":0,"sectors_written":715168,"write_time_ms":13140,"io_in_progress":0,"io_time_ms":18220,"weighted_io_time_ms":20736,"discards_completed_successfully":0,"discards_merged":0,"sectors_discarded":0,"discarding_time_ms":0,"flush_requests_completed_successfully":0,"flushing_time_ms":0},{"maj":7,"min":8,"device":"loop8","reads_completed":250,"reads_merged":0,"sectors_read":4496,"read_time_ms":16,"writes_completed":0,"writes_merged":0,"sectors_written":0,"write_time_ms":0,"io_in_progress":0,"io_time_ms":180,"weighted_io_time_ms":16,"discards_completed_successfully":0,"discards_merged":0,"sectors_discarded":0,"discarding_time_ms":0,"flush_requests_completed_successfully":0,"flushing_time_ms":0}] diff --git a/tests/fixtures/linux-proc/driver_rtc b/tests/fixtures/linux-proc/driver_rtc new file mode 100644 index 00000000..c02feedb --- /dev/null +++ b/tests/fixtures/linux-proc/driver_rtc @@ -0,0 +1,18 @@ +rtc_time : 16:09:21 +rtc_date : 2022-09-03 +alrm_time : 00:00:00 +alrm_date : 2022-09-03 +alarm_IRQ : no +alrm_pending : no +update IRQ enabled : no +periodic IRQ enabled : no +periodic IRQ frequency : 1024 +max user IRQ frequency : 64 +24hr : yes +periodic_IRQ : no +update_IRQ : no +HPET_emulated : yes +BCD : yes +DST_enable : no +periodic_freq : 1024 +batt_status : okay diff --git a/tests/fixtures/linux-proc/filesystems b/tests/fixtures/linux-proc/filesystems new file mode 100644 index 00000000..307397aa --- /dev/null +++ b/tests/fixtures/linux-proc/filesystems @@ -0,0 +1,32 @@ +nodev sysfs +nodev tmpfs +nodev bdev +nodev proc +nodev cgroup +nodev cgroup2 +nodev cpuset +nodev devtmpfs +nodev configfs +nodev debugfs +nodev tracefs +nodev securityfs +nodev sockfs +nodev bpf +nodev pipefs +nodev ramfs +nodev hugetlbfs +nodev devpts + ext3 + ext2 + ext4 + squashfs + vfat +nodev ecryptfs + fuseblk +nodev fuse +nodev fusectl +nodev mqueue +nodev pstore + btrfs +nodev autofs +nodev binfmt_misc diff --git a/tests/fixtures/linux-proc/interrupts b/tests/fixtures/linux-proc/interrupts new file mode 100644 index 00000000..172baacd --- /dev/null +++ b/tests/fixtures/linux-proc/interrupts @@ -0,0 +1,66 @@ + CPU0 CPU1 + 0: 18 0 IO-APIC 2-edge timer + 1: 0 73 IO-APIC 1-edge i8042 + 8: 1 0 IO-APIC 8-edge rtc0 + 9: 0 0 IO-APIC 9-fasteoi acpi + 12: 18 0 IO-APIC 12-edge i8042 + 14: 0 0 IO-APIC 14-edge ata_piix + 15: 0 0 IO-APIC 15-edge ata_piix + 16: 3545 0 IO-APIC 16-fasteoi vmwgfx, snd_ens1371 + 17: 33795 0 IO-APIC 17-fasteoi ehci_hcd:usb1, ioc0 + 18: 0 368326 IO-APIC 18-fasteoi uhci_hcd:usb2 + 19: 0 126705 IO-APIC 19-fasteoi ens33 + 24: 0 0 PCI-MSI 344064-edge PCIe PME, pciehp + 25: 0 0 PCI-MSI 346112-edge PCIe PME, pciehp + 26: 0 0 PCI-MSI 348160-edge PCIe PME, pciehp + 27: 0 0 PCI-MSI 350208-edge PCIe PME, pciehp + 28: 0 0 PCI-MSI 352256-edge PCIe PME, pciehp + 29: 0 0 PCI-MSI 354304-edge PCIe PME, pciehp + 30: 0 0 PCI-MSI 356352-edge PCIe PME, pciehp + 31: 0 0 PCI-MSI 358400-edge PCIe PME, pciehp + 32: 0 0 PCI-MSI 360448-edge PCIe PME, pciehp + 33: 0 0 PCI-MSI 362496-edge PCIe PME, pciehp + 34: 0 0 PCI-MSI 364544-edge PCIe PME, pciehp + 35: 0 0 PCI-MSI 366592-edge PCIe PME, pciehp + 36: 0 0 PCI-MSI 368640-edge PCIe PME, pciehp + 37: 0 0 PCI-MSI 370688-edge PCIe PME, pciehp + 38: 0 0 PCI-MSI 372736-edge PCIe PME, pciehp + 39: 0 0 PCI-MSI 374784-edge PCIe PME, pciehp + 40: 0 0 PCI-MSI 376832-edge PCIe PME, pciehp + 41: 0 0 PCI-MSI 378880-edge PCIe PME, pciehp + 42: 0 0 PCI-MSI 380928-edge PCIe PME, pciehp + 43: 0 0 PCI-MSI 382976-edge PCIe PME, pciehp + 44: 0 0 PCI-MSI 385024-edge PCIe PME, pciehp + 45: 0 0 PCI-MSI 387072-edge PCIe PME, pciehp + 46: 0 0 PCI-MSI 389120-edge PCIe PME, pciehp + 47: 0 0 PCI-MSI 391168-edge PCIe PME, pciehp + 48: 0 0 PCI-MSI 393216-edge PCIe PME, pciehp + 49: 0 0 PCI-MSI 395264-edge PCIe PME, pciehp + 50: 0 0 PCI-MSI 397312-edge PCIe PME, pciehp + 51: 0 0 PCI-MSI 399360-edge PCIe PME, pciehp + 52: 0 0 PCI-MSI 401408-edge PCIe PME, pciehp + 53: 0 0 PCI-MSI 403456-edge PCIe PME, pciehp + 54: 0 0 PCI-MSI 405504-edge PCIe PME, pciehp + 55: 0 0 PCI-MSI 407552-edge PCIe PME, pciehp + 56: 0 7937 PCI-MSI 1130496-edge ahci[0000:02:05.0] + 57: 0 2061 PCI-MSI 129024-edge vmw_vmci + 58: 0 0 PCI-MSI 129025-edge vmw_vmci + NMI: 0 0 Non-maskable interrupts + LOC: 366351 997227 Local timer interrupts + SPU: 0 0 Spurious interrupts + PMI: 0 0 Performance monitoring interrupts + IWI: 0 3 IRQ work interrupts + RTR: 0 0 APIC ICR read retries + RES: 2763 2933 Rescheduling interrupts + CAL: 175136 130374 Function call interrupts + TLB: 3155 3965 TLB shootdowns + TRM: 0 0 Thermal event interrupts + THR: 0 0 Threshold APIC interrupts + DFR: 0 0 Deferred Error APIC interrupts + MCE: 0 0 Machine check exceptions + MCP: 49 50 Machine check polls + ERR: 0 + MIS: 0 + PIN: 0 0 Posted-interrupt notification event + NPI: 0 0 Nested posted-interrupt event + PIW: 0 0 Posted-interrupt wakeup event diff --git a/tests/fixtures/linux-proc/iomem b/tests/fixtures/linux-proc/iomem new file mode 100644 index 00000000..b77e117f --- /dev/null +++ b/tests/fixtures/linux-proc/iomem @@ -0,0 +1,119 @@ +00000000-00000fff : Reserved +00001000-0009e7ff : System RAM +0009e800-0009ffff : Reserved +000a0000-000bffff : PCI Bus 0000:00 +000c0000-000c7fff : Video ROM +000ca000-000cafff : Adapter ROM +000cb000-000ccfff : Adapter ROM +000d0000-000d3fff : PCI Bus 0000:00 +000d4000-000d7fff : PCI Bus 0000:00 +000d8000-000dbfff : PCI Bus 0000:00 +000dc000-000fffff : Reserved + 000f0000-000fffff : System ROM +00100000-bfecffff : System RAM + 66e00000-67c00d56 : Kernel code + 67e00000-686abfff : Kernel rodata + 68800000-68a7a5bf : Kernel data + 68d36000-691fffff : Kernel bss +bfed0000-bfefefff : ACPI Tables +bfeff000-bfefffff : ACPI Non-volatile Storage +bff00000-bfffffff : System RAM +c0000000-febfffff : PCI Bus 0000:00 + c0008000-c000bfff : 0000:00:10.0 + e5b00000-e5bfffff : PCI Bus 0000:22 + e5c00000-e5cfffff : PCI Bus 0000:1a + e5d00000-e5dfffff : PCI Bus 0000:12 + e5e00000-e5efffff : PCI Bus 0000:0a + e5f00000-e5ffffff : PCI Bus 0000:21 + e6000000-e60fffff : PCI Bus 0000:19 + e6100000-e61fffff : PCI Bus 0000:11 + e6200000-e62fffff : PCI Bus 0000:09 + e6300000-e63fffff : PCI Bus 0000:20 + e6400000-e64fffff : PCI Bus 0000:18 + e6500000-e65fffff : PCI Bus 0000:10 + e6600000-e66fffff : PCI Bus 0000:08 + e6700000-e67fffff : PCI Bus 0000:1f + e6800000-e68fffff : PCI Bus 0000:17 + e6900000-e69fffff : PCI Bus 0000:0f + e6a00000-e6afffff : PCI Bus 0000:07 + e6b00000-e6bfffff : PCI Bus 0000:1e + e6c00000-e6cfffff : PCI Bus 0000:16 + e6d00000-e6dfffff : PCI Bus 0000:0e + e6e00000-e6efffff : PCI Bus 0000:06 + e6f00000-e6ffffff : PCI Bus 0000:1d + e7000000-e70fffff : PCI Bus 0000:15 + e7100000-e71fffff : PCI Bus 0000:0d + e7200000-e72fffff : PCI Bus 0000:05 + e7300000-e73fffff : PCI Bus 0000:1c + e7400000-e74fffff : PCI Bus 0000:14 + e7500000-e75fffff : PCI Bus 0000:0c + e7600000-e76fffff : PCI Bus 0000:04 + e7700000-e77fffff : PCI Bus 0000:1b + e7800000-e78fffff : PCI Bus 0000:13 + e7900000-e79fffff : PCI Bus 0000:0b + e7a00000-e7afffff : PCI Bus 0000:03 + e7b00000-e7ffffff : PCI Bus 0000:02 + e8000000-efffffff : 0000:00:0f.0 + e8000000-efffffff : vmwgfx probe + f0000000-f7ffffff : PCI MMCONFIG 0000 [bus 00-7f] + f0000000-f7ffffff : Reserved + f0000000-f7ffffff : pnp 00:06 + fb500000-fb5fffff : PCI Bus 0000:22 + fb600000-fb6fffff : PCI Bus 0000:1a + fb700000-fb7fffff : PCI Bus 0000:12 + fb800000-fb8fffff : PCI Bus 0000:0a + fb900000-fb9fffff : PCI Bus 0000:21 + fba00000-fbafffff : PCI Bus 0000:19 + fbb00000-fbbfffff : PCI Bus 0000:11 + fbc00000-fbcfffff : PCI Bus 0000:09 + fbd00000-fbdfffff : PCI Bus 0000:20 + fbe00000-fbefffff : PCI Bus 0000:18 + fbf00000-fbffffff : PCI Bus 0000:10 + fc000000-fc0fffff : PCI Bus 0000:08 + fc100000-fc1fffff : PCI Bus 0000:1f + fc200000-fc2fffff : PCI Bus 0000:17 + fc300000-fc3fffff : PCI Bus 0000:0f + fc400000-fc4fffff : PCI Bus 0000:07 + fc500000-fc5fffff : PCI Bus 0000:1e + fc600000-fc6fffff : PCI Bus 0000:16 + fc700000-fc7fffff : PCI Bus 0000:0e + fc800000-fc8fffff : PCI Bus 0000:06 + fc900000-fc9fffff : PCI Bus 0000:1d + fca00000-fcafffff : PCI Bus 0000:15 + fcb00000-fcbfffff : PCI Bus 0000:0d + fcc00000-fccfffff : PCI Bus 0000:05 + fcd00000-fcdfffff : PCI Bus 0000:1c + fce00000-fcefffff : PCI Bus 0000:14 + fcf00000-fcffffff : PCI Bus 0000:0c + fd000000-fd0fffff : PCI Bus 0000:04 + fd100000-fd1fffff : PCI Bus 0000:1b + fd200000-fd2fffff : PCI Bus 0000:13 + fd300000-fd3fffff : PCI Bus 0000:0b + fd400000-fd4fffff : PCI Bus 0000:03 + fd500000-fdffffff : PCI Bus 0000:02 + fd500000-fd50ffff : 0000:02:01.0 + fd510000-fd51ffff : 0000:02:05.0 + fd5c0000-fd5dffff : 0000:02:01.0 + fd5c0000-fd5dffff : e1000 + fd5ee000-fd5eefff : 0000:02:05.0 + fd5ee000-fd5eefff : ahci + fd5ef000-fd5effff : 0000:02:03.0 + fd5ef000-fd5effff : ehci_hcd + fdff0000-fdffffff : 0000:02:01.0 + fdff0000-fdffffff : e1000 + fe000000-fe7fffff : 0000:00:0f.0 + fe000000-fe7fffff : vmwgfx probe + fe800000-fe9fffff : pnp 00:06 + feba0000-febbffff : 0000:00:10.0 + feba0000-febbffff : mpt + febc0000-febdffff : 0000:00:10.0 + febc0000-febdffff : mpt + febfe000-febfffff : 0000:00:07.7 +fec00000-fec0ffff : Reserved + fec00000-fec003ff : IOAPIC 0 +fed00000-fed003ff : HPET 0 + fed00000-fed003ff : pnp 00:04 +fee00000-fee00fff : Local APIC + fee00000-fee00fff : Reserved +fffe0000-ffffffff : Reserved +100000000-13fffffff : System RAM diff --git a/tests/fixtures/linux-proc/ioports b/tests/fixtures/linux-proc/ioports new file mode 100644 index 00000000..5500d445 --- /dev/null +++ b/tests/fixtures/linux-proc/ioports @@ -0,0 +1,63 @@ +0000-0cf7 : PCI Bus 0000:00 + 0000-001f : dma1 + 0020-0021 : PNP0001:00 + 0020-0021 : pic1 + 0040-0043 : timer0 + 0050-0053 : timer1 + 0060-0060 : keyboard + 0061-0061 : PNP0800:00 + 0064-0064 : keyboard + 0070-0071 : rtc0 + 0080-008f : dma page reg + 00a0-00a1 : PNP0001:00 + 00a0-00a1 : pic2 + 00c0-00df : dma2 + 00f0-00ff : fpu + 0170-0177 : 0000:00:07.1 + 0170-0177 : ata_piix + 01f0-01f7 : 0000:00:07.1 + 01f0-01f7 : ata_piix + 0376-0376 : 0000:00:07.1 + 0376-0376 : ata_piix + 03c0-03df : vga+ + 03f6-03f6 : 0000:00:07.1 + 03f6-03f6 : ata_piix + 03f8-03ff : serial + 04d0-04d1 : PNP0001:00 + 0cf0-0cf1 : pnp 00:00 +0cf8-0cff : PCI conf1 +0d00-feff : PCI Bus 0000:00 + 1000-103f : 0000:00:07.3 + 1000-103f : pnp 00:00 + 1000-1003 : ACPI PM1a_EVT_BLK + 1004-1005 : ACPI PM1a_CNT_BLK + 1008-100b : ACPI PM_TMR + 100c-100f : ACPI GPE0_BLK + 1040-104f : 0000:00:07.3 + 1040-104f : pnp 00:00 + 1060-106f : 0000:00:07.1 + 1060-106f : ata_piix + 1070-107f : 0000:00:0f.0 + 1070-107f : vmwgfx probe + 1080-10bf : 0000:00:07.7 + 1080-10bf : vmw_vmci + 1400-14ff : 0000:00:10.0 + 2000-3fff : PCI Bus 0000:02 + 2000-203f : 0000:02:01.0 + 2000-203f : e1000 + 2040-207f : 0000:02:02.0 + 2040-207f : Ensoniq AudioPCI + 2080-209f : 0000:02:00.0 + 2080-209f : uhci_hcd + 4000-4fff : PCI Bus 0000:03 + 5000-5fff : PCI Bus 0000:0b + 6000-6fff : PCI Bus 0000:13 + 7000-7fff : PCI Bus 0000:1b + 8000-8fff : PCI Bus 0000:04 + 9000-9fff : PCI Bus 0000:0c + a000-afff : PCI Bus 0000:14 + b000-bfff : PCI Bus 0000:1c + c000-cfff : PCI Bus 0000:05 + d000-dfff : PCI Bus 0000:0d + e000-efff : PCI Bus 0000:15 + fce0-fcff : pnp 00:06 diff --git a/tests/fixtures/linux-proc/loadavg b/tests/fixtures/linux-proc/loadavg new file mode 100644 index 00000000..3cada372 --- /dev/null +++ b/tests/fixtures/linux-proc/loadavg @@ -0,0 +1 @@ +0.00 0.01 0.03 2/111 2039 diff --git a/tests/fixtures/linux-proc/locks b/tests/fixtures/linux-proc/locks new file mode 100644 index 00000000..c5335b04 --- /dev/null +++ b/tests/fixtures/linux-proc/locks @@ -0,0 +1,4 @@ +1: POSIX ADVISORY WRITE 877 00:19:812 0 EOF +2: FLOCK ADVISORY WRITE 854 00:19:805 0 EOF +3: POSIX ADVISORY WRITE 701 00:19:702 0 EOF +4: FLOCK ADVISORY WRITE 870 fd:00:264967 0 EOF diff --git a/tests/fixtures/linux-proc/meminfo b/tests/fixtures/linux-proc/meminfo new file mode 100644 index 00000000..e992abf5 --- /dev/null +++ b/tests/fixtures/linux-proc/meminfo @@ -0,0 +1,51 @@ +MemTotal: 3997272 kB +MemFree: 2760316 kB +MemAvailable: 3386876 kB +Buffers: 40452 kB +Cached: 684856 kB +SwapCached: 0 kB +Active: 475816 kB +Inactive: 322064 kB +Active(anon): 70216 kB +Inactive(anon): 148 kB +Active(file): 405600 kB +Inactive(file): 321916 kB +Unevictable: 19476 kB +Mlocked: 19476 kB +SwapTotal: 3996668 kB +SwapFree: 3996668 kB +Dirty: 152 kB +Writeback: 0 kB +AnonPages: 92064 kB +Mapped: 79464 kB +Shmem: 1568 kB +KReclaimable: 188216 kB +Slab: 288096 kB +SReclaimable: 188216 kB +SUnreclaim: 99880 kB +KernelStack: 5872 kB +PageTables: 1812 kB +NFS_Unstable: 0 kB +Bounce: 0 kB +WritebackTmp: 0 kB +CommitLimit: 5995304 kB +Committed_AS: 445240 kB +VmallocTotal: 34359738367 kB +VmallocUsed: 21932 kB +VmallocChunk: 0 kB +Percpu: 107520 kB +HardwareCorrupted: 0 kB +AnonHugePages: 0 kB +ShmemHugePages: 0 kB +ShmemPmdMapped: 0 kB +FileHugePages: 0 kB +FilePmdMapped: 0 kB +HugePages_Total: 0 +HugePages_Free: 0 +HugePages_Rsvd: 0 +HugePages_Surp: 0 +Hugepagesize: 2048 kB +Hugetlb: 0 kB +DirectMap4k: 192320 kB +DirectMap2M: 4001792 kB +DirectMap1G: 2097152 kB diff --git a/tests/fixtures/linux-proc/modules b/tests/fixtures/linux-proc/modules new file mode 100644 index 00000000..03c15612 --- /dev/null +++ b/tests/fixtures/linux-proc/modules @@ -0,0 +1,92 @@ +binfmt_misc 24576 1 - Live 0xffffffffc0ab4000 +vsock_loopback 16384 0 - Live 0xffffffffc0a14000 +vmw_vsock_virtio_transport_common 36864 1 vsock_loopback, Live 0xffffffffc0a03000 +vmw_vsock_vmci_transport 32768 1 - Live 0xffffffffc0a1b000 +vsock 45056 5 vsock_loopback,vmw_vsock_virtio_transport_common,vmw_vsock_vmci_transport, Live 0xffffffffc09f7000 +dm_multipath 36864 0 - Live 0xffffffffc09b6000 +scsi_dh_rdac 16384 0 - Live 0xffffffffc09a2000 +scsi_dh_emc 16384 0 - Live 0xffffffffc0967000 +scsi_dh_alua 20480 0 - Live 0xffffffffc090b000 +intel_rapl_msr 20480 0 - Live 0xffffffffc0947000 +intel_rapl_common 28672 1 intel_rapl_msr, Live 0xffffffffc09ae000 +rapl 20480 0 - Live 0xffffffffc0941000 +vmw_balloon 24576 0 - Live 0xffffffffc09a7000 +joydev 28672 0 - Live 0xffffffffc092f000 +input_leds 16384 0 - Live 0xffffffffc093c000 +serio_raw 20480 0 - Live 0xffffffffc0921000 +snd_ens1371 32768 0 - Live 0xffffffffc0999000 +snd_ac97_codec 163840 1 snd_ens1371, Live 0xffffffffc0970000 +uvcvideo 98304 0 - Live 0xffffffffc094e000 +btusb 57344 0 - Live 0xffffffffc0912000 +btrtl 24576 1 btusb, Live 0xffffffffc0904000 +gameport 24576 1 snd_ens1371, Live 0xffffffffc082b000 +videobuf2_vmalloc 20480 1 uvcvideo, Live 0xffffffffc0798000 +videobuf2_memops 20480 1 videobuf2_vmalloc, Live 0xffffffffc0929000 +btbcm 16384 1 btusb, Live 0xffffffffc0937000 +snd_rawmidi 36864 1 snd_ens1371, Live 0xffffffffc0851000 +btintel 28672 1 btusb, Live 0xffffffffc0823000 +snd_seq_device 16384 1 snd_rawmidi, Live 0xffffffffc081e000 +ac97_bus 16384 1 snd_ac97_codec, Live 0xffffffffc07b2000 +videobuf2_v4l2 28672 1 uvcvideo, Live 0xffffffffc07c3000 +bluetooth 602112 5 btusb,btrtl,btbcm,btintel, Live 0xffffffffc086c000 +videobuf2_common 57344 2 uvcvideo,videobuf2_v4l2, Live 0xffffffffc085d000 +snd_pcm 118784 2 snd_ens1371,snd_ac97_codec, Live 0xffffffffc0833000 +videodev 245760 3 uvcvideo,videobuf2_v4l2,videobuf2_common, Live 0xffffffffc07e1000 +snd_timer 40960 1 snd_pcm, Live 0xffffffffc07d6000 +ecdh_generic 16384 1 bluetooth, Live 0xffffffffc07cf000 +ecc 32768 1 ecdh_generic, Live 0xffffffffc07ba000 +mc 57344 4 uvcvideo,videobuf2_v4l2,videobuf2_common,videodev, Live 0xffffffffc07a3000 +snd 94208 6 snd_ens1371,snd_ac97_codec,snd_rawmidi,snd_seq_device,snd_pcm,snd_timer, Live 0xffffffffc0780000 +soundcore 16384 1 snd, Live 0xffffffffc0777000 +vmw_vmci 77824 2 vmw_vsock_vmci_transport,vmw_balloon, Live 0xffffffffc0763000 +mac_hid 16384 0 - Live 0xffffffffc075e000 +sch_fq_codel 20480 2 - Live 0xffffffffc072c000 +ip_tables 32768 0 - Live 0xffffffffc0714000 +x_tables 49152 1 ip_tables, Live 0xffffffffc0700000 +autofs4 45056 2 - Live 0xffffffffc06f4000 +btrfs 1323008 0 - Live 0xffffffffc05b0000 +blake2b_generic 20480 0 - Live 0xffffffffc038a000 +raid10 61440 0 - Live 0xffffffffc05a0000 +raid456 155648 0 - Live 0xffffffffc056f000 +async_raid6_recov 24576 1 raid456, Live 0xffffffffc0568000 +async_memcpy 20480 2 raid456,async_raid6_recov, Live 0xffffffffc0562000 +async_pq 24576 2 raid456,async_raid6_recov, Live 0xffffffffc0558000 +async_xor 20480 3 raid456,async_raid6_recov,async_pq, Live 0xffffffffc0552000 +async_tx 20480 5 raid456,async_raid6_recov,async_memcpy,async_pq,async_xor, Live 0xffffffffc054c000 +xor 24576 2 btrfs,async_xor, Live 0xffffffffc046d000 +raid6_pq 114688 4 btrfs,raid456,async_raid6_recov,async_pq, Live 0xffffffffc052b000 +libcrc32c 16384 2 btrfs,raid456, Live 0xffffffffc0468000 +raid1 49152 0 - Live 0xffffffffc03ea000 +raid0 24576 0 - Live 0xffffffffc03e3000 +multipath 20480 0 - Live 0xffffffffc0348000 +linear 20480 0 - Live 0xffffffffc030f000 +hid_generic 16384 0 - Live 0xffffffffc0327000 +usbhid 57344 0 - Live 0xffffffffc051c000 +hid 135168 2 hid_generic,usbhid, Live 0xffffffffc04fa000 +crct10dif_pclmul 16384 1 - Live 0xffffffffc03de000 +crc32_pclmul 16384 0 - Live 0xffffffffc035e000 +ghash_clmulni_intel 16384 0 - Live 0xffffffffc02f0000 +aesni_intel 372736 0 - Live 0xffffffffc049e000 +crypto_simd 16384 1 aesni_intel, Live 0xffffffffc0338000 +cryptd 24576 2 ghash_clmulni_intel,crypto_simd, Live 0xffffffffc02df000 +glue_helper 16384 1 aesni_intel, Live 0xffffffffc02da000 +psmouse 163840 0 - Live 0xffffffffc0475000 +vmwgfx 323584 1 - Live 0xffffffffc0413000 +ttm 102400 1 vmwgfx, Live 0xffffffffc03f9000 +drm_kms_helper 225280 1 vmwgfx, Live 0xffffffffc03a6000 +syscopyarea 16384 1 drm_kms_helper, Live 0xffffffffc02d5000 +mptspi 24576 3 - Live 0xffffffffc02ca000 +sysfillrect 16384 1 drm_kms_helper, Live 0xffffffffc02c3000 +sysimgblt 16384 1 drm_kms_helper, Live 0xffffffffc02be000 +fb_sys_fops 16384 1 drm_kms_helper, Live 0xffffffffc02b9000 +mptscsih 45056 1 mptspi, Live 0xffffffffc0395000 +e1000 151552 0 - Live 0xffffffffc0364000 +cec 53248 1 drm_kms_helper, Live 0xffffffffc0350000 +ahci 40960 0 - Live 0xffffffffc033d000 +libahci 36864 1 ahci, Live 0xffffffffc032e000 +rc_core 61440 1 cec, Live 0xffffffffc0317000 +mptbase 98304 2 mptspi,mptscsih, Live 0xffffffffc02f6000 +scsi_transport_spi 32768 1 mptspi, Live 0xffffffffc02e7000 +drm 565248 4 vmwgfx,ttm,drm_kms_helper, Live 0xffffffffc022e000 +i2c_piix4 28672 0 - Live 0xffffffffc0222000 +pata_acpi 16384 0 - Live 0xffffffffc021a000 diff --git a/tests/fixtures/linux-proc/mtrr b/tests/fixtures/linux-proc/mtrr new file mode 100644 index 00000000..8a1f565d --- /dev/null +++ b/tests/fixtures/linux-proc/mtrr @@ -0,0 +1,12 @@ +reg00: base=0x000000000 ( 0MB), size= 2048MB, count=1: write-back +reg01: base=0x080000000 ( 2048MB), size= 1024MB, count=1: write-back +reg02: base=0x100000000 ( 4096MB), size= 4096MB, count=1: write-back +reg03: base=0x200000000 ( 8192MB), size= 8192MB, count=1: write-back +reg04: base=0x400000000 (16384MB), size=16384MB, count=1: write-back +reg05: base=0x800000000 (32768MB), size=32768MB, count=1: write-back +reg06: base=0x1000000000 (65536MB), size=65536MB, count=1: write-back +reg07: base=0x00000000 ( 0MB), size= 256MB: write-back, count=1 +reg08: base=0xe8000000 (3712MB), size= 32MB: write-combining, count=1 +reg09: base=0x00000000 ( 0MB), size= 64MB: write-back, count=1 +reg10: base=0xfb000000 (4016MB), size= 16MB: write-combining, count=1 +reg11: base=0xfb000000 (4016MB), size= 4kB: uncachable, count=1 diff --git a/tests/fixtures/linux-proc/net_arp b/tests/fixtures/linux-proc/net_arp new file mode 100644 index 00000000..2926f235 --- /dev/null +++ b/tests/fixtures/linux-proc/net_arp @@ -0,0 +1,4 @@ +IP address HW type Flags HW address Mask Device +192.168.71.254 0x1 0x2 00:50:56:f3:2f:ae * ens33 +192.168.71.2 0x1 0x2 00:50:56:f7:4a:fc * ens33 +192.168.71.1 0x1 0x2 a6:83:e7:d2:a9:65 * ens33 diff --git a/tests/fixtures/linux-proc/net_dev b/tests/fixtures/linux-proc/net_dev new file mode 100644 index 00000000..ed23bb15 --- /dev/null +++ b/tests/fixtures/linux-proc/net_dev @@ -0,0 +1,4 @@ +Inter-| Receive | Transmit + face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed + lo: 13222 152 0 0 0 0 0 0 13222 152 0 0 0 0 0 0 + ens33: 60600053 109378 0 0 0 0 0 0 44256546 121425 0 0 0 0 0 0 diff --git a/tests/fixtures/linux-proc/net_dev_mcast b/tests/fixtures/linux-proc/net_dev_mcast new file mode 100644 index 00000000..a1962666 --- /dev/null +++ b/tests/fixtures/linux-proc/net_dev_mcast @@ -0,0 +1,6 @@ +2 ens33 1 0 333300000001 +2 ens33 1 0 01005e000001 +2 ens33 1 0 0180c2000000 +2 ens33 1 0 0180c2000003 +2 ens33 1 0 0180c200000e +2 ens33 1 0 3333ffa4e315 diff --git a/tests/fixtures/linux-proc/net_if_inet6 b/tests/fixtures/linux-proc/net_if_inet6 new file mode 100644 index 00000000..26565fc2 --- /dev/null +++ b/tests/fixtures/linux-proc/net_if_inet6 @@ -0,0 +1,2 @@ +fe80000000000000020c29fffea4e315 02 40 20 80 ens33 +00000000000000000000000000000001 01 80 10 80 lo diff --git a/tests/fixtures/linux-proc/net_igmp b/tests/fixtures/linux-proc/net_igmp new file mode 100644 index 00000000..9b0dde85 --- /dev/null +++ b/tests/fixtures/linux-proc/net_igmp @@ -0,0 +1,5 @@ +Idx Device : Count Querier Group Users Timer Reporter +1 lo : 1 V3 + 010000E0 1 0:00000000 0 +2 ens33 : 1 V3 + 010000E0 1 0:00000000 0 diff --git a/tests/fixtures/linux-proc/net_igmp6 b/tests/fixtures/linux-proc/net_igmp6 new file mode 100644 index 00000000..84b5e807 --- /dev/null +++ b/tests/fixtures/linux-proc/net_igmp6 @@ -0,0 +1,5 @@ +1 lo ff020000000000000000000000000001 1 0000000C 0 +1 lo ff010000000000000000000000000001 1 00000008 0 +2 ens33 ff0200000000000000000001ffa4e315 1 00000004 0 +2 ens33 ff020000000000000000000000000001 2 0000000C 0 +2 ens33 ff010000000000000000000000000001 1 00000008 0 diff --git a/tests/fixtures/linux-proc/net_ipv6_route b/tests/fixtures/linux-proc/net_ipv6_route new file mode 100644 index 00000000..e4507725 --- /dev/null +++ b/tests/fixtures/linux-proc/net_ipv6_route @@ -0,0 +1,7 @@ +00000000000000000000000000000001 80 00000000000000000000000000000000 00 00000000000000000000000000000000 00000100 00000001 00000000 00000001 lo +fe800000000000000000000000000000 40 00000000000000000000000000000000 00 00000000000000000000000000000000 00000100 00000001 00000000 00000001 ens33 +00000000000000000000000000000000 00 00000000000000000000000000000000 00 00000000000000000000000000000000 ffffffff 00000001 00000000 00200200 lo +00000000000000000000000000000001 80 00000000000000000000000000000000 00 00000000000000000000000000000000 00000000 00000004 00000000 80200001 lo +fe80000000000000020c29fffea4e315 80 00000000000000000000000000000000 00 00000000000000000000000000000000 00000000 00000002 00000000 80200001 ens33 +ff000000000000000000000000000000 08 00000000000000000000000000000000 00 00000000000000000000000000000000 00000100 00000004 00000000 00000001 ens33 +00000000000000000000000000000000 00 00000000000000000000000000000000 00 00000000000000000000000000000000 ffffffff 00000001 00000000 00200200 lo diff --git a/tests/fixtures/linux-proc/net_netlink b/tests/fixtures/linux-proc/net_netlink new file mode 100644 index 00000000..2cc3f377 --- /dev/null +++ b/tests/fixtures/linux-proc/net_netlink @@ -0,0 +1,27 @@ +sk Eth Pid Groups Rmem Wmem Dump Locks Drops Inode +ffff9b61adaff000 0 1 800405d5 0 0 0 2 0 29791 +ffff9b61a792a000 0 837 00000111 0 0 0 2 0 35337 +ffff9b61b8e4d000 0 0 00000000 0 0 0 2 0 17 +ffff9b61a7464800 4 0 00000000 0 0 0 2 0 24798 +ffff9b61b8216800 7 0 00000000 0 0 0 2 0 17250 +ffff9b61a7592000 9 2875 00000000 0 0 0 2 0 89117 +ffff9b61adafc000 9 4095138316 00000000 0 0 0 2 0 29927 +ffff9b61b8e4e800 9 0 00000000 0 0 0 2 0 22 +ffff9b61b71c4800 9 1 00000001 0 0 0 2 0 29784 +ffff9b61b82ef000 10 0 00000000 0 0 0 2 0 14333 +ffff9b61b821d000 11 0 00000000 0 0 0 2 0 1026 +ffff9b61a6ca7800 15 3496194766 00000002 0 0 0 2 0 38994 +ffff9b61b5a60800 15 835 00000002 0 0 0 2 0 34728 +ffff9b61adafc800 15 3516054882 00000001 0 0 0 2 0 29794 +ffff9b61acb18800 15 701 00000002 0 0 0 2 0 33113 +ffff9b61b71c0800 15 1 00000002 0 0 0 2 0 29760 +ffff9b61a6ca4000 15 4232252993 00000002 0 0 0 2 0 38995 +ffff9b61b1f08800 15 1207 00000002 0 0 0 2 0 41861 +ffff9b61a768d000 15 872 00000002 0 0 0 2 0 38992 +ffff9b61b3c84000 15 870 00000002 0 0 0 2 0 40752 +ffff9b61ad435800 15 8470 00000002 0 0 0 2 0 104872 +ffff9b61a6ca2800 15 3571242113 00000002 0 0 0 2 0 38993 +ffff9b61b8e48800 15 0 00000000 0 0 0 2 0 24 +ffff9b61b821b800 16 0 00000000 0 0 0 2 0 1037 +ffff9b61b5a64000 16 835 00000000 0 0 0 2 0 34727 +ffff9b61b8218800 18 0 00000000 0 0 0 2 0 1029 diff --git a/tests/fixtures/linux-proc/net_netstat b/tests/fixtures/linux-proc/net_netstat new file mode 100644 index 00000000..8c3eb396 --- /dev/null +++ b/tests/fixtures/linux-proc/net_netstat @@ -0,0 +1,6 @@ +TcpExt: SyncookiesSent SyncookiesRecv SyncookiesFailed EmbryonicRsts PruneCalled RcvPruned OfoPruned OutOfWindowIcmps LockDroppedIcmps ArpFilter TW TWRecycled TWKilled PAWSActive PAWSEstab DelayedACKs DelayedACKLocked DelayedACKLost ListenOverflows ListenDrops TCPHPHits TCPPureAcks TCPHPAcks TCPRenoRecovery TCPSackRecovery TCPSACKReneging TCPSACKReorder TCPRenoReorder TCPTSReorder TCPFullUndo TCPPartialUndo TCPDSACKUndo TCPLossUndo TCPLostRetransmit TCPRenoFailures TCPSackFailures TCPLossFailures TCPFastRetrans TCPSlowStartRetrans TCPTimeouts TCPLossProbes TCPLossProbeRecovery TCPRenoRecoveryFail TCPSackRecoveryFail TCPRcvCollapsed TCPBacklogCoalesce TCPDSACKOldSent TCPDSACKOfoSent TCPDSACKRecv TCPDSACKOfoRecv TCPAbortOnData TCPAbortOnClose TCPAbortOnMemory TCPAbortOnTimeout TCPAbortOnLinger TCPAbortFailed TCPMemoryPressures TCPMemoryPressuresChrono TCPSACKDiscard TCPDSACKIgnoredOld TCPDSACKIgnoredNoUndo TCPSpuriousRTOs TCPMD5NotFound TCPMD5Unexpected TCPMD5Failure TCPSackShifted TCPSackMerged TCPSackShiftFallback TCPBacklogDrop PFMemallocDrop TCPMinTTLDrop TCPDeferAcceptDrop IPReversePathFilter TCPTimeWaitOverflow TCPReqQFullDoCookies TCPReqQFullDrop TCPRetransFail TCPRcvCoalesce TCPOFOQueue TCPOFODrop TCPOFOMerge TCPChallengeACK TCPSYNChallenge TCPFastOpenActive TCPFastOpenActiveFail TCPFastOpenPassive TCPFastOpenPassiveFail TCPFastOpenListenOverflow TCPFastOpenCookieReqd TCPFastOpenBlackhole TCPSpuriousRtxHostQueues BusyPollRxPackets TCPAutoCorking TCPFromZeroWindowAdv TCPToZeroWindowAdv TCPWantZeroWindowAdv TCPSynRetrans TCPOrigDataSent TCPHystartTrainDetect TCPHystartTrainCwnd TCPHystartDelayDetect TCPHystartDelayCwnd TCPACKSkippedSynRecv TCPACKSkippedPAWS TCPACKSkippedSeq TCPACKSkippedFinWait2 TCPACKSkippedTimeWait TCPACKSkippedChallenge TCPWinProbe TCPKeepAlive TCPMTUPFail TCPMTUPSuccess TCPDelivered TCPDeliveredCE TCPAckCompressed TCPZeroWindowDrop TCPRcvQDrop TCPWqueueTooBig TCPFastOpenPassiveAltKey TcpTimeoutRehash TcpDuplicateDataRehash +TcpExt: 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 10 53 0 0 0 2387 12711 53535 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2883 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 151 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28376 0 0 0 0 119438 3 60 0 0 0 0 0 0 0 0 0 6 0 0 119453 0 0 0 0 0 0 0 0 +IpExt: InNoRoutes InTruncatedPkts InMcastPkts OutMcastPkts InBcastPkts OutBcastPkts InOctets OutOctets InMcastOctets OutMcastOctets InBcastOctets OutBcastOctets InCsumErrors InNoECTPkts InECT1Pkts InECT0Pkts InCEPkts ReasmOverlaps +IpExt: 0 0 0 0 366 0 57734503 42330709 0 0 31466 0 0 106821 0 3273 0 0 +MPTcpExt: MPCapableSYNRX MPCapableACKRX MPCapableFallbackACK MPCapableFallbackSYNACK MPTCPRetrans MPJoinNoTokenFound MPJoinSynRx MPJoinSynAckRx MPJoinSynAckHMacFailure MPJoinAckRx MPJoinAckHMacFailure DSSNotMatching InfiniteMapRx +MPTcpExt: 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/tests/fixtures/linux-proc/net_packet b/tests/fixtures/linux-proc/net_packet new file mode 100644 index 00000000..ce24cada --- /dev/null +++ b/tests/fixtures/linux-proc/net_packet @@ -0,0 +1,2 @@ +sk RefCnt Type Proto Iface R Rmem User Inode +ffff9b61b56c1800 3 3 88cc 2 1 0 101 34754 diff --git a/tests/fixtures/linux-proc/net_protocols b/tests/fixtures/linux-proc/net_protocols new file mode 100644 index 00000000..bd8429d1 --- /dev/null +++ b/tests/fixtures/linux-proc/net_protocols @@ -0,0 +1,21 @@ +protocol size sockets memory press maxhdr slab module cl co di ac io in de sh ss gs se re sp bi br ha uh gp em +AF_VSOCK 1216 0 -1 NI 0 yes vsock n n n n n n n n n n n n n n n n n n n +SCO 832 0 -1 NI 0 no bluetooth n n n n n n n n n n n n n n n n n n n +L2CAP 816 0 -1 NI 0 no bluetooth n n n n n n n n n n n n n n n n n n n +HCI 880 0 -1 NI 0 no bluetooth n n n n n n n n n n n n n n n n n n n +PACKET 1472 1 -1 NI 0 no kernel n n n n n n n n n n n n n n n n n n n +MPTCPv6 1824 0 1 no 0 yes kernel y n y y n y y y y y y y n n n y y y n +PINGv6 1176 0 -1 NI 0 yes kernel y y y n n y n n y y y y n y y y y y n +RAWv6 1176 1 -1 NI 0 yes kernel y y y n y y y n y y y y n y y y y n n +UDPLITEv6 1344 0 1 NI 0 yes kernel y y y n y y y n y y y y n n n y y y n +UDPv6 1344 0 1 NI 0 yes kernel y y y n y y y n y y y y n n n y y y n +TCPv6 2368 1 1 no 320 yes kernel y y y y y y y y y y y y y n y y y y y +XDP 960 0 -1 NI 0 no kernel n n n n n n n n n n n n n n n n n n n +UNIX 1024 131 -1 NI 0 yes kernel n n n n n n n n n n n n n n n n n n n +UDP-Lite 1152 0 1 NI 0 yes kernel y y y n y y y n y y y y y n n y y y n +MPTCP 1664 0 1 no 0 yes kernel y n y y n y y y y y y y n n n y y y n +PING 968 0 -1 NI 0 yes kernel y y y n n y n n y y y y n y y y y y n +RAW 976 0 -1 NI 0 yes kernel y y y n y y y n y y y y n y y y y n n +UDP 1152 2 1 NI 0 yes kernel y y y n y y y n y y y y y n n y y y n +TCP 2208 3 1 no 320 yes kernel y y y y y y y y y y y y y n y y y y y +NETLINK 1096 18 -1 NI 0 no kernel n n n n n n n n n n n n n n n n n n n diff --git a/tests/fixtures/linux-proc/net_route b/tests/fixtures/linux-proc/net_route new file mode 100644 index 00000000..eb9946d4 --- /dev/null +++ b/tests/fixtures/linux-proc/net_route @@ -0,0 +1,4 @@ +Iface Destination Gateway Flags RefCnt Use Metric Mask MTU Window IRTT +ens33 00000000 0247A8C0 0003 0 0 100 00000000 0 0 0 +ens33 0047A8C0 00000000 0001 0 0 0 00FFFFFF 0 0 0 +ens33 0247A8C0 00000000 0005 0 0 100 FFFFFFFF 0 0 0 diff --git a/tests/fixtures/linux-proc/net_unix b/tests/fixtures/linux-proc/net_unix new file mode 100644 index 00000000..bd1f1cba --- /dev/null +++ b/tests/fixtures/linux-proc/net_unix @@ -0,0 +1,131 @@ +Num RefCount Protocol Flags Type St Inode Path +ffff9b61ac49c400: 00000002 00000000 00010000 0001 01 42776 /var/snap/lxd/common/lxd/unix.socket +ffff9b61b509bc00: 00000002 00000000 00010000 0001 01 35128 /var/run/vmware/guestServicePipe +ffff9b61a77b9800: 00000002 00000000 00010000 0005 01 29792 /run/udev/control +ffff9b61ac49a800: 00000002 00000000 00010000 0001 01 42769 /var/snap/lxd/common/lxd-user/unix.socket +ffff9b61b0e54800: 00000002 00000000 00000000 0002 01 41863 /run/user/1000/systemd/notify +ffff9b61b0e56c00: 00000002 00000000 00010000 0001 01 41866 /run/user/1000/systemd/private +ffff9b61b0e52c00: 00000002 00000000 00010000 0001 01 41874 /run/user/1000/bus +ffff9b61a77bb800: 00000002 00000000 00010000 0001 01 29777 @/org/kernel/linux/storage/multipathd +ffff9b61b0e50000: 00000002 00000000 00010000 0001 01 41875 /run/user/1000/gnupg/S.dirmngr +ffff9b61b0e51000: 00000002 00000000 00010000 0001 01 41876 /run/user/1000/gnupg/S.gpg-agent.browser +ffff9b61b0e50c00: 00000002 00000000 00010000 0001 01 41877 /run/user/1000/gnupg/S.gpg-agent.extra +ffff9b61b0e51400: 00000002 00000000 00010000 0001 01 41878 /run/user/1000/gnupg/S.gpg-agent.ssh +ffff9b61a777d400: 00000002 00000000 00010000 0001 01 35973 /run/dbus/system_bus_socket +ffff9b61b0e52400: 00000002 00000000 00010000 0001 01 41879 /run/user/1000/gnupg/S.gpg-agent +ffff9b61a7779800: 00000002 00000000 00010000 0001 01 35990 /run/snapd.socket +ffff9b61b0e57000: 00000002 00000000 00010000 0001 01 41903 /run/user/1000/pk-debconf-socket +ffff9b61a777d000: 00000002 00000000 00010000 0001 01 35992 /run/snapd-snap.socket +ffff9b61b0e54c00: 00000002 00000000 00010000 0001 01 41904 /run/user/1000/snapd-session-agent.socket +ffff9b61a777ac00: 00000002 00000000 00010000 0001 01 35994 /run/uuidd/request +ffff9b61b2919c00: 00000002 00000000 00010000 0001 01 37637 /run/irqbalance/irqbalance861.sock +ffff9b61a77bfc00: 00000003 00000000 00000000 0002 01 29761 /run/systemd/notify +ffff9b61a77b9c00: 00000002 00000000 00010000 0001 01 29764 /run/systemd/private +ffff9b61a77ba000: 00000002 00000000 00010000 0001 01 29766 /run/systemd/userdb/io.systemd.DynamicUser +ffff9b61a77bec00: 00000002 00000000 00010000 0001 01 29775 /run/lvm/lvmpolld.socket +ffff9b61a77be000: 00000002 00000000 00000000 0002 01 29778 /run/systemd/journal/syslog +ffff9b61a77bdc00: 0000000A 00000000 00000000 0002 01 29785 /run/systemd/journal/dev-log +ffff9b61a77bc000: 00000002 00000000 00010000 0001 01 29787 /run/systemd/journal/stdout +ffff9b61a77bcc00: 00000009 00000000 00000000 0002 01 29789 /run/systemd/journal/socket +ffff9b61a777c000: 00000002 00000000 00010000 0001 01 30858 /run/systemd/journal/io.systemd.journal +ffff9b61a777f800: 00000002 00000000 00010000 0001 01 35985 @ISCSIADM_ABSTRACT_NAMESPACE +ffff9b61b0e55400: 00000003 00000000 00000000 0002 01 41865 +ffff9b61b2c07800: 00000003 00000000 00000000 0001 03 40074 /run/dbus/system_bus_socket +ffff9b61b2d56c00: 00000002 00000000 00000000 0002 01 37639 +ffff9b61a7842800: 00000002 00000000 00000000 0002 01 34191 +ffff9b61b5a91000: 00000003 00000000 00000000 0002 01 34731 +ffff9b61a7842c00: 00000003 00000000 00000000 0002 01 34198 +ffff9b61b4a40000: 00000003 00000000 00000000 0001 03 37395 +ffff9b61ac18a400: 00000002 00000000 00000000 0002 01 34187 +ffff9b61b0e54400: 00000003 00000000 00000000 0001 03 41868 /run/dbus/system_bus_socket +ffff9b61ab65dc00: 00000003 00000000 00000000 0001 03 32191 /run/systemd/journal/stdout +ffff9b61b4a40400: 00000003 00000000 00000000 0001 03 37695 /run/dbus/system_bus_socket +ffff9b61b5a90800: 00000003 00000000 00000000 0002 01 34732 +ffff9b61a777c400: 00000003 00000000 00000000 0001 03 34123 +ffff9b61a77bc400: 00000003 00000000 00000000 0001 03 104866 +ffff9b61b279d000: 00000003 00000000 00000000 0001 03 39056 +ffff9b61a777cc00: 00000003 00000000 00000000 0001 03 37694 /run/dbus/system_bus_socket +ffff9b61b579d000: 00000003 00000000 00000000 0001 03 35846 /run/systemd/journal/stdout +ffff9b61b4a43000: 00000003 00000000 00000000 0001 03 35594 /run/systemd/journal/stdout +ffff9b61ab65ec00: 00000003 00000000 00000000 0001 03 33108 +ffff9b61a7840000: 00000003 00000000 00000000 0002 01 34195 +ffff9b61a77bf800: 00000003 00000000 00000000 0001 03 30127 +ffff9b61b633a000: 00000003 00000000 00000000 0002 01 30139 +ffff9b61a77bf400: 00000003 00000000 00000000 0001 03 37473 +ffff9b61b633ac00: 00000003 00000000 00000000 0002 01 30140 +ffff9b61b5a93000: 00000003 00000000 00000000 0002 01 34729 +ffff9b61a77bf000: 00000003 00000000 00000000 0002 01 29762 +ffff9b61ab7fe400: 00000002 00000000 00000000 0002 01 30860 +ffff9b61b0e56400: 00000003 00000000 00000000 0002 01 41864 +ffff9b61b4058000: 00000003 00000000 00000000 0001 03 35735 /run/systemd/journal/stdout +ffff9b61a777e400: 00000003 00000000 00000000 0001 03 36549 +ffff9b61b0e56000: 00000003 00000000 00000000 0001 03 41867 +ffff9b61b4820000: 00000003 00000000 00000000 0001 03 37693 /run/dbus/system_bus_socket +ffff9b61b3af2400: 00000003 00000000 00000000 0001 03 37400 /run/systemd/journal/stdout +ffff9b61a77be400: 00000003 00000000 00000000 0002 01 29763 +ffff9b61a7841800: 00000003 00000000 00000000 0002 01 34196 +ffff9b61a777ec00: 00000003 00000000 00000000 0001 03 36166 +ffff9b61b633b800: 00000003 00000000 00000000 0001 03 30891 /run/systemd/journal/stdout +ffff9b61a7779000: 00000003 00000000 00000000 0001 03 36010 +ffff9b61b2897800: 00000003 00000000 00000000 0001 03 37635 /run/systemd/journal/stdout +ffff9b61b5a95800: 00000003 00000000 00000000 0001 03 37691 /run/dbus/system_bus_socket +ffff9b61b2798c00: 00000003 00000000 00000000 0001 03 39057 +ffff9b61ac18fc00: 00000003 00000000 00000000 0001 03 32701 /run/systemd/journal/stdout +ffff9b61a7846800: 00000003 00000000 00000000 0001 03 33991 /run/systemd/journal/stdout +ffff9b61a7778000: 00000003 00000000 00000000 0001 03 35845 +ffff9b61a7847000: 00000003 00000000 00000000 0001 03 35984 +ffff9b61a77b8800: 00000003 00000000 00000000 0001 03 35734 +ffff9b61b5a94800: 00000002 00000000 00000000 0002 01 34725 +ffff9b61a77b8400: 00000003 00000000 00000000 0001 03 35806 +ffff9b61a7778800: 00000003 00000000 00000000 0001 03 34722 +ffff9b61a7778c00: 00000003 00000000 00000000 0001 03 38537 +ffff9b61a77b8000: 00000003 00000000 00000000 0001 03 35593 +ffff9b61b5a94000: 00000003 00000000 00000000 0001 03 35262 /run/systemd/journal/stdout +ffff9b61b2799400: 00000003 00000000 00000000 0001 03 39051 +ffff9b61a777b000: 00000003 00000000 00000000 0001 03 33989 +ffff9b61b2c01400: 00000003 00000000 00000000 0001 03 37547 /run/systemd/journal/stdout +ffff9b61a77bb400: 00000003 00000000 00000000 0001 03 41833 /run/systemd/journal/stdout +ffff9b61b5a97400: 00000003 00000000 00000000 0001 03 35983 +ffff9b61b4825c00: 00000003 00000000 00000000 0001 03 35453 +ffff9b61a7844800: 00000003 00000000 00000000 0002 01 34197 +ffff9b61a77bb000: 00000003 00000000 00000000 0001 03 42102 +ffff9b61b0e53800: 00000002 00000000 00000000 0002 01 41844 +ffff9b61a7844c00: 00000003 00000000 00000000 0001 03 37692 /run/dbus/system_bus_socket +ffff9b61a777a000: 00000003 00000000 00000000 0001 03 36317 +ffff9b61b2c00000: 00000003 00000000 00000000 0001 03 38743 +ffff9b61b4824400: 00000002 00000000 00000000 0002 01 35335 +ffff9b61b279b800: 00000003 00000000 00000000 0001 03 39052 /run/dbus/system_bus_socket +ffff9b61b08e4800: 00000003 00000000 00000000 0001 03 32702 /run/systemd/journal/stdout +ffff9b61b5a96400: 00000003 00000000 00000000 0002 01 34730 +ffff9b61a777a800: 00000003 00000000 00000000 0001 03 34066 +ffff9b61a77ba400: 00000002 00000000 00000000 0002 01 30241 +ffff9b61b633f800: 00000002 00000000 00000000 0002 01 30136 +ffff9b61b288b800: 00000003 00000000 00000000 0001 03 37721 /run/systemd/journal/stdout +ffff9b61b48ab800: 00000003 00000000 00000000 0001 03 39006 /run/systemd/journal/stdout +ffff9b61b0defc00: 00000002 00000000 00000000 0002 01 42110 +ffff9b61b3b5ac00: 00000003 00000000 00000000 0001 03 39035 /run/dbus/system_bus_socket +ffff9b612acc4800: 00000003 00000000 00000000 0001 03 104870 /run/dbus/system_bus_socket +ffff9b612acc5000: 00000003 00000000 00000000 0001 03 103612 /run/systemd/journal/stdout +ffff9b61b4121c00: 00000002 00000000 00000000 0002 01 37688 +ffff9b61ab534400: 00000002 00000000 00000000 0002 01 40763 +ffff9b61b24a3800: 00000003 00000000 00000000 0001 03 37831 +ffff9b61b6334400: 00000002 00000000 00000000 0002 01 38990 +ffff9b612acc2400: 00000003 00000000 00000000 0001 03 104869 +ffff9b61af8ce800: 00000002 00000000 00000000 0002 01 89141 +ffff9b61af8cf000: 00000003 00000000 00000000 0001 03 86011 +ffff9b61b6335000: 00000003 00000000 00000000 0001 03 38997 /run/dbus/system_bus_socket +ffff9b61b3b5d000: 00000003 00000000 00000000 0001 03 39038 +ffff9b61b4127000: 00000003 00000000 00000000 0001 03 35808 /run/systemd/journal/stdout +ffff9b61b3b5e400: 00000003 00000000 00000000 0001 03 37474 /run/systemd/journal/stdout +ffff9b61b42d7c00: 00000002 00000000 00000000 0002 01 36009 +ffff9b61b3b5ec00: 00000003 00000000 00000000 0001 03 39037 +ffff9b61af8cc800: 00000003 00000000 00000000 0001 03 86012 +ffff9b61b3b5e800: 00000003 00000000 00000000 0001 03 39034 +ffff9b61b6337400: 00000003 00000000 00000000 0001 03 38996 +ffff9b61b4125400: 00000003 00000000 00000000 0001 03 37690 +ffff9b61af8cd000: 00000002 00000000 00000000 0002 01 89121 +ffff9b61b288cc00: 00000002 00000000 00000000 0002 01 85934 +ffff9b61b4125000: 00000003 00000000 00000000 0001 03 37689 +ffff9b61b288c000: 00000002 00000000 00000000 0001 03 85914 +ffff9b61b24a0400: 00000003 00000000 00000000 0001 03 37832 /run/dbus/system_bus_socket +ffff9b61b288c400: 00000003 00000000 00000000 0001 03 38139 diff --git a/tests/fixtures/linux-proc/pagetypeinfo b/tests/fixtures/linux-proc/pagetypeinfo new file mode 100644 index 00000000..6c7d0ed8 --- /dev/null +++ b/tests/fixtures/linux-proc/pagetypeinfo @@ -0,0 +1,24 @@ +Page block order: 9 +Pages per block: 512 + +Free pages count per migrate type at order 0 1 2 3 4 5 6 7 8 9 10 +Node 0, zone DMA, type Unmovable 0 0 0 1 1 1 1 1 0 0 0 +Node 0, zone DMA, type Movable 0 0 0 0 0 0 0 0 0 1 3 +Node 0, zone DMA, type Reclaimable 0 0 0 0 0 0 0 0 0 0 0 +Node 0, zone DMA, type HighAtomic 0 0 0 0 0 0 0 0 0 0 0 +Node 0, zone DMA, type Isolate 0 0 0 0 0 0 0 0 0 0 0 +Node 0, zone DMA32, type Unmovable 1 2 1 3 5 2 1 0 0 1 0 +Node 0, zone DMA32, type Movable 20 52 78 47 32 23 11 9 2 2 629 +Node 0, zone DMA32, type Reclaimable 2 1 3 0 1 0 1 0 1 1 0 +Node 0, zone DMA32, type HighAtomic 0 0 0 0 0 0 0 0 0 0 0 +Node 0, zone DMA32, type Isolate 0 0 0 0 0 0 0 0 0 0 0 +Node 0, zone Normal, type Unmovable 0 22 7 9 0 0 0 0 0 0 0 +Node 0, zone Normal, type Movable 0 0 1 1 1 1 2 11 13 0 0 +Node 0, zone Normal, type Reclaimable 0 0 0 0 0 0 0 0 0 0 0 +Node 0, zone Normal, type HighAtomic 0 0 0 0 0 0 0 0 0 0 0 +Node 0, zone Normal, type Isolate 0 0 0 0 0 0 0 0 0 0 0 + +Number of blocks type Unmovable Movable Reclaimable HighAtomic Isolate +Node 0, zone DMA 1 7 0 0 0 +Node 0, zone DMA32 8 1472 48 0 0 +Node 0, zone Normal 120 345 47 0 0 diff --git a/tests/fixtures/linux-proc/partitions b/tests/fixtures/linux-proc/partitions new file mode 100644 index 00000000..cbbf74af --- /dev/null +++ b/tests/fixtures/linux-proc/partitions @@ -0,0 +1,16 @@ +major minor #blocks name + + 7 0 56896 loop0 + 7 1 56868 loop1 + 7 2 111248 loop2 + 7 3 63448 loop3 + 7 5 48088 loop5 + 7 6 48080 loop6 + 7 7 105464 loop7 + 8 0 20971520 sda + 8 1 1024 sda1 + 8 2 1048576 sda2 + 8 3 19919872 sda3 + 11 0 1021566 sr0 + 253 0 19918848 dm-0 + 7 8 63444 loop8 diff --git a/tests/fixtures/linux-proc/pid_fdinfo b/tests/fixtures/linux-proc/pid_fdinfo new file mode 100644 index 00000000..67a47247 --- /dev/null +++ b/tests/fixtures/linux-proc/pid_fdinfo @@ -0,0 +1,6 @@ +pos: 0 +flags: 02004002 +mnt_id: 9 +scm_fds: 0 +ino: 63107 +lock: 1: FLOCK ADVISORY WRITE 359 00:13:11691 0 EOF diff --git a/tests/fixtures/linux-proc/pid_fdinfo_dma b/tests/fixtures/linux-proc/pid_fdinfo_dma new file mode 100644 index 00000000..a7f63a13 --- /dev/null +++ b/tests/fixtures/linux-proc/pid_fdinfo_dma @@ -0,0 +1,7 @@ +pos: 0 +flags: 04002 +mnt_id: 9 +ino: 63107 +size: 32768 +count: 2 +exp_name: system-heap diff --git a/tests/fixtures/linux-proc/pid_fdinfo_epoll b/tests/fixtures/linux-proc/pid_fdinfo_epoll new file mode 100644 index 00000000..fd1ccb8e --- /dev/null +++ b/tests/fixtures/linux-proc/pid_fdinfo_epoll @@ -0,0 +1,5 @@ +pos: 0 +flags: 02 +mnt_id: 9 +ino: 63107 +tfd: 5 events: 1d data: ffffffffffffffff pos:0 ino:61af sdev:7 diff --git a/tests/fixtures/linux-proc/pid_fdinfo_fanotify b/tests/fixtures/linux-proc/pid_fdinfo_fanotify new file mode 100644 index 00000000..e7a8938e --- /dev/null +++ b/tests/fixtures/linux-proc/pid_fdinfo_fanotify @@ -0,0 +1,7 @@ +pos: 0 +flags: 02 +mnt_id: 9 +ino: 63107 +fanotify flags:10 event-flags:0 +fanotify mnt_id:12 mflags:40 mask:38 ignored_mask:40000003 +fanotify ino:4f969 sdev:800013 mflags:0 mask:3b ignored_mask:40000000 fhandle-bytes:8 fhandle-type:1 f_handle:69f90400c275b5b4 diff --git a/tests/fixtures/linux-proc/pid_fdinfo_inotify b/tests/fixtures/linux-proc/pid_fdinfo_inotify new file mode 100644 index 00000000..2c3599ea --- /dev/null +++ b/tests/fixtures/linux-proc/pid_fdinfo_inotify @@ -0,0 +1,5 @@ +pos: 0 +flags: 02000000 +mnt_id: 9 +ino: 63107 +inotify wd:3 ino:9e7e sdev:800013 mask:800afce ignored_mask:0 fhandle-bytes:8 fhandle-type:1 f_handle:7e9e0000640d1b6d diff --git a/tests/fixtures/linux-proc/pid_fdinfo_timerfd b/tests/fixtures/linux-proc/pid_fdinfo_timerfd new file mode 100644 index 00000000..8c426f9e --- /dev/null +++ b/tests/fixtures/linux-proc/pid_fdinfo_timerfd @@ -0,0 +1,9 @@ +pos: 0 +flags: 02 +mnt_id: 9 +ino: 63107 +clockid: 0 +ticks: 0 +settime flags: 01 +it_value: (0, 49406829) +it_interval: (1, 0) diff --git a/tests/fixtures/linux-proc/pid_io b/tests/fixtures/linux-proc/pid_io new file mode 100644 index 00000000..3c09d314 --- /dev/null +++ b/tests/fixtures/linux-proc/pid_io @@ -0,0 +1,7 @@ +rchar: 4699288382 +wchar: 2931802997 +syscr: 661897 +syscw: 890910 +read_bytes: 168468480 +write_bytes: 27357184 +cancelled_write_bytes: 16883712 diff --git a/tests/fixtures/linux-proc/pid_maps b/tests/fixtures/linux-proc/pid_maps new file mode 100644 index 00000000..c3a6b432 --- /dev/null +++ b/tests/fixtures/linux-proc/pid_maps @@ -0,0 +1,214 @@ +55a9e753c000-55a9e7570000 r--p 00000000 fd:00 798126 /usr/lib/systemd/systemd +55a9e7570000-55a9e763a000 r-xp 00034000 fd:00 798126 /usr/lib/systemd/systemd +55a9e763a000-55a9e7694000 r--p 000fe000 fd:00 798126 /usr/lib/systemd/systemd +55a9e7695000-55a9e76da000 r--p 00158000 fd:00 798126 /usr/lib/systemd/systemd +55a9e76da000-55a9e76db000 rw-p 0019d000 fd:00 798126 /usr/lib/systemd/systemd +55a9e8cd4000-55a9e8f68000 rw-p 00000000 00:00 0 [heap] +7f53a4000000-7f53a4021000 rw-p 00000000 00:00 0 +7f53a4021000-7f53a8000000 ---p 00000000 00:00 0 +7f53ac000000-7f53ac021000 rw-p 00000000 00:00 0 +7f53ac021000-7f53b0000000 ---p 00000000 00:00 0 +7f53b2fb8000-7f53b2fb9000 ---p 00000000 00:00 0 +7f53b2fb9000-7f53b37b9000 rw-p 00000000 00:00 0 +7f53b37b9000-7f53b37ba000 ---p 00000000 00:00 0 +7f53b37ba000-7f53b3fc1000 rw-p 00000000 00:00 0 +7f53b3fc1000-7f53b3fd0000 r--p 00000000 fd:00 793156 /usr/lib/x86_64-linux-gnu/libm-2.32.so +7f53b3fd0000-7f53b4077000 r-xp 0000f000 fd:00 793156 /usr/lib/x86_64-linux-gnu/libm-2.32.so +7f53b4077000-7f53b410e000 r--p 000b6000 fd:00 793156 /usr/lib/x86_64-linux-gnu/libm-2.32.so +7f53b410e000-7f53b410f000 r--p 0014c000 fd:00 793156 /usr/lib/x86_64-linux-gnu/libm-2.32.so +7f53b410f000-7f53b4110000 rw-p 0014d000 fd:00 793156 /usr/lib/x86_64-linux-gnu/libm-2.32.so +7f53b4110000-7f53b4114000 r--p 00000000 fd:00 788923 /usr/lib/x86_64-linux-gnu/libudev.so.1.6.18 +7f53b4114000-7f53b412d000 r-xp 00004000 fd:00 788923 /usr/lib/x86_64-linux-gnu/libudev.so.1.6.18 +7f53b412d000-7f53b4136000 r--p 0001d000 fd:00 788923 /usr/lib/x86_64-linux-gnu/libudev.so.1.6.18 +7f53b4136000-7f53b4137000 r--p 00025000 fd:00 788923 /usr/lib/x86_64-linux-gnu/libudev.so.1.6.18 +7f53b4137000-7f53b4138000 rw-p 00026000 fd:00 788923 /usr/lib/x86_64-linux-gnu/libudev.so.1.6.18 +7f53b4138000-7f53b4148000 r--p 00000000 fd:00 793263 /usr/lib/x86_64-linux-gnu/libunistring.so.2.1.0 +7f53b4148000-7f53b417e000 r-xp 00010000 fd:00 793263 /usr/lib/x86_64-linux-gnu/libunistring.so.2.1.0 +7f53b417e000-7f53b42b5000 r--p 00046000 fd:00 793263 /usr/lib/x86_64-linux-gnu/libunistring.so.2.1.0 +7f53b42b5000-7f53b42b6000 ---p 0017d000 fd:00 793263 /usr/lib/x86_64-linux-gnu/libunistring.so.2.1.0 +7f53b42b6000-7f53b42b9000 r--p 0017d000 fd:00 793263 /usr/lib/x86_64-linux-gnu/libunistring.so.2.1.0 +7f53b42b9000-7f53b42ba000 rw-p 00180000 fd:00 793263 /usr/lib/x86_64-linux-gnu/libunistring.so.2.1.0 +7f53b42ba000-7f53b42bf000 r--p 00000000 fd:00 793102 /usr/lib/x86_64-linux-gnu/libgpg-error.so.0.29.0 +7f53b42bf000-7f53b42d4000 r-xp 00005000 fd:00 793102 /usr/lib/x86_64-linux-gnu/libgpg-error.so.0.29.0 +7f53b42d4000-7f53b42de000 r--p 0001a000 fd:00 793102 /usr/lib/x86_64-linux-gnu/libgpg-error.so.0.29.0 +7f53b42de000-7f53b42df000 ---p 00024000 fd:00 793102 /usr/lib/x86_64-linux-gnu/libgpg-error.so.0.29.0 +7f53b42df000-7f53b42e0000 r--p 00024000 fd:00 793102 /usr/lib/x86_64-linux-gnu/libgpg-error.so.0.29.0 +7f53b42e0000-7f53b42e1000 rw-p 00025000 fd:00 793102 /usr/lib/x86_64-linux-gnu/libgpg-error.so.0.29.0 +7f53b42e1000-7f53b42e5000 r--p 00000000 fd:00 793139 /usr/lib/x86_64-linux-gnu/libjson-c.so.5.1.0 +7f53b42e5000-7f53b42ee000 r-xp 00004000 fd:00 793139 /usr/lib/x86_64-linux-gnu/libjson-c.so.5.1.0 +7f53b42ee000-7f53b42f2000 r--p 0000d000 fd:00 793139 /usr/lib/x86_64-linux-gnu/libjson-c.so.5.1.0 +7f53b42f2000-7f53b42f3000 r--p 00010000 fd:00 793139 /usr/lib/x86_64-linux-gnu/libjson-c.so.5.1.0 +7f53b42f3000-7f53b42f4000 rw-p 00011000 fd:00 793139 /usr/lib/x86_64-linux-gnu/libjson-c.so.5.1.0 +7f53b42f4000-7f53b42f6000 rw-p 00000000 00:00 0 +7f53b42f6000-7f53b42f7000 r--p 00000000 fd:00 793030 /usr/lib/x86_64-linux-gnu/libargon2.so.1 +7f53b42f7000-7f53b42fc000 r-xp 00001000 fd:00 793030 /usr/lib/x86_64-linux-gnu/libargon2.so.1 +7f53b42fc000-7f53b42fe000 r--p 00006000 fd:00 793030 /usr/lib/x86_64-linux-gnu/libargon2.so.1 +7f53b42fe000-7f53b42ff000 r--p 00007000 fd:00 793030 /usr/lib/x86_64-linux-gnu/libargon2.so.1 +7f53b42ff000-7f53b4300000 rw-p 00008000 fd:00 793030 /usr/lib/x86_64-linux-gnu/libargon2.so.1 +7f53b4300000-7f53b430a000 r--p 00000000 fd:00 793061 /usr/lib/x86_64-linux-gnu/libdevmapper.so.1.02.1 +7f53b430a000-7f53b4352000 r-xp 0000a000 fd:00 793061 /usr/lib/x86_64-linux-gnu/libdevmapper.so.1.02.1 +7f53b4352000-7f53b4366000 r--p 00052000 fd:00 793061 /usr/lib/x86_64-linux-gnu/libdevmapper.so.1.02.1 +7f53b4366000-7f53b4367000 r--p 00065000 fd:00 793061 /usr/lib/x86_64-linux-gnu/libdevmapper.so.1.02.1 +7f53b4367000-7f53b436a000 rw-p 00066000 fd:00 793061 /usr/lib/x86_64-linux-gnu/libdevmapper.so.1.02.1 +7f53b436a000-7f53b436b000 rw-p 00000000 00:00 0 +7f53b436b000-7f53b436d000 r--p 00000000 fd:00 793279 /usr/lib/x86_64-linux-gnu/libuuid.so.1.3.0 +7f53b436d000-7f53b4371000 r-xp 00002000 fd:00 793279 /usr/lib/x86_64-linux-gnu/libuuid.so.1.3.0 +7f53b4371000-7f53b4372000 r--p 00006000 fd:00 793279 /usr/lib/x86_64-linux-gnu/libuuid.so.1.3.0 +7f53b4372000-7f53b4373000 r--p 00006000 fd:00 793279 /usr/lib/x86_64-linux-gnu/libuuid.so.1.3.0 +7f53b4373000-7f53b4374000 rw-p 00007000 fd:00 793279 /usr/lib/x86_64-linux-gnu/libuuid.so.1.3.0 +7f53b4374000-7f53b43ec000 r--p 00000000 fd:00 790506 /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 +7f53b43ec000-7f53b458e000 r-xp 00078000 fd:00 790506 /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 +7f53b458e000-7f53b461e000 r--p 0021a000 fd:00 790506 /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 +7f53b461e000-7f53b461f000 ---p 002aa000 fd:00 790506 /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 +7f53b461f000-7f53b464b000 r--p 002aa000 fd:00 790506 /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 +7f53b464b000-7f53b464d000 rw-p 002d6000 fd:00 790506 /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 +7f53b464d000-7f53b4651000 rw-p 00000000 00:00 0 +7f53b4651000-7f53b4653000 r--p 00000000 fd:00 793046 /usr/lib/x86_64-linux-gnu/libcap-ng.so.0.0.0 +7f53b4653000-7f53b4656000 r-xp 00002000 fd:00 793046 /usr/lib/x86_64-linux-gnu/libcap-ng.so.0.0.0 +7f53b4656000-7f53b4657000 r--p 00005000 fd:00 793046 /usr/lib/x86_64-linux-gnu/libcap-ng.so.0.0.0 +7f53b4657000-7f53b4658000 r--p 00005000 fd:00 793046 /usr/lib/x86_64-linux-gnu/libcap-ng.so.0.0.0 +7f53b4658000-7f53b4659000 rw-p 00006000 fd:00 793046 /usr/lib/x86_64-linux-gnu/libcap-ng.so.0.0.0 +7f53b4659000-7f53b465b000 r--p 00000000 fd:00 793203 /usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.9.0 +7f53b465b000-7f53b46bf000 r-xp 00002000 fd:00 793203 /usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.9.0 +7f53b46bf000-7f53b46e7000 r--p 00066000 fd:00 793203 /usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.9.0 +7f53b46e7000-7f53b46e8000 r--p 0008d000 fd:00 793203 /usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.9.0 +7f53b46e8000-7f53b46e9000 rw-p 0008e000 fd:00 793203 /usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.9.0 +7f53b46e9000-7f53b46eb000 rw-p 00000000 00:00 0 +7f53b46eb000-7f53b46f2000 r--p 00000000 fd:00 793218 /usr/lib/x86_64-linux-gnu/libpthread-2.32.so +7f53b46f2000-7f53b4702000 r-xp 00007000 fd:00 793218 /usr/lib/x86_64-linux-gnu/libpthread-2.32.so +7f53b4702000-7f53b4707000 r--p 00017000 fd:00 793218 /usr/lib/x86_64-linux-gnu/libpthread-2.32.so +7f53b4707000-7f53b4708000 r--p 0001b000 fd:00 793218 /usr/lib/x86_64-linux-gnu/libpthread-2.32.so +7f53b4708000-7f53b4709000 rw-p 0001c000 fd:00 793218 /usr/lib/x86_64-linux-gnu/libpthread-2.32.so +7f53b4709000-7f53b470d000 rw-p 00000000 00:00 0 +7f53b470d000-7f53b470e000 r--p 00000000 fd:00 793062 /usr/lib/x86_64-linux-gnu/libdl-2.32.so +7f53b470e000-7f53b4710000 r-xp 00001000 fd:00 793062 /usr/lib/x86_64-linux-gnu/libdl-2.32.so +7f53b4710000-7f53b4711000 r--p 00003000 fd:00 793062 /usr/lib/x86_64-linux-gnu/libdl-2.32.so +7f53b4711000-7f53b4712000 r--p 00003000 fd:00 793062 /usr/lib/x86_64-linux-gnu/libdl-2.32.so +7f53b4712000-7f53b4713000 rw-p 00004000 fd:00 793062 /usr/lib/x86_64-linux-gnu/libdl-2.32.so +7f53b4713000-7f53b4716000 r--p 00000000 fd:00 793154 /usr/lib/x86_64-linux-gnu/liblzma.so.5.2.4 +7f53b4716000-7f53b472e000 r-xp 00003000 fd:00 793154 /usr/lib/x86_64-linux-gnu/liblzma.so.5.2.4 +7f53b472e000-7f53b4739000 r--p 0001b000 fd:00 793154 /usr/lib/x86_64-linux-gnu/liblzma.so.5.2.4 +7f53b4739000-7f53b473a000 ---p 00026000 fd:00 793154 /usr/lib/x86_64-linux-gnu/liblzma.so.5.2.4 +7f53b473a000-7f53b473b000 r--p 00026000 fd:00 793154 /usr/lib/x86_64-linux-gnu/liblzma.so.5.2.4 +7f53b473b000-7f53b473c000 rw-p 00027000 fd:00 793154 /usr/lib/x86_64-linux-gnu/liblzma.so.5.2.4 +7f53b473c000-7f53b4740000 r--p 00000000 fd:00 792974 /usr/lib/x86_64-linux-gnu/libzstd.so.1.4.5 +7f53b4740000-7f53b47f8000 r-xp 00004000 fd:00 792974 /usr/lib/x86_64-linux-gnu/libzstd.so.1.4.5 +7f53b47f8000-7f53b480a000 r--p 000bc000 fd:00 792974 /usr/lib/x86_64-linux-gnu/libzstd.so.1.4.5 +7f53b480a000-7f53b480b000 r--p 000cd000 fd:00 792974 /usr/lib/x86_64-linux-gnu/libzstd.so.1.4.5 +7f53b480b000-7f53b480c000 rw-p 000ce000 fd:00 792974 /usr/lib/x86_64-linux-gnu/libzstd.so.1.4.5 +7f53b480c000-7f53b480e000 r--p 00000000 fd:00 787663 /usr/lib/x86_64-linux-gnu/liblz4.so.1.9.2 +7f53b480e000-7f53b4829000 r-xp 00002000 fd:00 787663 /usr/lib/x86_64-linux-gnu/liblz4.so.1.9.2 +7f53b4829000-7f53b482c000 r--p 0001d000 fd:00 787663 /usr/lib/x86_64-linux-gnu/liblz4.so.1.9.2 +7f53b482c000-7f53b482d000 r--p 0001f000 fd:00 787663 /usr/lib/x86_64-linux-gnu/liblz4.so.1.9.2 +7f53b482d000-7f53b482e000 rw-p 00020000 fd:00 787663 /usr/lib/x86_64-linux-gnu/liblz4.so.1.9.2 +7f53b482e000-7f53b4830000 rw-p 00000000 00:00 0 +7f53b4830000-7f53b4832000 r--p 00000000 fd:00 793129 /usr/lib/x86_64-linux-gnu/libip4tc.so.2.0.0 +7f53b4832000-7f53b4836000 r-xp 00002000 fd:00 793129 /usr/lib/x86_64-linux-gnu/libip4tc.so.2.0.0 +7f53b4836000-7f53b4838000 r--p 00006000 fd:00 793129 /usr/lib/x86_64-linux-gnu/libip4tc.so.2.0.0 +7f53b4838000-7f53b4839000 r--p 00007000 fd:00 793129 /usr/lib/x86_64-linux-gnu/libip4tc.so.2.0.0 +7f53b4839000-7f53b483a000 rw-p 00008000 fd:00 793129 /usr/lib/x86_64-linux-gnu/libip4tc.so.2.0.0 +7f53b483a000-7f53b483c000 r--p 00000000 fd:00 793128 /usr/lib/x86_64-linux-gnu/libidn2.so.0.3.7 +7f53b483c000-7f53b4841000 r-xp 00002000 fd:00 793128 /usr/lib/x86_64-linux-gnu/libidn2.so.0.3.7 +7f53b4841000-7f53b485a000 r--p 00007000 fd:00 793128 /usr/lib/x86_64-linux-gnu/libidn2.so.0.3.7 +7f53b485a000-7f53b485b000 r--p 0001f000 fd:00 793128 /usr/lib/x86_64-linux-gnu/libidn2.so.0.3.7 +7f53b485b000-7f53b485c000 rw-p 00020000 fd:00 793128 /usr/lib/x86_64-linux-gnu/libidn2.so.0.3.7 +7f53b485c000-7f53b4868000 r--p 00000000 fd:00 793092 /usr/lib/x86_64-linux-gnu/libgcrypt.so.20.2.5 +7f53b4868000-7f53b4936000 r-xp 0000c000 fd:00 793092 /usr/lib/x86_64-linux-gnu/libgcrypt.so.20.2.5 +7f53b4936000-7f53b4973000 r--p 000da000 fd:00 793092 /usr/lib/x86_64-linux-gnu/libgcrypt.so.20.2.5 +7f53b4973000-7f53b4975000 r--p 00116000 fd:00 793092 /usr/lib/x86_64-linux-gnu/libgcrypt.so.20.2.5 +7f53b4975000-7f53b497a000 rw-p 00118000 fd:00 793092 /usr/lib/x86_64-linux-gnu/libgcrypt.so.20.2.5 +7f53b497a000-7f53b4981000 r--p 00000000 fd:00 793052 /usr/lib/x86_64-linux-gnu/libcryptsetup.so.12.6.0 +7f53b4981000-7f53b49d2000 r-xp 00007000 fd:00 793052 /usr/lib/x86_64-linux-gnu/libcryptsetup.so.12.6.0 +7f53b49d2000-7f53b49ec000 r--p 00058000 fd:00 793052 /usr/lib/x86_64-linux-gnu/libcryptsetup.so.12.6.0 +7f53b49ec000-7f53b49ed000 ---p 00072000 fd:00 793052 /usr/lib/x86_64-linux-gnu/libcryptsetup.so.12.6.0 +7f53b49ed000-7f53b49ef000 r--p 00072000 fd:00 793052 /usr/lib/x86_64-linux-gnu/libcryptsetup.so.12.6.0 +7f53b49ef000-7f53b49f1000 rw-p 00074000 fd:00 793052 /usr/lib/x86_64-linux-gnu/libcryptsetup.so.12.6.0 +7f53b49f1000-7f53b49f3000 r--p 00000000 fd:00 793050 /usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0 +7f53b49f3000-7f53b4a08000 r-xp 00002000 fd:00 793050 /usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0 +7f53b4a08000-7f53b4a22000 r--p 00017000 fd:00 793050 /usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0 +7f53b4a22000-7f53b4a23000 r--p 00030000 fd:00 793050 /usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0 +7f53b4a23000-7f53b4a24000 rw-p 00031000 fd:00 793050 /usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0 +7f53b4a24000-7f53b4a2c000 rw-p 00000000 00:00 0 +7f53b4a2c000-7f53b4a2f000 r--p 00000000 fd:00 793047 /usr/lib/x86_64-linux-gnu/libcap.so.2.43 +7f53b4a2f000-7f53b4a33000 r-xp 00003000 fd:00 793047 /usr/lib/x86_64-linux-gnu/libcap.so.2.43 +7f53b4a33000-7f53b4a35000 r--p 00007000 fd:00 793047 /usr/lib/x86_64-linux-gnu/libcap.so.2.43 +7f53b4a35000-7f53b4a36000 r--p 00008000 fd:00 793047 /usr/lib/x86_64-linux-gnu/libcap.so.2.43 +7f53b4a36000-7f53b4a37000 rw-p 00009000 fd:00 793047 /usr/lib/x86_64-linux-gnu/libcap.so.2.43 +7f53b4a37000-7f53b4a39000 rw-p 00000000 00:00 0 +7f53b4a39000-7f53b4a42000 r--p 00000000 fd:00 793038 /usr/lib/x86_64-linux-gnu/libblkid.so.1.1.0 +7f53b4a42000-7f53b4a76000 r-xp 00009000 fd:00 793038 /usr/lib/x86_64-linux-gnu/libblkid.so.1.1.0 +7f53b4a76000-7f53b4a86000 r--p 0003d000 fd:00 793038 /usr/lib/x86_64-linux-gnu/libblkid.so.1.1.0 +7f53b4a86000-7f53b4a87000 ---p 0004d000 fd:00 793038 /usr/lib/x86_64-linux-gnu/libblkid.so.1.1.0 +7f53b4a87000-7f53b4a8b000 r--p 0004d000 fd:00 793038 /usr/lib/x86_64-linux-gnu/libblkid.so.1.1.0 +7f53b4a8b000-7f53b4a8c000 rw-p 00051000 fd:00 793038 /usr/lib/x86_64-linux-gnu/libblkid.so.1.1.0 +7f53b4a8c000-7f53b4a8e000 r--p 00000000 fd:00 793022 /usr/lib/x86_64-linux-gnu/libacl.so.1.1.2253 +7f53b4a8e000-7f53b4a93000 r-xp 00002000 fd:00 793022 /usr/lib/x86_64-linux-gnu/libacl.so.1.1.2253 +7f53b4a93000-7f53b4a95000 r--p 00007000 fd:00 793022 /usr/lib/x86_64-linux-gnu/libacl.so.1.1.2253 +7f53b4a95000-7f53b4a96000 r--p 00008000 fd:00 793022 /usr/lib/x86_64-linux-gnu/libacl.so.1.1.2253 +7f53b4a96000-7f53b4a97000 rw-p 00009000 fd:00 793022 /usr/lib/x86_64-linux-gnu/libacl.so.1.1.2253 +7f53b4a97000-7f53b4abd000 r--p 00000000 fd:00 793044 /usr/lib/x86_64-linux-gnu/libc-2.32.so +7f53b4abd000-7f53b4c2a000 r-xp 00026000 fd:00 793044 /usr/lib/x86_64-linux-gnu/libc-2.32.so +7f53b4c2a000-7f53b4c76000 r--p 00193000 fd:00 793044 /usr/lib/x86_64-linux-gnu/libc-2.32.so +7f53b4c76000-7f53b4c77000 ---p 001df000 fd:00 793044 /usr/lib/x86_64-linux-gnu/libc-2.32.so +7f53b4c77000-7f53b4c7a000 r--p 001df000 fd:00 793044 /usr/lib/x86_64-linux-gnu/libc-2.32.so +7f53b4c7a000-7f53b4c7d000 rw-p 001e2000 fd:00 793044 /usr/lib/x86_64-linux-gnu/libc-2.32.so +7f53b4c7d000-7f53b4c81000 rw-p 00000000 00:00 0 +7f53b4c81000-7f53b4c84000 r--p 00000000 fd:00 793025 /usr/lib/x86_64-linux-gnu/libapparmor.so.1.7.0 +7f53b4c84000-7f53b4c8d000 r-xp 00003000 fd:00 793025 /usr/lib/x86_64-linux-gnu/libapparmor.so.1.7.0 +7f53b4c8d000-7f53b4c94000 r--p 0000c000 fd:00 793025 /usr/lib/x86_64-linux-gnu/libapparmor.so.1.7.0 +7f53b4c94000-7f53b4c95000 r--p 00012000 fd:00 793025 /usr/lib/x86_64-linux-gnu/libapparmor.so.1.7.0 +7f53b4c95000-7f53b4c96000 rw-p 00013000 fd:00 793025 /usr/lib/x86_64-linux-gnu/libapparmor.so.1.7.0 +7f53b4c96000-7f53b4c99000 r--p 00000000 fd:00 793143 /usr/lib/x86_64-linux-gnu/libkmod.so.2.3.5 +7f53b4c99000-7f53b4ca9000 r-xp 00003000 fd:00 793143 /usr/lib/x86_64-linux-gnu/libkmod.so.2.3.5 +7f53b4ca9000-7f53b4caf000 r--p 00013000 fd:00 793143 /usr/lib/x86_64-linux-gnu/libkmod.so.2.3.5 +7f53b4caf000-7f53b4cb0000 r--p 00018000 fd:00 793143 /usr/lib/x86_64-linux-gnu/libkmod.so.2.3.5 +7f53b4cb0000-7f53b4cb1000 rw-p 00019000 fd:00 793143 /usr/lib/x86_64-linux-gnu/libkmod.so.2.3.5 +7f53b4cb1000-7f53b4cb4000 r--p 00000000 fd:00 793036 /usr/lib/x86_64-linux-gnu/libaudit.so.1.0.0 +7f53b4cb4000-7f53b4cbc000 r-xp 00003000 fd:00 793036 /usr/lib/x86_64-linux-gnu/libaudit.so.1.0.0 +7f53b4cbc000-7f53b4cd0000 r--p 0000b000 fd:00 793036 /usr/lib/x86_64-linux-gnu/libaudit.so.1.0.0 +7f53b4cd0000-7f53b4cd1000 ---p 0001f000 fd:00 793036 /usr/lib/x86_64-linux-gnu/libaudit.so.1.0.0 +7f53b4cd1000-7f53b4cd2000 r--p 0001f000 fd:00 793036 /usr/lib/x86_64-linux-gnu/libaudit.so.1.0.0 +7f53b4cd2000-7f53b4cd3000 rw-p 00020000 fd:00 793036 /usr/lib/x86_64-linux-gnu/libaudit.so.1.0.0 +7f53b4cd3000-7f53b4cdf000 rw-p 00000000 00:00 0 +7f53b4cdf000-7f53b4ce2000 r--p 00000000 fd:00 793193 /usr/lib/x86_64-linux-gnu/libpam.so.0.84.2 +7f53b4ce2000-7f53b4ceb000 r-xp 00003000 fd:00 793193 /usr/lib/x86_64-linux-gnu/libpam.so.0.84.2 +7f53b4ceb000-7f53b4cef000 r--p 0000c000 fd:00 793193 /usr/lib/x86_64-linux-gnu/libpam.so.0.84.2 +7f53b4cef000-7f53b4cf0000 r--p 0000f000 fd:00 793193 /usr/lib/x86_64-linux-gnu/libpam.so.0.84.2 +7f53b4cf0000-7f53b4cf1000 rw-p 00010000 fd:00 793193 /usr/lib/x86_64-linux-gnu/libpam.so.0.84.2 +7f53b4cf1000-7f53b4cfb000 r--p 00000000 fd:00 793163 /usr/lib/x86_64-linux-gnu/libmount.so.1.1.0 +7f53b4cfb000-7f53b4d39000 r-xp 0000a000 fd:00 793163 /usr/lib/x86_64-linux-gnu/libmount.so.1.1.0 +7f53b4d39000-7f53b4d4c000 r--p 00048000 fd:00 793163 /usr/lib/x86_64-linux-gnu/libmount.so.1.1.0 +7f53b4d4c000-7f53b4d4e000 r--p 0005a000 fd:00 793163 /usr/lib/x86_64-linux-gnu/libmount.so.1.1.0 +7f53b4d4e000-7f53b4d4f000 rw-p 0005c000 fd:00 793163 /usr/lib/x86_64-linux-gnu/libmount.so.1.1.0 +7f53b4d4f000-7f53b4d55000 r--p 00000000 fd:00 793228 /usr/lib/x86_64-linux-gnu/libselinux.so.1 +7f53b4d55000-7f53b4d6e000 r-xp 00006000 fd:00 793228 /usr/lib/x86_64-linux-gnu/libselinux.so.1 +7f53b4d6e000-7f53b4d76000 r--p 0001f000 fd:00 793228 /usr/lib/x86_64-linux-gnu/libselinux.so.1 +7f53b4d76000-7f53b4d77000 r--p 00026000 fd:00 793228 /usr/lib/x86_64-linux-gnu/libselinux.so.1 +7f53b4d77000-7f53b4d78000 rw-p 00027000 fd:00 793228 /usr/lib/x86_64-linux-gnu/libselinux.so.1 +7f53b4d78000-7f53b4d7a000 rw-p 00000000 00:00 0 +7f53b4d7a000-7f53b4da2000 r--p 00000000 fd:00 793227 /usr/lib/x86_64-linux-gnu/libseccomp.so.2.4.3 +7f53b4da2000-7f53b4dad000 r-xp 00028000 fd:00 793227 /usr/lib/x86_64-linux-gnu/libseccomp.so.2.4.3 +7f53b4dad000-7f53b4db1000 r--p 00033000 fd:00 793227 /usr/lib/x86_64-linux-gnu/libseccomp.so.2.4.3 +7f53b4db1000-7f53b4dcc000 r--p 00036000 fd:00 793227 /usr/lib/x86_64-linux-gnu/libseccomp.so.2.4.3 +7f53b4dcc000-7f53b4dcd000 rw-p 00051000 fd:00 793227 /usr/lib/x86_64-linux-gnu/libseccomp.so.2.4.3 +7f53b4dcd000-7f53b4dd0000 r--p 00000000 fd:00 793224 /usr/lib/x86_64-linux-gnu/librt-2.32.so +7f53b4dd0000-7f53b4dd4000 r-xp 00003000 fd:00 793224 /usr/lib/x86_64-linux-gnu/librt-2.32.so +7f53b4dd4000-7f53b4dd6000 r--p 00007000 fd:00 793224 /usr/lib/x86_64-linux-gnu/librt-2.32.so +7f53b4dd6000-7f53b4dd7000 r--p 00008000 fd:00 793224 /usr/lib/x86_64-linux-gnu/librt-2.32.so +7f53b4dd7000-7f53b4dd8000 rw-p 00009000 fd:00 793224 /usr/lib/x86_64-linux-gnu/librt-2.32.so +7f53b4ddf000-7f53b4e29000 r--p 00000000 fd:00 798124 /usr/lib/systemd/libsystemd-shared-246.so +7f53b4e29000-7f53b4fac000 r-xp 0004a000 fd:00 798124 /usr/lib/systemd/libsystemd-shared-246.so +7f53b4fac000-7f53b503f000 r--p 001cd000 fd:00 798124 /usr/lib/systemd/libsystemd-shared-246.so +7f53b503f000-7f53b5040000 ---p 00260000 fd:00 798124 /usr/lib/systemd/libsystemd-shared-246.so +7f53b5040000-7f53b5050000 r--p 00260000 fd:00 798124 /usr/lib/systemd/libsystemd-shared-246.so +7f53b5050000-7f53b5051000 rw-p 00270000 fd:00 798124 /usr/lib/systemd/libsystemd-shared-246.so +7f53b5051000-7f53b5054000 rw-p 00000000 00:00 0 +7f53b5054000-7f53b5055000 r--p 00000000 fd:00 793013 /usr/lib/x86_64-linux-gnu/ld-2.32.so +7f53b5055000-7f53b5079000 r-xp 00001000 fd:00 793013 /usr/lib/x86_64-linux-gnu/ld-2.32.so +7f53b5079000-7f53b5082000 r--p 00025000 fd:00 793013 /usr/lib/x86_64-linux-gnu/ld-2.32.so +7f53b5082000-7f53b5083000 r--p 0002d000 fd:00 793013 /usr/lib/x86_64-linux-gnu/ld-2.32.so +7f53b5083000-7f53b5085000 rw-p 0002e000 fd:00 793013 /usr/lib/x86_64-linux-gnu/ld-2.32.so +7ffd1b23e000-7ffd1b340000 rw-p 00000000 00:00 0 [stack] +7ffd1b3b1000-7ffd1b3b5000 r--p 00000000 00:00 0 [vvar] +7ffd1b3b5000-7ffd1b3b7000 r-xp 00000000 00:00 0 [vdso] +ffffffffff600000-ffffffffff601000 --xp 00000000 00:00 0 [vsyscall] diff --git a/tests/fixtures/linux-proc/pid_mountinfo b/tests/fixtures/linux-proc/pid_mountinfo new file mode 100644 index 00000000..c4ad1cee --- /dev/null +++ b/tests/fixtures/linux-proc/pid_mountinfo @@ -0,0 +1,46 @@ +24 30 0:22 / /sys rw,nosuid,nodev,noexec,relatime master:1 shared:7 - sysfs sysfs rw +25 30 0:23 / /proc rw,nosuid,nodev,noexec,relatime shared:14 - proc proc rw +26 30 0:5 / /dev rw,nosuid,noexec,relatime - devtmpfs udev rw,size=1951480k,nr_inodes=487870,mode=755 +27 26 0:24 / /dev/pts rw,nosuid,noexec,relatime shared:3 - devpts devpts rw,gid=5,mode=620,ptmxmode=000 +28 30 0:25 / /run rw,nosuid,nodev,noexec,relatime shared:5 - tmpfs tmpfs rw,size=399728k,mode=755 +30 1 253:0 / / rw,relatime shared:1 - ext4 /dev/mapper/ubuntu--vg-ubuntu--lv +31 24 0:6 / /sys/kernel/security rw,nosuid,nodev,noexec,relatime unbindable - securityfs securityfs rw +32 26 0:27 / /dev/shm rw,nosuid,nodev shared:4 - tmpfs tmpfs rw +33 28 0:28 / /run/lock rw,nosuid,nodev,noexec,relatime shared:6 - tmpfs tmpfs rw,size=5120k +34 24 0:29 / /sys/fs/cgroup ro,nosuid,nodev,noexec shared:9 - tmpfs tmpfs ro,size=4096k,nr_inodes=1024,mode=755 +35 34 0:30 / /sys/fs/cgroup/unified rw,nosuid,nodev,noexec,relatime shared:10 - cgroup2 cgroup2 rw,nsdelegate +36 34 0:31 / /sys/fs/cgroup/systemd rw,nosuid,nodev,noexec,relatime shared:11 - cgroup cgroup rw,xattr,name=systemd +37 24 0:32 / /sys/fs/pstore rw,nosuid,nodev,noexec,relatime shared:12 - pstore pstore rw +38 24 0:33 / /sys/fs/bpf rw,nosuid,nodev,noexec,relatime shared:13 - bpf none rw,mode=700 +39 34 0:34 / /sys/fs/cgroup/hugetlb rw,nosuid,nodev,noexec,relatime shared:15 - cgroup cgroup rw,hugetlb +40 34 0:35 / /sys/fs/cgroup/net_cls,net_prio rw,nosuid,nodev,noexec,relatime shared:16 - cgroup cgroup rw,net_cls,net_prio +41 34 0:36 / /sys/fs/cgroup/pids rw,nosuid,nodev,noexec,relatime shared:17 - cgroup cgroup rw,pids +42 34 0:37 / /sys/fs/cgroup/blkio rw,nosuid,nodev,noexec,relatime shared:18 - cgroup cgroup rw,blkio +43 34 0:38 / /sys/fs/cgroup/memory rw,nosuid,nodev,noexec,relatime shared:19 - cgroup cgroup rw,memory +44 34 0:39 / /sys/fs/cgroup/devices rw,nosuid,nodev,noexec,relatime shared:20 - cgroup cgroup rw,devices +45 34 0:40 / /sys/fs/cgroup/cpu,cpuacct rw,nosuid,nodev,noexec,relatime shared:21 - cgroup cgroup rw,cpu,cpuacct +46 34 0:41 / /sys/fs/cgroup/rdma rw,nosuid,nodev,noexec,relatime shared:22 - cgroup cgroup rw,rdma +47 34 0:42 / /sys/fs/cgroup/perf_event rw,nosuid,nodev,noexec,relatime shared:23 - cgroup cgroup rw,perf_event +48 34 0:43 / /sys/fs/cgroup/freezer rw,nosuid,nodev,noexec,relatime shared:24 - cgroup cgroup rw,freezer +49 34 0:44 / /sys/fs/cgroup/cpuset rw,nosuid,nodev,noexec,relatime shared:25 - cgroup cgroup rw,cpuset +50 25 0:45 / /proc/sys/fs/binfmt_misc rw,relatime shared:26 - autofs systemd-1 rw,fd=28,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=29773 +51 26 0:46 / /dev/hugepages rw,relatime shared:27 - hugetlbfs hugetlbfs rw,pagesize=2M +52 26 0:20 / /dev/mqueue rw,nosuid,nodev,noexec,relatime shared:28 - mqueue mqueue rw +53 24 0:7 / /sys/kernel/debug rw,nosuid,nodev,noexec,relatime shared:29 - debugfs debugfs rw +54 24 0:11 / /sys/kernel/tracing rw,nosuid,nodev,noexec,relatime shared:30 - tracefs tracefs rw +55 24 0:47 / /sys/fs/fuse/connections rw,nosuid,nodev,noexec,relatime shared:31 - fusectl fusectl rw +56 24 0:21 / /sys/kernel/config rw,nosuid,nodev,noexec,relatime shared:32 - configfs configfs rw +125 30 8:2 / /boot rw,relatime shared:67 - ext4 /dev/sda2 rw +131 30 7:0 / /snap/core18/2538 ro,nodev,relatime shared:71 - squashfs /dev/loop0 ro +134 30 7:1 / /snap/core18/2409 ro,nodev,relatime shared:73 - squashfs /dev/loop1 ro +137 30 7:3 / /snap/core20/1587 ro,nodev,relatime shared:75 - squashfs /dev/loop3 ro +140 30 7:5 / /snap/snapd/16292 ro,nodev,relatime shared:77 - squashfs /dev/loop5 ro +146 30 7:7 / /snap/lxd/23339 ro,nodev,relatime shared:81 - squashfs /dev/loop7 ro +149 30 7:6 / /snap/snapd/16010 ro,nodev,relatime shared:83 - squashfs /dev/loop6 ro +466 28 0:25 /snapd/ns /run/snapd/ns rw,nosuid,nodev,noexec,relatime - tmpfs tmpfs rw,size=399728k,mode=755 +832 28 0:52 / /run/user/1000 rw,nosuid,nodev,relatime shared:426 - tmpfs tmpfs rw,size=399724k,nr_inodes=99931,mode=700,uid=1000,gid=1000 +849 30 7:8 / /snap/core20/1611 ro,nodev,relatime shared:434 - squashfs /dev/loop8 ro +128 30 7:2 / /snap/lxd/23537 ro,nodev,relatime shared:69 - squashfs /dev/loop2 ro +481 466 0:4 mnt:[4026532641] /run/snapd/ns/lxd.mnt rw - nsfs nsfs rw +143 50 0:53 / /proc/sys/fs/binfmt_misc rw,nosuid,nodev,noexec,relatime shared:70 - binfmt_misc binfmt_misc rw +493 53 0:11 / /sys/kernel/debug/tracing rw,nosuid,nodev,noexec,relatime shared:265 - tracefs tracefs rw diff --git a/tests/fixtures/linux-proc/pid_numa_maps b/tests/fixtures/linux-proc/pid_numa_maps new file mode 100644 index 00000000..7f7c42b8 --- /dev/null +++ b/tests/fixtures/linux-proc/pid_numa_maps @@ -0,0 +1,213 @@ +55a9e753c000 default file=/usr/lib/systemd/systemd mapped=52 mapmax=2 active=16 N0=52 kernelpagesize_kB=4 +55a9e7570000 default file=/usr/lib/systemd/systemd mapped=200 mapmax=3 active=120 N0=200 kernelpagesize_kB=4 +55a9e763a000 default file=/usr/lib/systemd/systemd mapped=69 mapmax=3 N0=69 kernelpagesize_kB=4 +55a9e7695000 default file=/usr/lib/systemd/systemd anon=63 dirty=63 mapped=67 mapmax=3 active=63 N0=67 kernelpagesize_kB=4 +55a9e76da000 default file=/usr/lib/systemd/systemd anon=1 dirty=1 N0=1 kernelpagesize_kB=4 +55a9e8cd4000 default heap anon=611 dirty=611 mapmax=2 N0=611 kernelpagesize_kB=4 +7f53a4000000 default anon=3 dirty=3 N0=3 kernelpagesize_kB=4 +7f53a4021000 default +7f53ac000000 default anon=3 dirty=3 N0=3 kernelpagesize_kB=4 +7f53ac021000 default +7f53b2fb8000 default +7f53b2fb9000 default anon=2 dirty=2 N0=2 kernelpagesize_kB=4 +7f53b37b9000 default +7f53b37ba000 default anon=8 dirty=8 mapmax=2 N0=8 kernelpagesize_kB=4 +7f53b3fc1000 default file=/usr/lib/x86_64-linux-gnu/libm-2.32.so mapped=14 mapmax=12 N0=14 kernelpagesize_kB=4 +7f53b3fd0000 default file=/usr/lib/x86_64-linux-gnu/libm-2.32.so mapped=71 mapmax=12 N0=71 kernelpagesize_kB=4 +7f53b4077000 default file=/usr/lib/x86_64-linux-gnu/libm-2.32.so +7f53b410e000 default file=/usr/lib/x86_64-linux-gnu/libm-2.32.so anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b410f000 default file=/usr/lib/x86_64-linux-gnu/libm-2.32.so anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b4110000 default file=/usr/lib/x86_64-linux-gnu/libudev.so.1.6.18 mapped=4 mapmax=9 N0=4 kernelpagesize_kB=4 +7f53b4114000 default file=/usr/lib/x86_64-linux-gnu/libudev.so.1.6.18 mapped=16 mapmax=9 N0=16 kernelpagesize_kB=4 +7f53b412d000 default file=/usr/lib/x86_64-linux-gnu/libudev.so.1.6.18 +7f53b4136000 default file=/usr/lib/x86_64-linux-gnu/libudev.so.1.6.18 anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b4137000 default file=/usr/lib/x86_64-linux-gnu/libudev.so.1.6.18 anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b4138000 default file=/usr/lib/x86_64-linux-gnu/libunistring.so.2.1.0 mapped=16 mapmax=7 N0=16 kernelpagesize_kB=4 +7f53b4148000 default file=/usr/lib/x86_64-linux-gnu/libunistring.so.2.1.0 mapped=15 mapmax=7 N0=15 kernelpagesize_kB=4 +7f53b417e000 default file=/usr/lib/x86_64-linux-gnu/libunistring.so.2.1.0 +7f53b42b5000 default file=/usr/lib/x86_64-linux-gnu/libunistring.so.2.1.0 +7f53b42b6000 default file=/usr/lib/x86_64-linux-gnu/libunistring.so.2.1.0 anon=3 dirty=3 mapmax=2 N0=3 kernelpagesize_kB=4 +7f53b42b9000 default file=/usr/lib/x86_64-linux-gnu/libunistring.so.2.1.0 anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b42ba000 default file=/usr/lib/x86_64-linux-gnu/libgpg-error.so.0.29.0 mapped=5 mapmax=17 N0=5 kernelpagesize_kB=4 +7f53b42bf000 default file=/usr/lib/x86_64-linux-gnu/libgpg-error.so.0.29.0 mapped=20 mapmax=17 N0=20 kernelpagesize_kB=4 +7f53b42d4000 default file=/usr/lib/x86_64-linux-gnu/libgpg-error.so.0.29.0 mapped=9 mapmax=17 N0=9 kernelpagesize_kB=4 +7f53b42de000 default file=/usr/lib/x86_64-linux-gnu/libgpg-error.so.0.29.0 +7f53b42df000 default file=/usr/lib/x86_64-linux-gnu/libgpg-error.so.0.29.0 anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b42e0000 default file=/usr/lib/x86_64-linux-gnu/libgpg-error.so.0.29.0 anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b42e1000 default file=/usr/lib/x86_64-linux-gnu/libjson-c.so.5.1.0 mapped=4 mapmax=7 N0=4 kernelpagesize_kB=4 +7f53b42e5000 default file=/usr/lib/x86_64-linux-gnu/libjson-c.so.5.1.0 mapped=8 mapmax=7 N0=8 kernelpagesize_kB=4 +7f53b42ee000 default file=/usr/lib/x86_64-linux-gnu/libjson-c.so.5.1.0 +7f53b42f2000 default file=/usr/lib/x86_64-linux-gnu/libjson-c.so.5.1.0 anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b42f3000 default file=/usr/lib/x86_64-linux-gnu/libjson-c.so.5.1.0 anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b42f4000 default anon=2 dirty=2 mapmax=2 N0=2 kernelpagesize_kB=4 +7f53b42f6000 default file=/usr/lib/x86_64-linux-gnu/libargon2.so.1 mapped=1 mapmax=7 N0=1 kernelpagesize_kB=4 +7f53b42f7000 default file=/usr/lib/x86_64-linux-gnu/libargon2.so.1 mapped=5 mapmax=7 N0=5 kernelpagesize_kB=4 +7f53b42fc000 default file=/usr/lib/x86_64-linux-gnu/libargon2.so.1 +7f53b42fe000 default file=/usr/lib/x86_64-linux-gnu/libargon2.so.1 anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b42ff000 default file=/usr/lib/x86_64-linux-gnu/libargon2.so.1 anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b4300000 default file=/usr/lib/x86_64-linux-gnu/libdevmapper.so.1.02.1 mapped=10 mapmax=8 N0=10 kernelpagesize_kB=4 +7f53b430a000 default file=/usr/lib/x86_64-linux-gnu/libdevmapper.so.1.02.1 mapped=15 mapmax=8 N0=15 kernelpagesize_kB=4 +7f53b4352000 default file=/usr/lib/x86_64-linux-gnu/libdevmapper.so.1.02.1 mapped=16 mapmax=8 N0=16 kernelpagesize_kB=4 +7f53b4366000 default file=/usr/lib/x86_64-linux-gnu/libdevmapper.so.1.02.1 anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b4367000 default file=/usr/lib/x86_64-linux-gnu/libdevmapper.so.1.02.1 anon=2 dirty=2 mapped=3 mapmax=8 N0=3 kernelpagesize_kB=4 +7f53b436a000 default +7f53b436b000 default file=/usr/lib/x86_64-linux-gnu/libuuid.so.1.3.0 mapped=2 mapmax=8 N0=2 kernelpagesize_kB=4 +7f53b436d000 default file=/usr/lib/x86_64-linux-gnu/libuuid.so.1.3.0 mapped=4 mapmax=8 N0=4 kernelpagesize_kB=4 +7f53b4371000 default file=/usr/lib/x86_64-linux-gnu/libuuid.so.1.3.0 +7f53b4372000 default file=/usr/lib/x86_64-linux-gnu/libuuid.so.1.3.0 anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b4373000 default file=/usr/lib/x86_64-linux-gnu/libuuid.so.1.3.0 anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b4374000 default file=/usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 mapped=120 mapmax=13 N0=120 kernelpagesize_kB=4 +7f53b43ec000 default file=/usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 mapped=45 mapmax=13 N0=45 kernelpagesize_kB=4 +7f53b458e000 default file=/usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 mapped=16 mapmax=13 N0=16 kernelpagesize_kB=4 +7f53b461e000 default file=/usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 +7f53b461f000 default file=/usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 anon=44 dirty=44 mapmax=2 N0=44 kernelpagesize_kB=4 +7f53b464b000 default file=/usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 anon=2 dirty=2 mapmax=2 N0=2 kernelpagesize_kB=4 +7f53b464d000 default anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b4651000 default file=/usr/lib/x86_64-linux-gnu/libcap-ng.so.0.0.0 mapped=2 mapmax=17 N0=2 kernelpagesize_kB=4 +7f53b4653000 default file=/usr/lib/x86_64-linux-gnu/libcap-ng.so.0.0.0 mapped=3 mapmax=18 N0=3 kernelpagesize_kB=4 +7f53b4656000 default file=/usr/lib/x86_64-linux-gnu/libcap-ng.so.0.0.0 +7f53b4657000 default file=/usr/lib/x86_64-linux-gnu/libcap-ng.so.0.0.0 anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b4658000 default file=/usr/lib/x86_64-linux-gnu/libcap-ng.so.0.0.0 anon=1 dirty=1 N0=1 kernelpagesize_kB=4 +7f53b4659000 default file=/usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.9.0 mapped=2 mapmax=22 N0=2 kernelpagesize_kB=4 +7f53b465b000 default file=/usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.9.0 mapped=15 mapmax=21 N0=15 kernelpagesize_kB=4 +7f53b46bf000 default file=/usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.9.0 +7f53b46e7000 default file=/usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.9.0 anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b46e8000 default file=/usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.9.0 anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b46e9000 default anon=2 dirty=2 mapmax=2 N0=2 kernelpagesize_kB=4 +7f53b46eb000 default file=/usr/lib/x86_64-linux-gnu/libpthread-2.32.so mapped=7 mapmax=26 N0=7 kernelpagesize_kB=4 +7f53b46f2000 default file=/usr/lib/x86_64-linux-gnu/libpthread-2.32.so mapped=16 mapmax=28 N0=16 kernelpagesize_kB=4 +7f53b4702000 default file=/usr/lib/x86_64-linux-gnu/libpthread-2.32.so mapped=5 mapmax=17 N0=5 kernelpagesize_kB=4 +7f53b4707000 default file=/usr/lib/x86_64-linux-gnu/libpthread-2.32.so anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b4708000 default file=/usr/lib/x86_64-linux-gnu/libpthread-2.32.so anon=1 dirty=1 N0=1 kernelpagesize_kB=4 +7f53b4709000 default anon=1 dirty=1 N0=1 kernelpagesize_kB=4 +7f53b470d000 default file=/usr/lib/x86_64-linux-gnu/libdl-2.32.so mapped=1 mapmax=28 N0=1 kernelpagesize_kB=4 +7f53b470e000 default file=/usr/lib/x86_64-linux-gnu/libdl-2.32.so mapped=2 mapmax=27 N0=2 kernelpagesize_kB=4 +7f53b4710000 default file=/usr/lib/x86_64-linux-gnu/libdl-2.32.so +7f53b4711000 default file=/usr/lib/x86_64-linux-gnu/libdl-2.32.so anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b4712000 default file=/usr/lib/x86_64-linux-gnu/libdl-2.32.so anon=1 dirty=1 N0=1 kernelpagesize_kB=4 +7f53b4713000 default file=/usr/lib/x86_64-linux-gnu/liblzma.so.5.2.4 mapped=3 mapmax=19 N0=3 kernelpagesize_kB=4 +7f53b4716000 default file=/usr/lib/x86_64-linux-gnu/liblzma.so.5.2.4 mapped=15 mapmax=19 N0=15 kernelpagesize_kB=4 +7f53b472e000 default file=/usr/lib/x86_64-linux-gnu/liblzma.so.5.2.4 +7f53b4739000 default file=/usr/lib/x86_64-linux-gnu/liblzma.so.5.2.4 +7f53b473a000 default file=/usr/lib/x86_64-linux-gnu/liblzma.so.5.2.4 anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b473b000 default file=/usr/lib/x86_64-linux-gnu/liblzma.so.5.2.4 anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b473c000 default file=/usr/lib/x86_64-linux-gnu/libzstd.so.1.4.5 mapped=4 mapmax=17 N0=4 kernelpagesize_kB=4 +7f53b4740000 default file=/usr/lib/x86_64-linux-gnu/libzstd.so.1.4.5 mapped=16 mapmax=17 N0=16 kernelpagesize_kB=4 +7f53b47f8000 default file=/usr/lib/x86_64-linux-gnu/libzstd.so.1.4.5 +7f53b480a000 default file=/usr/lib/x86_64-linux-gnu/libzstd.so.1.4.5 anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b480b000 default file=/usr/lib/x86_64-linux-gnu/libzstd.so.1.4.5 anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b480c000 default file=/usr/lib/x86_64-linux-gnu/liblz4.so.1.9.2 mapped=2 mapmax=17 N0=2 kernelpagesize_kB=4 +7f53b480e000 default file=/usr/lib/x86_64-linux-gnu/liblz4.so.1.9.2 mapped=16 mapmax=17 N0=16 kernelpagesize_kB=4 +7f53b4829000 default file=/usr/lib/x86_64-linux-gnu/liblz4.so.1.9.2 +7f53b482c000 default file=/usr/lib/x86_64-linux-gnu/liblz4.so.1.9.2 anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b482d000 default file=/usr/lib/x86_64-linux-gnu/liblz4.so.1.9.2 anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b482e000 default anon=2 dirty=2 mapmax=2 N0=2 kernelpagesize_kB=4 +7f53b4830000 default file=/usr/lib/x86_64-linux-gnu/libip4tc.so.2.0.0 mapped=2 mapmax=7 N0=2 kernelpagesize_kB=4 +7f53b4832000 default file=/usr/lib/x86_64-linux-gnu/libip4tc.so.2.0.0 mapped=4 mapmax=7 N0=4 kernelpagesize_kB=4 +7f53b4836000 default file=/usr/lib/x86_64-linux-gnu/libip4tc.so.2.0.0 +7f53b4838000 default file=/usr/lib/x86_64-linux-gnu/libip4tc.so.2.0.0 anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b4839000 default file=/usr/lib/x86_64-linux-gnu/libip4tc.so.2.0.0 anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b483a000 default file=/usr/lib/x86_64-linux-gnu/libidn2.so.0.3.7 mapped=2 mapmax=7 N0=2 kernelpagesize_kB=4 +7f53b483c000 default file=/usr/lib/x86_64-linux-gnu/libidn2.so.0.3.7 mapped=5 mapmax=7 N0=5 kernelpagesize_kB=4 +7f53b4841000 default file=/usr/lib/x86_64-linux-gnu/libidn2.so.0.3.7 +7f53b485a000 default file=/usr/lib/x86_64-linux-gnu/libidn2.so.0.3.7 anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b485b000 default file=/usr/lib/x86_64-linux-gnu/libidn2.so.0.3.7 anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b485c000 default file=/usr/lib/x86_64-linux-gnu/libgcrypt.so.20.2.5 mapped=12 mapmax=17 N0=12 kernelpagesize_kB=4 +7f53b4868000 default file=/usr/lib/x86_64-linux-gnu/libgcrypt.so.20.2.5 mapped=15 mapmax=17 N0=15 kernelpagesize_kB=4 +7f53b4936000 default file=/usr/lib/x86_64-linux-gnu/libgcrypt.so.20.2.5 +7f53b4973000 default file=/usr/lib/x86_64-linux-gnu/libgcrypt.so.20.2.5 anon=2 dirty=2 mapmax=2 N0=2 kernelpagesize_kB=4 +7f53b4975000 default file=/usr/lib/x86_64-linux-gnu/libgcrypt.so.20.2.5 anon=5 dirty=5 mapmax=2 N0=5 kernelpagesize_kB=4 +7f53b497a000 default file=/usr/lib/x86_64-linux-gnu/libcryptsetup.so.12.6.0 mapped=7 mapmax=7 N0=7 kernelpagesize_kB=4 +7f53b4981000 default file=/usr/lib/x86_64-linux-gnu/libcryptsetup.so.12.6.0 mapped=16 mapmax=7 N0=16 kernelpagesize_kB=4 +7f53b49d2000 default file=/usr/lib/x86_64-linux-gnu/libcryptsetup.so.12.6.0 +7f53b49ec000 default file=/usr/lib/x86_64-linux-gnu/libcryptsetup.so.12.6.0 +7f53b49ed000 default file=/usr/lib/x86_64-linux-gnu/libcryptsetup.so.12.6.0 anon=2 dirty=2 mapmax=2 N0=2 kernelpagesize_kB=4 +7f53b49ef000 default file=/usr/lib/x86_64-linux-gnu/libcryptsetup.so.12.6.0 anon=2 dirty=2 mapmax=2 N0=2 kernelpagesize_kB=4 +7f53b49f1000 default file=/usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0 mapped=2 mapmax=13 N0=2 kernelpagesize_kB=4 +7f53b49f3000 default file=/usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0 mapped=12 mapmax=12 N0=12 kernelpagesize_kB=4 +7f53b4a08000 default file=/usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0 +7f53b4a22000 default file=/usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0 anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b4a23000 default file=/usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0 anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b4a24000 default +7f53b4a2c000 default file=/usr/lib/x86_64-linux-gnu/libcap.so.2.43 mapped=3 mapmax=11 N0=3 kernelpagesize_kB=4 +7f53b4a2f000 default file=/usr/lib/x86_64-linux-gnu/libcap.so.2.43 mapped=4 mapmax=12 N0=4 kernelpagesize_kB=4 +7f53b4a33000 default file=/usr/lib/x86_64-linux-gnu/libcap.so.2.43 +7f53b4a35000 default file=/usr/lib/x86_64-linux-gnu/libcap.so.2.43 anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b4a36000 default file=/usr/lib/x86_64-linux-gnu/libcap.so.2.43 anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b4a37000 default anon=2 dirty=2 mapmax=2 N0=2 kernelpagesize_kB=4 +7f53b4a39000 default file=/usr/lib/x86_64-linux-gnu/libblkid.so.1.1.0 mapped=9 mapmax=12 N0=9 kernelpagesize_kB=4 +7f53b4a42000 default file=/usr/lib/x86_64-linux-gnu/libblkid.so.1.1.0 mapped=15 mapmax=12 N0=15 kernelpagesize_kB=4 +7f53b4a76000 default file=/usr/lib/x86_64-linux-gnu/libblkid.so.1.1.0 +7f53b4a86000 default file=/usr/lib/x86_64-linux-gnu/libblkid.so.1.1.0 +7f53b4a87000 default file=/usr/lib/x86_64-linux-gnu/libblkid.so.1.1.0 anon=4 dirty=4 mapmax=2 N0=4 kernelpagesize_kB=4 +7f53b4a8b000 default file=/usr/lib/x86_64-linux-gnu/libblkid.so.1.1.0 anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b4a8c000 default file=/usr/lib/x86_64-linux-gnu/libacl.so.1.1.2253 mapped=2 mapmax=8 N0=2 kernelpagesize_kB=4 +7f53b4a8e000 default file=/usr/lib/x86_64-linux-gnu/libacl.so.1.1.2253 mapped=5 mapmax=8 N0=5 kernelpagesize_kB=4 +7f53b4a93000 default file=/usr/lib/x86_64-linux-gnu/libacl.so.1.1.2253 +7f53b4a95000 default file=/usr/lib/x86_64-linux-gnu/libacl.so.1.1.2253 anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b4a96000 default file=/usr/lib/x86_64-linux-gnu/libacl.so.1.1.2253 anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b4a97000 default file=/usr/lib/x86_64-linux-gnu/libc-2.32.so mapped=37 mapmax=31 N0=37 kernelpagesize_kB=4 +7f53b4abd000 default file=/usr/lib/x86_64-linux-gnu/libc-2.32.so mapped=314 mapmax=32 N0=314 kernelpagesize_kB=4 +7f53b4c2a000 default file=/usr/lib/x86_64-linux-gnu/libc-2.32.so mapped=36 mapmax=32 N0=36 kernelpagesize_kB=4 +7f53b4c76000 default file=/usr/lib/x86_64-linux-gnu/libc-2.32.so +7f53b4c77000 default file=/usr/lib/x86_64-linux-gnu/libc-2.32.so anon=3 dirty=3 mapmax=2 N0=3 kernelpagesize_kB=4 +7f53b4c7a000 default file=/usr/lib/x86_64-linux-gnu/libc-2.32.so anon=3 dirty=3 N0=3 kernelpagesize_kB=4 +7f53b4c7d000 default anon=3 dirty=3 N0=3 kernelpagesize_kB=4 +7f53b4c81000 default file=/usr/lib/x86_64-linux-gnu/libapparmor.so.1.7.0 mapped=3 mapmax=3 N0=3 kernelpagesize_kB=4 +7f53b4c84000 default file=/usr/lib/x86_64-linux-gnu/libapparmor.so.1.7.0 mapped=9 mapmax=3 active=0 N0=9 kernelpagesize_kB=4 +7f53b4c8d000 default file=/usr/lib/x86_64-linux-gnu/libapparmor.so.1.7.0 mapped=6 mapmax=2 active=0 N0=6 kernelpagesize_kB=4 +7f53b4c94000 default file=/usr/lib/x86_64-linux-gnu/libapparmor.so.1.7.0 anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b4c95000 default file=/usr/lib/x86_64-linux-gnu/libapparmor.so.1.7.0 anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b4c96000 default file=/usr/lib/x86_64-linux-gnu/libkmod.so.2.3.5 mapped=3 mapmax=8 N0=3 kernelpagesize_kB=4 +7f53b4c99000 default file=/usr/lib/x86_64-linux-gnu/libkmod.so.2.3.5 mapped=16 mapmax=8 N0=16 kernelpagesize_kB=4 +7f53b4ca9000 default file=/usr/lib/x86_64-linux-gnu/libkmod.so.2.3.5 mapped=6 mapmax=2 N0=6 kernelpagesize_kB=4 +7f53b4caf000 default file=/usr/lib/x86_64-linux-gnu/libkmod.so.2.3.5 anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b4cb0000 default file=/usr/lib/x86_64-linux-gnu/libkmod.so.2.3.5 anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b4cb1000 default file=/usr/lib/x86_64-linux-gnu/libaudit.so.1.0.0 mapped=3 mapmax=16 N0=3 kernelpagesize_kB=4 +7f53b4cb4000 default file=/usr/lib/x86_64-linux-gnu/libaudit.so.1.0.0 mapped=8 mapmax=16 N0=8 kernelpagesize_kB=4 +7f53b4cbc000 default file=/usr/lib/x86_64-linux-gnu/libaudit.so.1.0.0 mapped=15 mapmax=6 active=14 N0=15 kernelpagesize_kB=4 +7f53b4cd0000 default file=/usr/lib/x86_64-linux-gnu/libaudit.so.1.0.0 +7f53b4cd1000 default file=/usr/lib/x86_64-linux-gnu/libaudit.so.1.0.0 anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b4cd2000 default file=/usr/lib/x86_64-linux-gnu/libaudit.so.1.0.0 anon=1 dirty=1 N0=1 kernelpagesize_kB=4 +7f53b4cd3000 default anon=3 dirty=3 mapmax=2 N0=3 kernelpagesize_kB=4 +7f53b4cdf000 default file=/usr/lib/x86_64-linux-gnu/libpam.so.0.84.2 mapped=3 mapmax=15 N0=3 kernelpagesize_kB=4 +7f53b4ce2000 default file=/usr/lib/x86_64-linux-gnu/libpam.so.0.84.2 mapped=8 mapmax=15 N0=8 kernelpagesize_kB=4 +7f53b4ceb000 default file=/usr/lib/x86_64-linux-gnu/libpam.so.0.84.2 +7f53b4cef000 default file=/usr/lib/x86_64-linux-gnu/libpam.so.0.84.2 anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b4cf0000 default file=/usr/lib/x86_64-linux-gnu/libpam.so.0.84.2 anon=1 dirty=1 N0=1 kernelpagesize_kB=4 +7f53b4cf1000 default file=/usr/lib/x86_64-linux-gnu/libmount.so.1.1.0 mapped=10 mapmax=11 N0=10 kernelpagesize_kB=4 +7f53b4cfb000 default file=/usr/lib/x86_64-linux-gnu/libmount.so.1.1.0 mapped=52 mapmax=11 N0=52 kernelpagesize_kB=4 +7f53b4d39000 default file=/usr/lib/x86_64-linux-gnu/libmount.so.1.1.0 mapped=15 mapmax=2 N0=15 kernelpagesize_kB=4 +7f53b4d4c000 default file=/usr/lib/x86_64-linux-gnu/libmount.so.1.1.0 anon=2 dirty=2 mapmax=2 N0=2 kernelpagesize_kB=4 +7f53b4d4e000 default file=/usr/lib/x86_64-linux-gnu/libmount.so.1.1.0 anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b4d4f000 default file=/usr/lib/x86_64-linux-gnu/libselinux.so.1 mapped=6 mapmax=22 N0=6 kernelpagesize_kB=4 +7f53b4d55000 default file=/usr/lib/x86_64-linux-gnu/libselinux.so.1 mapped=25 mapmax=22 N0=25 kernelpagesize_kB=4 +7f53b4d6e000 default file=/usr/lib/x86_64-linux-gnu/libselinux.so.1 mapped=8 mapmax=21 N0=8 kernelpagesize_kB=4 +7f53b4d76000 default file=/usr/lib/x86_64-linux-gnu/libselinux.so.1 anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b4d77000 default file=/usr/lib/x86_64-linux-gnu/libselinux.so.1 anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b4d78000 default anon=2 dirty=2 mapmax=2 N0=2 kernelpagesize_kB=4 +7f53b4d7a000 default file=/usr/lib/x86_64-linux-gnu/libseccomp.so.2.4.3 mapped=40 mapmax=7 N0=40 kernelpagesize_kB=4 +7f53b4da2000 default file=/usr/lib/x86_64-linux-gnu/libseccomp.so.2.4.3 mapped=11 mapmax=7 N0=11 kernelpagesize_kB=4 +7f53b4dad000 default file=/usr/lib/x86_64-linux-gnu/libseccomp.so.2.4.3 mapped=4 N0=4 kernelpagesize_kB=4 +7f53b4db1000 default file=/usr/lib/x86_64-linux-gnu/libseccomp.so.2.4.3 anon=27 dirty=27 mapmax=2 N0=27 kernelpagesize_kB=4 +7f53b4dcc000 default file=/usr/lib/x86_64-linux-gnu/libseccomp.so.2.4.3 anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b4dcd000 default file=/usr/lib/x86_64-linux-gnu/librt-2.32.so mapped=3 mapmax=17 N0=3 kernelpagesize_kB=4 +7f53b4dd0000 default file=/usr/lib/x86_64-linux-gnu/librt-2.32.so mapped=4 mapmax=17 N0=4 kernelpagesize_kB=4 +7f53b4dd4000 default file=/usr/lib/x86_64-linux-gnu/librt-2.32.so +7f53b4dd6000 default file=/usr/lib/x86_64-linux-gnu/librt-2.32.so anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b4dd7000 default file=/usr/lib/x86_64-linux-gnu/librt-2.32.so anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b4ddf000 default file=/usr/lib/systemd/libsystemd-shared-246.so mapped=74 mapmax=7 N0=74 kernelpagesize_kB=4 +7f53b4e29000 default file=/usr/lib/systemd/libsystemd-shared-246.so mapped=354 mapmax=8 active=348 N0=354 kernelpagesize_kB=4 +7f53b4fac000 default file=/usr/lib/systemd/libsystemd-shared-246.so mapped=84 mapmax=7 N0=84 kernelpagesize_kB=4 +7f53b503f000 default file=/usr/lib/systemd/libsystemd-shared-246.so +7f53b5040000 default file=/usr/lib/systemd/libsystemd-shared-246.so anon=16 dirty=16 mapmax=2 N0=16 kernelpagesize_kB=4 +7f53b5050000 default file=/usr/lib/systemd/libsystemd-shared-246.so anon=1 dirty=1 N0=1 kernelpagesize_kB=4 +7f53b5051000 default anon=3 dirty=3 N0=3 kernelpagesize_kB=4 +7f53b5054000 default file=/usr/lib/x86_64-linux-gnu/ld-2.32.so mapped=1 mapmax=31 N0=1 kernelpagesize_kB=4 +7f53b5055000 default file=/usr/lib/x86_64-linux-gnu/ld-2.32.so mapped=36 mapmax=32 N0=36 kernelpagesize_kB=4 +7f53b5079000 default file=/usr/lib/x86_64-linux-gnu/ld-2.32.so mapped=8 mapmax=31 N0=8 kernelpagesize_kB=4 +7f53b5082000 default file=/usr/lib/x86_64-linux-gnu/ld-2.32.so anon=1 dirty=1 mapmax=2 N0=1 kernelpagesize_kB=4 +7f53b5083000 default file=/usr/lib/x86_64-linux-gnu/ld-2.32.so anon=2 dirty=2 N0=2 kernelpagesize_kB=4 +7ffd1b23e000 default stack anon=258 dirty=258 N0=258 kernelpagesize_kB=4 +7ffd1b3b1000 default +7ffd1b3b5000 default diff --git a/tests/fixtures/linux-proc/pid_smaps b/tests/fixtures/linux-proc/pid_smaps new file mode 100644 index 00000000..62cbd24f --- /dev/null +++ b/tests/fixtures/linux-proc/pid_smaps @@ -0,0 +1,4922 @@ +55a9e753c000-55a9e7570000 r--p 00000000 fd:00 798126 /usr/lib/systemd/systemd +Size: 208 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 208 kB +Pss: 104 kB +Shared_Clean: 208 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 208 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me dw sd +55a9e7570000-55a9e763a000 r-xp 00034000 fd:00 798126 /usr/lib/systemd/systemd +Size: 808 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 800 kB +Pss: 378 kB +Shared_Clean: 800 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 800 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd ex mr mw me dw sd +55a9e763a000-55a9e7694000 r--p 000fe000 fd:00 798126 /usr/lib/systemd/systemd +Size: 360 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 276 kB +Pss: 127 kB +Shared_Clean: 276 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 276 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me dw sd +55a9e7695000-55a9e76da000 r--p 00158000 fd:00 798126 /usr/lib/systemd/systemd +Size: 276 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 268 kB +Pss: 131 kB +Shared_Clean: 16 kB +Shared_Dirty: 252 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 268 kB +Anonymous: 252 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me dw ac sd +55a9e76da000-55a9e76db000 rw-p 0019d000 fd:00 798126 /usr/lib/systemd/systemd +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 4 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 4 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me dw ac sd +55a9e8cd4000-55a9e8f68000 rw-p 00000000 00:00 0 [heap] +Size: 2640 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 2444 kB +Pss: 2414 kB +Shared_Clean: 0 kB +Shared_Dirty: 60 kB +Private_Clean: 0 kB +Private_Dirty: 2384 kB +Referenced: 2444 kB +Anonymous: 2444 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53a4000000-7f53a4021000 rw-p 00000000 00:00 0 +Size: 132 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 12 kB +Pss: 12 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 12 kB +Referenced: 12 kB +Anonymous: 12 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me nr sd +7f53a4021000-7f53a8000000 ---p 00000000 00:00 0 +Size: 65404 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 0 kB +Pss: 0 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 0 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: mr mw me nr sd +7f53ac000000-7f53ac021000 rw-p 00000000 00:00 0 +Size: 132 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 12 kB +Pss: 12 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 12 kB +Referenced: 12 kB +Anonymous: 12 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me nr sd +7f53ac021000-7f53b0000000 ---p 00000000 00:00 0 +Size: 65404 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 0 kB +Pss: 0 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 0 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: mr mw me nr sd +7f53b2fb8000-7f53b2fb9000 ---p 00000000 00:00 0 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 0 kB +Pss: 0 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 0 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: mr mw me sd +7f53b2fb9000-7f53b37b9000 rw-p 00000000 00:00 0 +Size: 8192 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 8 kB +Pss: 8 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 8 kB +Referenced: 8 kB +Anonymous: 8 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b37b9000-7f53b37ba000 ---p 00000000 00:00 0 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 0 kB +Pss: 0 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 0 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: mr mw me sd +7f53b37ba000-7f53b3fc1000 rw-p 00000000 00:00 0 +Size: 8220 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 32 kB +Pss: 26 kB +Shared_Clean: 0 kB +Shared_Dirty: 12 kB +Private_Clean: 0 kB +Private_Dirty: 20 kB +Referenced: 32 kB +Anonymous: 32 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b3fc1000-7f53b3fd0000 r--p 00000000 fd:00 793156 /usr/lib/x86_64-linux-gnu/libm-2.32.so +Size: 60 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 56 kB +Pss: 4 kB +Shared_Clean: 56 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 56 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b3fd0000-7f53b4077000 r-xp 0000f000 fd:00 793156 /usr/lib/x86_64-linux-gnu/libm-2.32.so +Size: 668 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 284 kB +Pss: 23 kB +Shared_Clean: 284 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 284 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd ex mr mw me sd +7f53b4077000-7f53b410e000 r--p 000b6000 fd:00 793156 /usr/lib/x86_64-linux-gnu/libm-2.32.so +Size: 604 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 0 kB +Pss: 0 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 0 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b410e000-7f53b410f000 r--p 0014c000 fd:00 793156 /usr/lib/x86_64-linux-gnu/libm-2.32.so +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me ac sd +7f53b410f000-7f53b4110000 rw-p 0014d000 fd:00 793156 /usr/lib/x86_64-linux-gnu/libm-2.32.so +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b4110000-7f53b4114000 r--p 00000000 fd:00 788923 /usr/lib/x86_64-linux-gnu/libudev.so.1.6.18 +Size: 16 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 16 kB +Pss: 1 kB +Shared_Clean: 16 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 16 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b4114000-7f53b412d000 r-xp 00004000 fd:00 788923 /usr/lib/x86_64-linux-gnu/libudev.so.1.6.18 +Size: 100 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 64 kB +Pss: 7 kB +Shared_Clean: 64 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 64 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd ex mr mw me sd +7f53b412d000-7f53b4136000 r--p 0001d000 fd:00 788923 /usr/lib/x86_64-linux-gnu/libudev.so.1.6.18 +Size: 36 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 0 kB +Pss: 0 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 0 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b4136000-7f53b4137000 r--p 00025000 fd:00 788923 /usr/lib/x86_64-linux-gnu/libudev.so.1.6.18 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me ac sd +7f53b4137000-7f53b4138000 rw-p 00026000 fd:00 788923 /usr/lib/x86_64-linux-gnu/libudev.so.1.6.18 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b4138000-7f53b4148000 r--p 00000000 fd:00 793263 /usr/lib/x86_64-linux-gnu/libunistring.so.2.1.0 +Size: 64 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 64 kB +Pss: 9 kB +Shared_Clean: 64 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 64 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b4148000-7f53b417e000 r-xp 00010000 fd:00 793263 /usr/lib/x86_64-linux-gnu/libunistring.so.2.1.0 +Size: 216 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 60 kB +Pss: 8 kB +Shared_Clean: 60 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 60 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd ex mr mw me sd +7f53b417e000-7f53b42b5000 r--p 00046000 fd:00 793263 /usr/lib/x86_64-linux-gnu/libunistring.so.2.1.0 +Size: 1244 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 0 kB +Pss: 0 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 0 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b42b5000-7f53b42b6000 ---p 0017d000 fd:00 793263 /usr/lib/x86_64-linux-gnu/libunistring.so.2.1.0 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 0 kB +Pss: 0 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 0 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: mr mw me sd +7f53b42b6000-7f53b42b9000 r--p 0017d000 fd:00 793263 /usr/lib/x86_64-linux-gnu/libunistring.so.2.1.0 +Size: 12 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 12 kB +Pss: 6 kB +Shared_Clean: 0 kB +Shared_Dirty: 12 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 12 kB +Anonymous: 12 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me ac sd +7f53b42b9000-7f53b42ba000 rw-p 00180000 fd:00 793263 /usr/lib/x86_64-linux-gnu/libunistring.so.2.1.0 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b42ba000-7f53b42bf000 r--p 00000000 fd:00 793102 /usr/lib/x86_64-linux-gnu/libgpg-error.so.0.29.0 +Size: 20 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 20 kB +Pss: 1 kB +Shared_Clean: 20 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 20 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b42bf000-7f53b42d4000 r-xp 00005000 fd:00 793102 /usr/lib/x86_64-linux-gnu/libgpg-error.so.0.29.0 +Size: 84 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 80 kB +Pss: 4 kB +Shared_Clean: 80 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 80 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd ex mr mw me sd +7f53b42d4000-7f53b42de000 r--p 0001a000 fd:00 793102 /usr/lib/x86_64-linux-gnu/libgpg-error.so.0.29.0 +Size: 40 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 36 kB +Pss: 2 kB +Shared_Clean: 36 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 36 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b42de000-7f53b42df000 ---p 00024000 fd:00 793102 /usr/lib/x86_64-linux-gnu/libgpg-error.so.0.29.0 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 0 kB +Pss: 0 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 0 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: mr mw me sd +7f53b42df000-7f53b42e0000 r--p 00024000 fd:00 793102 /usr/lib/x86_64-linux-gnu/libgpg-error.so.0.29.0 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me ac sd +7f53b42e0000-7f53b42e1000 rw-p 00025000 fd:00 793102 /usr/lib/x86_64-linux-gnu/libgpg-error.so.0.29.0 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b42e1000-7f53b42e5000 r--p 00000000 fd:00 793139 /usr/lib/x86_64-linux-gnu/libjson-c.so.5.1.0 +Size: 16 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 16 kB +Pss: 2 kB +Shared_Clean: 16 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 16 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b42e5000-7f53b42ee000 r-xp 00004000 fd:00 793139 /usr/lib/x86_64-linux-gnu/libjson-c.so.5.1.0 +Size: 36 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 32 kB +Pss: 4 kB +Shared_Clean: 32 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 32 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd ex mr mw me sd +7f53b42ee000-7f53b42f2000 r--p 0000d000 fd:00 793139 /usr/lib/x86_64-linux-gnu/libjson-c.so.5.1.0 +Size: 16 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 0 kB +Pss: 0 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 0 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b42f2000-7f53b42f3000 r--p 00010000 fd:00 793139 /usr/lib/x86_64-linux-gnu/libjson-c.so.5.1.0 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me ac sd +7f53b42f3000-7f53b42f4000 rw-p 00011000 fd:00 793139 /usr/lib/x86_64-linux-gnu/libjson-c.so.5.1.0 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b42f4000-7f53b42f6000 rw-p 00000000 00:00 0 +Size: 8 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 8 kB +Pss: 6 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 4 kB +Referenced: 8 kB +Anonymous: 8 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b42f6000-7f53b42f7000 r--p 00000000 fd:00 793030 /usr/lib/x86_64-linux-gnu/libargon2.so.1 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 0 kB +Shared_Clean: 4 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b42f7000-7f53b42fc000 r-xp 00001000 fd:00 793030 /usr/lib/x86_64-linux-gnu/libargon2.so.1 +Size: 20 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 20 kB +Pss: 2 kB +Shared_Clean: 20 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 20 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd ex mr mw me sd +7f53b42fc000-7f53b42fe000 r--p 00006000 fd:00 793030 /usr/lib/x86_64-linux-gnu/libargon2.so.1 +Size: 8 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 0 kB +Pss: 0 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 0 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b42fe000-7f53b42ff000 r--p 00007000 fd:00 793030 /usr/lib/x86_64-linux-gnu/libargon2.so.1 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me ac sd +7f53b42ff000-7f53b4300000 rw-p 00008000 fd:00 793030 /usr/lib/x86_64-linux-gnu/libargon2.so.1 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b4300000-7f53b430a000 r--p 00000000 fd:00 793061 /usr/lib/x86_64-linux-gnu/libdevmapper.so.1.02.1 +Size: 40 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 40 kB +Pss: 5 kB +Shared_Clean: 40 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 40 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b430a000-7f53b4352000 r-xp 0000a000 fd:00 793061 /usr/lib/x86_64-linux-gnu/libdevmapper.so.1.02.1 +Size: 288 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 60 kB +Pss: 7 kB +Shared_Clean: 60 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 60 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd ex mr mw me sd +7f53b4352000-7f53b4366000 r--p 00052000 fd:00 793061 /usr/lib/x86_64-linux-gnu/libdevmapper.so.1.02.1 +Size: 80 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 64 kB +Pss: 8 kB +Shared_Clean: 64 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 64 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b4366000-7f53b4367000 r--p 00065000 fd:00 793061 /usr/lib/x86_64-linux-gnu/libdevmapper.so.1.02.1 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me ac sd +7f53b4367000-7f53b436a000 rw-p 00066000 fd:00 793061 /usr/lib/x86_64-linux-gnu/libdevmapper.so.1.02.1 +Size: 12 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 12 kB +Pss: 4 kB +Shared_Clean: 4 kB +Shared_Dirty: 8 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 12 kB +Anonymous: 8 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b436a000-7f53b436b000 rw-p 00000000 00:00 0 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 0 kB +Pss: 0 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 0 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b436b000-7f53b436d000 r--p 00000000 fd:00 793279 /usr/lib/x86_64-linux-gnu/libuuid.so.1.3.0 +Size: 8 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 8 kB +Pss: 1 kB +Shared_Clean: 8 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 8 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b436d000-7f53b4371000 r-xp 00002000 fd:00 793279 /usr/lib/x86_64-linux-gnu/libuuid.so.1.3.0 +Size: 16 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 16 kB +Pss: 2 kB +Shared_Clean: 16 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 16 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd ex mr mw me sd +7f53b4371000-7f53b4372000 r--p 00006000 fd:00 793279 /usr/lib/x86_64-linux-gnu/libuuid.so.1.3.0 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 0 kB +Pss: 0 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 0 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b4372000-7f53b4373000 r--p 00006000 fd:00 793279 /usr/lib/x86_64-linux-gnu/libuuid.so.1.3.0 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me ac sd +7f53b4373000-7f53b4374000 rw-p 00007000 fd:00 793279 /usr/lib/x86_64-linux-gnu/libuuid.so.1.3.0 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b4374000-7f53b43ec000 r--p 00000000 fd:00 790506 /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 +Size: 480 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 480 kB +Pss: 39 kB +Shared_Clean: 480 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 480 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b43ec000-7f53b458e000 r-xp 00078000 fd:00 790506 /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 +Size: 1672 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 180 kB +Pss: 20 kB +Shared_Clean: 180 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 180 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd ex mr mw me sd +7f53b458e000-7f53b461e000 r--p 0021a000 fd:00 790506 /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 +Size: 576 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 64 kB +Pss: 7 kB +Shared_Clean: 64 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 64 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b461e000-7f53b461f000 ---p 002aa000 fd:00 790506 /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 0 kB +Pss: 0 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 0 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: mr mw me sd +7f53b461f000-7f53b464b000 r--p 002aa000 fd:00 790506 /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 +Size: 176 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 176 kB +Pss: 88 kB +Shared_Clean: 0 kB +Shared_Dirty: 176 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 176 kB +Anonymous: 176 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me ac sd +7f53b464b000-7f53b464d000 rw-p 002d6000 fd:00 790506 /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 +Size: 8 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 8 kB +Pss: 4 kB +Shared_Clean: 0 kB +Shared_Dirty: 8 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 8 kB +Anonymous: 8 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b464d000-7f53b4651000 rw-p 00000000 00:00 0 +Size: 16 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b4651000-7f53b4653000 r--p 00000000 fd:00 793046 /usr/lib/x86_64-linux-gnu/libcap-ng.so.0.0.0 +Size: 8 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 8 kB +Pss: 0 kB +Shared_Clean: 8 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 8 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b4653000-7f53b4656000 r-xp 00002000 fd:00 793046 /usr/lib/x86_64-linux-gnu/libcap-ng.so.0.0.0 +Size: 12 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 12 kB +Pss: 0 kB +Shared_Clean: 12 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 12 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd ex mr mw me sd +7f53b4656000-7f53b4657000 r--p 00005000 fd:00 793046 /usr/lib/x86_64-linux-gnu/libcap-ng.so.0.0.0 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 0 kB +Pss: 0 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 0 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b4657000-7f53b4658000 r--p 00005000 fd:00 793046 /usr/lib/x86_64-linux-gnu/libcap-ng.so.0.0.0 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me ac sd +7f53b4658000-7f53b4659000 rw-p 00006000 fd:00 793046 /usr/lib/x86_64-linux-gnu/libcap-ng.so.0.0.0 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 4 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 4 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b4659000-7f53b465b000 r--p 00000000 fd:00 793203 /usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.9.0 +Size: 8 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 8 kB +Pss: 0 kB +Shared_Clean: 8 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 8 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b465b000-7f53b46bf000 r-xp 00002000 fd:00 793203 /usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.9.0 +Size: 400 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 60 kB +Pss: 2 kB +Shared_Clean: 60 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 60 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd ex mr mw me sd +7f53b46bf000-7f53b46e7000 r--p 00066000 fd:00 793203 /usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.9.0 +Size: 160 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 0 kB +Pss: 0 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 0 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b46e7000-7f53b46e8000 r--p 0008d000 fd:00 793203 /usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.9.0 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me ac sd +7f53b46e8000-7f53b46e9000 rw-p 0008e000 fd:00 793203 /usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.9.0 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b46e9000-7f53b46eb000 rw-p 00000000 00:00 0 +Size: 8 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 8 kB +Pss: 6 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 4 kB +Referenced: 8 kB +Anonymous: 8 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b46eb000-7f53b46f2000 r--p 00000000 fd:00 793218 /usr/lib/x86_64-linux-gnu/libpthread-2.32.so +Size: 28 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 28 kB +Pss: 1 kB +Shared_Clean: 28 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 28 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b46f2000-7f53b4702000 r-xp 00007000 fd:00 793218 /usr/lib/x86_64-linux-gnu/libpthread-2.32.so +Size: 64 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 64 kB +Pss: 2 kB +Shared_Clean: 64 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 64 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd ex mr mw me sd +7f53b4702000-7f53b4707000 r--p 00017000 fd:00 793218 /usr/lib/x86_64-linux-gnu/libpthread-2.32.so +Size: 20 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 20 kB +Pss: 1 kB +Shared_Clean: 20 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 20 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b4707000-7f53b4708000 r--p 0001b000 fd:00 793218 /usr/lib/x86_64-linux-gnu/libpthread-2.32.so +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me ac sd +7f53b4708000-7f53b4709000 rw-p 0001c000 fd:00 793218 /usr/lib/x86_64-linux-gnu/libpthread-2.32.so +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 4 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 4 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b4709000-7f53b470d000 rw-p 00000000 00:00 0 +Size: 16 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 4 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 4 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b470d000-7f53b470e000 r--p 00000000 fd:00 793062 /usr/lib/x86_64-linux-gnu/libdl-2.32.so +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 0 kB +Shared_Clean: 4 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b470e000-7f53b4710000 r-xp 00001000 fd:00 793062 /usr/lib/x86_64-linux-gnu/libdl-2.32.so +Size: 8 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 8 kB +Pss: 0 kB +Shared_Clean: 8 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 8 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd ex mr mw me sd +7f53b4710000-7f53b4711000 r--p 00003000 fd:00 793062 /usr/lib/x86_64-linux-gnu/libdl-2.32.so +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 0 kB +Pss: 0 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 0 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b4711000-7f53b4712000 r--p 00003000 fd:00 793062 /usr/lib/x86_64-linux-gnu/libdl-2.32.so +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me ac sd +7f53b4712000-7f53b4713000 rw-p 00004000 fd:00 793062 /usr/lib/x86_64-linux-gnu/libdl-2.32.so +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 4 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 4 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b4713000-7f53b4716000 r--p 00000000 fd:00 793154 /usr/lib/x86_64-linux-gnu/liblzma.so.5.2.4 +Size: 12 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 12 kB +Pss: 0 kB +Shared_Clean: 12 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 12 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b4716000-7f53b472e000 r-xp 00003000 fd:00 793154 /usr/lib/x86_64-linux-gnu/liblzma.so.5.2.4 +Size: 96 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 60 kB +Pss: 3 kB +Shared_Clean: 60 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 60 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd ex mr mw me sd +7f53b472e000-7f53b4739000 r--p 0001b000 fd:00 793154 /usr/lib/x86_64-linux-gnu/liblzma.so.5.2.4 +Size: 44 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 0 kB +Pss: 0 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 0 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b4739000-7f53b473a000 ---p 00026000 fd:00 793154 /usr/lib/x86_64-linux-gnu/liblzma.so.5.2.4 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 0 kB +Pss: 0 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 0 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: mr mw me sd +7f53b473a000-7f53b473b000 r--p 00026000 fd:00 793154 /usr/lib/x86_64-linux-gnu/liblzma.so.5.2.4 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me ac sd +7f53b473b000-7f53b473c000 rw-p 00027000 fd:00 793154 /usr/lib/x86_64-linux-gnu/liblzma.so.5.2.4 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b473c000-7f53b4740000 r--p 00000000 fd:00 792974 /usr/lib/x86_64-linux-gnu/libzstd.so.1.4.5 +Size: 16 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 16 kB +Pss: 0 kB +Shared_Clean: 16 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 16 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b4740000-7f53b47f8000 r-xp 00004000 fd:00 792974 /usr/lib/x86_64-linux-gnu/libzstd.so.1.4.5 +Size: 736 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 64 kB +Pss: 3 kB +Shared_Clean: 64 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 64 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd ex mr mw me sd +7f53b47f8000-7f53b480a000 r--p 000bc000 fd:00 792974 /usr/lib/x86_64-linux-gnu/libzstd.so.1.4.5 +Size: 72 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 0 kB +Pss: 0 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 0 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b480a000-7f53b480b000 r--p 000cd000 fd:00 792974 /usr/lib/x86_64-linux-gnu/libzstd.so.1.4.5 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me ac sd +7f53b480b000-7f53b480c000 rw-p 000ce000 fd:00 792974 /usr/lib/x86_64-linux-gnu/libzstd.so.1.4.5 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b480c000-7f53b480e000 r--p 00000000 fd:00 787663 /usr/lib/x86_64-linux-gnu/liblz4.so.1.9.2 +Size: 8 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 8 kB +Pss: 0 kB +Shared_Clean: 8 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 8 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b480e000-7f53b4829000 r-xp 00002000 fd:00 787663 /usr/lib/x86_64-linux-gnu/liblz4.so.1.9.2 +Size: 108 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 64 kB +Pss: 3 kB +Shared_Clean: 64 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 64 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd ex mr mw me sd +7f53b4829000-7f53b482c000 r--p 0001d000 fd:00 787663 /usr/lib/x86_64-linux-gnu/liblz4.so.1.9.2 +Size: 12 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 0 kB +Pss: 0 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 0 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b482c000-7f53b482d000 r--p 0001f000 fd:00 787663 /usr/lib/x86_64-linux-gnu/liblz4.so.1.9.2 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me ac sd +7f53b482d000-7f53b482e000 rw-p 00020000 fd:00 787663 /usr/lib/x86_64-linux-gnu/liblz4.so.1.9.2 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b482e000-7f53b4830000 rw-p 00000000 00:00 0 +Size: 8 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 8 kB +Pss: 6 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 4 kB +Referenced: 8 kB +Anonymous: 8 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b4830000-7f53b4832000 r--p 00000000 fd:00 793129 /usr/lib/x86_64-linux-gnu/libip4tc.so.2.0.0 +Size: 8 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 8 kB +Pss: 1 kB +Shared_Clean: 8 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 8 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b4832000-7f53b4836000 r-xp 00002000 fd:00 793129 /usr/lib/x86_64-linux-gnu/libip4tc.so.2.0.0 +Size: 16 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 16 kB +Pss: 2 kB +Shared_Clean: 16 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 16 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd ex mr mw me sd +7f53b4836000-7f53b4838000 r--p 00006000 fd:00 793129 /usr/lib/x86_64-linux-gnu/libip4tc.so.2.0.0 +Size: 8 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 0 kB +Pss: 0 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 0 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b4838000-7f53b4839000 r--p 00007000 fd:00 793129 /usr/lib/x86_64-linux-gnu/libip4tc.so.2.0.0 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me ac sd +7f53b4839000-7f53b483a000 rw-p 00008000 fd:00 793129 /usr/lib/x86_64-linux-gnu/libip4tc.so.2.0.0 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b483a000-7f53b483c000 r--p 00000000 fd:00 793128 /usr/lib/x86_64-linux-gnu/libidn2.so.0.3.7 +Size: 8 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 8 kB +Pss: 1 kB +Shared_Clean: 8 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 8 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b483c000-7f53b4841000 r-xp 00002000 fd:00 793128 /usr/lib/x86_64-linux-gnu/libidn2.so.0.3.7 +Size: 20 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 20 kB +Pss: 2 kB +Shared_Clean: 20 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 20 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd ex mr mw me sd +7f53b4841000-7f53b485a000 r--p 00007000 fd:00 793128 /usr/lib/x86_64-linux-gnu/libidn2.so.0.3.7 +Size: 100 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 0 kB +Pss: 0 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 0 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b485a000-7f53b485b000 r--p 0001f000 fd:00 793128 /usr/lib/x86_64-linux-gnu/libidn2.so.0.3.7 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me ac sd +7f53b485b000-7f53b485c000 rw-p 00020000 fd:00 793128 /usr/lib/x86_64-linux-gnu/libidn2.so.0.3.7 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b485c000-7f53b4868000 r--p 00000000 fd:00 793092 /usr/lib/x86_64-linux-gnu/libgcrypt.so.20.2.5 +Size: 48 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 48 kB +Pss: 2 kB +Shared_Clean: 48 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 48 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b4868000-7f53b4936000 r-xp 0000c000 fd:00 793092 /usr/lib/x86_64-linux-gnu/libgcrypt.so.20.2.5 +Size: 824 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 60 kB +Pss: 3 kB +Shared_Clean: 60 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 60 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd ex mr mw me sd +7f53b4936000-7f53b4973000 r--p 000da000 fd:00 793092 /usr/lib/x86_64-linux-gnu/libgcrypt.so.20.2.5 +Size: 244 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 0 kB +Pss: 0 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 0 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b4973000-7f53b4975000 r--p 00116000 fd:00 793092 /usr/lib/x86_64-linux-gnu/libgcrypt.so.20.2.5 +Size: 8 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 8 kB +Pss: 4 kB +Shared_Clean: 0 kB +Shared_Dirty: 8 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 8 kB +Anonymous: 8 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me ac sd +7f53b4975000-7f53b497a000 rw-p 00118000 fd:00 793092 /usr/lib/x86_64-linux-gnu/libgcrypt.so.20.2.5 +Size: 20 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 20 kB +Pss: 10 kB +Shared_Clean: 0 kB +Shared_Dirty: 20 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 20 kB +Anonymous: 20 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b497a000-7f53b4981000 r--p 00000000 fd:00 793052 /usr/lib/x86_64-linux-gnu/libcryptsetup.so.12.6.0 +Size: 28 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 28 kB +Pss: 3 kB +Shared_Clean: 28 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 28 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b4981000-7f53b49d2000 r-xp 00007000 fd:00 793052 /usr/lib/x86_64-linux-gnu/libcryptsetup.so.12.6.0 +Size: 324 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 64 kB +Pss: 9 kB +Shared_Clean: 64 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 64 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd ex mr mw me sd +7f53b49d2000-7f53b49ec000 r--p 00058000 fd:00 793052 /usr/lib/x86_64-linux-gnu/libcryptsetup.so.12.6.0 +Size: 104 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 0 kB +Pss: 0 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 0 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b49ec000-7f53b49ed000 ---p 00072000 fd:00 793052 /usr/lib/x86_64-linux-gnu/libcryptsetup.so.12.6.0 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 0 kB +Pss: 0 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 0 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: mr mw me sd +7f53b49ed000-7f53b49ef000 r--p 00072000 fd:00 793052 /usr/lib/x86_64-linux-gnu/libcryptsetup.so.12.6.0 +Size: 8 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 8 kB +Pss: 4 kB +Shared_Clean: 0 kB +Shared_Dirty: 8 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 8 kB +Anonymous: 8 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me ac sd +7f53b49ef000-7f53b49f1000 rw-p 00074000 fd:00 793052 /usr/lib/x86_64-linux-gnu/libcryptsetup.so.12.6.0 +Size: 8 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 8 kB +Pss: 4 kB +Shared_Clean: 0 kB +Shared_Dirty: 8 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 8 kB +Anonymous: 8 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b49f1000-7f53b49f3000 r--p 00000000 fd:00 793050 /usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0 +Size: 8 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 8 kB +Pss: 0 kB +Shared_Clean: 8 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 8 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b49f3000-7f53b4a08000 r-xp 00002000 fd:00 793050 /usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0 +Size: 84 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 48 kB +Pss: 3 kB +Shared_Clean: 48 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 48 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd ex mr mw me sd +7f53b4a08000-7f53b4a22000 r--p 00017000 fd:00 793050 /usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0 +Size: 104 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 0 kB +Pss: 0 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 0 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b4a22000-7f53b4a23000 r--p 00030000 fd:00 793050 /usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me ac sd +7f53b4a23000-7f53b4a24000 rw-p 00031000 fd:00 793050 /usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b4a24000-7f53b4a2c000 rw-p 00000000 00:00 0 +Size: 32 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 0 kB +Pss: 0 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 0 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b4a2c000-7f53b4a2f000 r--p 00000000 fd:00 793047 /usr/lib/x86_64-linux-gnu/libcap.so.2.43 +Size: 12 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 12 kB +Pss: 1 kB +Shared_Clean: 12 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 12 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b4a2f000-7f53b4a33000 r-xp 00003000 fd:00 793047 /usr/lib/x86_64-linux-gnu/libcap.so.2.43 +Size: 16 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 16 kB +Pss: 1 kB +Shared_Clean: 16 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 16 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd ex mr mw me sd +7f53b4a33000-7f53b4a35000 r--p 00007000 fd:00 793047 /usr/lib/x86_64-linux-gnu/libcap.so.2.43 +Size: 8 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 0 kB +Pss: 0 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 0 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b4a35000-7f53b4a36000 r--p 00008000 fd:00 793047 /usr/lib/x86_64-linux-gnu/libcap.so.2.43 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me ac sd +7f53b4a36000-7f53b4a37000 rw-p 00009000 fd:00 793047 /usr/lib/x86_64-linux-gnu/libcap.so.2.43 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b4a37000-7f53b4a39000 rw-p 00000000 00:00 0 +Size: 8 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 8 kB +Pss: 6 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 4 kB +Referenced: 8 kB +Anonymous: 8 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b4a39000-7f53b4a42000 r--p 00000000 fd:00 793038 /usr/lib/x86_64-linux-gnu/libblkid.so.1.1.0 +Size: 36 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 36 kB +Pss: 2 kB +Shared_Clean: 36 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 36 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b4a42000-7f53b4a76000 r-xp 00009000 fd:00 793038 /usr/lib/x86_64-linux-gnu/libblkid.so.1.1.0 +Size: 208 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 60 kB +Pss: 4 kB +Shared_Clean: 60 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 60 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd ex mr mw me sd +7f53b4a76000-7f53b4a86000 r--p 0003d000 fd:00 793038 /usr/lib/x86_64-linux-gnu/libblkid.so.1.1.0 +Size: 64 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 0 kB +Pss: 0 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 0 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b4a86000-7f53b4a87000 ---p 0004d000 fd:00 793038 /usr/lib/x86_64-linux-gnu/libblkid.so.1.1.0 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 0 kB +Pss: 0 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 0 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: mr mw me sd +7f53b4a87000-7f53b4a8b000 r--p 0004d000 fd:00 793038 /usr/lib/x86_64-linux-gnu/libblkid.so.1.1.0 +Size: 16 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 16 kB +Pss: 8 kB +Shared_Clean: 0 kB +Shared_Dirty: 16 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 16 kB +Anonymous: 16 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me ac sd +7f53b4a8b000-7f53b4a8c000 rw-p 00051000 fd:00 793038 /usr/lib/x86_64-linux-gnu/libblkid.so.1.1.0 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b4a8c000-7f53b4a8e000 r--p 00000000 fd:00 793022 /usr/lib/x86_64-linux-gnu/libacl.so.1.1.2253 +Size: 8 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 8 kB +Pss: 1 kB +Shared_Clean: 8 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 8 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b4a8e000-7f53b4a93000 r-xp 00002000 fd:00 793022 /usr/lib/x86_64-linux-gnu/libacl.so.1.1.2253 +Size: 20 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 20 kB +Pss: 2 kB +Shared_Clean: 20 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 20 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd ex mr mw me sd +7f53b4a93000-7f53b4a95000 r--p 00007000 fd:00 793022 /usr/lib/x86_64-linux-gnu/libacl.so.1.1.2253 +Size: 8 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 0 kB +Pss: 0 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 0 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b4a95000-7f53b4a96000 r--p 00008000 fd:00 793022 /usr/lib/x86_64-linux-gnu/libacl.so.1.1.2253 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me ac sd +7f53b4a96000-7f53b4a97000 rw-p 00009000 fd:00 793022 /usr/lib/x86_64-linux-gnu/libacl.so.1.1.2253 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b4a97000-7f53b4abd000 r--p 00000000 fd:00 793044 /usr/lib/x86_64-linux-gnu/libc-2.32.so +Size: 152 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 148 kB +Pss: 4 kB +Shared_Clean: 148 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 148 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b4abd000-7f53b4c2a000 r-xp 00026000 fd:00 793044 /usr/lib/x86_64-linux-gnu/libc-2.32.so +Size: 1460 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 1256 kB +Pss: 48 kB +Shared_Clean: 1256 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 1256 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd ex mr mw me sd +7f53b4c2a000-7f53b4c76000 r--p 00193000 fd:00 793044 /usr/lib/x86_64-linux-gnu/libc-2.32.so +Size: 304 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 144 kB +Pss: 4 kB +Shared_Clean: 144 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 144 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b4c76000-7f53b4c77000 ---p 001df000 fd:00 793044 /usr/lib/x86_64-linux-gnu/libc-2.32.so +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 0 kB +Pss: 0 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 0 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: mr mw me sd +7f53b4c77000-7f53b4c7a000 r--p 001df000 fd:00 793044 /usr/lib/x86_64-linux-gnu/libc-2.32.so +Size: 12 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 12 kB +Pss: 6 kB +Shared_Clean: 0 kB +Shared_Dirty: 12 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 12 kB +Anonymous: 12 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me ac sd +7f53b4c7a000-7f53b4c7d000 rw-p 001e2000 fd:00 793044 /usr/lib/x86_64-linux-gnu/libc-2.32.so +Size: 12 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 12 kB +Pss: 12 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 12 kB +Referenced: 12 kB +Anonymous: 12 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b4c7d000-7f53b4c81000 rw-p 00000000 00:00 0 +Size: 16 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 12 kB +Pss: 12 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 12 kB +Referenced: 12 kB +Anonymous: 12 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b4c81000-7f53b4c84000 r--p 00000000 fd:00 793025 /usr/lib/x86_64-linux-gnu/libapparmor.so.1.7.0 +Size: 12 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 12 kB +Pss: 3 kB +Shared_Clean: 12 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 12 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b4c84000-7f53b4c8d000 r-xp 00003000 fd:00 793025 /usr/lib/x86_64-linux-gnu/libapparmor.so.1.7.0 +Size: 36 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 36 kB +Pss: 11 kB +Shared_Clean: 36 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 36 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd ex mr mw me sd +7f53b4c8d000-7f53b4c94000 r--p 0000c000 fd:00 793025 /usr/lib/x86_64-linux-gnu/libapparmor.so.1.7.0 +Size: 28 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 24 kB +Pss: 12 kB +Shared_Clean: 24 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 24 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b4c94000-7f53b4c95000 r--p 00012000 fd:00 793025 /usr/lib/x86_64-linux-gnu/libapparmor.so.1.7.0 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me ac sd +7f53b4c95000-7f53b4c96000 rw-p 00013000 fd:00 793025 /usr/lib/x86_64-linux-gnu/libapparmor.so.1.7.0 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b4c96000-7f53b4c99000 r--p 00000000 fd:00 793143 /usr/lib/x86_64-linux-gnu/libkmod.so.2.3.5 +Size: 12 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 12 kB +Pss: 1 kB +Shared_Clean: 12 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 12 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b4c99000-7f53b4ca9000 r-xp 00003000 fd:00 793143 /usr/lib/x86_64-linux-gnu/libkmod.so.2.3.5 +Size: 64 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 64 kB +Pss: 8 kB +Shared_Clean: 64 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 64 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd ex mr mw me sd +7f53b4ca9000-7f53b4caf000 r--p 00013000 fd:00 793143 /usr/lib/x86_64-linux-gnu/libkmod.so.2.3.5 +Size: 24 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 24 kB +Pss: 12 kB +Shared_Clean: 24 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 24 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b4caf000-7f53b4cb0000 r--p 00018000 fd:00 793143 /usr/lib/x86_64-linux-gnu/libkmod.so.2.3.5 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me ac sd +7f53b4cb0000-7f53b4cb1000 rw-p 00019000 fd:00 793143 /usr/lib/x86_64-linux-gnu/libkmod.so.2.3.5 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b4cb1000-7f53b4cb4000 r--p 00000000 fd:00 793036 /usr/lib/x86_64-linux-gnu/libaudit.so.1.0.0 +Size: 12 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 12 kB +Pss: 0 kB +Shared_Clean: 12 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 12 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b4cb4000-7f53b4cbc000 r-xp 00003000 fd:00 793036 /usr/lib/x86_64-linux-gnu/libaudit.so.1.0.0 +Size: 32 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 32 kB +Pss: 2 kB +Shared_Clean: 32 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 32 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd ex mr mw me sd +7f53b4cbc000-7f53b4cd0000 r--p 0000b000 fd:00 793036 /usr/lib/x86_64-linux-gnu/libaudit.so.1.0.0 +Size: 80 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 60 kB +Pss: 36 kB +Shared_Clean: 32 kB +Shared_Dirty: 0 kB +Private_Clean: 28 kB +Private_Dirty: 0 kB +Referenced: 60 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b4cd0000-7f53b4cd1000 ---p 0001f000 fd:00 793036 /usr/lib/x86_64-linux-gnu/libaudit.so.1.0.0 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 0 kB +Pss: 0 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 0 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: mr mw me sd +7f53b4cd1000-7f53b4cd2000 r--p 0001f000 fd:00 793036 /usr/lib/x86_64-linux-gnu/libaudit.so.1.0.0 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me ac sd +7f53b4cd2000-7f53b4cd3000 rw-p 00020000 fd:00 793036 /usr/lib/x86_64-linux-gnu/libaudit.so.1.0.0 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 4 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 4 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b4cd3000-7f53b4cdf000 rw-p 00000000 00:00 0 +Size: 48 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 12 kB +Pss: 10 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 8 kB +Referenced: 12 kB +Anonymous: 12 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b4cdf000-7f53b4ce2000 r--p 00000000 fd:00 793193 /usr/lib/x86_64-linux-gnu/libpam.so.0.84.2 +Size: 12 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 12 kB +Pss: 0 kB +Shared_Clean: 12 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 12 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b4ce2000-7f53b4ceb000 r-xp 00003000 fd:00 793193 /usr/lib/x86_64-linux-gnu/libpam.so.0.84.2 +Size: 36 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 32 kB +Pss: 2 kB +Shared_Clean: 32 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 32 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd ex mr mw me sd +7f53b4ceb000-7f53b4cef000 r--p 0000c000 fd:00 793193 /usr/lib/x86_64-linux-gnu/libpam.so.0.84.2 +Size: 16 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 0 kB +Pss: 0 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 0 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b4cef000-7f53b4cf0000 r--p 0000f000 fd:00 793193 /usr/lib/x86_64-linux-gnu/libpam.so.0.84.2 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me ac sd +7f53b4cf0000-7f53b4cf1000 rw-p 00010000 fd:00 793193 /usr/lib/x86_64-linux-gnu/libpam.so.0.84.2 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 4 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 4 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b4cf1000-7f53b4cfb000 r--p 00000000 fd:00 793163 /usr/lib/x86_64-linux-gnu/libmount.so.1.1.0 +Size: 40 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 40 kB +Pss: 3 kB +Shared_Clean: 40 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 40 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b4cfb000-7f53b4d39000 r-xp 0000a000 fd:00 793163 /usr/lib/x86_64-linux-gnu/libmount.so.1.1.0 +Size: 248 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 208 kB +Pss: 78 kB +Shared_Clean: 208 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 208 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd ex mr mw me sd +7f53b4d39000-7f53b4d4c000 r--p 00048000 fd:00 793163 /usr/lib/x86_64-linux-gnu/libmount.so.1.1.0 +Size: 76 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 60 kB +Pss: 30 kB +Shared_Clean: 60 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 60 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b4d4c000-7f53b4d4e000 r--p 0005a000 fd:00 793163 /usr/lib/x86_64-linux-gnu/libmount.so.1.1.0 +Size: 8 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 8 kB +Pss: 4 kB +Shared_Clean: 0 kB +Shared_Dirty: 8 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 8 kB +Anonymous: 8 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me ac sd +7f53b4d4e000-7f53b4d4f000 rw-p 0005c000 fd:00 793163 /usr/lib/x86_64-linux-gnu/libmount.so.1.1.0 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b4d4f000-7f53b4d55000 r--p 00000000 fd:00 793228 /usr/lib/x86_64-linux-gnu/libselinux.so.1 +Size: 24 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 24 kB +Pss: 1 kB +Shared_Clean: 24 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 24 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b4d55000-7f53b4d6e000 r-xp 00006000 fd:00 793228 /usr/lib/x86_64-linux-gnu/libselinux.so.1 +Size: 100 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 100 kB +Pss: 14 kB +Shared_Clean: 100 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 100 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd ex mr mw me sd +7f53b4d6e000-7f53b4d76000 r--p 0001f000 fd:00 793228 /usr/lib/x86_64-linux-gnu/libselinux.so.1 +Size: 32 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 32 kB +Pss: 1 kB +Shared_Clean: 32 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 32 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b4d76000-7f53b4d77000 r--p 00026000 fd:00 793228 /usr/lib/x86_64-linux-gnu/libselinux.so.1 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me ac sd +7f53b4d77000-7f53b4d78000 rw-p 00027000 fd:00 793228 /usr/lib/x86_64-linux-gnu/libselinux.so.1 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b4d78000-7f53b4d7a000 rw-p 00000000 00:00 0 +Size: 8 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 8 kB +Pss: 4 kB +Shared_Clean: 0 kB +Shared_Dirty: 8 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 8 kB +Anonymous: 8 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b4d7a000-7f53b4da2000 r--p 00000000 fd:00 793227 /usr/lib/x86_64-linux-gnu/libseccomp.so.2.4.3 +Size: 160 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 160 kB +Pss: 22 kB +Shared_Clean: 160 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 160 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b4da2000-7f53b4dad000 r-xp 00028000 fd:00 793227 /usr/lib/x86_64-linux-gnu/libseccomp.so.2.4.3 +Size: 44 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 44 kB +Pss: 6 kB +Shared_Clean: 44 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 44 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd ex mr mw me sd +7f53b4dad000-7f53b4db1000 r--p 00033000 fd:00 793227 /usr/lib/x86_64-linux-gnu/libseccomp.so.2.4.3 +Size: 16 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 16 kB +Pss: 16 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 16 kB +Private_Dirty: 0 kB +Referenced: 16 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b4db1000-7f53b4dcc000 r--p 00036000 fd:00 793227 /usr/lib/x86_64-linux-gnu/libseccomp.so.2.4.3 +Size: 108 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 108 kB +Pss: 54 kB +Shared_Clean: 0 kB +Shared_Dirty: 108 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 108 kB +Anonymous: 108 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me ac sd +7f53b4dcc000-7f53b4dcd000 rw-p 00051000 fd:00 793227 /usr/lib/x86_64-linux-gnu/libseccomp.so.2.4.3 +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b4dcd000-7f53b4dd0000 r--p 00000000 fd:00 793224 /usr/lib/x86_64-linux-gnu/librt-2.32.so +Size: 12 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 12 kB +Pss: 0 kB +Shared_Clean: 12 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 12 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b4dd0000-7f53b4dd4000 r-xp 00003000 fd:00 793224 /usr/lib/x86_64-linux-gnu/librt-2.32.so +Size: 16 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 16 kB +Pss: 0 kB +Shared_Clean: 16 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 16 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd ex mr mw me sd +7f53b4dd4000-7f53b4dd6000 r--p 00007000 fd:00 793224 /usr/lib/x86_64-linux-gnu/librt-2.32.so +Size: 8 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 0 kB +Pss: 0 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 0 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b4dd6000-7f53b4dd7000 r--p 00008000 fd:00 793224 /usr/lib/x86_64-linux-gnu/librt-2.32.so +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me ac sd +7f53b4dd7000-7f53b4dd8000 rw-p 00009000 fd:00 793224 /usr/lib/x86_64-linux-gnu/librt-2.32.so +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b4ddf000-7f53b4e29000 r--p 00000000 fd:00 798124 /usr/lib/systemd/libsystemd-shared-246.so +Size: 296 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 296 kB +Pss: 42 kB +Shared_Clean: 296 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 296 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b4e29000-7f53b4fac000 r-xp 0004a000 fd:00 798124 /usr/lib/systemd/libsystemd-shared-246.so +Size: 1548 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 1416 kB +Pss: 286 kB +Shared_Clean: 1416 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 1416 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd ex mr mw me sd +7f53b4fac000-7f53b503f000 r--p 001cd000 fd:00 798124 /usr/lib/systemd/libsystemd-shared-246.so +Size: 588 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 336 kB +Pss: 53 kB +Shared_Clean: 336 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 336 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me sd +7f53b503f000-7f53b5040000 ---p 00260000 fd:00 798124 /usr/lib/systemd/libsystemd-shared-246.so +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 0 kB +Pss: 0 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 0 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: mr mw me sd +7f53b5040000-7f53b5050000 r--p 00260000 fd:00 798124 /usr/lib/systemd/libsystemd-shared-246.so +Size: 64 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 64 kB +Pss: 32 kB +Shared_Clean: 0 kB +Shared_Dirty: 64 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 64 kB +Anonymous: 64 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me ac sd +7f53b5050000-7f53b5051000 rw-p 00270000 fd:00 798124 /usr/lib/systemd/libsystemd-shared-246.so +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 4 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 4 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b5051000-7f53b5054000 rw-p 00000000 00:00 0 +Size: 12 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 12 kB +Pss: 12 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 12 kB +Referenced: 12 kB +Anonymous: 12 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me ac sd +7f53b5054000-7f53b5055000 r--p 00000000 fd:00 793013 /usr/lib/x86_64-linux-gnu/ld-2.32.so +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 0 kB +Shared_Clean: 4 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me dw sd +7f53b5055000-7f53b5079000 r-xp 00001000 fd:00 793013 /usr/lib/x86_64-linux-gnu/ld-2.32.so +Size: 144 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 144 kB +Pss: 4 kB +Shared_Clean: 144 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 144 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd ex mr mw me dw sd +7f53b5079000-7f53b5082000 r--p 00025000 fd:00 793013 /usr/lib/x86_64-linux-gnu/ld-2.32.so +Size: 36 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 32 kB +Pss: 1 kB +Shared_Clean: 32 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 32 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me dw sd +7f53b5082000-7f53b5083000 r--p 0002d000 fd:00 793013 /usr/lib/x86_64-linux-gnu/ld-2.32.so +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 2 kB +Shared_Clean: 0 kB +Shared_Dirty: 4 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 4 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr mw me dw ac sd +7f53b5083000-7f53b5085000 rw-p 0002e000 fd:00 793013 /usr/lib/x86_64-linux-gnu/ld-2.32.so +Size: 8 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 8 kB +Pss: 8 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 8 kB +Referenced: 8 kB +Anonymous: 8 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me dw ac sd +7ffd1b23e000-7ffd1b340000 rw-p 00000000 00:00 0 [stack] +Size: 1032 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 1032 kB +Pss: 1032 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 1032 kB +Referenced: 1032 kB +Anonymous: 1032 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd wr mr mw me gd ac +7ffd1b3b1000-7ffd1b3b5000 r--p 00000000 00:00 0 [vvar] +Size: 16 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 0 kB +Pss: 0 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 0 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd mr pf io de dd sd +7ffd1b3b5000-7ffd1b3b7000 r-xp 00000000 00:00 0 [vdso] +Size: 8 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 4 kB +Pss: 0 kB +Shared_Clean: 4 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 4 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: rd ex mr mw me de sd +ffffffffff600000-ffffffffff601000 --xp 00000000 00:00 0 [vsyscall] +Size: 4 kB +KernelPageSize: 4 kB +MMUPageSize: 4 kB +Rss: 0 kB +Pss: 0 kB +Shared_Clean: 0 kB +Shared_Dirty: 0 kB +Private_Clean: 0 kB +Private_Dirty: 0 kB +Referenced: 0 kB +Anonymous: 0 kB +LazyFree: 0 kB +AnonHugePages: 0 kB +ShmemPmdMapped: 0 kB +FilePmdMapped: 0 kB +Shared_Hugetlb: 0 kB +Private_Hugetlb: 0 kB +Swap: 0 kB +SwapPss: 0 kB +Locked: 0 kB +THPeligible: 0 +VmFlags: ex diff --git a/tests/fixtures/linux-proc/pid_stat b/tests/fixtures/linux-proc/pid_stat new file mode 100644 index 00000000..d15a749a --- /dev/null +++ b/tests/fixtures/linux-proc/pid_stat @@ -0,0 +1 @@ +1 (systemd) S 0 1 1 0 -1 4194560 23478 350218 99 472 107 461 2672 4402 20 0 1 0 128 174063616 3313 18446744073709551615 94188219072512 94188219899461 140725059845296 0 0 0 671173123 4096 1260 1 0 0 17 0 0 0 18 0 0 94188220274448 94188220555504 94188243599360 140725059845923 140725059845934 140725059845934 140725059846125 0 diff --git a/tests/fixtures/linux-proc/pid_statm b/tests/fixtures/linux-proc/pid_statm new file mode 100644 index 00000000..30634865 --- /dev/null +++ b/tests/fixtures/linux-proc/pid_statm @@ -0,0 +1 @@ +42496 3313 2169 202 0 5180 0 diff --git a/tests/fixtures/linux-proc/pid_status b/tests/fixtures/linux-proc/pid_status new file mode 100644 index 00000000..a7f7a6cb --- /dev/null +++ b/tests/fixtures/linux-proc/pid_status @@ -0,0 +1,56 @@ +Name: systemd +Umask: 0000 +State: S (sleeping) +Tgid: 1 +Ngid: 0 +Pid: 1 +PPid: 0 +TracerPid: 0 +Uid: 0 0 0 0 +Gid: 0 0 0 0 +FDSize: 128 +Groups: +NStgid: 1 +NSpid: 1 +NSpgid: 1 +NSsid: 1 +VmPeak: 235380 kB +VmSize: 169984 kB +VmLck: 0 kB +VmPin: 0 kB +VmHWM: 13252 kB +VmRSS: 13252 kB +RssAnon: 4576 kB +RssFile: 8676 kB +RssShmem: 0 kB +VmData: 19688 kB +VmStk: 1032 kB +VmExe: 808 kB +VmLib: 9772 kB +VmPTE: 96 kB +VmSwap: 0 kB +HugetlbPages: 0 kB +CoreDumping: 0 +THP_enabled: 1 +Threads: 1 +SigQ: 0/15245 +SigPnd: 0000000000000000 +ShdPnd: 0000000000000000 +SigBlk: 7be3c0fe28014a03 +SigIgn: 0000000000001000 +SigCgt: 00000001800004ec +CapInh: 0000000000000000 +CapPrm: 000000ffffffffff +CapEff: 000000ffffffffff +CapBnd: 000000ffffffffff +CapAmb: 0000000000000000 +NoNewPrivs: 0 +Seccomp: 0 +Speculation_Store_Bypass: thread vulnerable +Cpus_allowed: ffffffff,ffffffff,ffffffff,ffffffff +Cpus_allowed_list: 0-127 +Mems_allowed: 00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001 +Mems_allowed_list: 0 +voluntary_ctxt_switches: 1856 +nonvoluntary_ctxt_switches: 6620 + diff --git a/tests/fixtures/linux-proc/scsi_device_info b/tests/fixtures/linux-proc/scsi_device_info new file mode 100644 index 00000000..396f3670 --- /dev/null +++ b/tests/fixtures/linux-proc/scsi_device_info @@ -0,0 +1,181 @@ +'Aashima' 'IMAGERY 2400SP' 0x1 +'CHINON' 'CD-ROM CDS-431' 0x1 +'CHINON' 'CD-ROM CDS-535' 0x1 +'DENON' 'DRD-25X' 0x1 +'HITACHI' 'DK312C' 0x1 +'HITACHI' 'DK314C' 0x1 +'IBM' '2104-DU3' 0x1 +'IBM' '2104-TU3' 0x1 +'IMS' 'CDD521/10' 0x1 +'MAXTOR' 'XT-3280' 0x1 +'MAXTOR' 'XT-4380S' 0x1 +'MAXTOR' 'MXT-1240S' 0x1 +'MAXTOR' 'XT-4170S' 0x1 +'MAXTOR' 'XT-8760S' 0x1 +'MEDIAVIS' 'RENO CD-ROMX2A' 0x1 +'MICROTEK' 'ScanMakerIII' 0x1 +'NEC' 'CD-ROM DRIVE:841' 0x1 +'PHILIPS' 'PCA80SC' 0x1 +'RODIME' 'RO3000S' 0x1 +'SUN' 'SENA' 0x1 +'SANYO' 'CRD-250S' 0x1 +'SEAGATE' 'ST157N' 0x1 +'SEAGATE' 'ST296' 0x1 +'SEAGATE' 'ST1581' 0x1 +'SONY' 'CD-ROM CDU-541' 0x1 +'SONY' 'CD-ROM CDU-55S' 0x1 +'SONY' 'CD-ROM CDU-561' 0x1 +'SONY' 'CD-ROM CDU-8012' 0x1 +'SONY' 'SDT-5000' 0x200000 +'TANDBERG' 'TDC 3600' 0x1 +'TEAC' 'CD-R55S' 0x1 +'TEAC' 'CD-ROM' 0x1 +'TEAC' 'MT-2ST/45S2-27' 0x1 +'HP' 'C1750A' 0x1 +'HP' 'C1790A' 0x1 +'HP' 'C2500A' 0x1 +'MEDIAVIS' 'CDR-H93MV' 0x1 +'MICROTEK' 'ScanMaker II' 0x1 +'MITSUMI' 'CD-R CR-2201CS' 0x1 +'NEC' 'D3856' 0x1 +'QUANTUM' 'LPS525S' 0x1 +'QUANTUM' 'PD1225S' 0x1 +'QUANTUM' 'FIREBALL ST4.3S' 0x1 +'RELISYS' 'Scorpio' 0x1 +'SANKYO' 'CP525' 0x1 +'TEXEL' 'CD-ROM' 0x5 +'transtec' 'T5008' 0x40000 +'YAMAHA' 'CDR100' 0x1 +'YAMAHA' 'CDR102' 0x1 +'YAMAHA' 'CRW8424S' 0x1 +'YAMAHA' 'CRW6416S' 0x1 +'' 'Scanner' 0x1 +'3PARdata' 'VV' 0x20000 +'ADAPTEC' 'AACRAID' 0x2 +'ADAPTEC' 'Adaptec 5400S' 0x2 +'AIX' 'VDASD' 0x10000000 +'AFT PRO' '-IX CF' 0x2 +'BELKIN' 'USB 2 HS-CF' 0x402 +'BROWNIE' '1200U3P' 0x40000 +'BROWNIE' '1600U3P' 0x40000 +'CANON' 'IPUBJD' 0x40 +'CBOX3' 'USB Storage-SMC' 0x402 +'CMD' 'CRA-7280' 0x40 +'CNSI' 'G7324' 0x40 +'CNSi' 'G8324' 0x40 +'COMPAQ' 'ARRAY CONTROLLER' 0x820240 +'COMPAQ' 'LOGICAL VOLUME' 0x800002 +'COMPAQ' 'CR3500' 0x2 +'COMPAQ' 'MSA1000' 0x1040 +'COMPAQ' 'MSA1000 VOLUME' 0x1040 +'COMPAQ' 'HSV110' 0x21000 +'DDN' 'SAN DataDirector' 0x40 +'DEC' 'HSG80' 0x21000 +'DELL' 'PV660F' 0x40 +'DELL' 'PV660F PSEUDO' 0x40 +'DELL' 'PSEUDO DEVICE .' 0x40 +'DELL' 'PV530F' 0x40 +'DELL' 'PERCRAID' 0x2 +'DGC' 'RAID' 0x40 +'DGC' 'DISK' 0x40 +'EMC' 'Invista' 0x240 +'EMC' 'SYMMETRIX' 0x100020240 +'EMULEX' 'MD21/S2 ESDI' 0x10 +'easyRAID' '16P' 0x40000 +'easyRAID' 'X6P' 0x40000 +'easyRAID' 'F8' 0x40000 +'FSC' 'CentricStor' 0x240 +'FUJITSU' 'ETERNUS_DXM' 0x200000000 +'Generic' 'USB SD Reader' 0x402 +'Generic' 'USB Storage-SMC' 0x402 +'HITACHI' 'DF400' 0x20000 +'HITACHI' 'DF500' 0x20000 +'HITACHI' 'DISK-SUBSYSTEM' 0x20000 +'HITACHI' 'HUS1530' 0x2000000 +'HITACHI' 'OPEN-' 0x10020000 +'HP' 'A6189A' 0x240 +'HP' 'OPEN-' 0x10020000 +'HP' 'NetRAID-4M' 0x2 +'HP' 'HSV100' 0x21000 +'HP' 'C1557A' 0x2 +'HP' 'C3323-300' 0x20 +'HP' 'C5713A' 0x40000 +'HP' 'DISK-SUBSYSTEM' 0x20000 +'IBM' 'AuSaV1S2' 0x2 +'IBM' 'ProFibre 4000R' 0x240 +'IBM' '2105' 0x400000 +'iomega' 'jaz 1GB' 0x21 +'IOMEGA' 'ZIP' 0x21 +'IOMEGA' 'Io20S *F' 0x8 +'INSITE' 'Floptical F*8I' 0x8 +'INSITE' 'I325VM' 0x8 +'Intel' 'Multi-Flex' 0x20000000 +'iRiver' 'iFP Mass Driver' 0x80400 +'LASOUND' 'CDX7405' 0x90 +'Marvell' 'Console' 0x4000000 +'Marvell' '91xx Config' 0x4000000 +'MATSHITA' 'PD-1' 0x12 +'MATSHITA' 'DMC-LC5' 0x80400 +'MATSHITA' 'DMC-LC40' 0x80400 +'Medion' 'Flash XL MMC/SD' 0x2 +'MegaRAID' 'LD' 0x2 +'MICROP' '4110' 0x20 +'MSFT' 'Virtual HD' 0x60000000 +'MYLEX' 'DACARMRB' 0x20000 +'nCipher' 'Fastness Crypto' 0x2 +'NAKAMICH' 'MJ-4.8S' 0x12 +'NAKAMICH' 'MJ-5.16S' 0x12 +'NEC' 'PD-1 ODX654P' 0x12 +'NEC' 'iStorage' 0x20000 +'NRC' 'MBR-7' 0x12 +'NRC' 'MBR-7.4' 0x12 +'PIONEER' 'CD-ROM DRM-600' 0x12 +'PIONEER' 'CD-ROM DRM-602X' 0x12 +'PIONEER' 'CD-ROM DRM-604X' 0x12 +'PIONEER' 'CD-ROM DRM-624X' 0x12 +'Promise' 'VTrak E610f' 0x20000040 +'Promise' '' 0x40 +'QEMU' 'QEMU CD-ROM' 0x4000000 +'QNAP' 'iSCSI Storage' 0x40000000 +'SYNOLOGY' 'iSCSI Storage' 0x40000000 +'QUANTUM' 'XP34301' 0x20 +'REGAL' 'CDC-4X' 0x90 +'SanDisk' 'ImageMate CF-SD1' 0x2 +'SEAGATE' 'ST34555N' 0x20 +'SEAGATE' 'ST3390N' 0x20 +'SEAGATE' 'ST900MM0006' 0x4000000 +'SGI' 'RAID3' 0x40 +'SGI' 'RAID5' 0x40 +'SGI' 'TP9100' 0x20000 +'SGI' 'Universal Xport' 0x100000 +'IBM' 'Universal Xport' 0x100000 +'SUN' 'Universal Xport' 0x100000 +'DELL' 'Universal Xport' 0x100000 +'STK' 'Universal Xport' 0x100000 +'NETAPP' 'Universal Xport' 0x100000 +'LSI' 'Universal Xport' 0x100000 +'ENGENIO' 'Universal Xport' 0x100000 +'LENOVO' 'Universal Xport' 0x100000 +'FUJITSU' 'Universal Xport' 0x100000 +'SanDisk' 'Cruzer Blade' 0x10000400 +'SMSC' 'USB 2 HS-CF' 0x440 +'SONY' 'CD-ROM CDU-8001' 0x4 +'SONY' 'TSL' 0x2 +'ST650211' 'CF' 0x400000 +'SUN' 'T300' 0x40 +'SUN' 'T4' 0x40 +'Tornado-' 'F4' 0x40000 +'TOSHIBA' 'CDROM' 0x100 +'TOSHIBA' 'CD-ROM' 0x100 +'Traxdata' 'CDR4120' 0x1 +'USB2.0' 'SMARTMEDIA/XD' 0x402 +'WangDAT' 'Model 2600' 0x200000 +'WangDAT' 'Model 3200' 0x200000 +'WangDAT' 'Model 1300' 0x200000 +'WDC WD25' '00JB-00FUA0' 0x40000 +'XYRATEX' 'RS' 0x240 +'Zzyzx' 'RocketStor 500S' 0x40 +'Zzyzx' 'RocketStor 2000' 0x40 +[SCSI Parallel Transport Class]: +'HP' 'Ultrium 3-SCSI' 0x1 +'IBM' 'ULTRIUM-TD3' 0x1 diff --git a/tests/fixtures/linux-proc/scsi_scsi b/tests/fixtures/linux-proc/scsi_scsi new file mode 100644 index 00000000..83dbcf33 --- /dev/null +++ b/tests/fixtures/linux-proc/scsi_scsi @@ -0,0 +1,7 @@ +Attached devices: +Host: scsi0 Channel: 00 Id: 00 Lun: 00 + Vendor: IBM Model: DGHS09U Rev: 03E0 + Type: Direct-Access ANSI SCSI revision: 03 +Host: scsi0 Channel: 00 Id: 06 Lun: 00 + Vendor: PIONEER Model: CD-ROM DR-U06S Rev: 1.04 + Type: CD-ROM ANSI SCSI revision: 02 diff --git a/tests/fixtures/linux-proc/slabinfo b/tests/fixtures/linux-proc/slabinfo new file mode 100644 index 00000000..a78d8dab --- /dev/null +++ b/tests/fixtures/linux-proc/slabinfo @@ -0,0 +1,147 @@ +slabinfo - version: 2.1 +# name : tunables : slabdata +ext4_groupinfo_4k 224 224 144 56 2 : tunables 0 0 0 : slabdata 4 4 0 +btrfs_delayed_node 0 0 312 52 4 : tunables 0 0 0 : slabdata 0 0 0 +btrfs_ordered_extent 0 0 416 39 4 : tunables 0 0 0 : slabdata 0 0 0 +btrfs_inode 0 0 1184 27 8 : tunables 0 0 0 : slabdata 0 0 0 +fsverity_info 0 0 256 64 4 : tunables 0 0 0 : slabdata 0 0 0 +MPTCPv6 0 0 1856 17 8 : tunables 0 0 0 : slabdata 0 0 0 +ip6-frags 0 0 184 44 2 : tunables 0 0 0 : slabdata 0 0 0 +PINGv6 104 104 1216 26 8 : tunables 0 0 0 : slabdata 4 4 0 +RAWv6 312 312 1216 26 8 : tunables 0 0 0 : slabdata 12 12 0 +UDPv6 96 96 1344 24 8 : tunables 0 0 0 : slabdata 4 4 0 +tw_sock_TCPv6 0 0 248 66 4 : tunables 0 0 0 : slabdata 0 0 0 +request_sock_TCPv6 0 0 304 53 4 : tunables 0 0 0 : slabdata 0 0 0 +TCPv6 26 26 2432 13 8 : tunables 0 0 0 : slabdata 2 2 0 +kcopyd_job 0 0 3312 9 8 : tunables 0 0 0 : slabdata 0 0 0 +dm_uevent 0 0 2888 11 8 : tunables 0 0 0 : slabdata 0 0 0 +scsi_sense_cache 1472 1472 128 64 2 : tunables 0 0 0 : slabdata 23 23 0 +mqueue_inode_cache 34 34 960 34 8 : tunables 0 0 0 : slabdata 1 1 0 +fuse_inode 0 0 832 39 8 : tunables 0 0 0 : slabdata 0 0 0 +ecryptfs_key_record_cache 0 0 576 56 8 : tunables 0 0 0 : slabdata 0 0 0 +ecryptfs_inode_cache 0 0 1024 32 8 : tunables 0 0 0 : slabdata 0 0 0 +ecryptfs_file_cache 0 0 16 256 1 : tunables 0 0 0 : slabdata 0 0 0 +ecryptfs_auth_tok_list_item 0 0 832 39 8 : tunables 0 0 0 : slabdata 0 0 0 +fat_inode_cache 0 0 744 44 8 : tunables 0 0 0 : slabdata 0 0 0 +fat_cache 0 0 40 102 1 : tunables 0 0 0 : slabdata 0 0 0 +squashfs_inode_cache 363 552 704 46 8 : tunables 0 0 0 : slabdata 12 12 0 +jbd2_journal_head 952 952 120 68 2 : tunables 0 0 0 : slabdata 14 14 0 +jbd2_revoke_table_s 512 512 16 256 1 : tunables 0 0 0 : slabdata 2 2 0 +ext4_inode_cache 14466 15573 1096 29 8 : tunables 0 0 0 : slabdata 537 537 0 +ext4_allocation_context 128 128 128 64 2 : tunables 0 0 0 : slabdata 2 2 0 +ext4_io_end 128 128 64 64 1 : tunables 0 0 0 : slabdata 2 2 0 +ext4_pending_reservation 256 256 32 128 1 : tunables 0 0 0 : slabdata 2 2 0 +ext4_extent_status 4590 4590 40 102 1 : tunables 0 0 0 : slabdata 45 45 0 +mbcache 146 146 56 73 1 : tunables 0 0 0 : slabdata 2 2 0 +userfaultfd_ctx_cache 0 0 192 42 2 : tunables 0 0 0 : slabdata 0 0 0 +dnotify_struct 0 0 32 128 1 : tunables 0 0 0 : slabdata 0 0 0 +pid_namespace 0 0 144 56 2 : tunables 0 0 0 : slabdata 0 0 0 +ip4-frags 0 0 200 40 2 : tunables 0 0 0 : slabdata 0 0 0 +MPTCP 0 0 1664 19 8 : tunables 0 0 0 : slabdata 0 0 0 +request_sock_subflow 0 0 360 45 4 : tunables 0 0 0 : slabdata 0 0 0 +xfrm_state 0 0 768 42 8 : tunables 0 0 0 : slabdata 0 0 0 +PING 2080 2080 1024 32 8 : tunables 0 0 0 : slabdata 65 65 0 +RAW 512 512 1024 32 8 : tunables 0 0 0 : slabdata 16 16 0 +tw_sock_TCP 66 66 248 66 4 : tunables 0 0 0 : slabdata 1 1 0 +request_sock_TCP 53 53 304 53 4 : tunables 0 0 0 : slabdata 1 1 0 +TCP 56 56 2240 14 8 : tunables 0 0 0 : slabdata 4 4 0 +hugetlbfs_inode_cache 102 102 632 51 8 : tunables 0 0 0 : slabdata 2 2 0 +dquot 128 128 256 64 4 : tunables 0 0 0 : slabdata 2 2 0 +eventpoll_pwq 1792 1792 72 56 1 : tunables 0 0 0 : slabdata 32 32 0 +dax_cache 42 42 768 42 8 : tunables 0 0 0 : slabdata 1 1 0 +bio_crypt_ctx 306 306 40 102 1 : tunables 0 0 0 : slabdata 3 3 0 +request_queue 30 30 2096 15 8 : tunables 0 0 0 : slabdata 2 2 0 +biovec-max 114 120 4096 8 8 : tunables 0 0 0 : slabdata 15 15 0 +biovec-128 32 32 2048 16 8 : tunables 0 0 0 : slabdata 2 2 0 +biovec-64 64 64 1024 32 8 : tunables 0 0 0 : slabdata 2 2 0 +khugepaged_mm_slot 36 36 112 36 1 : tunables 0 0 0 : slabdata 1 1 0 +user_namespace 60 60 544 60 8 : tunables 0 0 0 : slabdata 1 1 0 +dmaengine-unmap-256 15 15 2112 15 8 : tunables 0 0 0 : slabdata 1 1 0 +dmaengine-unmap-128 30 30 1088 30 8 : tunables 0 0 0 : slabdata 1 1 0 +sock_inode_cache 2847 2847 832 39 8 : tunables 0 0 0 : slabdata 73 73 0 +skbuff_ext_cache 84 84 192 42 2 : tunables 0 0 0 : slabdata 2 2 0 +skbuff_fclone_cache 128 128 512 64 8 : tunables 0 0 0 : slabdata 2 2 0 +skbuff_head_cache 4160 4416 256 64 4 : tunables 0 0 0 : slabdata 69 69 0 +file_lock_cache 74 74 216 37 2 : tunables 0 0 0 : slabdata 2 2 0 +file_lock_ctx 219 219 56 73 1 : tunables 0 0 0 : slabdata 3 3 0 +fsnotify_mark_connector 384 384 32 128 1 : tunables 0 0 0 : slabdata 3 3 0 +net_namespace 6 6 4992 6 8 : tunables 0 0 0 : slabdata 1 1 0 +task_delay_info 2958 2958 80 51 1 : tunables 0 0 0 : slabdata 58 58 0 +taskstats 92 92 352 46 4 : tunables 0 0 0 : slabdata 2 2 0 +proc_dir_entry 882 882 192 42 2 : tunables 0 0 0 : slabdata 21 21 0 +pde_opener 3366 3366 40 102 1 : tunables 0 0 0 : slabdata 33 33 0 +proc_inode_cache 51317 52752 680 48 8 : tunables 0 0 0 : slabdata 1099 1099 0 +seq_file 4760 4760 120 68 2 : tunables 0 0 0 : slabdata 70 70 0 +bdev_cache 78 78 832 39 8 : tunables 0 0 0 : slabdata 2 2 0 +shmem_inode_cache 2647 2970 720 45 8 : tunables 0 0 0 : slabdata 66 66 0 +kernfs_node_cache 115254 115904 128 64 2 : tunables 0 0 0 : slabdata 1811 1811 0 +mnt_cache 1251 1326 320 51 4 : tunables 0 0 0 : slabdata 26 26 0 +filp 19960 22464 256 64 4 : tunables 0 0 0 : slabdata 351 351 0 +inode_cache 137462 138754 608 53 8 : tunables 0 0 0 : slabdata 2618 2618 0 +dentry 205198 211008 192 42 2 : tunables 0 0 0 : slabdata 5024 5024 0 +names_cache 32 32 4096 8 8 : tunables 0 0 0 : slabdata 4 4 0 +iint_cache 0 0 120 68 2 : tunables 0 0 0 : slabdata 0 0 0 +lsm_file_cache 2040 2040 24 170 1 : tunables 0 0 0 : slabdata 12 12 0 +buffer_head 87912 89349 104 39 1 : tunables 0 0 0 : slabdata 2291 2291 0 +uts_namespace 74 74 440 37 4 : tunables 0 0 0 : slabdata 2 2 0 +vm_area_struct 19609 20124 208 39 2 : tunables 0 0 0 : slabdata 516 516 0 +mm_struct 1050 1050 1088 30 8 : tunables 0 0 0 : slabdata 35 35 0 +files_cache 1564 1564 704 46 8 : tunables 0 0 0 : slabdata 34 34 0 +signal_cache 1456 1456 1152 28 8 : tunables 0 0 0 : slabdata 52 52 0 +sighand_cache 847 885 2112 15 8 : tunables 0 0 0 : slabdata 59 59 0 +task_struct 698 770 6016 5 8 : tunables 0 0 0 : slabdata 154 154 0 +cred_jar 3864 3864 192 42 2 : tunables 0 0 0 : slabdata 92 92 0 +anon_vma_chain 19989 21376 64 64 1 : tunables 0 0 0 : slabdata 334 334 0 +anon_vma 11689 11914 88 46 1 : tunables 0 0 0 : slabdata 259 259 0 +pid 3456 3456 128 64 2 : tunables 0 0 0 : slabdata 54 54 0 +Acpi-Operand 10248 10248 72 56 1 : tunables 0 0 0 : slabdata 183 183 0 +Acpi-ParseExt 78 78 104 39 1 : tunables 0 0 0 : slabdata 2 2 0 +Acpi-State 408 408 80 51 1 : tunables 0 0 0 : slabdata 8 8 0 +numa_policy 186 186 264 62 4 : tunables 0 0 0 : slabdata 3 3 0 +trace_event_file 1748 1748 88 46 1 : tunables 0 0 0 : slabdata 38 38 0 +ftrace_event_field 12410 12410 48 85 1 : tunables 0 0 0 : slabdata 146 146 0 +pool_workqueue 768 768 256 64 4 : tunables 0 0 0 : slabdata 12 12 0 +radix_tree_node 10063 12040 584 56 8 : tunables 0 0 0 : slabdata 215 215 0 +task_group 204 204 640 51 8 : tunables 0 0 0 : slabdata 4 4 0 +vmap_area 2929 3264 64 64 1 : tunables 0 0 0 : slabdata 51 51 0 +dma-kmalloc-8k 0 0 8192 4 8 : tunables 0 0 0 : slabdata 0 0 0 +dma-kmalloc-4k 0 0 4096 8 8 : tunables 0 0 0 : slabdata 0 0 0 +dma-kmalloc-2k 0 0 2048 16 8 : tunables 0 0 0 : slabdata 0 0 0 +dma-kmalloc-1k 0 0 1024 32 8 : tunables 0 0 0 : slabdata 0 0 0 +dma-kmalloc-512 128 128 512 64 8 : tunables 0 0 0 : slabdata 2 2 0 +dma-kmalloc-256 0 0 256 64 4 : tunables 0 0 0 : slabdata 0 0 0 +dma-kmalloc-128 0 0 128 64 2 : tunables 0 0 0 : slabdata 0 0 0 +dma-kmalloc-64 0 0 64 64 1 : tunables 0 0 0 : slabdata 0 0 0 +dma-kmalloc-32 0 0 32 128 1 : tunables 0 0 0 : slabdata 0 0 0 +dma-kmalloc-16 0 0 16 256 1 : tunables 0 0 0 : slabdata 0 0 0 +dma-kmalloc-8 0 0 8 512 1 : tunables 0 0 0 : slabdata 0 0 0 +dma-kmalloc-192 0 0 192 42 2 : tunables 0 0 0 : slabdata 0 0 0 +dma-kmalloc-96 0 0 96 42 1 : tunables 0 0 0 : slabdata 0 0 0 +kmalloc-rcl-8k 0 0 8192 4 8 : tunables 0 0 0 : slabdata 0 0 0 +kmalloc-rcl-4k 0 0 4096 8 8 : tunables 0 0 0 : slabdata 0 0 0 +kmalloc-rcl-2k 0 0 2048 16 8 : tunables 0 0 0 : slabdata 0 0 0 +kmalloc-rcl-1k 0 0 1024 32 8 : tunables 0 0 0 : slabdata 0 0 0 +kmalloc-rcl-512 0 0 512 64 8 : tunables 0 0 0 : slabdata 0 0 0 +kmalloc-rcl-256 0 0 256 64 4 : tunables 0 0 0 : slabdata 0 0 0 +kmalloc-rcl-192 0 0 192 42 2 : tunables 0 0 0 : slabdata 0 0 0 +kmalloc-rcl-128 560 640 128 64 2 : tunables 0 0 0 : slabdata 10 10 0 +kmalloc-rcl-96 631 798 96 42 1 : tunables 0 0 0 : slabdata 19 19 0 +kmalloc-rcl-64 3894 4480 64 64 1 : tunables 0 0 0 : slabdata 70 70 0 +kmalloc-rcl-32 0 0 32 128 1 : tunables 0 0 0 : slabdata 0 0 0 +kmalloc-rcl-16 0 0 16 256 1 : tunables 0 0 0 : slabdata 0 0 0 +kmalloc-rcl-8 0 0 8 512 1 : tunables 0 0 0 : slabdata 0 0 0 +kmalloc-8k 127 136 8192 4 8 : tunables 0 0 0 : slabdata 34 34 0 +kmalloc-4k 2056 2056 4096 8 8 : tunables 0 0 0 : slabdata 257 257 0 +kmalloc-2k 2132 2192 2048 16 8 : tunables 0 0 0 : slabdata 137 137 0 +kmalloc-1k 3600 3840 1024 32 8 : tunables 0 0 0 : slabdata 120 120 0 +kmalloc-512 38846 39104 512 64 8 : tunables 0 0 0 : slabdata 611 611 0 +kmalloc-256 3648 3648 256 64 4 : tunables 0 0 0 : slabdata 57 57 0 +kmalloc-192 2688 2688 192 42 2 : tunables 0 0 0 : slabdata 64 64 0 +kmalloc-128 1664 1664 128 64 2 : tunables 0 0 0 : slabdata 26 26 0 +kmalloc-96 2142 2142 96 42 1 : tunables 0 0 0 : slabdata 51 51 0 +kmalloc-64 21435 21568 64 64 1 : tunables 0 0 0 : slabdata 337 337 0 +kmalloc-32 43520 43520 32 128 1 : tunables 0 0 0 : slabdata 340 340 0 +kmalloc-16 16640 16640 16 256 1 : tunables 0 0 0 : slabdata 65 65 0 +kmalloc-8 49152 49152 8 512 1 : tunables 0 0 0 : slabdata 96 96 0 +kmem_cache_node 1728 1728 64 64 1 : tunables 0 0 0 : slabdata 27 27 0 +kmem_cache 1728 1728 448 36 4 : tunables 0 0 0 : slabdata 48 48 0 diff --git a/tests/fixtures/linux-proc/softirqs b/tests/fixtures/linux-proc/softirqs new file mode 100644 index 00000000..08e2b577 --- /dev/null +++ b/tests/fixtures/linux-proc/softirqs @@ -0,0 +1,12 @@ + CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7 CPU8 CPU9 CPU10 CPU11 CPU12 CPU13 CPU14 CPU15 CPU16 CPU17 CPU18 CPU19 CPU20 CPU21 CPU22 CPU23 CPU24 CPU25 CPU26 CPU27 CPU28 CPU29 CPU30 CPU31 CPU32 CPU33 CPU34 CPU35 CPU36 CPU37 CPU38 CPU39 CPU40 CPU41 CPU42 CPU43 CPU44 CPU45 CPU46 CPU47 CPU48 CPU49 CPU50 CPU51 CPU52 CPU53 CPU54 CPU55 CPU56 CPU57 CPU58 CPU59 CPU60 CPU61 CPU62 CPU63 CPU64 CPU65 CPU66 CPU67 CPU68 CPU69 CPU70 CPU71 CPU72 CPU73 CPU74 CPU75 CPU76 CPU77 CPU78 CPU79 CPU80 CPU81 CPU82 CPU83 CPU84 CPU85 CPU86 CPU87 CPU88 CPU89 CPU90 CPU91 CPU92 CPU93 CPU94 CPU95 CPU96 CPU97 CPU98 CPU99 CPU100 CPU101 CPU102 CPU103 CPU104 CPU105 CPU106 CPU107 CPU108 CPU109 CPU110 CPU111 CPU112 CPU113 CPU114 CPU115 CPU116 CPU117 CPU118 CPU119 CPU120 CPU121 CPU122 CPU123 CPU124 CPU125 CPU126 CPU127 + HI: 1 34056 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + TIMER: 322970 888166 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + NET_TX: 2 3350 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + NET_RX: 61 128016 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + BLOCK: 22906 26865 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + IRQ_POLL: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + TASKLET: 47 166383 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + SCHED: 314955 885432 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + HRTIMER: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + RCU: 225923 352625 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + diff --git a/tests/fixtures/linux-proc/stat b/tests/fixtures/linux-proc/stat new file mode 100644 index 00000000..121c4297 --- /dev/null +++ b/tests/fixtures/linux-proc/stat @@ -0,0 +1,10 @@ +cpu 6002 152 8398 3444436 448 0 1174 0 0 0 +cpu0 2784 137 4367 1732802 225 0 221 0 0 0 +cpu1 3218 15 4031 1711634 223 0 953 0 0 0 +intr 2496709 18 73 0 0 0 0 0 0 1 0 0 0 18 0 0 0 4219 37341 423366 128490 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9063 2363 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +ctxt 4622716 +btime 1662154781 +processes 9831 +procs_running 1 +procs_blocked 0 +softirq 3478985 35230 1252057 3467 128583 51014 0 171199 1241297 0 596138 diff --git a/tests/fixtures/linux-proc/stat2 b/tests/fixtures/linux-proc/stat2 new file mode 100644 index 00000000..75bc5217 --- /dev/null +++ b/tests/fixtures/linux-proc/stat2 @@ -0,0 +1,24 @@ +cpu 259246 7001 60190 34250993 137517 772 0 +cpu0 259246 7001 60190 34250993 137517 772 0 +intr 354133732 347209999 2272 0 4 4 0 0 3 1 1249247 0 0 80143 0 422626 5169433 +ctxt 12547729 +btime 1093631447 +processes 130523 +procs_running 1 +procs_blocked 0 +preempt 5651840 +cpu 209841 1554 21720 118519346 72939 154 27168 +cpu0 42536 798 4841 14790880 14778 124 3117 +cpu1 24184 569 3875 14794524 30209 29 3130 +cpu2 28616 11 2182 14818198 4020 1 3493 +cpu3 35350 6 2942 14811519 3045 0 3659 +cpu4 18209 135 2263 14820076 12465 0 3373 +cpu5 20795 35 1866 14825701 4508 0 3615 +cpu6 21607 0 2201 14827053 2325 0 3334 +cpu7 18544 0 1550 14831395 1589 0 3447 +intr 15239682 14857833 6 0 6 6 0 5 0 1 0 0 0 29 0 2 0 0 0 0 0 0 0 94982 0 286812 +ctxt 4209609 +btime 1078711415 +processes 21905 +procs_running 1 +procs_blocked 0 diff --git a/tests/fixtures/linux-proc/swaps b/tests/fixtures/linux-proc/swaps new file mode 100644 index 00000000..718f7ca8 --- /dev/null +++ b/tests/fixtures/linux-proc/swaps @@ -0,0 +1,2 @@ +Filename Type Size Used Priority +/swap.img file 3996668 0 -2 diff --git a/tests/fixtures/linux-proc/uptime b/tests/fixtures/linux-proc/uptime new file mode 100644 index 00000000..0cee6713 --- /dev/null +++ b/tests/fixtures/linux-proc/uptime @@ -0,0 +1 @@ +46901.13 46856.66 diff --git a/tests/fixtures/linux-proc/version b/tests/fixtures/linux-proc/version new file mode 100644 index 00000000..b77808cf --- /dev/null +++ b/tests/fixtures/linux-proc/version @@ -0,0 +1 @@ +Linux version 5.8.0-63-generic (buildd@lcy01-amd64-028) (gcc (Ubuntu 10.3.0-1ubuntu1~20.10) 10.3.0, GNU ld (GNU Binutils for Ubuntu) 2.35.1) #71-Ubuntu SMP Tue Jul 13 15:59:12 UTC 2021 diff --git a/tests/fixtures/linux-proc/version2 b/tests/fixtures/linux-proc/version2 new file mode 100644 index 00000000..4f613af1 --- /dev/null +++ b/tests/fixtures/linux-proc/version2 @@ -0,0 +1 @@ +Linux version 3.10.0-1062.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Wed Aug 7 18:08:02 UTC 2019 diff --git a/tests/fixtures/linux-proc/version3 b/tests/fixtures/linux-proc/version3 new file mode 100644 index 00000000..68443109 --- /dev/null +++ b/tests/fixtures/linux-proc/version3 @@ -0,0 +1 @@ +Linux version 2.6.8-1.523 (user@foo.redhat.com) (gcc version 3.4.1 20040714 \ (Red Hat Enterprise Linux 3.4.1-7)) #1 Mon Aug 16 13:27:03 EDT 2004 diff --git a/tests/fixtures/linux-proc/vmallocinfo b/tests/fixtures/linux-proc/vmallocinfo new file mode 100644 index 00000000..4da4947b --- /dev/null +++ b/tests/fixtures/linux-proc/vmallocinfo @@ -0,0 +1,1362 @@ +0xffffb3c1c0000000-0xffffb3c1c0005000 20480 map_irq_stack+0x93/0xe0 vmap +0xffffb3c1c0005000-0xffffb3c1c0007000 8192 acpi_os_map_iomem+0x1ac/0x1c0 phys=0x00000000bfefe000 ioremap +0xffffb3c1c0007000-0xffffb3c1c0009000 8192 acpi_os_map_iomem+0x1ac/0x1c0 phys=0x00000000bfeff000 ioremap +0xffffb3c1c0009000-0xffffb3c1c000b000 8192 acpi_os_map_iomem+0x1ac/0x1c0 phys=0x00000000bfedc000 ioremap +0xffffb3c1c000b000-0xffffb3c1c000d000 8192 hpet_enable+0x37/0x2b8 phys=0x00000000fed00000 ioremap +0xffffb3c1c000d000-0xffffb3c1c000f000 8192 gen_pool_add_owner+0x42/0xc0 pages=1 vmalloc N0=1 +0xffffb3c1c0010000-0xffffb3c1c0015000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0015000-0xffffb3c1c0017000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0018000-0xffffb3c1c001d000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c001d000-0xffffb3c1c001f000 8192 gen_pool_add_owner+0x42/0xc0 pages=1 vmalloc N0=1 +0xffffb3c1c0020000-0xffffb3c1c0025000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0025000-0xffffb3c1c0027000 8192 gen_pool_add_owner+0x42/0xc0 pages=1 vmalloc N0=1 +0xffffb3c1c0028000-0xffffb3c1c002d000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c002d000-0xffffb3c1c002f000 8192 gen_pool_add_owner+0x42/0xc0 pages=1 vmalloc N0=1 +0xffffb3c1c0031000-0xffffb3c1c0035000 16384 n_tty_open+0x19/0xa0 pages=3 vmalloc N0=3 +0xffffb3c1c0035000-0xffffb3c1c0037000 8192 devm_ioremap+0x43/0x90 phys=0x00000000fd5ef000 ioremap +0xffffb3c1c0038000-0xffffb3c1c003d000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c003d000-0xffffb3c1c003f000 8192 acpi_os_map_iomem+0x1ac/0x1c0 phys=0x00000000fe800000 ioremap +0xffffb3c1c0040000-0xffffb3c1c0063000 143360 acpi_os_map_iomem+0x1ac/0x1c0 phys=0x00000000bfedd000 ioremap +0xffffb3c1c0069000-0xffffb3c1c006b000 8192 pci_iomap_range+0x6f/0xa0 phys=0x00000000fd5ee000 ioremap +0xffffb3c1c0071000-0xffffb3c1c0074000 12288 vmw_fb_init+0x1c3/0x3f0 [vmwgfx] pages=2 vmalloc N0=2 +0xffffb3c1c0074000-0xffffb3c1c0079000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0079000-0xffffb3c1c007b000 8192 dm_table_create+0x99/0x150 pages=1 vmalloc N0=1 +0xffffb3c1c007c000-0xffffb3c1c0081000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0081000-0xffffb3c1c0083000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0084000-0xffffb3c1c0089000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c008c000-0xffffb3c1c0091000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0091000-0xffffb3c1c0093000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0094000-0xffffb3c1c0099000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0099000-0xffffb3c1c009b000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c009c000-0xffffb3c1c00a1000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c00a1000-0xffffb3c1c00a3000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c00a4000-0xffffb3c1c00a9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c00a9000-0xffffb3c1c00ab000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c00ac000-0xffffb3c1c00b1000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c00b1000-0xffffb3c1c00b3000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c00b4000-0xffffb3c1c00b9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c00b9000-0xffffb3c1c00bb000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c00bc000-0xffffb3c1c00c1000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c00c1000-0xffffb3c1c00c3000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c00c4000-0xffffb3c1c00c9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c00c9000-0xffffb3c1c00cb000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c00cc000-0xffffb3c1c00d1000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c00d1000-0xffffb3c1c00d3000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c00d4000-0xffffb3c1c00d9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c00d9000-0xffffb3c1c00db000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c00dc000-0xffffb3c1c00e1000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c00e1000-0xffffb3c1c00e3000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c00e4000-0xffffb3c1c00e9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c00e9000-0xffffb3c1c00eb000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c00ec000-0xffffb3c1c00f1000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c00f1000-0xffffb3c1c00f3000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c00f4000-0xffffb3c1c00f9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c00f9000-0xffffb3c1c00fb000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c00fc000-0xffffb3c1c0101000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0101000-0xffffb3c1c0103000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0104000-0xffffb3c1c0109000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0109000-0xffffb3c1c010b000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c010c000-0xffffb3c1c0111000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0111000-0xffffb3c1c0113000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0114000-0xffffb3c1c0119000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0119000-0xffffb3c1c011b000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c011c000-0xffffb3c1c0121000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0121000-0xffffb3c1c0123000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0124000-0xffffb3c1c0129000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0129000-0xffffb3c1c012b000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c012c000-0xffffb3c1c0131000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0131000-0xffffb3c1c0133000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0134000-0xffffb3c1c0139000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0139000-0xffffb3c1c013b000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c013c000-0xffffb3c1c0141000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0141000-0xffffb3c1c0143000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0144000-0xffffb3c1c0149000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0149000-0xffffb3c1c014b000 8192 swap_cgroup_swapon+0x2d/0x150 pages=1 vmalloc N0=1 +0xffffb3c1c014c000-0xffffb3c1c0151000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0151000-0xffffb3c1c0153000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0154000-0xffffb3c1c0159000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0159000-0xffffb3c1c015b000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c015c000-0xffffb3c1c0161000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0161000-0xffffb3c1c0163000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0164000-0xffffb3c1c0169000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0169000-0xffffb3c1c016b000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c016c000-0xffffb3c1c0171000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0171000-0xffffb3c1c0173000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0174000-0xffffb3c1c0179000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0179000-0xffffb3c1c017b000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c017c000-0xffffb3c1c0181000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0181000-0xffffb3c1c0183000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0184000-0xffffb3c1c0189000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0189000-0xffffb3c1c018b000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c018c000-0xffffb3c1c0191000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0191000-0xffffb3c1c0193000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0194000-0xffffb3c1c0199000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0199000-0xffffb3c1c019b000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c019c000-0xffffb3c1c01a1000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c01a1000-0xffffb3c1c01a3000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c01a4000-0xffffb3c1c01a9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c01a9000-0xffffb3c1c01ab000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c01ac000-0xffffb3c1c01b1000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c01b1000-0xffffb3c1c01b3000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c01b4000-0xffffb3c1c01b9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c01b9000-0xffffb3c1c01bb000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c01bc000-0xffffb3c1c01c1000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c01c1000-0xffffb3c1c01c3000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c01c4000-0xffffb3c1c01c9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c01c9000-0xffffb3c1c01cb000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c01cc000-0xffffb3c1c01d1000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c01d1000-0xffffb3c1c01d3000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c01d4000-0xffffb3c1c01d9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c01d9000-0xffffb3c1c01db000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c01dc000-0xffffb3c1c01e1000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c01e1000-0xffffb3c1c01e3000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c01e4000-0xffffb3c1c01e9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c01e9000-0xffffb3c1c01eb000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c01ec000-0xffffb3c1c01f1000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c01f1000-0xffffb3c1c01f3000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c01f4000-0xffffb3c1c01f9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c01f9000-0xffffb3c1c01fb000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c01fc000-0xffffb3c1c0201000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0201000-0xffffb3c1c0203000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0204000-0xffffb3c1c0209000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0209000-0xffffb3c1c020b000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c020c000-0xffffb3c1c0211000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0211000-0xffffb3c1c0213000 8192 msix_capability_init+0xe0/0x470 phys=0x00000000febfe000 ioremap +0xffffb3c1c0214000-0xffffb3c1c0219000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0219000-0xffffb3c1c021b000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c021c000-0xffffb3c1c0221000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0221000-0xffffb3c1c0223000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0224000-0xffffb3c1c0229000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0229000-0xffffb3c1c022b000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c022c000-0xffffb3c1c0231000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0231000-0xffffb3c1c0233000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0234000-0xffffb3c1c0239000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0239000-0xffffb3c1c023b000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c023c000-0xffffb3c1c0241000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0241000-0xffffb3c1c0243000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0244000-0xffffb3c1c0249000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0249000-0xffffb3c1c024b000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c024c000-0xffffb3c1c0251000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0251000-0xffffb3c1c0253000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0254000-0xffffb3c1c0259000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0259000-0xffffb3c1c025b000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c025c000-0xffffb3c1c0261000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0261000-0xffffb3c1c0263000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0264000-0xffffb3c1c0269000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0269000-0xffffb3c1c026b000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c026c000-0xffffb3c1c0271000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0271000-0xffffb3c1c0273000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0274000-0xffffb3c1c0279000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0279000-0xffffb3c1c027b000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c027c000-0xffffb3c1c0281000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0281000-0xffffb3c1c0283000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0284000-0xffffb3c1c0289000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0289000-0xffffb3c1c028b000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c028c000-0xffffb3c1c0291000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0291000-0xffffb3c1c0293000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0294000-0xffffb3c1c0299000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0299000-0xffffb3c1c029b000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c029c000-0xffffb3c1c02a1000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c02a1000-0xffffb3c1c02a3000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c02a4000-0xffffb3c1c02a9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c02a9000-0xffffb3c1c02ab000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c02ac000-0xffffb3c1c02b1000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c02b1000-0xffffb3c1c02b3000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c02b4000-0xffffb3c1c02b9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c02b9000-0xffffb3c1c02bb000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c02bc000-0xffffb3c1c02c1000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c02c1000-0xffffb3c1c02c3000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c02c4000-0xffffb3c1c02c9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c02c9000-0xffffb3c1c02cb000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c02cc000-0xffffb3c1c02d1000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c02d1000-0xffffb3c1c02d3000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c02d4000-0xffffb3c1c02d9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c02d9000-0xffffb3c1c02db000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c02dc000-0xffffb3c1c02e1000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c02e1000-0xffffb3c1c02e3000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c02e4000-0xffffb3c1c02e9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c02e9000-0xffffb3c1c02eb000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c02ec000-0xffffb3c1c02f1000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c02f1000-0xffffb3c1c02f3000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c02f4000-0xffffb3c1c02f9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c02f9000-0xffffb3c1c02fb000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c02fc000-0xffffb3c1c0301000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0301000-0xffffb3c1c0303000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0304000-0xffffb3c1c0309000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0309000-0xffffb3c1c030b000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c030c000-0xffffb3c1c0311000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0311000-0xffffb3c1c0313000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0314000-0xffffb3c1c0319000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0319000-0xffffb3c1c031b000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c031c000-0xffffb3c1c0321000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0321000-0xffffb3c1c0323000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0324000-0xffffb3c1c0329000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0329000-0xffffb3c1c032b000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c032c000-0xffffb3c1c0331000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0331000-0xffffb3c1c0333000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0334000-0xffffb3c1c0339000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0339000-0xffffb3c1c033b000 8192 qp_alloc_queue.constprop.0+0x44/0x110 [vmw_vmci] pages=1 vmalloc N0=1 +0xffffb3c1c033c000-0xffffb3c1c0341000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0341000-0xffffb3c1c0343000 8192 qp_alloc_queue.constprop.0+0x44/0x110 [vmw_vmci] pages=1 vmalloc N0=1 +0xffffb3c1c0344000-0xffffb3c1c0349000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0349000-0xffffb3c1c034b000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c034c000-0xffffb3c1c0351000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0351000-0xffffb3c1c0353000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0354000-0xffffb3c1c0359000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0359000-0xffffb3c1c035b000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c035c000-0xffffb3c1c0361000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0361000-0xffffb3c1c0363000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0364000-0xffffb3c1c0369000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0369000-0xffffb3c1c036b000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c036c000-0xffffb3c1c0371000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0371000-0xffffb3c1c0373000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0374000-0xffffb3c1c0379000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0379000-0xffffb3c1c037b000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c037c000-0xffffb3c1c0381000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0381000-0xffffb3c1c0383000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0384000-0xffffb3c1c0389000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0389000-0xffffb3c1c038b000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c038c000-0xffffb3c1c0391000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0391000-0xffffb3c1c0393000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0394000-0xffffb3c1c0399000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0399000-0xffffb3c1c039b000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c039c000-0xffffb3c1c03a1000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c03a1000-0xffffb3c1c03a3000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c03a4000-0xffffb3c1c03a9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c03a9000-0xffffb3c1c03ab000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c03ac000-0xffffb3c1c03b1000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c03b1000-0xffffb3c1c03b3000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c03b4000-0xffffb3c1c03b9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c03b9000-0xffffb3c1c03bb000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c03bc000-0xffffb3c1c03c1000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c03c1000-0xffffb3c1c03c3000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c03c4000-0xffffb3c1c03c9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c03c9000-0xffffb3c1c03cb000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c03cc000-0xffffb3c1c03d1000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c03d1000-0xffffb3c1c03d3000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c03d4000-0xffffb3c1c03d9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c03d9000-0xffffb3c1c03db000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c03dc000-0xffffb3c1c03e1000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c03e1000-0xffffb3c1c03e3000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c03e4000-0xffffb3c1c03e9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c03e9000-0xffffb3c1c03eb000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c03ec000-0xffffb3c1c03f1000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c03f1000-0xffffb3c1c03f3000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c03f4000-0xffffb3c1c03f9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c03f9000-0xffffb3c1c03fb000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c03fc000-0xffffb3c1c0401000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0401000-0xffffb3c1c0403000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0404000-0xffffb3c1c0409000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0409000-0xffffb3c1c040b000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c040c000-0xffffb3c1c0411000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0411000-0xffffb3c1c0413000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0414000-0xffffb3c1c0419000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0419000-0xffffb3c1c041b000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c041c000-0xffffb3c1c0421000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0421000-0xffffb3c1c0423000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0424000-0xffffb3c1c0429000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0429000-0xffffb3c1c042b000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c042c000-0xffffb3c1c0431000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0431000-0xffffb3c1c0433000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0434000-0xffffb3c1c0439000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0439000-0xffffb3c1c043b000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c043c000-0xffffb3c1c0441000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0441000-0xffffb3c1c0443000 8192 e1000_setup_rx_resources+0x31/0x1d0 [e1000] pages=1 vmalloc N0=1 +0xffffb3c1c0444000-0xffffb3c1c0449000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0449000-0xffffb3c1c044b000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c044c000-0xffffb3c1c0451000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0451000-0xffffb3c1c0453000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0454000-0xffffb3c1c0459000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0459000-0xffffb3c1c045b000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c045c000-0xffffb3c1c0461000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0461000-0xffffb3c1c0463000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0464000-0xffffb3c1c0469000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0469000-0xffffb3c1c046b000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c046c000-0xffffb3c1c0471000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0471000-0xffffb3c1c0473000 8192 acpi_os_map_iomem+0x1ac/0x1c0 phys=0x00000000fe807000 ioremap +0xffffb3c1c0474000-0xffffb3c1c0479000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0479000-0xffffb3c1c047b000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c047c000-0xffffb3c1c0481000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0481000-0xffffb3c1c0483000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0484000-0xffffb3c1c0489000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0489000-0xffffb3c1c048b000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c048c000-0xffffb3c1c0491000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0491000-0xffffb3c1c0493000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0494000-0xffffb3c1c0499000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0499000-0xffffb3c1c049b000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c049c000-0xffffb3c1c04a1000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c04a1000-0xffffb3c1c04a3000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c04a4000-0xffffb3c1c04a9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c04a9000-0xffffb3c1c04ab000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c04ac000-0xffffb3c1c04b1000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c04b1000-0xffffb3c1c04b3000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c04b4000-0xffffb3c1c04b9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c04b9000-0xffffb3c1c04bb000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c04bb000-0xffffb3c1c04bf000 16384 n_tty_open+0x19/0xa0 pages=3 vmalloc N0=3 +0xffffb3c1c04c1000-0xffffb3c1c04c3000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c04c4000-0xffffb3c1c04c9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c04c9000-0xffffb3c1c04ce000 20480 map_irq_stack+0x93/0xe0 vmap +0xffffb3c1c04ce000-0xffffb3c1c04d0000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c04d0000-0xffffb3c1c04d5000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c04d5000-0xffffb3c1c04d7000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c04d8000-0xffffb3c1c04dd000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c04dd000-0xffffb3c1c04df000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c04e0000-0xffffb3c1c04e5000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c04e5000-0xffffb3c1c04e7000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c04e8000-0xffffb3c1c04ed000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c04ed000-0xffffb3c1c04ef000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c04f0000-0xffffb3c1c04f5000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c04f5000-0xffffb3c1c04f7000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c04f8000-0xffffb3c1c04fd000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c04fd000-0xffffb3c1c04ff000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0505000-0xffffb3c1c0507000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0508000-0xffffb3c1c050d000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c050d000-0xffffb3c1c050f000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0510000-0xffffb3c1c0515000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0515000-0xffffb3c1c0517000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0518000-0xffffb3c1c051d000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c051d000-0xffffb3c1c051f000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0520000-0xffffb3c1c0525000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0525000-0xffffb3c1c0527000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0528000-0xffffb3c1c052d000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c052d000-0xffffb3c1c052f000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0530000-0xffffb3c1c0535000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0535000-0xffffb3c1c0537000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0538000-0xffffb3c1c053d000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c053d000-0xffffb3c1c053f000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0540000-0xffffb3c1c0545000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0545000-0xffffb3c1c054a000 20480 agp_backend_initialize+0x149/0x260 pages=4 vmalloc N0=4 +0xffffb3c1c054a000-0xffffb3c1c054d000 12288 pmc_core_probe+0x81/0x200 phys=0x00000000fe000000 ioremap +0xffffb3c1c054d000-0xffffb3c1c054f000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0550000-0xffffb3c1c0555000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0555000-0xffffb3c1c0557000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c055b000-0xffffb3c1c055d000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c055d000-0xffffb3c1c055f000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0560000-0xffffb3c1c0565000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0565000-0xffffb3c1c0567000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0568000-0xffffb3c1c056d000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c056d000-0xffffb3c1c056f000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0570000-0xffffb3c1c0575000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0575000-0xffffb3c1c0577000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0578000-0xffffb3c1c057d000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c057d000-0xffffb3c1c057f000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0580000-0xffffb3c1c0585000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0585000-0xffffb3c1c0588000 12288 pcpu_mem_zalloc+0x30/0x50 pages=2 vmalloc N0=2 +0xffffb3c1c0588000-0xffffb3c1c058d000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c058d000-0xffffb3c1c058f000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0590000-0xffffb3c1c0595000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0595000-0xffffb3c1c0597000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0598000-0xffffb3c1c059d000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c059d000-0xffffb3c1c059f000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c05a0000-0xffffb3c1c05a5000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c05a5000-0xffffb3c1c05a8000 12288 pcpu_mem_zalloc+0x30/0x50 pages=2 vmalloc N0=2 +0xffffb3c1c05a8000-0xffffb3c1c05ad000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c05ad000-0xffffb3c1c05af000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c05b0000-0xffffb3c1c05b5000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c05b5000-0xffffb3c1c05b7000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c05b8000-0xffffb3c1c05bd000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c05bd000-0xffffb3c1c05bf000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c05c0000-0xffffb3c1c05c5000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c05c5000-0xffffb3c1c05c7000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c05c8000-0xffffb3c1c05cd000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c05cd000-0xffffb3c1c05cf000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c05d0000-0xffffb3c1c05d5000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c05d5000-0xffffb3c1c05d7000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c05d8000-0xffffb3c1c05dd000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c05dd000-0xffffb3c1c05df000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c05e0000-0xffffb3c1c05e5000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c05e5000-0xffffb3c1c05e7000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c05e8000-0xffffb3c1c05ed000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c05ed000-0xffffb3c1c05ef000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c05f0000-0xffffb3c1c05f5000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c05f5000-0xffffb3c1c05f7000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c05f8000-0xffffb3c1c05fd000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c05fd000-0xffffb3c1c05ff000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0600000-0xffffb3c1c0605000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0605000-0xffffb3c1c0607000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0608000-0xffffb3c1c060d000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c060d000-0xffffb3c1c060f000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0610000-0xffffb3c1c0615000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0615000-0xffffb3c1c0617000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0618000-0xffffb3c1c061d000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c061d000-0xffffb3c1c061f000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0620000-0xffffb3c1c0625000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0625000-0xffffb3c1c0627000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0628000-0xffffb3c1c062d000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c062d000-0xffffb3c1c062f000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0630000-0xffffb3c1c0635000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0635000-0xffffb3c1c0637000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0638000-0xffffb3c1c063d000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c063d000-0xffffb3c1c063f000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0640000-0xffffb3c1c0645000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0645000-0xffffb3c1c0647000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0648000-0xffffb3c1c064d000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c064d000-0xffffb3c1c064f000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0650000-0xffffb3c1c0655000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0655000-0xffffb3c1c0657000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0658000-0xffffb3c1c065d000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c065d000-0xffffb3c1c065f000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0660000-0xffffb3c1c0665000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0665000-0xffffb3c1c0667000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0668000-0xffffb3c1c066d000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c066d000-0xffffb3c1c066f000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0670000-0xffffb3c1c0675000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0675000-0xffffb3c1c0677000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0678000-0xffffb3c1c067d000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c067d000-0xffffb3c1c067f000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0680000-0xffffb3c1c0685000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0685000-0xffffb3c1c0687000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0688000-0xffffb3c1c068d000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c068d000-0xffffb3c1c068f000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0690000-0xffffb3c1c0695000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0695000-0xffffb3c1c0697000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0697000-0xffffb3c1c0699000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0699000-0xffffb3c1c069b000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c069b000-0xffffb3c1c069d000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c069d000-0xffffb3c1c069f000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c06a0000-0xffffb3c1c06a5000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c06a5000-0xffffb3c1c06a7000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c06a8000-0xffffb3c1c06ad000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c06ad000-0xffffb3c1c06af000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c06b0000-0xffffb3c1c06b5000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c06b5000-0xffffb3c1c06b7000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c06b8000-0xffffb3c1c06bd000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c06bd000-0xffffb3c1c06bf000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c06c0000-0xffffb3c1c06c5000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c06c5000-0xffffb3c1c06c7000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c06c7000-0xffffb3c1c06c9000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c06c9000-0xffffb3c1c06cb000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c06cb000-0xffffb3c1c06cd000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c06cd000-0xffffb3c1c06cf000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c06d0000-0xffffb3c1c06d5000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c06d5000-0xffffb3c1c06de000 36864 drm_ht_create+0x4d/0x70 [drm] pages=8 vmalloc N0=8 +0xffffb3c1c06de000-0xffffb3c1c06e0000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c06e0000-0xffffb3c1c06e2000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c06e2000-0xffffb3c1c06e4000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c06e5000-0xffffb3c1c06e7000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c06e8000-0xffffb3c1c06ed000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c06ed000-0xffffb3c1c06ef000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c06f0000-0xffffb3c1c06f5000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c06f5000-0xffffb3c1c06f7000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c06f8000-0xffffb3c1c06fd000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c06fd000-0xffffb3c1c06ff000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c06ff000-0xffffb3c1c0701000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0701000-0xffffb3c1c0703000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0704000-0xffffb3c1c0709000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0709000-0xffffb3c1c070b000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c070c000-0xffffb3c1c0711000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0711000-0xffffb3c1c0713000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0714000-0xffffb3c1c0719000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0719000-0xffffb3c1c071b000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c071b000-0xffffb3c1c071d000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c071d000-0xffffb3c1c071f000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0720000-0xffffb3c1c0741000 135168 mpt_mapresources+0x152/0x1e0 [mptbase] phys=0x00000000feba0000 ioremap +0xffffb3c1c0741000-0xffffb3c1c0743000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0744000-0xffffb3c1c0749000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0749000-0xffffb3c1c074b000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c074c000-0xffffb3c1c0751000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0751000-0xffffb3c1c0753000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0754000-0xffffb3c1c0759000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0759000-0xffffb3c1c075b000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c075c000-0xffffb3c1c0761000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0761000-0xffffb3c1c0763000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0764000-0xffffb3c1c0769000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0769000-0xffffb3c1c076b000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c076c000-0xffffb3c1c0771000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0771000-0xffffb3c1c0773000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0779000-0xffffb3c1c077b000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c077b000-0xffffb3c1c077d000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c077d000-0xffffb3c1c077f000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c077f000-0xffffb3c1c0781000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0781000-0xffffb3c1c0785000 16384 e1000_setup_tx_resources+0x34/0x1c0 [e1000] pages=3 vmalloc N0=3 +0xffffb3c1c0785000-0xffffb3c1c0787000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0787000-0xffffb3c1c0789000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c0789000-0xffffb3c1c079b000 73728 vmci_guest_probe_device+0xdd/0x220 [vmw_vmci] pages=17 vmalloc N0=17 +0xffffb3c1c079c000-0xffffb3c1c07a1000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c07a1000-0xffffb3c1c07a3000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c07a4000-0xffffb3c1c07a9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c07a9000-0xffffb3c1c07ab000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c07ac000-0xffffb3c1c07b1000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c07b1000-0xffffb3c1c07b3000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c07b3000-0xffffb3c1c07b5000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c07b8000-0xffffb3c1c07bd000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c07c0000-0xffffb3c1c07c5000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c07d1000-0xffffb3c1c07d3000 8192 bpf_prog_alloc_no_stats+0x33/0xe0 pages=1 vmalloc N0=1 +0xffffb3c1c07d4000-0xffffb3c1c07d9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c07dc000-0xffffb3c1c07e1000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c07e4000-0xffffb3c1c07e9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c07e9000-0xffffb3c1c07ed000 16384 pcpu_mem_zalloc+0x30/0x50 pages=3 vmalloc N0=3 +0xffffb3c1c07f8000-0xffffb3c1c07fd000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0804000-0xffffb3c1c0809000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c080c000-0xffffb3c1c0811000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0818000-0xffffb3c1c081d000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0820000-0xffffb3c1c0841000 135168 pci_ioremap_bar+0x48/0x50 phys=0x00000000fd5c0000 ioremap +0xffffb3c1c0844000-0xffffb3c1c0849000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c084c000-0xffffb3c1c0851000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0858000-0xffffb3c1c085d000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0860000-0xffffb3c1c0865000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0868000-0xffffb3c1c086d000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0870000-0xffffb3c1c0875000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0878000-0xffffb3c1c087d000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0880000-0xffffb3c1c08c1000 266240 memremap+0x81/0x110 phys=0x00000000fe000000 ioremap +0xffffb3c1c08c4000-0xffffb3c1c08c9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c08cc000-0xffffb3c1c08d1000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c08d4000-0xffffb3c1c08d9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c08dc000-0xffffb3c1c08e1000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c08e4000-0xffffb3c1c08e9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c08ec000-0xffffb3c1c08f1000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c08f4000-0xffffb3c1c08f9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c08fc000-0xffffb3c1c0901000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0904000-0xffffb3c1c0909000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c090c000-0xffffb3c1c0911000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0914000-0xffffb3c1c0919000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c091c000-0xffffb3c1c0921000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0924000-0xffffb3c1c0929000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c092c000-0xffffb3c1c0931000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0934000-0xffffb3c1c0939000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c093a000-0xffffb3c1c0a3b000 1052672 vmw_fifo_init+0x38/0x2d0 [vmwgfx] pages=256 vmalloc N0=256 +0xffffb3c1c0a3c000-0xffffb3c1c0a41000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0a44000-0xffffb3c1c0a49000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0a4c000-0xffffb3c1c0a51000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0a54000-0xffffb3c1c0a59000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0a5c000-0xffffb3c1c0a61000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0a64000-0xffffb3c1c0a69000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0a6c000-0xffffb3c1c0a71000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0a74000-0xffffb3c1c0a79000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0a7c000-0xffffb3c1c0a81000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0a84000-0xffffb3c1c0a89000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0a8c000-0xffffb3c1c0a91000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0a94000-0xffffb3c1c0a99000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0a9c000-0xffffb3c1c0aa1000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0aa4000-0xffffb3c1c0aa9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0aac000-0xffffb3c1c0ab1000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0ab4000-0xffffb3c1c0ab9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0abc000-0xffffb3c1c0ac1000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0ac4000-0xffffb3c1c0ac9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0acc000-0xffffb3c1c0ad1000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0ad4000-0xffffb3c1c0ad9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0adc000-0xffffb3c1c0ae1000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0ae4000-0xffffb3c1c0ae9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0aec000-0xffffb3c1c0af1000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0af4000-0xffffb3c1c0af9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0afc000-0xffffb3c1c0b01000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0b04000-0xffffb3c1c0b09000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0b0c000-0xffffb3c1c0b11000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0b14000-0xffffb3c1c0b19000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0b19000-0xffffb3c1c0cef000 1925120 ttm_bo_kmap_ttm+0xce/0x150 [ttm] +0xffffb3c1c0cf0000-0xffffb3c1c0cf5000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0cf8000-0xffffb3c1c0cfd000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0d00000-0xffffb3c1c0d05000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0d08000-0xffffb3c1c0d0d000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0d10000-0xffffb3c1c0d15000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0d18000-0xffffb3c1c0d1d000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0d20000-0xffffb3c1c0d25000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0d28000-0xffffb3c1c0d2d000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0d30000-0xffffb3c1c0d35000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0d38000-0xffffb3c1c0d3d000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0d48000-0xffffb3c1c0d4d000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0d50000-0xffffb3c1c0d55000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0da8000-0xffffb3c1c0dad000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0db8000-0xffffb3c1c0dbd000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0dc8000-0xffffb3c1c0dcd000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0e14000-0xffffb3c1c0e19000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0e1c000-0xffffb3c1c0e21000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0e24000-0xffffb3c1c0e29000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0e2c000-0xffffb3c1c0e31000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0e34000-0xffffb3c1c0e39000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0e3c000-0xffffb3c1c0e41000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0e44000-0xffffb3c1c0e49000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0e49000-0xffffb3c1c0e4d000 16384 n_tty_open+0x19/0xa0 pages=3 vmalloc N0=3 +0xffffb3c1c0e54000-0xffffb3c1c0e59000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0e5c000-0xffffb3c1c0e61000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0e64000-0xffffb3c1c0e69000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0e6c000-0xffffb3c1c0e71000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0e74000-0xffffb3c1c0e79000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0e79000-0xffffb3c1c0f6e000 1003520 __do_sys_swapon+0x18f/0xab0 pages=244 vmalloc N0=244 +0xffffb3c1c0f70000-0xffffb3c1c0f75000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0f80000-0xffffb3c1c0f85000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0f88000-0xffffb3c1c0f8d000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0f90000-0xffffb3c1c0f95000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0f98000-0xffffb3c1c0f9d000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0fa0000-0xffffb3c1c0fa5000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0fa8000-0xffffb3c1c0fad000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0fb0000-0xffffb3c1c0fb5000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0fc0000-0xffffb3c1c0fc5000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0fc8000-0xffffb3c1c0fcd000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0fd0000-0xffffb3c1c0fd5000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0fd8000-0xffffb3c1c0fdd000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0fe0000-0xffffb3c1c0fe5000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0fe8000-0xffffb3c1c0fed000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0ff0000-0xffffb3c1c0ff5000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c0ff8000-0xffffb3c1c0ffd000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c1000000-0xffffb3c1c1005000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c1014000-0xffffb3c1c1019000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c101c000-0xffffb3c1c1021000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c102c000-0xffffb3c1c1031000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c1034000-0xffffb3c1c1039000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c1044000-0xffffb3c1c1049000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c104c000-0xffffb3c1c1051000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c1054000-0xffffb3c1c1059000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c1060000-0xffffb3c1c1065000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c1065000-0xffffb3c1c1086000 135168 xz_dec_lzma2_create+0x5e/0x80 pages=32 vmalloc N0=32 +0xffffb3c1c1086000-0xffffb3c1c10a7000 135168 xz_dec_lzma2_create+0x5e/0x80 pages=32 vmalloc N0=32 +0xffffb3c1c10a7000-0xffffb3c1c10c8000 135168 xz_dec_lzma2_create+0x5e/0x80 pages=32 vmalloc N0=32 +0xffffb3c1c10c8000-0xffffb3c1c10e9000 135168 xz_dec_lzma2_create+0x5e/0x80 pages=32 vmalloc N0=32 +0xffffb3c1c10e9000-0xffffb3c1c110a000 135168 xz_dec_lzma2_create+0x5e/0x80 pages=32 vmalloc N0=32 +0xffffb3c1c1114000-0xffffb3c1c1119000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c1120000-0xffffb3c1c1125000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c1128000-0xffffb3c1c112d000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c1130000-0xffffb3c1c1135000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c1160000-0xffffb3c1c1165000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c1165000-0xffffb3c1c1186000 135168 xz_dec_lzma2_create+0x5e/0x80 pages=32 vmalloc N0=32 +0xffffb3c1c1186000-0xffffb3c1c11a7000 135168 xz_dec_lzma2_create+0x5e/0x80 pages=32 vmalloc N0=32 +0xffffb3c1c11ac000-0xffffb3c1c11b1000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c11b4000-0xffffb3c1c11b9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c11bc000-0xffffb3c1c11c1000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c11c4000-0xffffb3c1c11c9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c11d0000-0xffffb3c1c11d9000 36864 memremap+0x81/0x110 phys=0x00000000000e0000 ioremap +0xffffb3c1c11dc000-0xffffb3c1c11e1000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c11e4000-0xffffb3c1c11e9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c11ec000-0xffffb3c1c11f1000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c11f4000-0xffffb3c1c11f9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c11fc000-0xffffb3c1c1201000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c1204000-0xffffb3c1c1209000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c121c000-0xffffb3c1c1221000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c122c000-0xffffb3c1c1231000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c1234000-0xffffb3c1c1239000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c1239000-0xffffb3c1c125a000 135168 xz_dec_lzma2_create+0x5e/0x80 pages=32 vmalloc N0=32 +0xffffb3c1c125c000-0xffffb3c1c1261000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c1264000-0xffffb3c1c1269000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c12c4000-0xffffb3c1c12c9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c12d9000-0xffffb3c1c12dd000 16384 pcpu_mem_zalloc+0x30/0x50 pages=3 vmalloc N0=3 +0xffffb3c1c12e0000-0xffffb3c1c12e5000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c12f0000-0xffffb3c1c12f5000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c12f8000-0xffffb3c1c12fd000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c1300000-0xffffb3c1c1305000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c130c000-0xffffb3c1c1311000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c1318000-0xffffb3c1c131d000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c1330000-0xffffb3c1c1335000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c133c000-0xffffb3c1c1341000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c137d000-0xffffb3c1c1381000 16384 n_tty_open+0x19/0xa0 pages=3 vmalloc N0=3 +0xffffb3c1c1404000-0xffffb3c1c1409000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c14f4000-0xffffb3c1c14f9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c151c000-0xffffb3c1c1521000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c15a9000-0xffffb3c1c15ac000 12288 pcpu_mem_zalloc+0x30/0x50 pages=2 vmalloc N0=2 +0xffffb3c1c15ac000-0xffffb3c1c15b0000 16384 pcpu_mem_zalloc+0x30/0x50 pages=3 vmalloc N0=3 +0xffffb3c1c15b0000-0xffffb3c1c15c1000 69632 pcpu_mem_zalloc+0x30/0x50 pages=16 vmalloc N0=16 +0xffffb3c1c15cc000-0xffffb3c1c15d1000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c15d1000-0xffffb3c1c19cb000 4169728 vmw_fb_init+0x1c3/0x3f0 [vmwgfx] pages=1017 vmalloc vpages N0=1017 +0xffffb3c1c19d4000-0xffffb3c1c19d9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c1a0c000-0xffffb3c1c1a11000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c1a24000-0xffffb3c1c1a29000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c1a2c000-0xffffb3c1c1a31000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c1a44000-0xffffb3c1c1a49000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c1ce4000-0xffffb3c1c1ce9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c1fd4000-0xffffb3c1c1fd9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c1ff4000-0xffffb3c1c1ff9000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c2014000-0xffffb3c1c2019000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c2104000-0xffffb3c1c2109000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c21ac000-0xffffb3c1c21b1000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c2e7c000-0xffffb3c1c2e81000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c3164000-0xffffb3c1c3169000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c3d34000-0xffffb3c1c3d39000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c467c000-0xffffb3c1c4681000 20480 dup_task_struct+0x4a/0x1b0 pages=4 vmalloc N0=4 +0xffffb3c1c8000000-0xffffb3c1d0001000 134221824 pci_mmcfg_arch_map+0x2f/0x60 phys=0x00000000f0000000 ioremap +0xffffd3c1b9e00000-0xffffd3c1bbe00000 33554432 pcpu_get_vm_areas+0x0/0x10c0 vmalloc +0xffffd3c1bbe00000-0xffffd3c1bde00000 33554432 pcpu_get_vm_areas+0x0/0x10c0 vmalloc +0xffffd3c1bde00000-0xffffd3c1bfe00000 33554432 pcpu_get_vm_areas+0x0/0x10c0 vmalloc +0xffffffffc0218000-0xffffffffc021a000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc021a000-0xffffffffc021f000 20480 move_module+0x23/0x180 pages=4 vmalloc N0=4 +0xffffffffc021f000-0xffffffffc0221000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0222000-0xffffffffc022a000 32768 move_module+0x23/0x180 pages=7 vmalloc N0=7 +0xffffffffc022e000-0xffffffffc02b9000 569344 move_module+0x23/0x180 pages=138 vmalloc N0=138 +0xffffffffc02b9000-0xffffffffc02be000 20480 move_module+0x23/0x180 pages=4 vmalloc N0=4 +0xffffffffc02be000-0xffffffffc02c3000 20480 move_module+0x23/0x180 pages=4 vmalloc N0=4 +0xffffffffc02c3000-0xffffffffc02c8000 20480 move_module+0x23/0x180 pages=4 vmalloc N0=4 +0xffffffffc02c8000-0xffffffffc02ca000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc02ca000-0xffffffffc02d1000 28672 move_module+0x23/0x180 pages=6 vmalloc N0=6 +0xffffffffc02d1000-0xffffffffc02d3000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc02d5000-0xffffffffc02da000 20480 move_module+0x23/0x180 pages=4 vmalloc N0=4 +0xffffffffc02da000-0xffffffffc02df000 20480 move_module+0x23/0x180 pages=4 vmalloc N0=4 +0xffffffffc02df000-0xffffffffc02e6000 28672 move_module+0x23/0x180 pages=6 vmalloc N0=6 +0xffffffffc02e7000-0xffffffffc02f0000 36864 move_module+0x23/0x180 pages=8 vmalloc N0=8 +0xffffffffc02f0000-0xffffffffc02f5000 20480 move_module+0x23/0x180 pages=4 vmalloc N0=4 +0xffffffffc02f6000-0xffffffffc030f000 102400 move_module+0x23/0x180 pages=24 vmalloc N0=24 +0xffffffffc030f000-0xffffffffc0315000 24576 move_module+0x23/0x180 pages=5 vmalloc N0=5 +0xffffffffc0317000-0xffffffffc0327000 65536 move_module+0x23/0x180 pages=15 vmalloc N0=15 +0xffffffffc0327000-0xffffffffc032c000 20480 move_module+0x23/0x180 pages=4 vmalloc N0=4 +0xffffffffc032e000-0xffffffffc0338000 40960 move_module+0x23/0x180 pages=9 vmalloc N0=9 +0xffffffffc0338000-0xffffffffc033d000 20480 move_module+0x23/0x180 pages=4 vmalloc N0=4 +0xffffffffc033d000-0xffffffffc0348000 45056 move_module+0x23/0x180 pages=10 vmalloc N0=10 +0xffffffffc0348000-0xffffffffc034e000 24576 move_module+0x23/0x180 pages=5 vmalloc N0=5 +0xffffffffc0350000-0xffffffffc035e000 57344 move_module+0x23/0x180 pages=13 vmalloc N0=13 +0xffffffffc035e000-0xffffffffc0363000 20480 move_module+0x23/0x180 pages=4 vmalloc N0=4 +0xffffffffc0364000-0xffffffffc038a000 155648 move_module+0x23/0x180 pages=37 vmalloc N0=37 +0xffffffffc038a000-0xffffffffc0390000 24576 move_module+0x23/0x180 pages=5 vmalloc N0=5 +0xffffffffc0390000-0xffffffffc0392000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0392000-0xffffffffc0394000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0395000-0xffffffffc03a1000 49152 move_module+0x23/0x180 pages=11 vmalloc N0=11 +0xffffffffc03a1000-0xffffffffc03a3000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc03a3000-0xffffffffc03a5000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc03a6000-0xffffffffc03de000 229376 move_module+0x23/0x180 pages=55 vmalloc N0=55 +0xffffffffc03de000-0xffffffffc03e3000 20480 move_module+0x23/0x180 pages=4 vmalloc N0=4 +0xffffffffc03e3000-0xffffffffc03ea000 28672 move_module+0x23/0x180 pages=6 vmalloc N0=6 +0xffffffffc03ea000-0xffffffffc03f7000 53248 move_module+0x23/0x180 pages=12 vmalloc N0=12 +0xffffffffc03f9000-0xffffffffc0413000 106496 move_module+0x23/0x180 pages=25 vmalloc N0=25 +0xffffffffc0413000-0xffffffffc0463000 327680 move_module+0x23/0x180 pages=79 vmalloc N0=79 +0xffffffffc0463000-0xffffffffc0465000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0465000-0xffffffffc0467000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0468000-0xffffffffc046d000 20480 move_module+0x23/0x180 pages=4 vmalloc N0=4 +0xffffffffc046d000-0xffffffffc0474000 28672 move_module+0x23/0x180 pages=6 vmalloc N0=6 +0xffffffffc0475000-0xffffffffc049e000 167936 move_module+0x23/0x180 pages=40 vmalloc N0=40 +0xffffffffc049e000-0xffffffffc04fa000 376832 move_module+0x23/0x180 pages=91 vmalloc N0=91 +0xffffffffc04fa000-0xffffffffc051c000 139264 move_module+0x23/0x180 pages=33 vmalloc N0=33 +0xffffffffc051c000-0xffffffffc052b000 61440 move_module+0x23/0x180 pages=14 vmalloc N0=14 +0xffffffffc052b000-0xffffffffc0548000 118784 move_module+0x23/0x180 pages=28 vmalloc N0=28 +0xffffffffc0548000-0xffffffffc054a000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc054c000-0xffffffffc0552000 24576 move_module+0x23/0x180 pages=5 vmalloc N0=5 +0xffffffffc0552000-0xffffffffc0558000 24576 move_module+0x23/0x180 pages=5 vmalloc N0=5 +0xffffffffc0558000-0xffffffffc055f000 28672 move_module+0x23/0x180 pages=6 vmalloc N0=6 +0xffffffffc055f000-0xffffffffc0561000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0562000-0xffffffffc0568000 24576 move_module+0x23/0x180 pages=5 vmalloc N0=5 +0xffffffffc0568000-0xffffffffc056f000 28672 move_module+0x23/0x180 pages=6 vmalloc N0=6 +0xffffffffc056f000-0xffffffffc0596000 159744 move_module+0x23/0x180 pages=38 vmalloc N0=38 +0xffffffffc0596000-0xffffffffc0598000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0598000-0xffffffffc059a000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc059a000-0xffffffffc059c000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc059c000-0xffffffffc059e000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc05a0000-0xffffffffc05b0000 65536 move_module+0x23/0x180 pages=15 vmalloc N0=15 +0xffffffffc05b0000-0xffffffffc06f4000 1327104 move_module+0x23/0x180 pages=323 vmalloc N0=323 +0xffffffffc06f4000-0xffffffffc0700000 49152 move_module+0x23/0x180 pages=11 vmalloc N0=11 +0xffffffffc0700000-0xffffffffc070d000 53248 move_module+0x23/0x180 pages=12 vmalloc N0=12 +0xffffffffc070d000-0xffffffffc070f000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc070f000-0xffffffffc0711000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0711000-0xffffffffc0713000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0714000-0xffffffffc071d000 36864 move_module+0x23/0x180 pages=8 vmalloc N0=8 +0xffffffffc071d000-0xffffffffc071f000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc071f000-0xffffffffc0721000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0721000-0xffffffffc0723000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0723000-0xffffffffc0725000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0725000-0xffffffffc0728000 12288 bpf_jit_alloc_exec+0xe/0x10 pages=2 vmalloc N0=2 +0xffffffffc0728000-0xffffffffc072a000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc072a000-0xffffffffc072c000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc072c000-0xffffffffc0732000 24576 move_module+0x23/0x180 pages=5 vmalloc N0=5 +0xffffffffc0732000-0xffffffffc0734000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0736000-0xffffffffc0738000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0738000-0xffffffffc073a000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc073a000-0xffffffffc073c000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc073c000-0xffffffffc073e000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc073e000-0xffffffffc0740000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0740000-0xffffffffc0742000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0742000-0xffffffffc0744000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0744000-0xffffffffc0746000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0746000-0xffffffffc0748000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0748000-0xffffffffc074a000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc074a000-0xffffffffc074c000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc074c000-0xffffffffc074e000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc074e000-0xffffffffc0750000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0750000-0xffffffffc0752000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0752000-0xffffffffc0754000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0754000-0xffffffffc0756000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0756000-0xffffffffc0758000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0758000-0xffffffffc075a000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc075a000-0xffffffffc075c000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc075c000-0xffffffffc075e000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc075e000-0xffffffffc0763000 20480 move_module+0x23/0x180 pages=4 vmalloc N0=4 +0xffffffffc0763000-0xffffffffc0777000 81920 move_module+0x23/0x180 pages=19 vmalloc N0=19 +0xffffffffc0777000-0xffffffffc077c000 20480 move_module+0x23/0x180 pages=4 vmalloc N0=4 +0xffffffffc077c000-0xffffffffc077e000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0780000-0xffffffffc0798000 98304 move_module+0x23/0x180 pages=23 vmalloc N0=23 +0xffffffffc0798000-0xffffffffc079e000 24576 move_module+0x23/0x180 pages=5 vmalloc N0=5 +0xffffffffc079e000-0xffffffffc07a0000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc07a0000-0xffffffffc07a2000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc07a3000-0xffffffffc07b2000 61440 move_module+0x23/0x180 pages=14 vmalloc N0=14 +0xffffffffc07b2000-0xffffffffc07b7000 20480 move_module+0x23/0x180 pages=4 vmalloc N0=4 +0xffffffffc07b7000-0xffffffffc07b9000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc07ba000-0xffffffffc07c3000 36864 move_module+0x23/0x180 pages=8 vmalloc N0=8 +0xffffffffc07c3000-0xffffffffc07cb000 32768 move_module+0x23/0x180 pages=7 vmalloc N0=7 +0xffffffffc07cb000-0xffffffffc07cd000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc07cf000-0xffffffffc07d4000 20480 move_module+0x23/0x180 pages=4 vmalloc N0=4 +0xffffffffc07d6000-0xffffffffc07e1000 45056 move_module+0x23/0x180 pages=10 vmalloc N0=10 +0xffffffffc07e1000-0xffffffffc081e000 249856 move_module+0x23/0x180 pages=60 vmalloc N0=60 +0xffffffffc081e000-0xffffffffc0823000 20480 move_module+0x23/0x180 pages=4 vmalloc N0=4 +0xffffffffc0823000-0xffffffffc082b000 32768 move_module+0x23/0x180 pages=7 vmalloc N0=7 +0xffffffffc082b000-0xffffffffc0832000 28672 move_module+0x23/0x180 pages=6 vmalloc N0=6 +0xffffffffc0833000-0xffffffffc0851000 122880 move_module+0x23/0x180 pages=29 vmalloc N0=29 +0xffffffffc0851000-0xffffffffc085b000 40960 move_module+0x23/0x180 pages=9 vmalloc N0=9 +0xffffffffc085b000-0xffffffffc085d000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc085d000-0xffffffffc086c000 61440 move_module+0x23/0x180 pages=14 vmalloc N0=14 +0xffffffffc086c000-0xffffffffc0900000 606208 move_module+0x23/0x180 pages=147 vmalloc N0=147 +0xffffffffc0900000-0xffffffffc0902000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0902000-0xffffffffc0904000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0904000-0xffffffffc090b000 28672 move_module+0x23/0x180 pages=6 vmalloc N0=6 +0xffffffffc090b000-0xffffffffc0911000 24576 move_module+0x23/0x180 pages=5 vmalloc N0=5 +0xffffffffc0912000-0xffffffffc0921000 61440 move_module+0x23/0x180 pages=14 vmalloc N0=14 +0xffffffffc0921000-0xffffffffc0927000 24576 move_module+0x23/0x180 pages=5 vmalloc N0=5 +0xffffffffc0929000-0xffffffffc092f000 24576 move_module+0x23/0x180 pages=5 vmalloc N0=5 +0xffffffffc092f000-0xffffffffc0937000 32768 move_module+0x23/0x180 pages=7 vmalloc N0=7 +0xffffffffc0937000-0xffffffffc093c000 20480 move_module+0x23/0x180 pages=4 vmalloc N0=4 +0xffffffffc093c000-0xffffffffc0941000 20480 move_module+0x23/0x180 pages=4 vmalloc N0=4 +0xffffffffc0941000-0xffffffffc0947000 24576 move_module+0x23/0x180 pages=5 vmalloc N0=5 +0xffffffffc0947000-0xffffffffc094d000 24576 move_module+0x23/0x180 pages=5 vmalloc N0=5 +0xffffffffc094e000-0xffffffffc0967000 102400 move_module+0x23/0x180 pages=24 vmalloc N0=24 +0xffffffffc0967000-0xffffffffc096c000 20480 move_module+0x23/0x180 pages=4 vmalloc N0=4 +0xffffffffc096c000-0xffffffffc096e000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0970000-0xffffffffc0999000 167936 move_module+0x23/0x180 pages=40 vmalloc N0=40 +0xffffffffc0999000-0xffffffffc09a2000 36864 move_module+0x23/0x180 pages=8 vmalloc N0=8 +0xffffffffc09a2000-0xffffffffc09a7000 20480 move_module+0x23/0x180 pages=4 vmalloc N0=4 +0xffffffffc09a7000-0xffffffffc09ae000 28672 move_module+0x23/0x180 pages=6 vmalloc N0=6 +0xffffffffc09ae000-0xffffffffc09b6000 32768 move_module+0x23/0x180 pages=7 vmalloc N0=7 +0xffffffffc09b6000-0xffffffffc09c0000 40960 move_module+0x23/0x180 pages=9 vmalloc N0=9 +0xffffffffc09c0000-0xffffffffc09c2000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc09c2000-0xffffffffc09c4000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc09c4000-0xffffffffc09c6000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc09c6000-0xffffffffc09c8000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc09c8000-0xffffffffc09ca000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc09ca000-0xffffffffc09cc000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc09cc000-0xffffffffc09ce000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc09ce000-0xffffffffc09d0000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc09d0000-0xffffffffc09d2000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc09d2000-0xffffffffc09d4000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc09d4000-0xffffffffc09d6000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc09d6000-0xffffffffc09d8000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc09d8000-0xffffffffc09da000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc09da000-0xffffffffc09dc000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc09dc000-0xffffffffc09de000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc09de000-0xffffffffc09e0000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc09e0000-0xffffffffc09e2000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc09e2000-0xffffffffc09e4000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc09e4000-0xffffffffc09e6000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc09e6000-0xffffffffc09e8000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc09e8000-0xffffffffc09ea000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc09ea000-0xffffffffc09ec000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc09ec000-0xffffffffc09ee000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc09ee000-0xffffffffc09f0000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc09f0000-0xffffffffc09f3000 12288 bpf_jit_alloc_exec+0xe/0x10 pages=2 vmalloc N0=2 +0xffffffffc09f3000-0xffffffffc09f5000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc09f5000-0xffffffffc09f7000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc09f7000-0xffffffffc0a03000 49152 move_module+0x23/0x180 pages=11 vmalloc N0=11 +0xffffffffc0a03000-0xffffffffc0a0d000 40960 move_module+0x23/0x180 pages=9 vmalloc N0=9 +0xffffffffc0a0d000-0xffffffffc0a0f000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a0f000-0xffffffffc0a11000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a11000-0xffffffffc0a13000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a14000-0xffffffffc0a19000 20480 move_module+0x23/0x180 pages=4 vmalloc N0=4 +0xffffffffc0a1b000-0xffffffffc0a24000 36864 move_module+0x23/0x180 pages=8 vmalloc N0=8 +0xffffffffc0a24000-0xffffffffc0a26000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a26000-0xffffffffc0a28000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a28000-0xffffffffc0a2a000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a2a000-0xffffffffc0a2c000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a2c000-0xffffffffc0a2e000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a2e000-0xffffffffc0a30000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a30000-0xffffffffc0a32000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a32000-0xffffffffc0a34000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a34000-0xffffffffc0a36000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a36000-0xffffffffc0a38000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a38000-0xffffffffc0a3a000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a3a000-0xffffffffc0a3c000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a3c000-0xffffffffc0a3e000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a3e000-0xffffffffc0a40000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a40000-0xffffffffc0a42000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a42000-0xffffffffc0a44000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a44000-0xffffffffc0a46000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a46000-0xffffffffc0a48000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a48000-0xffffffffc0a4a000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a4a000-0xffffffffc0a4c000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a4c000-0xffffffffc0a4e000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a4e000-0xffffffffc0a50000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a50000-0xffffffffc0a52000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a52000-0xffffffffc0a54000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a54000-0xffffffffc0a57000 12288 bpf_jit_alloc_exec+0xe/0x10 pages=2 vmalloc N0=2 +0xffffffffc0a57000-0xffffffffc0a59000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a59000-0xffffffffc0a5b000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a5b000-0xffffffffc0a5d000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a5d000-0xffffffffc0a5f000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a5f000-0xffffffffc0a61000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a61000-0xffffffffc0a63000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a63000-0xffffffffc0a65000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a65000-0xffffffffc0a67000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a67000-0xffffffffc0a69000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a69000-0xffffffffc0a6b000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a6b000-0xffffffffc0a6d000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a6d000-0xffffffffc0a6f000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a6f000-0xffffffffc0a71000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a71000-0xffffffffc0a73000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a73000-0xffffffffc0a75000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a75000-0xffffffffc0a77000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a77000-0xffffffffc0a79000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a79000-0xffffffffc0a7b000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a7b000-0xffffffffc0a7d000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a7d000-0xffffffffc0a7f000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a7f000-0xffffffffc0a81000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a81000-0xffffffffc0a83000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a83000-0xffffffffc0a85000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a85000-0xffffffffc0a87000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a87000-0xffffffffc0a89000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a89000-0xffffffffc0a8b000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a8b000-0xffffffffc0a8d000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a8d000-0xffffffffc0a8f000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a8f000-0xffffffffc0a91000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a91000-0xffffffffc0a93000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a93000-0xffffffffc0a95000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a95000-0xffffffffc0a97000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a97000-0xffffffffc0a99000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a99000-0xffffffffc0a9b000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a9b000-0xffffffffc0a9d000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a9d000-0xffffffffc0a9f000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0a9f000-0xffffffffc0aa1000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0aa1000-0xffffffffc0aa4000 12288 bpf_jit_alloc_exec+0xe/0x10 pages=2 vmalloc N0=2 +0xffffffffc0aa4000-0xffffffffc0aa6000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0aa6000-0xffffffffc0aa8000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0aa8000-0xffffffffc0aaa000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0aaa000-0xffffffffc0aac000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0aac000-0xffffffffc0aae000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0aae000-0xffffffffc0ab0000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0ab0000-0xffffffffc0ab2000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0ab2000-0xffffffffc0ab4000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0ab4000-0xffffffffc0abb000 28672 move_module+0x23/0x180 pages=6 vmalloc N0=6 +0xffffffffc0ac0000-0xffffffffc0ac2000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0ac2000-0xffffffffc0ac4000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0ac4000-0xffffffffc0ac6000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0ac6000-0xffffffffc0ac8000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0ac8000-0xffffffffc0aca000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0aca000-0xffffffffc0acc000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0acc000-0xffffffffc0ace000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0ace000-0xffffffffc0ad0000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0ad0000-0xffffffffc0ad2000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0ad2000-0xffffffffc0ad4000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0ad4000-0xffffffffc0ad6000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0ad6000-0xffffffffc0ad8000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0ad8000-0xffffffffc0ada000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0ada000-0xffffffffc0adc000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0adc000-0xffffffffc0ade000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0ade000-0xffffffffc0ae0000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0ae0000-0xffffffffc0ae2000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0ae2000-0xffffffffc0ae4000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0ae4000-0xffffffffc0ae6000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0ae6000-0xffffffffc0ae8000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0ae8000-0xffffffffc0aea000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0aea000-0xffffffffc0aec000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0aec000-0xffffffffc0aee000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0aee000-0xffffffffc0af0000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0af0000-0xffffffffc0af2000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0af2000-0xffffffffc0af4000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0af4000-0xffffffffc0af6000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0af6000-0xffffffffc0af8000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0af8000-0xffffffffc0afa000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0afa000-0xffffffffc0afc000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0afc000-0xffffffffc0aff000 12288 bpf_jit_alloc_exec+0xe/0x10 pages=2 vmalloc N0=2 +0xffffffffc0aff000-0xffffffffc0b01000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0b01000-0xffffffffc0b03000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0b03000-0xffffffffc0b05000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0b05000-0xffffffffc0b07000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0b07000-0xffffffffc0b09000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0b09000-0xffffffffc0b0b000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0b21000-0xffffffffc0b23000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0b23000-0xffffffffc0b25000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0b25000-0xffffffffc0b27000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0b27000-0xffffffffc0b29000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0b29000-0xffffffffc0b2b000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0b2b000-0xffffffffc0b2d000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0b2d000-0xffffffffc0b2f000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0b2f000-0xffffffffc0b31000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0b31000-0xffffffffc0b33000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0b33000-0xffffffffc0b35000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0b35000-0xffffffffc0b37000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0b37000-0xffffffffc0b39000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0b39000-0xffffffffc0b3b000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0b3b000-0xffffffffc0b3d000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0b3e000-0xffffffffc0b40000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0b40000-0xffffffffc0b42000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0b42000-0xffffffffc0b44000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0b44000-0xffffffffc0b46000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0b46000-0xffffffffc0b48000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0b48000-0xffffffffc0b4a000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0b4a000-0xffffffffc0b4c000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0b4c000-0xffffffffc0b4e000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0b4e000-0xffffffffc0b50000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0b50000-0xffffffffc0b52000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0b52000-0xffffffffc0b54000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0b54000-0xffffffffc0b56000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0b56000-0xffffffffc0b58000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0b58000-0xffffffffc0b5a000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0b5a000-0xffffffffc0b5c000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0b5c000-0xffffffffc0b5e000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0b5e000-0xffffffffc0b60000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0b60000-0xffffffffc0b62000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0b62000-0xffffffffc0b64000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0b64000-0xffffffffc0b66000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0b66000-0xffffffffc0b69000 12288 bpf_jit_alloc_exec+0xe/0x10 pages=2 vmalloc N0=2 +0xffffffffc0b69000-0xffffffffc0b6b000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0b6b000-0xffffffffc0b6d000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffffffc0b6d000-0xffffffffc0b6f000 8192 bpf_jit_alloc_exec+0xe/0x10 pages=1 vmalloc N0=1 +0xffffb3c1c21a4000-0xffffb3c1c21a9000 20480 unpurged vm_area +0xffffb3c1c219c000-0xffffb3c1c21a1000 20480 unpurged vm_area +0xffffb3c1c2194000-0xffffb3c1c2199000 20480 unpurged vm_area +0xffffb3c1c218c000-0xffffb3c1c2191000 20480 unpurged vm_area +0xffffb3c1c2184000-0xffffb3c1c2189000 20480 unpurged vm_area +0xffffb3c1c217c000-0xffffb3c1c2181000 20480 unpurged vm_area +0xffffb3c1c2174000-0xffffb3c1c2179000 20480 unpurged vm_area +0xffffb3c1c216c000-0xffffb3c1c2171000 20480 unpurged vm_area +0xffffb3c1c2164000-0xffffb3c1c2169000 20480 unpurged vm_area +0xffffb3c1c215c000-0xffffb3c1c2161000 20480 unpurged vm_area +0xffffb3c1c2154000-0xffffb3c1c2159000 20480 unpurged vm_area +0xffffb3c1c214c000-0xffffb3c1c2151000 20480 unpurged vm_area +0xffffb3c1c2144000-0xffffb3c1c2149000 20480 unpurged vm_area +0xffffb3c1c213c000-0xffffb3c1c2141000 20480 unpurged vm_area +0xffffb3c1c2134000-0xffffb3c1c2139000 20480 unpurged vm_area +0xffffb3c1c212c000-0xffffb3c1c2131000 20480 unpurged vm_area +0xffffb3c1c2124000-0xffffb3c1c2129000 20480 unpurged vm_area +0xffffb3c1c211c000-0xffffb3c1c2121000 20480 unpurged vm_area +0xffffb3c1c2114000-0xffffb3c1c2119000 20480 unpurged vm_area +0xffffb3c1c210c000-0xffffb3c1c2111000 20480 unpurged vm_area +0xffffb3c1c20f4000-0xffffb3c1c20f9000 20480 unpurged vm_area +0xffffb3c1c20fc000-0xffffb3c1c2101000 20480 unpurged vm_area +0xffffb3c1c208c000-0xffffb3c1c2091000 20480 unpurged vm_area +0xffffb3c1c20ec000-0xffffb3c1c20f1000 20480 unpurged vm_area +0xffffb3c1c20e4000-0xffffb3c1c20e9000 20480 unpurged vm_area +0xffffb3c1c20dc000-0xffffb3c1c20e1000 20480 unpurged vm_area +0xffffb3c1c20d4000-0xffffb3c1c20d9000 20480 unpurged vm_area +0xffffb3c1c20cc000-0xffffb3c1c20d1000 20480 unpurged vm_area +0xffffb3c1c20c4000-0xffffb3c1c20c9000 20480 unpurged vm_area +0xffffb3c1c20bc000-0xffffb3c1c20c1000 20480 unpurged vm_area +0xffffb3c1c20b4000-0xffffb3c1c20b9000 20480 unpurged vm_area +0xffffb3c1c20ac000-0xffffb3c1c20b1000 20480 unpurged vm_area +0xffffb3c1c20a4000-0xffffb3c1c20a9000 20480 unpurged vm_area +0xffffb3c1c209c000-0xffffb3c1c20a1000 20480 unpurged vm_area +0xffffb3c1c2094000-0xffffb3c1c2099000 20480 unpurged vm_area +0xffffb3c1c2084000-0xffffb3c1c2089000 20480 unpurged vm_area +0xffffb3c1c207c000-0xffffb3c1c2081000 20480 unpurged vm_area +0xffffb3c1c2074000-0xffffb3c1c2079000 20480 unpurged vm_area +0xffffb3c1c206c000-0xffffb3c1c2071000 20480 unpurged vm_area +0xffffb3c1c152c000-0xffffb3c1c1531000 20480 unpurged vm_area +0xffffb3c1c2064000-0xffffb3c1c2069000 20480 unpurged vm_area +0xffffb3c1c205c000-0xffffb3c1c2061000 20480 unpurged vm_area +0xffffb3c1c2054000-0xffffb3c1c2059000 20480 unpurged vm_area +0xffffb3c1c204c000-0xffffb3c1c2051000 20480 unpurged vm_area +0xffffb3c1c2044000-0xffffb3c1c2049000 20480 unpurged vm_area +0xffffb3c1c203c000-0xffffb3c1c2041000 20480 unpurged vm_area +0xffffb3c1c2034000-0xffffb3c1c2039000 20480 unpurged vm_area +0xffffb3c1c202c000-0xffffb3c1c2031000 20480 unpurged vm_area +0xffffb3c1c2024000-0xffffb3c1c2029000 20480 unpurged vm_area +0xffffb3c1c201c000-0xffffb3c1c2021000 20480 unpurged vm_area +0xffffb3c1c3e4c000-0xffffb3c1c3e51000 20480 unpurged vm_area +0xffffb3c1c200c000-0xffffb3c1c2011000 20480 unpurged vm_area +0xffffb3c1c2004000-0xffffb3c1c2009000 20480 unpurged vm_area +0xffffb3c1c1ffc000-0xffffb3c1c2001000 20480 unpurged vm_area +0xffffb3c1c1fe4000-0xffffb3c1c1fe9000 20480 unpurged vm_area +0xffffb3c1c1fec000-0xffffb3c1c1ff1000 20480 unpurged vm_area +0xffffb3c1c1e9c000-0xffffb3c1c1ea1000 20480 unpurged vm_area +0xffffb3c1c1fdc000-0xffffb3c1c1fe1000 20480 unpurged vm_area +0xffffb3c1c1f84000-0xffffb3c1c1f89000 20480 unpurged vm_area +0xffffb3c1c1fcc000-0xffffb3c1c1fd1000 20480 unpurged vm_area +0xffffb3c1c1fc4000-0xffffb3c1c1fc9000 20480 unpurged vm_area +0xffffb3c1c1fbc000-0xffffb3c1c1fc1000 20480 unpurged vm_area +0xffffb3c1c1fb4000-0xffffb3c1c1fb9000 20480 unpurged vm_area +0xffffb3c1c1fac000-0xffffb3c1c1fb1000 20480 unpurged vm_area +0xffffb3c1c1fa4000-0xffffb3c1c1fa9000 20480 unpurged vm_area +0xffffb3c1c1f9c000-0xffffb3c1c1fa1000 20480 unpurged vm_area +0xffffb3c1c1f94000-0xffffb3c1c1f99000 20480 unpurged vm_area +0xffffb3c1c1f8c000-0xffffb3c1c1f91000 20480 unpurged vm_area +0xffffb3c1c1e6c000-0xffffb3c1c1e71000 20480 unpurged vm_area +0xffffb3c1c1f7c000-0xffffb3c1c1f81000 20480 unpurged vm_area +0xffffb3c1c1f74000-0xffffb3c1c1f79000 20480 unpurged vm_area +0xffffb3c1c1f6c000-0xffffb3c1c1f71000 20480 unpurged vm_area +0xffffb3c1c1f64000-0xffffb3c1c1f69000 20480 unpurged vm_area +0xffffb3c1c1f5c000-0xffffb3c1c1f61000 20480 unpurged vm_area +0xffffb3c1c1f54000-0xffffb3c1c1f59000 20480 unpurged vm_area +0xffffb3c1c1f4c000-0xffffb3c1c1f51000 20480 unpurged vm_area +0xffffb3c1c1f44000-0xffffb3c1c1f49000 20480 unpurged vm_area +0xffffb3c1c1f3c000-0xffffb3c1c1f41000 20480 unpurged vm_area +0xffffb3c1c1f34000-0xffffb3c1c1f39000 20480 unpurged vm_area +0xffffb3c1c1f2c000-0xffffb3c1c1f31000 20480 unpurged vm_area +0xffffb3c1c1f24000-0xffffb3c1c1f29000 20480 unpurged vm_area +0xffffb3c1c1f1c000-0xffffb3c1c1f21000 20480 unpurged vm_area +0xffffb3c1c1f14000-0xffffb3c1c1f19000 20480 unpurged vm_area +0xffffb3c1c1f0c000-0xffffb3c1c1f11000 20480 unpurged vm_area +0xffffb3c1c1f04000-0xffffb3c1c1f09000 20480 unpurged vm_area +0xffffb3c1c1efc000-0xffffb3c1c1f01000 20480 unpurged vm_area +0xffffb3c1c1ef4000-0xffffb3c1c1ef9000 20480 unpurged vm_area +0xffffb3c1c1eec000-0xffffb3c1c1ef1000 20480 unpurged vm_area +0xffffb3c1c1ee4000-0xffffb3c1c1ee9000 20480 unpurged vm_area +0xffffb3c1c1edc000-0xffffb3c1c1ee1000 20480 unpurged vm_area +0xffffb3c1c1ed4000-0xffffb3c1c1ed9000 20480 unpurged vm_area +0xffffb3c1c1ecc000-0xffffb3c1c1ed1000 20480 unpurged vm_area +0xffffb3c1c1ec4000-0xffffb3c1c1ec9000 20480 unpurged vm_area +0xffffb3c1c1ebc000-0xffffb3c1c1ec1000 20480 unpurged vm_area +0xffffb3c1c1eb4000-0xffffb3c1c1eb9000 20480 unpurged vm_area +0xffffb3c1c1eac000-0xffffb3c1c1eb1000 20480 unpurged vm_area +0xffffb3c1c1ea4000-0xffffb3c1c1ea9000 20480 unpurged vm_area +0xffffb3c1c1e3c000-0xffffb3c1c1e41000 20480 unpurged vm_area +0xffffb3c1c1e94000-0xffffb3c1c1e99000 20480 unpurged vm_area +0xffffb3c1c1e8c000-0xffffb3c1c1e91000 20480 unpurged vm_area +0xffffb3c1c1e84000-0xffffb3c1c1e89000 20480 unpurged vm_area +0xffffb3c1c1e7c000-0xffffb3c1c1e81000 20480 unpurged vm_area +0xffffb3c1c1e74000-0xffffb3c1c1e79000 20480 unpurged vm_area +0xffffb3c1c1d44000-0xffffb3c1c1d49000 20480 unpurged vm_area +0xffffb3c1c1e64000-0xffffb3c1c1e69000 20480 unpurged vm_area +0xffffb3c1c1e5c000-0xffffb3c1c1e61000 20480 unpurged vm_area +0xffffb3c1c1e54000-0xffffb3c1c1e59000 20480 unpurged vm_area +0xffffb3c1c1e4c000-0xffffb3c1c1e51000 20480 unpurged vm_area +0xffffb3c1c1e44000-0xffffb3c1c1e49000 20480 unpurged vm_area +0xffffb3c1c1d64000-0xffffb3c1c1d69000 20480 unpurged vm_area +0xffffb3c1c1e34000-0xffffb3c1c1e39000 20480 unpurged vm_area +0xffffb3c1c1e2c000-0xffffb3c1c1e31000 20480 unpurged vm_area +0xffffb3c1c1e24000-0xffffb3c1c1e29000 20480 unpurged vm_area +0xffffb3c1c1e1c000-0xffffb3c1c1e21000 20480 unpurged vm_area +0xffffb3c1c1e14000-0xffffb3c1c1e19000 20480 unpurged vm_area +0xffffb3c1c1e0c000-0xffffb3c1c1e11000 20480 unpurged vm_area +0xffffb3c1c1e04000-0xffffb3c1c1e09000 20480 unpurged vm_area +0xffffb3c1c1dfc000-0xffffb3c1c1e01000 20480 unpurged vm_area +0xffffb3c1c1df4000-0xffffb3c1c1df9000 20480 unpurged vm_area +0xffffb3c1c1dec000-0xffffb3c1c1df1000 20480 unpurged vm_area +0xffffb3c1c1de4000-0xffffb3c1c1de9000 20480 unpurged vm_area +0xffffb3c1c1ddc000-0xffffb3c1c1de1000 20480 unpurged vm_area +0xffffb3c1c1dd4000-0xffffb3c1c1dd9000 20480 unpurged vm_area +0xffffb3c1c1dcc000-0xffffb3c1c1dd1000 20480 unpurged vm_area +0xffffb3c1c1dc4000-0xffffb3c1c1dc9000 20480 unpurged vm_area +0xffffb3c1c1dbc000-0xffffb3c1c1dc1000 20480 unpurged vm_area +0xffffb3c1c1db4000-0xffffb3c1c1db9000 20480 unpurged vm_area +0xffffb3c1c1dac000-0xffffb3c1c1db1000 20480 unpurged vm_area +0xffffb3c1c1da4000-0xffffb3c1c1da9000 20480 unpurged vm_area +0xffffb3c1c1d9c000-0xffffb3c1c1da1000 20480 unpurged vm_area +0xffffb3c1c1d94000-0xffffb3c1c1d99000 20480 unpurged vm_area +0xffffb3c1c1d8c000-0xffffb3c1c1d91000 20480 unpurged vm_area +0xffffb3c1c1d84000-0xffffb3c1c1d89000 20480 unpurged vm_area +0xffffb3c1c1d7c000-0xffffb3c1c1d81000 20480 unpurged vm_area +0xffffb3c1c1d74000-0xffffb3c1c1d79000 20480 unpurged vm_area +0xffffb3c1c1d6c000-0xffffb3c1c1d71000 20480 unpurged vm_area +0xffffb3c1c1cd4000-0xffffb3c1c1cd9000 20480 unpurged vm_area +0xffffb3c1c1d5c000-0xffffb3c1c1d61000 20480 unpurged vm_area +0xffffb3c1c1d54000-0xffffb3c1c1d59000 20480 unpurged vm_area +0xffffb3c1c1d4c000-0xffffb3c1c1d51000 20480 unpurged vm_area +0xffffb3c1c4464000-0xffffb3c1c4469000 20480 unpurged vm_area +0xffffb3c1c1d3c000-0xffffb3c1c1d41000 20480 unpurged vm_area +0xffffb3c1c1d34000-0xffffb3c1c1d39000 20480 unpurged vm_area +0xffffb3c1c1d2c000-0xffffb3c1c1d31000 20480 unpurged vm_area +0xffffb3c1c1d24000-0xffffb3c1c1d29000 20480 unpurged vm_area +0xffffb3c1c1d1c000-0xffffb3c1c1d21000 20480 unpurged vm_area +0xffffb3c1c1d14000-0xffffb3c1c1d19000 20480 unpurged vm_area +0xffffb3c1c1d0c000-0xffffb3c1c1d11000 20480 unpurged vm_area +0xffffb3c1c1d04000-0xffffb3c1c1d09000 20480 unpurged vm_area +0xffffb3c1c1cfc000-0xffffb3c1c1d01000 20480 unpurged vm_area +0xffffb3c1c1cf4000-0xffffb3c1c1cf9000 20480 unpurged vm_area +0xffffb3c1c1cec000-0xffffb3c1c1cf1000 20480 unpurged vm_area +0xffffb3c1c1c94000-0xffffb3c1c1c99000 20480 unpurged vm_area +0xffffb3c1c1cdc000-0xffffb3c1c1ce1000 20480 unpurged vm_area +0xffffb3c1c1cb4000-0xffffb3c1c1cb9000 20480 unpurged vm_area +0xffffb3c1c1ccc000-0xffffb3c1c1cd1000 20480 unpurged vm_area +0xffffb3c1c1cc4000-0xffffb3c1c1cc9000 20480 unpurged vm_area +0xffffb3c1c1cbc000-0xffffb3c1c1cc1000 20480 unpurged vm_area +0xffffb3c1c1ca4000-0xffffb3c1c1ca9000 20480 unpurged vm_area +0xffffb3c1c1cac000-0xffffb3c1c1cb1000 20480 unpurged vm_area +0xffffb3c1c1be4000-0xffffb3c1c1be9000 20480 unpurged vm_area +0xffffb3c1c1c9c000-0xffffb3c1c1ca1000 20480 unpurged vm_area +0xffffb3c1c1c8c000-0xffffb3c1c1c91000 20480 unpurged vm_area +0xffffb3c1c1c5c000-0xffffb3c1c1c61000 20480 unpurged vm_area +0xffffb3c1c1c84000-0xffffb3c1c1c89000 20480 unpurged vm_area +0xffffb3c1c1c7c000-0xffffb3c1c1c81000 20480 unpurged vm_area +0xffffb3c1c1c74000-0xffffb3c1c1c79000 20480 unpurged vm_area +0xffffb3c1c1c6c000-0xffffb3c1c1c71000 20480 unpurged vm_area +0xffffb3c1c1c64000-0xffffb3c1c1c69000 20480 unpurged vm_area +0xffffb3c1c1bf4000-0xffffb3c1c1bf9000 20480 unpurged vm_area +0xffffb3c1c1c54000-0xffffb3c1c1c59000 20480 unpurged vm_area +0xffffb3c1c1c4c000-0xffffb3c1c1c51000 20480 unpurged vm_area +0xffffb3c1c1c44000-0xffffb3c1c1c49000 20480 unpurged vm_area +0xffffb3c1c1c3c000-0xffffb3c1c1c41000 20480 unpurged vm_area +0xffffb3c1c1c34000-0xffffb3c1c1c39000 20480 unpurged vm_area +0xffffb3c1c1c2c000-0xffffb3c1c1c31000 20480 unpurged vm_area +0xffffb3c1c1c24000-0xffffb3c1c1c29000 20480 unpurged vm_area +0xffffb3c1c1c1c000-0xffffb3c1c1c21000 20480 unpurged vm_area +0xffffb3c1c1c14000-0xffffb3c1c1c19000 20480 unpurged vm_area +0xffffb3c1c1c0c000-0xffffb3c1c1c11000 20480 unpurged vm_area +0xffffb3c1c1c04000-0xffffb3c1c1c09000 20480 unpurged vm_area +0xffffb3c1c1bfc000-0xffffb3c1c1c01000 20480 unpurged vm_area +0xffffb3c1c1b04000-0xffffb3c1c1b09000 20480 unpurged vm_area +0xffffb3c1c1bec000-0xffffb3c1c1bf1000 20480 unpurged vm_area +0xffffb3c1c1b5c000-0xffffb3c1c1b61000 20480 unpurged vm_area +0xffffb3c1c1bdc000-0xffffb3c1c1be1000 20480 unpurged vm_area +0xffffb3c1c1bd4000-0xffffb3c1c1bd9000 20480 unpurged vm_area +0xffffb3c1c1bcc000-0xffffb3c1c1bd1000 20480 unpurged vm_area +0xffffb3c1c1bc4000-0xffffb3c1c1bc9000 20480 unpurged vm_area +0xffffb3c1c1bbc000-0xffffb3c1c1bc1000 20480 unpurged vm_area +0xffffb3c1c1bb4000-0xffffb3c1c1bb9000 20480 unpurged vm_area +0xffffb3c1c1bac000-0xffffb3c1c1bb1000 20480 unpurged vm_area +0xffffb3c1c1ba4000-0xffffb3c1c1ba9000 20480 unpurged vm_area +0xffffb3c1c1b9c000-0xffffb3c1c1ba1000 20480 unpurged vm_area +0xffffb3c1c1b94000-0xffffb3c1c1b99000 20480 unpurged vm_area +0xffffb3c1c1b8c000-0xffffb3c1c1b91000 20480 unpurged vm_area +0xffffb3c1c1b84000-0xffffb3c1c1b89000 20480 unpurged vm_area +0xffffb3c1c1b7c000-0xffffb3c1c1b81000 20480 unpurged vm_area +0xffffb3c1c1b74000-0xffffb3c1c1b79000 20480 unpurged vm_area +0xffffb3c1c1b6c000-0xffffb3c1c1b71000 20480 unpurged vm_area +0xffffb3c1c1b64000-0xffffb3c1c1b69000 20480 unpurged vm_area +0xffffb3c1c1a34000-0xffffb3c1c1a39000 20480 unpurged vm_area +0xffffb3c1c1b54000-0xffffb3c1c1b59000 20480 unpurged vm_area +0xffffb3c1c1b4c000-0xffffb3c1c1b51000 20480 unpurged vm_area +0xffffb3c1c1b44000-0xffffb3c1c1b49000 20480 unpurged vm_area +0xffffb3c1c1b3c000-0xffffb3c1c1b41000 20480 unpurged vm_area +0xffffb3c1c1b34000-0xffffb3c1c1b39000 20480 unpurged vm_area +0xffffb3c1c1b2c000-0xffffb3c1c1b31000 20480 unpurged vm_area +0xffffb3c1c0d98000-0xffffb3c1c0d9d000 20480 unpurged vm_area +0xffffb3c1c0d40000-0xffffb3c1c0d45000 20480 unpurged vm_area +0xffffb3c1c1b24000-0xffffb3c1c1b29000 20480 unpurged vm_area +0xffffb3c1c1b1c000-0xffffb3c1c1b21000 20480 unpurged vm_area +0xffffb3c1c1b14000-0xffffb3c1c1b19000 20480 unpurged vm_area +0xffffb3c1c1b0c000-0xffffb3c1c1b11000 20480 unpurged vm_area +0xffffb3c1c1afc000-0xffffb3c1c1b01000 20480 unpurged vm_area +0xffffb3c1c1af4000-0xffffb3c1c1af9000 20480 unpurged vm_area +0xffffb3c1c1aec000-0xffffb3c1c1af1000 20480 unpurged vm_area +0xffffb3c1c1ae4000-0xffffb3c1c1ae9000 20480 unpurged vm_area +0xffffb3c1c1adc000-0xffffb3c1c1ae1000 20480 unpurged vm_area +0xffffb3c1c1ad4000-0xffffb3c1c1ad9000 20480 unpurged vm_area +0xffffb3c1c1ac4000-0xffffb3c1c1ac9000 20480 unpurged vm_area +0xffffb3c1c1acc000-0xffffb3c1c1ad1000 20480 unpurged vm_area +0xffffb3c1c1ab4000-0xffffb3c1c1ab9000 20480 unpurged vm_area +0xffffb3c1c1abc000-0xffffb3c1c1ac1000 20480 unpurged vm_area +0xffffb3c1c1aac000-0xffffb3c1c1ab1000 20480 unpurged vm_area +0xffffb3c1c1aa4000-0xffffb3c1c1aa9000 20480 unpurged vm_area +0xffffb3c1c1a84000-0xffffb3c1c1a89000 20480 unpurged vm_area +0xffffb3c1c1a9c000-0xffffb3c1c1aa1000 20480 unpurged vm_area +0xffffb3c1c1a94000-0xffffb3c1c1a99000 20480 unpurged vm_area +0xffffb3c1c1a8c000-0xffffb3c1c1a91000 20480 unpurged vm_area +0xffffb3c1c1a74000-0xffffb3c1c1a79000 20480 unpurged vm_area +0xffffb3c1c1a7c000-0xffffb3c1c1a81000 20480 unpurged vm_area +0xffffb3c1c1a64000-0xffffb3c1c1a69000 20480 unpurged vm_area +0xffffb3c1c1a6c000-0xffffb3c1c1a71000 20480 unpurged vm_area +0xffffb3c1c1a4c000-0xffffb3c1c1a51000 20480 unpurged vm_area +0xffffb3c1c1a5c000-0xffffb3c1c1a61000 20480 unpurged vm_area +0xffffb3c1c1a54000-0xffffb3c1c1a59000 20480 unpurged vm_area +0xffffb3c1c1a3c000-0xffffb3c1c1a41000 20480 unpurged vm_area +0xffffb3c1c19fc000-0xffffb3c1c1a01000 20480 unpurged vm_area +0xffffb3c1c1584000-0xffffb3c1c1589000 20480 unpurged vm_area +0xffffb3c1c1a1c000-0xffffb3c1c1a21000 20480 unpurged vm_area +0xffffb3c1c19dc000-0xffffb3c1c19e1000 20480 unpurged vm_area +0xffffb3c1c1a14000-0xffffb3c1c1a19000 20480 unpurged vm_area +0xffffb3c1c1a04000-0xffffb3c1c1a09000 20480 unpurged vm_area +0xffffb3c1c19f4000-0xffffb3c1c19f9000 20480 unpurged vm_area +0xffffb3c1c19ec000-0xffffb3c1c19f1000 20480 unpurged vm_area +0xffffb3c1c0d78000-0xffffb3c1c0d7d000 20480 unpurged vm_area +0xffffb3c1c19e4000-0xffffb3c1c19e9000 20480 unpurged vm_area +0xffffb3c1c19cc000-0xffffb3c1c19d1000 20480 unpurged vm_area +0xffffb3c1c15c4000-0xffffb3c1c15c9000 20480 unpurged vm_area +0xffffb3c1c159c000-0xffffb3c1c15a1000 20480 unpurged vm_area +0xffffb3c1c1594000-0xffffb3c1c1599000 20480 unpurged vm_area +0xffffb3c1c158c000-0xffffb3c1c1591000 20480 unpurged vm_area +0xffffb3c1c14dc000-0xffffb3c1c14e1000 20480 unpurged vm_area +0xffffb3c1c157c000-0xffffb3c1c1581000 20480 unpurged vm_area +0xffffb3c1c1574000-0xffffb3c1c1579000 20480 unpurged vm_area +0xffffb3c1c156c000-0xffffb3c1c1571000 20480 unpurged vm_area +0xffffb3c1c1564000-0xffffb3c1c1569000 20480 unpurged vm_area +0xffffb3c1c155c000-0xffffb3c1c1561000 20480 unpurged vm_area +0xffffb3c1c1554000-0xffffb3c1c1559000 20480 unpurged vm_area +0xffffb3c1c154c000-0xffffb3c1c1551000 20480 unpurged vm_area +0xffffb3c1c1544000-0xffffb3c1c1549000 20480 unpurged vm_area +0xffffb3c1c153c000-0xffffb3c1c1541000 20480 unpurged vm_area +0xffffb3c1c1534000-0xffffb3c1c1539000 20480 unpurged vm_area +0xffffb3c1c1524000-0xffffb3c1c1529000 20480 unpurged vm_area +0xffffb3c1c1514000-0xffffb3c1c1519000 20480 unpurged vm_area +0xffffb3c1c150c000-0xffffb3c1c1511000 20480 unpurged vm_area +0xffffb3c1c1504000-0xffffb3c1c1509000 20480 unpurged vm_area +0xffffb3c1c14fc000-0xffffb3c1c1501000 20480 unpurged vm_area +0xffffb3c1c14ec000-0xffffb3c1c14f1000 20480 unpurged vm_area +0xffffb3c1c14e4000-0xffffb3c1c14e9000 20480 unpurged vm_area +0xffffb3c1c07f0000-0xffffb3c1c07f5000 20480 unpurged vm_area +0xffffb3c1c14d4000-0xffffb3c1c14d9000 20480 unpurged vm_area +0xffffb3c1c4594000-0xffffb3c1c4599000 20480 unpurged vm_area +0xffffb3c1c14cc000-0xffffb3c1c14d1000 20480 unpurged vm_area +0xffffb3c1c14c4000-0xffffb3c1c14c9000 20480 unpurged vm_area +0xffffb3c1c14bc000-0xffffb3c1c14c1000 20480 unpurged vm_area +0xffffb3c1c14b4000-0xffffb3c1c14b9000 20480 unpurged vm_area +0xffffb3c1c14ac000-0xffffb3c1c14b1000 20480 unpurged vm_area +0xffffb3c1c14a4000-0xffffb3c1c14a9000 20480 unpurged vm_area +0xffffb3c1c149c000-0xffffb3c1c14a1000 20480 unpurged vm_area +0xffffb3c1c1494000-0xffffb3c1c1499000 20480 unpurged vm_area +0xffffb3c1c148c000-0xffffb3c1c1491000 20480 unpurged vm_area +0xffffb3c1c13cc000-0xffffb3c1c13d1000 20480 unpurged vm_area +0xffffb3c1c1444000-0xffffb3c1c1449000 20480 unpurged vm_area +0xffffb3c1c1484000-0xffffb3c1c1489000 20480 unpurged vm_area +0xffffb3c1c147c000-0xffffb3c1c1481000 20480 unpurged vm_area +0xffffb3c1c1474000-0xffffb3c1c1479000 20480 unpurged vm_area +0xffffb3c1c146c000-0xffffb3c1c1471000 20480 unpurged vm_area +0xffffb3c1c1464000-0xffffb3c1c1469000 20480 unpurged vm_area +0xffffb3c1c145c000-0xffffb3c1c1461000 20480 unpurged vm_area +0xffffb3c1c1454000-0xffffb3c1c1459000 20480 unpurged vm_area +0xffffb3c1c144c000-0xffffb3c1c1451000 20480 unpurged vm_area +0xffffb3c1c1434000-0xffffb3c1c1439000 20480 unpurged vm_area +0xffffb3c1c143c000-0xffffb3c1c1441000 20480 unpurged vm_area +0xffffb3c1c1414000-0xffffb3c1c1419000 20480 unpurged vm_area +0xffffb3c1c142c000-0xffffb3c1c1431000 20480 unpurged vm_area +0xffffb3c1c1424000-0xffffb3c1c1429000 20480 unpurged vm_area +0xffffb3c1c141c000-0xffffb3c1c1421000 20480 unpurged vm_area +0xffffb3c1c13bc000-0xffffb3c1c13c1000 20480 unpurged vm_area +0xffffb3c1c140c000-0xffffb3c1c1411000 20480 unpurged vm_area +0xffffb3c1c13fc000-0xffffb3c1c1401000 20480 unpurged vm_area +0xffffb3c1c13f4000-0xffffb3c1c13f9000 20480 unpurged vm_area +0xffffb3c1c13ec000-0xffffb3c1c13f1000 20480 unpurged vm_area +0xffffb3c1c13e4000-0xffffb3c1c13e9000 20480 unpurged vm_area +0xffffb3c1c13dc000-0xffffb3c1c13e1000 20480 unpurged vm_area +0xffffb3c1c13d4000-0xffffb3c1c13d9000 20480 unpurged vm_area +0xffffb3c1c1138000-0xffffb3c1c113d000 20480 unpurged vm_area +0xffffb3c1c13c4000-0xffffb3c1c13c9000 20480 unpurged vm_area +0xffffb3c1c139c000-0xffffb3c1c13a1000 20480 unpurged vm_area +0xffffb3c1c13b4000-0xffffb3c1c13b9000 20480 unpurged vm_area +0xffffb3c1c13ac000-0xffffb3c1c13b1000 20480 unpurged vm_area +0xffffb3c1c13a4000-0xffffb3c1c13a9000 20480 unpurged vm_area +0xffffb3c1c1320000-0xffffb3c1c1325000 20480 unpurged vm_area +0xffffb3c1c1394000-0xffffb3c1c1399000 20480 unpurged vm_area +0xffffb3c1c138c000-0xffffb3c1c1391000 20480 unpurged vm_area +0xffffb3c1c1384000-0xffffb3c1c1389000 20480 unpurged vm_area +0xffffb3c1c1374000-0xffffb3c1c1379000 20480 unpurged vm_area +0xffffb3c1c136c000-0xffffb3c1c1371000 20480 unpurged vm_area +0xffffb3c1c1364000-0xffffb3c1c1369000 20480 unpurged vm_area +0xffffb3c1c135c000-0xffffb3c1c1361000 20480 unpurged vm_area +0xffffb3c1c1354000-0xffffb3c1c1359000 20480 unpurged vm_area +0xffffb3c1c134c000-0xffffb3c1c1351000 20480 unpurged vm_area +0xffffb3c1c1344000-0xffffb3c1c1349000 20480 unpurged vm_area +0xffffb3c1c1328000-0xffffb3c1c132d000 20480 unpurged vm_area +0xffffb3c1c1224000-0xffffb3c1c1229000 20480 unpurged vm_area +0xffffb3c1c12e8000-0xffffb3c1c12ed000 20480 unpurged vm_area +0xffffb3c1c12cc000-0xffffb3c1c12d1000 20480 unpurged vm_area +0xffffb3c1c12bc000-0xffffb3c1c12c1000 20480 unpurged vm_area +0xffffb3c1c12b4000-0xffffb3c1c12b9000 20480 unpurged vm_area +0xffffb3c1c12ac000-0xffffb3c1c12b1000 20480 unpurged vm_area +0xffffb3c1c12a4000-0xffffb3c1c12a9000 20480 unpurged vm_area +0xffffb3c1c129c000-0xffffb3c1c12a1000 20480 unpurged vm_area +0xffffb3c1c1294000-0xffffb3c1c1299000 20480 unpurged vm_area +0xffffb3c1c128c000-0xffffb3c1c1291000 20480 unpurged vm_area +0xffffb3c1c1284000-0xffffb3c1c1289000 20480 unpurged vm_area +0xffffb3c1c127c000-0xffffb3c1c1281000 20480 unpurged vm_area +0xffffb3c1c1274000-0xffffb3c1c1279000 20480 unpurged vm_area +0xffffb3c1c126c000-0xffffb3c1c1271000 20480 unpurged vm_area +0xffffb3c1c0d60000-0xffffb3c1c0d65000 20480 unpurged vm_area +0xffffb3c1c1214000-0xffffb3c1c1219000 20480 unpurged vm_area +0xffffb3c1c120c000-0xffffb3c1c1211000 20480 unpurged vm_area +0xffffb3c1c1158000-0xffffb3c1c115d000 20480 unpurged vm_area +0xffffb3c1c1150000-0xffffb3c1c1155000 20480 unpurged vm_area +0xffffb3c1c1148000-0xffffb3c1c114d000 20480 unpurged vm_area +0xffffb3c1c1140000-0xffffb3c1c1145000 20480 unpurged vm_area +0xffffb3c1c07c8000-0xffffb3c1c07cd000 20480 unpurged vm_area +0xffffb3c1c110c000-0xffffb3c1c1111000 20480 unpurged vm_area +0xffffb3c1c103c000-0xffffb3c1c1041000 20480 unpurged vm_area +0xffffb3c1c1024000-0xffffb3c1c1029000 20480 unpurged vm_area +0xffffb3c1c1008000-0xffffb3c1c100d000 20480 unpurged vm_area +0xffffb3c1c0fb8000-0xffffb3c1c0fbd000 20480 unpurged vm_area +0xffffb3c1c0f78000-0xffffb3c1c0f7d000 20480 unpurged vm_area +0xffffb3c1c0e08000-0xffffb3c1c0e0d000 20480 unpurged vm_area +0xffffb3c1c0e00000-0xffffb3c1c0e05000 20480 unpurged vm_area +0xffffb3c1c0df8000-0xffffb3c1c0dfd000 20480 unpurged vm_area +0xffffb3c1c0df0000-0xffffb3c1c0df5000 20480 unpurged vm_area +0xffffb3c1c0de8000-0xffffb3c1c0ded000 20480 unpurged vm_area +0xffffb3c1c0de0000-0xffffb3c1c0de5000 20480 unpurged vm_area +0xffffb3c1c0dd8000-0xffffb3c1c0ddd000 20480 unpurged vm_area +0xffffb3c1c0dd0000-0xffffb3c1c0dd5000 20480 unpurged vm_area +0xffffb3c1c0dc0000-0xffffb3c1c0dc5000 20480 unpurged vm_area +0xffffb3c1c0db0000-0xffffb3c1c0db5000 20480 unpurged vm_area +0xffffb3c1c0da0000-0xffffb3c1c0da5000 20480 unpurged vm_area +0xffffb3c1c0d90000-0xffffb3c1c0d95000 20480 unpurged vm_area +0xffffb3c1c0d68000-0xffffb3c1c0d6d000 20480 unpurged vm_area +0xffffb3c1c0d58000-0xffffb3c1c0d5d000 20480 unpurged vm_area +0xffffb3c1c0d88000-0xffffb3c1c0d8d000 20480 unpurged vm_area +0xffffb3c1c0d80000-0xffffb3c1c0d85000 20480 unpurged vm_area +0xffffb3c1c0d70000-0xffffb3c1c0d75000 20480 unpurged vm_area +0xffffb3c1c0063000-0xffffb3c1c0065000 8192 unpurged vm_area diff --git a/tests/fixtures/linux-proc/vmstat b/tests/fixtures/linux-proc/vmstat new file mode 100644 index 00000000..01d2ca03 --- /dev/null +++ b/tests/fixtures/linux-proc/vmstat @@ -0,0 +1,147 @@ +nr_free_pages 615337 +nr_zone_inactive_anon 39 +nr_zone_active_anon 34838 +nr_zone_inactive_file 104036 +nr_zone_active_file 130601 +nr_zone_unevictable 4897 +nr_zone_write_pending 45 +nr_mlock 4897 +nr_page_table_pages 548 +nr_kernel_stack 5984 +nr_bounce 0 +nr_zspages 0 +nr_free_cma 0 +numa_hit 1910597 +numa_miss 0 +numa_foreign 0 +numa_interleave 66040 +numa_local 1910597 +numa_other 0 +nr_inactive_anon 39 +nr_active_anon 34838 +nr_inactive_file 104036 +nr_active_file 130601 +nr_unevictable 4897 +nr_slab_reclaimable 49011 +nr_slab_unreclaimable 26172 +nr_isolated_anon 0 +nr_isolated_file 0 +workingset_nodes 0 +workingset_refault 0 +workingset_activate 0 +workingset_restore 0 +workingset_nodereclaim 0 +nr_anon_pages 40298 +nr_mapped 25087 +nr_file_pages 234112 +nr_dirty 45 +nr_writeback 0 +nr_writeback_temp 0 +nr_shmem 395 +nr_shmem_hugepages 0 +nr_shmem_pmdmapped 0 +nr_file_hugepages 0 +nr_file_pmdmapped 0 +nr_anon_transparent_hugepages 0 +nr_vmscan_write 0 +nr_vmscan_immediate_reclaim 0 +nr_dirtied 167091 +nr_written 143439 +nr_kernel_misc_reclaimable 0 +nr_foll_pin_acquired 0 +nr_foll_pin_released 0 +nr_dirty_threshold 163943 +nr_dirty_background_threshold 81871 +pgpgin 625466 +pgpgout 706252 +pswpin 0 +pswpout 0 +pgalloc_dma 144 +pgalloc_dma32 597148 +pgalloc_normal 1423654 +pgalloc_movable 0 +allocstall_dma 0 +allocstall_dma32 0 +allocstall_normal 0 +allocstall_movable 0 +pgskip_dma 0 +pgskip_dma32 0 +pgskip_normal 0 +pgskip_movable 0 +pgfree 2637206 +pgactivate 136726 +pgdeactivate 0 +pglazyfree 3610 +pgfault 1195623 +pgmajfault 1713 +pglazyfreed 0 +pgrefill 0 +pgsteal_kswapd 0 +pgsteal_direct 0 +pgscan_kswapd 0 +pgscan_direct 0 +pgscan_direct_throttle 0 +pgscan_anon 0 +pgscan_file 0 +pgsteal_anon 0 +pgsteal_file 0 +zone_reclaim_failed 0 +pginodesteal 0 +slabs_scanned 0 +kswapd_inodesteal 0 +kswapd_low_wmark_hit_quickly 0 +kswapd_high_wmark_hit_quickly 0 +pageoutrun 0 +pgrotated 0 +drop_pagecache 0 +drop_slab 0 +oom_kill 0 +numa_pte_updates 0 +numa_huge_pte_updates 0 +numa_hint_faults 0 +numa_hint_faults_local 0 +numa_pages_migrated 0 +pgmigrate_success 0 +pgmigrate_fail 0 +compact_migrate_scanned 0 +compact_free_scanned 0 +compact_isolated 0 +compact_stall 0 +compact_fail 0 +compact_success 0 +compact_daemon_wake 0 +compact_daemon_migrate_scanned 0 +compact_daemon_free_scanned 0 +htlb_buddy_alloc_success 0 +htlb_buddy_alloc_fail 0 +unevictable_pgs_culled 66408 +unevictable_pgs_scanned 0 +unevictable_pgs_rescued 206 +unevictable_pgs_mlocked 5103 +unevictable_pgs_munlocked 206 +unevictable_pgs_cleared 0 +unevictable_pgs_stranded 0 +thp_fault_alloc 0 +thp_fault_fallback 0 +thp_fault_fallback_charge 0 +thp_collapse_alloc 1 +thp_collapse_alloc_failed 0 +thp_file_alloc 0 +thp_file_fallback 0 +thp_file_fallback_charge 0 +thp_file_mapped 0 +thp_split_page 1 +thp_split_page_failed 0 +thp_deferred_split_page 1 +thp_split_pmd 1 +thp_split_pud 0 +thp_zero_page_alloc 0 +thp_zero_page_alloc_failed 0 +thp_swpout 0 +thp_swpout_fallback 0 +balloon_inflate 0 +balloon_deflate 0 +balloon_migrate 0 +swap_ra 0 +swap_ra_hit 0 +nr_unstable 0 diff --git a/tests/fixtures/linux-proc/zoneinfo b/tests/fixtures/linux-proc/zoneinfo new file mode 100644 index 00000000..b26d8069 --- /dev/null +++ b/tests/fixtures/linux-proc/zoneinfo @@ -0,0 +1,175 @@ +Node 0, zone DMA + per-node stats + nr_inactive_anon 39 + nr_active_anon 34839 + nr_inactive_file 104172 + nr_active_file 130748 + nr_unevictable 4897 + nr_slab_reclaimable 49017 + nr_slab_unreclaimable 26177 + nr_isolated_anon 0 + nr_isolated_file 0 + workingset_nodes 0 + workingset_refault 0 + workingset_activate 0 + workingset_restore 0 + workingset_nodereclaim 0 + nr_anon_pages 40299 + nr_mapped 25140 + nr_file_pages 234396 + nr_dirty 0 + nr_writeback 0 + nr_writeback_temp 0 + nr_shmem 395 + nr_shmem_hugepages 0 + nr_shmem_pmdmapped 0 + nr_file_hugepages 0 + nr_file_pmdmapped 0 + nr_anon_transparent_hugepages 0 + nr_vmscan_write 0 + nr_vmscan_immediate_reclaim 0 + nr_dirtied 168223 + nr_written 144616 + nr_kernel_misc_reclaimable 0 + nr_foll_pin_acquired 0 + nr_foll_pin_released 0 + pages free 3832 + min 68 + low 85 + high 102 + spanned 4095 + present 3997 + managed 3976 + protection: (0, 2871, 3795, 3795, 3795) + nr_free_pages 3832 + nr_zone_inactive_anon 0 + nr_zone_active_anon 0 + nr_zone_inactive_file 0 + nr_zone_active_file 0 + nr_zone_unevictable 0 + nr_zone_write_pending 0 + nr_mlock 0 + nr_page_table_pages 0 + nr_kernel_stack 0 + nr_bounce 0 + nr_zspages 0 + nr_free_cma 0 + numa_hit 3 + numa_miss 0 + numa_foreign 0 + numa_interleave 1 + numa_local 3 + numa_other 0 + pagesets + cpu: 0 + count: 0 + high: 0 + batch: 1 + vm stats threshold: 4 + cpu: 1 + count: 0 + high: 0 + batch: 1 + vm stats threshold: 4 + node_unreclaimable: 0 + start_pfn: 1 +Node 0, zone DMA32 + pages free 606010 + min 12729 + low 15911 + high 19093 + spanned 1044480 + present 782288 + managed 758708 + protection: (0, 0, 924, 924, 924) + nr_free_pages 606010 + nr_zone_inactive_anon 4 + nr_zone_active_anon 17380 + nr_zone_inactive_file 41785 + nr_zone_active_file 64545 + nr_zone_unevictable 5 + nr_zone_write_pending 0 + nr_mlock 5 + nr_page_table_pages 101 + nr_kernel_stack 224 + nr_bounce 0 + nr_zspages 0 + nr_free_cma 0 + numa_hit 576595 + numa_miss 0 + numa_foreign 0 + numa_interleave 2 + numa_local 576595 + numa_other 0 + pagesets + cpu: 0 + count: 253 + high: 378 + batch: 63 + vm stats threshold: 24 + cpu: 1 + count: 243 + high: 378 + batch: 63 + vm stats threshold: 24 + node_unreclaimable: 0 + start_pfn: 4096 +Node 0, zone Normal + pages free 5113 + min 4097 + low 5121 + high 6145 + spanned 262144 + present 262144 + managed 236634 + protection: (0, 0, 0, 0, 0) + nr_free_pages 5113 + nr_zone_inactive_anon 35 + nr_zone_active_anon 17459 + nr_zone_inactive_file 62387 + nr_zone_active_file 66203 + nr_zone_unevictable 4892 + nr_zone_write_pending 0 + nr_mlock 4892 + nr_page_table_pages 447 + nr_kernel_stack 5760 + nr_bounce 0 + nr_zspages 0 + nr_free_cma 0 + numa_hit 1338441 + numa_miss 0 + numa_foreign 0 + numa_interleave 66037 + numa_local 1338441 + numa_other 0 + pagesets + cpu: 0 + count: 340 + high: 378 + batch: 63 + vm stats threshold: 16 + cpu: 1 + count: 174 + high: 378 + batch: 63 + vm stats threshold: 16 + node_unreclaimable: 0 + start_pfn: 1048576 +Node 0, zone Movable + pages free 0 + min 0 + low 0 + high 0 + spanned 0 + present 0 + managed 0 + protection: (0, 0, 0, 0, 0) +Node 0, zone Device + pages free 0 + min 0 + low 0 + high 0 + spanned 0 + present 0 + managed 0 + protection: (0, 0, 0, 0, 0) diff --git a/tests/fixtures/linux-proc/zoneinfo2 b/tests/fixtures/linux-proc/zoneinfo2 new file mode 100644 index 00000000..53485c7e --- /dev/null +++ b/tests/fixtures/linux-proc/zoneinfo2 @@ -0,0 +1,363 @@ +Node 0, zone DMA + per-node stats + nr_inactive_anon 39 + nr_active_anon 34839 + nr_inactive_file 104172 + nr_active_file 130748 + nr_unevictable 4897 + nr_slab_reclaimable 49017 + nr_slab_unreclaimable 26177 + nr_isolated_anon 0 + nr_isolated_file 0 + workingset_nodes 0 + workingset_refault 0 + workingset_activate 0 + workingset_restore 0 + workingset_nodereclaim 0 + nr_anon_pages 40299 + nr_mapped 25140 + nr_file_pages 234396 + nr_dirty 0 + nr_writeback 0 + nr_writeback_temp 0 + nr_shmem 395 + nr_shmem_hugepages 0 + nr_shmem_pmdmapped 0 + nr_file_hugepages 0 + nr_file_pmdmapped 0 + nr_anon_transparent_hugepages 0 + nr_vmscan_write 0 + nr_vmscan_immediate_reclaim 0 + nr_dirtied 168223 + nr_written 144616 + nr_kernel_misc_reclaimable 0 + nr_foll_pin_acquired 0 + nr_foll_pin_released 0 + pages free 3832 + min 68 + low 85 + high 102 + spanned 4095 + present 3997 + managed 3976 + protection: (0, 2871, 3795, 3795, 3795) + nr_free_pages 3832 + nr_zone_inactive_anon 0 + nr_zone_active_anon 0 + nr_zone_inactive_file 0 + nr_zone_active_file 0 + nr_zone_unevictable 0 + nr_zone_write_pending 0 + nr_mlock 0 + nr_page_table_pages 0 + nr_kernel_stack 0 + nr_bounce 0 + nr_zspages 0 + nr_free_cma 0 + numa_hit 3 + numa_miss 0 + numa_foreign 0 + numa_interleave 1 + numa_local 3 + numa_other 0 + pagesets + cpu: 0 + count: 0 + high: 0 + batch: 1 + vm stats threshold: 4 + cpu: 1 + count: 0 + high: 0 + batch: 1 + vm stats threshold: 4 + node_unreclaimable: 0 + start_pfn: 1 +Node 0, zone DMA32 + pages free 606010 + min 12729 + low 15911 + high 19093 + spanned 1044480 + present 782288 + managed 758708 + protection: (0, 0, 924, 924, 924) + nr_free_pages 606010 + nr_zone_inactive_anon 4 + nr_zone_active_anon 17380 + nr_zone_inactive_file 41785 + nr_zone_active_file 64545 + nr_zone_unevictable 5 + nr_zone_write_pending 0 + nr_mlock 5 + nr_page_table_pages 101 + nr_kernel_stack 224 + nr_bounce 0 + nr_zspages 0 + nr_free_cma 0 + numa_hit 576595 + numa_miss 0 + numa_foreign 0 + numa_interleave 2 + numa_local 576595 + numa_other 0 + pagesets + cpu: 0 + count: 253 + high: 378 + batch: 63 + vm stats threshold: 24 + cpu: 1 + count: 243 + high: 378 + batch: 63 + vm stats threshold: 24 + node_unreclaimable: 0 + start_pfn: 4096 +Node 0, zone Normal + pages free 5113 + min 4097 + low 5121 + high 6145 + spanned 262144 + present 262144 + managed 236634 + protection: (0, 0, 0, 0, 0) + nr_free_pages 5113 + nr_zone_inactive_anon 35 + nr_zone_active_anon 17459 + nr_zone_inactive_file 62387 + nr_zone_active_file 66203 + nr_zone_unevictable 4892 + nr_zone_write_pending 0 + nr_mlock 4892 + nr_page_table_pages 447 + nr_kernel_stack 5760 + nr_bounce 0 + nr_zspages 0 + nr_free_cma 0 + numa_hit 1338441 + numa_miss 0 + numa_foreign 0 + numa_interleave 66037 + numa_local 1338441 + numa_other 0 + pagesets + cpu: 0 + count: 340 + high: 378 + batch: 63 + vm stats threshold: 16 + cpu: 1 + count: 174 + high: 378 + batch: 63 + vm stats threshold: 16 + node_unreclaimable: 0 + start_pfn: 1048576 +Node 0, zone Movable + pages free 0 + min 0 + low 0 + high 0 + spanned 0 + present 0 + managed 0 + protection: (0, 0, 0, 0, 0) +Node 0, zone Device + pages free 0 + min 0 + low 0 + high 0 + spanned 0 + present 0 + managed 0 + protection: (0, 0, 0, 0, 0) +Node 1, zone DMA + per-node stats + nr_inactive_anon 39 + nr_active_anon 34839 + nr_inactive_file 104172 + nr_active_file 130748 + nr_unevictable 4897 + nr_slab_reclaimable 49017 + nr_slab_unreclaimable 26177 + nr_isolated_anon 0 + nr_isolated_file 0 + workingset_nodes 0 + workingset_refault 0 + workingset_activate 0 + workingset_restore 0 + workingset_nodereclaim 0 + nr_anon_pages 40299 + nr_mapped 25140 + nr_file_pages 234396 + nr_dirty 0 + nr_writeback 0 + nr_writeback_temp 0 + nr_shmem 395 + nr_shmem_hugepages 0 + nr_shmem_pmdmapped 0 + nr_file_hugepages 0 + nr_file_pmdmapped 0 + nr_anon_transparent_hugepages 0 + nr_vmscan_write 0 + nr_vmscan_immediate_reclaim 0 + nr_dirtied 168223 + nr_written 144616 + nr_kernel_misc_reclaimable 0 + nr_foll_pin_acquired 0 + nr_foll_pin_released 0 + pages free 3832 + min 68 + low 85 + high 102 + spanned 4095 + present 3997 + managed 3976 + protection: (0, 2871, 3795, 3795, 3795) + nr_free_pages 3832 + nr_zone_inactive_anon 0 + nr_zone_active_anon 0 + nr_zone_inactive_file 0 + nr_zone_active_file 0 + nr_zone_unevictable 0 + nr_zone_write_pending 0 + nr_mlock 0 + nr_page_table_pages 0 + nr_kernel_stack 0 + nr_bounce 0 + nr_zspages 0 + nr_free_cma 0 + numa_hit 3 + numa_miss 0 + numa_foreign 0 + numa_interleave 1 + numa_local 3 + numa_other 0 + pagesets + cpu: 0 + count: 0 + high: 0 + batch: 1 + vm stats threshold: 4 + cpu: 1 + count: 0 + high: 0 + batch: 1 + vm stats threshold: 4 + node_unreclaimable: 0 + start_pfn: 1 +Node 1, zone DMA32 + pages free 606010 + min 12729 + low 15911 + high 19093 + spanned 1044480 + present 782288 + managed 758708 + protection: (0, 0, 924, 924, 924) + nr_free_pages 606010 + nr_zone_inactive_anon 4 + nr_zone_active_anon 17380 + nr_zone_inactive_file 41785 + nr_zone_active_file 64545 + nr_zone_unevictable 5 + nr_zone_write_pending 0 + nr_mlock 5 + nr_page_table_pages 101 + nr_kernel_stack 224 + nr_bounce 0 + nr_zspages 0 + nr_free_cma 0 + numa_hit 576595 + numa_miss 0 + numa_foreign 0 + numa_interleave 2 + numa_local 576595 + numa_other 0 + pagesets + cpu: 0 + count: 253 + high: 378 + batch: 63 + vm stats threshold: 24 + cpu: 1 + count: 243 + high: 378 + batch: 63 + vm stats threshold: 24 + node_unreclaimable: 0 + start_pfn: 4096 +Node 1, zone Normal + pages free 5113 + min 4097 + low 5121 + high 6145 + spanned 262144 + present 262144 + managed 236634 + protection: (0, 0, 0, 0, 0) + nr_free_pages 5113 + nr_zone_inactive_anon 35 + nr_zone_active_anon 17459 + nr_zone_inactive_file 62387 + nr_zone_active_file 66203 + nr_zone_unevictable 4892 + nr_zone_write_pending 0 + nr_mlock 4892 + nr_page_table_pages 447 + nr_kernel_stack 5760 + nr_bounce 0 + nr_zspages 0 + nr_free_cma 0 + numa_hit 1338441 + numa_miss 0 + numa_foreign 0 + numa_interleave 66037 + numa_local 1338441 + numa_other 0 + pagesets + cpu: 0 + count: 340 + high: 378 + batch: 63 + vm stats threshold: 16 + cpu: 1 + count: 174 + high: 378 + batch: 63 + vm stats threshold: 16 + node_unreclaimable: 0 + start_pfn: 1048576 +Node 1, zone Movable + pages free 0 + min 0 + low 0 + high 0 + spanned 0 + present 0 + managed 0 + protection: (0, 0, 0, 0, 0) +Node 1, zone Device + pages free 0 + min 0 + low 0 + high 0 + spanned 0 + present 0 + managed 0 + protection: (0, 0, 0, 0, 0) + pagesets + cpu: 0 + count: 8 + high: 8 + batch: 8 + vm stats threshold: 8 + cpu: 1 + count: 9 + high: 9 + batch: 9 + vm stats threshold: 9 + node_unreclaimable: 9 + start_pfn: 9 diff --git a/tests/test_proc_consoles.py b/tests/test_proc_consoles.py new file mode 100644 index 00000000..928884b0 --- /dev/null +++ b/tests/test_proc_consoles.py @@ -0,0 +1,54 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_consoles + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_consoles': ( + 'fixtures/linux-proc/consoles', + 'fixtures/linux-proc/consoles.json'), + 'proc_consoles2': ( + 'fixtures/linux-proc/consoles2', + 'fixtures/linux-proc/consoles2.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_consoles_nodata(self): + """ + Test 'proc_consoles' with no data + """ + self.assertEqual(jc.parsers.proc_consoles.parse('', quiet=True), []) + + def test_proc_consoles(self): + """ + Test '/proc/consoles' + """ + self.assertEqual(jc.parsers.proc_consoles.parse(self.f_in['proc_consoles'], quiet=True), + self.f_json['proc_consoles']) + + def test_proc_consoles2(self): + """ + Test '/proc/consoles2' + """ + self.assertEqual(jc.parsers.proc_consoles.parse(self.f_in['proc_consoles2'], quiet=True), + self.f_json['proc_consoles2']) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/test_proc_cpuinfo.py b/tests/test_proc_cpuinfo.py new file mode 100644 index 00000000..e95a8be2 --- /dev/null +++ b/tests/test_proc_cpuinfo.py @@ -0,0 +1,54 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_cpuinfo + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_cpuinfo': ( + 'fixtures/linux-proc/cpuinfo', + 'fixtures/linux-proc/cpuinfo.json'), + 'proc_cpuinfo2': ( + 'fixtures/linux-proc/cpuinfo2', + 'fixtures/linux-proc/cpuinfo2.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_cpuinfo_nodata(self): + """ + Test 'proc_cpuinfo' with no data + """ + self.assertEqual(jc.parsers.proc_cpuinfo.parse('', quiet=True), []) + + def test_proc_cpuinfo(self): + """ + Test '/proc/buddyinfo' + """ + self.assertEqual(jc.parsers.proc_cpuinfo.parse(self.f_in['proc_cpuinfo'], quiet=True), + self.f_json['proc_cpuinfo']) + + def test_proc_cpuinfo2(self): + """ + Test '/proc/buddyinfo2' + """ + self.assertEqual(jc.parsers.proc_cpuinfo.parse(self.f_in['proc_cpuinfo2'], quiet=True), + self.f_json['proc_cpuinfo2']) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/test_proc_crypto.py b/tests/test_proc_crypto.py new file mode 100644 index 00000000..0cc01a02 --- /dev/null +++ b/tests/test_proc_crypto.py @@ -0,0 +1,44 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_crypto + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_crypto': ( + 'fixtures/linux-proc/crypto', + 'fixtures/linux-proc/crypto.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_crypto_nodata(self): + """ + Test 'proc_crypto' with no data + """ + self.assertEqual(jc.parsers.proc_crypto.parse('', quiet=True), []) + + def test_proc_crypto(self): + """ + Test '/proc/crypto' + """ + self.assertEqual(jc.parsers.proc_crypto.parse(self.f_in['proc_crypto'], quiet=True), + self.f_json['proc_crypto']) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/test_proc_devices.py b/tests/test_proc_devices.py new file mode 100644 index 00000000..6874a4c7 --- /dev/null +++ b/tests/test_proc_devices.py @@ -0,0 +1,44 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_devices + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_devices': ( + 'fixtures/linux-proc/devices', + 'fixtures/linux-proc/devices.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_devices_nodata(self): + """ + Test 'proc_devices' with no data + """ + self.assertEqual(jc.parsers.proc_devices.parse('', quiet=True), {}) + + def test_proc_devices(self): + """ + Test '/proc/devices' + """ + self.assertEqual(jc.parsers.proc_devices.parse(self.f_in['proc_devices'], quiet=True), + self.f_json['proc_devices']) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/test_proc_diskstats.py b/tests/test_proc_diskstats.py new file mode 100644 index 00000000..fcbb693e --- /dev/null +++ b/tests/test_proc_diskstats.py @@ -0,0 +1,44 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_diskstats + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_diskstats': ( + 'fixtures/linux-proc/diskstats', + 'fixtures/linux-proc/diskstats.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_diskstats_nodata(self): + """ + Test 'proc_diskstats' with no data + """ + self.assertEqual(jc.parsers.proc_diskstats.parse('', quiet=True), []) + + def test_proc_diskstats(self): + """ + Test '/proc/diskstats' + """ + self.assertEqual(jc.parsers.proc_diskstats.parse(self.f_in['proc_diskstats'], quiet=True), + self.f_json['proc_diskstats']) + + +if __name__ == '__main__': + unittest.main() From 74c8b0678ac6b20b6b21424056ffc5222d0edf51 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Fri, 23 Sep 2022 17:46:52 -0700 Subject: [PATCH 088/124] add proc tests --- jc/parsers/proc_ioports.py | 2 +- tests/fixtures/linux-proc/driver_rtc.json | 1 + tests/fixtures/linux-proc/filesystems.json | 1 + tests/fixtures/linux-proc/interrupts.json | 1 + tests/fixtures/linux-proc/iomem.json | 1 + tests/fixtures/linux-proc/ioports.json | 1 + tests/fixtures/linux-proc/loadavg.json | 1 + tests/fixtures/linux-proc/locks.json | 1 + tests/fixtures/linux-proc/meminfo.json | 1 + tests/fixtures/linux-proc/modules.json | 1 + tests/fixtures/linux-proc/mtrr.json | 1 + tests/fixtures/linux-proc/pagetypeinfo.json | 1 + tests/fixtures/linux-proc/partitions.json | 1 + tests/fixtures/linux-proc/slabinfo.json | 1 + tests/fixtures/linux-proc/softirqs.json | 1 + tests/fixtures/linux-proc/stat.json | 1 + tests/fixtures/linux-proc/stat2.json | 1 + tests/fixtures/linux-proc/swaps.json | 1 + tests/fixtures/linux-proc/uptime.json | 1 + tests/fixtures/linux-proc/version.json | 1 + tests/fixtures/linux-proc/version2.json | 1 + tests/fixtures/linux-proc/version3.json | 1 + tests/fixtures/linux-proc/vmallocinfo.json | 1 + tests/fixtures/linux-proc/vmstat.json | 1 + tests/fixtures/linux-proc/zoneinfo.json | 1 + tests/fixtures/linux-proc/zoneinfo2.json | 1 + tests/test_proc_driver_rtc.py | 44 ++++++++++++++ tests/test_proc_filesystems.py | 44 ++++++++++++++ tests/test_proc_interrupts.py | 44 ++++++++++++++ tests/test_proc_iomem.py | 44 ++++++++++++++ tests/test_proc_ioports.py | 44 ++++++++++++++ tests/test_proc_loadavg.py | 44 ++++++++++++++ tests/test_proc_locks.py | 44 ++++++++++++++ tests/test_proc_meminfo.py | 44 ++++++++++++++ tests/test_proc_modules.py | 44 ++++++++++++++ tests/test_proc_mtrr.py | 44 ++++++++++++++ tests/test_proc_pagetypeinfo.py | 44 ++++++++++++++ tests/test_proc_partitions.py | 44 ++++++++++++++ tests/test_proc_slabinfo.py | 44 ++++++++++++++ tests/test_proc_softirqs.py | 44 ++++++++++++++ tests/test_proc_stat.py | 54 +++++++++++++++++ tests/test_proc_swaps.py | 44 ++++++++++++++ tests/test_proc_uptime.py | 44 ++++++++++++++ tests/test_proc_version.py | 64 +++++++++++++++++++++ tests/test_proc_vmallocinfo.py | 44 ++++++++++++++ tests/test_proc_vmstat.py | 44 ++++++++++++++ tests/test_proc_zoneinfo.py | 54 +++++++++++++++++ 47 files changed, 990 insertions(+), 1 deletion(-) create mode 100644 tests/fixtures/linux-proc/driver_rtc.json create mode 100644 tests/fixtures/linux-proc/filesystems.json create mode 100644 tests/fixtures/linux-proc/interrupts.json create mode 100644 tests/fixtures/linux-proc/iomem.json create mode 100644 tests/fixtures/linux-proc/ioports.json create mode 100644 tests/fixtures/linux-proc/loadavg.json create mode 100644 tests/fixtures/linux-proc/locks.json create mode 100644 tests/fixtures/linux-proc/meminfo.json create mode 100644 tests/fixtures/linux-proc/modules.json create mode 100644 tests/fixtures/linux-proc/mtrr.json create mode 100644 tests/fixtures/linux-proc/pagetypeinfo.json create mode 100644 tests/fixtures/linux-proc/partitions.json create mode 100644 tests/fixtures/linux-proc/slabinfo.json create mode 100644 tests/fixtures/linux-proc/softirqs.json create mode 100644 tests/fixtures/linux-proc/stat.json create mode 100644 tests/fixtures/linux-proc/stat2.json create mode 100644 tests/fixtures/linux-proc/swaps.json create mode 100644 tests/fixtures/linux-proc/uptime.json create mode 100644 tests/fixtures/linux-proc/version.json create mode 100644 tests/fixtures/linux-proc/version2.json create mode 100644 tests/fixtures/linux-proc/version3.json create mode 100644 tests/fixtures/linux-proc/vmallocinfo.json create mode 100644 tests/fixtures/linux-proc/vmstat.json create mode 100644 tests/fixtures/linux-proc/zoneinfo.json create mode 100644 tests/fixtures/linux-proc/zoneinfo2.json create mode 100644 tests/test_proc_driver_rtc.py create mode 100644 tests/test_proc_filesystems.py create mode 100644 tests/test_proc_interrupts.py create mode 100644 tests/test_proc_iomem.py create mode 100644 tests/test_proc_ioports.py create mode 100644 tests/test_proc_loadavg.py create mode 100644 tests/test_proc_locks.py create mode 100644 tests/test_proc_meminfo.py create mode 100644 tests/test_proc_modules.py create mode 100644 tests/test_proc_mtrr.py create mode 100644 tests/test_proc_pagetypeinfo.py create mode 100644 tests/test_proc_partitions.py create mode 100644 tests/test_proc_slabinfo.py create mode 100644 tests/test_proc_softirqs.py create mode 100644 tests/test_proc_stat.py create mode 100644 tests/test_proc_swaps.py create mode 100644 tests/test_proc_uptime.py create mode 100644 tests/test_proc_version.py create mode 100644 tests/test_proc_vmallocinfo.py create mode 100644 tests/test_proc_vmstat.py create mode 100644 tests/test_proc_zoneinfo.py diff --git a/jc/parsers/proc_ioports.py b/jc/parsers/proc_ioports.py index 0c861b0d..a1b6de0f 100644 --- a/jc/parsers/proc_ioports.py +++ b/jc/parsers/proc_ioports.py @@ -108,6 +108,6 @@ def parse( jc.utils.compatibility(__name__, info.compatible, quiet) jc.utils.input_type_check(data) - raw_output: List = proc_iomem.parse(data) + raw_output: List = proc_iomem.parse(data, quiet=True, raw=raw) return raw_output if raw else _process(raw_output) diff --git a/tests/fixtures/linux-proc/driver_rtc.json b/tests/fixtures/linux-proc/driver_rtc.json new file mode 100644 index 00000000..e93b64b0 --- /dev/null +++ b/tests/fixtures/linux-proc/driver_rtc.json @@ -0,0 +1 @@ +{"rtc_time":"16:09:21","rtc_date":"2022-09-03","alrm_time":"00:00:00","alrm_date":"2022-09-03","alarm_IRQ":false,"alrm_pending":false,"update IRQ enabled":false,"periodic IRQ enabled":false,"periodic IRQ frequency":1024,"max user IRQ frequency":64,"24hr":true,"periodic_IRQ":false,"update_IRQ":false,"HPET_emulated":true,"BCD":true,"DST_enable":false,"periodic_freq":1024,"batt_status":"okay"} diff --git a/tests/fixtures/linux-proc/filesystems.json b/tests/fixtures/linux-proc/filesystems.json new file mode 100644 index 00000000..756b115f --- /dev/null +++ b/tests/fixtures/linux-proc/filesystems.json @@ -0,0 +1 @@ +[{"filesystem":"sysfs","nodev":true},{"filesystem":"tmpfs","nodev":true},{"filesystem":"bdev","nodev":true},{"filesystem":"proc","nodev":true},{"filesystem":"cgroup","nodev":true},{"filesystem":"cgroup2","nodev":true},{"filesystem":"cpuset","nodev":true},{"filesystem":"devtmpfs","nodev":true},{"filesystem":"configfs","nodev":true},{"filesystem":"debugfs","nodev":true},{"filesystem":"tracefs","nodev":true},{"filesystem":"securityfs","nodev":true},{"filesystem":"sockfs","nodev":true},{"filesystem":"bpf","nodev":true},{"filesystem":"pipefs","nodev":true},{"filesystem":"ramfs","nodev":true},{"filesystem":"hugetlbfs","nodev":true},{"filesystem":"devpts","nodev":true},{"filesystem":"ext3","nodev":false},{"filesystem":"ext2","nodev":false},{"filesystem":"ext4","nodev":false},{"filesystem":"squashfs","nodev":false},{"filesystem":"vfat","nodev":false},{"filesystem":"ecryptfs","nodev":true},{"filesystem":"fuseblk","nodev":false},{"filesystem":"fuse","nodev":true},{"filesystem":"fusectl","nodev":true},{"filesystem":"mqueue","nodev":true},{"filesystem":"pstore","nodev":true},{"filesystem":"btrfs","nodev":false},{"filesystem":"autofs","nodev":true},{"filesystem":"binfmt_misc","nodev":true}] diff --git a/tests/fixtures/linux-proc/interrupts.json b/tests/fixtures/linux-proc/interrupts.json new file mode 100644 index 00000000..f673d418 --- /dev/null +++ b/tests/fixtures/linux-proc/interrupts.json @@ -0,0 +1 @@ +[{"irq":"0","cpu_num":2,"interrupts":[18,0],"type":"IO-APIC","device":["2-edge","timer"]},{"irq":"1","cpu_num":2,"interrupts":[0,73],"type":"IO-APIC","device":["1-edge","i8042"]},{"irq":"8","cpu_num":2,"interrupts":[1,0],"type":"IO-APIC","device":["8-edge","rtc0"]},{"irq":"9","cpu_num":2,"interrupts":[0,0],"type":"IO-APIC","device":["9-fasteoi","acpi"]},{"irq":"12","cpu_num":2,"interrupts":[18,0],"type":"IO-APIC","device":["12-edge","i8042"]},{"irq":"14","cpu_num":2,"interrupts":[0,0],"type":"IO-APIC","device":["14-edge","ata_piix"]},{"irq":"15","cpu_num":2,"interrupts":[0,0],"type":"IO-APIC","device":["15-edge","ata_piix"]},{"irq":"16","cpu_num":2,"interrupts":[3545,0],"type":"IO-APIC","device":["16-fasteoi","vmwgfx,","snd_ens1371"]},{"irq":"17","cpu_num":2,"interrupts":[33795,0],"type":"IO-APIC","device":["17-fasteoi","ehci_hcd:usb1,","ioc0"]},{"irq":"18","cpu_num":2,"interrupts":[0,368326],"type":"IO-APIC","device":["18-fasteoi","uhci_hcd:usb2"]},{"irq":"19","cpu_num":2,"interrupts":[0,126705],"type":"IO-APIC","device":["19-fasteoi","ens33"]},{"irq":"24","cpu_num":2,"interrupts":[0,0],"type":"PCI-MSI","device":["344064-edge","PCIe","PME,","pciehp"]},{"irq":"25","cpu_num":2,"interrupts":[0,0],"type":"PCI-MSI","device":["346112-edge","PCIe","PME,","pciehp"]},{"irq":"26","cpu_num":2,"interrupts":[0,0],"type":"PCI-MSI","device":["348160-edge","PCIe","PME,","pciehp"]},{"irq":"27","cpu_num":2,"interrupts":[0,0],"type":"PCI-MSI","device":["350208-edge","PCIe","PME,","pciehp"]},{"irq":"28","cpu_num":2,"interrupts":[0,0],"type":"PCI-MSI","device":["352256-edge","PCIe","PME,","pciehp"]},{"irq":"29","cpu_num":2,"interrupts":[0,0],"type":"PCI-MSI","device":["354304-edge","PCIe","PME,","pciehp"]},{"irq":"30","cpu_num":2,"interrupts":[0,0],"type":"PCI-MSI","device":["356352-edge","PCIe","PME,","pciehp"]},{"irq":"31","cpu_num":2,"interrupts":[0,0],"type":"PCI-MSI","device":["358400-edge","PCIe","PME,","pciehp"]},{"irq":"32","cpu_num":2,"interrupts":[0,0],"type":"PCI-MSI","device":["360448-edge","PCIe","PME,","pciehp"]},{"irq":"33","cpu_num":2,"interrupts":[0,0],"type":"PCI-MSI","device":["362496-edge","PCIe","PME,","pciehp"]},{"irq":"34","cpu_num":2,"interrupts":[0,0],"type":"PCI-MSI","device":["364544-edge","PCIe","PME,","pciehp"]},{"irq":"35","cpu_num":2,"interrupts":[0,0],"type":"PCI-MSI","device":["366592-edge","PCIe","PME,","pciehp"]},{"irq":"36","cpu_num":2,"interrupts":[0,0],"type":"PCI-MSI","device":["368640-edge","PCIe","PME,","pciehp"]},{"irq":"37","cpu_num":2,"interrupts":[0,0],"type":"PCI-MSI","device":["370688-edge","PCIe","PME,","pciehp"]},{"irq":"38","cpu_num":2,"interrupts":[0,0],"type":"PCI-MSI","device":["372736-edge","PCIe","PME,","pciehp"]},{"irq":"39","cpu_num":2,"interrupts":[0,0],"type":"PCI-MSI","device":["374784-edge","PCIe","PME,","pciehp"]},{"irq":"40","cpu_num":2,"interrupts":[0,0],"type":"PCI-MSI","device":["376832-edge","PCIe","PME,","pciehp"]},{"irq":"41","cpu_num":2,"interrupts":[0,0],"type":"PCI-MSI","device":["378880-edge","PCIe","PME,","pciehp"]},{"irq":"42","cpu_num":2,"interrupts":[0,0],"type":"PCI-MSI","device":["380928-edge","PCIe","PME,","pciehp"]},{"irq":"43","cpu_num":2,"interrupts":[0,0],"type":"PCI-MSI","device":["382976-edge","PCIe","PME,","pciehp"]},{"irq":"44","cpu_num":2,"interrupts":[0,0],"type":"PCI-MSI","device":["385024-edge","PCIe","PME,","pciehp"]},{"irq":"45","cpu_num":2,"interrupts":[0,0],"type":"PCI-MSI","device":["387072-edge","PCIe","PME,","pciehp"]},{"irq":"46","cpu_num":2,"interrupts":[0,0],"type":"PCI-MSI","device":["389120-edge","PCIe","PME,","pciehp"]},{"irq":"47","cpu_num":2,"interrupts":[0,0],"type":"PCI-MSI","device":["391168-edge","PCIe","PME,","pciehp"]},{"irq":"48","cpu_num":2,"interrupts":[0,0],"type":"PCI-MSI","device":["393216-edge","PCIe","PME,","pciehp"]},{"irq":"49","cpu_num":2,"interrupts":[0,0],"type":"PCI-MSI","device":["395264-edge","PCIe","PME,","pciehp"]},{"irq":"50","cpu_num":2,"interrupts":[0,0],"type":"PCI-MSI","device":["397312-edge","PCIe","PME,","pciehp"]},{"irq":"51","cpu_num":2,"interrupts":[0,0],"type":"PCI-MSI","device":["399360-edge","PCIe","PME,","pciehp"]},{"irq":"52","cpu_num":2,"interrupts":[0,0],"type":"PCI-MSI","device":["401408-edge","PCIe","PME,","pciehp"]},{"irq":"53","cpu_num":2,"interrupts":[0,0],"type":"PCI-MSI","device":["403456-edge","PCIe","PME,","pciehp"]},{"irq":"54","cpu_num":2,"interrupts":[0,0],"type":"PCI-MSI","device":["405504-edge","PCIe","PME,","pciehp"]},{"irq":"55","cpu_num":2,"interrupts":[0,0],"type":"PCI-MSI","device":["407552-edge","PCIe","PME,","pciehp"]},{"irq":"56","cpu_num":2,"interrupts":[0,7937],"type":"PCI-MSI","device":["1130496-edge","ahci[0000:02:05.0]"]},{"irq":"57","cpu_num":2,"interrupts":[0,2061],"type":"PCI-MSI","device":["129024-edge","vmw_vmci"]},{"irq":"58","cpu_num":2,"interrupts":[0,0],"type":"PCI-MSI","device":["129025-edge","vmw_vmci"]},{"irq":"NMI","cpu_num":2,"interrupts":[0,0],"type":"Non-maskable interrupts","device":null},{"irq":"LOC","cpu_num":2,"interrupts":[366351,997227],"type":"Local timer interrupts","device":null},{"irq":"SPU","cpu_num":2,"interrupts":[0,0],"type":"Spurious interrupts","device":null},{"irq":"PMI","cpu_num":2,"interrupts":[0,0],"type":"Performance monitoring interrupts","device":null},{"irq":"IWI","cpu_num":2,"interrupts":[0,3],"type":"IRQ work interrupts","device":null},{"irq":"RTR","cpu_num":2,"interrupts":[0,0],"type":"APIC ICR read retries","device":null},{"irq":"RES","cpu_num":2,"interrupts":[2763,2933],"type":"Rescheduling interrupts","device":null},{"irq":"CAL","cpu_num":2,"interrupts":[175136,130374],"type":"Function call interrupts","device":null},{"irq":"TLB","cpu_num":2,"interrupts":[3155,3965],"type":"TLB shootdowns","device":null},{"irq":"TRM","cpu_num":2,"interrupts":[0,0],"type":"Thermal event interrupts","device":null},{"irq":"THR","cpu_num":2,"interrupts":[0,0],"type":"Threshold APIC interrupts","device":null},{"irq":"DFR","cpu_num":2,"interrupts":[0,0],"type":"Deferred Error APIC interrupts","device":null},{"irq":"MCE","cpu_num":2,"interrupts":[0,0],"type":"Machine check exceptions","device":null},{"irq":"MCP","cpu_num":2,"interrupts":[49,50],"type":"Machine check polls","device":null},{"irq":"ERR","cpu_num":2,"interrupts":[0],"type":"Machine check polls","device":null},{"irq":"MIS","cpu_num":2,"interrupts":[0],"type":"Machine check polls","device":null},{"irq":"PIN","cpu_num":2,"interrupts":[0,0],"type":"Posted-interrupt notification event","device":null},{"irq":"NPI","cpu_num":2,"interrupts":[0,0],"type":"Nested posted-interrupt event","device":null},{"irq":"PIW","cpu_num":2,"interrupts":[0,0],"type":"Posted-interrupt wakeup event","device":null}] diff --git a/tests/fixtures/linux-proc/iomem.json b/tests/fixtures/linux-proc/iomem.json new file mode 100644 index 00000000..a99da186 --- /dev/null +++ b/tests/fixtures/linux-proc/iomem.json @@ -0,0 +1 @@ +[{"start":"00000000","end":"00000fff","device":"Reserved"},{"start":"00001000","end":"0009e7ff","device":"System RAM"},{"start":"0009e800","end":"0009ffff","device":"Reserved"},{"start":"000a0000","end":"000bffff","device":"PCI Bus 0000:00"},{"start":"000c0000","end":"000c7fff","device":"Video ROM"},{"start":"000ca000","end":"000cafff","device":"Adapter ROM"},{"start":"000cb000","end":"000ccfff","device":"Adapter ROM"},{"start":"000d0000","end":"000d3fff","device":"PCI Bus 0000:00"},{"start":"000d4000","end":"000d7fff","device":"PCI Bus 0000:00"},{"start":"000d8000","end":"000dbfff","device":"PCI Bus 0000:00"},{"start":"000dc000","end":"000fffff","device":"Reserved"},{"start":"000f0000","end":"000fffff","device":"System ROM"},{"start":"00100000","end":"bfecffff","device":"System RAM"},{"start":"66e00000","end":"67c00d56","device":"Kernel code"},{"start":"67e00000","end":"686abfff","device":"Kernel rodata"},{"start":"68800000","end":"68a7a5bf","device":"Kernel data"},{"start":"68d36000","end":"691fffff","device":"Kernel bss"},{"start":"bfed0000","end":"bfefefff","device":"ACPI Tables"},{"start":"bfeff000","end":"bfefffff","device":"ACPI Non-volatile Storage"},{"start":"bff00000","end":"bfffffff","device":"System RAM"},{"start":"c0000000","end":"febfffff","device":"PCI Bus 0000:00"},{"start":"c0008000","end":"c000bfff","device":"0000:00:10.0"},{"start":"e5b00000","end":"e5bfffff","device":"PCI Bus 0000:22"},{"start":"e5c00000","end":"e5cfffff","device":"PCI Bus 0000:1a"},{"start":"e5d00000","end":"e5dfffff","device":"PCI Bus 0000:12"},{"start":"e5e00000","end":"e5efffff","device":"PCI Bus 0000:0a"},{"start":"e5f00000","end":"e5ffffff","device":"PCI Bus 0000:21"},{"start":"e6000000","end":"e60fffff","device":"PCI Bus 0000:19"},{"start":"e6100000","end":"e61fffff","device":"PCI Bus 0000:11"},{"start":"e6200000","end":"e62fffff","device":"PCI Bus 0000:09"},{"start":"e6300000","end":"e63fffff","device":"PCI Bus 0000:20"},{"start":"e6400000","end":"e64fffff","device":"PCI Bus 0000:18"},{"start":"e6500000","end":"e65fffff","device":"PCI Bus 0000:10"},{"start":"e6600000","end":"e66fffff","device":"PCI Bus 0000:08"},{"start":"e6700000","end":"e67fffff","device":"PCI Bus 0000:1f"},{"start":"e6800000","end":"e68fffff","device":"PCI Bus 0000:17"},{"start":"e6900000","end":"e69fffff","device":"PCI Bus 0000:0f"},{"start":"e6a00000","end":"e6afffff","device":"PCI Bus 0000:07"},{"start":"e6b00000","end":"e6bfffff","device":"PCI Bus 0000:1e"},{"start":"e6c00000","end":"e6cfffff","device":"PCI Bus 0000:16"},{"start":"e6d00000","end":"e6dfffff","device":"PCI Bus 0000:0e"},{"start":"e6e00000","end":"e6efffff","device":"PCI Bus 0000:06"},{"start":"e6f00000","end":"e6ffffff","device":"PCI Bus 0000:1d"},{"start":"e7000000","end":"e70fffff","device":"PCI Bus 0000:15"},{"start":"e7100000","end":"e71fffff","device":"PCI Bus 0000:0d"},{"start":"e7200000","end":"e72fffff","device":"PCI Bus 0000:05"},{"start":"e7300000","end":"e73fffff","device":"PCI Bus 0000:1c"},{"start":"e7400000","end":"e74fffff","device":"PCI Bus 0000:14"},{"start":"e7500000","end":"e75fffff","device":"PCI Bus 0000:0c"},{"start":"e7600000","end":"e76fffff","device":"PCI Bus 0000:04"},{"start":"e7700000","end":"e77fffff","device":"PCI Bus 0000:1b"},{"start":"e7800000","end":"e78fffff","device":"PCI Bus 0000:13"},{"start":"e7900000","end":"e79fffff","device":"PCI Bus 0000:0b"},{"start":"e7a00000","end":"e7afffff","device":"PCI Bus 0000:03"},{"start":"e7b00000","end":"e7ffffff","device":"PCI Bus 0000:02"},{"start":"e8000000","end":"efffffff","device":"0000:00:0f.0"},{"start":"e8000000","end":"efffffff","device":"vmwgfx probe"},{"start":"f0000000","end":"f7ffffff","device":"PCI MMCONFIG 0000 [bus 00-7f]"},{"start":"f0000000","end":"f7ffffff","device":"Reserved"},{"start":"f0000000","end":"f7ffffff","device":"pnp 00:06"},{"start":"fb500000","end":"fb5fffff","device":"PCI Bus 0000:22"},{"start":"fb600000","end":"fb6fffff","device":"PCI Bus 0000:1a"},{"start":"fb700000","end":"fb7fffff","device":"PCI Bus 0000:12"},{"start":"fb800000","end":"fb8fffff","device":"PCI Bus 0000:0a"},{"start":"fb900000","end":"fb9fffff","device":"PCI Bus 0000:21"},{"start":"fba00000","end":"fbafffff","device":"PCI Bus 0000:19"},{"start":"fbb00000","end":"fbbfffff","device":"PCI Bus 0000:11"},{"start":"fbc00000","end":"fbcfffff","device":"PCI Bus 0000:09"},{"start":"fbd00000","end":"fbdfffff","device":"PCI Bus 0000:20"},{"start":"fbe00000","end":"fbefffff","device":"PCI Bus 0000:18"},{"start":"fbf00000","end":"fbffffff","device":"PCI Bus 0000:10"},{"start":"fc000000","end":"fc0fffff","device":"PCI Bus 0000:08"},{"start":"fc100000","end":"fc1fffff","device":"PCI Bus 0000:1f"},{"start":"fc200000","end":"fc2fffff","device":"PCI Bus 0000:17"},{"start":"fc300000","end":"fc3fffff","device":"PCI Bus 0000:0f"},{"start":"fc400000","end":"fc4fffff","device":"PCI Bus 0000:07"},{"start":"fc500000","end":"fc5fffff","device":"PCI Bus 0000:1e"},{"start":"fc600000","end":"fc6fffff","device":"PCI Bus 0000:16"},{"start":"fc700000","end":"fc7fffff","device":"PCI Bus 0000:0e"},{"start":"fc800000","end":"fc8fffff","device":"PCI Bus 0000:06"},{"start":"fc900000","end":"fc9fffff","device":"PCI Bus 0000:1d"},{"start":"fca00000","end":"fcafffff","device":"PCI Bus 0000:15"},{"start":"fcb00000","end":"fcbfffff","device":"PCI Bus 0000:0d"},{"start":"fcc00000","end":"fccfffff","device":"PCI Bus 0000:05"},{"start":"fcd00000","end":"fcdfffff","device":"PCI Bus 0000:1c"},{"start":"fce00000","end":"fcefffff","device":"PCI Bus 0000:14"},{"start":"fcf00000","end":"fcffffff","device":"PCI Bus 0000:0c"},{"start":"fd000000","end":"fd0fffff","device":"PCI Bus 0000:04"},{"start":"fd100000","end":"fd1fffff","device":"PCI Bus 0000:1b"},{"start":"fd200000","end":"fd2fffff","device":"PCI Bus 0000:13"},{"start":"fd300000","end":"fd3fffff","device":"PCI Bus 0000:0b"},{"start":"fd400000","end":"fd4fffff","device":"PCI Bus 0000:03"},{"start":"fd500000","end":"fdffffff","device":"PCI Bus 0000:02"},{"start":"fd500000","end":"fd50ffff","device":"0000:02:01.0"},{"start":"fd510000","end":"fd51ffff","device":"0000:02:05.0"},{"start":"fd5c0000","end":"fd5dffff","device":"0000:02:01.0"},{"start":"fd5c0000","end":"fd5dffff","device":"e1000"},{"start":"fd5ee000","end":"fd5eefff","device":"0000:02:05.0"},{"start":"fd5ee000","end":"fd5eefff","device":"ahci"},{"start":"fd5ef000","end":"fd5effff","device":"0000:02:03.0"},{"start":"fd5ef000","end":"fd5effff","device":"ehci_hcd"},{"start":"fdff0000","end":"fdffffff","device":"0000:02:01.0"},{"start":"fdff0000","end":"fdffffff","device":"e1000"},{"start":"fe000000","end":"fe7fffff","device":"0000:00:0f.0"},{"start":"fe000000","end":"fe7fffff","device":"vmwgfx probe"},{"start":"fe800000","end":"fe9fffff","device":"pnp 00:06"},{"start":"feba0000","end":"febbffff","device":"0000:00:10.0"},{"start":"feba0000","end":"febbffff","device":"mpt"},{"start":"febc0000","end":"febdffff","device":"0000:00:10.0"},{"start":"febc0000","end":"febdffff","device":"mpt"},{"start":"febfe000","end":"febfffff","device":"0000:00:07.7"},{"start":"fec00000","end":"fec0ffff","device":"Reserved"},{"start":"fec00000","end":"fec003ff","device":"IOAPIC 0"},{"start":"fed00000","end":"fed003ff","device":"HPET 0"},{"start":"fed00000","end":"fed003ff","device":"pnp 00:04"},{"start":"fee00000","end":"fee00fff","device":"Local APIC"},{"start":"fee00000","end":"fee00fff","device":"Reserved"},{"start":"fffe0000","end":"ffffffff","device":"Reserved"},{"start":"100000000","end":"13fffffff","device":"System RAM"}] diff --git a/tests/fixtures/linux-proc/ioports.json b/tests/fixtures/linux-proc/ioports.json new file mode 100644 index 00000000..be0f65e8 --- /dev/null +++ b/tests/fixtures/linux-proc/ioports.json @@ -0,0 +1 @@ +[{"start":"0000","end":"0cf7","device":"PCI Bus 0000:00"},{"start":"0000","end":"001f","device":"dma1"},{"start":"0020","end":"0021","device":"PNP0001:00"},{"start":"0020","end":"0021","device":"pic1"},{"start":"0040","end":"0043","device":"timer0"},{"start":"0050","end":"0053","device":"timer1"},{"start":"0060","end":"0060","device":"keyboard"},{"start":"0061","end":"0061","device":"PNP0800:00"},{"start":"0064","end":"0064","device":"keyboard"},{"start":"0070","end":"0071","device":"rtc0"},{"start":"0080","end":"008f","device":"dma page reg"},{"start":"00a0","end":"00a1","device":"PNP0001:00"},{"start":"00a0","end":"00a1","device":"pic2"},{"start":"00c0","end":"00df","device":"dma2"},{"start":"00f0","end":"00ff","device":"fpu"},{"start":"0170","end":"0177","device":"0000:00:07.1"},{"start":"0170","end":"0177","device":"ata_piix"},{"start":"01f0","end":"01f7","device":"0000:00:07.1"},{"start":"01f0","end":"01f7","device":"ata_piix"},{"start":"0376","end":"0376","device":"0000:00:07.1"},{"start":"0376","end":"0376","device":"ata_piix"},{"start":"03c0","end":"03df","device":"vga+"},{"start":"03f6","end":"03f6","device":"0000:00:07.1"},{"start":"03f6","end":"03f6","device":"ata_piix"},{"start":"03f8","end":"03ff","device":"serial"},{"start":"04d0","end":"04d1","device":"PNP0001:00"},{"start":"0cf0","end":"0cf1","device":"pnp 00:00"},{"start":"0cf8","end":"0cff","device":"PCI conf1"},{"start":"0d00","end":"feff","device":"PCI Bus 0000:00"},{"start":"1000","end":"103f","device":"0000:00:07.3"},{"start":"1000","end":"103f","device":"pnp 00:00"},{"start":"1000","end":"1003","device":"ACPI PM1a_EVT_BLK"},{"start":"1004","end":"1005","device":"ACPI PM1a_CNT_BLK"},{"start":"1008","end":"100b","device":"ACPI PM_TMR"},{"start":"100c","end":"100f","device":"ACPI GPE0_BLK"},{"start":"1040","end":"104f","device":"0000:00:07.3"},{"start":"1040","end":"104f","device":"pnp 00:00"},{"start":"1060","end":"106f","device":"0000:00:07.1"},{"start":"1060","end":"106f","device":"ata_piix"},{"start":"1070","end":"107f","device":"0000:00:0f.0"},{"start":"1070","end":"107f","device":"vmwgfx probe"},{"start":"1080","end":"10bf","device":"0000:00:07.7"},{"start":"1080","end":"10bf","device":"vmw_vmci"},{"start":"1400","end":"14ff","device":"0000:00:10.0"},{"start":"2000","end":"3fff","device":"PCI Bus 0000:02"},{"start":"2000","end":"203f","device":"0000:02:01.0"},{"start":"2000","end":"203f","device":"e1000"},{"start":"2040","end":"207f","device":"0000:02:02.0"},{"start":"2040","end":"207f","device":"Ensoniq AudioPCI"},{"start":"2080","end":"209f","device":"0000:02:00.0"},{"start":"2080","end":"209f","device":"uhci_hcd"},{"start":"4000","end":"4fff","device":"PCI Bus 0000:03"},{"start":"5000","end":"5fff","device":"PCI Bus 0000:0b"},{"start":"6000","end":"6fff","device":"PCI Bus 0000:13"},{"start":"7000","end":"7fff","device":"PCI Bus 0000:1b"},{"start":"8000","end":"8fff","device":"PCI Bus 0000:04"},{"start":"9000","end":"9fff","device":"PCI Bus 0000:0c"},{"start":"a000","end":"afff","device":"PCI Bus 0000:14"},{"start":"b000","end":"bfff","device":"PCI Bus 0000:1c"},{"start":"c000","end":"cfff","device":"PCI Bus 0000:05"},{"start":"d000","end":"dfff","device":"PCI Bus 0000:0d"},{"start":"e000","end":"efff","device":"PCI Bus 0000:15"},{"start":"fce0","end":"fcff","device":"pnp 00:06"}] diff --git a/tests/fixtures/linux-proc/loadavg.json b/tests/fixtures/linux-proc/loadavg.json new file mode 100644 index 00000000..ac3575df --- /dev/null +++ b/tests/fixtures/linux-proc/loadavg.json @@ -0,0 +1 @@ +{"load_1m":0.0,"load_5m":0.01,"load_15m":0.03,"running":2,"available":111,"last_pid":2039} diff --git a/tests/fixtures/linux-proc/locks.json b/tests/fixtures/linux-proc/locks.json new file mode 100644 index 00000000..a03330fe --- /dev/null +++ b/tests/fixtures/linux-proc/locks.json @@ -0,0 +1 @@ +[{"id":1,"class":"POSIX","type":"ADVISORY","access":"WRITE","pid":877,"maj":"00","min":"19","inode":812,"start":"0","end":"EOF"},{"id":2,"class":"FLOCK","type":"ADVISORY","access":"WRITE","pid":854,"maj":"00","min":"19","inode":805,"start":"0","end":"EOF"},{"id":3,"class":"POSIX","type":"ADVISORY","access":"WRITE","pid":701,"maj":"00","min":"19","inode":702,"start":"0","end":"EOF"},{"id":4,"class":"FLOCK","type":"ADVISORY","access":"WRITE","pid":870,"maj":"fd","min":"00","inode":264967,"start":"0","end":"EOF"}] diff --git a/tests/fixtures/linux-proc/meminfo.json b/tests/fixtures/linux-proc/meminfo.json new file mode 100644 index 00000000..cb294730 --- /dev/null +++ b/tests/fixtures/linux-proc/meminfo.json @@ -0,0 +1 @@ +{"MemTotal":3997272,"MemFree":2760316,"MemAvailable":3386876,"Buffers":40452,"Cached":684856,"SwapCached":0,"Active":475816,"Inactive":322064,"Active(anon)":70216,"Inactive(anon)":148,"Active(file)":405600,"Inactive(file)":321916,"Unevictable":19476,"Mlocked":19476,"SwapTotal":3996668,"SwapFree":3996668,"Dirty":152,"Writeback":0,"AnonPages":92064,"Mapped":79464,"Shmem":1568,"KReclaimable":188216,"Slab":288096,"SReclaimable":188216,"SUnreclaim":99880,"KernelStack":5872,"PageTables":1812,"NFS_Unstable":0,"Bounce":0,"WritebackTmp":0,"CommitLimit":5995304,"Committed_AS":445240,"VmallocTotal":34359738367,"VmallocUsed":21932,"VmallocChunk":0,"Percpu":107520,"HardwareCorrupted":0,"AnonHugePages":0,"ShmemHugePages":0,"ShmemPmdMapped":0,"FileHugePages":0,"FilePmdMapped":0,"HugePages_Total":0,"HugePages_Free":0,"HugePages_Rsvd":0,"HugePages_Surp":0,"Hugepagesize":2048,"Hugetlb":0,"DirectMap4k":192320,"DirectMap2M":4001792,"DirectMap1G":2097152} diff --git a/tests/fixtures/linux-proc/modules.json b/tests/fixtures/linux-proc/modules.json new file mode 100644 index 00000000..1d7f264b --- /dev/null +++ b/tests/fixtures/linux-proc/modules.json @@ -0,0 +1 @@ +[{"module":"binfmt_misc","size":24576,"used":1,"used_by":[],"status":"Live","location":"0xffffffffc0ab4000"},{"module":"vsock_loopback","size":16384,"used":0,"used_by":[],"status":"Live","location":"0xffffffffc0a14000"},{"module":"vmw_vsock_virtio_transport_common","size":36864,"used":1,"used_by":["vsock_loopback"],"status":"Live","location":"0xffffffffc0a03000"},{"module":"vmw_vsock_vmci_transport","size":32768,"used":1,"used_by":[],"status":"Live","location":"0xffffffffc0a1b000"},{"module":"vsock","size":45056,"used":5,"used_by":["vsock_loopback","vmw_vsock_virtio_transport_common","vmw_vsock_vmci_transport"],"status":"Live","location":"0xffffffffc09f7000"},{"module":"dm_multipath","size":36864,"used":0,"used_by":[],"status":"Live","location":"0xffffffffc09b6000"},{"module":"scsi_dh_rdac","size":16384,"used":0,"used_by":[],"status":"Live","location":"0xffffffffc09a2000"},{"module":"scsi_dh_emc","size":16384,"used":0,"used_by":[],"status":"Live","location":"0xffffffffc0967000"},{"module":"scsi_dh_alua","size":20480,"used":0,"used_by":[],"status":"Live","location":"0xffffffffc090b000"},{"module":"intel_rapl_msr","size":20480,"used":0,"used_by":[],"status":"Live","location":"0xffffffffc0947000"},{"module":"intel_rapl_common","size":28672,"used":1,"used_by":["intel_rapl_msr"],"status":"Live","location":"0xffffffffc09ae000"},{"module":"rapl","size":20480,"used":0,"used_by":[],"status":"Live","location":"0xffffffffc0941000"},{"module":"vmw_balloon","size":24576,"used":0,"used_by":[],"status":"Live","location":"0xffffffffc09a7000"},{"module":"joydev","size":28672,"used":0,"used_by":[],"status":"Live","location":"0xffffffffc092f000"},{"module":"input_leds","size":16384,"used":0,"used_by":[],"status":"Live","location":"0xffffffffc093c000"},{"module":"serio_raw","size":20480,"used":0,"used_by":[],"status":"Live","location":"0xffffffffc0921000"},{"module":"snd_ens1371","size":32768,"used":0,"used_by":[],"status":"Live","location":"0xffffffffc0999000"},{"module":"snd_ac97_codec","size":163840,"used":1,"used_by":["snd_ens1371"],"status":"Live","location":"0xffffffffc0970000"},{"module":"uvcvideo","size":98304,"used":0,"used_by":[],"status":"Live","location":"0xffffffffc094e000"},{"module":"btusb","size":57344,"used":0,"used_by":[],"status":"Live","location":"0xffffffffc0912000"},{"module":"btrtl","size":24576,"used":1,"used_by":["btusb"],"status":"Live","location":"0xffffffffc0904000"},{"module":"gameport","size":24576,"used":1,"used_by":["snd_ens1371"],"status":"Live","location":"0xffffffffc082b000"},{"module":"videobuf2_vmalloc","size":20480,"used":1,"used_by":["uvcvideo"],"status":"Live","location":"0xffffffffc0798000"},{"module":"videobuf2_memops","size":20480,"used":1,"used_by":["videobuf2_vmalloc"],"status":"Live","location":"0xffffffffc0929000"},{"module":"btbcm","size":16384,"used":1,"used_by":["btusb"],"status":"Live","location":"0xffffffffc0937000"},{"module":"snd_rawmidi","size":36864,"used":1,"used_by":["snd_ens1371"],"status":"Live","location":"0xffffffffc0851000"},{"module":"btintel","size":28672,"used":1,"used_by":["btusb"],"status":"Live","location":"0xffffffffc0823000"},{"module":"snd_seq_device","size":16384,"used":1,"used_by":["snd_rawmidi"],"status":"Live","location":"0xffffffffc081e000"},{"module":"ac97_bus","size":16384,"used":1,"used_by":["snd_ac97_codec"],"status":"Live","location":"0xffffffffc07b2000"},{"module":"videobuf2_v4l2","size":28672,"used":1,"used_by":["uvcvideo"],"status":"Live","location":"0xffffffffc07c3000"},{"module":"bluetooth","size":602112,"used":5,"used_by":["btusb","btrtl","btbcm","btintel"],"status":"Live","location":"0xffffffffc086c000"},{"module":"videobuf2_common","size":57344,"used":2,"used_by":["uvcvideo","videobuf2_v4l2"],"status":"Live","location":"0xffffffffc085d000"},{"module":"snd_pcm","size":118784,"used":2,"used_by":["snd_ens1371","snd_ac97_codec"],"status":"Live","location":"0xffffffffc0833000"},{"module":"videodev","size":245760,"used":3,"used_by":["uvcvideo","videobuf2_v4l2","videobuf2_common"],"status":"Live","location":"0xffffffffc07e1000"},{"module":"snd_timer","size":40960,"used":1,"used_by":["snd_pcm"],"status":"Live","location":"0xffffffffc07d6000"},{"module":"ecdh_generic","size":16384,"used":1,"used_by":["bluetooth"],"status":"Live","location":"0xffffffffc07cf000"},{"module":"ecc","size":32768,"used":1,"used_by":["ecdh_generic"],"status":"Live","location":"0xffffffffc07ba000"},{"module":"mc","size":57344,"used":4,"used_by":["uvcvideo","videobuf2_v4l2","videobuf2_common","videodev"],"status":"Live","location":"0xffffffffc07a3000"},{"module":"snd","size":94208,"used":6,"used_by":["snd_ens1371","snd_ac97_codec","snd_rawmidi","snd_seq_device","snd_pcm","snd_timer"],"status":"Live","location":"0xffffffffc0780000"},{"module":"soundcore","size":16384,"used":1,"used_by":["snd"],"status":"Live","location":"0xffffffffc0777000"},{"module":"vmw_vmci","size":77824,"used":2,"used_by":["vmw_vsock_vmci_transport","vmw_balloon"],"status":"Live","location":"0xffffffffc0763000"},{"module":"mac_hid","size":16384,"used":0,"used_by":[],"status":"Live","location":"0xffffffffc075e000"},{"module":"sch_fq_codel","size":20480,"used":2,"used_by":[],"status":"Live","location":"0xffffffffc072c000"},{"module":"ip_tables","size":32768,"used":0,"used_by":[],"status":"Live","location":"0xffffffffc0714000"},{"module":"x_tables","size":49152,"used":1,"used_by":["ip_tables"],"status":"Live","location":"0xffffffffc0700000"},{"module":"autofs4","size":45056,"used":2,"used_by":[],"status":"Live","location":"0xffffffffc06f4000"},{"module":"btrfs","size":1323008,"used":0,"used_by":[],"status":"Live","location":"0xffffffffc05b0000"},{"module":"blake2b_generic","size":20480,"used":0,"used_by":[],"status":"Live","location":"0xffffffffc038a000"},{"module":"raid10","size":61440,"used":0,"used_by":[],"status":"Live","location":"0xffffffffc05a0000"},{"module":"raid456","size":155648,"used":0,"used_by":[],"status":"Live","location":"0xffffffffc056f000"},{"module":"async_raid6_recov","size":24576,"used":1,"used_by":["raid456"],"status":"Live","location":"0xffffffffc0568000"},{"module":"async_memcpy","size":20480,"used":2,"used_by":["raid456","async_raid6_recov"],"status":"Live","location":"0xffffffffc0562000"},{"module":"async_pq","size":24576,"used":2,"used_by":["raid456","async_raid6_recov"],"status":"Live","location":"0xffffffffc0558000"},{"module":"async_xor","size":20480,"used":3,"used_by":["raid456","async_raid6_recov","async_pq"],"status":"Live","location":"0xffffffffc0552000"},{"module":"async_tx","size":20480,"used":5,"used_by":["raid456","async_raid6_recov","async_memcpy","async_pq","async_xor"],"status":"Live","location":"0xffffffffc054c000"},{"module":"xor","size":24576,"used":2,"used_by":["btrfs","async_xor"],"status":"Live","location":"0xffffffffc046d000"},{"module":"raid6_pq","size":114688,"used":4,"used_by":["btrfs","raid456","async_raid6_recov","async_pq"],"status":"Live","location":"0xffffffffc052b000"},{"module":"libcrc32c","size":16384,"used":2,"used_by":["btrfs","raid456"],"status":"Live","location":"0xffffffffc0468000"},{"module":"raid1","size":49152,"used":0,"used_by":[],"status":"Live","location":"0xffffffffc03ea000"},{"module":"raid0","size":24576,"used":0,"used_by":[],"status":"Live","location":"0xffffffffc03e3000"},{"module":"multipath","size":20480,"used":0,"used_by":[],"status":"Live","location":"0xffffffffc0348000"},{"module":"linear","size":20480,"used":0,"used_by":[],"status":"Live","location":"0xffffffffc030f000"},{"module":"hid_generic","size":16384,"used":0,"used_by":[],"status":"Live","location":"0xffffffffc0327000"},{"module":"usbhid","size":57344,"used":0,"used_by":[],"status":"Live","location":"0xffffffffc051c000"},{"module":"hid","size":135168,"used":2,"used_by":["hid_generic","usbhid"],"status":"Live","location":"0xffffffffc04fa000"},{"module":"crct10dif_pclmul","size":16384,"used":1,"used_by":[],"status":"Live","location":"0xffffffffc03de000"},{"module":"crc32_pclmul","size":16384,"used":0,"used_by":[],"status":"Live","location":"0xffffffffc035e000"},{"module":"ghash_clmulni_intel","size":16384,"used":0,"used_by":[],"status":"Live","location":"0xffffffffc02f0000"},{"module":"aesni_intel","size":372736,"used":0,"used_by":[],"status":"Live","location":"0xffffffffc049e000"},{"module":"crypto_simd","size":16384,"used":1,"used_by":["aesni_intel"],"status":"Live","location":"0xffffffffc0338000"},{"module":"cryptd","size":24576,"used":2,"used_by":["ghash_clmulni_intel","crypto_simd"],"status":"Live","location":"0xffffffffc02df000"},{"module":"glue_helper","size":16384,"used":1,"used_by":["aesni_intel"],"status":"Live","location":"0xffffffffc02da000"},{"module":"psmouse","size":163840,"used":0,"used_by":[],"status":"Live","location":"0xffffffffc0475000"},{"module":"vmwgfx","size":323584,"used":1,"used_by":[],"status":"Live","location":"0xffffffffc0413000"},{"module":"ttm","size":102400,"used":1,"used_by":["vmwgfx"],"status":"Live","location":"0xffffffffc03f9000"},{"module":"drm_kms_helper","size":225280,"used":1,"used_by":["vmwgfx"],"status":"Live","location":"0xffffffffc03a6000"},{"module":"syscopyarea","size":16384,"used":1,"used_by":["drm_kms_helper"],"status":"Live","location":"0xffffffffc02d5000"},{"module":"mptspi","size":24576,"used":3,"used_by":[],"status":"Live","location":"0xffffffffc02ca000"},{"module":"sysfillrect","size":16384,"used":1,"used_by":["drm_kms_helper"],"status":"Live","location":"0xffffffffc02c3000"},{"module":"sysimgblt","size":16384,"used":1,"used_by":["drm_kms_helper"],"status":"Live","location":"0xffffffffc02be000"},{"module":"fb_sys_fops","size":16384,"used":1,"used_by":["drm_kms_helper"],"status":"Live","location":"0xffffffffc02b9000"},{"module":"mptscsih","size":45056,"used":1,"used_by":["mptspi"],"status":"Live","location":"0xffffffffc0395000"},{"module":"e1000","size":151552,"used":0,"used_by":[],"status":"Live","location":"0xffffffffc0364000"},{"module":"cec","size":53248,"used":1,"used_by":["drm_kms_helper"],"status":"Live","location":"0xffffffffc0350000"},{"module":"ahci","size":40960,"used":0,"used_by":[],"status":"Live","location":"0xffffffffc033d000"},{"module":"libahci","size":36864,"used":1,"used_by":["ahci"],"status":"Live","location":"0xffffffffc032e000"},{"module":"rc_core","size":61440,"used":1,"used_by":["cec"],"status":"Live","location":"0xffffffffc0317000"},{"module":"mptbase","size":98304,"used":2,"used_by":["mptspi","mptscsih"],"status":"Live","location":"0xffffffffc02f6000"},{"module":"scsi_transport_spi","size":32768,"used":1,"used_by":["mptspi"],"status":"Live","location":"0xffffffffc02e7000"},{"module":"drm","size":565248,"used":4,"used_by":["vmwgfx","ttm","drm_kms_helper"],"status":"Live","location":"0xffffffffc022e000"},{"module":"i2c_piix4","size":28672,"used":0,"used_by":[],"status":"Live","location":"0xffffffffc0222000"},{"module":"pata_acpi","size":16384,"used":0,"used_by":[],"status":"Live","location":"0xffffffffc021a000"}] diff --git a/tests/fixtures/linux-proc/mtrr.json b/tests/fixtures/linux-proc/mtrr.json new file mode 100644 index 00000000..1b8e6a29 --- /dev/null +++ b/tests/fixtures/linux-proc/mtrr.json @@ -0,0 +1 @@ +[{"register":"reg00","type":"write-back","base":"0x000000000","base_mb":0,"size":2048,"count":1},{"register":"reg01","type":"write-back","base":"0x080000000","base_mb":2048,"size":1024,"count":1},{"register":"reg02","type":"write-back","base":"0x100000000","base_mb":4096,"size":4096,"count":1},{"register":"reg03","type":"write-back","base":"0x200000000","base_mb":8192,"size":8192,"count":1},{"register":"reg04","type":"write-back","base":"0x400000000","base_mb":16384,"size":16384,"count":1},{"register":"reg05","type":"write-back","base":"0x800000000","base_mb":32768,"size":32768,"count":1},{"register":"reg06","type":"write-back","base":"0x1000000000","base_mb":65536,"size":65536,"count":1},{"register":"reg07","type":"write-back","base":"0x00000000","base_mb":0,"size":256,"count":1},{"register":"reg08","type":"write-combining","base":"0xe8000000","base_mb":3712,"size":32,"count":1},{"register":"reg09","type":"write-back","base":"0x00000000","base_mb":0,"size":64,"count":1},{"register":"reg10","type":"write-combining","base":"0xfb000000","base_mb":4016,"size":16,"count":1},{"register":"reg11","type":"uncachable","base":"0xfb000000","base_mb":4016,"size":4,"count":1}] diff --git a/tests/fixtures/linux-proc/pagetypeinfo.json b/tests/fixtures/linux-proc/pagetypeinfo.json new file mode 100644 index 00000000..b0b4fe13 --- /dev/null +++ b/tests/fixtures/linux-proc/pagetypeinfo.json @@ -0,0 +1 @@ +{"page_block_order":9,"pages_per_block":512,"free_pages":[{"node":0,"zone":"DMA","type":"Unmovable","free":[0,0,0,1,1,1,1,1,0,0,0]},{"node":0,"zone":"DMA","type":"Movable","free":[0,0,0,0,0,0,0,0,0,1,3]},{"node":0,"zone":"DMA","type":"Reclaimable","free":[0,0,0,0,0,0,0,0,0,0,0]},{"node":0,"zone":"DMA","type":"HighAtomic","free":[0,0,0,0,0,0,0,0,0,0,0]},{"node":0,"zone":"DMA","type":"Isolate","free":[0,0,0,0,0,0,0,0,0,0,0]},{"node":0,"zone":"DMA32","type":"Unmovable","free":[1,2,1,3,5,2,1,0,0,1,0]},{"node":0,"zone":"DMA32","type":"Movable","free":[20,52,78,47,32,23,11,9,2,2,629]},{"node":0,"zone":"DMA32","type":"Reclaimable","free":[2,1,3,0,1,0,1,0,1,1,0]},{"node":0,"zone":"DMA32","type":"HighAtomic","free":[0,0,0,0,0,0,0,0,0,0,0]},{"node":0,"zone":"DMA32","type":"Isolate","free":[0,0,0,0,0,0,0,0,0,0,0]},{"node":0,"zone":"Normal","type":"Unmovable","free":[0,22,7,9,0,0,0,0,0,0,0]},{"node":0,"zone":"Normal","type":"Movable","free":[0,0,1,1,1,1,2,11,13,0,0]},{"node":0,"zone":"Normal","type":"Reclaimable","free":[0,0,0,0,0,0,0,0,0,0,0]},{"node":0,"zone":"Normal","type":"HighAtomic","free":[0,0,0,0,0,0,0,0,0,0,0]},{"node":0,"zone":"Normal","type":"Isolate","free":[0,0,0,0,0,0,0,0,0,0,0]}],"num_blocks_type":[{"node":0,"zone":"DMA","unmovable":1,"movable":7,"reclaimable":0,"high_atomic":0,"isolate":0},{"node":0,"zone":"DMA32","unmovable":8,"movable":1472,"reclaimable":48,"high_atomic":0,"isolate":0},{"node":0,"zone":"Normal","unmovable":120,"movable":345,"reclaimable":47,"high_atomic":0,"isolate":0}]} diff --git a/tests/fixtures/linux-proc/partitions.json b/tests/fixtures/linux-proc/partitions.json new file mode 100644 index 00000000..2a7d5cd6 --- /dev/null +++ b/tests/fixtures/linux-proc/partitions.json @@ -0,0 +1 @@ +[{"major":7,"minor":0,"num_blocks":56896,"name":"loop0"},{"major":7,"minor":1,"num_blocks":56868,"name":"loop1"},{"major":7,"minor":2,"num_blocks":111248,"name":"loop2"},{"major":7,"minor":3,"num_blocks":63448,"name":"loop3"},{"major":7,"minor":5,"num_blocks":48088,"name":"loop5"},{"major":7,"minor":6,"num_blocks":48080,"name":"loop6"},{"major":7,"minor":7,"num_blocks":105464,"name":"loop7"},{"major":8,"minor":0,"num_blocks":20971520,"name":"sda"},{"major":8,"minor":1,"num_blocks":1024,"name":"sda1"},{"major":8,"minor":2,"num_blocks":1048576,"name":"sda2"},{"major":8,"minor":3,"num_blocks":19919872,"name":"sda3"},{"major":11,"minor":0,"num_blocks":1021566,"name":"sr0"},{"major":253,"minor":0,"num_blocks":19918848,"name":"dm-0"},{"major":7,"minor":8,"num_blocks":63444,"name":"loop8"}] diff --git a/tests/fixtures/linux-proc/slabinfo.json b/tests/fixtures/linux-proc/slabinfo.json new file mode 100644 index 00000000..75099b83 --- /dev/null +++ b/tests/fixtures/linux-proc/slabinfo.json @@ -0,0 +1 @@ +[{"name":"ext4_groupinfo_4k","active_objs":224,"num_objs":224,"obj_size":144,"obj_per_slab":56,"pages_per_slab":2,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":4,"num_slabs":4,"shared_avail":0}},{"name":"btrfs_delayed_node","active_objs":0,"num_objs":0,"obj_size":312,"obj_per_slab":52,"pages_per_slab":4,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":0,"num_slabs":0,"shared_avail":0}},{"name":"btrfs_ordered_extent","active_objs":0,"num_objs":0,"obj_size":416,"obj_per_slab":39,"pages_per_slab":4,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":0,"num_slabs":0,"shared_avail":0}},{"name":"btrfs_inode","active_objs":0,"num_objs":0,"obj_size":1184,"obj_per_slab":27,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":0,"num_slabs":0,"shared_avail":0}},{"name":"fsverity_info","active_objs":0,"num_objs":0,"obj_size":256,"obj_per_slab":64,"pages_per_slab":4,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":0,"num_slabs":0,"shared_avail":0}},{"name":"MPTCPv6","active_objs":0,"num_objs":0,"obj_size":1856,"obj_per_slab":17,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":0,"num_slabs":0,"shared_avail":0}},{"name":"ip6-frags","active_objs":0,"num_objs":0,"obj_size":184,"obj_per_slab":44,"pages_per_slab":2,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":0,"num_slabs":0,"shared_avail":0}},{"name":"PINGv6","active_objs":104,"num_objs":104,"obj_size":1216,"obj_per_slab":26,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":4,"num_slabs":4,"shared_avail":0}},{"name":"RAWv6","active_objs":312,"num_objs":312,"obj_size":1216,"obj_per_slab":26,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":12,"num_slabs":12,"shared_avail":0}},{"name":"UDPv6","active_objs":96,"num_objs":96,"obj_size":1344,"obj_per_slab":24,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":4,"num_slabs":4,"shared_avail":0}},{"name":"tw_sock_TCPv6","active_objs":0,"num_objs":0,"obj_size":248,"obj_per_slab":66,"pages_per_slab":4,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":0,"num_slabs":0,"shared_avail":0}},{"name":"request_sock_TCPv6","active_objs":0,"num_objs":0,"obj_size":304,"obj_per_slab":53,"pages_per_slab":4,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":0,"num_slabs":0,"shared_avail":0}},{"name":"TCPv6","active_objs":26,"num_objs":26,"obj_size":2432,"obj_per_slab":13,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":2,"num_slabs":2,"shared_avail":0}},{"name":"kcopyd_job","active_objs":0,"num_objs":0,"obj_size":3312,"obj_per_slab":9,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":0,"num_slabs":0,"shared_avail":0}},{"name":"dm_uevent","active_objs":0,"num_objs":0,"obj_size":2888,"obj_per_slab":11,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":0,"num_slabs":0,"shared_avail":0}},{"name":"scsi_sense_cache","active_objs":1472,"num_objs":1472,"obj_size":128,"obj_per_slab":64,"pages_per_slab":2,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":23,"num_slabs":23,"shared_avail":0}},{"name":"mqueue_inode_cache","active_objs":34,"num_objs":34,"obj_size":960,"obj_per_slab":34,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":1,"num_slabs":1,"shared_avail":0}},{"name":"fuse_inode","active_objs":0,"num_objs":0,"obj_size":832,"obj_per_slab":39,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":0,"num_slabs":0,"shared_avail":0}},{"name":"ecryptfs_key_record_cache","active_objs":0,"num_objs":0,"obj_size":576,"obj_per_slab":56,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":0,"num_slabs":0,"shared_avail":0}},{"name":"ecryptfs_inode_cache","active_objs":0,"num_objs":0,"obj_size":1024,"obj_per_slab":32,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":0,"num_slabs":0,"shared_avail":0}},{"name":"ecryptfs_file_cache","active_objs":0,"num_objs":0,"obj_size":16,"obj_per_slab":256,"pages_per_slab":1,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":0,"num_slabs":0,"shared_avail":0}},{"name":"ecryptfs_auth_tok_list_item","active_objs":0,"num_objs":0,"obj_size":832,"obj_per_slab":39,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":0,"num_slabs":0,"shared_avail":0}},{"name":"fat_inode_cache","active_objs":0,"num_objs":0,"obj_size":744,"obj_per_slab":44,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":0,"num_slabs":0,"shared_avail":0}},{"name":"fat_cache","active_objs":0,"num_objs":0,"obj_size":40,"obj_per_slab":102,"pages_per_slab":1,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":0,"num_slabs":0,"shared_avail":0}},{"name":"squashfs_inode_cache","active_objs":363,"num_objs":552,"obj_size":704,"obj_per_slab":46,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":12,"num_slabs":12,"shared_avail":0}},{"name":"jbd2_journal_head","active_objs":952,"num_objs":952,"obj_size":120,"obj_per_slab":68,"pages_per_slab":2,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":14,"num_slabs":14,"shared_avail":0}},{"name":"jbd2_revoke_table_s","active_objs":512,"num_objs":512,"obj_size":16,"obj_per_slab":256,"pages_per_slab":1,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":2,"num_slabs":2,"shared_avail":0}},{"name":"ext4_inode_cache","active_objs":14466,"num_objs":15573,"obj_size":1096,"obj_per_slab":29,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":537,"num_slabs":537,"shared_avail":0}},{"name":"ext4_allocation_context","active_objs":128,"num_objs":128,"obj_size":128,"obj_per_slab":64,"pages_per_slab":2,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":2,"num_slabs":2,"shared_avail":0}},{"name":"ext4_io_end","active_objs":128,"num_objs":128,"obj_size":64,"obj_per_slab":64,"pages_per_slab":1,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":2,"num_slabs":2,"shared_avail":0}},{"name":"ext4_pending_reservation","active_objs":256,"num_objs":256,"obj_size":32,"obj_per_slab":128,"pages_per_slab":1,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":2,"num_slabs":2,"shared_avail":0}},{"name":"ext4_extent_status","active_objs":4590,"num_objs":4590,"obj_size":40,"obj_per_slab":102,"pages_per_slab":1,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":45,"num_slabs":45,"shared_avail":0}},{"name":"mbcache","active_objs":146,"num_objs":146,"obj_size":56,"obj_per_slab":73,"pages_per_slab":1,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":2,"num_slabs":2,"shared_avail":0}},{"name":"userfaultfd_ctx_cache","active_objs":0,"num_objs":0,"obj_size":192,"obj_per_slab":42,"pages_per_slab":2,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":0,"num_slabs":0,"shared_avail":0}},{"name":"dnotify_struct","active_objs":0,"num_objs":0,"obj_size":32,"obj_per_slab":128,"pages_per_slab":1,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":0,"num_slabs":0,"shared_avail":0}},{"name":"pid_namespace","active_objs":0,"num_objs":0,"obj_size":144,"obj_per_slab":56,"pages_per_slab":2,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":0,"num_slabs":0,"shared_avail":0}},{"name":"ip4-frags","active_objs":0,"num_objs":0,"obj_size":200,"obj_per_slab":40,"pages_per_slab":2,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":0,"num_slabs":0,"shared_avail":0}},{"name":"MPTCP","active_objs":0,"num_objs":0,"obj_size":1664,"obj_per_slab":19,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":0,"num_slabs":0,"shared_avail":0}},{"name":"request_sock_subflow","active_objs":0,"num_objs":0,"obj_size":360,"obj_per_slab":45,"pages_per_slab":4,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":0,"num_slabs":0,"shared_avail":0}},{"name":"xfrm_state","active_objs":0,"num_objs":0,"obj_size":768,"obj_per_slab":42,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":0,"num_slabs":0,"shared_avail":0}},{"name":"PING","active_objs":2080,"num_objs":2080,"obj_size":1024,"obj_per_slab":32,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":65,"num_slabs":65,"shared_avail":0}},{"name":"RAW","active_objs":512,"num_objs":512,"obj_size":1024,"obj_per_slab":32,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":16,"num_slabs":16,"shared_avail":0}},{"name":"tw_sock_TCP","active_objs":66,"num_objs":66,"obj_size":248,"obj_per_slab":66,"pages_per_slab":4,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":1,"num_slabs":1,"shared_avail":0}},{"name":"request_sock_TCP","active_objs":53,"num_objs":53,"obj_size":304,"obj_per_slab":53,"pages_per_slab":4,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":1,"num_slabs":1,"shared_avail":0}},{"name":"TCP","active_objs":56,"num_objs":56,"obj_size":2240,"obj_per_slab":14,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":4,"num_slabs":4,"shared_avail":0}},{"name":"hugetlbfs_inode_cache","active_objs":102,"num_objs":102,"obj_size":632,"obj_per_slab":51,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":2,"num_slabs":2,"shared_avail":0}},{"name":"dquot","active_objs":128,"num_objs":128,"obj_size":256,"obj_per_slab":64,"pages_per_slab":4,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":2,"num_slabs":2,"shared_avail":0}},{"name":"eventpoll_pwq","active_objs":1792,"num_objs":1792,"obj_size":72,"obj_per_slab":56,"pages_per_slab":1,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":32,"num_slabs":32,"shared_avail":0}},{"name":"dax_cache","active_objs":42,"num_objs":42,"obj_size":768,"obj_per_slab":42,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":1,"num_slabs":1,"shared_avail":0}},{"name":"bio_crypt_ctx","active_objs":306,"num_objs":306,"obj_size":40,"obj_per_slab":102,"pages_per_slab":1,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":3,"num_slabs":3,"shared_avail":0}},{"name":"request_queue","active_objs":30,"num_objs":30,"obj_size":2096,"obj_per_slab":15,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":2,"num_slabs":2,"shared_avail":0}},{"name":"biovec-max","active_objs":114,"num_objs":120,"obj_size":4096,"obj_per_slab":8,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":15,"num_slabs":15,"shared_avail":0}},{"name":"biovec-128","active_objs":32,"num_objs":32,"obj_size":2048,"obj_per_slab":16,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":2,"num_slabs":2,"shared_avail":0}},{"name":"biovec-64","active_objs":64,"num_objs":64,"obj_size":1024,"obj_per_slab":32,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":2,"num_slabs":2,"shared_avail":0}},{"name":"khugepaged_mm_slot","active_objs":36,"num_objs":36,"obj_size":112,"obj_per_slab":36,"pages_per_slab":1,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":1,"num_slabs":1,"shared_avail":0}},{"name":"user_namespace","active_objs":60,"num_objs":60,"obj_size":544,"obj_per_slab":60,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":1,"num_slabs":1,"shared_avail":0}},{"name":"dmaengine-unmap-256","active_objs":15,"num_objs":15,"obj_size":2112,"obj_per_slab":15,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":1,"num_slabs":1,"shared_avail":0}},{"name":"dmaengine-unmap-128","active_objs":30,"num_objs":30,"obj_size":1088,"obj_per_slab":30,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":1,"num_slabs":1,"shared_avail":0}},{"name":"sock_inode_cache","active_objs":2847,"num_objs":2847,"obj_size":832,"obj_per_slab":39,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":73,"num_slabs":73,"shared_avail":0}},{"name":"skbuff_ext_cache","active_objs":84,"num_objs":84,"obj_size":192,"obj_per_slab":42,"pages_per_slab":2,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":2,"num_slabs":2,"shared_avail":0}},{"name":"skbuff_fclone_cache","active_objs":128,"num_objs":128,"obj_size":512,"obj_per_slab":64,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":2,"num_slabs":2,"shared_avail":0}},{"name":"skbuff_head_cache","active_objs":4160,"num_objs":4416,"obj_size":256,"obj_per_slab":64,"pages_per_slab":4,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":69,"num_slabs":69,"shared_avail":0}},{"name":"file_lock_cache","active_objs":74,"num_objs":74,"obj_size":216,"obj_per_slab":37,"pages_per_slab":2,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":2,"num_slabs":2,"shared_avail":0}},{"name":"file_lock_ctx","active_objs":219,"num_objs":219,"obj_size":56,"obj_per_slab":73,"pages_per_slab":1,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":3,"num_slabs":3,"shared_avail":0}},{"name":"fsnotify_mark_connector","active_objs":384,"num_objs":384,"obj_size":32,"obj_per_slab":128,"pages_per_slab":1,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":3,"num_slabs":3,"shared_avail":0}},{"name":"net_namespace","active_objs":6,"num_objs":6,"obj_size":4992,"obj_per_slab":6,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":1,"num_slabs":1,"shared_avail":0}},{"name":"task_delay_info","active_objs":2958,"num_objs":2958,"obj_size":80,"obj_per_slab":51,"pages_per_slab":1,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":58,"num_slabs":58,"shared_avail":0}},{"name":"taskstats","active_objs":92,"num_objs":92,"obj_size":352,"obj_per_slab":46,"pages_per_slab":4,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":2,"num_slabs":2,"shared_avail":0}},{"name":"proc_dir_entry","active_objs":882,"num_objs":882,"obj_size":192,"obj_per_slab":42,"pages_per_slab":2,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":21,"num_slabs":21,"shared_avail":0}},{"name":"pde_opener","active_objs":3366,"num_objs":3366,"obj_size":40,"obj_per_slab":102,"pages_per_slab":1,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":33,"num_slabs":33,"shared_avail":0}},{"name":"proc_inode_cache","active_objs":51317,"num_objs":52752,"obj_size":680,"obj_per_slab":48,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":1099,"num_slabs":1099,"shared_avail":0}},{"name":"seq_file","active_objs":4760,"num_objs":4760,"obj_size":120,"obj_per_slab":68,"pages_per_slab":2,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":70,"num_slabs":70,"shared_avail":0}},{"name":"bdev_cache","active_objs":78,"num_objs":78,"obj_size":832,"obj_per_slab":39,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":2,"num_slabs":2,"shared_avail":0}},{"name":"shmem_inode_cache","active_objs":2647,"num_objs":2970,"obj_size":720,"obj_per_slab":45,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":66,"num_slabs":66,"shared_avail":0}},{"name":"kernfs_node_cache","active_objs":115254,"num_objs":115904,"obj_size":128,"obj_per_slab":64,"pages_per_slab":2,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":1811,"num_slabs":1811,"shared_avail":0}},{"name":"mnt_cache","active_objs":1251,"num_objs":1326,"obj_size":320,"obj_per_slab":51,"pages_per_slab":4,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":26,"num_slabs":26,"shared_avail":0}},{"name":"filp","active_objs":19960,"num_objs":22464,"obj_size":256,"obj_per_slab":64,"pages_per_slab":4,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":351,"num_slabs":351,"shared_avail":0}},{"name":"inode_cache","active_objs":137462,"num_objs":138754,"obj_size":608,"obj_per_slab":53,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":2618,"num_slabs":2618,"shared_avail":0}},{"name":"dentry","active_objs":205198,"num_objs":211008,"obj_size":192,"obj_per_slab":42,"pages_per_slab":2,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":5024,"num_slabs":5024,"shared_avail":0}},{"name":"names_cache","active_objs":32,"num_objs":32,"obj_size":4096,"obj_per_slab":8,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":4,"num_slabs":4,"shared_avail":0}},{"name":"iint_cache","active_objs":0,"num_objs":0,"obj_size":120,"obj_per_slab":68,"pages_per_slab":2,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":0,"num_slabs":0,"shared_avail":0}},{"name":"lsm_file_cache","active_objs":2040,"num_objs":2040,"obj_size":24,"obj_per_slab":170,"pages_per_slab":1,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":12,"num_slabs":12,"shared_avail":0}},{"name":"buffer_head","active_objs":87912,"num_objs":89349,"obj_size":104,"obj_per_slab":39,"pages_per_slab":1,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":2291,"num_slabs":2291,"shared_avail":0}},{"name":"uts_namespace","active_objs":74,"num_objs":74,"obj_size":440,"obj_per_slab":37,"pages_per_slab":4,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":2,"num_slabs":2,"shared_avail":0}},{"name":"vm_area_struct","active_objs":19609,"num_objs":20124,"obj_size":208,"obj_per_slab":39,"pages_per_slab":2,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":516,"num_slabs":516,"shared_avail":0}},{"name":"mm_struct","active_objs":1050,"num_objs":1050,"obj_size":1088,"obj_per_slab":30,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":35,"num_slabs":35,"shared_avail":0}},{"name":"files_cache","active_objs":1564,"num_objs":1564,"obj_size":704,"obj_per_slab":46,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":34,"num_slabs":34,"shared_avail":0}},{"name":"signal_cache","active_objs":1456,"num_objs":1456,"obj_size":1152,"obj_per_slab":28,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":52,"num_slabs":52,"shared_avail":0}},{"name":"sighand_cache","active_objs":847,"num_objs":885,"obj_size":2112,"obj_per_slab":15,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":59,"num_slabs":59,"shared_avail":0}},{"name":"task_struct","active_objs":698,"num_objs":770,"obj_size":6016,"obj_per_slab":5,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":154,"num_slabs":154,"shared_avail":0}},{"name":"cred_jar","active_objs":3864,"num_objs":3864,"obj_size":192,"obj_per_slab":42,"pages_per_slab":2,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":92,"num_slabs":92,"shared_avail":0}},{"name":"anon_vma_chain","active_objs":19989,"num_objs":21376,"obj_size":64,"obj_per_slab":64,"pages_per_slab":1,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":334,"num_slabs":334,"shared_avail":0}},{"name":"anon_vma","active_objs":11689,"num_objs":11914,"obj_size":88,"obj_per_slab":46,"pages_per_slab":1,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":259,"num_slabs":259,"shared_avail":0}},{"name":"pid","active_objs":3456,"num_objs":3456,"obj_size":128,"obj_per_slab":64,"pages_per_slab":2,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":54,"num_slabs":54,"shared_avail":0}},{"name":"Acpi-Operand","active_objs":10248,"num_objs":10248,"obj_size":72,"obj_per_slab":56,"pages_per_slab":1,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":183,"num_slabs":183,"shared_avail":0}},{"name":"Acpi-ParseExt","active_objs":78,"num_objs":78,"obj_size":104,"obj_per_slab":39,"pages_per_slab":1,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":2,"num_slabs":2,"shared_avail":0}},{"name":"Acpi-State","active_objs":408,"num_objs":408,"obj_size":80,"obj_per_slab":51,"pages_per_slab":1,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":8,"num_slabs":8,"shared_avail":0}},{"name":"numa_policy","active_objs":186,"num_objs":186,"obj_size":264,"obj_per_slab":62,"pages_per_slab":4,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":3,"num_slabs":3,"shared_avail":0}},{"name":"trace_event_file","active_objs":1748,"num_objs":1748,"obj_size":88,"obj_per_slab":46,"pages_per_slab":1,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":38,"num_slabs":38,"shared_avail":0}},{"name":"ftrace_event_field","active_objs":12410,"num_objs":12410,"obj_size":48,"obj_per_slab":85,"pages_per_slab":1,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":146,"num_slabs":146,"shared_avail":0}},{"name":"pool_workqueue","active_objs":768,"num_objs":768,"obj_size":256,"obj_per_slab":64,"pages_per_slab":4,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":12,"num_slabs":12,"shared_avail":0}},{"name":"radix_tree_node","active_objs":10063,"num_objs":12040,"obj_size":584,"obj_per_slab":56,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":215,"num_slabs":215,"shared_avail":0}},{"name":"task_group","active_objs":204,"num_objs":204,"obj_size":640,"obj_per_slab":51,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":4,"num_slabs":4,"shared_avail":0}},{"name":"vmap_area","active_objs":2929,"num_objs":3264,"obj_size":64,"obj_per_slab":64,"pages_per_slab":1,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":51,"num_slabs":51,"shared_avail":0}},{"name":"dma-kmalloc-8k","active_objs":0,"num_objs":0,"obj_size":8192,"obj_per_slab":4,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":0,"num_slabs":0,"shared_avail":0}},{"name":"dma-kmalloc-4k","active_objs":0,"num_objs":0,"obj_size":4096,"obj_per_slab":8,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":0,"num_slabs":0,"shared_avail":0}},{"name":"dma-kmalloc-2k","active_objs":0,"num_objs":0,"obj_size":2048,"obj_per_slab":16,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":0,"num_slabs":0,"shared_avail":0}},{"name":"dma-kmalloc-1k","active_objs":0,"num_objs":0,"obj_size":1024,"obj_per_slab":32,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":0,"num_slabs":0,"shared_avail":0}},{"name":"dma-kmalloc-512","active_objs":128,"num_objs":128,"obj_size":512,"obj_per_slab":64,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":2,"num_slabs":2,"shared_avail":0}},{"name":"dma-kmalloc-256","active_objs":0,"num_objs":0,"obj_size":256,"obj_per_slab":64,"pages_per_slab":4,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":0,"num_slabs":0,"shared_avail":0}},{"name":"dma-kmalloc-128","active_objs":0,"num_objs":0,"obj_size":128,"obj_per_slab":64,"pages_per_slab":2,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":0,"num_slabs":0,"shared_avail":0}},{"name":"dma-kmalloc-64","active_objs":0,"num_objs":0,"obj_size":64,"obj_per_slab":64,"pages_per_slab":1,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":0,"num_slabs":0,"shared_avail":0}},{"name":"dma-kmalloc-32","active_objs":0,"num_objs":0,"obj_size":32,"obj_per_slab":128,"pages_per_slab":1,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":0,"num_slabs":0,"shared_avail":0}},{"name":"dma-kmalloc-16","active_objs":0,"num_objs":0,"obj_size":16,"obj_per_slab":256,"pages_per_slab":1,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":0,"num_slabs":0,"shared_avail":0}},{"name":"dma-kmalloc-8","active_objs":0,"num_objs":0,"obj_size":8,"obj_per_slab":512,"pages_per_slab":1,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":0,"num_slabs":0,"shared_avail":0}},{"name":"dma-kmalloc-192","active_objs":0,"num_objs":0,"obj_size":192,"obj_per_slab":42,"pages_per_slab":2,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":0,"num_slabs":0,"shared_avail":0}},{"name":"dma-kmalloc-96","active_objs":0,"num_objs":0,"obj_size":96,"obj_per_slab":42,"pages_per_slab":1,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":0,"num_slabs":0,"shared_avail":0}},{"name":"kmalloc-rcl-8k","active_objs":0,"num_objs":0,"obj_size":8192,"obj_per_slab":4,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":0,"num_slabs":0,"shared_avail":0}},{"name":"kmalloc-rcl-4k","active_objs":0,"num_objs":0,"obj_size":4096,"obj_per_slab":8,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":0,"num_slabs":0,"shared_avail":0}},{"name":"kmalloc-rcl-2k","active_objs":0,"num_objs":0,"obj_size":2048,"obj_per_slab":16,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":0,"num_slabs":0,"shared_avail":0}},{"name":"kmalloc-rcl-1k","active_objs":0,"num_objs":0,"obj_size":1024,"obj_per_slab":32,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":0,"num_slabs":0,"shared_avail":0}},{"name":"kmalloc-rcl-512","active_objs":0,"num_objs":0,"obj_size":512,"obj_per_slab":64,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":0,"num_slabs":0,"shared_avail":0}},{"name":"kmalloc-rcl-256","active_objs":0,"num_objs":0,"obj_size":256,"obj_per_slab":64,"pages_per_slab":4,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":0,"num_slabs":0,"shared_avail":0}},{"name":"kmalloc-rcl-192","active_objs":0,"num_objs":0,"obj_size":192,"obj_per_slab":42,"pages_per_slab":2,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":0,"num_slabs":0,"shared_avail":0}},{"name":"kmalloc-rcl-128","active_objs":560,"num_objs":640,"obj_size":128,"obj_per_slab":64,"pages_per_slab":2,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":10,"num_slabs":10,"shared_avail":0}},{"name":"kmalloc-rcl-96","active_objs":631,"num_objs":798,"obj_size":96,"obj_per_slab":42,"pages_per_slab":1,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":19,"num_slabs":19,"shared_avail":0}},{"name":"kmalloc-rcl-64","active_objs":3894,"num_objs":4480,"obj_size":64,"obj_per_slab":64,"pages_per_slab":1,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":70,"num_slabs":70,"shared_avail":0}},{"name":"kmalloc-rcl-32","active_objs":0,"num_objs":0,"obj_size":32,"obj_per_slab":128,"pages_per_slab":1,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":0,"num_slabs":0,"shared_avail":0}},{"name":"kmalloc-rcl-16","active_objs":0,"num_objs":0,"obj_size":16,"obj_per_slab":256,"pages_per_slab":1,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":0,"num_slabs":0,"shared_avail":0}},{"name":"kmalloc-rcl-8","active_objs":0,"num_objs":0,"obj_size":8,"obj_per_slab":512,"pages_per_slab":1,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":0,"num_slabs":0,"shared_avail":0}},{"name":"kmalloc-8k","active_objs":127,"num_objs":136,"obj_size":8192,"obj_per_slab":4,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":34,"num_slabs":34,"shared_avail":0}},{"name":"kmalloc-4k","active_objs":2056,"num_objs":2056,"obj_size":4096,"obj_per_slab":8,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":257,"num_slabs":257,"shared_avail":0}},{"name":"kmalloc-2k","active_objs":2132,"num_objs":2192,"obj_size":2048,"obj_per_slab":16,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":137,"num_slabs":137,"shared_avail":0}},{"name":"kmalloc-1k","active_objs":3600,"num_objs":3840,"obj_size":1024,"obj_per_slab":32,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":120,"num_slabs":120,"shared_avail":0}},{"name":"kmalloc-512","active_objs":38846,"num_objs":39104,"obj_size":512,"obj_per_slab":64,"pages_per_slab":8,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":611,"num_slabs":611,"shared_avail":0}},{"name":"kmalloc-256","active_objs":3648,"num_objs":3648,"obj_size":256,"obj_per_slab":64,"pages_per_slab":4,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":57,"num_slabs":57,"shared_avail":0}},{"name":"kmalloc-192","active_objs":2688,"num_objs":2688,"obj_size":192,"obj_per_slab":42,"pages_per_slab":2,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":64,"num_slabs":64,"shared_avail":0}},{"name":"kmalloc-128","active_objs":1664,"num_objs":1664,"obj_size":128,"obj_per_slab":64,"pages_per_slab":2,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":26,"num_slabs":26,"shared_avail":0}},{"name":"kmalloc-96","active_objs":2142,"num_objs":2142,"obj_size":96,"obj_per_slab":42,"pages_per_slab":1,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":51,"num_slabs":51,"shared_avail":0}},{"name":"kmalloc-64","active_objs":21435,"num_objs":21568,"obj_size":64,"obj_per_slab":64,"pages_per_slab":1,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":337,"num_slabs":337,"shared_avail":0}},{"name":"kmalloc-32","active_objs":43520,"num_objs":43520,"obj_size":32,"obj_per_slab":128,"pages_per_slab":1,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":340,"num_slabs":340,"shared_avail":0}},{"name":"kmalloc-16","active_objs":16640,"num_objs":16640,"obj_size":16,"obj_per_slab":256,"pages_per_slab":1,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":65,"num_slabs":65,"shared_avail":0}},{"name":"kmalloc-8","active_objs":49152,"num_objs":49152,"obj_size":8,"obj_per_slab":512,"pages_per_slab":1,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":96,"num_slabs":96,"shared_avail":0}},{"name":"kmem_cache_node","active_objs":1728,"num_objs":1728,"obj_size":64,"obj_per_slab":64,"pages_per_slab":1,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":27,"num_slabs":27,"shared_avail":0}},{"name":"kmem_cache","active_objs":1728,"num_objs":1728,"obj_size":448,"obj_per_slab":36,"pages_per_slab":4,"tunables":{"limit":0,"batch_count":0,"shared_factor":0},"slabdata":{"active_slabs":48,"num_slabs":48,"shared_avail":0}}] diff --git a/tests/fixtures/linux-proc/softirqs.json b/tests/fixtures/linux-proc/softirqs.json new file mode 100644 index 00000000..9bb28d93 --- /dev/null +++ b/tests/fixtures/linux-proc/softirqs.json @@ -0,0 +1 @@ +[{"counter":"HI","CPU0":1,"CPU1":34056,"CPU2":0,"CPU3":0,"CPU4":0,"CPU5":0,"CPU6":0,"CPU7":0,"CPU8":0,"CPU9":0,"CPU10":0,"CPU11":0,"CPU12":0,"CPU13":0,"CPU14":0,"CPU15":0,"CPU16":0,"CPU17":0,"CPU18":0,"CPU19":0,"CPU20":0,"CPU21":0,"CPU22":0,"CPU23":0,"CPU24":0,"CPU25":0,"CPU26":0,"CPU27":0,"CPU28":0,"CPU29":0,"CPU30":0,"CPU31":0,"CPU32":0,"CPU33":0,"CPU34":0,"CPU35":0,"CPU36":0,"CPU37":0,"CPU38":0,"CPU39":0,"CPU40":0,"CPU41":0,"CPU42":0,"CPU43":0,"CPU44":0,"CPU45":0,"CPU46":0,"CPU47":0,"CPU48":0,"CPU49":0,"CPU50":0,"CPU51":0,"CPU52":0,"CPU53":0,"CPU54":0,"CPU55":0,"CPU56":0,"CPU57":0,"CPU58":0,"CPU59":0,"CPU60":0,"CPU61":0,"CPU62":0,"CPU63":0,"CPU64":0,"CPU65":0,"CPU66":0,"CPU67":0,"CPU68":0,"CPU69":0,"CPU70":0,"CPU71":0,"CPU72":0,"CPU73":0,"CPU74":0,"CPU75":0,"CPU76":0,"CPU77":0,"CPU78":0,"CPU79":0,"CPU80":0,"CPU81":0,"CPU82":0,"CPU83":0,"CPU84":0,"CPU85":0,"CPU86":0,"CPU87":0,"CPU88":0,"CPU89":0,"CPU90":0,"CPU91":0,"CPU92":0,"CPU93":0,"CPU94":0,"CPU95":0,"CPU96":0,"CPU97":0,"CPU98":0,"CPU99":0,"CPU100":0,"CPU101":0,"CPU102":0,"CPU103":0,"CPU104":0,"CPU105":0,"CPU106":0,"CPU107":0,"CPU108":0,"CPU109":0,"CPU110":0,"CPU111":0,"CPU112":0,"CPU113":0,"CPU114":0,"CPU115":0,"CPU116":0,"CPU117":0,"CPU118":0,"CPU119":0,"CPU120":0,"CPU121":0,"CPU122":0,"CPU123":0,"CPU124":0,"CPU125":0,"CPU126":0,"CPU127":0},{"counter":"TIMER","CPU0":322970,"CPU1":888166,"CPU2":0,"CPU3":0,"CPU4":0,"CPU5":0,"CPU6":0,"CPU7":0,"CPU8":0,"CPU9":0,"CPU10":0,"CPU11":0,"CPU12":0,"CPU13":0,"CPU14":0,"CPU15":0,"CPU16":0,"CPU17":0,"CPU18":0,"CPU19":0,"CPU20":0,"CPU21":0,"CPU22":0,"CPU23":0,"CPU24":0,"CPU25":0,"CPU26":0,"CPU27":0,"CPU28":0,"CPU29":0,"CPU30":0,"CPU31":0,"CPU32":0,"CPU33":0,"CPU34":0,"CPU35":0,"CPU36":0,"CPU37":0,"CPU38":0,"CPU39":0,"CPU40":0,"CPU41":0,"CPU42":0,"CPU43":0,"CPU44":0,"CPU45":0,"CPU46":0,"CPU47":0,"CPU48":0,"CPU49":0,"CPU50":0,"CPU51":0,"CPU52":0,"CPU53":0,"CPU54":0,"CPU55":0,"CPU56":0,"CPU57":0,"CPU58":0,"CPU59":0,"CPU60":0,"CPU61":0,"CPU62":0,"CPU63":0,"CPU64":0,"CPU65":0,"CPU66":0,"CPU67":0,"CPU68":0,"CPU69":0,"CPU70":0,"CPU71":0,"CPU72":0,"CPU73":0,"CPU74":0,"CPU75":0,"CPU76":0,"CPU77":0,"CPU78":0,"CPU79":0,"CPU80":0,"CPU81":0,"CPU82":0,"CPU83":0,"CPU84":0,"CPU85":0,"CPU86":0,"CPU87":0,"CPU88":0,"CPU89":0,"CPU90":0,"CPU91":0,"CPU92":0,"CPU93":0,"CPU94":0,"CPU95":0,"CPU96":0,"CPU97":0,"CPU98":0,"CPU99":0,"CPU100":0,"CPU101":0,"CPU102":0,"CPU103":0,"CPU104":0,"CPU105":0,"CPU106":0,"CPU107":0,"CPU108":0,"CPU109":0,"CPU110":0,"CPU111":0,"CPU112":0,"CPU113":0,"CPU114":0,"CPU115":0,"CPU116":0,"CPU117":0,"CPU118":0,"CPU119":0,"CPU120":0,"CPU121":0,"CPU122":0,"CPU123":0,"CPU124":0,"CPU125":0,"CPU126":0,"CPU127":0},{"counter":"NET_TX","CPU0":2,"CPU1":3350,"CPU2":0,"CPU3":0,"CPU4":0,"CPU5":0,"CPU6":0,"CPU7":0,"CPU8":0,"CPU9":0,"CPU10":0,"CPU11":0,"CPU12":0,"CPU13":0,"CPU14":0,"CPU15":0,"CPU16":0,"CPU17":0,"CPU18":0,"CPU19":0,"CPU20":0,"CPU21":0,"CPU22":0,"CPU23":0,"CPU24":0,"CPU25":0,"CPU26":0,"CPU27":0,"CPU28":0,"CPU29":0,"CPU30":0,"CPU31":0,"CPU32":0,"CPU33":0,"CPU34":0,"CPU35":0,"CPU36":0,"CPU37":0,"CPU38":0,"CPU39":0,"CPU40":0,"CPU41":0,"CPU42":0,"CPU43":0,"CPU44":0,"CPU45":0,"CPU46":0,"CPU47":0,"CPU48":0,"CPU49":0,"CPU50":0,"CPU51":0,"CPU52":0,"CPU53":0,"CPU54":0,"CPU55":0,"CPU56":0,"CPU57":0,"CPU58":0,"CPU59":0,"CPU60":0,"CPU61":0,"CPU62":0,"CPU63":0,"CPU64":0,"CPU65":0,"CPU66":0,"CPU67":0,"CPU68":0,"CPU69":0,"CPU70":0,"CPU71":0,"CPU72":0,"CPU73":0,"CPU74":0,"CPU75":0,"CPU76":0,"CPU77":0,"CPU78":0,"CPU79":0,"CPU80":0,"CPU81":0,"CPU82":0,"CPU83":0,"CPU84":0,"CPU85":0,"CPU86":0,"CPU87":0,"CPU88":0,"CPU89":0,"CPU90":0,"CPU91":0,"CPU92":0,"CPU93":0,"CPU94":0,"CPU95":0,"CPU96":0,"CPU97":0,"CPU98":0,"CPU99":0,"CPU100":0,"CPU101":0,"CPU102":0,"CPU103":0,"CPU104":0,"CPU105":0,"CPU106":0,"CPU107":0,"CPU108":0,"CPU109":0,"CPU110":0,"CPU111":0,"CPU112":0,"CPU113":0,"CPU114":0,"CPU115":0,"CPU116":0,"CPU117":0,"CPU118":0,"CPU119":0,"CPU120":0,"CPU121":0,"CPU122":0,"CPU123":0,"CPU124":0,"CPU125":0,"CPU126":0,"CPU127":0},{"counter":"NET_RX","CPU0":61,"CPU1":128016,"CPU2":0,"CPU3":0,"CPU4":0,"CPU5":0,"CPU6":0,"CPU7":0,"CPU8":0,"CPU9":0,"CPU10":0,"CPU11":0,"CPU12":0,"CPU13":0,"CPU14":0,"CPU15":0,"CPU16":0,"CPU17":0,"CPU18":0,"CPU19":0,"CPU20":0,"CPU21":0,"CPU22":0,"CPU23":0,"CPU24":0,"CPU25":0,"CPU26":0,"CPU27":0,"CPU28":0,"CPU29":0,"CPU30":0,"CPU31":0,"CPU32":0,"CPU33":0,"CPU34":0,"CPU35":0,"CPU36":0,"CPU37":0,"CPU38":0,"CPU39":0,"CPU40":0,"CPU41":0,"CPU42":0,"CPU43":0,"CPU44":0,"CPU45":0,"CPU46":0,"CPU47":0,"CPU48":0,"CPU49":0,"CPU50":0,"CPU51":0,"CPU52":0,"CPU53":0,"CPU54":0,"CPU55":0,"CPU56":0,"CPU57":0,"CPU58":0,"CPU59":0,"CPU60":0,"CPU61":0,"CPU62":0,"CPU63":0,"CPU64":0,"CPU65":0,"CPU66":0,"CPU67":0,"CPU68":0,"CPU69":0,"CPU70":0,"CPU71":0,"CPU72":0,"CPU73":0,"CPU74":0,"CPU75":0,"CPU76":0,"CPU77":0,"CPU78":0,"CPU79":0,"CPU80":0,"CPU81":0,"CPU82":0,"CPU83":0,"CPU84":0,"CPU85":0,"CPU86":0,"CPU87":0,"CPU88":0,"CPU89":0,"CPU90":0,"CPU91":0,"CPU92":0,"CPU93":0,"CPU94":0,"CPU95":0,"CPU96":0,"CPU97":0,"CPU98":0,"CPU99":0,"CPU100":0,"CPU101":0,"CPU102":0,"CPU103":0,"CPU104":0,"CPU105":0,"CPU106":0,"CPU107":0,"CPU108":0,"CPU109":0,"CPU110":0,"CPU111":0,"CPU112":0,"CPU113":0,"CPU114":0,"CPU115":0,"CPU116":0,"CPU117":0,"CPU118":0,"CPU119":0,"CPU120":0,"CPU121":0,"CPU122":0,"CPU123":0,"CPU124":0,"CPU125":0,"CPU126":0,"CPU127":0},{"counter":"BLOCK","CPU0":22906,"CPU1":26865,"CPU2":0,"CPU3":0,"CPU4":0,"CPU5":0,"CPU6":0,"CPU7":0,"CPU8":0,"CPU9":0,"CPU10":0,"CPU11":0,"CPU12":0,"CPU13":0,"CPU14":0,"CPU15":0,"CPU16":0,"CPU17":0,"CPU18":0,"CPU19":0,"CPU20":0,"CPU21":0,"CPU22":0,"CPU23":0,"CPU24":0,"CPU25":0,"CPU26":0,"CPU27":0,"CPU28":0,"CPU29":0,"CPU30":0,"CPU31":0,"CPU32":0,"CPU33":0,"CPU34":0,"CPU35":0,"CPU36":0,"CPU37":0,"CPU38":0,"CPU39":0,"CPU40":0,"CPU41":0,"CPU42":0,"CPU43":0,"CPU44":0,"CPU45":0,"CPU46":0,"CPU47":0,"CPU48":0,"CPU49":0,"CPU50":0,"CPU51":0,"CPU52":0,"CPU53":0,"CPU54":0,"CPU55":0,"CPU56":0,"CPU57":0,"CPU58":0,"CPU59":0,"CPU60":0,"CPU61":0,"CPU62":0,"CPU63":0,"CPU64":0,"CPU65":0,"CPU66":0,"CPU67":0,"CPU68":0,"CPU69":0,"CPU70":0,"CPU71":0,"CPU72":0,"CPU73":0,"CPU74":0,"CPU75":0,"CPU76":0,"CPU77":0,"CPU78":0,"CPU79":0,"CPU80":0,"CPU81":0,"CPU82":0,"CPU83":0,"CPU84":0,"CPU85":0,"CPU86":0,"CPU87":0,"CPU88":0,"CPU89":0,"CPU90":0,"CPU91":0,"CPU92":0,"CPU93":0,"CPU94":0,"CPU95":0,"CPU96":0,"CPU97":0,"CPU98":0,"CPU99":0,"CPU100":0,"CPU101":0,"CPU102":0,"CPU103":0,"CPU104":0,"CPU105":0,"CPU106":0,"CPU107":0,"CPU108":0,"CPU109":0,"CPU110":0,"CPU111":0,"CPU112":0,"CPU113":0,"CPU114":0,"CPU115":0,"CPU116":0,"CPU117":0,"CPU118":0,"CPU119":0,"CPU120":0,"CPU121":0,"CPU122":0,"CPU123":0,"CPU124":0,"CPU125":0,"CPU126":0,"CPU127":0},{"counter":"IRQ_POLL","CPU0":0,"CPU1":0,"CPU2":0,"CPU3":0,"CPU4":0,"CPU5":0,"CPU6":0,"CPU7":0,"CPU8":0,"CPU9":0,"CPU10":0,"CPU11":0,"CPU12":0,"CPU13":0,"CPU14":0,"CPU15":0,"CPU16":0,"CPU17":0,"CPU18":0,"CPU19":0,"CPU20":0,"CPU21":0,"CPU22":0,"CPU23":0,"CPU24":0,"CPU25":0,"CPU26":0,"CPU27":0,"CPU28":0,"CPU29":0,"CPU30":0,"CPU31":0,"CPU32":0,"CPU33":0,"CPU34":0,"CPU35":0,"CPU36":0,"CPU37":0,"CPU38":0,"CPU39":0,"CPU40":0,"CPU41":0,"CPU42":0,"CPU43":0,"CPU44":0,"CPU45":0,"CPU46":0,"CPU47":0,"CPU48":0,"CPU49":0,"CPU50":0,"CPU51":0,"CPU52":0,"CPU53":0,"CPU54":0,"CPU55":0,"CPU56":0,"CPU57":0,"CPU58":0,"CPU59":0,"CPU60":0,"CPU61":0,"CPU62":0,"CPU63":0,"CPU64":0,"CPU65":0,"CPU66":0,"CPU67":0,"CPU68":0,"CPU69":0,"CPU70":0,"CPU71":0,"CPU72":0,"CPU73":0,"CPU74":0,"CPU75":0,"CPU76":0,"CPU77":0,"CPU78":0,"CPU79":0,"CPU80":0,"CPU81":0,"CPU82":0,"CPU83":0,"CPU84":0,"CPU85":0,"CPU86":0,"CPU87":0,"CPU88":0,"CPU89":0,"CPU90":0,"CPU91":0,"CPU92":0,"CPU93":0,"CPU94":0,"CPU95":0,"CPU96":0,"CPU97":0,"CPU98":0,"CPU99":0,"CPU100":0,"CPU101":0,"CPU102":0,"CPU103":0,"CPU104":0,"CPU105":0,"CPU106":0,"CPU107":0,"CPU108":0,"CPU109":0,"CPU110":0,"CPU111":0,"CPU112":0,"CPU113":0,"CPU114":0,"CPU115":0,"CPU116":0,"CPU117":0,"CPU118":0,"CPU119":0,"CPU120":0,"CPU121":0,"CPU122":0,"CPU123":0,"CPU124":0,"CPU125":0,"CPU126":0,"CPU127":0},{"counter":"TASKLET","CPU0":47,"CPU1":166383,"CPU2":0,"CPU3":0,"CPU4":0,"CPU5":0,"CPU6":0,"CPU7":0,"CPU8":0,"CPU9":0,"CPU10":0,"CPU11":0,"CPU12":0,"CPU13":0,"CPU14":0,"CPU15":0,"CPU16":0,"CPU17":0,"CPU18":0,"CPU19":0,"CPU20":0,"CPU21":0,"CPU22":0,"CPU23":0,"CPU24":0,"CPU25":0,"CPU26":0,"CPU27":0,"CPU28":0,"CPU29":0,"CPU30":0,"CPU31":0,"CPU32":0,"CPU33":0,"CPU34":0,"CPU35":0,"CPU36":0,"CPU37":0,"CPU38":0,"CPU39":0,"CPU40":0,"CPU41":0,"CPU42":0,"CPU43":0,"CPU44":0,"CPU45":0,"CPU46":0,"CPU47":0,"CPU48":0,"CPU49":0,"CPU50":0,"CPU51":0,"CPU52":0,"CPU53":0,"CPU54":0,"CPU55":0,"CPU56":0,"CPU57":0,"CPU58":0,"CPU59":0,"CPU60":0,"CPU61":0,"CPU62":0,"CPU63":0,"CPU64":0,"CPU65":0,"CPU66":0,"CPU67":0,"CPU68":0,"CPU69":0,"CPU70":0,"CPU71":0,"CPU72":0,"CPU73":0,"CPU74":0,"CPU75":0,"CPU76":0,"CPU77":0,"CPU78":0,"CPU79":0,"CPU80":0,"CPU81":0,"CPU82":0,"CPU83":0,"CPU84":0,"CPU85":0,"CPU86":0,"CPU87":0,"CPU88":0,"CPU89":0,"CPU90":0,"CPU91":0,"CPU92":0,"CPU93":0,"CPU94":0,"CPU95":0,"CPU96":0,"CPU97":0,"CPU98":0,"CPU99":0,"CPU100":0,"CPU101":0,"CPU102":0,"CPU103":0,"CPU104":0,"CPU105":0,"CPU106":0,"CPU107":0,"CPU108":0,"CPU109":0,"CPU110":0,"CPU111":0,"CPU112":0,"CPU113":0,"CPU114":0,"CPU115":0,"CPU116":0,"CPU117":0,"CPU118":0,"CPU119":0,"CPU120":0,"CPU121":0,"CPU122":0,"CPU123":0,"CPU124":0,"CPU125":0,"CPU126":0,"CPU127":0},{"counter":"SCHED","CPU0":314955,"CPU1":885432,"CPU2":0,"CPU3":0,"CPU4":0,"CPU5":0,"CPU6":0,"CPU7":0,"CPU8":0,"CPU9":0,"CPU10":0,"CPU11":0,"CPU12":0,"CPU13":0,"CPU14":0,"CPU15":0,"CPU16":0,"CPU17":0,"CPU18":0,"CPU19":0,"CPU20":0,"CPU21":0,"CPU22":0,"CPU23":0,"CPU24":0,"CPU25":0,"CPU26":0,"CPU27":0,"CPU28":0,"CPU29":0,"CPU30":0,"CPU31":0,"CPU32":0,"CPU33":0,"CPU34":0,"CPU35":0,"CPU36":0,"CPU37":0,"CPU38":0,"CPU39":0,"CPU40":0,"CPU41":0,"CPU42":0,"CPU43":0,"CPU44":0,"CPU45":0,"CPU46":0,"CPU47":0,"CPU48":0,"CPU49":0,"CPU50":0,"CPU51":0,"CPU52":0,"CPU53":0,"CPU54":0,"CPU55":0,"CPU56":0,"CPU57":0,"CPU58":0,"CPU59":0,"CPU60":0,"CPU61":0,"CPU62":0,"CPU63":0,"CPU64":0,"CPU65":0,"CPU66":0,"CPU67":0,"CPU68":0,"CPU69":0,"CPU70":0,"CPU71":0,"CPU72":0,"CPU73":0,"CPU74":0,"CPU75":0,"CPU76":0,"CPU77":0,"CPU78":0,"CPU79":0,"CPU80":0,"CPU81":0,"CPU82":0,"CPU83":0,"CPU84":0,"CPU85":0,"CPU86":0,"CPU87":0,"CPU88":0,"CPU89":0,"CPU90":0,"CPU91":0,"CPU92":0,"CPU93":0,"CPU94":0,"CPU95":0,"CPU96":0,"CPU97":0,"CPU98":0,"CPU99":0,"CPU100":0,"CPU101":0,"CPU102":0,"CPU103":0,"CPU104":0,"CPU105":0,"CPU106":0,"CPU107":0,"CPU108":0,"CPU109":0,"CPU110":0,"CPU111":0,"CPU112":0,"CPU113":0,"CPU114":0,"CPU115":0,"CPU116":0,"CPU117":0,"CPU118":0,"CPU119":0,"CPU120":0,"CPU121":0,"CPU122":0,"CPU123":0,"CPU124":0,"CPU125":0,"CPU126":0,"CPU127":0},{"counter":"HRTIMER","CPU0":0,"CPU1":0,"CPU2":0,"CPU3":0,"CPU4":0,"CPU5":0,"CPU6":0,"CPU7":0,"CPU8":0,"CPU9":0,"CPU10":0,"CPU11":0,"CPU12":0,"CPU13":0,"CPU14":0,"CPU15":0,"CPU16":0,"CPU17":0,"CPU18":0,"CPU19":0,"CPU20":0,"CPU21":0,"CPU22":0,"CPU23":0,"CPU24":0,"CPU25":0,"CPU26":0,"CPU27":0,"CPU28":0,"CPU29":0,"CPU30":0,"CPU31":0,"CPU32":0,"CPU33":0,"CPU34":0,"CPU35":0,"CPU36":0,"CPU37":0,"CPU38":0,"CPU39":0,"CPU40":0,"CPU41":0,"CPU42":0,"CPU43":0,"CPU44":0,"CPU45":0,"CPU46":0,"CPU47":0,"CPU48":0,"CPU49":0,"CPU50":0,"CPU51":0,"CPU52":0,"CPU53":0,"CPU54":0,"CPU55":0,"CPU56":0,"CPU57":0,"CPU58":0,"CPU59":0,"CPU60":0,"CPU61":0,"CPU62":0,"CPU63":0,"CPU64":0,"CPU65":0,"CPU66":0,"CPU67":0,"CPU68":0,"CPU69":0,"CPU70":0,"CPU71":0,"CPU72":0,"CPU73":0,"CPU74":0,"CPU75":0,"CPU76":0,"CPU77":0,"CPU78":0,"CPU79":0,"CPU80":0,"CPU81":0,"CPU82":0,"CPU83":0,"CPU84":0,"CPU85":0,"CPU86":0,"CPU87":0,"CPU88":0,"CPU89":0,"CPU90":0,"CPU91":0,"CPU92":0,"CPU93":0,"CPU94":0,"CPU95":0,"CPU96":0,"CPU97":0,"CPU98":0,"CPU99":0,"CPU100":0,"CPU101":0,"CPU102":0,"CPU103":0,"CPU104":0,"CPU105":0,"CPU106":0,"CPU107":0,"CPU108":0,"CPU109":0,"CPU110":0,"CPU111":0,"CPU112":0,"CPU113":0,"CPU114":0,"CPU115":0,"CPU116":0,"CPU117":0,"CPU118":0,"CPU119":0,"CPU120":0,"CPU121":0,"CPU122":0,"CPU123":0,"CPU124":0,"CPU125":0,"CPU126":0,"CPU127":0},{"counter":"RCU","CPU0":225923,"CPU1":352625,"CPU2":0,"CPU3":0,"CPU4":0,"CPU5":0,"CPU6":0,"CPU7":0,"CPU8":0,"CPU9":0,"CPU10":0,"CPU11":0,"CPU12":0,"CPU13":0,"CPU14":0,"CPU15":0,"CPU16":0,"CPU17":0,"CPU18":0,"CPU19":0,"CPU20":0,"CPU21":0,"CPU22":0,"CPU23":0,"CPU24":0,"CPU25":0,"CPU26":0,"CPU27":0,"CPU28":0,"CPU29":0,"CPU30":0,"CPU31":0,"CPU32":0,"CPU33":0,"CPU34":0,"CPU35":0,"CPU36":0,"CPU37":0,"CPU38":0,"CPU39":0,"CPU40":0,"CPU41":0,"CPU42":0,"CPU43":0,"CPU44":0,"CPU45":0,"CPU46":0,"CPU47":0,"CPU48":0,"CPU49":0,"CPU50":0,"CPU51":0,"CPU52":0,"CPU53":0,"CPU54":0,"CPU55":0,"CPU56":0,"CPU57":0,"CPU58":0,"CPU59":0,"CPU60":0,"CPU61":0,"CPU62":0,"CPU63":0,"CPU64":0,"CPU65":0,"CPU66":0,"CPU67":0,"CPU68":0,"CPU69":0,"CPU70":0,"CPU71":0,"CPU72":0,"CPU73":0,"CPU74":0,"CPU75":0,"CPU76":0,"CPU77":0,"CPU78":0,"CPU79":0,"CPU80":0,"CPU81":0,"CPU82":0,"CPU83":0,"CPU84":0,"CPU85":0,"CPU86":0,"CPU87":0,"CPU88":0,"CPU89":0,"CPU90":0,"CPU91":0,"CPU92":0,"CPU93":0,"CPU94":0,"CPU95":0,"CPU96":0,"CPU97":0,"CPU98":0,"CPU99":0,"CPU100":0,"CPU101":0,"CPU102":0,"CPU103":0,"CPU104":0,"CPU105":0,"CPU106":0,"CPU107":0,"CPU108":0,"CPU109":0,"CPU110":0,"CPU111":0,"CPU112":0,"CPU113":0,"CPU114":0,"CPU115":0,"CPU116":0,"CPU117":0,"CPU118":0,"CPU119":0,"CPU120":0,"CPU121":0,"CPU122":0,"CPU123":0,"CPU124":0,"CPU125":0,"CPU126":0,"CPU127":0}] diff --git a/tests/fixtures/linux-proc/stat.json b/tests/fixtures/linux-proc/stat.json new file mode 100644 index 00000000..cfb37a5a --- /dev/null +++ b/tests/fixtures/linux-proc/stat.json @@ -0,0 +1 @@ +{"cpu":{"user":6002,"nice":152,"system":8398,"idle":3444436,"iowait":448,"irq":0,"softirq":1174,"steal":0,"guest":0,"guest_nice":0},"cpu0":{"user":2784,"nice":137,"system":4367,"idle":1732802,"iowait":225,"irq":0,"softirq":221,"steal":0,"guest":0,"guest_nice":0},"cpu1":{"user":3218,"nice":15,"system":4031,"idle":1711634,"iowait":223,"irq":0,"softirq":953,"steal":0,"guest":0,"guest_nice":0},"interrupts":[2496709,18,73,0,0,0,0,0,0,1,0,0,0,18,0,0,0,4219,37341,423366,128490,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9063,2363,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"context_switches":4622716,"boot_time":1662154781,"processes":9831,"processes_running":1,"processes_blocked":0,"softirq":[3478985,35230,1252057,3467,128583,51014,0,171199,1241297,0,596138]} diff --git a/tests/fixtures/linux-proc/stat2.json b/tests/fixtures/linux-proc/stat2.json new file mode 100644 index 00000000..e87d8e36 --- /dev/null +++ b/tests/fixtures/linux-proc/stat2.json @@ -0,0 +1 @@ +{"cpu":{"user":209841,"nice":1554,"system":21720,"idle":118519346,"iowait":72939,"irq":154,"softirq":27168},"cpu0":{"user":42536,"nice":798,"system":4841,"idle":14790880,"iowait":14778,"irq":124,"softirq":3117},"interrupts":[15239682,14857833,6,0,6,6,0,5,0,1,0,0,0,29,0,2,0,0,0,0,0,0,0,94982,0,286812],"context_switches":4209609,"boot_time":1078711415,"processes":21905,"processes_running":1,"processes_blocked":0,"cpu1":{"user":24184,"nice":569,"system":3875,"idle":14794524,"iowait":30209,"irq":29,"softirq":3130},"cpu2":{"user":28616,"nice":11,"system":2182,"idle":14818198,"iowait":4020,"irq":1,"softirq":3493},"cpu3":{"user":35350,"nice":6,"system":2942,"idle":14811519,"iowait":3045,"irq":0,"softirq":3659},"cpu4":{"user":18209,"nice":135,"system":2263,"idle":14820076,"iowait":12465,"irq":0,"softirq":3373},"cpu5":{"user":20795,"nice":35,"system":1866,"idle":14825701,"iowait":4508,"irq":0,"softirq":3615},"cpu6":{"user":21607,"nice":0,"system":2201,"idle":14827053,"iowait":2325,"irq":0,"softirq":3334},"cpu7":{"user":18544,"nice":0,"system":1550,"idle":14831395,"iowait":1589,"irq":0,"softirq":3447}} diff --git a/tests/fixtures/linux-proc/swaps.json b/tests/fixtures/linux-proc/swaps.json new file mode 100644 index 00000000..80b871c7 --- /dev/null +++ b/tests/fixtures/linux-proc/swaps.json @@ -0,0 +1 @@ +[{"filename":"/swap.img","type":"file","size":3996668,"used":0,"priority":-2}] diff --git a/tests/fixtures/linux-proc/uptime.json b/tests/fixtures/linux-proc/uptime.json new file mode 100644 index 00000000..ce1ada1c --- /dev/null +++ b/tests/fixtures/linux-proc/uptime.json @@ -0,0 +1 @@ +{"up_time":46901.13,"idle_time":46856.66} diff --git a/tests/fixtures/linux-proc/version.json b/tests/fixtures/linux-proc/version.json new file mode 100644 index 00000000..3d52c6c7 --- /dev/null +++ b/tests/fixtures/linux-proc/version.json @@ -0,0 +1 @@ +{"version":"5.8.0-63-generic","email":"buildd@lcy01-amd64-028","gcc":"gcc (Ubuntu 10.3.0-1ubuntu1~20.10) 10.3.0, GNU ld (GNU Binutils for Ubuntu) 2.35.1","build":"#71-Ubuntu","flags":"SMP","date":"Tue Jul 13 15:59:12 UTC 2021"} diff --git a/tests/fixtures/linux-proc/version2.json b/tests/fixtures/linux-proc/version2.json new file mode 100644 index 00000000..b2980ecf --- /dev/null +++ b/tests/fixtures/linux-proc/version2.json @@ -0,0 +1 @@ +{"version":"3.10.0-1062.el7.x86_64","email":"mockbuild@kbuilder.bsys.centos.org","gcc":"gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC)","build":"#1","flags":"SMP","date":"Wed Aug 7 18:08:02 UTC 2019"} diff --git a/tests/fixtures/linux-proc/version3.json b/tests/fixtures/linux-proc/version3.json new file mode 100644 index 00000000..f8e1cebf --- /dev/null +++ b/tests/fixtures/linux-proc/version3.json @@ -0,0 +1 @@ +{"version":"2.6.8-1.523","email":"user@foo.redhat.com","gcc":"gcc version 3.4.1 20040714 \\ (Red Hat Enterprise Linux 3.4.1-7)","build":"#1","flags":null,"date":"Mon Aug 16 13:27:03 EDT 2004"} diff --git a/tests/fixtures/linux-proc/vmallocinfo.json b/tests/fixtures/linux-proc/vmallocinfo.json new file mode 100644 index 00000000..6bf7ccf3 --- /dev/null +++ b/tests/fixtures/linux-proc/vmallocinfo.json @@ -0,0 +1 @@ +[{"start":"0xffffb3c1c0000000","end":"0xffffb3c1c0005000","size":20480,"caller":"map_irq_stack+0x93/0xe0","options":["vmap"],"phys":"0x00000000bfefe000"},{"start":"0xffffb3c1c0005000","end":"0xffffb3c1c0007000","size":8192,"caller":"acpi_os_map_iomem+0x1ac/0x1c0","options":["ioremap"],"phys":"0x00000000bfeff000"},{"start":"0xffffb3c1c0007000","end":"0xffffb3c1c0009000","size":8192,"caller":"acpi_os_map_iomem+0x1ac/0x1c0","options":["ioremap"],"phys":"0x00000000bfedc000"},{"start":"0xffffb3c1c0009000","end":"0xffffb3c1c000b000","size":8192,"caller":"acpi_os_map_iomem+0x1ac/0x1c0","options":["ioremap"],"phys":"0x00000000fed00000"},{"start":"0xffffb3c1c000b000","end":"0xffffb3c1c000d000","size":8192,"caller":"hpet_enable+0x37/0x2b8","options":["ioremap"],"pages":1,"N0":1},{"start":"0xffffb3c1c000d000","end":"0xffffb3c1c000f000","size":8192,"caller":"gen_pool_add_owner+0x42/0xc0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0010000","end":"0xffffb3c1c0015000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0015000","end":"0xffffb3c1c0017000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0018000","end":"0xffffb3c1c001d000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c001d000","end":"0xffffb3c1c001f000","size":8192,"caller":"gen_pool_add_owner+0x42/0xc0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0020000","end":"0xffffb3c1c0025000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0025000","end":"0xffffb3c1c0027000","size":8192,"caller":"gen_pool_add_owner+0x42/0xc0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0028000","end":"0xffffb3c1c002d000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c002d000","end":"0xffffb3c1c002f000","size":8192,"caller":"gen_pool_add_owner+0x42/0xc0","options":["vmalloc"],"pages":3,"N0":3},{"start":"0xffffb3c1c0031000","end":"0xffffb3c1c0035000","size":16384,"caller":"n_tty_open+0x19/0xa0","options":["vmalloc"],"phys":"0x00000000fd5ef000"},{"start":"0xffffb3c1c0035000","end":"0xffffb3c1c0037000","size":8192,"caller":"devm_ioremap+0x43/0x90","options":["ioremap"],"pages":4,"N0":4},{"start":"0xffffb3c1c0038000","end":"0xffffb3c1c003d000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"phys":"0x00000000fe800000"},{"start":"0xffffb3c1c003d000","end":"0xffffb3c1c003f000","size":8192,"caller":"acpi_os_map_iomem+0x1ac/0x1c0","options":["ioremap"],"phys":"0x00000000bfedd000"},{"start":"0xffffb3c1c0040000","end":"0xffffb3c1c0063000","size":143360,"caller":"acpi_os_map_iomem+0x1ac/0x1c0","options":["ioremap"],"phys":"0x00000000fd5ee000"},{"start":"0xffffb3c1c0069000","end":"0xffffb3c1c006b000","size":8192,"caller":"pci_iomap_range+0x6f/0xa0","options":["ioremap"],"pages":2,"N0":2},{"start":"0xffffb3c1c0071000","end":"0xffffb3c1c0074000","size":12288,"caller":"vmw_fb_init+0x1c3/0x3f0","options":["[vmwgfx]","vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0074000","end":"0xffffb3c1c0079000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0079000","end":"0xffffb3c1c007b000","size":8192,"caller":"dm_table_create+0x99/0x150","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c007c000","end":"0xffffb3c1c0081000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0081000","end":"0xffffb3c1c0083000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0084000","end":"0xffffb3c1c0089000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c008c000","end":"0xffffb3c1c0091000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0091000","end":"0xffffb3c1c0093000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0094000","end":"0xffffb3c1c0099000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0099000","end":"0xffffb3c1c009b000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c009c000","end":"0xffffb3c1c00a1000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c00a1000","end":"0xffffb3c1c00a3000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c00a4000","end":"0xffffb3c1c00a9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c00a9000","end":"0xffffb3c1c00ab000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c00ac000","end":"0xffffb3c1c00b1000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c00b1000","end":"0xffffb3c1c00b3000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c00b4000","end":"0xffffb3c1c00b9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c00b9000","end":"0xffffb3c1c00bb000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c00bc000","end":"0xffffb3c1c00c1000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c00c1000","end":"0xffffb3c1c00c3000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c00c4000","end":"0xffffb3c1c00c9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c00c9000","end":"0xffffb3c1c00cb000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c00cc000","end":"0xffffb3c1c00d1000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c00d1000","end":"0xffffb3c1c00d3000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c00d4000","end":"0xffffb3c1c00d9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c00d9000","end":"0xffffb3c1c00db000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c00dc000","end":"0xffffb3c1c00e1000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c00e1000","end":"0xffffb3c1c00e3000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c00e4000","end":"0xffffb3c1c00e9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c00e9000","end":"0xffffb3c1c00eb000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c00ec000","end":"0xffffb3c1c00f1000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c00f1000","end":"0xffffb3c1c00f3000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c00f4000","end":"0xffffb3c1c00f9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c00f9000","end":"0xffffb3c1c00fb000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c00fc000","end":"0xffffb3c1c0101000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0101000","end":"0xffffb3c1c0103000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0104000","end":"0xffffb3c1c0109000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0109000","end":"0xffffb3c1c010b000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c010c000","end":"0xffffb3c1c0111000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0111000","end":"0xffffb3c1c0113000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0114000","end":"0xffffb3c1c0119000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0119000","end":"0xffffb3c1c011b000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c011c000","end":"0xffffb3c1c0121000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0121000","end":"0xffffb3c1c0123000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0124000","end":"0xffffb3c1c0129000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0129000","end":"0xffffb3c1c012b000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c012c000","end":"0xffffb3c1c0131000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0131000","end":"0xffffb3c1c0133000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0134000","end":"0xffffb3c1c0139000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0139000","end":"0xffffb3c1c013b000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c013c000","end":"0xffffb3c1c0141000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0141000","end":"0xffffb3c1c0143000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0144000","end":"0xffffb3c1c0149000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0149000","end":"0xffffb3c1c014b000","size":8192,"caller":"swap_cgroup_swapon+0x2d/0x150","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c014c000","end":"0xffffb3c1c0151000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0151000","end":"0xffffb3c1c0153000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0154000","end":"0xffffb3c1c0159000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0159000","end":"0xffffb3c1c015b000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c015c000","end":"0xffffb3c1c0161000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0161000","end":"0xffffb3c1c0163000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0164000","end":"0xffffb3c1c0169000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0169000","end":"0xffffb3c1c016b000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c016c000","end":"0xffffb3c1c0171000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0171000","end":"0xffffb3c1c0173000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0174000","end":"0xffffb3c1c0179000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0179000","end":"0xffffb3c1c017b000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c017c000","end":"0xffffb3c1c0181000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0181000","end":"0xffffb3c1c0183000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0184000","end":"0xffffb3c1c0189000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0189000","end":"0xffffb3c1c018b000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c018c000","end":"0xffffb3c1c0191000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0191000","end":"0xffffb3c1c0193000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0194000","end":"0xffffb3c1c0199000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0199000","end":"0xffffb3c1c019b000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c019c000","end":"0xffffb3c1c01a1000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c01a1000","end":"0xffffb3c1c01a3000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c01a4000","end":"0xffffb3c1c01a9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c01a9000","end":"0xffffb3c1c01ab000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c01ac000","end":"0xffffb3c1c01b1000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c01b1000","end":"0xffffb3c1c01b3000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c01b4000","end":"0xffffb3c1c01b9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c01b9000","end":"0xffffb3c1c01bb000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c01bc000","end":"0xffffb3c1c01c1000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c01c1000","end":"0xffffb3c1c01c3000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c01c4000","end":"0xffffb3c1c01c9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c01c9000","end":"0xffffb3c1c01cb000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c01cc000","end":"0xffffb3c1c01d1000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c01d1000","end":"0xffffb3c1c01d3000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c01d4000","end":"0xffffb3c1c01d9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c01d9000","end":"0xffffb3c1c01db000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c01dc000","end":"0xffffb3c1c01e1000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c01e1000","end":"0xffffb3c1c01e3000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c01e4000","end":"0xffffb3c1c01e9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c01e9000","end":"0xffffb3c1c01eb000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c01ec000","end":"0xffffb3c1c01f1000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c01f1000","end":"0xffffb3c1c01f3000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c01f4000","end":"0xffffb3c1c01f9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c01f9000","end":"0xffffb3c1c01fb000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c01fc000","end":"0xffffb3c1c0201000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0201000","end":"0xffffb3c1c0203000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0204000","end":"0xffffb3c1c0209000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0209000","end":"0xffffb3c1c020b000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c020c000","end":"0xffffb3c1c0211000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"phys":"0x00000000febfe000"},{"start":"0xffffb3c1c0211000","end":"0xffffb3c1c0213000","size":8192,"caller":"msix_capability_init+0xe0/0x470","options":["ioremap"],"pages":4,"N0":4},{"start":"0xffffb3c1c0214000","end":"0xffffb3c1c0219000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0219000","end":"0xffffb3c1c021b000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c021c000","end":"0xffffb3c1c0221000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0221000","end":"0xffffb3c1c0223000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0224000","end":"0xffffb3c1c0229000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0229000","end":"0xffffb3c1c022b000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c022c000","end":"0xffffb3c1c0231000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0231000","end":"0xffffb3c1c0233000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0234000","end":"0xffffb3c1c0239000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0239000","end":"0xffffb3c1c023b000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c023c000","end":"0xffffb3c1c0241000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0241000","end":"0xffffb3c1c0243000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0244000","end":"0xffffb3c1c0249000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0249000","end":"0xffffb3c1c024b000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c024c000","end":"0xffffb3c1c0251000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0251000","end":"0xffffb3c1c0253000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0254000","end":"0xffffb3c1c0259000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0259000","end":"0xffffb3c1c025b000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c025c000","end":"0xffffb3c1c0261000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0261000","end":"0xffffb3c1c0263000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0264000","end":"0xffffb3c1c0269000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0269000","end":"0xffffb3c1c026b000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c026c000","end":"0xffffb3c1c0271000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0271000","end":"0xffffb3c1c0273000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0274000","end":"0xffffb3c1c0279000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0279000","end":"0xffffb3c1c027b000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c027c000","end":"0xffffb3c1c0281000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0281000","end":"0xffffb3c1c0283000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0284000","end":"0xffffb3c1c0289000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0289000","end":"0xffffb3c1c028b000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c028c000","end":"0xffffb3c1c0291000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0291000","end":"0xffffb3c1c0293000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0294000","end":"0xffffb3c1c0299000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0299000","end":"0xffffb3c1c029b000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c029c000","end":"0xffffb3c1c02a1000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c02a1000","end":"0xffffb3c1c02a3000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c02a4000","end":"0xffffb3c1c02a9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c02a9000","end":"0xffffb3c1c02ab000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c02ac000","end":"0xffffb3c1c02b1000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c02b1000","end":"0xffffb3c1c02b3000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c02b4000","end":"0xffffb3c1c02b9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c02b9000","end":"0xffffb3c1c02bb000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c02bc000","end":"0xffffb3c1c02c1000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c02c1000","end":"0xffffb3c1c02c3000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c02c4000","end":"0xffffb3c1c02c9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c02c9000","end":"0xffffb3c1c02cb000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c02cc000","end":"0xffffb3c1c02d1000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c02d1000","end":"0xffffb3c1c02d3000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c02d4000","end":"0xffffb3c1c02d9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c02d9000","end":"0xffffb3c1c02db000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c02dc000","end":"0xffffb3c1c02e1000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c02e1000","end":"0xffffb3c1c02e3000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c02e4000","end":"0xffffb3c1c02e9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c02e9000","end":"0xffffb3c1c02eb000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c02ec000","end":"0xffffb3c1c02f1000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c02f1000","end":"0xffffb3c1c02f3000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c02f4000","end":"0xffffb3c1c02f9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c02f9000","end":"0xffffb3c1c02fb000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c02fc000","end":"0xffffb3c1c0301000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0301000","end":"0xffffb3c1c0303000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0304000","end":"0xffffb3c1c0309000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0309000","end":"0xffffb3c1c030b000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c030c000","end":"0xffffb3c1c0311000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0311000","end":"0xffffb3c1c0313000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0314000","end":"0xffffb3c1c0319000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0319000","end":"0xffffb3c1c031b000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c031c000","end":"0xffffb3c1c0321000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0321000","end":"0xffffb3c1c0323000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0324000","end":"0xffffb3c1c0329000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0329000","end":"0xffffb3c1c032b000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c032c000","end":"0xffffb3c1c0331000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0331000","end":"0xffffb3c1c0333000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0334000","end":"0xffffb3c1c0339000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0339000","end":"0xffffb3c1c033b000","size":8192,"caller":"qp_alloc_queue.constprop.0+0x44/0x110","options":["[vmw_vmci]","vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c033c000","end":"0xffffb3c1c0341000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0341000","end":"0xffffb3c1c0343000","size":8192,"caller":"qp_alloc_queue.constprop.0+0x44/0x110","options":["[vmw_vmci]","vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0344000","end":"0xffffb3c1c0349000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0349000","end":"0xffffb3c1c034b000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c034c000","end":"0xffffb3c1c0351000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0351000","end":"0xffffb3c1c0353000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0354000","end":"0xffffb3c1c0359000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0359000","end":"0xffffb3c1c035b000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c035c000","end":"0xffffb3c1c0361000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0361000","end":"0xffffb3c1c0363000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0364000","end":"0xffffb3c1c0369000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0369000","end":"0xffffb3c1c036b000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c036c000","end":"0xffffb3c1c0371000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0371000","end":"0xffffb3c1c0373000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0374000","end":"0xffffb3c1c0379000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0379000","end":"0xffffb3c1c037b000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c037c000","end":"0xffffb3c1c0381000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0381000","end":"0xffffb3c1c0383000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0384000","end":"0xffffb3c1c0389000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0389000","end":"0xffffb3c1c038b000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c038c000","end":"0xffffb3c1c0391000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0391000","end":"0xffffb3c1c0393000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0394000","end":"0xffffb3c1c0399000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0399000","end":"0xffffb3c1c039b000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c039c000","end":"0xffffb3c1c03a1000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c03a1000","end":"0xffffb3c1c03a3000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c03a4000","end":"0xffffb3c1c03a9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c03a9000","end":"0xffffb3c1c03ab000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c03ac000","end":"0xffffb3c1c03b1000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c03b1000","end":"0xffffb3c1c03b3000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c03b4000","end":"0xffffb3c1c03b9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c03b9000","end":"0xffffb3c1c03bb000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c03bc000","end":"0xffffb3c1c03c1000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c03c1000","end":"0xffffb3c1c03c3000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c03c4000","end":"0xffffb3c1c03c9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c03c9000","end":"0xffffb3c1c03cb000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c03cc000","end":"0xffffb3c1c03d1000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c03d1000","end":"0xffffb3c1c03d3000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c03d4000","end":"0xffffb3c1c03d9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c03d9000","end":"0xffffb3c1c03db000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c03dc000","end":"0xffffb3c1c03e1000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c03e1000","end":"0xffffb3c1c03e3000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c03e4000","end":"0xffffb3c1c03e9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c03e9000","end":"0xffffb3c1c03eb000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c03ec000","end":"0xffffb3c1c03f1000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c03f1000","end":"0xffffb3c1c03f3000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c03f4000","end":"0xffffb3c1c03f9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c03f9000","end":"0xffffb3c1c03fb000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c03fc000","end":"0xffffb3c1c0401000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0401000","end":"0xffffb3c1c0403000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0404000","end":"0xffffb3c1c0409000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0409000","end":"0xffffb3c1c040b000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c040c000","end":"0xffffb3c1c0411000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0411000","end":"0xffffb3c1c0413000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0414000","end":"0xffffb3c1c0419000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0419000","end":"0xffffb3c1c041b000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c041c000","end":"0xffffb3c1c0421000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0421000","end":"0xffffb3c1c0423000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0424000","end":"0xffffb3c1c0429000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0429000","end":"0xffffb3c1c042b000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c042c000","end":"0xffffb3c1c0431000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0431000","end":"0xffffb3c1c0433000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0434000","end":"0xffffb3c1c0439000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0439000","end":"0xffffb3c1c043b000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c043c000","end":"0xffffb3c1c0441000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0441000","end":"0xffffb3c1c0443000","size":8192,"caller":"e1000_setup_rx_resources+0x31/0x1d0","options":["[e1000]","vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0444000","end":"0xffffb3c1c0449000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0449000","end":"0xffffb3c1c044b000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c044c000","end":"0xffffb3c1c0451000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0451000","end":"0xffffb3c1c0453000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0454000","end":"0xffffb3c1c0459000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0459000","end":"0xffffb3c1c045b000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c045c000","end":"0xffffb3c1c0461000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0461000","end":"0xffffb3c1c0463000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0464000","end":"0xffffb3c1c0469000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0469000","end":"0xffffb3c1c046b000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c046c000","end":"0xffffb3c1c0471000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"phys":"0x00000000fe807000"},{"start":"0xffffb3c1c0471000","end":"0xffffb3c1c0473000","size":8192,"caller":"acpi_os_map_iomem+0x1ac/0x1c0","options":["ioremap"],"pages":4,"N0":4},{"start":"0xffffb3c1c0474000","end":"0xffffb3c1c0479000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0479000","end":"0xffffb3c1c047b000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c047c000","end":"0xffffb3c1c0481000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0481000","end":"0xffffb3c1c0483000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0484000","end":"0xffffb3c1c0489000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0489000","end":"0xffffb3c1c048b000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c048c000","end":"0xffffb3c1c0491000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0491000","end":"0xffffb3c1c0493000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0494000","end":"0xffffb3c1c0499000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0499000","end":"0xffffb3c1c049b000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c049c000","end":"0xffffb3c1c04a1000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c04a1000","end":"0xffffb3c1c04a3000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c04a4000","end":"0xffffb3c1c04a9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c04a9000","end":"0xffffb3c1c04ab000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c04ac000","end":"0xffffb3c1c04b1000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c04b1000","end":"0xffffb3c1c04b3000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c04b4000","end":"0xffffb3c1c04b9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c04b9000","end":"0xffffb3c1c04bb000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":3,"N0":3},{"start":"0xffffb3c1c04bb000","end":"0xffffb3c1c04bf000","size":16384,"caller":"n_tty_open+0x19/0xa0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c04c1000","end":"0xffffb3c1c04c3000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c04c4000","end":"0xffffb3c1c04c9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"]},{"start":"0xffffb3c1c04c9000","end":"0xffffb3c1c04ce000","size":20480,"caller":"map_irq_stack+0x93/0xe0","options":["vmap"],"pages":1,"N0":1},{"start":"0xffffb3c1c04ce000","end":"0xffffb3c1c04d0000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c04d0000","end":"0xffffb3c1c04d5000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c04d5000","end":"0xffffb3c1c04d7000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c04d8000","end":"0xffffb3c1c04dd000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c04dd000","end":"0xffffb3c1c04df000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c04e0000","end":"0xffffb3c1c04e5000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c04e5000","end":"0xffffb3c1c04e7000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c04e8000","end":"0xffffb3c1c04ed000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c04ed000","end":"0xffffb3c1c04ef000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c04f0000","end":"0xffffb3c1c04f5000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c04f5000","end":"0xffffb3c1c04f7000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c04f8000","end":"0xffffb3c1c04fd000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c04fd000","end":"0xffffb3c1c04ff000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0505000","end":"0xffffb3c1c0507000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0508000","end":"0xffffb3c1c050d000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c050d000","end":"0xffffb3c1c050f000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0510000","end":"0xffffb3c1c0515000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0515000","end":"0xffffb3c1c0517000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0518000","end":"0xffffb3c1c051d000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c051d000","end":"0xffffb3c1c051f000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0520000","end":"0xffffb3c1c0525000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0525000","end":"0xffffb3c1c0527000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0528000","end":"0xffffb3c1c052d000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c052d000","end":"0xffffb3c1c052f000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0530000","end":"0xffffb3c1c0535000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0535000","end":"0xffffb3c1c0537000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0538000","end":"0xffffb3c1c053d000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c053d000","end":"0xffffb3c1c053f000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0540000","end":"0xffffb3c1c0545000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0545000","end":"0xffffb3c1c054a000","size":20480,"caller":"agp_backend_initialize+0x149/0x260","options":["vmalloc"],"phys":"0x00000000fe000000"},{"start":"0xffffb3c1c054a000","end":"0xffffb3c1c054d000","size":12288,"caller":"pmc_core_probe+0x81/0x200","options":["ioremap"],"pages":1,"N0":1},{"start":"0xffffb3c1c054d000","end":"0xffffb3c1c054f000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0550000","end":"0xffffb3c1c0555000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0555000","end":"0xffffb3c1c0557000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c055b000","end":"0xffffb3c1c055d000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c055d000","end":"0xffffb3c1c055f000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0560000","end":"0xffffb3c1c0565000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0565000","end":"0xffffb3c1c0567000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0568000","end":"0xffffb3c1c056d000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c056d000","end":"0xffffb3c1c056f000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0570000","end":"0xffffb3c1c0575000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0575000","end":"0xffffb3c1c0577000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0578000","end":"0xffffb3c1c057d000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c057d000","end":"0xffffb3c1c057f000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0580000","end":"0xffffb3c1c0585000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":2,"N0":2},{"start":"0xffffb3c1c0585000","end":"0xffffb3c1c0588000","size":12288,"caller":"pcpu_mem_zalloc+0x30/0x50","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0588000","end":"0xffffb3c1c058d000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c058d000","end":"0xffffb3c1c058f000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0590000","end":"0xffffb3c1c0595000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0595000","end":"0xffffb3c1c0597000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0598000","end":"0xffffb3c1c059d000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c059d000","end":"0xffffb3c1c059f000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c05a0000","end":"0xffffb3c1c05a5000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":2,"N0":2},{"start":"0xffffb3c1c05a5000","end":"0xffffb3c1c05a8000","size":12288,"caller":"pcpu_mem_zalloc+0x30/0x50","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c05a8000","end":"0xffffb3c1c05ad000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c05ad000","end":"0xffffb3c1c05af000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c05b0000","end":"0xffffb3c1c05b5000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c05b5000","end":"0xffffb3c1c05b7000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c05b8000","end":"0xffffb3c1c05bd000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c05bd000","end":"0xffffb3c1c05bf000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c05c0000","end":"0xffffb3c1c05c5000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c05c5000","end":"0xffffb3c1c05c7000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c05c8000","end":"0xffffb3c1c05cd000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c05cd000","end":"0xffffb3c1c05cf000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c05d0000","end":"0xffffb3c1c05d5000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c05d5000","end":"0xffffb3c1c05d7000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c05d8000","end":"0xffffb3c1c05dd000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c05dd000","end":"0xffffb3c1c05df000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c05e0000","end":"0xffffb3c1c05e5000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c05e5000","end":"0xffffb3c1c05e7000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c05e8000","end":"0xffffb3c1c05ed000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c05ed000","end":"0xffffb3c1c05ef000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c05f0000","end":"0xffffb3c1c05f5000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c05f5000","end":"0xffffb3c1c05f7000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c05f8000","end":"0xffffb3c1c05fd000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c05fd000","end":"0xffffb3c1c05ff000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0600000","end":"0xffffb3c1c0605000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0605000","end":"0xffffb3c1c0607000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0608000","end":"0xffffb3c1c060d000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c060d000","end":"0xffffb3c1c060f000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0610000","end":"0xffffb3c1c0615000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0615000","end":"0xffffb3c1c0617000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0618000","end":"0xffffb3c1c061d000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c061d000","end":"0xffffb3c1c061f000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0620000","end":"0xffffb3c1c0625000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0625000","end":"0xffffb3c1c0627000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0628000","end":"0xffffb3c1c062d000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c062d000","end":"0xffffb3c1c062f000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0630000","end":"0xffffb3c1c0635000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0635000","end":"0xffffb3c1c0637000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0638000","end":"0xffffb3c1c063d000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c063d000","end":"0xffffb3c1c063f000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0640000","end":"0xffffb3c1c0645000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0645000","end":"0xffffb3c1c0647000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0648000","end":"0xffffb3c1c064d000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c064d000","end":"0xffffb3c1c064f000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0650000","end":"0xffffb3c1c0655000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0655000","end":"0xffffb3c1c0657000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0658000","end":"0xffffb3c1c065d000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c065d000","end":"0xffffb3c1c065f000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0660000","end":"0xffffb3c1c0665000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0665000","end":"0xffffb3c1c0667000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0668000","end":"0xffffb3c1c066d000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c066d000","end":"0xffffb3c1c066f000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0670000","end":"0xffffb3c1c0675000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0675000","end":"0xffffb3c1c0677000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0678000","end":"0xffffb3c1c067d000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c067d000","end":"0xffffb3c1c067f000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0680000","end":"0xffffb3c1c0685000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0685000","end":"0xffffb3c1c0687000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0688000","end":"0xffffb3c1c068d000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c068d000","end":"0xffffb3c1c068f000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0690000","end":"0xffffb3c1c0695000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0695000","end":"0xffffb3c1c0697000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0697000","end":"0xffffb3c1c0699000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0699000","end":"0xffffb3c1c069b000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c069b000","end":"0xffffb3c1c069d000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c069d000","end":"0xffffb3c1c069f000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c06a0000","end":"0xffffb3c1c06a5000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c06a5000","end":"0xffffb3c1c06a7000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c06a8000","end":"0xffffb3c1c06ad000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c06ad000","end":"0xffffb3c1c06af000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c06b0000","end":"0xffffb3c1c06b5000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c06b5000","end":"0xffffb3c1c06b7000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c06b8000","end":"0xffffb3c1c06bd000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c06bd000","end":"0xffffb3c1c06bf000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c06c0000","end":"0xffffb3c1c06c5000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c06c5000","end":"0xffffb3c1c06c7000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c06c7000","end":"0xffffb3c1c06c9000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c06c9000","end":"0xffffb3c1c06cb000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c06cb000","end":"0xffffb3c1c06cd000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c06cd000","end":"0xffffb3c1c06cf000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c06d0000","end":"0xffffb3c1c06d5000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":8,"N0":8},{"start":"0xffffb3c1c06d5000","end":"0xffffb3c1c06de000","size":36864,"caller":"drm_ht_create+0x4d/0x70","options":["[drm]","vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c06de000","end":"0xffffb3c1c06e0000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c06e0000","end":"0xffffb3c1c06e2000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c06e2000","end":"0xffffb3c1c06e4000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c06e5000","end":"0xffffb3c1c06e7000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c06e8000","end":"0xffffb3c1c06ed000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c06ed000","end":"0xffffb3c1c06ef000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c06f0000","end":"0xffffb3c1c06f5000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c06f5000","end":"0xffffb3c1c06f7000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c06f8000","end":"0xffffb3c1c06fd000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c06fd000","end":"0xffffb3c1c06ff000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c06ff000","end":"0xffffb3c1c0701000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0701000","end":"0xffffb3c1c0703000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0704000","end":"0xffffb3c1c0709000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0709000","end":"0xffffb3c1c070b000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c070c000","end":"0xffffb3c1c0711000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0711000","end":"0xffffb3c1c0713000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0714000","end":"0xffffb3c1c0719000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0719000","end":"0xffffb3c1c071b000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c071b000","end":"0xffffb3c1c071d000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c071d000","end":"0xffffb3c1c071f000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"phys":"0x00000000feba0000"},{"start":"0xffffb3c1c0720000","end":"0xffffb3c1c0741000","size":135168,"caller":"mpt_mapresources+0x152/0x1e0","options":["[mptbase]","ioremap"],"pages":1,"N0":1},{"start":"0xffffb3c1c0741000","end":"0xffffb3c1c0743000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0744000","end":"0xffffb3c1c0749000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0749000","end":"0xffffb3c1c074b000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c074c000","end":"0xffffb3c1c0751000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0751000","end":"0xffffb3c1c0753000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0754000","end":"0xffffb3c1c0759000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0759000","end":"0xffffb3c1c075b000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c075c000","end":"0xffffb3c1c0761000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0761000","end":"0xffffb3c1c0763000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0764000","end":"0xffffb3c1c0769000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0769000","end":"0xffffb3c1c076b000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c076c000","end":"0xffffb3c1c0771000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0771000","end":"0xffffb3c1c0773000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0779000","end":"0xffffb3c1c077b000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c077b000","end":"0xffffb3c1c077d000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c077d000","end":"0xffffb3c1c077f000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c077f000","end":"0xffffb3c1c0781000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":3,"N0":3},{"start":"0xffffb3c1c0781000","end":"0xffffb3c1c0785000","size":16384,"caller":"e1000_setup_tx_resources+0x34/0x1c0","options":["[e1000]","vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0785000","end":"0xffffb3c1c0787000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c0787000","end":"0xffffb3c1c0789000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":17,"N0":17},{"start":"0xffffb3c1c0789000","end":"0xffffb3c1c079b000","size":73728,"caller":"vmci_guest_probe_device+0xdd/0x220","options":["[vmw_vmci]","vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c079c000","end":"0xffffb3c1c07a1000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c07a1000","end":"0xffffb3c1c07a3000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c07a4000","end":"0xffffb3c1c07a9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c07a9000","end":"0xffffb3c1c07ab000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c07ac000","end":"0xffffb3c1c07b1000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c07b1000","end":"0xffffb3c1c07b3000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c07b3000","end":"0xffffb3c1c07b5000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c07b8000","end":"0xffffb3c1c07bd000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c07c0000","end":"0xffffb3c1c07c5000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffb3c1c07d1000","end":"0xffffb3c1c07d3000","size":8192,"caller":"bpf_prog_alloc_no_stats+0x33/0xe0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c07d4000","end":"0xffffb3c1c07d9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c07dc000","end":"0xffffb3c1c07e1000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c07e4000","end":"0xffffb3c1c07e9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":3,"N0":3},{"start":"0xffffb3c1c07e9000","end":"0xffffb3c1c07ed000","size":16384,"caller":"pcpu_mem_zalloc+0x30/0x50","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c07f8000","end":"0xffffb3c1c07fd000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0804000","end":"0xffffb3c1c0809000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c080c000","end":"0xffffb3c1c0811000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0818000","end":"0xffffb3c1c081d000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"phys":"0x00000000fd5c0000"},{"start":"0xffffb3c1c0820000","end":"0xffffb3c1c0841000","size":135168,"caller":"pci_ioremap_bar+0x48/0x50","options":["ioremap"],"pages":4,"N0":4},{"start":"0xffffb3c1c0844000","end":"0xffffb3c1c0849000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c084c000","end":"0xffffb3c1c0851000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0858000","end":"0xffffb3c1c085d000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0860000","end":"0xffffb3c1c0865000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0868000","end":"0xffffb3c1c086d000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0870000","end":"0xffffb3c1c0875000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0878000","end":"0xffffb3c1c087d000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"phys":"0x00000000fe000000"},{"start":"0xffffb3c1c0880000","end":"0xffffb3c1c08c1000","size":266240,"caller":"memremap+0x81/0x110","options":["ioremap"],"pages":4,"N0":4},{"start":"0xffffb3c1c08c4000","end":"0xffffb3c1c08c9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c08cc000","end":"0xffffb3c1c08d1000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c08d4000","end":"0xffffb3c1c08d9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c08dc000","end":"0xffffb3c1c08e1000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c08e4000","end":"0xffffb3c1c08e9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c08ec000","end":"0xffffb3c1c08f1000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c08f4000","end":"0xffffb3c1c08f9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c08fc000","end":"0xffffb3c1c0901000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0904000","end":"0xffffb3c1c0909000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c090c000","end":"0xffffb3c1c0911000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0914000","end":"0xffffb3c1c0919000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c091c000","end":"0xffffb3c1c0921000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0924000","end":"0xffffb3c1c0929000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c092c000","end":"0xffffb3c1c0931000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0934000","end":"0xffffb3c1c0939000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":256,"N0":256},{"start":"0xffffb3c1c093a000","end":"0xffffb3c1c0a3b000","size":1052672,"caller":"vmw_fifo_init+0x38/0x2d0","options":["[vmwgfx]","vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0a3c000","end":"0xffffb3c1c0a41000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0a44000","end":"0xffffb3c1c0a49000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0a4c000","end":"0xffffb3c1c0a51000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0a54000","end":"0xffffb3c1c0a59000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0a5c000","end":"0xffffb3c1c0a61000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0a64000","end":"0xffffb3c1c0a69000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0a6c000","end":"0xffffb3c1c0a71000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0a74000","end":"0xffffb3c1c0a79000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0a7c000","end":"0xffffb3c1c0a81000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0a84000","end":"0xffffb3c1c0a89000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0a8c000","end":"0xffffb3c1c0a91000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0a94000","end":"0xffffb3c1c0a99000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0a9c000","end":"0xffffb3c1c0aa1000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0aa4000","end":"0xffffb3c1c0aa9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0aac000","end":"0xffffb3c1c0ab1000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0ab4000","end":"0xffffb3c1c0ab9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0abc000","end":"0xffffb3c1c0ac1000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0ac4000","end":"0xffffb3c1c0ac9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0acc000","end":"0xffffb3c1c0ad1000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0ad4000","end":"0xffffb3c1c0ad9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0adc000","end":"0xffffb3c1c0ae1000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0ae4000","end":"0xffffb3c1c0ae9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0aec000","end":"0xffffb3c1c0af1000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0af4000","end":"0xffffb3c1c0af9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0afc000","end":"0xffffb3c1c0b01000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0b04000","end":"0xffffb3c1c0b09000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0b0c000","end":"0xffffb3c1c0b11000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0b14000","end":"0xffffb3c1c0b19000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"]},{"start":"0xffffb3c1c0b19000","end":"0xffffb3c1c0cef000","size":1925120,"caller":"ttm_bo_kmap_ttm+0xce/0x150","options":["[ttm]"],"pages":4,"N0":4},{"start":"0xffffb3c1c0cf0000","end":"0xffffb3c1c0cf5000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0cf8000","end":"0xffffb3c1c0cfd000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0d00000","end":"0xffffb3c1c0d05000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0d08000","end":"0xffffb3c1c0d0d000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0d10000","end":"0xffffb3c1c0d15000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0d18000","end":"0xffffb3c1c0d1d000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0d20000","end":"0xffffb3c1c0d25000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0d28000","end":"0xffffb3c1c0d2d000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0d30000","end":"0xffffb3c1c0d35000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0d38000","end":"0xffffb3c1c0d3d000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0d48000","end":"0xffffb3c1c0d4d000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0d50000","end":"0xffffb3c1c0d55000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0da8000","end":"0xffffb3c1c0dad000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0db8000","end":"0xffffb3c1c0dbd000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0dc8000","end":"0xffffb3c1c0dcd000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0e14000","end":"0xffffb3c1c0e19000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0e1c000","end":"0xffffb3c1c0e21000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0e24000","end":"0xffffb3c1c0e29000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0e2c000","end":"0xffffb3c1c0e31000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0e34000","end":"0xffffb3c1c0e39000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0e3c000","end":"0xffffb3c1c0e41000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0e44000","end":"0xffffb3c1c0e49000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":3,"N0":3},{"start":"0xffffb3c1c0e49000","end":"0xffffb3c1c0e4d000","size":16384,"caller":"n_tty_open+0x19/0xa0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0e54000","end":"0xffffb3c1c0e59000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0e5c000","end":"0xffffb3c1c0e61000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0e64000","end":"0xffffb3c1c0e69000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0e6c000","end":"0xffffb3c1c0e71000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0e74000","end":"0xffffb3c1c0e79000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":244,"N0":244},{"start":"0xffffb3c1c0e79000","end":"0xffffb3c1c0f6e000","size":1003520,"caller":"__do_sys_swapon+0x18f/0xab0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0f70000","end":"0xffffb3c1c0f75000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0f80000","end":"0xffffb3c1c0f85000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0f88000","end":"0xffffb3c1c0f8d000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0f90000","end":"0xffffb3c1c0f95000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0f98000","end":"0xffffb3c1c0f9d000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0fa0000","end":"0xffffb3c1c0fa5000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0fa8000","end":"0xffffb3c1c0fad000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0fb0000","end":"0xffffb3c1c0fb5000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0fc0000","end":"0xffffb3c1c0fc5000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0fc8000","end":"0xffffb3c1c0fcd000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0fd0000","end":"0xffffb3c1c0fd5000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0fd8000","end":"0xffffb3c1c0fdd000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0fe0000","end":"0xffffb3c1c0fe5000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0fe8000","end":"0xffffb3c1c0fed000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0ff0000","end":"0xffffb3c1c0ff5000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c0ff8000","end":"0xffffb3c1c0ffd000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c1000000","end":"0xffffb3c1c1005000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c1014000","end":"0xffffb3c1c1019000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c101c000","end":"0xffffb3c1c1021000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c102c000","end":"0xffffb3c1c1031000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c1034000","end":"0xffffb3c1c1039000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c1044000","end":"0xffffb3c1c1049000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c104c000","end":"0xffffb3c1c1051000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c1054000","end":"0xffffb3c1c1059000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c1060000","end":"0xffffb3c1c1065000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":32,"N0":32},{"start":"0xffffb3c1c1065000","end":"0xffffb3c1c1086000","size":135168,"caller":"xz_dec_lzma2_create+0x5e/0x80","options":["vmalloc"],"pages":32,"N0":32},{"start":"0xffffb3c1c1086000","end":"0xffffb3c1c10a7000","size":135168,"caller":"xz_dec_lzma2_create+0x5e/0x80","options":["vmalloc"],"pages":32,"N0":32},{"start":"0xffffb3c1c10a7000","end":"0xffffb3c1c10c8000","size":135168,"caller":"xz_dec_lzma2_create+0x5e/0x80","options":["vmalloc"],"pages":32,"N0":32},{"start":"0xffffb3c1c10c8000","end":"0xffffb3c1c10e9000","size":135168,"caller":"xz_dec_lzma2_create+0x5e/0x80","options":["vmalloc"],"pages":32,"N0":32},{"start":"0xffffb3c1c10e9000","end":"0xffffb3c1c110a000","size":135168,"caller":"xz_dec_lzma2_create+0x5e/0x80","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c1114000","end":"0xffffb3c1c1119000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c1120000","end":"0xffffb3c1c1125000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c1128000","end":"0xffffb3c1c112d000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c1130000","end":"0xffffb3c1c1135000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c1160000","end":"0xffffb3c1c1165000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":32,"N0":32},{"start":"0xffffb3c1c1165000","end":"0xffffb3c1c1186000","size":135168,"caller":"xz_dec_lzma2_create+0x5e/0x80","options":["vmalloc"],"pages":32,"N0":32},{"start":"0xffffb3c1c1186000","end":"0xffffb3c1c11a7000","size":135168,"caller":"xz_dec_lzma2_create+0x5e/0x80","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c11ac000","end":"0xffffb3c1c11b1000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c11b4000","end":"0xffffb3c1c11b9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c11bc000","end":"0xffffb3c1c11c1000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c11c4000","end":"0xffffb3c1c11c9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"phys":"0x00000000000e0000"},{"start":"0xffffb3c1c11d0000","end":"0xffffb3c1c11d9000","size":36864,"caller":"memremap+0x81/0x110","options":["ioremap"],"pages":4,"N0":4},{"start":"0xffffb3c1c11dc000","end":"0xffffb3c1c11e1000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c11e4000","end":"0xffffb3c1c11e9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c11ec000","end":"0xffffb3c1c11f1000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c11f4000","end":"0xffffb3c1c11f9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c11fc000","end":"0xffffb3c1c1201000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c1204000","end":"0xffffb3c1c1209000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c121c000","end":"0xffffb3c1c1221000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c122c000","end":"0xffffb3c1c1231000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c1234000","end":"0xffffb3c1c1239000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":32,"N0":32},{"start":"0xffffb3c1c1239000","end":"0xffffb3c1c125a000","size":135168,"caller":"xz_dec_lzma2_create+0x5e/0x80","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c125c000","end":"0xffffb3c1c1261000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c1264000","end":"0xffffb3c1c1269000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c12c4000","end":"0xffffb3c1c12c9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":3,"N0":3},{"start":"0xffffb3c1c12d9000","end":"0xffffb3c1c12dd000","size":16384,"caller":"pcpu_mem_zalloc+0x30/0x50","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c12e0000","end":"0xffffb3c1c12e5000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c12f0000","end":"0xffffb3c1c12f5000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c12f8000","end":"0xffffb3c1c12fd000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c1300000","end":"0xffffb3c1c1305000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c130c000","end":"0xffffb3c1c1311000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c1318000","end":"0xffffb3c1c131d000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c1330000","end":"0xffffb3c1c1335000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c133c000","end":"0xffffb3c1c1341000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":3,"N0":3},{"start":"0xffffb3c1c137d000","end":"0xffffb3c1c1381000","size":16384,"caller":"n_tty_open+0x19/0xa0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c1404000","end":"0xffffb3c1c1409000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c14f4000","end":"0xffffb3c1c14f9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c151c000","end":"0xffffb3c1c1521000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":2,"N0":2},{"start":"0xffffb3c1c15a9000","end":"0xffffb3c1c15ac000","size":12288,"caller":"pcpu_mem_zalloc+0x30/0x50","options":["vmalloc"],"pages":3,"N0":3},{"start":"0xffffb3c1c15ac000","end":"0xffffb3c1c15b0000","size":16384,"caller":"pcpu_mem_zalloc+0x30/0x50","options":["vmalloc"],"pages":16,"N0":16},{"start":"0xffffb3c1c15b0000","end":"0xffffb3c1c15c1000","size":69632,"caller":"pcpu_mem_zalloc+0x30/0x50","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c15cc000","end":"0xffffb3c1c15d1000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":1017,"N0":1017},{"start":"0xffffb3c1c15d1000","end":"0xffffb3c1c19cb000","size":4169728,"caller":"vmw_fb_init+0x1c3/0x3f0","options":["[vmwgfx]","vmalloc","vpages"],"pages":4,"N0":4},{"start":"0xffffb3c1c19d4000","end":"0xffffb3c1c19d9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c1a0c000","end":"0xffffb3c1c1a11000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c1a24000","end":"0xffffb3c1c1a29000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c1a2c000","end":"0xffffb3c1c1a31000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c1a44000","end":"0xffffb3c1c1a49000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c1ce4000","end":"0xffffb3c1c1ce9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c1fd4000","end":"0xffffb3c1c1fd9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c1ff4000","end":"0xffffb3c1c1ff9000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c2014000","end":"0xffffb3c1c2019000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c2104000","end":"0xffffb3c1c2109000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c21ac000","end":"0xffffb3c1c21b1000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c2e7c000","end":"0xffffb3c1c2e81000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c3164000","end":"0xffffb3c1c3169000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c3d34000","end":"0xffffb3c1c3d39000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffb3c1c467c000","end":"0xffffb3c1c4681000","size":20480,"caller":"dup_task_struct+0x4a/0x1b0","options":["vmalloc"],"phys":"0x00000000f0000000"},{"start":"0xffffb3c1c8000000","end":"0xffffb3c1d0001000","size":134221824,"caller":"pci_mmcfg_arch_map+0x2f/0x60","options":["ioremap"]},{"start":"0xffffd3c1b9e00000","end":"0xffffd3c1bbe00000","size":33554432,"caller":"pcpu_get_vm_areas+0x0/0x10c0","options":["vmalloc"]},{"start":"0xffffd3c1bbe00000","end":"0xffffd3c1bde00000","size":33554432,"caller":"pcpu_get_vm_areas+0x0/0x10c0","options":["vmalloc"]},{"start":"0xffffd3c1bde00000","end":"0xffffd3c1bfe00000","size":33554432,"caller":"pcpu_get_vm_areas+0x0/0x10c0","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0218000","end":"0xffffffffc021a000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffffffc021a000","end":"0xffffffffc021f000","size":20480,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc021f000","end":"0xffffffffc0221000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":7,"N0":7},{"start":"0xffffffffc0222000","end":"0xffffffffc022a000","size":32768,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":138,"N0":138},{"start":"0xffffffffc022e000","end":"0xffffffffc02b9000","size":569344,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffffffc02b9000","end":"0xffffffffc02be000","size":20480,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffffffc02be000","end":"0xffffffffc02c3000","size":20480,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffffffc02c3000","end":"0xffffffffc02c8000","size":20480,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc02c8000","end":"0xffffffffc02ca000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":6,"N0":6},{"start":"0xffffffffc02ca000","end":"0xffffffffc02d1000","size":28672,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc02d1000","end":"0xffffffffc02d3000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffffffc02d5000","end":"0xffffffffc02da000","size":20480,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffffffc02da000","end":"0xffffffffc02df000","size":20480,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":6,"N0":6},{"start":"0xffffffffc02df000","end":"0xffffffffc02e6000","size":28672,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":8,"N0":8},{"start":"0xffffffffc02e7000","end":"0xffffffffc02f0000","size":36864,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffffffc02f0000","end":"0xffffffffc02f5000","size":20480,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":24,"N0":24},{"start":"0xffffffffc02f6000","end":"0xffffffffc030f000","size":102400,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":5,"N0":5},{"start":"0xffffffffc030f000","end":"0xffffffffc0315000","size":24576,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":15,"N0":15},{"start":"0xffffffffc0317000","end":"0xffffffffc0327000","size":65536,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffffffc0327000","end":"0xffffffffc032c000","size":20480,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":9,"N0":9},{"start":"0xffffffffc032e000","end":"0xffffffffc0338000","size":40960,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffffffc0338000","end":"0xffffffffc033d000","size":20480,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":10,"N0":10},{"start":"0xffffffffc033d000","end":"0xffffffffc0348000","size":45056,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":5,"N0":5},{"start":"0xffffffffc0348000","end":"0xffffffffc034e000","size":24576,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":13,"N0":13},{"start":"0xffffffffc0350000","end":"0xffffffffc035e000","size":57344,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffffffc035e000","end":"0xffffffffc0363000","size":20480,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":37,"N0":37},{"start":"0xffffffffc0364000","end":"0xffffffffc038a000","size":155648,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":5,"N0":5},{"start":"0xffffffffc038a000","end":"0xffffffffc0390000","size":24576,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0390000","end":"0xffffffffc0392000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0392000","end":"0xffffffffc0394000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":11,"N0":11},{"start":"0xffffffffc0395000","end":"0xffffffffc03a1000","size":49152,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc03a1000","end":"0xffffffffc03a3000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc03a3000","end":"0xffffffffc03a5000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":55,"N0":55},{"start":"0xffffffffc03a6000","end":"0xffffffffc03de000","size":229376,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffffffc03de000","end":"0xffffffffc03e3000","size":20480,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":6,"N0":6},{"start":"0xffffffffc03e3000","end":"0xffffffffc03ea000","size":28672,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":12,"N0":12},{"start":"0xffffffffc03ea000","end":"0xffffffffc03f7000","size":53248,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":25,"N0":25},{"start":"0xffffffffc03f9000","end":"0xffffffffc0413000","size":106496,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":79,"N0":79},{"start":"0xffffffffc0413000","end":"0xffffffffc0463000","size":327680,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0463000","end":"0xffffffffc0465000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0465000","end":"0xffffffffc0467000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffffffc0468000","end":"0xffffffffc046d000","size":20480,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":6,"N0":6},{"start":"0xffffffffc046d000","end":"0xffffffffc0474000","size":28672,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":40,"N0":40},{"start":"0xffffffffc0475000","end":"0xffffffffc049e000","size":167936,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":91,"N0":91},{"start":"0xffffffffc049e000","end":"0xffffffffc04fa000","size":376832,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":33,"N0":33},{"start":"0xffffffffc04fa000","end":"0xffffffffc051c000","size":139264,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":14,"N0":14},{"start":"0xffffffffc051c000","end":"0xffffffffc052b000","size":61440,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":28,"N0":28},{"start":"0xffffffffc052b000","end":"0xffffffffc0548000","size":118784,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0548000","end":"0xffffffffc054a000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":5,"N0":5},{"start":"0xffffffffc054c000","end":"0xffffffffc0552000","size":24576,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":5,"N0":5},{"start":"0xffffffffc0552000","end":"0xffffffffc0558000","size":24576,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":6,"N0":6},{"start":"0xffffffffc0558000","end":"0xffffffffc055f000","size":28672,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc055f000","end":"0xffffffffc0561000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":5,"N0":5},{"start":"0xffffffffc0562000","end":"0xffffffffc0568000","size":24576,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":6,"N0":6},{"start":"0xffffffffc0568000","end":"0xffffffffc056f000","size":28672,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":38,"N0":38},{"start":"0xffffffffc056f000","end":"0xffffffffc0596000","size":159744,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0596000","end":"0xffffffffc0598000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0598000","end":"0xffffffffc059a000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc059a000","end":"0xffffffffc059c000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc059c000","end":"0xffffffffc059e000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":15,"N0":15},{"start":"0xffffffffc05a0000","end":"0xffffffffc05b0000","size":65536,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":323,"N0":323},{"start":"0xffffffffc05b0000","end":"0xffffffffc06f4000","size":1327104,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":11,"N0":11},{"start":"0xffffffffc06f4000","end":"0xffffffffc0700000","size":49152,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":12,"N0":12},{"start":"0xffffffffc0700000","end":"0xffffffffc070d000","size":53248,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc070d000","end":"0xffffffffc070f000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc070f000","end":"0xffffffffc0711000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0711000","end":"0xffffffffc0713000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":8,"N0":8},{"start":"0xffffffffc0714000","end":"0xffffffffc071d000","size":36864,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc071d000","end":"0xffffffffc071f000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc071f000","end":"0xffffffffc0721000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0721000","end":"0xffffffffc0723000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0723000","end":"0xffffffffc0725000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":2,"N0":2},{"start":"0xffffffffc0725000","end":"0xffffffffc0728000","size":12288,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0728000","end":"0xffffffffc072a000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc072a000","end":"0xffffffffc072c000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":5,"N0":5},{"start":"0xffffffffc072c000","end":"0xffffffffc0732000","size":24576,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0732000","end":"0xffffffffc0734000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0736000","end":"0xffffffffc0738000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0738000","end":"0xffffffffc073a000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc073a000","end":"0xffffffffc073c000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc073c000","end":"0xffffffffc073e000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc073e000","end":"0xffffffffc0740000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0740000","end":"0xffffffffc0742000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0742000","end":"0xffffffffc0744000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0744000","end":"0xffffffffc0746000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0746000","end":"0xffffffffc0748000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0748000","end":"0xffffffffc074a000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc074a000","end":"0xffffffffc074c000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc074c000","end":"0xffffffffc074e000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc074e000","end":"0xffffffffc0750000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0750000","end":"0xffffffffc0752000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0752000","end":"0xffffffffc0754000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0754000","end":"0xffffffffc0756000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0756000","end":"0xffffffffc0758000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0758000","end":"0xffffffffc075a000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc075a000","end":"0xffffffffc075c000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc075c000","end":"0xffffffffc075e000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffffffc075e000","end":"0xffffffffc0763000","size":20480,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":19,"N0":19},{"start":"0xffffffffc0763000","end":"0xffffffffc0777000","size":81920,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffffffc0777000","end":"0xffffffffc077c000","size":20480,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc077c000","end":"0xffffffffc077e000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":23,"N0":23},{"start":"0xffffffffc0780000","end":"0xffffffffc0798000","size":98304,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":5,"N0":5},{"start":"0xffffffffc0798000","end":"0xffffffffc079e000","size":24576,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc079e000","end":"0xffffffffc07a0000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc07a0000","end":"0xffffffffc07a2000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":14,"N0":14},{"start":"0xffffffffc07a3000","end":"0xffffffffc07b2000","size":61440,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffffffc07b2000","end":"0xffffffffc07b7000","size":20480,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc07b7000","end":"0xffffffffc07b9000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":8,"N0":8},{"start":"0xffffffffc07ba000","end":"0xffffffffc07c3000","size":36864,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":7,"N0":7},{"start":"0xffffffffc07c3000","end":"0xffffffffc07cb000","size":32768,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc07cb000","end":"0xffffffffc07cd000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffffffc07cf000","end":"0xffffffffc07d4000","size":20480,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":10,"N0":10},{"start":"0xffffffffc07d6000","end":"0xffffffffc07e1000","size":45056,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":60,"N0":60},{"start":"0xffffffffc07e1000","end":"0xffffffffc081e000","size":249856,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffffffc081e000","end":"0xffffffffc0823000","size":20480,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":7,"N0":7},{"start":"0xffffffffc0823000","end":"0xffffffffc082b000","size":32768,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":6,"N0":6},{"start":"0xffffffffc082b000","end":"0xffffffffc0832000","size":28672,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":29,"N0":29},{"start":"0xffffffffc0833000","end":"0xffffffffc0851000","size":122880,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":9,"N0":9},{"start":"0xffffffffc0851000","end":"0xffffffffc085b000","size":40960,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc085b000","end":"0xffffffffc085d000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":14,"N0":14},{"start":"0xffffffffc085d000","end":"0xffffffffc086c000","size":61440,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":147,"N0":147},{"start":"0xffffffffc086c000","end":"0xffffffffc0900000","size":606208,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0900000","end":"0xffffffffc0902000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0902000","end":"0xffffffffc0904000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":6,"N0":6},{"start":"0xffffffffc0904000","end":"0xffffffffc090b000","size":28672,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":5,"N0":5},{"start":"0xffffffffc090b000","end":"0xffffffffc0911000","size":24576,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":14,"N0":14},{"start":"0xffffffffc0912000","end":"0xffffffffc0921000","size":61440,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":5,"N0":5},{"start":"0xffffffffc0921000","end":"0xffffffffc0927000","size":24576,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":5,"N0":5},{"start":"0xffffffffc0929000","end":"0xffffffffc092f000","size":24576,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":7,"N0":7},{"start":"0xffffffffc092f000","end":"0xffffffffc0937000","size":32768,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffffffc0937000","end":"0xffffffffc093c000","size":20480,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffffffc093c000","end":"0xffffffffc0941000","size":20480,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":5,"N0":5},{"start":"0xffffffffc0941000","end":"0xffffffffc0947000","size":24576,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":5,"N0":5},{"start":"0xffffffffc0947000","end":"0xffffffffc094d000","size":24576,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":24,"N0":24},{"start":"0xffffffffc094e000","end":"0xffffffffc0967000","size":102400,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffffffc0967000","end":"0xffffffffc096c000","size":20480,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc096c000","end":"0xffffffffc096e000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":40,"N0":40},{"start":"0xffffffffc0970000","end":"0xffffffffc0999000","size":167936,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":8,"N0":8},{"start":"0xffffffffc0999000","end":"0xffffffffc09a2000","size":36864,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffffffc09a2000","end":"0xffffffffc09a7000","size":20480,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":6,"N0":6},{"start":"0xffffffffc09a7000","end":"0xffffffffc09ae000","size":28672,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":7,"N0":7},{"start":"0xffffffffc09ae000","end":"0xffffffffc09b6000","size":32768,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":9,"N0":9},{"start":"0xffffffffc09b6000","end":"0xffffffffc09c0000","size":40960,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc09c0000","end":"0xffffffffc09c2000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc09c2000","end":"0xffffffffc09c4000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc09c4000","end":"0xffffffffc09c6000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc09c6000","end":"0xffffffffc09c8000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc09c8000","end":"0xffffffffc09ca000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc09ca000","end":"0xffffffffc09cc000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc09cc000","end":"0xffffffffc09ce000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc09ce000","end":"0xffffffffc09d0000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc09d0000","end":"0xffffffffc09d2000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc09d2000","end":"0xffffffffc09d4000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc09d4000","end":"0xffffffffc09d6000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc09d6000","end":"0xffffffffc09d8000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc09d8000","end":"0xffffffffc09da000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc09da000","end":"0xffffffffc09dc000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc09dc000","end":"0xffffffffc09de000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc09de000","end":"0xffffffffc09e0000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc09e0000","end":"0xffffffffc09e2000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc09e2000","end":"0xffffffffc09e4000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc09e4000","end":"0xffffffffc09e6000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc09e6000","end":"0xffffffffc09e8000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc09e8000","end":"0xffffffffc09ea000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc09ea000","end":"0xffffffffc09ec000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc09ec000","end":"0xffffffffc09ee000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc09ee000","end":"0xffffffffc09f0000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":2,"N0":2},{"start":"0xffffffffc09f0000","end":"0xffffffffc09f3000","size":12288,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc09f3000","end":"0xffffffffc09f5000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc09f5000","end":"0xffffffffc09f7000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":11,"N0":11},{"start":"0xffffffffc09f7000","end":"0xffffffffc0a03000","size":49152,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":9,"N0":9},{"start":"0xffffffffc0a03000","end":"0xffffffffc0a0d000","size":40960,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a0d000","end":"0xffffffffc0a0f000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a0f000","end":"0xffffffffc0a11000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a11000","end":"0xffffffffc0a13000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":4,"N0":4},{"start":"0xffffffffc0a14000","end":"0xffffffffc0a19000","size":20480,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":8,"N0":8},{"start":"0xffffffffc0a1b000","end":"0xffffffffc0a24000","size":36864,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a24000","end":"0xffffffffc0a26000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a26000","end":"0xffffffffc0a28000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a28000","end":"0xffffffffc0a2a000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a2a000","end":"0xffffffffc0a2c000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a2c000","end":"0xffffffffc0a2e000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a2e000","end":"0xffffffffc0a30000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a30000","end":"0xffffffffc0a32000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a32000","end":"0xffffffffc0a34000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a34000","end":"0xffffffffc0a36000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a36000","end":"0xffffffffc0a38000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a38000","end":"0xffffffffc0a3a000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a3a000","end":"0xffffffffc0a3c000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a3c000","end":"0xffffffffc0a3e000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a3e000","end":"0xffffffffc0a40000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a40000","end":"0xffffffffc0a42000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a42000","end":"0xffffffffc0a44000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a44000","end":"0xffffffffc0a46000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a46000","end":"0xffffffffc0a48000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a48000","end":"0xffffffffc0a4a000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a4a000","end":"0xffffffffc0a4c000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a4c000","end":"0xffffffffc0a4e000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a4e000","end":"0xffffffffc0a50000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a50000","end":"0xffffffffc0a52000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a52000","end":"0xffffffffc0a54000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":2,"N0":2},{"start":"0xffffffffc0a54000","end":"0xffffffffc0a57000","size":12288,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a57000","end":"0xffffffffc0a59000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a59000","end":"0xffffffffc0a5b000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a5b000","end":"0xffffffffc0a5d000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a5d000","end":"0xffffffffc0a5f000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a5f000","end":"0xffffffffc0a61000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a61000","end":"0xffffffffc0a63000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a63000","end":"0xffffffffc0a65000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a65000","end":"0xffffffffc0a67000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a67000","end":"0xffffffffc0a69000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a69000","end":"0xffffffffc0a6b000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a6b000","end":"0xffffffffc0a6d000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a6d000","end":"0xffffffffc0a6f000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a6f000","end":"0xffffffffc0a71000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a71000","end":"0xffffffffc0a73000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a73000","end":"0xffffffffc0a75000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a75000","end":"0xffffffffc0a77000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a77000","end":"0xffffffffc0a79000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a79000","end":"0xffffffffc0a7b000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a7b000","end":"0xffffffffc0a7d000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a7d000","end":"0xffffffffc0a7f000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a7f000","end":"0xffffffffc0a81000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a81000","end":"0xffffffffc0a83000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a83000","end":"0xffffffffc0a85000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a85000","end":"0xffffffffc0a87000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a87000","end":"0xffffffffc0a89000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a89000","end":"0xffffffffc0a8b000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a8b000","end":"0xffffffffc0a8d000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a8d000","end":"0xffffffffc0a8f000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a8f000","end":"0xffffffffc0a91000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a91000","end":"0xffffffffc0a93000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a93000","end":"0xffffffffc0a95000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a95000","end":"0xffffffffc0a97000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a97000","end":"0xffffffffc0a99000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a99000","end":"0xffffffffc0a9b000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a9b000","end":"0xffffffffc0a9d000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a9d000","end":"0xffffffffc0a9f000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0a9f000","end":"0xffffffffc0aa1000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":2,"N0":2},{"start":"0xffffffffc0aa1000","end":"0xffffffffc0aa4000","size":12288,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0aa4000","end":"0xffffffffc0aa6000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0aa6000","end":"0xffffffffc0aa8000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0aa8000","end":"0xffffffffc0aaa000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0aaa000","end":"0xffffffffc0aac000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0aac000","end":"0xffffffffc0aae000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0aae000","end":"0xffffffffc0ab0000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0ab0000","end":"0xffffffffc0ab2000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0ab2000","end":"0xffffffffc0ab4000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":6,"N0":6},{"start":"0xffffffffc0ab4000","end":"0xffffffffc0abb000","size":28672,"caller":"move_module+0x23/0x180","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0ac0000","end":"0xffffffffc0ac2000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0ac2000","end":"0xffffffffc0ac4000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0ac4000","end":"0xffffffffc0ac6000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0ac6000","end":"0xffffffffc0ac8000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0ac8000","end":"0xffffffffc0aca000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0aca000","end":"0xffffffffc0acc000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0acc000","end":"0xffffffffc0ace000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0ace000","end":"0xffffffffc0ad0000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0ad0000","end":"0xffffffffc0ad2000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0ad2000","end":"0xffffffffc0ad4000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0ad4000","end":"0xffffffffc0ad6000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0ad6000","end":"0xffffffffc0ad8000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0ad8000","end":"0xffffffffc0ada000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0ada000","end":"0xffffffffc0adc000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0adc000","end":"0xffffffffc0ade000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0ade000","end":"0xffffffffc0ae0000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0ae0000","end":"0xffffffffc0ae2000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0ae2000","end":"0xffffffffc0ae4000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0ae4000","end":"0xffffffffc0ae6000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0ae6000","end":"0xffffffffc0ae8000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0ae8000","end":"0xffffffffc0aea000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0aea000","end":"0xffffffffc0aec000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0aec000","end":"0xffffffffc0aee000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0aee000","end":"0xffffffffc0af0000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0af0000","end":"0xffffffffc0af2000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0af2000","end":"0xffffffffc0af4000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0af4000","end":"0xffffffffc0af6000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0af6000","end":"0xffffffffc0af8000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0af8000","end":"0xffffffffc0afa000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0afa000","end":"0xffffffffc0afc000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":2,"N0":2},{"start":"0xffffffffc0afc000","end":"0xffffffffc0aff000","size":12288,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0aff000","end":"0xffffffffc0b01000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0b01000","end":"0xffffffffc0b03000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0b03000","end":"0xffffffffc0b05000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0b05000","end":"0xffffffffc0b07000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0b07000","end":"0xffffffffc0b09000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0b09000","end":"0xffffffffc0b0b000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0b21000","end":"0xffffffffc0b23000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0b23000","end":"0xffffffffc0b25000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0b25000","end":"0xffffffffc0b27000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0b27000","end":"0xffffffffc0b29000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0b29000","end":"0xffffffffc0b2b000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0b2b000","end":"0xffffffffc0b2d000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0b2d000","end":"0xffffffffc0b2f000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0b2f000","end":"0xffffffffc0b31000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0b31000","end":"0xffffffffc0b33000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0b33000","end":"0xffffffffc0b35000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0b35000","end":"0xffffffffc0b37000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0b37000","end":"0xffffffffc0b39000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0b39000","end":"0xffffffffc0b3b000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0b3b000","end":"0xffffffffc0b3d000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0b3e000","end":"0xffffffffc0b40000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0b40000","end":"0xffffffffc0b42000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0b42000","end":"0xffffffffc0b44000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0b44000","end":"0xffffffffc0b46000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0b46000","end":"0xffffffffc0b48000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0b48000","end":"0xffffffffc0b4a000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0b4a000","end":"0xffffffffc0b4c000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0b4c000","end":"0xffffffffc0b4e000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0b4e000","end":"0xffffffffc0b50000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0b50000","end":"0xffffffffc0b52000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0b52000","end":"0xffffffffc0b54000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0b54000","end":"0xffffffffc0b56000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0b56000","end":"0xffffffffc0b58000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0b58000","end":"0xffffffffc0b5a000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0b5a000","end":"0xffffffffc0b5c000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0b5c000","end":"0xffffffffc0b5e000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0b5e000","end":"0xffffffffc0b60000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0b60000","end":"0xffffffffc0b62000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0b62000","end":"0xffffffffc0b64000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0b64000","end":"0xffffffffc0b66000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":2,"N0":2},{"start":"0xffffffffc0b66000","end":"0xffffffffc0b69000","size":12288,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0b69000","end":"0xffffffffc0b6b000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0b6b000","end":"0xffffffffc0b6d000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"],"pages":1,"N0":1},{"start":"0xffffffffc0b6d000","end":"0xffffffffc0b6f000","size":8192,"caller":"bpf_jit_alloc_exec+0xe/0x10","options":["vmalloc"]},{"start":"0xffffb3c1c21a4000","end":"0xffffb3c1c21a9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c219c000","end":"0xffffb3c1c21a1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c2194000","end":"0xffffb3c1c2199000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c218c000","end":"0xffffb3c1c2191000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c2184000","end":"0xffffb3c1c2189000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c217c000","end":"0xffffb3c1c2181000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c2174000","end":"0xffffb3c1c2179000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c216c000","end":"0xffffb3c1c2171000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c2164000","end":"0xffffb3c1c2169000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c215c000","end":"0xffffb3c1c2161000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c2154000","end":"0xffffb3c1c2159000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c214c000","end":"0xffffb3c1c2151000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c2144000","end":"0xffffb3c1c2149000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c213c000","end":"0xffffb3c1c2141000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c2134000","end":"0xffffb3c1c2139000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c212c000","end":"0xffffb3c1c2131000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c2124000","end":"0xffffb3c1c2129000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c211c000","end":"0xffffb3c1c2121000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c2114000","end":"0xffffb3c1c2119000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c210c000","end":"0xffffb3c1c2111000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c20f4000","end":"0xffffb3c1c20f9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c20fc000","end":"0xffffb3c1c2101000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c208c000","end":"0xffffb3c1c2091000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c20ec000","end":"0xffffb3c1c20f1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c20e4000","end":"0xffffb3c1c20e9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c20dc000","end":"0xffffb3c1c20e1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c20d4000","end":"0xffffb3c1c20d9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c20cc000","end":"0xffffb3c1c20d1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c20c4000","end":"0xffffb3c1c20c9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c20bc000","end":"0xffffb3c1c20c1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c20b4000","end":"0xffffb3c1c20b9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c20ac000","end":"0xffffb3c1c20b1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c20a4000","end":"0xffffb3c1c20a9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c209c000","end":"0xffffb3c1c20a1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c2094000","end":"0xffffb3c1c2099000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c2084000","end":"0xffffb3c1c2089000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c207c000","end":"0xffffb3c1c2081000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c2074000","end":"0xffffb3c1c2079000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c206c000","end":"0xffffb3c1c2071000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c152c000","end":"0xffffb3c1c1531000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c2064000","end":"0xffffb3c1c2069000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c205c000","end":"0xffffb3c1c2061000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c2054000","end":"0xffffb3c1c2059000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c204c000","end":"0xffffb3c1c2051000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c2044000","end":"0xffffb3c1c2049000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c203c000","end":"0xffffb3c1c2041000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c2034000","end":"0xffffb3c1c2039000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c202c000","end":"0xffffb3c1c2031000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c2024000","end":"0xffffb3c1c2029000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c201c000","end":"0xffffb3c1c2021000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c3e4c000","end":"0xffffb3c1c3e51000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c200c000","end":"0xffffb3c1c2011000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c2004000","end":"0xffffb3c1c2009000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1ffc000","end":"0xffffb3c1c2001000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1fe4000","end":"0xffffb3c1c1fe9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1fec000","end":"0xffffb3c1c1ff1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1e9c000","end":"0xffffb3c1c1ea1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1fdc000","end":"0xffffb3c1c1fe1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1f84000","end":"0xffffb3c1c1f89000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1fcc000","end":"0xffffb3c1c1fd1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1fc4000","end":"0xffffb3c1c1fc9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1fbc000","end":"0xffffb3c1c1fc1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1fb4000","end":"0xffffb3c1c1fb9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1fac000","end":"0xffffb3c1c1fb1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1fa4000","end":"0xffffb3c1c1fa9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1f9c000","end":"0xffffb3c1c1fa1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1f94000","end":"0xffffb3c1c1f99000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1f8c000","end":"0xffffb3c1c1f91000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1e6c000","end":"0xffffb3c1c1e71000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1f7c000","end":"0xffffb3c1c1f81000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1f74000","end":"0xffffb3c1c1f79000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1f6c000","end":"0xffffb3c1c1f71000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1f64000","end":"0xffffb3c1c1f69000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1f5c000","end":"0xffffb3c1c1f61000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1f54000","end":"0xffffb3c1c1f59000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1f4c000","end":"0xffffb3c1c1f51000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1f44000","end":"0xffffb3c1c1f49000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1f3c000","end":"0xffffb3c1c1f41000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1f34000","end":"0xffffb3c1c1f39000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1f2c000","end":"0xffffb3c1c1f31000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1f24000","end":"0xffffb3c1c1f29000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1f1c000","end":"0xffffb3c1c1f21000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1f14000","end":"0xffffb3c1c1f19000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1f0c000","end":"0xffffb3c1c1f11000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1f04000","end":"0xffffb3c1c1f09000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1efc000","end":"0xffffb3c1c1f01000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1ef4000","end":"0xffffb3c1c1ef9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1eec000","end":"0xffffb3c1c1ef1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1ee4000","end":"0xffffb3c1c1ee9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1edc000","end":"0xffffb3c1c1ee1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1ed4000","end":"0xffffb3c1c1ed9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1ecc000","end":"0xffffb3c1c1ed1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1ec4000","end":"0xffffb3c1c1ec9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1ebc000","end":"0xffffb3c1c1ec1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1eb4000","end":"0xffffb3c1c1eb9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1eac000","end":"0xffffb3c1c1eb1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1ea4000","end":"0xffffb3c1c1ea9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1e3c000","end":"0xffffb3c1c1e41000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1e94000","end":"0xffffb3c1c1e99000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1e8c000","end":"0xffffb3c1c1e91000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1e84000","end":"0xffffb3c1c1e89000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1e7c000","end":"0xffffb3c1c1e81000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1e74000","end":"0xffffb3c1c1e79000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1d44000","end":"0xffffb3c1c1d49000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1e64000","end":"0xffffb3c1c1e69000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1e5c000","end":"0xffffb3c1c1e61000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1e54000","end":"0xffffb3c1c1e59000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1e4c000","end":"0xffffb3c1c1e51000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1e44000","end":"0xffffb3c1c1e49000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1d64000","end":"0xffffb3c1c1d69000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1e34000","end":"0xffffb3c1c1e39000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1e2c000","end":"0xffffb3c1c1e31000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1e24000","end":"0xffffb3c1c1e29000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1e1c000","end":"0xffffb3c1c1e21000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1e14000","end":"0xffffb3c1c1e19000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1e0c000","end":"0xffffb3c1c1e11000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1e04000","end":"0xffffb3c1c1e09000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1dfc000","end":"0xffffb3c1c1e01000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1df4000","end":"0xffffb3c1c1df9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1dec000","end":"0xffffb3c1c1df1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1de4000","end":"0xffffb3c1c1de9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1ddc000","end":"0xffffb3c1c1de1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1dd4000","end":"0xffffb3c1c1dd9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1dcc000","end":"0xffffb3c1c1dd1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1dc4000","end":"0xffffb3c1c1dc9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1dbc000","end":"0xffffb3c1c1dc1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1db4000","end":"0xffffb3c1c1db9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1dac000","end":"0xffffb3c1c1db1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1da4000","end":"0xffffb3c1c1da9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1d9c000","end":"0xffffb3c1c1da1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1d94000","end":"0xffffb3c1c1d99000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1d8c000","end":"0xffffb3c1c1d91000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1d84000","end":"0xffffb3c1c1d89000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1d7c000","end":"0xffffb3c1c1d81000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1d74000","end":"0xffffb3c1c1d79000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1d6c000","end":"0xffffb3c1c1d71000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1cd4000","end":"0xffffb3c1c1cd9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1d5c000","end":"0xffffb3c1c1d61000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1d54000","end":"0xffffb3c1c1d59000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1d4c000","end":"0xffffb3c1c1d51000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c4464000","end":"0xffffb3c1c4469000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1d3c000","end":"0xffffb3c1c1d41000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1d34000","end":"0xffffb3c1c1d39000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1d2c000","end":"0xffffb3c1c1d31000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1d24000","end":"0xffffb3c1c1d29000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1d1c000","end":"0xffffb3c1c1d21000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1d14000","end":"0xffffb3c1c1d19000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1d0c000","end":"0xffffb3c1c1d11000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1d04000","end":"0xffffb3c1c1d09000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1cfc000","end":"0xffffb3c1c1d01000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1cf4000","end":"0xffffb3c1c1cf9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1cec000","end":"0xffffb3c1c1cf1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1c94000","end":"0xffffb3c1c1c99000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1cdc000","end":"0xffffb3c1c1ce1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1cb4000","end":"0xffffb3c1c1cb9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1ccc000","end":"0xffffb3c1c1cd1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1cc4000","end":"0xffffb3c1c1cc9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1cbc000","end":"0xffffb3c1c1cc1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1ca4000","end":"0xffffb3c1c1ca9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1cac000","end":"0xffffb3c1c1cb1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1be4000","end":"0xffffb3c1c1be9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1c9c000","end":"0xffffb3c1c1ca1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1c8c000","end":"0xffffb3c1c1c91000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1c5c000","end":"0xffffb3c1c1c61000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1c84000","end":"0xffffb3c1c1c89000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1c7c000","end":"0xffffb3c1c1c81000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1c74000","end":"0xffffb3c1c1c79000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1c6c000","end":"0xffffb3c1c1c71000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1c64000","end":"0xffffb3c1c1c69000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1bf4000","end":"0xffffb3c1c1bf9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1c54000","end":"0xffffb3c1c1c59000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1c4c000","end":"0xffffb3c1c1c51000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1c44000","end":"0xffffb3c1c1c49000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1c3c000","end":"0xffffb3c1c1c41000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1c34000","end":"0xffffb3c1c1c39000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1c2c000","end":"0xffffb3c1c1c31000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1c24000","end":"0xffffb3c1c1c29000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1c1c000","end":"0xffffb3c1c1c21000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1c14000","end":"0xffffb3c1c1c19000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1c0c000","end":"0xffffb3c1c1c11000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1c04000","end":"0xffffb3c1c1c09000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1bfc000","end":"0xffffb3c1c1c01000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1b04000","end":"0xffffb3c1c1b09000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1bec000","end":"0xffffb3c1c1bf1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1b5c000","end":"0xffffb3c1c1b61000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1bdc000","end":"0xffffb3c1c1be1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1bd4000","end":"0xffffb3c1c1bd9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1bcc000","end":"0xffffb3c1c1bd1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1bc4000","end":"0xffffb3c1c1bc9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1bbc000","end":"0xffffb3c1c1bc1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1bb4000","end":"0xffffb3c1c1bb9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1bac000","end":"0xffffb3c1c1bb1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1ba4000","end":"0xffffb3c1c1ba9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1b9c000","end":"0xffffb3c1c1ba1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1b94000","end":"0xffffb3c1c1b99000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1b8c000","end":"0xffffb3c1c1b91000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1b84000","end":"0xffffb3c1c1b89000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1b7c000","end":"0xffffb3c1c1b81000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1b74000","end":"0xffffb3c1c1b79000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1b6c000","end":"0xffffb3c1c1b71000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1b64000","end":"0xffffb3c1c1b69000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1a34000","end":"0xffffb3c1c1a39000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1b54000","end":"0xffffb3c1c1b59000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1b4c000","end":"0xffffb3c1c1b51000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1b44000","end":"0xffffb3c1c1b49000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1b3c000","end":"0xffffb3c1c1b41000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1b34000","end":"0xffffb3c1c1b39000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1b2c000","end":"0xffffb3c1c1b31000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c0d98000","end":"0xffffb3c1c0d9d000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c0d40000","end":"0xffffb3c1c0d45000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1b24000","end":"0xffffb3c1c1b29000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1b1c000","end":"0xffffb3c1c1b21000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1b14000","end":"0xffffb3c1c1b19000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1b0c000","end":"0xffffb3c1c1b11000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1afc000","end":"0xffffb3c1c1b01000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1af4000","end":"0xffffb3c1c1af9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1aec000","end":"0xffffb3c1c1af1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1ae4000","end":"0xffffb3c1c1ae9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1adc000","end":"0xffffb3c1c1ae1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1ad4000","end":"0xffffb3c1c1ad9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1ac4000","end":"0xffffb3c1c1ac9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1acc000","end":"0xffffb3c1c1ad1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1ab4000","end":"0xffffb3c1c1ab9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1abc000","end":"0xffffb3c1c1ac1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1aac000","end":"0xffffb3c1c1ab1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1aa4000","end":"0xffffb3c1c1aa9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1a84000","end":"0xffffb3c1c1a89000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1a9c000","end":"0xffffb3c1c1aa1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1a94000","end":"0xffffb3c1c1a99000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1a8c000","end":"0xffffb3c1c1a91000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1a74000","end":"0xffffb3c1c1a79000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1a7c000","end":"0xffffb3c1c1a81000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1a64000","end":"0xffffb3c1c1a69000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1a6c000","end":"0xffffb3c1c1a71000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1a4c000","end":"0xffffb3c1c1a51000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1a5c000","end":"0xffffb3c1c1a61000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1a54000","end":"0xffffb3c1c1a59000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1a3c000","end":"0xffffb3c1c1a41000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c19fc000","end":"0xffffb3c1c1a01000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1584000","end":"0xffffb3c1c1589000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1a1c000","end":"0xffffb3c1c1a21000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c19dc000","end":"0xffffb3c1c19e1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1a14000","end":"0xffffb3c1c1a19000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1a04000","end":"0xffffb3c1c1a09000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c19f4000","end":"0xffffb3c1c19f9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c19ec000","end":"0xffffb3c1c19f1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c0d78000","end":"0xffffb3c1c0d7d000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c19e4000","end":"0xffffb3c1c19e9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c19cc000","end":"0xffffb3c1c19d1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c15c4000","end":"0xffffb3c1c15c9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c159c000","end":"0xffffb3c1c15a1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1594000","end":"0xffffb3c1c1599000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c158c000","end":"0xffffb3c1c1591000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c14dc000","end":"0xffffb3c1c14e1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c157c000","end":"0xffffb3c1c1581000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1574000","end":"0xffffb3c1c1579000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c156c000","end":"0xffffb3c1c1571000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1564000","end":"0xffffb3c1c1569000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c155c000","end":"0xffffb3c1c1561000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1554000","end":"0xffffb3c1c1559000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c154c000","end":"0xffffb3c1c1551000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1544000","end":"0xffffb3c1c1549000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c153c000","end":"0xffffb3c1c1541000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1534000","end":"0xffffb3c1c1539000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1524000","end":"0xffffb3c1c1529000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1514000","end":"0xffffb3c1c1519000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c150c000","end":"0xffffb3c1c1511000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1504000","end":"0xffffb3c1c1509000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c14fc000","end":"0xffffb3c1c1501000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c14ec000","end":"0xffffb3c1c14f1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c14e4000","end":"0xffffb3c1c14e9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c07f0000","end":"0xffffb3c1c07f5000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c14d4000","end":"0xffffb3c1c14d9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c4594000","end":"0xffffb3c1c4599000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c14cc000","end":"0xffffb3c1c14d1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c14c4000","end":"0xffffb3c1c14c9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c14bc000","end":"0xffffb3c1c14c1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c14b4000","end":"0xffffb3c1c14b9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c14ac000","end":"0xffffb3c1c14b1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c14a4000","end":"0xffffb3c1c14a9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c149c000","end":"0xffffb3c1c14a1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1494000","end":"0xffffb3c1c1499000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c148c000","end":"0xffffb3c1c1491000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c13cc000","end":"0xffffb3c1c13d1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1444000","end":"0xffffb3c1c1449000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1484000","end":"0xffffb3c1c1489000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c147c000","end":"0xffffb3c1c1481000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1474000","end":"0xffffb3c1c1479000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c146c000","end":"0xffffb3c1c1471000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1464000","end":"0xffffb3c1c1469000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c145c000","end":"0xffffb3c1c1461000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1454000","end":"0xffffb3c1c1459000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c144c000","end":"0xffffb3c1c1451000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1434000","end":"0xffffb3c1c1439000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c143c000","end":"0xffffb3c1c1441000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1414000","end":"0xffffb3c1c1419000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c142c000","end":"0xffffb3c1c1431000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1424000","end":"0xffffb3c1c1429000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c141c000","end":"0xffffb3c1c1421000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c13bc000","end":"0xffffb3c1c13c1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c140c000","end":"0xffffb3c1c1411000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c13fc000","end":"0xffffb3c1c1401000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c13f4000","end":"0xffffb3c1c13f9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c13ec000","end":"0xffffb3c1c13f1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c13e4000","end":"0xffffb3c1c13e9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c13dc000","end":"0xffffb3c1c13e1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c13d4000","end":"0xffffb3c1c13d9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1138000","end":"0xffffb3c1c113d000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c13c4000","end":"0xffffb3c1c13c9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c139c000","end":"0xffffb3c1c13a1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c13b4000","end":"0xffffb3c1c13b9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c13ac000","end":"0xffffb3c1c13b1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c13a4000","end":"0xffffb3c1c13a9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1320000","end":"0xffffb3c1c1325000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1394000","end":"0xffffb3c1c1399000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c138c000","end":"0xffffb3c1c1391000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1384000","end":"0xffffb3c1c1389000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1374000","end":"0xffffb3c1c1379000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c136c000","end":"0xffffb3c1c1371000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1364000","end":"0xffffb3c1c1369000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c135c000","end":"0xffffb3c1c1361000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1354000","end":"0xffffb3c1c1359000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c134c000","end":"0xffffb3c1c1351000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1344000","end":"0xffffb3c1c1349000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1328000","end":"0xffffb3c1c132d000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1224000","end":"0xffffb3c1c1229000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c12e8000","end":"0xffffb3c1c12ed000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c12cc000","end":"0xffffb3c1c12d1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c12bc000","end":"0xffffb3c1c12c1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c12b4000","end":"0xffffb3c1c12b9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c12ac000","end":"0xffffb3c1c12b1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c12a4000","end":"0xffffb3c1c12a9000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c129c000","end":"0xffffb3c1c12a1000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1294000","end":"0xffffb3c1c1299000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c128c000","end":"0xffffb3c1c1291000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1284000","end":"0xffffb3c1c1289000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c127c000","end":"0xffffb3c1c1281000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1274000","end":"0xffffb3c1c1279000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c126c000","end":"0xffffb3c1c1271000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c0d60000","end":"0xffffb3c1c0d65000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1214000","end":"0xffffb3c1c1219000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c120c000","end":"0xffffb3c1c1211000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1158000","end":"0xffffb3c1c115d000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1150000","end":"0xffffb3c1c1155000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1148000","end":"0xffffb3c1c114d000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1140000","end":"0xffffb3c1c1145000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c07c8000","end":"0xffffb3c1c07cd000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c110c000","end":"0xffffb3c1c1111000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c103c000","end":"0xffffb3c1c1041000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1024000","end":"0xffffb3c1c1029000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c1008000","end":"0xffffb3c1c100d000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c0fb8000","end":"0xffffb3c1c0fbd000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c0f78000","end":"0xffffb3c1c0f7d000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c0e08000","end":"0xffffb3c1c0e0d000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c0e00000","end":"0xffffb3c1c0e05000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c0df8000","end":"0xffffb3c1c0dfd000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c0df0000","end":"0xffffb3c1c0df5000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c0de8000","end":"0xffffb3c1c0ded000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c0de0000","end":"0xffffb3c1c0de5000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c0dd8000","end":"0xffffb3c1c0ddd000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c0dd0000","end":"0xffffb3c1c0dd5000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c0dc0000","end":"0xffffb3c1c0dc5000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c0db0000","end":"0xffffb3c1c0db5000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c0da0000","end":"0xffffb3c1c0da5000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c0d90000","end":"0xffffb3c1c0d95000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c0d68000","end":"0xffffb3c1c0d6d000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c0d58000","end":"0xffffb3c1c0d5d000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c0d88000","end":"0xffffb3c1c0d8d000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c0d80000","end":"0xffffb3c1c0d85000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c0d70000","end":"0xffffb3c1c0d75000","size":20480,"caller":"unpurged vm_area","options":[]},{"start":"0xffffb3c1c0063000","end":"0xffffb3c1c0065000","size":8192,"caller":"unpurged vm_area","options":[]}] diff --git a/tests/fixtures/linux-proc/vmstat.json b/tests/fixtures/linux-proc/vmstat.json new file mode 100644 index 00000000..ebf92ce9 --- /dev/null +++ b/tests/fixtures/linux-proc/vmstat.json @@ -0,0 +1 @@ +{"nr_free_pages":615337,"nr_zone_inactive_anon":39,"nr_zone_active_anon":34838,"nr_zone_inactive_file":104036,"nr_zone_active_file":130601,"nr_zone_unevictable":4897,"nr_zone_write_pending":45,"nr_mlock":4897,"nr_page_table_pages":548,"nr_kernel_stack":5984,"nr_bounce":0,"nr_zspages":0,"nr_free_cma":0,"numa_hit":1910597,"numa_miss":0,"numa_foreign":0,"numa_interleave":66040,"numa_local":1910597,"numa_other":0,"nr_inactive_anon":39,"nr_active_anon":34838,"nr_inactive_file":104036,"nr_active_file":130601,"nr_unevictable":4897,"nr_slab_reclaimable":49011,"nr_slab_unreclaimable":26172,"nr_isolated_anon":0,"nr_isolated_file":0,"workingset_nodes":0,"workingset_refault":0,"workingset_activate":0,"workingset_restore":0,"workingset_nodereclaim":0,"nr_anon_pages":40298,"nr_mapped":25087,"nr_file_pages":234112,"nr_dirty":45,"nr_writeback":0,"nr_writeback_temp":0,"nr_shmem":395,"nr_shmem_hugepages":0,"nr_shmem_pmdmapped":0,"nr_file_hugepages":0,"nr_file_pmdmapped":0,"nr_anon_transparent_hugepages":0,"nr_vmscan_write":0,"nr_vmscan_immediate_reclaim":0,"nr_dirtied":167091,"nr_written":143439,"nr_kernel_misc_reclaimable":0,"nr_foll_pin_acquired":0,"nr_foll_pin_released":0,"nr_dirty_threshold":163943,"nr_dirty_background_threshold":81871,"pgpgin":625466,"pgpgout":706252,"pswpin":0,"pswpout":0,"pgalloc_dma":144,"pgalloc_dma32":597148,"pgalloc_normal":1423654,"pgalloc_movable":0,"allocstall_dma":0,"allocstall_dma32":0,"allocstall_normal":0,"allocstall_movable":0,"pgskip_dma":0,"pgskip_dma32":0,"pgskip_normal":0,"pgskip_movable":0,"pgfree":2637206,"pgactivate":136726,"pgdeactivate":0,"pglazyfree":3610,"pgfault":1195623,"pgmajfault":1713,"pglazyfreed":0,"pgrefill":0,"pgsteal_kswapd":0,"pgsteal_direct":0,"pgscan_kswapd":0,"pgscan_direct":0,"pgscan_direct_throttle":0,"pgscan_anon":0,"pgscan_file":0,"pgsteal_anon":0,"pgsteal_file":0,"zone_reclaim_failed":0,"pginodesteal":0,"slabs_scanned":0,"kswapd_inodesteal":0,"kswapd_low_wmark_hit_quickly":0,"kswapd_high_wmark_hit_quickly":0,"pageoutrun":0,"pgrotated":0,"drop_pagecache":0,"drop_slab":0,"oom_kill":0,"numa_pte_updates":0,"numa_huge_pte_updates":0,"numa_hint_faults":0,"numa_hint_faults_local":0,"numa_pages_migrated":0,"pgmigrate_success":0,"pgmigrate_fail":0,"compact_migrate_scanned":0,"compact_free_scanned":0,"compact_isolated":0,"compact_stall":0,"compact_fail":0,"compact_success":0,"compact_daemon_wake":0,"compact_daemon_migrate_scanned":0,"compact_daemon_free_scanned":0,"htlb_buddy_alloc_success":0,"htlb_buddy_alloc_fail":0,"unevictable_pgs_culled":66408,"unevictable_pgs_scanned":0,"unevictable_pgs_rescued":206,"unevictable_pgs_mlocked":5103,"unevictable_pgs_munlocked":206,"unevictable_pgs_cleared":0,"unevictable_pgs_stranded":0,"thp_fault_alloc":0,"thp_fault_fallback":0,"thp_fault_fallback_charge":0,"thp_collapse_alloc":1,"thp_collapse_alloc_failed":0,"thp_file_alloc":0,"thp_file_fallback":0,"thp_file_fallback_charge":0,"thp_file_mapped":0,"thp_split_page":1,"thp_split_page_failed":0,"thp_deferred_split_page":1,"thp_split_pmd":1,"thp_split_pud":0,"thp_zero_page_alloc":0,"thp_zero_page_alloc_failed":0,"thp_swpout":0,"thp_swpout_fallback":0,"balloon_inflate":0,"balloon_deflate":0,"balloon_migrate":0,"swap_ra":0,"swap_ra_hit":0,"nr_unstable":0} diff --git a/tests/fixtures/linux-proc/zoneinfo.json b/tests/fixtures/linux-proc/zoneinfo.json new file mode 100644 index 00000000..122b6b00 --- /dev/null +++ b/tests/fixtures/linux-proc/zoneinfo.json @@ -0,0 +1 @@ +[{"node":0,"DMA":{"pages":{"free":3832,"min":68,"low":85,"high":102,"spanned":4095,"present":3997,"managed":3976,"protection":[0,2871,3795,3795,3795],"nr_free_pages":3832,"nr_zone_inactive_anon":0,"nr_zone_active_anon":0,"nr_zone_inactive_file":0,"nr_zone_active_file":0,"nr_zone_unevictable":0,"nr_zone_write_pending":0,"nr_mlock":0,"nr_page_table_pages":0,"nr_kernel_stack":0,"nr_bounce":0,"nr_zspages":0,"nr_free_cma":0,"numa_hit":3,"numa_miss":0,"numa_foreign":0,"numa_interleave":1,"numa_local":3,"numa_other":0},"pagesets":[{"cpu":0,"count":0,"high":0,"batch":1,"vm stats threshold":4},{"cpu":1,"count":0,"high":0,"batch":1,"vm stats threshold":4,"node_unreclaimable":0,"start_pfn":1}]},"nr_inactive_anon":39,"nr_active_anon":34839,"nr_inactive_file":104172,"nr_active_file":130748,"nr_unevictable":4897,"nr_slab_reclaimable":49017,"nr_slab_unreclaimable":26177,"nr_isolated_anon":0,"nr_isolated_file":0,"workingset_nodes":0,"workingset_refault":0,"workingset_activate":0,"workingset_restore":0,"workingset_nodereclaim":0,"nr_anon_pages":40299,"nr_mapped":25140,"nr_file_pages":234396,"nr_dirty":0,"nr_writeback":0,"nr_writeback_temp":0,"nr_shmem":395,"nr_shmem_hugepages":0,"nr_shmem_pmdmapped":0,"nr_file_hugepages":0,"nr_file_pmdmapped":0,"nr_anon_transparent_hugepages":0,"nr_vmscan_write":0,"nr_vmscan_immediate_reclaim":0,"nr_dirtied":168223,"nr_written":144616,"nr_kernel_misc_reclaimable":0,"nr_foll_pin_acquired":0,"nr_foll_pin_released":0,"DMA32":{"pages":{"free":606010,"min":12729,"low":15911,"high":19093,"spanned":1044480,"present":782288,"managed":758708,"protection":[0,0,924,924,924],"nr_free_pages":606010,"nr_zone_inactive_anon":4,"nr_zone_active_anon":17380,"nr_zone_inactive_file":41785,"nr_zone_active_file":64545,"nr_zone_unevictable":5,"nr_zone_write_pending":0,"nr_mlock":5,"nr_page_table_pages":101,"nr_kernel_stack":224,"nr_bounce":0,"nr_zspages":0,"nr_free_cma":0,"numa_hit":576595,"numa_miss":0,"numa_foreign":0,"numa_interleave":2,"numa_local":576595,"numa_other":0},"pagesets":[{"cpu":0,"count":253,"high":378,"batch":63,"vm stats threshold":24},{"cpu":1,"count":243,"high":378,"batch":63,"vm stats threshold":24,"node_unreclaimable":0,"start_pfn":4096}]},"Normal":{"pages":{"free":5113,"min":4097,"low":5121,"high":6145,"spanned":262144,"present":262144,"managed":236634,"protection":[0,0,0,0,0],"nr_free_pages":5113,"nr_zone_inactive_anon":35,"nr_zone_active_anon":17459,"nr_zone_inactive_file":62387,"nr_zone_active_file":66203,"nr_zone_unevictable":4892,"nr_zone_write_pending":0,"nr_mlock":4892,"nr_page_table_pages":447,"nr_kernel_stack":5760,"nr_bounce":0,"nr_zspages":0,"nr_free_cma":0,"numa_hit":1338441,"numa_miss":0,"numa_foreign":0,"numa_interleave":66037,"numa_local":1338441,"numa_other":0},"pagesets":[{"cpu":0,"count":340,"high":378,"batch":63,"vm stats threshold":16},{"cpu":1,"count":174,"high":378,"batch":63,"vm stats threshold":16,"node_unreclaimable":0,"start_pfn":1048576}]},"Movable":{"pages":{"free":0,"min":0,"low":0,"high":0,"spanned":0,"present":0,"managed":0,"protection":[0,0,0,0,0]}},"Device":{"pages":{"free":0,"min":0,"low":0,"high":0,"spanned":0,"present":0,"managed":0,"protection":[0,0,0,0,0]}}}] diff --git a/tests/fixtures/linux-proc/zoneinfo2.json b/tests/fixtures/linux-proc/zoneinfo2.json new file mode 100644 index 00000000..972bb843 --- /dev/null +++ b/tests/fixtures/linux-proc/zoneinfo2.json @@ -0,0 +1 @@ +[{"node":0,"DMA":{"pages":{"free":3832,"min":68,"low":85,"high":102,"spanned":4095,"present":3997,"managed":3976,"protection":[0,2871,3795,3795,3795],"nr_free_pages":3832,"nr_zone_inactive_anon":0,"nr_zone_active_anon":0,"nr_zone_inactive_file":0,"nr_zone_active_file":0,"nr_zone_unevictable":0,"nr_zone_write_pending":0,"nr_mlock":0,"nr_page_table_pages":0,"nr_kernel_stack":0,"nr_bounce":0,"nr_zspages":0,"nr_free_cma":0,"numa_hit":3,"numa_miss":0,"numa_foreign":0,"numa_interleave":1,"numa_local":3,"numa_other":0},"pagesets":[{"cpu":0,"count":0,"high":0,"batch":1,"vm stats threshold":4},{"cpu":1,"count":0,"high":0,"batch":1,"vm stats threshold":4,"node_unreclaimable":0,"start_pfn":1}]},"nr_inactive_anon":39,"nr_active_anon":34839,"nr_inactive_file":104172,"nr_active_file":130748,"nr_unevictable":4897,"nr_slab_reclaimable":49017,"nr_slab_unreclaimable":26177,"nr_isolated_anon":0,"nr_isolated_file":0,"workingset_nodes":0,"workingset_refault":0,"workingset_activate":0,"workingset_restore":0,"workingset_nodereclaim":0,"nr_anon_pages":40299,"nr_mapped":25140,"nr_file_pages":234396,"nr_dirty":0,"nr_writeback":0,"nr_writeback_temp":0,"nr_shmem":395,"nr_shmem_hugepages":0,"nr_shmem_pmdmapped":0,"nr_file_hugepages":0,"nr_file_pmdmapped":0,"nr_anon_transparent_hugepages":0,"nr_vmscan_write":0,"nr_vmscan_immediate_reclaim":0,"nr_dirtied":168223,"nr_written":144616,"nr_kernel_misc_reclaimable":0,"nr_foll_pin_acquired":0,"nr_foll_pin_released":0,"DMA32":{"pages":{"free":606010,"min":12729,"low":15911,"high":19093,"spanned":1044480,"present":782288,"managed":758708,"protection":[0,0,924,924,924],"nr_free_pages":606010,"nr_zone_inactive_anon":4,"nr_zone_active_anon":17380,"nr_zone_inactive_file":41785,"nr_zone_active_file":64545,"nr_zone_unevictable":5,"nr_zone_write_pending":0,"nr_mlock":5,"nr_page_table_pages":101,"nr_kernel_stack":224,"nr_bounce":0,"nr_zspages":0,"nr_free_cma":0,"numa_hit":576595,"numa_miss":0,"numa_foreign":0,"numa_interleave":2,"numa_local":576595,"numa_other":0},"pagesets":[{"cpu":0,"count":253,"high":378,"batch":63,"vm stats threshold":24},{"cpu":1,"count":243,"high":378,"batch":63,"vm stats threshold":24,"node_unreclaimable":0,"start_pfn":4096}]},"Normal":{"pages":{"free":5113,"min":4097,"low":5121,"high":6145,"spanned":262144,"present":262144,"managed":236634,"protection":[0,0,0,0,0],"nr_free_pages":5113,"nr_zone_inactive_anon":35,"nr_zone_active_anon":17459,"nr_zone_inactive_file":62387,"nr_zone_active_file":66203,"nr_zone_unevictable":4892,"nr_zone_write_pending":0,"nr_mlock":4892,"nr_page_table_pages":447,"nr_kernel_stack":5760,"nr_bounce":0,"nr_zspages":0,"nr_free_cma":0,"numa_hit":1338441,"numa_miss":0,"numa_foreign":0,"numa_interleave":66037,"numa_local":1338441,"numa_other":0},"pagesets":[{"cpu":0,"count":340,"high":378,"batch":63,"vm stats threshold":16},{"cpu":1,"count":174,"high":378,"batch":63,"vm stats threshold":16,"node_unreclaimable":0,"start_pfn":1048576}]},"Movable":{"pages":{"free":0,"min":0,"low":0,"high":0,"spanned":0,"present":0,"managed":0,"protection":[0,0,0,0,0]}},"Device":{"pages":{"free":0,"min":0,"low":0,"high":0,"spanned":0,"present":0,"managed":0,"protection":[0,0,0,0,0]}}},{"node":1,"DMA":{"pages":{"free":3832,"min":68,"low":85,"high":102,"spanned":4095,"present":3997,"managed":3976,"protection":[0,2871,3795,3795,3795],"nr_free_pages":3832,"nr_zone_inactive_anon":0,"nr_zone_active_anon":0,"nr_zone_inactive_file":0,"nr_zone_active_file":0,"nr_zone_unevictable":0,"nr_zone_write_pending":0,"nr_mlock":0,"nr_page_table_pages":0,"nr_kernel_stack":0,"nr_bounce":0,"nr_zspages":0,"nr_free_cma":0,"numa_hit":3,"numa_miss":0,"numa_foreign":0,"numa_interleave":1,"numa_local":3,"numa_other":0},"pagesets":[{"cpu":0,"count":0,"high":0,"batch":1,"vm stats threshold":4},{"cpu":1,"count":0,"high":0,"batch":1,"vm stats threshold":4,"node_unreclaimable":0,"start_pfn":1}]},"nr_inactive_anon":39,"nr_active_anon":34839,"nr_inactive_file":104172,"nr_active_file":130748,"nr_unevictable":4897,"nr_slab_reclaimable":49017,"nr_slab_unreclaimable":26177,"nr_isolated_anon":0,"nr_isolated_file":0,"workingset_nodes":0,"workingset_refault":0,"workingset_activate":0,"workingset_restore":0,"workingset_nodereclaim":0,"nr_anon_pages":40299,"nr_mapped":25140,"nr_file_pages":234396,"nr_dirty":0,"nr_writeback":0,"nr_writeback_temp":0,"nr_shmem":395,"nr_shmem_hugepages":0,"nr_shmem_pmdmapped":0,"nr_file_hugepages":0,"nr_file_pmdmapped":0,"nr_anon_transparent_hugepages":0,"nr_vmscan_write":0,"nr_vmscan_immediate_reclaim":0,"nr_dirtied":168223,"nr_written":144616,"nr_kernel_misc_reclaimable":0,"nr_foll_pin_acquired":0,"nr_foll_pin_released":0,"DMA32":{"pages":{"free":606010,"min":12729,"low":15911,"high":19093,"spanned":1044480,"present":782288,"managed":758708,"protection":[0,0,924,924,924],"nr_free_pages":606010,"nr_zone_inactive_anon":4,"nr_zone_active_anon":17380,"nr_zone_inactive_file":41785,"nr_zone_active_file":64545,"nr_zone_unevictable":5,"nr_zone_write_pending":0,"nr_mlock":5,"nr_page_table_pages":101,"nr_kernel_stack":224,"nr_bounce":0,"nr_zspages":0,"nr_free_cma":0,"numa_hit":576595,"numa_miss":0,"numa_foreign":0,"numa_interleave":2,"numa_local":576595,"numa_other":0},"pagesets":[{"cpu":0,"count":253,"high":378,"batch":63,"vm stats threshold":24},{"cpu":1,"count":243,"high":378,"batch":63,"vm stats threshold":24,"node_unreclaimable":0,"start_pfn":4096}]},"Normal":{"pages":{"free":5113,"min":4097,"low":5121,"high":6145,"spanned":262144,"present":262144,"managed":236634,"protection":[0,0,0,0,0],"nr_free_pages":5113,"nr_zone_inactive_anon":35,"nr_zone_active_anon":17459,"nr_zone_inactive_file":62387,"nr_zone_active_file":66203,"nr_zone_unevictable":4892,"nr_zone_write_pending":0,"nr_mlock":4892,"nr_page_table_pages":447,"nr_kernel_stack":5760,"nr_bounce":0,"nr_zspages":0,"nr_free_cma":0,"numa_hit":1338441,"numa_miss":0,"numa_foreign":0,"numa_interleave":66037,"numa_local":1338441,"numa_other":0},"pagesets":[{"cpu":0,"count":340,"high":378,"batch":63,"vm stats threshold":16},{"cpu":1,"count":174,"high":378,"batch":63,"vm stats threshold":16,"node_unreclaimable":0,"start_pfn":1048576}]},"Movable":{"pages":{"free":0,"min":0,"low":0,"high":0,"spanned":0,"present":0,"managed":0,"protection":[0,0,0,0,0]}},"Device":{"pages":{"free":0,"min":0,"low":0,"high":0,"spanned":0,"present":0,"managed":0,"protection":[0,0,0,0,0]},"pagesets":[{"cpu":0,"count":8,"high":8,"batch":8,"vm stats threshold":8},{"cpu":1,"count":9,"high":9,"batch":9,"vm stats threshold":9,"node_unreclaimable":9,"start_pfn":9}]}}] diff --git a/tests/test_proc_driver_rtc.py b/tests/test_proc_driver_rtc.py new file mode 100644 index 00000000..46a54d78 --- /dev/null +++ b/tests/test_proc_driver_rtc.py @@ -0,0 +1,44 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_driver_rtc + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_driver_rtc': ( + 'fixtures/linux-proc/driver_rtc', + 'fixtures/linux-proc/driver_rtc.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_driver_rtc_nodata(self): + """ + Test 'proc_driver_rtc' with no data + """ + self.assertEqual(jc.parsers.proc_driver_rtc.parse('', quiet=True), {}) + + def test_proc_driver_rtc(self): + """ + Test '/proc/driver_rtc' + """ + self.assertEqual(jc.parsers.proc_driver_rtc.parse(self.f_in['proc_driver_rtc'], quiet=True), + self.f_json['proc_driver_rtc']) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/test_proc_filesystems.py b/tests/test_proc_filesystems.py new file mode 100644 index 00000000..8c333d95 --- /dev/null +++ b/tests/test_proc_filesystems.py @@ -0,0 +1,44 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_filesystems + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_filesystems': ( + 'fixtures/linux-proc/filesystems', + 'fixtures/linux-proc/filesystems.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_filesystems_nodata(self): + """ + Test 'proc_filesystems' with no data + """ + self.assertEqual(jc.parsers.proc_filesystems.parse('', quiet=True), []) + + def test_proc_filesystems(self): + """ + Test '/proc/buddyinfo' + """ + self.assertEqual(jc.parsers.proc_filesystems.parse(self.f_in['proc_filesystems'], quiet=True), + self.f_json['proc_filesystems']) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/test_proc_interrupts.py b/tests/test_proc_interrupts.py new file mode 100644 index 00000000..f553f028 --- /dev/null +++ b/tests/test_proc_interrupts.py @@ -0,0 +1,44 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_interrupts + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_interrupts': ( + 'fixtures/linux-proc/interrupts', + 'fixtures/linux-proc/interrupts.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_interrupts_nodata(self): + """ + Test 'proc_interrupts' with no data + """ + self.assertEqual(jc.parsers.proc_interrupts.parse('', quiet=True), []) + + def test_proc_interrupts(self): + """ + Test '/proc/interrupts' + """ + self.assertEqual(jc.parsers.proc_interrupts.parse(self.f_in['proc_interrupts'], quiet=True), + self.f_json['proc_interrupts']) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/test_proc_iomem.py b/tests/test_proc_iomem.py new file mode 100644 index 00000000..bf60040b --- /dev/null +++ b/tests/test_proc_iomem.py @@ -0,0 +1,44 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_iomem + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_iomem': ( + 'fixtures/linux-proc/iomem', + 'fixtures/linux-proc/iomem.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_iomem_nodata(self): + """ + Test 'proc_iomem' with no data + """ + self.assertEqual(jc.parsers.proc_iomem.parse('', quiet=True), []) + + def test_proc_iomem(self): + """ + Test '/proc/iomem' + """ + self.assertEqual(jc.parsers.proc_iomem.parse(self.f_in['proc_iomem'], quiet=True), + self.f_json['proc_iomem']) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/test_proc_ioports.py b/tests/test_proc_ioports.py new file mode 100644 index 00000000..b29a85ec --- /dev/null +++ b/tests/test_proc_ioports.py @@ -0,0 +1,44 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_ioports + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_ioports': ( + 'fixtures/linux-proc/ioports', + 'fixtures/linux-proc/ioports.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_ioports_nodata(self): + """ + Test 'proc_ioports' with no data + """ + self.assertEqual(jc.parsers.proc_ioports.parse('', quiet=True), []) + + def test_proc_ioports(self): + """ + Test '/proc/ioports' + """ + self.assertEqual(jc.parsers.proc_ioports.parse(self.f_in['proc_ioports'], quiet=True), + self.f_json['proc_ioports']) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/test_proc_loadavg.py b/tests/test_proc_loadavg.py new file mode 100644 index 00000000..d09c2e39 --- /dev/null +++ b/tests/test_proc_loadavg.py @@ -0,0 +1,44 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_loadavg + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_loadavg': ( + 'fixtures/linux-proc/loadavg', + 'fixtures/linux-proc/loadavg.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_loadavg_nodata(self): + """ + Test 'proc_loadavg' with no data + """ + self.assertEqual(jc.parsers.proc_loadavg.parse('', quiet=True), {}) + + def test_proc_loadavg(self): + """ + Test '/proc/loadavg' + """ + self.assertEqual(jc.parsers.proc_loadavg.parse(self.f_in['proc_loadavg'], quiet=True), + self.f_json['proc_loadavg']) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/test_proc_locks.py b/tests/test_proc_locks.py new file mode 100644 index 00000000..54971daf --- /dev/null +++ b/tests/test_proc_locks.py @@ -0,0 +1,44 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_locks + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_locks': ( + 'fixtures/linux-proc/locks', + 'fixtures/linux-proc/locks.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_locks_nodata(self): + """ + Test 'proc_locks' with no data + """ + self.assertEqual(jc.parsers.proc_locks.parse('', quiet=True), []) + + def test_proc_locks(self): + """ + Test '/proc/locks' + """ + self.assertEqual(jc.parsers.proc_locks.parse(self.f_in['proc_locks'], quiet=True), + self.f_json['proc_locks']) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/test_proc_meminfo.py b/tests/test_proc_meminfo.py new file mode 100644 index 00000000..07d05834 --- /dev/null +++ b/tests/test_proc_meminfo.py @@ -0,0 +1,44 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_meminfo + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_meminfo': ( + 'fixtures/linux-proc/meminfo', + 'fixtures/linux-proc/meminfo.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_meminfo_nodata(self): + """ + Test 'proc_meminfo' with no data + """ + self.assertEqual(jc.parsers.proc_meminfo.parse('', quiet=True), {}) + + def test_proc_meminfo(self): + """ + Test '/proc/meminfo' + """ + self.assertEqual(jc.parsers.proc_meminfo.parse(self.f_in['proc_meminfo'], quiet=True), + self.f_json['proc_meminfo']) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/test_proc_modules.py b/tests/test_proc_modules.py new file mode 100644 index 00000000..a4f131b1 --- /dev/null +++ b/tests/test_proc_modules.py @@ -0,0 +1,44 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_modules + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_modules': ( + 'fixtures/linux-proc/modules', + 'fixtures/linux-proc/modules.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_modules_nodata(self): + """ + Test 'proc_modules' with no data + """ + self.assertEqual(jc.parsers.proc_modules.parse('', quiet=True), []) + + def test_proc_modules(self): + """ + Test '/proc/modules' + """ + self.assertEqual(jc.parsers.proc_modules.parse(self.f_in['proc_modules'], quiet=True), + self.f_json['proc_modules']) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/test_proc_mtrr.py b/tests/test_proc_mtrr.py new file mode 100644 index 00000000..2b3ee09e --- /dev/null +++ b/tests/test_proc_mtrr.py @@ -0,0 +1,44 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_mtrr + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_mtrr': ( + 'fixtures/linux-proc/mtrr', + 'fixtures/linux-proc/mtrr.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_mtrr_nodata(self): + """ + Test 'proc_mtrr' with no data + """ + self.assertEqual(jc.parsers.proc_mtrr.parse('', quiet=True), []) + + def test_proc_mtrr(self): + """ + Test '/proc/mtrr' + """ + self.assertEqual(jc.parsers.proc_mtrr.parse(self.f_in['proc_mtrr'], quiet=True), + self.f_json['proc_mtrr']) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/test_proc_pagetypeinfo.py b/tests/test_proc_pagetypeinfo.py new file mode 100644 index 00000000..e13a7ac7 --- /dev/null +++ b/tests/test_proc_pagetypeinfo.py @@ -0,0 +1,44 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_pagetypeinfo + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_pagetypeinfo': ( + 'fixtures/linux-proc/pagetypeinfo', + 'fixtures/linux-proc/pagetypeinfo.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_pagetypeinfo_nodata(self): + """ + Test 'proc_pagetypeinfo' with no data + """ + self.assertEqual(jc.parsers.proc_pagetypeinfo.parse('', quiet=True), {}) + + def test_proc_pagetypeinfo(self): + """ + Test '/proc/pagetypeinfo' + """ + self.assertEqual(jc.parsers.proc_pagetypeinfo.parse(self.f_in['proc_pagetypeinfo'], quiet=True), + self.f_json['proc_pagetypeinfo']) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/test_proc_partitions.py b/tests/test_proc_partitions.py new file mode 100644 index 00000000..3d561660 --- /dev/null +++ b/tests/test_proc_partitions.py @@ -0,0 +1,44 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_partitions + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_partitions': ( + 'fixtures/linux-proc/partitions', + 'fixtures/linux-proc/partitions.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_partitions_nodata(self): + """ + Test 'proc_partitions' with no data + """ + self.assertEqual(jc.parsers.proc_partitions.parse('', quiet=True), []) + + def test_proc_partitions(self): + """ + Test '/proc/partitions' + """ + self.assertEqual(jc.parsers.proc_partitions.parse(self.f_in['proc_partitions'], quiet=True), + self.f_json['proc_partitions']) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/test_proc_slabinfo.py b/tests/test_proc_slabinfo.py new file mode 100644 index 00000000..709190fa --- /dev/null +++ b/tests/test_proc_slabinfo.py @@ -0,0 +1,44 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_slabinfo + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_slabinfo': ( + 'fixtures/linux-proc/slabinfo', + 'fixtures/linux-proc/slabinfo.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_slabinfo_nodata(self): + """ + Test 'proc_slabinfo' with no data + """ + self.assertEqual(jc.parsers.proc_slabinfo.parse('', quiet=True), []) + + def test_proc_slabinfo(self): + """ + Test '/proc/slabinfo' + """ + self.assertEqual(jc.parsers.proc_slabinfo.parse(self.f_in['proc_slabinfo'], quiet=True), + self.f_json['proc_slabinfo']) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/test_proc_softirqs.py b/tests/test_proc_softirqs.py new file mode 100644 index 00000000..13d4ce9c --- /dev/null +++ b/tests/test_proc_softirqs.py @@ -0,0 +1,44 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_softirqs + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_softirqs': ( + 'fixtures/linux-proc/softirqs', + 'fixtures/linux-proc/softirqs.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_softirqs_nodata(self): + """ + Test 'proc_softirqs' with no data + """ + self.assertEqual(jc.parsers.proc_softirqs.parse('', quiet=True), []) + + def test_proc_softirqs(self): + """ + Test '/proc/softirqs' + """ + self.assertEqual(jc.parsers.proc_softirqs.parse(self.f_in['proc_softirqs'], quiet=True), + self.f_json['proc_softirqs']) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/test_proc_stat.py b/tests/test_proc_stat.py new file mode 100644 index 00000000..826410d8 --- /dev/null +++ b/tests/test_proc_stat.py @@ -0,0 +1,54 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_stat + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_stat': ( + 'fixtures/linux-proc/stat', + 'fixtures/linux-proc/stat.json'), + 'proc_stat2': ( + 'fixtures/linux-proc/stat2', + 'fixtures/linux-proc/stat2.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_stat_nodata(self): + """ + Test 'proc_stat' with no data + """ + self.assertEqual(jc.parsers.proc_stat.parse('', quiet=True), {}) + + def test_proc_stat(self): + """ + Test '/proc/stat' + """ + self.assertEqual(jc.parsers.proc_stat.parse(self.f_in['proc_stat'], quiet=True), + self.f_json['proc_stat']) + + def test_proc_stat2(self): + """ + Test '/proc/stat' #2 + """ + self.assertEqual(jc.parsers.proc_stat.parse(self.f_in['proc_stat2'], quiet=True), + self.f_json['proc_stat2']) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/test_proc_swaps.py b/tests/test_proc_swaps.py new file mode 100644 index 00000000..bc6156b7 --- /dev/null +++ b/tests/test_proc_swaps.py @@ -0,0 +1,44 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_swaps + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_swaps': ( + 'fixtures/linux-proc/swaps', + 'fixtures/linux-proc/swaps.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_swaps_nodata(self): + """ + Test 'proc_swaps' with no data + """ + self.assertEqual(jc.parsers.proc_swaps.parse('', quiet=True), []) + + def test_proc_swaps(self): + """ + Test '/proc/swaps' + """ + self.assertEqual(jc.parsers.proc_swaps.parse(self.f_in['proc_swaps'], quiet=True), + self.f_json['proc_swaps']) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/test_proc_uptime.py b/tests/test_proc_uptime.py new file mode 100644 index 00000000..63537053 --- /dev/null +++ b/tests/test_proc_uptime.py @@ -0,0 +1,44 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_uptime + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_uptime': ( + 'fixtures/linux-proc/uptime', + 'fixtures/linux-proc/uptime.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_uptime_nodata(self): + """ + Test 'proc_uptime' with no data + """ + self.assertEqual(jc.parsers.proc_uptime.parse('', quiet=True), {}) + + def test_proc_uptime(self): + """ + Test '/proc/uptime' + """ + self.assertEqual(jc.parsers.proc_uptime.parse(self.f_in['proc_uptime'], quiet=True), + self.f_json['proc_uptime']) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/test_proc_version.py b/tests/test_proc_version.py new file mode 100644 index 00000000..ed9b4737 --- /dev/null +++ b/tests/test_proc_version.py @@ -0,0 +1,64 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_version + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_version': ( + 'fixtures/linux-proc/version', + 'fixtures/linux-proc/version.json'), + 'proc_version2': ( + 'fixtures/linux-proc/version2', + 'fixtures/linux-proc/version2.json'), + 'proc_version3': ( + 'fixtures/linux-proc/version3', + 'fixtures/linux-proc/version3.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_version_nodata(self): + """ + Test 'proc_version' with no data + """ + self.assertEqual(jc.parsers.proc_version.parse('', quiet=True), {}) + + def test_proc_version(self): + """ + Test '/proc/version' + """ + self.assertEqual(jc.parsers.proc_version.parse(self.f_in['proc_version'], quiet=True), + self.f_json['proc_version']) + + def test_proc_version2(self): + """ + Test '/proc/version' #2 + """ + self.assertEqual(jc.parsers.proc_version.parse(self.f_in['proc_version2'], quiet=True), + self.f_json['proc_version2']) + + def test_proc_version3(self): + """ + Test '/proc/version' #3 + """ + self.assertEqual(jc.parsers.proc_version.parse(self.f_in['proc_version3'], quiet=True), + self.f_json['proc_version3']) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/test_proc_vmallocinfo.py b/tests/test_proc_vmallocinfo.py new file mode 100644 index 00000000..7fbe0456 --- /dev/null +++ b/tests/test_proc_vmallocinfo.py @@ -0,0 +1,44 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_vmallocinfo + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_vmallocinfo': ( + 'fixtures/linux-proc/vmallocinfo', + 'fixtures/linux-proc/vmallocinfo.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_vmallocinfo_nodata(self): + """ + Test 'proc_vmallocinfo' with no data + """ + self.assertEqual(jc.parsers.proc_vmallocinfo.parse('', quiet=True), []) + + def test_proc_vmallocinfo(self): + """ + Test '/proc/vmallocinfo' + """ + self.assertEqual(jc.parsers.proc_vmallocinfo.parse(self.f_in['proc_vmallocinfo'], quiet=True), + self.f_json['proc_vmallocinfo']) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/test_proc_vmstat.py b/tests/test_proc_vmstat.py new file mode 100644 index 00000000..9af3efda --- /dev/null +++ b/tests/test_proc_vmstat.py @@ -0,0 +1,44 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_vmstat + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_vmstat': ( + 'fixtures/linux-proc/vmstat', + 'fixtures/linux-proc/vmstat.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_vmstat_nodata(self): + """ + Test 'proc_vmstat' with no data + """ + self.assertEqual(jc.parsers.proc_vmstat.parse('', quiet=True), {}) + + def test_proc_vmstat(self): + """ + Test '/proc/vmstat' + """ + self.assertEqual(jc.parsers.proc_vmstat.parse(self.f_in['proc_vmstat'], quiet=True), + self.f_json['proc_vmstat']) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/test_proc_zoneinfo.py b/tests/test_proc_zoneinfo.py new file mode 100644 index 00000000..55d9a6fd --- /dev/null +++ b/tests/test_proc_zoneinfo.py @@ -0,0 +1,54 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_zoneinfo + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_zoneinfo': ( + 'fixtures/linux-proc/zoneinfo', + 'fixtures/linux-proc/zoneinfo.json'), + 'proc_zoneinfo2': ( + 'fixtures/linux-proc/zoneinfo2', + 'fixtures/linux-proc/zoneinfo2.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_zoneinfo_nodata(self): + """ + Test 'proc_zoneinfo' with no data + """ + self.assertEqual(jc.parsers.proc_zoneinfo.parse('', quiet=True), []) + + def test_proc_zoneinfo(self): + """ + Test '/proc/zoneinfo' + """ + self.assertEqual(jc.parsers.proc_zoneinfo.parse(self.f_in['proc_zoneinfo'], quiet=True), + self.f_json['proc_zoneinfo']) + + def test_proc_zoneinfo2(self): + """ + Test '/proc/zoneinfo' #2 + """ + self.assertEqual(jc.parsers.proc_zoneinfo.parse(self.f_in['proc_zoneinfo2'], quiet=True), + self.f_json['proc_zoneinfo2']) + + +if __name__ == '__main__': + unittest.main() From 611e5c7ea245995d9a3f48f9290862f9371a1440 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Sat, 24 Sep 2022 15:48:22 -0700 Subject: [PATCH 089/124] proc_pid tests --- tests/fixtures/linux-proc/pid_fdinfo.json | 1 + tests/fixtures/linux-proc/pid_fdinfo_dma.json | 1 + .../fixtures/linux-proc/pid_fdinfo_epoll.json | 1 + .../linux-proc/pid_fdinfo_fanotify.json | 1 + .../linux-proc/pid_fdinfo_inotify.json | 1 + .../linux-proc/pid_fdinfo_timerfd.json | 1 + tests/fixtures/linux-proc/pid_io.json | 1 + tests/fixtures/linux-proc/pid_maps.json | 1 + tests/fixtures/linux-proc/pid_mountinfo.json | 1 + tests/fixtures/linux-proc/pid_numa_maps.json | 1 + tests/test_proc_pid_fdinfo.py | 94 +++++++++++++++++++ tests/test_proc_pid_io.py | 44 +++++++++ tests/test_proc_pid_maps.py | 44 +++++++++ tests/test_proc_pid_mountinfo.py | 44 +++++++++ tests/test_proc_pid_numa_maps.py | 44 +++++++++ 15 files changed, 280 insertions(+) create mode 100644 tests/fixtures/linux-proc/pid_fdinfo.json create mode 100644 tests/fixtures/linux-proc/pid_fdinfo_dma.json create mode 100644 tests/fixtures/linux-proc/pid_fdinfo_epoll.json create mode 100644 tests/fixtures/linux-proc/pid_fdinfo_fanotify.json create mode 100644 tests/fixtures/linux-proc/pid_fdinfo_inotify.json create mode 100644 tests/fixtures/linux-proc/pid_fdinfo_timerfd.json create mode 100644 tests/fixtures/linux-proc/pid_io.json create mode 100644 tests/fixtures/linux-proc/pid_maps.json create mode 100644 tests/fixtures/linux-proc/pid_mountinfo.json create mode 100644 tests/fixtures/linux-proc/pid_numa_maps.json create mode 100644 tests/test_proc_pid_fdinfo.py create mode 100644 tests/test_proc_pid_io.py create mode 100644 tests/test_proc_pid_maps.py create mode 100644 tests/test_proc_pid_mountinfo.py create mode 100644 tests/test_proc_pid_numa_maps.py diff --git a/tests/fixtures/linux-proc/pid_fdinfo.json b/tests/fixtures/linux-proc/pid_fdinfo.json new file mode 100644 index 00000000..f787616a --- /dev/null +++ b/tests/fixtures/linux-proc/pid_fdinfo.json @@ -0,0 +1 @@ +{"pos":0,"flags":2004002,"mnt_id":9,"scm_fds":"0","ino":63107,"lock":"1: FLOCK ADVISORY WRITE 359 00:13:11691 0 EOF"} diff --git a/tests/fixtures/linux-proc/pid_fdinfo_dma.json b/tests/fixtures/linux-proc/pid_fdinfo_dma.json new file mode 100644 index 00000000..9fc5b3f1 --- /dev/null +++ b/tests/fixtures/linux-proc/pid_fdinfo_dma.json @@ -0,0 +1 @@ +{"pos":0,"flags":4002,"mnt_id":9,"ino":63107,"size":32768,"count":2,"exp_name":"system-heap"} diff --git a/tests/fixtures/linux-proc/pid_fdinfo_epoll.json b/tests/fixtures/linux-proc/pid_fdinfo_epoll.json new file mode 100644 index 00000000..90d1e98f --- /dev/null +++ b/tests/fixtures/linux-proc/pid_fdinfo_epoll.json @@ -0,0 +1 @@ +{"pos":0,"flags":2,"mnt_id":9,"ino":63107,"epoll":{"tfd":5,"events":"1d","data":"ffffffffffffffff","pos":0,"ino":"61af","sdev":"7"}} diff --git a/tests/fixtures/linux-proc/pid_fdinfo_fanotify.json b/tests/fixtures/linux-proc/pid_fdinfo_fanotify.json new file mode 100644 index 00000000..029f99ec --- /dev/null +++ b/tests/fixtures/linux-proc/pid_fdinfo_fanotify.json @@ -0,0 +1 @@ +{"pos":0,"flags":2,"mnt_id":9,"ino":63107,"fanotify":{"flags":"10","event-flags":"0","mnt_id":"12","mflags":"0","mask":"3b","ignored_mask":"40000000","ino":"4f969","sdev":"800013","fhandle-bytes":"8","fhandle-type":"1","f_handle":"69f90400c275b5b4"}} diff --git a/tests/fixtures/linux-proc/pid_fdinfo_inotify.json b/tests/fixtures/linux-proc/pid_fdinfo_inotify.json new file mode 100644 index 00000000..0c990895 --- /dev/null +++ b/tests/fixtures/linux-proc/pid_fdinfo_inotify.json @@ -0,0 +1 @@ +{"pos":0,"flags":2000000,"mnt_id":9,"ino":63107,"inotify":{"wd":3,"ino":"9e7e","sdev":"800013","mask":"800afce","ignored_mask":"0","fhandle-bytes":"8","fhandle-type":"1","f_handle":"7e9e0000640d1b6d"}} diff --git a/tests/fixtures/linux-proc/pid_fdinfo_timerfd.json b/tests/fixtures/linux-proc/pid_fdinfo_timerfd.json new file mode 100644 index 00000000..d0bf262c --- /dev/null +++ b/tests/fixtures/linux-proc/pid_fdinfo_timerfd.json @@ -0,0 +1 @@ +{"pos":0,"flags":2,"mnt_id":9,"ino":63107,"clockid":0,"ticks":0,"settime flags":1,"it_value":[0,49406829],"it_interval":[1,0]} diff --git a/tests/fixtures/linux-proc/pid_io.json b/tests/fixtures/linux-proc/pid_io.json new file mode 100644 index 00000000..96035be5 --- /dev/null +++ b/tests/fixtures/linux-proc/pid_io.json @@ -0,0 +1 @@ +{"rchar":4699288382,"wchar":2931802997,"syscr":661897,"syscw":890910,"read_bytes":168468480,"write_bytes":27357184,"cancelled_write_bytes":16883712} diff --git a/tests/fixtures/linux-proc/pid_maps.json b/tests/fixtures/linux-proc/pid_maps.json new file mode 100644 index 00000000..30f4109a --- /dev/null +++ b/tests/fixtures/linux-proc/pid_maps.json @@ -0,0 +1 @@ +[{"perms":["read","private"],"offset":"00000000","inode":798126,"pathname":"/usr/lib/systemd/systemd","start":"55a9e753c000","end":"55a9e7570000","maj":"fd","min":"00"},{"perms":["read","execute","private"],"offset":"00034000","inode":798126,"pathname":"/usr/lib/systemd/systemd","start":"55a9e7570000","end":"55a9e763a000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"000fe000","inode":798126,"pathname":"/usr/lib/systemd/systemd","start":"55a9e763a000","end":"55a9e7694000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00158000","inode":798126,"pathname":"/usr/lib/systemd/systemd","start":"55a9e7695000","end":"55a9e76da000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"0019d000","inode":798126,"pathname":"/usr/lib/systemd/systemd","start":"55a9e76da000","end":"55a9e76db000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"00000000","inode":0,"pathname":"[heap]","start":"55a9e8cd4000","end":"55a9e8f68000","maj":"00","min":"00"},{"perms":["read","write","private"],"offset":"00000000","inode":0,"start":"7f53a4000000","end":"7f53a4021000","maj":"00","min":"00"},{"perms":["private"],"offset":"00000000","inode":0,"start":"7f53a4021000","end":"7f53a8000000","maj":"00","min":"00"},{"perms":["read","write","private"],"offset":"00000000","inode":0,"start":"7f53ac000000","end":"7f53ac021000","maj":"00","min":"00"},{"perms":["private"],"offset":"00000000","inode":0,"start":"7f53ac021000","end":"7f53b0000000","maj":"00","min":"00"},{"perms":["private"],"offset":"00000000","inode":0,"start":"7f53b2fb8000","end":"7f53b2fb9000","maj":"00","min":"00"},{"perms":["read","write","private"],"offset":"00000000","inode":0,"start":"7f53b2fb9000","end":"7f53b37b9000","maj":"00","min":"00"},{"perms":["private"],"offset":"00000000","inode":0,"start":"7f53b37b9000","end":"7f53b37ba000","maj":"00","min":"00"},{"perms":["read","write","private"],"offset":"00000000","inode":0,"start":"7f53b37ba000","end":"7f53b3fc1000","maj":"00","min":"00"},{"perms":["read","private"],"offset":"00000000","inode":793156,"pathname":"/usr/lib/x86_64-linux-gnu/libm-2.32.so","start":"7f53b3fc1000","end":"7f53b3fd0000","maj":"fd","min":"00"},{"perms":["read","execute","private"],"offset":"0000f000","inode":793156,"pathname":"/usr/lib/x86_64-linux-gnu/libm-2.32.so","start":"7f53b3fd0000","end":"7f53b4077000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"000b6000","inode":793156,"pathname":"/usr/lib/x86_64-linux-gnu/libm-2.32.so","start":"7f53b4077000","end":"7f53b410e000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"0014c000","inode":793156,"pathname":"/usr/lib/x86_64-linux-gnu/libm-2.32.so","start":"7f53b410e000","end":"7f53b410f000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"0014d000","inode":793156,"pathname":"/usr/lib/x86_64-linux-gnu/libm-2.32.so","start":"7f53b410f000","end":"7f53b4110000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00000000","inode":788923,"pathname":"/usr/lib/x86_64-linux-gnu/libudev.so.1.6.18","start":"7f53b4110000","end":"7f53b4114000","maj":"fd","min":"00"},{"perms":["read","execute","private"],"offset":"00004000","inode":788923,"pathname":"/usr/lib/x86_64-linux-gnu/libudev.so.1.6.18","start":"7f53b4114000","end":"7f53b412d000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"0001d000","inode":788923,"pathname":"/usr/lib/x86_64-linux-gnu/libudev.so.1.6.18","start":"7f53b412d000","end":"7f53b4136000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00025000","inode":788923,"pathname":"/usr/lib/x86_64-linux-gnu/libudev.so.1.6.18","start":"7f53b4136000","end":"7f53b4137000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"00026000","inode":788923,"pathname":"/usr/lib/x86_64-linux-gnu/libudev.so.1.6.18","start":"7f53b4137000","end":"7f53b4138000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00000000","inode":793263,"pathname":"/usr/lib/x86_64-linux-gnu/libunistring.so.2.1.0","start":"7f53b4138000","end":"7f53b4148000","maj":"fd","min":"00"},{"perms":["read","execute","private"],"offset":"00010000","inode":793263,"pathname":"/usr/lib/x86_64-linux-gnu/libunistring.so.2.1.0","start":"7f53b4148000","end":"7f53b417e000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00046000","inode":793263,"pathname":"/usr/lib/x86_64-linux-gnu/libunistring.so.2.1.0","start":"7f53b417e000","end":"7f53b42b5000","maj":"fd","min":"00"},{"perms":["private"],"offset":"0017d000","inode":793263,"pathname":"/usr/lib/x86_64-linux-gnu/libunistring.so.2.1.0","start":"7f53b42b5000","end":"7f53b42b6000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"0017d000","inode":793263,"pathname":"/usr/lib/x86_64-linux-gnu/libunistring.so.2.1.0","start":"7f53b42b6000","end":"7f53b42b9000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"00180000","inode":793263,"pathname":"/usr/lib/x86_64-linux-gnu/libunistring.so.2.1.0","start":"7f53b42b9000","end":"7f53b42ba000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00000000","inode":793102,"pathname":"/usr/lib/x86_64-linux-gnu/libgpg-error.so.0.29.0","start":"7f53b42ba000","end":"7f53b42bf000","maj":"fd","min":"00"},{"perms":["read","execute","private"],"offset":"00005000","inode":793102,"pathname":"/usr/lib/x86_64-linux-gnu/libgpg-error.so.0.29.0","start":"7f53b42bf000","end":"7f53b42d4000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"0001a000","inode":793102,"pathname":"/usr/lib/x86_64-linux-gnu/libgpg-error.so.0.29.0","start":"7f53b42d4000","end":"7f53b42de000","maj":"fd","min":"00"},{"perms":["private"],"offset":"00024000","inode":793102,"pathname":"/usr/lib/x86_64-linux-gnu/libgpg-error.so.0.29.0","start":"7f53b42de000","end":"7f53b42df000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00024000","inode":793102,"pathname":"/usr/lib/x86_64-linux-gnu/libgpg-error.so.0.29.0","start":"7f53b42df000","end":"7f53b42e0000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"00025000","inode":793102,"pathname":"/usr/lib/x86_64-linux-gnu/libgpg-error.so.0.29.0","start":"7f53b42e0000","end":"7f53b42e1000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00000000","inode":793139,"pathname":"/usr/lib/x86_64-linux-gnu/libjson-c.so.5.1.0","start":"7f53b42e1000","end":"7f53b42e5000","maj":"fd","min":"00"},{"perms":["read","execute","private"],"offset":"00004000","inode":793139,"pathname":"/usr/lib/x86_64-linux-gnu/libjson-c.so.5.1.0","start":"7f53b42e5000","end":"7f53b42ee000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"0000d000","inode":793139,"pathname":"/usr/lib/x86_64-linux-gnu/libjson-c.so.5.1.0","start":"7f53b42ee000","end":"7f53b42f2000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00010000","inode":793139,"pathname":"/usr/lib/x86_64-linux-gnu/libjson-c.so.5.1.0","start":"7f53b42f2000","end":"7f53b42f3000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"00011000","inode":793139,"pathname":"/usr/lib/x86_64-linux-gnu/libjson-c.so.5.1.0","start":"7f53b42f3000","end":"7f53b42f4000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"00000000","inode":0,"start":"7f53b42f4000","end":"7f53b42f6000","maj":"00","min":"00"},{"perms":["read","private"],"offset":"00000000","inode":793030,"pathname":"/usr/lib/x86_64-linux-gnu/libargon2.so.1","start":"7f53b42f6000","end":"7f53b42f7000","maj":"fd","min":"00"},{"perms":["read","execute","private"],"offset":"00001000","inode":793030,"pathname":"/usr/lib/x86_64-linux-gnu/libargon2.so.1","start":"7f53b42f7000","end":"7f53b42fc000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00006000","inode":793030,"pathname":"/usr/lib/x86_64-linux-gnu/libargon2.so.1","start":"7f53b42fc000","end":"7f53b42fe000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00007000","inode":793030,"pathname":"/usr/lib/x86_64-linux-gnu/libargon2.so.1","start":"7f53b42fe000","end":"7f53b42ff000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"00008000","inode":793030,"pathname":"/usr/lib/x86_64-linux-gnu/libargon2.so.1","start":"7f53b42ff000","end":"7f53b4300000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00000000","inode":793061,"pathname":"/usr/lib/x86_64-linux-gnu/libdevmapper.so.1.02.1","start":"7f53b4300000","end":"7f53b430a000","maj":"fd","min":"00"},{"perms":["read","execute","private"],"offset":"0000a000","inode":793061,"pathname":"/usr/lib/x86_64-linux-gnu/libdevmapper.so.1.02.1","start":"7f53b430a000","end":"7f53b4352000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00052000","inode":793061,"pathname":"/usr/lib/x86_64-linux-gnu/libdevmapper.so.1.02.1","start":"7f53b4352000","end":"7f53b4366000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00065000","inode":793061,"pathname":"/usr/lib/x86_64-linux-gnu/libdevmapper.so.1.02.1","start":"7f53b4366000","end":"7f53b4367000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"00066000","inode":793061,"pathname":"/usr/lib/x86_64-linux-gnu/libdevmapper.so.1.02.1","start":"7f53b4367000","end":"7f53b436a000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"00000000","inode":0,"start":"7f53b436a000","end":"7f53b436b000","maj":"00","min":"00"},{"perms":["read","private"],"offset":"00000000","inode":793279,"pathname":"/usr/lib/x86_64-linux-gnu/libuuid.so.1.3.0","start":"7f53b436b000","end":"7f53b436d000","maj":"fd","min":"00"},{"perms":["read","execute","private"],"offset":"00002000","inode":793279,"pathname":"/usr/lib/x86_64-linux-gnu/libuuid.so.1.3.0","start":"7f53b436d000","end":"7f53b4371000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00006000","inode":793279,"pathname":"/usr/lib/x86_64-linux-gnu/libuuid.so.1.3.0","start":"7f53b4371000","end":"7f53b4372000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00006000","inode":793279,"pathname":"/usr/lib/x86_64-linux-gnu/libuuid.so.1.3.0","start":"7f53b4372000","end":"7f53b4373000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"00007000","inode":793279,"pathname":"/usr/lib/x86_64-linux-gnu/libuuid.so.1.3.0","start":"7f53b4373000","end":"7f53b4374000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00000000","inode":790506,"pathname":"/usr/lib/x86_64-linux-gnu/libcrypto.so.1.1","start":"7f53b4374000","end":"7f53b43ec000","maj":"fd","min":"00"},{"perms":["read","execute","private"],"offset":"00078000","inode":790506,"pathname":"/usr/lib/x86_64-linux-gnu/libcrypto.so.1.1","start":"7f53b43ec000","end":"7f53b458e000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"0021a000","inode":790506,"pathname":"/usr/lib/x86_64-linux-gnu/libcrypto.so.1.1","start":"7f53b458e000","end":"7f53b461e000","maj":"fd","min":"00"},{"perms":["private"],"offset":"002aa000","inode":790506,"pathname":"/usr/lib/x86_64-linux-gnu/libcrypto.so.1.1","start":"7f53b461e000","end":"7f53b461f000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"002aa000","inode":790506,"pathname":"/usr/lib/x86_64-linux-gnu/libcrypto.so.1.1","start":"7f53b461f000","end":"7f53b464b000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"002d6000","inode":790506,"pathname":"/usr/lib/x86_64-linux-gnu/libcrypto.so.1.1","start":"7f53b464b000","end":"7f53b464d000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"00000000","inode":0,"start":"7f53b464d000","end":"7f53b4651000","maj":"00","min":"00"},{"perms":["read","private"],"offset":"00000000","inode":793046,"pathname":"/usr/lib/x86_64-linux-gnu/libcap-ng.so.0.0.0","start":"7f53b4651000","end":"7f53b4653000","maj":"fd","min":"00"},{"perms":["read","execute","private"],"offset":"00002000","inode":793046,"pathname":"/usr/lib/x86_64-linux-gnu/libcap-ng.so.0.0.0","start":"7f53b4653000","end":"7f53b4656000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00005000","inode":793046,"pathname":"/usr/lib/x86_64-linux-gnu/libcap-ng.so.0.0.0","start":"7f53b4656000","end":"7f53b4657000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00005000","inode":793046,"pathname":"/usr/lib/x86_64-linux-gnu/libcap-ng.so.0.0.0","start":"7f53b4657000","end":"7f53b4658000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"00006000","inode":793046,"pathname":"/usr/lib/x86_64-linux-gnu/libcap-ng.so.0.0.0","start":"7f53b4658000","end":"7f53b4659000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00000000","inode":793203,"pathname":"/usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.9.0","start":"7f53b4659000","end":"7f53b465b000","maj":"fd","min":"00"},{"perms":["read","execute","private"],"offset":"00002000","inode":793203,"pathname":"/usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.9.0","start":"7f53b465b000","end":"7f53b46bf000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00066000","inode":793203,"pathname":"/usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.9.0","start":"7f53b46bf000","end":"7f53b46e7000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"0008d000","inode":793203,"pathname":"/usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.9.0","start":"7f53b46e7000","end":"7f53b46e8000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"0008e000","inode":793203,"pathname":"/usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.9.0","start":"7f53b46e8000","end":"7f53b46e9000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"00000000","inode":0,"start":"7f53b46e9000","end":"7f53b46eb000","maj":"00","min":"00"},{"perms":["read","private"],"offset":"00000000","inode":793218,"pathname":"/usr/lib/x86_64-linux-gnu/libpthread-2.32.so","start":"7f53b46eb000","end":"7f53b46f2000","maj":"fd","min":"00"},{"perms":["read","execute","private"],"offset":"00007000","inode":793218,"pathname":"/usr/lib/x86_64-linux-gnu/libpthread-2.32.so","start":"7f53b46f2000","end":"7f53b4702000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00017000","inode":793218,"pathname":"/usr/lib/x86_64-linux-gnu/libpthread-2.32.so","start":"7f53b4702000","end":"7f53b4707000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"0001b000","inode":793218,"pathname":"/usr/lib/x86_64-linux-gnu/libpthread-2.32.so","start":"7f53b4707000","end":"7f53b4708000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"0001c000","inode":793218,"pathname":"/usr/lib/x86_64-linux-gnu/libpthread-2.32.so","start":"7f53b4708000","end":"7f53b4709000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"00000000","inode":0,"start":"7f53b4709000","end":"7f53b470d000","maj":"00","min":"00"},{"perms":["read","private"],"offset":"00000000","inode":793062,"pathname":"/usr/lib/x86_64-linux-gnu/libdl-2.32.so","start":"7f53b470d000","end":"7f53b470e000","maj":"fd","min":"00"},{"perms":["read","execute","private"],"offset":"00001000","inode":793062,"pathname":"/usr/lib/x86_64-linux-gnu/libdl-2.32.so","start":"7f53b470e000","end":"7f53b4710000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00003000","inode":793062,"pathname":"/usr/lib/x86_64-linux-gnu/libdl-2.32.so","start":"7f53b4710000","end":"7f53b4711000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00003000","inode":793062,"pathname":"/usr/lib/x86_64-linux-gnu/libdl-2.32.so","start":"7f53b4711000","end":"7f53b4712000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"00004000","inode":793062,"pathname":"/usr/lib/x86_64-linux-gnu/libdl-2.32.so","start":"7f53b4712000","end":"7f53b4713000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00000000","inode":793154,"pathname":"/usr/lib/x86_64-linux-gnu/liblzma.so.5.2.4","start":"7f53b4713000","end":"7f53b4716000","maj":"fd","min":"00"},{"perms":["read","execute","private"],"offset":"00003000","inode":793154,"pathname":"/usr/lib/x86_64-linux-gnu/liblzma.so.5.2.4","start":"7f53b4716000","end":"7f53b472e000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"0001b000","inode":793154,"pathname":"/usr/lib/x86_64-linux-gnu/liblzma.so.5.2.4","start":"7f53b472e000","end":"7f53b4739000","maj":"fd","min":"00"},{"perms":["private"],"offset":"00026000","inode":793154,"pathname":"/usr/lib/x86_64-linux-gnu/liblzma.so.5.2.4","start":"7f53b4739000","end":"7f53b473a000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00026000","inode":793154,"pathname":"/usr/lib/x86_64-linux-gnu/liblzma.so.5.2.4","start":"7f53b473a000","end":"7f53b473b000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"00027000","inode":793154,"pathname":"/usr/lib/x86_64-linux-gnu/liblzma.so.5.2.4","start":"7f53b473b000","end":"7f53b473c000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00000000","inode":792974,"pathname":"/usr/lib/x86_64-linux-gnu/libzstd.so.1.4.5","start":"7f53b473c000","end":"7f53b4740000","maj":"fd","min":"00"},{"perms":["read","execute","private"],"offset":"00004000","inode":792974,"pathname":"/usr/lib/x86_64-linux-gnu/libzstd.so.1.4.5","start":"7f53b4740000","end":"7f53b47f8000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"000bc000","inode":792974,"pathname":"/usr/lib/x86_64-linux-gnu/libzstd.so.1.4.5","start":"7f53b47f8000","end":"7f53b480a000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"000cd000","inode":792974,"pathname":"/usr/lib/x86_64-linux-gnu/libzstd.so.1.4.5","start":"7f53b480a000","end":"7f53b480b000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"000ce000","inode":792974,"pathname":"/usr/lib/x86_64-linux-gnu/libzstd.so.1.4.5","start":"7f53b480b000","end":"7f53b480c000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00000000","inode":787663,"pathname":"/usr/lib/x86_64-linux-gnu/liblz4.so.1.9.2","start":"7f53b480c000","end":"7f53b480e000","maj":"fd","min":"00"},{"perms":["read","execute","private"],"offset":"00002000","inode":787663,"pathname":"/usr/lib/x86_64-linux-gnu/liblz4.so.1.9.2","start":"7f53b480e000","end":"7f53b4829000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"0001d000","inode":787663,"pathname":"/usr/lib/x86_64-linux-gnu/liblz4.so.1.9.2","start":"7f53b4829000","end":"7f53b482c000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"0001f000","inode":787663,"pathname":"/usr/lib/x86_64-linux-gnu/liblz4.so.1.9.2","start":"7f53b482c000","end":"7f53b482d000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"00020000","inode":787663,"pathname":"/usr/lib/x86_64-linux-gnu/liblz4.so.1.9.2","start":"7f53b482d000","end":"7f53b482e000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"00000000","inode":0,"start":"7f53b482e000","end":"7f53b4830000","maj":"00","min":"00"},{"perms":["read","private"],"offset":"00000000","inode":793129,"pathname":"/usr/lib/x86_64-linux-gnu/libip4tc.so.2.0.0","start":"7f53b4830000","end":"7f53b4832000","maj":"fd","min":"00"},{"perms":["read","execute","private"],"offset":"00002000","inode":793129,"pathname":"/usr/lib/x86_64-linux-gnu/libip4tc.so.2.0.0","start":"7f53b4832000","end":"7f53b4836000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00006000","inode":793129,"pathname":"/usr/lib/x86_64-linux-gnu/libip4tc.so.2.0.0","start":"7f53b4836000","end":"7f53b4838000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00007000","inode":793129,"pathname":"/usr/lib/x86_64-linux-gnu/libip4tc.so.2.0.0","start":"7f53b4838000","end":"7f53b4839000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"00008000","inode":793129,"pathname":"/usr/lib/x86_64-linux-gnu/libip4tc.so.2.0.0","start":"7f53b4839000","end":"7f53b483a000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00000000","inode":793128,"pathname":"/usr/lib/x86_64-linux-gnu/libidn2.so.0.3.7","start":"7f53b483a000","end":"7f53b483c000","maj":"fd","min":"00"},{"perms":["read","execute","private"],"offset":"00002000","inode":793128,"pathname":"/usr/lib/x86_64-linux-gnu/libidn2.so.0.3.7","start":"7f53b483c000","end":"7f53b4841000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00007000","inode":793128,"pathname":"/usr/lib/x86_64-linux-gnu/libidn2.so.0.3.7","start":"7f53b4841000","end":"7f53b485a000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"0001f000","inode":793128,"pathname":"/usr/lib/x86_64-linux-gnu/libidn2.so.0.3.7","start":"7f53b485a000","end":"7f53b485b000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"00020000","inode":793128,"pathname":"/usr/lib/x86_64-linux-gnu/libidn2.so.0.3.7","start":"7f53b485b000","end":"7f53b485c000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00000000","inode":793092,"pathname":"/usr/lib/x86_64-linux-gnu/libgcrypt.so.20.2.5","start":"7f53b485c000","end":"7f53b4868000","maj":"fd","min":"00"},{"perms":["read","execute","private"],"offset":"0000c000","inode":793092,"pathname":"/usr/lib/x86_64-linux-gnu/libgcrypt.so.20.2.5","start":"7f53b4868000","end":"7f53b4936000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"000da000","inode":793092,"pathname":"/usr/lib/x86_64-linux-gnu/libgcrypt.so.20.2.5","start":"7f53b4936000","end":"7f53b4973000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00116000","inode":793092,"pathname":"/usr/lib/x86_64-linux-gnu/libgcrypt.so.20.2.5","start":"7f53b4973000","end":"7f53b4975000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"00118000","inode":793092,"pathname":"/usr/lib/x86_64-linux-gnu/libgcrypt.so.20.2.5","start":"7f53b4975000","end":"7f53b497a000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00000000","inode":793052,"pathname":"/usr/lib/x86_64-linux-gnu/libcryptsetup.so.12.6.0","start":"7f53b497a000","end":"7f53b4981000","maj":"fd","min":"00"},{"perms":["read","execute","private"],"offset":"00007000","inode":793052,"pathname":"/usr/lib/x86_64-linux-gnu/libcryptsetup.so.12.6.0","start":"7f53b4981000","end":"7f53b49d2000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00058000","inode":793052,"pathname":"/usr/lib/x86_64-linux-gnu/libcryptsetup.so.12.6.0","start":"7f53b49d2000","end":"7f53b49ec000","maj":"fd","min":"00"},{"perms":["private"],"offset":"00072000","inode":793052,"pathname":"/usr/lib/x86_64-linux-gnu/libcryptsetup.so.12.6.0","start":"7f53b49ec000","end":"7f53b49ed000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00072000","inode":793052,"pathname":"/usr/lib/x86_64-linux-gnu/libcryptsetup.so.12.6.0","start":"7f53b49ed000","end":"7f53b49ef000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"00074000","inode":793052,"pathname":"/usr/lib/x86_64-linux-gnu/libcryptsetup.so.12.6.0","start":"7f53b49ef000","end":"7f53b49f1000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00000000","inode":793050,"pathname":"/usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0","start":"7f53b49f1000","end":"7f53b49f3000","maj":"fd","min":"00"},{"perms":["read","execute","private"],"offset":"00002000","inode":793050,"pathname":"/usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0","start":"7f53b49f3000","end":"7f53b4a08000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00017000","inode":793050,"pathname":"/usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0","start":"7f53b4a08000","end":"7f53b4a22000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00030000","inode":793050,"pathname":"/usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0","start":"7f53b4a22000","end":"7f53b4a23000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"00031000","inode":793050,"pathname":"/usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0","start":"7f53b4a23000","end":"7f53b4a24000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"00000000","inode":0,"start":"7f53b4a24000","end":"7f53b4a2c000","maj":"00","min":"00"},{"perms":["read","private"],"offset":"00000000","inode":793047,"pathname":"/usr/lib/x86_64-linux-gnu/libcap.so.2.43","start":"7f53b4a2c000","end":"7f53b4a2f000","maj":"fd","min":"00"},{"perms":["read","execute","private"],"offset":"00003000","inode":793047,"pathname":"/usr/lib/x86_64-linux-gnu/libcap.so.2.43","start":"7f53b4a2f000","end":"7f53b4a33000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00007000","inode":793047,"pathname":"/usr/lib/x86_64-linux-gnu/libcap.so.2.43","start":"7f53b4a33000","end":"7f53b4a35000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00008000","inode":793047,"pathname":"/usr/lib/x86_64-linux-gnu/libcap.so.2.43","start":"7f53b4a35000","end":"7f53b4a36000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"00009000","inode":793047,"pathname":"/usr/lib/x86_64-linux-gnu/libcap.so.2.43","start":"7f53b4a36000","end":"7f53b4a37000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"00000000","inode":0,"start":"7f53b4a37000","end":"7f53b4a39000","maj":"00","min":"00"},{"perms":["read","private"],"offset":"00000000","inode":793038,"pathname":"/usr/lib/x86_64-linux-gnu/libblkid.so.1.1.0","start":"7f53b4a39000","end":"7f53b4a42000","maj":"fd","min":"00"},{"perms":["read","execute","private"],"offset":"00009000","inode":793038,"pathname":"/usr/lib/x86_64-linux-gnu/libblkid.so.1.1.0","start":"7f53b4a42000","end":"7f53b4a76000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"0003d000","inode":793038,"pathname":"/usr/lib/x86_64-linux-gnu/libblkid.so.1.1.0","start":"7f53b4a76000","end":"7f53b4a86000","maj":"fd","min":"00"},{"perms":["private"],"offset":"0004d000","inode":793038,"pathname":"/usr/lib/x86_64-linux-gnu/libblkid.so.1.1.0","start":"7f53b4a86000","end":"7f53b4a87000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"0004d000","inode":793038,"pathname":"/usr/lib/x86_64-linux-gnu/libblkid.so.1.1.0","start":"7f53b4a87000","end":"7f53b4a8b000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"00051000","inode":793038,"pathname":"/usr/lib/x86_64-linux-gnu/libblkid.so.1.1.0","start":"7f53b4a8b000","end":"7f53b4a8c000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00000000","inode":793022,"pathname":"/usr/lib/x86_64-linux-gnu/libacl.so.1.1.2253","start":"7f53b4a8c000","end":"7f53b4a8e000","maj":"fd","min":"00"},{"perms":["read","execute","private"],"offset":"00002000","inode":793022,"pathname":"/usr/lib/x86_64-linux-gnu/libacl.so.1.1.2253","start":"7f53b4a8e000","end":"7f53b4a93000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00007000","inode":793022,"pathname":"/usr/lib/x86_64-linux-gnu/libacl.so.1.1.2253","start":"7f53b4a93000","end":"7f53b4a95000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00008000","inode":793022,"pathname":"/usr/lib/x86_64-linux-gnu/libacl.so.1.1.2253","start":"7f53b4a95000","end":"7f53b4a96000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"00009000","inode":793022,"pathname":"/usr/lib/x86_64-linux-gnu/libacl.so.1.1.2253","start":"7f53b4a96000","end":"7f53b4a97000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00000000","inode":793044,"pathname":"/usr/lib/x86_64-linux-gnu/libc-2.32.so","start":"7f53b4a97000","end":"7f53b4abd000","maj":"fd","min":"00"},{"perms":["read","execute","private"],"offset":"00026000","inode":793044,"pathname":"/usr/lib/x86_64-linux-gnu/libc-2.32.so","start":"7f53b4abd000","end":"7f53b4c2a000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00193000","inode":793044,"pathname":"/usr/lib/x86_64-linux-gnu/libc-2.32.so","start":"7f53b4c2a000","end":"7f53b4c76000","maj":"fd","min":"00"},{"perms":["private"],"offset":"001df000","inode":793044,"pathname":"/usr/lib/x86_64-linux-gnu/libc-2.32.so","start":"7f53b4c76000","end":"7f53b4c77000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"001df000","inode":793044,"pathname":"/usr/lib/x86_64-linux-gnu/libc-2.32.so","start":"7f53b4c77000","end":"7f53b4c7a000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"001e2000","inode":793044,"pathname":"/usr/lib/x86_64-linux-gnu/libc-2.32.so","start":"7f53b4c7a000","end":"7f53b4c7d000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"00000000","inode":0,"start":"7f53b4c7d000","end":"7f53b4c81000","maj":"00","min":"00"},{"perms":["read","private"],"offset":"00000000","inode":793025,"pathname":"/usr/lib/x86_64-linux-gnu/libapparmor.so.1.7.0","start":"7f53b4c81000","end":"7f53b4c84000","maj":"fd","min":"00"},{"perms":["read","execute","private"],"offset":"00003000","inode":793025,"pathname":"/usr/lib/x86_64-linux-gnu/libapparmor.so.1.7.0","start":"7f53b4c84000","end":"7f53b4c8d000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"0000c000","inode":793025,"pathname":"/usr/lib/x86_64-linux-gnu/libapparmor.so.1.7.0","start":"7f53b4c8d000","end":"7f53b4c94000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00012000","inode":793025,"pathname":"/usr/lib/x86_64-linux-gnu/libapparmor.so.1.7.0","start":"7f53b4c94000","end":"7f53b4c95000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"00013000","inode":793025,"pathname":"/usr/lib/x86_64-linux-gnu/libapparmor.so.1.7.0","start":"7f53b4c95000","end":"7f53b4c96000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00000000","inode":793143,"pathname":"/usr/lib/x86_64-linux-gnu/libkmod.so.2.3.5","start":"7f53b4c96000","end":"7f53b4c99000","maj":"fd","min":"00"},{"perms":["read","execute","private"],"offset":"00003000","inode":793143,"pathname":"/usr/lib/x86_64-linux-gnu/libkmod.so.2.3.5","start":"7f53b4c99000","end":"7f53b4ca9000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00013000","inode":793143,"pathname":"/usr/lib/x86_64-linux-gnu/libkmod.so.2.3.5","start":"7f53b4ca9000","end":"7f53b4caf000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00018000","inode":793143,"pathname":"/usr/lib/x86_64-linux-gnu/libkmod.so.2.3.5","start":"7f53b4caf000","end":"7f53b4cb0000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"00019000","inode":793143,"pathname":"/usr/lib/x86_64-linux-gnu/libkmod.so.2.3.5","start":"7f53b4cb0000","end":"7f53b4cb1000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00000000","inode":793036,"pathname":"/usr/lib/x86_64-linux-gnu/libaudit.so.1.0.0","start":"7f53b4cb1000","end":"7f53b4cb4000","maj":"fd","min":"00"},{"perms":["read","execute","private"],"offset":"00003000","inode":793036,"pathname":"/usr/lib/x86_64-linux-gnu/libaudit.so.1.0.0","start":"7f53b4cb4000","end":"7f53b4cbc000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"0000b000","inode":793036,"pathname":"/usr/lib/x86_64-linux-gnu/libaudit.so.1.0.0","start":"7f53b4cbc000","end":"7f53b4cd0000","maj":"fd","min":"00"},{"perms":["private"],"offset":"0001f000","inode":793036,"pathname":"/usr/lib/x86_64-linux-gnu/libaudit.so.1.0.0","start":"7f53b4cd0000","end":"7f53b4cd1000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"0001f000","inode":793036,"pathname":"/usr/lib/x86_64-linux-gnu/libaudit.so.1.0.0","start":"7f53b4cd1000","end":"7f53b4cd2000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"00020000","inode":793036,"pathname":"/usr/lib/x86_64-linux-gnu/libaudit.so.1.0.0","start":"7f53b4cd2000","end":"7f53b4cd3000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"00000000","inode":0,"start":"7f53b4cd3000","end":"7f53b4cdf000","maj":"00","min":"00"},{"perms":["read","private"],"offset":"00000000","inode":793193,"pathname":"/usr/lib/x86_64-linux-gnu/libpam.so.0.84.2","start":"7f53b4cdf000","end":"7f53b4ce2000","maj":"fd","min":"00"},{"perms":["read","execute","private"],"offset":"00003000","inode":793193,"pathname":"/usr/lib/x86_64-linux-gnu/libpam.so.0.84.2","start":"7f53b4ce2000","end":"7f53b4ceb000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"0000c000","inode":793193,"pathname":"/usr/lib/x86_64-linux-gnu/libpam.so.0.84.2","start":"7f53b4ceb000","end":"7f53b4cef000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"0000f000","inode":793193,"pathname":"/usr/lib/x86_64-linux-gnu/libpam.so.0.84.2","start":"7f53b4cef000","end":"7f53b4cf0000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"00010000","inode":793193,"pathname":"/usr/lib/x86_64-linux-gnu/libpam.so.0.84.2","start":"7f53b4cf0000","end":"7f53b4cf1000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00000000","inode":793163,"pathname":"/usr/lib/x86_64-linux-gnu/libmount.so.1.1.0","start":"7f53b4cf1000","end":"7f53b4cfb000","maj":"fd","min":"00"},{"perms":["read","execute","private"],"offset":"0000a000","inode":793163,"pathname":"/usr/lib/x86_64-linux-gnu/libmount.so.1.1.0","start":"7f53b4cfb000","end":"7f53b4d39000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00048000","inode":793163,"pathname":"/usr/lib/x86_64-linux-gnu/libmount.so.1.1.0","start":"7f53b4d39000","end":"7f53b4d4c000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"0005a000","inode":793163,"pathname":"/usr/lib/x86_64-linux-gnu/libmount.so.1.1.0","start":"7f53b4d4c000","end":"7f53b4d4e000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"0005c000","inode":793163,"pathname":"/usr/lib/x86_64-linux-gnu/libmount.so.1.1.0","start":"7f53b4d4e000","end":"7f53b4d4f000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00000000","inode":793228,"pathname":"/usr/lib/x86_64-linux-gnu/libselinux.so.1","start":"7f53b4d4f000","end":"7f53b4d55000","maj":"fd","min":"00"},{"perms":["read","execute","private"],"offset":"00006000","inode":793228,"pathname":"/usr/lib/x86_64-linux-gnu/libselinux.so.1","start":"7f53b4d55000","end":"7f53b4d6e000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"0001f000","inode":793228,"pathname":"/usr/lib/x86_64-linux-gnu/libselinux.so.1","start":"7f53b4d6e000","end":"7f53b4d76000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00026000","inode":793228,"pathname":"/usr/lib/x86_64-linux-gnu/libselinux.so.1","start":"7f53b4d76000","end":"7f53b4d77000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"00027000","inode":793228,"pathname":"/usr/lib/x86_64-linux-gnu/libselinux.so.1","start":"7f53b4d77000","end":"7f53b4d78000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"00000000","inode":0,"start":"7f53b4d78000","end":"7f53b4d7a000","maj":"00","min":"00"},{"perms":["read","private"],"offset":"00000000","inode":793227,"pathname":"/usr/lib/x86_64-linux-gnu/libseccomp.so.2.4.3","start":"7f53b4d7a000","end":"7f53b4da2000","maj":"fd","min":"00"},{"perms":["read","execute","private"],"offset":"00028000","inode":793227,"pathname":"/usr/lib/x86_64-linux-gnu/libseccomp.so.2.4.3","start":"7f53b4da2000","end":"7f53b4dad000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00033000","inode":793227,"pathname":"/usr/lib/x86_64-linux-gnu/libseccomp.so.2.4.3","start":"7f53b4dad000","end":"7f53b4db1000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00036000","inode":793227,"pathname":"/usr/lib/x86_64-linux-gnu/libseccomp.so.2.4.3","start":"7f53b4db1000","end":"7f53b4dcc000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"00051000","inode":793227,"pathname":"/usr/lib/x86_64-linux-gnu/libseccomp.so.2.4.3","start":"7f53b4dcc000","end":"7f53b4dcd000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00000000","inode":793224,"pathname":"/usr/lib/x86_64-linux-gnu/librt-2.32.so","start":"7f53b4dcd000","end":"7f53b4dd0000","maj":"fd","min":"00"},{"perms":["read","execute","private"],"offset":"00003000","inode":793224,"pathname":"/usr/lib/x86_64-linux-gnu/librt-2.32.so","start":"7f53b4dd0000","end":"7f53b4dd4000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00007000","inode":793224,"pathname":"/usr/lib/x86_64-linux-gnu/librt-2.32.so","start":"7f53b4dd4000","end":"7f53b4dd6000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00008000","inode":793224,"pathname":"/usr/lib/x86_64-linux-gnu/librt-2.32.so","start":"7f53b4dd6000","end":"7f53b4dd7000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"00009000","inode":793224,"pathname":"/usr/lib/x86_64-linux-gnu/librt-2.32.so","start":"7f53b4dd7000","end":"7f53b4dd8000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00000000","inode":798124,"pathname":"/usr/lib/systemd/libsystemd-shared-246.so","start":"7f53b4ddf000","end":"7f53b4e29000","maj":"fd","min":"00"},{"perms":["read","execute","private"],"offset":"0004a000","inode":798124,"pathname":"/usr/lib/systemd/libsystemd-shared-246.so","start":"7f53b4e29000","end":"7f53b4fac000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"001cd000","inode":798124,"pathname":"/usr/lib/systemd/libsystemd-shared-246.so","start":"7f53b4fac000","end":"7f53b503f000","maj":"fd","min":"00"},{"perms":["private"],"offset":"00260000","inode":798124,"pathname":"/usr/lib/systemd/libsystemd-shared-246.so","start":"7f53b503f000","end":"7f53b5040000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00260000","inode":798124,"pathname":"/usr/lib/systemd/libsystemd-shared-246.so","start":"7f53b5040000","end":"7f53b5050000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"00270000","inode":798124,"pathname":"/usr/lib/systemd/libsystemd-shared-246.so","start":"7f53b5050000","end":"7f53b5051000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"00000000","inode":0,"start":"7f53b5051000","end":"7f53b5054000","maj":"00","min":"00"},{"perms":["read","private"],"offset":"00000000","inode":793013,"pathname":"/usr/lib/x86_64-linux-gnu/ld-2.32.so","start":"7f53b5054000","end":"7f53b5055000","maj":"fd","min":"00"},{"perms":["read","execute","private"],"offset":"00001000","inode":793013,"pathname":"/usr/lib/x86_64-linux-gnu/ld-2.32.so","start":"7f53b5055000","end":"7f53b5079000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"00025000","inode":793013,"pathname":"/usr/lib/x86_64-linux-gnu/ld-2.32.so","start":"7f53b5079000","end":"7f53b5082000","maj":"fd","min":"00"},{"perms":["read","private"],"offset":"0002d000","inode":793013,"pathname":"/usr/lib/x86_64-linux-gnu/ld-2.32.so","start":"7f53b5082000","end":"7f53b5083000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"0002e000","inode":793013,"pathname":"/usr/lib/x86_64-linux-gnu/ld-2.32.so","start":"7f53b5083000","end":"7f53b5085000","maj":"fd","min":"00"},{"perms":["read","write","private"],"offset":"00000000","inode":0,"pathname":"[stack]","start":"7ffd1b23e000","end":"7ffd1b340000","maj":"00","min":"00"},{"perms":["read","private"],"offset":"00000000","inode":0,"pathname":"[vvar]","start":"7ffd1b3b1000","end":"7ffd1b3b5000","maj":"00","min":"00"},{"perms":["read","execute","private"],"offset":"00000000","inode":0,"pathname":"[vdso]","start":"7ffd1b3b5000","end":"7ffd1b3b7000","maj":"00","min":"00"},{"perms":["execute","private"],"offset":"00000000","inode":0,"pathname":"[vsyscall]","start":"ffffffffff600000","end":"ffffffffff601000","maj":"00","min":"00"}] diff --git a/tests/fixtures/linux-proc/pid_mountinfo.json b/tests/fixtures/linux-proc/pid_mountinfo.json new file mode 100644 index 00000000..8b7fe4d6 --- /dev/null +++ b/tests/fixtures/linux-proc/pid_mountinfo.json @@ -0,0 +1 @@ +[{"mount_id":24,"parent_id":30,"maj":0,"min":22,"root":"/","mount_point":"/sys","mount_options":["rw","nosuid","nodev","noexec","relatime"],"optional_fields":{"master":1,"shared":7},"fs_type":"sysfs","mount_source":"sysfs","super_options":["rw"]},{"mount_id":25,"parent_id":30,"maj":0,"min":23,"root":"/","mount_point":"/proc","mount_options":["rw","nosuid","nodev","noexec","relatime"],"optional_fields":{"shared":14},"fs_type":"proc","mount_source":"proc","super_options":["rw"]},{"mount_id":26,"parent_id":30,"maj":0,"min":5,"root":"/","mount_point":"/dev","mount_options":["rw","nosuid","noexec","relatime"],"optional_fields":{},"fs_type":"devtmpfs","mount_source":"udev","super_options":["rw"],"super_options_fields":{"size":1951480,"nr_inodes":487870,"mode":755}},{"mount_id":27,"parent_id":26,"maj":0,"min":24,"root":"/","mount_point":"/dev/pts","mount_options":["rw","nosuid","noexec","relatime"],"optional_fields":{"shared":3},"fs_type":"devpts","mount_source":"devpts","super_options":["rw"],"super_options_fields":{"gid":5,"mode":620,"ptmxmode":0}},{"mount_id":28,"parent_id":30,"maj":0,"min":25,"root":"/","mount_point":"/run","mount_options":["rw","nosuid","nodev","noexec","relatime"],"optional_fields":{"shared":5},"fs_type":"tmpfs","mount_source":"tmpfs","super_options":["rw"],"super_options_fields":{"size":399728,"mode":755}},{"mount_id":30,"parent_id":1,"maj":253,"min":0,"root":"/","mount_point":"/","mount_options":["rw","relatime"],"optional_fields":{"shared":1},"fs_type":"ext4","mount_source":"/dev/mapper/ubuntu--vg-ubuntu--lv"},{"mount_id":31,"parent_id":24,"maj":0,"min":6,"root":"/","mount_point":"/sys/kernel/security","mount_options":["rw","nosuid","nodev","noexec","relatime"],"optional_fields":{"unbindable":0},"fs_type":"securityfs","mount_source":"securityfs","super_options":["rw"]},{"mount_id":32,"parent_id":26,"maj":0,"min":27,"root":"/","mount_point":"/dev/shm","mount_options":["rw","nosuid","nodev"],"optional_fields":{"shared":4},"fs_type":"tmpfs","mount_source":"tmpfs","super_options":["rw"]},{"mount_id":33,"parent_id":28,"maj":0,"min":28,"root":"/","mount_point":"/run/lock","mount_options":["rw","nosuid","nodev","noexec","relatime"],"optional_fields":{"shared":6},"fs_type":"tmpfs","mount_source":"tmpfs","super_options":["rw"],"super_options_fields":{"size":5120}},{"mount_id":34,"parent_id":24,"maj":0,"min":29,"root":"/","mount_point":"/sys/fs/cgroup","mount_options":["ro","nosuid","nodev","noexec"],"optional_fields":{"shared":9},"fs_type":"tmpfs","mount_source":"tmpfs","super_options":["ro"],"super_options_fields":{"size":4096,"nr_inodes":1024,"mode":755}},{"mount_id":35,"parent_id":34,"maj":0,"min":30,"root":"/","mount_point":"/sys/fs/cgroup/unified","mount_options":["rw","nosuid","nodev","noexec","relatime"],"optional_fields":{"shared":10},"fs_type":"cgroup2","mount_source":"cgroup2","super_options":["rw","nsdelegate"]},{"mount_id":36,"parent_id":34,"maj":0,"min":31,"root":"/","mount_point":"/sys/fs/cgroup/systemd","mount_options":["rw","nosuid","nodev","noexec","relatime"],"optional_fields":{"shared":11},"fs_type":"cgroup","mount_source":"cgroup","super_options":["rw","xattr"],"super_options_fields":{"name":null}},{"mount_id":37,"parent_id":24,"maj":0,"min":32,"root":"/","mount_point":"/sys/fs/pstore","mount_options":["rw","nosuid","nodev","noexec","relatime"],"optional_fields":{"shared":12},"fs_type":"pstore","mount_source":"pstore","super_options":["rw"]},{"mount_id":38,"parent_id":24,"maj":0,"min":33,"root":"/","mount_point":"/sys/fs/bpf","mount_options":["rw","nosuid","nodev","noexec","relatime"],"optional_fields":{"shared":13},"fs_type":"bpf","mount_source":"none","super_options":["rw"],"super_options_fields":{"mode":700}},{"mount_id":39,"parent_id":34,"maj":0,"min":34,"root":"/","mount_point":"/sys/fs/cgroup/hugetlb","mount_options":["rw","nosuid","nodev","noexec","relatime"],"optional_fields":{"shared":15},"fs_type":"cgroup","mount_source":"cgroup","super_options":["rw","hugetlb"]},{"mount_id":40,"parent_id":34,"maj":0,"min":35,"root":"/","mount_point":"/sys/fs/cgroup/net_cls,net_prio","mount_options":["rw","nosuid","nodev","noexec","relatime"],"optional_fields":{"shared":16},"fs_type":"cgroup","mount_source":"cgroup","super_options":["rw","net_cls","net_prio"]},{"mount_id":41,"parent_id":34,"maj":0,"min":36,"root":"/","mount_point":"/sys/fs/cgroup/pids","mount_options":["rw","nosuid","nodev","noexec","relatime"],"optional_fields":{"shared":17},"fs_type":"cgroup","mount_source":"cgroup","super_options":["rw","pids"]},{"mount_id":42,"parent_id":34,"maj":0,"min":37,"root":"/","mount_point":"/sys/fs/cgroup/blkio","mount_options":["rw","nosuid","nodev","noexec","relatime"],"optional_fields":{"shared":18},"fs_type":"cgroup","mount_source":"cgroup","super_options":["rw","blkio"]},{"mount_id":43,"parent_id":34,"maj":0,"min":38,"root":"/","mount_point":"/sys/fs/cgroup/memory","mount_options":["rw","nosuid","nodev","noexec","relatime"],"optional_fields":{"shared":19},"fs_type":"cgroup","mount_source":"cgroup","super_options":["rw","memory"]},{"mount_id":44,"parent_id":34,"maj":0,"min":39,"root":"/","mount_point":"/sys/fs/cgroup/devices","mount_options":["rw","nosuid","nodev","noexec","relatime"],"optional_fields":{"shared":20},"fs_type":"cgroup","mount_source":"cgroup","super_options":["rw","devices"]},{"mount_id":45,"parent_id":34,"maj":0,"min":40,"root":"/","mount_point":"/sys/fs/cgroup/cpu,cpuacct","mount_options":["rw","nosuid","nodev","noexec","relatime"],"optional_fields":{"shared":21},"fs_type":"cgroup","mount_source":"cgroup","super_options":["rw","cpu","cpuacct"]},{"mount_id":46,"parent_id":34,"maj":0,"min":41,"root":"/","mount_point":"/sys/fs/cgroup/rdma","mount_options":["rw","nosuid","nodev","noexec","relatime"],"optional_fields":{"shared":22},"fs_type":"cgroup","mount_source":"cgroup","super_options":["rw","rdma"]},{"mount_id":47,"parent_id":34,"maj":0,"min":42,"root":"/","mount_point":"/sys/fs/cgroup/perf_event","mount_options":["rw","nosuid","nodev","noexec","relatime"],"optional_fields":{"shared":23},"fs_type":"cgroup","mount_source":"cgroup","super_options":["rw","perf_event"]},{"mount_id":48,"parent_id":34,"maj":0,"min":43,"root":"/","mount_point":"/sys/fs/cgroup/freezer","mount_options":["rw","nosuid","nodev","noexec","relatime"],"optional_fields":{"shared":24},"fs_type":"cgroup","mount_source":"cgroup","super_options":["rw","freezer"]},{"mount_id":49,"parent_id":34,"maj":0,"min":44,"root":"/","mount_point":"/sys/fs/cgroup/cpuset","mount_options":["rw","nosuid","nodev","noexec","relatime"],"optional_fields":{"shared":25},"fs_type":"cgroup","mount_source":"cgroup","super_options":["rw","cpuset"]},{"mount_id":50,"parent_id":25,"maj":0,"min":45,"root":"/","mount_point":"/proc/sys/fs/binfmt_misc","mount_options":["rw","relatime"],"optional_fields":{"shared":26},"fs_type":"autofs","mount_source":"systemd-1","super_options":["rw","direct"],"super_options_fields":{"fd":28,"pgrp":1,"timeout":0,"minproto":5,"maxproto":5,"pipe_ino":29773}},{"mount_id":51,"parent_id":26,"maj":0,"min":46,"root":"/","mount_point":"/dev/hugepages","mount_options":["rw","relatime"],"optional_fields":{"shared":27},"fs_type":"hugetlbfs","mount_source":"hugetlbfs","super_options":["rw"],"super_options_fields":{"pagesize":2}},{"mount_id":52,"parent_id":26,"maj":0,"min":20,"root":"/","mount_point":"/dev/mqueue","mount_options":["rw","nosuid","nodev","noexec","relatime"],"optional_fields":{"shared":28},"fs_type":"mqueue","mount_source":"mqueue","super_options":["rw"]},{"mount_id":53,"parent_id":24,"maj":0,"min":7,"root":"/","mount_point":"/sys/kernel/debug","mount_options":["rw","nosuid","nodev","noexec","relatime"],"optional_fields":{"shared":29},"fs_type":"debugfs","mount_source":"debugfs","super_options":["rw"]},{"mount_id":54,"parent_id":24,"maj":0,"min":11,"root":"/","mount_point":"/sys/kernel/tracing","mount_options":["rw","nosuid","nodev","noexec","relatime"],"optional_fields":{"shared":30},"fs_type":"tracefs","mount_source":"tracefs","super_options":["rw"]},{"mount_id":55,"parent_id":24,"maj":0,"min":47,"root":"/","mount_point":"/sys/fs/fuse/connections","mount_options":["rw","nosuid","nodev","noexec","relatime"],"optional_fields":{"shared":31},"fs_type":"fusectl","mount_source":"fusectl","super_options":["rw"]},{"mount_id":56,"parent_id":24,"maj":0,"min":21,"root":"/","mount_point":"/sys/kernel/config","mount_options":["rw","nosuid","nodev","noexec","relatime"],"optional_fields":{"shared":32},"fs_type":"configfs","mount_source":"configfs","super_options":["rw"]},{"mount_id":125,"parent_id":30,"maj":8,"min":2,"root":"/","mount_point":"/boot","mount_options":["rw","relatime"],"optional_fields":{"shared":67},"fs_type":"ext4","mount_source":"/dev/sda2","super_options":["rw"]},{"mount_id":131,"parent_id":30,"maj":7,"min":0,"root":"/","mount_point":"/snap/core18/2538","mount_options":["ro","nodev","relatime"],"optional_fields":{"shared":71},"fs_type":"squashfs","mount_source":"/dev/loop0","super_options":["ro"]},{"mount_id":134,"parent_id":30,"maj":7,"min":1,"root":"/","mount_point":"/snap/core18/2409","mount_options":["ro","nodev","relatime"],"optional_fields":{"shared":73},"fs_type":"squashfs","mount_source":"/dev/loop1","super_options":["ro"]},{"mount_id":137,"parent_id":30,"maj":7,"min":3,"root":"/","mount_point":"/snap/core20/1587","mount_options":["ro","nodev","relatime"],"optional_fields":{"shared":75},"fs_type":"squashfs","mount_source":"/dev/loop3","super_options":["ro"]},{"mount_id":140,"parent_id":30,"maj":7,"min":5,"root":"/","mount_point":"/snap/snapd/16292","mount_options":["ro","nodev","relatime"],"optional_fields":{"shared":77},"fs_type":"squashfs","mount_source":"/dev/loop5","super_options":["ro"]},{"mount_id":146,"parent_id":30,"maj":7,"min":7,"root":"/","mount_point":"/snap/lxd/23339","mount_options":["ro","nodev","relatime"],"optional_fields":{"shared":81},"fs_type":"squashfs","mount_source":"/dev/loop7","super_options":["ro"]},{"mount_id":149,"parent_id":30,"maj":7,"min":6,"root":"/","mount_point":"/snap/snapd/16010","mount_options":["ro","nodev","relatime"],"optional_fields":{"shared":83},"fs_type":"squashfs","mount_source":"/dev/loop6","super_options":["ro"]},{"mount_id":466,"parent_id":28,"maj":0,"min":25,"root":"/snapd/ns","mount_point":"/run/snapd/ns","mount_options":["rw","nosuid","nodev","noexec","relatime"],"optional_fields":{},"fs_type":"tmpfs","mount_source":"tmpfs","super_options":["rw"],"super_options_fields":{"size":399728,"mode":755}},{"mount_id":832,"parent_id":28,"maj":0,"min":52,"root":"/","mount_point":"/run/user/1000","mount_options":["rw","nosuid","nodev","relatime"],"optional_fields":{"shared":426},"fs_type":"tmpfs","mount_source":"tmpfs","super_options":["rw"],"super_options_fields":{"size":399724,"nr_inodes":99931,"mode":700,"uid":1000,"gid":1000}},{"mount_id":849,"parent_id":30,"maj":7,"min":8,"root":"/","mount_point":"/snap/core20/1611","mount_options":["ro","nodev","relatime"],"optional_fields":{"shared":434},"fs_type":"squashfs","mount_source":"/dev/loop8","super_options":["ro"]},{"mount_id":128,"parent_id":30,"maj":7,"min":2,"root":"/","mount_point":"/snap/lxd/23537","mount_options":["ro","nodev","relatime"],"optional_fields":{"shared":69},"fs_type":"squashfs","mount_source":"/dev/loop2","super_options":["ro"]},{"mount_id":481,"parent_id":466,"maj":0,"min":4,"root":"mnt:[4026532641]","mount_point":"/run/snapd/ns/lxd.mnt","mount_options":["rw"],"optional_fields":{},"fs_type":"nsfs","mount_source":"nsfs","super_options":["rw"]},{"mount_id":143,"parent_id":50,"maj":0,"min":53,"root":"/","mount_point":"/proc/sys/fs/binfmt_misc","mount_options":["rw","nosuid","nodev","noexec","relatime"],"optional_fields":{"shared":70},"fs_type":"binfmt_misc","mount_source":"binfmt_misc","super_options":["rw"]},{"mount_id":493,"parent_id":53,"maj":0,"min":11,"root":"/","mount_point":"/sys/kernel/debug/tracing","mount_options":["rw","nosuid","nodev","noexec","relatime"],"optional_fields":{"shared":265},"fs_type":"tracefs","mount_source":"tracefs","super_options":["rw"]}] diff --git a/tests/fixtures/linux-proc/pid_numa_maps.json b/tests/fixtures/linux-proc/pid_numa_maps.json new file mode 100644 index 00000000..400c781c --- /dev/null +++ b/tests/fixtures/linux-proc/pid_numa_maps.json @@ -0,0 +1 @@ +[{"address":"55a9e753c000","policy":"default","file":"/usr/lib/systemd/systemd","mapped":52,"mapmax":2,"active":16,"N0":52,"kernelpagesize_kB":4},{"address":"55a9e7570000","policy":"default","file":"/usr/lib/systemd/systemd","mapped":200,"mapmax":3,"active":120,"N0":200,"kernelpagesize_kB":4},{"address":"55a9e763a000","policy":"default","file":"/usr/lib/systemd/systemd","mapped":69,"mapmax":3,"N0":69,"kernelpagesize_kB":4},{"address":"55a9e7695000","policy":"default","file":"/usr/lib/systemd/systemd","anon":63,"dirty":63,"mapped":67,"mapmax":3,"active":63,"N0":67,"kernelpagesize_kB":4},{"address":"55a9e76da000","policy":"default","file":"/usr/lib/systemd/systemd","anon":1,"dirty":1,"N0":1,"kernelpagesize_kB":4},{"address":"55a9e8cd4000","policy":"default","anon":611,"dirty":611,"mapmax":2,"N0":611,"kernelpagesize_kB":4,"options":["heap"]},{"address":"7f53a4000000","policy":"default","anon":3,"dirty":3,"N0":3,"kernelpagesize_kB":4},{"address":"7f53a4021000","policy":"default"},{"address":"7f53ac000000","policy":"default","anon":3,"dirty":3,"N0":3,"kernelpagesize_kB":4},{"address":"7f53ac021000","policy":"default"},{"address":"7f53b2fb8000","policy":"default"},{"address":"7f53b2fb9000","policy":"default","anon":2,"dirty":2,"N0":2,"kernelpagesize_kB":4},{"address":"7f53b37b9000","policy":"default"},{"address":"7f53b37ba000","policy":"default","anon":8,"dirty":8,"mapmax":2,"N0":8,"kernelpagesize_kB":4},{"address":"7f53b3fc1000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libm-2.32.so","mapped":14,"mapmax":12,"N0":14,"kernelpagesize_kB":4},{"address":"7f53b3fd0000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libm-2.32.so","mapped":71,"mapmax":12,"N0":71,"kernelpagesize_kB":4},{"address":"7f53b4077000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libm-2.32.so"},{"address":"7f53b410e000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libm-2.32.so","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b410f000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libm-2.32.so","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b4110000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libudev.so.1.6.18","mapped":4,"mapmax":9,"N0":4,"kernelpagesize_kB":4},{"address":"7f53b4114000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libudev.so.1.6.18","mapped":16,"mapmax":9,"N0":16,"kernelpagesize_kB":4},{"address":"7f53b412d000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libudev.so.1.6.18"},{"address":"7f53b4136000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libudev.so.1.6.18","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b4137000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libudev.so.1.6.18","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b4138000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libunistring.so.2.1.0","mapped":16,"mapmax":7,"N0":16,"kernelpagesize_kB":4},{"address":"7f53b4148000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libunistring.so.2.1.0","mapped":15,"mapmax":7,"N0":15,"kernelpagesize_kB":4},{"address":"7f53b417e000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libunistring.so.2.1.0"},{"address":"7f53b42b5000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libunistring.so.2.1.0"},{"address":"7f53b42b6000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libunistring.so.2.1.0","anon":3,"dirty":3,"mapmax":2,"N0":3,"kernelpagesize_kB":4},{"address":"7f53b42b9000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libunistring.so.2.1.0","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b42ba000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libgpg-error.so.0.29.0","mapped":5,"mapmax":17,"N0":5,"kernelpagesize_kB":4},{"address":"7f53b42bf000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libgpg-error.so.0.29.0","mapped":20,"mapmax":17,"N0":20,"kernelpagesize_kB":4},{"address":"7f53b42d4000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libgpg-error.so.0.29.0","mapped":9,"mapmax":17,"N0":9,"kernelpagesize_kB":4},{"address":"7f53b42de000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libgpg-error.so.0.29.0"},{"address":"7f53b42df000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libgpg-error.so.0.29.0","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b42e0000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libgpg-error.so.0.29.0","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b42e1000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libjson-c.so.5.1.0","mapped":4,"mapmax":7,"N0":4,"kernelpagesize_kB":4},{"address":"7f53b42e5000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libjson-c.so.5.1.0","mapped":8,"mapmax":7,"N0":8,"kernelpagesize_kB":4},{"address":"7f53b42ee000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libjson-c.so.5.1.0"},{"address":"7f53b42f2000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libjson-c.so.5.1.0","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b42f3000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libjson-c.so.5.1.0","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b42f4000","policy":"default","anon":2,"dirty":2,"mapmax":2,"N0":2,"kernelpagesize_kB":4},{"address":"7f53b42f6000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libargon2.so.1","mapped":1,"mapmax":7,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b42f7000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libargon2.so.1","mapped":5,"mapmax":7,"N0":5,"kernelpagesize_kB":4},{"address":"7f53b42fc000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libargon2.so.1"},{"address":"7f53b42fe000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libargon2.so.1","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b42ff000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libargon2.so.1","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b4300000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libdevmapper.so.1.02.1","mapped":10,"mapmax":8,"N0":10,"kernelpagesize_kB":4},{"address":"7f53b430a000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libdevmapper.so.1.02.1","mapped":15,"mapmax":8,"N0":15,"kernelpagesize_kB":4},{"address":"7f53b4352000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libdevmapper.so.1.02.1","mapped":16,"mapmax":8,"N0":16,"kernelpagesize_kB":4},{"address":"7f53b4366000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libdevmapper.so.1.02.1","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b4367000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libdevmapper.so.1.02.1","anon":2,"dirty":2,"mapped":3,"mapmax":8,"N0":3,"kernelpagesize_kB":4},{"address":"7f53b436a000","policy":"default"},{"address":"7f53b436b000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libuuid.so.1.3.0","mapped":2,"mapmax":8,"N0":2,"kernelpagesize_kB":4},{"address":"7f53b436d000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libuuid.so.1.3.0","mapped":4,"mapmax":8,"N0":4,"kernelpagesize_kB":4},{"address":"7f53b4371000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libuuid.so.1.3.0"},{"address":"7f53b4372000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libuuid.so.1.3.0","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b4373000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libuuid.so.1.3.0","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b4374000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libcrypto.so.1.1","mapped":120,"mapmax":13,"N0":120,"kernelpagesize_kB":4},{"address":"7f53b43ec000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libcrypto.so.1.1","mapped":45,"mapmax":13,"N0":45,"kernelpagesize_kB":4},{"address":"7f53b458e000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libcrypto.so.1.1","mapped":16,"mapmax":13,"N0":16,"kernelpagesize_kB":4},{"address":"7f53b461e000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libcrypto.so.1.1"},{"address":"7f53b461f000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libcrypto.so.1.1","anon":44,"dirty":44,"mapmax":2,"N0":44,"kernelpagesize_kB":4},{"address":"7f53b464b000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libcrypto.so.1.1","anon":2,"dirty":2,"mapmax":2,"N0":2,"kernelpagesize_kB":4},{"address":"7f53b464d000","policy":"default","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b4651000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libcap-ng.so.0.0.0","mapped":2,"mapmax":17,"N0":2,"kernelpagesize_kB":4},{"address":"7f53b4653000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libcap-ng.so.0.0.0","mapped":3,"mapmax":18,"N0":3,"kernelpagesize_kB":4},{"address":"7f53b4656000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libcap-ng.so.0.0.0"},{"address":"7f53b4657000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libcap-ng.so.0.0.0","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b4658000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libcap-ng.so.0.0.0","anon":1,"dirty":1,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b4659000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.9.0","mapped":2,"mapmax":22,"N0":2,"kernelpagesize_kB":4},{"address":"7f53b465b000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.9.0","mapped":15,"mapmax":21,"N0":15,"kernelpagesize_kB":4},{"address":"7f53b46bf000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.9.0"},{"address":"7f53b46e7000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.9.0","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b46e8000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.9.0","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b46e9000","policy":"default","anon":2,"dirty":2,"mapmax":2,"N0":2,"kernelpagesize_kB":4},{"address":"7f53b46eb000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libpthread-2.32.so","mapped":7,"mapmax":26,"N0":7,"kernelpagesize_kB":4},{"address":"7f53b46f2000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libpthread-2.32.so","mapped":16,"mapmax":28,"N0":16,"kernelpagesize_kB":4},{"address":"7f53b4702000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libpthread-2.32.so","mapped":5,"mapmax":17,"N0":5,"kernelpagesize_kB":4},{"address":"7f53b4707000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libpthread-2.32.so","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b4708000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libpthread-2.32.so","anon":1,"dirty":1,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b4709000","policy":"default","anon":1,"dirty":1,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b470d000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libdl-2.32.so","mapped":1,"mapmax":28,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b470e000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libdl-2.32.so","mapped":2,"mapmax":27,"N0":2,"kernelpagesize_kB":4},{"address":"7f53b4710000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libdl-2.32.so"},{"address":"7f53b4711000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libdl-2.32.so","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b4712000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libdl-2.32.so","anon":1,"dirty":1,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b4713000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/liblzma.so.5.2.4","mapped":3,"mapmax":19,"N0":3,"kernelpagesize_kB":4},{"address":"7f53b4716000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/liblzma.so.5.2.4","mapped":15,"mapmax":19,"N0":15,"kernelpagesize_kB":4},{"address":"7f53b472e000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/liblzma.so.5.2.4"},{"address":"7f53b4739000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/liblzma.so.5.2.4"},{"address":"7f53b473a000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/liblzma.so.5.2.4","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b473b000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/liblzma.so.5.2.4","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b473c000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libzstd.so.1.4.5","mapped":4,"mapmax":17,"N0":4,"kernelpagesize_kB":4},{"address":"7f53b4740000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libzstd.so.1.4.5","mapped":16,"mapmax":17,"N0":16,"kernelpagesize_kB":4},{"address":"7f53b47f8000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libzstd.so.1.4.5"},{"address":"7f53b480a000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libzstd.so.1.4.5","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b480b000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libzstd.so.1.4.5","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b480c000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/liblz4.so.1.9.2","mapped":2,"mapmax":17,"N0":2,"kernelpagesize_kB":4},{"address":"7f53b480e000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/liblz4.so.1.9.2","mapped":16,"mapmax":17,"N0":16,"kernelpagesize_kB":4},{"address":"7f53b4829000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/liblz4.so.1.9.2"},{"address":"7f53b482c000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/liblz4.so.1.9.2","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b482d000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/liblz4.so.1.9.2","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b482e000","policy":"default","anon":2,"dirty":2,"mapmax":2,"N0":2,"kernelpagesize_kB":4},{"address":"7f53b4830000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libip4tc.so.2.0.0","mapped":2,"mapmax":7,"N0":2,"kernelpagesize_kB":4},{"address":"7f53b4832000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libip4tc.so.2.0.0","mapped":4,"mapmax":7,"N0":4,"kernelpagesize_kB":4},{"address":"7f53b4836000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libip4tc.so.2.0.0"},{"address":"7f53b4838000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libip4tc.so.2.0.0","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b4839000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libip4tc.so.2.0.0","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b483a000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libidn2.so.0.3.7","mapped":2,"mapmax":7,"N0":2,"kernelpagesize_kB":4},{"address":"7f53b483c000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libidn2.so.0.3.7","mapped":5,"mapmax":7,"N0":5,"kernelpagesize_kB":4},{"address":"7f53b4841000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libidn2.so.0.3.7"},{"address":"7f53b485a000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libidn2.so.0.3.7","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b485b000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libidn2.so.0.3.7","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b485c000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libgcrypt.so.20.2.5","mapped":12,"mapmax":17,"N0":12,"kernelpagesize_kB":4},{"address":"7f53b4868000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libgcrypt.so.20.2.5","mapped":15,"mapmax":17,"N0":15,"kernelpagesize_kB":4},{"address":"7f53b4936000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libgcrypt.so.20.2.5"},{"address":"7f53b4973000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libgcrypt.so.20.2.5","anon":2,"dirty":2,"mapmax":2,"N0":2,"kernelpagesize_kB":4},{"address":"7f53b4975000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libgcrypt.so.20.2.5","anon":5,"dirty":5,"mapmax":2,"N0":5,"kernelpagesize_kB":4},{"address":"7f53b497a000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libcryptsetup.so.12.6.0","mapped":7,"mapmax":7,"N0":7,"kernelpagesize_kB":4},{"address":"7f53b4981000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libcryptsetup.so.12.6.0","mapped":16,"mapmax":7,"N0":16,"kernelpagesize_kB":4},{"address":"7f53b49d2000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libcryptsetup.so.12.6.0"},{"address":"7f53b49ec000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libcryptsetup.so.12.6.0"},{"address":"7f53b49ed000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libcryptsetup.so.12.6.0","anon":2,"dirty":2,"mapmax":2,"N0":2,"kernelpagesize_kB":4},{"address":"7f53b49ef000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libcryptsetup.so.12.6.0","anon":2,"dirty":2,"mapmax":2,"N0":2,"kernelpagesize_kB":4},{"address":"7f53b49f1000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0","mapped":2,"mapmax":13,"N0":2,"kernelpagesize_kB":4},{"address":"7f53b49f3000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0","mapped":12,"mapmax":12,"N0":12,"kernelpagesize_kB":4},{"address":"7f53b4a08000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0"},{"address":"7f53b4a22000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b4a23000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b4a24000","policy":"default"},{"address":"7f53b4a2c000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libcap.so.2.43","mapped":3,"mapmax":11,"N0":3,"kernelpagesize_kB":4},{"address":"7f53b4a2f000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libcap.so.2.43","mapped":4,"mapmax":12,"N0":4,"kernelpagesize_kB":4},{"address":"7f53b4a33000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libcap.so.2.43"},{"address":"7f53b4a35000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libcap.so.2.43","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b4a36000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libcap.so.2.43","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b4a37000","policy":"default","anon":2,"dirty":2,"mapmax":2,"N0":2,"kernelpagesize_kB":4},{"address":"7f53b4a39000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libblkid.so.1.1.0","mapped":9,"mapmax":12,"N0":9,"kernelpagesize_kB":4},{"address":"7f53b4a42000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libblkid.so.1.1.0","mapped":15,"mapmax":12,"N0":15,"kernelpagesize_kB":4},{"address":"7f53b4a76000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libblkid.so.1.1.0"},{"address":"7f53b4a86000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libblkid.so.1.1.0"},{"address":"7f53b4a87000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libblkid.so.1.1.0","anon":4,"dirty":4,"mapmax":2,"N0":4,"kernelpagesize_kB":4},{"address":"7f53b4a8b000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libblkid.so.1.1.0","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b4a8c000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libacl.so.1.1.2253","mapped":2,"mapmax":8,"N0":2,"kernelpagesize_kB":4},{"address":"7f53b4a8e000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libacl.so.1.1.2253","mapped":5,"mapmax":8,"N0":5,"kernelpagesize_kB":4},{"address":"7f53b4a93000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libacl.so.1.1.2253"},{"address":"7f53b4a95000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libacl.so.1.1.2253","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b4a96000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libacl.so.1.1.2253","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b4a97000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libc-2.32.so","mapped":37,"mapmax":31,"N0":37,"kernelpagesize_kB":4},{"address":"7f53b4abd000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libc-2.32.so","mapped":314,"mapmax":32,"N0":314,"kernelpagesize_kB":4},{"address":"7f53b4c2a000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libc-2.32.so","mapped":36,"mapmax":32,"N0":36,"kernelpagesize_kB":4},{"address":"7f53b4c76000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libc-2.32.so"},{"address":"7f53b4c77000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libc-2.32.so","anon":3,"dirty":3,"mapmax":2,"N0":3,"kernelpagesize_kB":4},{"address":"7f53b4c7a000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libc-2.32.so","anon":3,"dirty":3,"N0":3,"kernelpagesize_kB":4},{"address":"7f53b4c7d000","policy":"default","anon":3,"dirty":3,"N0":3,"kernelpagesize_kB":4},{"address":"7f53b4c81000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libapparmor.so.1.7.0","mapped":3,"mapmax":3,"N0":3,"kernelpagesize_kB":4},{"address":"7f53b4c84000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libapparmor.so.1.7.0","mapped":9,"mapmax":3,"active":0,"N0":9,"kernelpagesize_kB":4},{"address":"7f53b4c8d000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libapparmor.so.1.7.0","mapped":6,"mapmax":2,"active":0,"N0":6,"kernelpagesize_kB":4},{"address":"7f53b4c94000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libapparmor.so.1.7.0","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b4c95000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libapparmor.so.1.7.0","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b4c96000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libkmod.so.2.3.5","mapped":3,"mapmax":8,"N0":3,"kernelpagesize_kB":4},{"address":"7f53b4c99000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libkmod.so.2.3.5","mapped":16,"mapmax":8,"N0":16,"kernelpagesize_kB":4},{"address":"7f53b4ca9000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libkmod.so.2.3.5","mapped":6,"mapmax":2,"N0":6,"kernelpagesize_kB":4},{"address":"7f53b4caf000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libkmod.so.2.3.5","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b4cb0000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libkmod.so.2.3.5","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b4cb1000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libaudit.so.1.0.0","mapped":3,"mapmax":16,"N0":3,"kernelpagesize_kB":4},{"address":"7f53b4cb4000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libaudit.so.1.0.0","mapped":8,"mapmax":16,"N0":8,"kernelpagesize_kB":4},{"address":"7f53b4cbc000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libaudit.so.1.0.0","mapped":15,"mapmax":6,"active":14,"N0":15,"kernelpagesize_kB":4},{"address":"7f53b4cd0000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libaudit.so.1.0.0"},{"address":"7f53b4cd1000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libaudit.so.1.0.0","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b4cd2000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libaudit.so.1.0.0","anon":1,"dirty":1,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b4cd3000","policy":"default","anon":3,"dirty":3,"mapmax":2,"N0":3,"kernelpagesize_kB":4},{"address":"7f53b4cdf000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libpam.so.0.84.2","mapped":3,"mapmax":15,"N0":3,"kernelpagesize_kB":4},{"address":"7f53b4ce2000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libpam.so.0.84.2","mapped":8,"mapmax":15,"N0":8,"kernelpagesize_kB":4},{"address":"7f53b4ceb000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libpam.so.0.84.2"},{"address":"7f53b4cef000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libpam.so.0.84.2","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b4cf0000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libpam.so.0.84.2","anon":1,"dirty":1,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b4cf1000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libmount.so.1.1.0","mapped":10,"mapmax":11,"N0":10,"kernelpagesize_kB":4},{"address":"7f53b4cfb000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libmount.so.1.1.0","mapped":52,"mapmax":11,"N0":52,"kernelpagesize_kB":4},{"address":"7f53b4d39000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libmount.so.1.1.0","mapped":15,"mapmax":2,"N0":15,"kernelpagesize_kB":4},{"address":"7f53b4d4c000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libmount.so.1.1.0","anon":2,"dirty":2,"mapmax":2,"N0":2,"kernelpagesize_kB":4},{"address":"7f53b4d4e000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libmount.so.1.1.0","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b4d4f000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libselinux.so.1","mapped":6,"mapmax":22,"N0":6,"kernelpagesize_kB":4},{"address":"7f53b4d55000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libselinux.so.1","mapped":25,"mapmax":22,"N0":25,"kernelpagesize_kB":4},{"address":"7f53b4d6e000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libselinux.so.1","mapped":8,"mapmax":21,"N0":8,"kernelpagesize_kB":4},{"address":"7f53b4d76000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libselinux.so.1","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b4d77000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libselinux.so.1","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b4d78000","policy":"default","anon":2,"dirty":2,"mapmax":2,"N0":2,"kernelpagesize_kB":4},{"address":"7f53b4d7a000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libseccomp.so.2.4.3","mapped":40,"mapmax":7,"N0":40,"kernelpagesize_kB":4},{"address":"7f53b4da2000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libseccomp.so.2.4.3","mapped":11,"mapmax":7,"N0":11,"kernelpagesize_kB":4},{"address":"7f53b4dad000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libseccomp.so.2.4.3","mapped":4,"N0":4,"kernelpagesize_kB":4},{"address":"7f53b4db1000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libseccomp.so.2.4.3","anon":27,"dirty":27,"mapmax":2,"N0":27,"kernelpagesize_kB":4},{"address":"7f53b4dcc000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/libseccomp.so.2.4.3","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b4dcd000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/librt-2.32.so","mapped":3,"mapmax":17,"N0":3,"kernelpagesize_kB":4},{"address":"7f53b4dd0000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/librt-2.32.so","mapped":4,"mapmax":17,"N0":4,"kernelpagesize_kB":4},{"address":"7f53b4dd4000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/librt-2.32.so"},{"address":"7f53b4dd6000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/librt-2.32.so","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b4dd7000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/librt-2.32.so","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b4ddf000","policy":"default","file":"/usr/lib/systemd/libsystemd-shared-246.so","mapped":74,"mapmax":7,"N0":74,"kernelpagesize_kB":4},{"address":"7f53b4e29000","policy":"default","file":"/usr/lib/systemd/libsystemd-shared-246.so","mapped":354,"mapmax":8,"active":348,"N0":354,"kernelpagesize_kB":4},{"address":"7f53b4fac000","policy":"default","file":"/usr/lib/systemd/libsystemd-shared-246.so","mapped":84,"mapmax":7,"N0":84,"kernelpagesize_kB":4},{"address":"7f53b503f000","policy":"default","file":"/usr/lib/systemd/libsystemd-shared-246.so"},{"address":"7f53b5040000","policy":"default","file":"/usr/lib/systemd/libsystemd-shared-246.so","anon":16,"dirty":16,"mapmax":2,"N0":16,"kernelpagesize_kB":4},{"address":"7f53b5050000","policy":"default","file":"/usr/lib/systemd/libsystemd-shared-246.so","anon":1,"dirty":1,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b5051000","policy":"default","anon":3,"dirty":3,"N0":3,"kernelpagesize_kB":4},{"address":"7f53b5054000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/ld-2.32.so","mapped":1,"mapmax":31,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b5055000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/ld-2.32.so","mapped":36,"mapmax":32,"N0":36,"kernelpagesize_kB":4},{"address":"7f53b5079000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/ld-2.32.so","mapped":8,"mapmax":31,"N0":8,"kernelpagesize_kB":4},{"address":"7f53b5082000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/ld-2.32.so","anon":1,"dirty":1,"mapmax":2,"N0":1,"kernelpagesize_kB":4},{"address":"7f53b5083000","policy":"default","file":"/usr/lib/x86_64-linux-gnu/ld-2.32.so","anon":2,"dirty":2,"N0":2,"kernelpagesize_kB":4},{"address":"7ffd1b23e000","policy":"default","anon":258,"dirty":258,"N0":258,"kernelpagesize_kB":4,"options":["stack"]},{"address":"7ffd1b3b1000","policy":"default"},{"address":"7ffd1b3b5000","policy":"default"}] diff --git a/tests/test_proc_pid_fdinfo.py b/tests/test_proc_pid_fdinfo.py new file mode 100644 index 00000000..ded342b2 --- /dev/null +++ b/tests/test_proc_pid_fdinfo.py @@ -0,0 +1,94 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_pid_fdinfo + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_pid_fdinfo': ( + 'fixtures/linux-proc/pid_fdinfo', + 'fixtures/linux-proc/pid_fdinfo.json'), + 'proc_pid_fdinfo_dma': ( + 'fixtures/linux-proc/pid_fdinfo_dma', + 'fixtures/linux-proc/pid_fdinfo_dma.json'), + 'proc_pid_fdinfo_epoll': ( + 'fixtures/linux-proc/pid_fdinfo_epoll', + 'fixtures/linux-proc/pid_fdinfo_epoll.json'), + 'proc_pid_fdinfo_fanotify': ( + 'fixtures/linux-proc/pid_fdinfo_fanotify', + 'fixtures/linux-proc/pid_fdinfo_fanotify.json'), + 'proc_pid_fdinfo_inotify': ( + 'fixtures/linux-proc/pid_fdinfo_inotify', + 'fixtures/linux-proc/pid_fdinfo_inotify.json'), + 'proc_pid_fdinfo_timerfd': ( + 'fixtures/linux-proc/pid_fdinfo_timerfd', + 'fixtures/linux-proc/pid_fdinfo_timerfd.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_pid_fdinfo_nodata(self): + """ + Test 'proc_pid_fdinfo' with no data + """ + self.assertEqual(jc.parsers.proc_pid_fdinfo.parse('', quiet=True), {}) + + def test_proc_pid_fdinfo(self): + """ + Test '/proc//fdinfo/' + """ + self.assertEqual(jc.parsers.proc_pid_fdinfo.parse(self.f_in['proc_pid_fdinfo'], quiet=True), + self.f_json['proc_pid_fdinfo']) + + def test_proc_pid_fdinfo_dma(self): + """ + Test '/proc//fdinfo/' dma file + """ + self.assertEqual(jc.parsers.proc_pid_fdinfo.parse(self.f_in['proc_pid_fdinfo_dma'], quiet=True), + self.f_json['proc_pid_fdinfo_dma']) + + def test_proc_pid_fdinfo_epoll(self): + """ + Test '/proc//fdinfo/' epoll file + """ + self.assertEqual(jc.parsers.proc_pid_fdinfo.parse(self.f_in['proc_pid_fdinfo_epoll'], quiet=True), + self.f_json['proc_pid_fdinfo_epoll']) + + def test_proc_pid_fdinfo_fanotify(self): + """ + Test '/proc//fdinfo/' fanotify file + """ + self.assertEqual(jc.parsers.proc_pid_fdinfo.parse(self.f_in['proc_pid_fdinfo_fanotify'], quiet=True), + self.f_json['proc_pid_fdinfo_fanotify']) + + def test_proc_pid_fdinfo_inotify(self): + """ + Test '/proc//fdinfo/' inotify file + """ + self.assertEqual(jc.parsers.proc_pid_fdinfo.parse(self.f_in['proc_pid_fdinfo_inotify'], quiet=True), + self.f_json['proc_pid_fdinfo_inotify']) + + def test_proc_pid_fdinfo_timerfd(self): + """ + Test '/proc//fdinfo/' timerfd file + """ + self.assertEqual(jc.parsers.proc_pid_fdinfo.parse(self.f_in['proc_pid_fdinfo_timerfd'], quiet=True), + self.f_json['proc_pid_fdinfo_timerfd']) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/test_proc_pid_io.py b/tests/test_proc_pid_io.py new file mode 100644 index 00000000..e7752687 --- /dev/null +++ b/tests/test_proc_pid_io.py @@ -0,0 +1,44 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_pid_io + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_pid_io': ( + 'fixtures/linux-proc/pid_io', + 'fixtures/linux-proc/pid_io.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_pid_io_nodata(self): + """ + Test 'proc_pid_io' with no data + """ + self.assertEqual(jc.parsers.proc_pid_io.parse('', quiet=True), {}) + + def test_proc_pid_io(self): + """ + Test '/proc//io' + """ + self.assertEqual(jc.parsers.proc_pid_io.parse(self.f_in['proc_pid_io'], quiet=True), + self.f_json['proc_pid_io']) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/test_proc_pid_maps.py b/tests/test_proc_pid_maps.py new file mode 100644 index 00000000..295254aa --- /dev/null +++ b/tests/test_proc_pid_maps.py @@ -0,0 +1,44 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_pid_maps + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_pid_maps': ( + 'fixtures/linux-proc/pid_maps', + 'fixtures/linux-proc/pid_maps.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_pid_maps_nodata(self): + """ + Test 'proc_pid_maps' with no data + """ + self.assertEqual(jc.parsers.proc_pid_maps.parse('', quiet=True), []) + + def test_proc_pid_maps(self): + """ + Test '/proc//maps' + """ + self.assertEqual(jc.parsers.proc_pid_maps.parse(self.f_in['proc_pid_maps'], quiet=True), + self.f_json['proc_pid_maps']) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/test_proc_pid_mountinfo.py b/tests/test_proc_pid_mountinfo.py new file mode 100644 index 00000000..4a58f4ef --- /dev/null +++ b/tests/test_proc_pid_mountinfo.py @@ -0,0 +1,44 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_pid_mountinfo + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_pid_mountinfo': ( + 'fixtures/linux-proc/pid_mountinfo', + 'fixtures/linux-proc/pid_mountinfo.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_pid_mountinfo_nodata(self): + """ + Test 'proc_pid_mountinfo' with no data + """ + self.assertEqual(jc.parsers.proc_pid_mountinfo.parse('', quiet=True), []) + + def test_proc_pid_mountinfo(self): + """ + Test '/proc//mountinfo' + """ + self.assertEqual(jc.parsers.proc_pid_mountinfo.parse(self.f_in['proc_pid_mountinfo'], quiet=True), + self.f_json['proc_pid_mountinfo']) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/test_proc_pid_numa_maps.py b/tests/test_proc_pid_numa_maps.py new file mode 100644 index 00000000..d73d19a1 --- /dev/null +++ b/tests/test_proc_pid_numa_maps.py @@ -0,0 +1,44 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_pid_numa_maps + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_pid_numa_maps': ( + 'fixtures/linux-proc/pid_numa_maps', + 'fixtures/linux-proc/pid_numa_maps.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_pid_numa_maps_nodata(self): + """ + Test 'proc_pid_numa_maps' with no data + """ + self.assertEqual(jc.parsers.proc_pid_numa_maps.parse('', quiet=True), []) + + def test_proc_pid_numa_maps(self): + """ + Test '/proc//numa_maps' + """ + self.assertEqual(jc.parsers.proc_pid_numa_maps.parse(self.f_in['proc_pid_numa_maps'], quiet=True), + self.f_json['proc_pid_numa_maps']) + + +if __name__ == '__main__': + unittest.main() From 5fc200851756489843f0789acee1f19a3936e7ec Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Sat, 24 Sep 2022 17:49:43 -0700 Subject: [PATCH 090/124] add proc_pid_smaps and proc_pid_stat parsers --- docs/parsers/proc_pid_smaps.md | 191 +++++++++++++ docs/parsers/proc_pid_stat.md | 226 +++++++++++++++ jc/lib.py | 2 + jc/parsers/proc_pid_smaps.py | 305 ++++++++++++++++++++ jc/parsers/proc_pid_stat.py | 343 +++++++++++++++++++++++ man/jc.1 | 12 +- tests/fixtures/linux-proc/pid_smaps.json | 1 + tests/test_proc_pid_smaps.py | 44 +++ 8 files changed, 1123 insertions(+), 1 deletion(-) create mode 100644 docs/parsers/proc_pid_smaps.md create mode 100644 docs/parsers/proc_pid_stat.md create mode 100644 jc/parsers/proc_pid_smaps.py create mode 100644 jc/parsers/proc_pid_stat.py create mode 100644 tests/fixtures/linux-proc/pid_smaps.json create mode 100644 tests/test_proc_pid_smaps.py diff --git a/docs/parsers/proc_pid_smaps.md b/docs/parsers/proc_pid_smaps.md new file mode 100644 index 00000000..974d82f9 --- /dev/null +++ b/docs/parsers/proc_pid_smaps.md @@ -0,0 +1,191 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_pid\_smaps + +jc - JSON Convert `/proc//smaps` file parser + +Usage (cli): + + $ cat /proc/1/smaps | jc --proc + +or + + $ jc /proc/1/smaps + +or + + $ cat /proc/1/smaps | jc --proc-pid-smaps + +Usage (module): + + import jc + result = jc.parse('proc', proc_pid_smaps_file) + +or + + import jc + result = jc.parse('proc_pid_smaps', proc_pid_smaps_file) + +Schema: + + [ + { + "start": string, + "end": string, + "perms": [ + string + ], + "offset": string, + "maj": string, + "min": string, + "inode": integer, + "pathname": string, + "Size": integer, + "KernelPageSize": integer, + "MMUPageSize": integer, + "Rss": integer, + "Pss": integer, + "Shared_Clean": integer, + "Shared_Dirty": integer, + "Private_Clean": integer, + "Private_Dirty": integer, + "Referenced": integer, + "Anonymous": integer, + "LazyFree": integer, + "AnonHugePages": integer, + "ShmemPmdMapped": integer, + "FilePmdMapped": integer, + "Shared_Hugetlb": integer, + "Private_Hugetlb": integer, + "Swap": integer, + "SwapPss": integer, + "Locked": integer, + "THPeligible": integer, + "VmFlags": [ + string + ], + "VmFlags_pretty": [ + string + ] + } + ] + +Examples: + + $ cat /proc/1/smaps | jc --proc -p + [ + { + "start": "55a9e753c000", + "end": "55a9e7570000", + "perms": [ + "read", + "private" + ], + "offset": "00000000", + "maj": "fd", + "min": "00", + "inode": 798126, + "pathname": "/usr/lib/systemd/systemd", + "Size": 208, + "KernelPageSize": 4, + "MMUPageSize": 4, + "Rss": 208, + "Pss": 104, + "Shared_Clean": 208, + "Shared_Dirty": 0, + "Private_Clean": 0, + "Private_Dirty": 0, + "Referenced": 208, + "Anonymous": 0, + "LazyFree": 0, + "AnonHugePages": 0, + "ShmemPmdMapped": 0, + "FilePmdMapped": 0, + "Shared_Hugetlb": 0, + "Private_Hugetlb": 0, + "Swap": 0, + "SwapPss": 0, + "Locked": 0, + "THPeligible": 0, + "VmFlags": [ + "rd", + "mr", + "mw", + "me", + "dw", + "sd" + ], + "VmFlags_pretty": [ + "readable", + "may read", + "may write", + "may execute", + "disabled write to the mapped file", + "soft-dirty flag" + ] + }, + ... + ] + + $ cat /proc/1/smaps | jc --proc-pid-smaps -p -r + [ + { + "start": "55a9e753c000", + "end": "55a9e7570000", + "perms": "r--p", + "offset": "00000000", + "maj": "fd", + "min": "00", + "inode": "798126", + "pathname": "/usr/lib/systemd/systemd", + "Size": "208 kB", + "KernelPageSize": "4 kB", + "MMUPageSize": "4 kB", + "Rss": "208 kB", + "Pss": "104 kB", + "Shared_Clean": "208 kB", + "Shared_Dirty": "0 kB", + "Private_Clean": "0 kB", + "Private_Dirty": "0 kB", + "Referenced": "208 kB", + "Anonymous": "0 kB", + "LazyFree": "0 kB", + "AnonHugePages": "0 kB", + "ShmemPmdMapped": "0 kB", + "FilePmdMapped": "0 kB", + "Shared_Hugetlb": "0 kB", + "Private_Hugetlb": "0 kB", + "Swap": "0 kB", + "SwapPss": "0 kB", + "Locked": "0 kB", + "THPeligible": "0", + "VmFlags": "rd mr mw me dw sd" + }, + ... + ] + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict] +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + List of Dictionaries. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/docs/parsers/proc_pid_stat.md b/docs/parsers/proc_pid_stat.md new file mode 100644 index 00000000..fd5f00d4 --- /dev/null +++ b/docs/parsers/proc_pid_stat.md @@ -0,0 +1,226 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_pid\_stat + +jc - JSON Convert `/proc//stat` file parser + +Usage (cli): + + $ cat /proc/1/stat | jc --proc + +or + + $ jc /proc/1/stat + +or + + $ cat /proc/1/stat | jc --proc-pid_stat + +Usage (module): + + import jc + result = jc.parse('proc', proc_pid_stat_file) + +or + + import jc + result = jc.parse('proc_pid_stat', proc_pid_stat_file) + +Schema: + + { + "pid": integer, + "comm": string, + "state": string, + "state_pretty": string, + "ppid": integer, + "pgrp": integer, + "session": integer, + "tty_nr": integer, + "tpg_id": integer, + "flags": integer, + "minflt": integer, + "cminflt": integer, + "majflt": integer, + "cmajflt": integer, + "utime": integer, + "stime": integer, + "cutime": integer, + "cstime": integer, + "priority": integer, + "nice": integer, + "num_threads": integer, + "itrealvalue": integer, + "starttime": integer, + "vsize": integer, + "rss": integer, + "rsslim": integer, + "startcode": integer, + "endcode": integer, + "startstack": integer, + "kstkeep": integer, + "kstkeip": integer, + "signal": integer, + "blocked": integer, + "sigignore": integer, + "sigcatch": integer, + "wchan": integer, + "nswap": integer, + "cnswap": integer, + "exit_signal": integer, + "processor": integer, + "rt_priority": integer, + "policy": integer, + "delayacct_blkio_ticks": integer, + "guest_time": integer, + "cguest_time": integer, + "start_data": integer, + "end_data": integer, + "start_brk": integer, + "arg_start": integer, + "arg_end": integer, + "env_start": integer, + "env_end": integer, + "exit_code": integer, + } + +Examples: + + $ cat /proc/1/stat | jc --proc -p + { + "pid": 1, + "comm": "systemd", + "state": "S", + "ppid": 0, + "pgrp": 1, + "session": 1, + "tty_nr": 0, + "tpg_id": -1, + "flags": 4194560, + "minflt": 23478, + "cminflt": 350218, + "majflt": 99, + "cmajflt": 472, + "utime": 107, + "stime": 461, + "cutime": 2672, + "cstime": 4402, + "priority": 20, + "nice": 0, + "num_threads": 1, + "itrealvalue": 0, + "starttime": 128, + "vsize": 174063616, + "rss": 3313, + "rsslim": 18446744073709551615, + "startcode": 94188219072512, + "endcode": 94188219899461, + "startstack": 140725059845296, + "kstkeep": 0, + "kstkeip": 0, + "signal": 0, + "blocked": 671173123, + "sigignore": 4096, + "sigcatch": 1260, + "wchan": 1, + "nswap": 0, + "cnswap": 0, + "exit_signal": 17, + "processor": 0, + "rt_priority": 0, + "policy": 0, + "delayacct_blkio_ticks": 18, + "guest_time": 0, + "cguest_time": 0, + "start_data": 94188220274448, + "end_data": 94188220555504, + "start_brk": 94188243599360, + "arg_start": 140725059845923, + "arg_end": 140725059845934, + "env_start": 140725059845934, + "env_end": 140725059846125, + "exit_code": 0, + "state_pretty": "Sleeping in an interruptible wait" + } + + $ cat /proc/1/stat | jc --proc -p -r + { + "pid": 1, + "comm": "systemd", + "state": "S", + "ppid": 0, + "pgrp": 1, + "session": 1, + "tty_nr": 0, + "tpg_id": -1, + "flags": 4194560, + "minflt": 23478, + "cminflt": 350218, + "majflt": 99, + "cmajflt": 472, + "utime": 107, + "stime": 461, + "cutime": 2672, + "cstime": 4402, + "priority": 20, + "nice": 0, + "num_threads": 1, + "itrealvalue": 0, + "starttime": 128, + "vsize": 174063616, + "rss": 3313, + "rsslim": 18446744073709551615, + "startcode": 94188219072512, + "endcode": 94188219899461, + "startstack": 140725059845296, + "kstkeep": 0, + "kstkeip": 0, + "signal": 0, + "blocked": 671173123, + "sigignore": 4096, + "sigcatch": 1260, + "wchan": 1, + "nswap": 0, + "cnswap": 0, + "exit_signal": 17, + "processor": 0, + "rt_priority": 0, + "policy": 0, + "delayacct_blkio_ticks": 18, + "guest_time": 0, + "cguest_time": 0, + "start_data": 94188220274448, + "end_data": 94188220555504, + "start_brk": 94188243599360, + "arg_start": 140725059845923, + "arg_end": 140725059845934, + "env_start": 140725059845934, + "env_end": 140725059846125, + "exit_code": 0 + } + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> Dict +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + Dictionary. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/lib.py b/jc/lib.py index da8bf7a9..b5ac480b 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -117,6 +117,8 @@ parsers = [ 'proc-pid-maps', 'proc-pid-mountinfo', 'proc-pid-numa-maps', + 'proc-pid-smaps', + 'proc-pid-stat', 'ps', 'route', 'rpm-qi', diff --git a/jc/parsers/proc_pid_smaps.py b/jc/parsers/proc_pid_smaps.py new file mode 100644 index 00000000..692feaf9 --- /dev/null +++ b/jc/parsers/proc_pid_smaps.py @@ -0,0 +1,305 @@ +"""jc - JSON Convert `/proc//smaps` file parser + +Usage (cli): + + $ cat /proc/1/smaps | jc --proc + +or + + $ jc /proc/1/smaps + +or + + $ cat /proc/1/smaps | jc --proc-pid-smaps + +Usage (module): + + import jc + result = jc.parse('proc', proc_pid_smaps_file) + +or + + import jc + result = jc.parse('proc_pid_smaps', proc_pid_smaps_file) + +Schema: + + [ + { + "start": string, + "end": string, + "perms": [ + string + ], + "offset": string, + "maj": string, + "min": string, + "inode": integer, + "pathname": string, + "Size": integer, + "KernelPageSize": integer, + "MMUPageSize": integer, + "Rss": integer, + "Pss": integer, + "Shared_Clean": integer, + "Shared_Dirty": integer, + "Private_Clean": integer, + "Private_Dirty": integer, + "Referenced": integer, + "Anonymous": integer, + "LazyFree": integer, + "AnonHugePages": integer, + "ShmemPmdMapped": integer, + "FilePmdMapped": integer, + "Shared_Hugetlb": integer, + "Private_Hugetlb": integer, + "Swap": integer, + "SwapPss": integer, + "Locked": integer, + "THPeligible": integer, + "VmFlags": [ + string + ], + "VmFlags_pretty": [ + string + ] + } + ] + +Examples: + + $ cat /proc/1/smaps | jc --proc -p + [ + { + "start": "55a9e753c000", + "end": "55a9e7570000", + "perms": [ + "read", + "private" + ], + "offset": "00000000", + "maj": "fd", + "min": "00", + "inode": 798126, + "pathname": "/usr/lib/systemd/systemd", + "Size": 208, + "KernelPageSize": 4, + "MMUPageSize": 4, + "Rss": 208, + "Pss": 104, + "Shared_Clean": 208, + "Shared_Dirty": 0, + "Private_Clean": 0, + "Private_Dirty": 0, + "Referenced": 208, + "Anonymous": 0, + "LazyFree": 0, + "AnonHugePages": 0, + "ShmemPmdMapped": 0, + "FilePmdMapped": 0, + "Shared_Hugetlb": 0, + "Private_Hugetlb": 0, + "Swap": 0, + "SwapPss": 0, + "Locked": 0, + "THPeligible": 0, + "VmFlags": [ + "rd", + "mr", + "mw", + "me", + "dw", + "sd" + ], + "VmFlags_pretty": [ + "readable", + "may read", + "may write", + "may execute", + "disabled write to the mapped file", + "soft-dirty flag" + ] + }, + ... + ] + + $ cat /proc/1/smaps | jc --proc-pid-smaps -p -r + [ + { + "start": "55a9e753c000", + "end": "55a9e7570000", + "perms": "r--p", + "offset": "00000000", + "maj": "fd", + "min": "00", + "inode": "798126", + "pathname": "/usr/lib/systemd/systemd", + "Size": "208 kB", + "KernelPageSize": "4 kB", + "MMUPageSize": "4 kB", + "Rss": "208 kB", + "Pss": "104 kB", + "Shared_Clean": "208 kB", + "Shared_Dirty": "0 kB", + "Private_Clean": "0 kB", + "Private_Dirty": "0 kB", + "Referenced": "208 kB", + "Anonymous": "0 kB", + "LazyFree": "0 kB", + "AnonHugePages": "0 kB", + "ShmemPmdMapped": "0 kB", + "FilePmdMapped": "0 kB", + "Shared_Hugetlb": "0 kB", + "Private_Hugetlb": "0 kB", + "Swap": "0 kB", + "SwapPss": "0 kB", + "Locked": "0 kB", + "THPeligible": "0", + "VmFlags": "rd mr mw me dw sd" + }, + ... + ] +""" +import re +from typing import List, Dict +import jc.utils + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc//smaps` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + hidden = True + + +__version__ = info.version + + +def _process(proc_data: List[Dict]) -> List[Dict]: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (List of Dictionaries) raw structured data to process + + Returns: + + List of Dictionaries. Structured to conform to the schema. + """ + non_int_list = {'start', 'end', 'perms', 'offset', 'maj', 'min', 'pathname', 'VmFlags'} + + perms_map = { + 'r': 'read', + 'w': 'write', + 'x': 'execute', + 's': 'shared', + 'p': 'private', + '-': None + } + + vmflags_map = { + 'rd': 'readable', + 'wr': 'writeable', + 'ex': 'executable', + 'sh': 'shared', + 'mr': 'may read', + 'mw': 'may write', + 'me': 'may execute', + 'ms': 'may share', + 'gd': 'stack segment growns down', + 'pf': 'pure PFN range', + 'dw': 'disabled write to the mapped file', + 'lo': 'pages are locked in memory', + 'io': 'memory mapped I/O area', + 'sr': 'sequential read advise provided', + 'rr': 'random read advise provided', + 'dc': 'do not copy area on fork', + 'de': 'do not expand area on remapping', + 'ac': 'area is accountable', + 'nr': 'swap space is not reserved for the area', + 'ht': 'area uses huge tlb pages', + 'ar': 'architecture specific flag', + 'dd': 'do not include area into core dump', + 'sd': 'soft-dirty flag', + 'mm': 'mixed map area', + 'hg': 'huge page advise flag', + 'nh': 'no-huge page advise flag', + 'mg': 'mergable advise flag' + } + + for entry in proc_data: + for key in entry: + if key not in non_int_list: + entry[key] = jc.utils.convert_to_int(entry[key]) + + if 'perms' in entry: + perms_list = [perms_map[x] for x in entry['perms'] if perms_map[x]] + entry['perms'] = perms_list + + if 'VmFlags' in entry: + entry['VmFlags'] = entry['VmFlags'].split() + entry['VmFlags_pretty'] = [vmflags_map[x] for x in entry['VmFlags']] + + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> List[Dict]: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + List of Dictionaries. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: List = [] + output_line: Dict = {} + + if jc.utils.has_data(data): + map_line = re.compile(r''' + ^(?P[0-9a-f]{12,16})- + (?P[0-9a-f]{12,16})\s + (?P[rwxsp\-]{4})\s + (?P[0-9a-f]{8})\s + (?P[0-9a-f]{2}): + (?P[0-9a-f]{2})\s + (?P\d+)\s+ + (?P.*)? + ''', re.VERBOSE + ) + + for line in filter(None, data.splitlines()): + + map_line_found = map_line.search(line) + + if map_line_found: + if output_line: + raw_output.append(output_line) + + output_line = map_line_found.groupdict() + continue + + key, val = line.split(':', maxsplit=1) + output_line[key] = val.strip() + continue + + if output_line: + raw_output.append(output_line) + + return raw_output if raw else _process(raw_output) diff --git a/jc/parsers/proc_pid_stat.py b/jc/parsers/proc_pid_stat.py new file mode 100644 index 00000000..9c9f055e --- /dev/null +++ b/jc/parsers/proc_pid_stat.py @@ -0,0 +1,343 @@ +"""jc - JSON Convert `/proc//stat` file parser + +Usage (cli): + + $ cat /proc/1/stat | jc --proc + +or + + $ jc /proc/1/stat + +or + + $ cat /proc/1/stat | jc --proc-pid_stat + +Usage (module): + + import jc + result = jc.parse('proc', proc_pid_stat_file) + +or + + import jc + result = jc.parse('proc_pid_stat', proc_pid_stat_file) + +Schema: + + { + "pid": integer, + "comm": string, + "state": string, + "state_pretty": string, + "ppid": integer, + "pgrp": integer, + "session": integer, + "tty_nr": integer, + "tpg_id": integer, + "flags": integer, + "minflt": integer, + "cminflt": integer, + "majflt": integer, + "cmajflt": integer, + "utime": integer, + "stime": integer, + "cutime": integer, + "cstime": integer, + "priority": integer, + "nice": integer, + "num_threads": integer, + "itrealvalue": integer, + "starttime": integer, + "vsize": integer, + "rss": integer, + "rsslim": integer, + "startcode": integer, + "endcode": integer, + "startstack": integer, + "kstkeep": integer, + "kstkeip": integer, + "signal": integer, + "blocked": integer, + "sigignore": integer, + "sigcatch": integer, + "wchan": integer, + "nswap": integer, + "cnswap": integer, + "exit_signal": integer, + "processor": integer, + "rt_priority": integer, + "policy": integer, + "delayacct_blkio_ticks": integer, + "guest_time": integer, + "cguest_time": integer, + "start_data": integer, + "end_data": integer, + "start_brk": integer, + "arg_start": integer, + "arg_end": integer, + "env_start": integer, + "env_end": integer, + "exit_code": integer, + } + +Examples: + + $ cat /proc/1/stat | jc --proc -p + { + "pid": 1, + "comm": "systemd", + "state": "S", + "ppid": 0, + "pgrp": 1, + "session": 1, + "tty_nr": 0, + "tpg_id": -1, + "flags": 4194560, + "minflt": 23478, + "cminflt": 350218, + "majflt": 99, + "cmajflt": 472, + "utime": 107, + "stime": 461, + "cutime": 2672, + "cstime": 4402, + "priority": 20, + "nice": 0, + "num_threads": 1, + "itrealvalue": 0, + "starttime": 128, + "vsize": 174063616, + "rss": 3313, + "rsslim": 18446744073709551615, + "startcode": 94188219072512, + "endcode": 94188219899461, + "startstack": 140725059845296, + "kstkeep": 0, + "kstkeip": 0, + "signal": 0, + "blocked": 671173123, + "sigignore": 4096, + "sigcatch": 1260, + "wchan": 1, + "nswap": 0, + "cnswap": 0, + "exit_signal": 17, + "processor": 0, + "rt_priority": 0, + "policy": 0, + "delayacct_blkio_ticks": 18, + "guest_time": 0, + "cguest_time": 0, + "start_data": 94188220274448, + "end_data": 94188220555504, + "start_brk": 94188243599360, + "arg_start": 140725059845923, + "arg_end": 140725059845934, + "env_start": 140725059845934, + "env_end": 140725059846125, + "exit_code": 0, + "state_pretty": "Sleeping in an interruptible wait" + } + + $ cat /proc/1/stat | jc --proc -p -r + { + "pid": 1, + "comm": "systemd", + "state": "S", + "ppid": 0, + "pgrp": 1, + "session": 1, + "tty_nr": 0, + "tpg_id": -1, + "flags": 4194560, + "minflt": 23478, + "cminflt": 350218, + "majflt": 99, + "cmajflt": 472, + "utime": 107, + "stime": 461, + "cutime": 2672, + "cstime": 4402, + "priority": 20, + "nice": 0, + "num_threads": 1, + "itrealvalue": 0, + "starttime": 128, + "vsize": 174063616, + "rss": 3313, + "rsslim": 18446744073709551615, + "startcode": 94188219072512, + "endcode": 94188219899461, + "startstack": 140725059845296, + "kstkeep": 0, + "kstkeip": 0, + "signal": 0, + "blocked": 671173123, + "sigignore": 4096, + "sigcatch": 1260, + "wchan": 1, + "nswap": 0, + "cnswap": 0, + "exit_signal": 17, + "processor": 0, + "rt_priority": 0, + "policy": 0, + "delayacct_blkio_ticks": 18, + "guest_time": 0, + "cguest_time": 0, + "start_data": 94188220274448, + "end_data": 94188220555504, + "start_brk": 94188243599360, + "arg_start": 140725059845923, + "arg_end": 140725059845934, + "env_start": 140725059845934, + "env_end": 140725059846125, + "exit_code": 0 + } +""" +from typing import Dict +import jc.utils + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc//stat` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + hidden = True + + +__version__ = info.version + + +def _process(proc_data: Dict) -> Dict: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (Dictionary) raw structured data to process + + Returns: + + Dictionary. Structured to conform to the schema. + """ + state_map = { + 'R': 'Running', + 'S': 'Sleeping in an interruptible wait', + 'D': 'Waiting in uninterruptible disk sleep', + 'Z': 'Zombie', + 'T': 'Stopped (on a signal) or trace stopped', + 't': 'Tracing stop', + 'W': 'Paging', + 'X': 'Dead', + 'x': 'Dead', + 'K': 'Wakekill', + 'W': 'Waking', + 'P': 'Parked', + } + + if 'state' in proc_data: + proc_data['state_pretty'] = state_map[proc_data['state']] + + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> Dict: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + Dictionary. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: Dict = {} + + if jc.utils.has_data(data): + + split_line = data.split() + raw_output = { + 'pid': int(split_line[0]), + 'comm': split_line[1].strip('()'), + 'state': split_line[2], + 'ppid': int(split_line[3]), + 'pgrp': int(split_line[4]), + 'session': int(split_line[5]), + 'tty_nr': int(split_line[6]), + 'tpg_id': int(split_line[7]), + 'flags': int(split_line[8]), + 'minflt': int(split_line[9]), + 'cminflt': int(split_line[10]), + 'majflt': int(split_line[11]), + 'cmajflt': int(split_line[12]), + 'utime': int(split_line[13]), + 'stime': int(split_line[14]), + 'cutime': int(split_line[15]), + 'cstime': int(split_line[16]), + 'priority': int(split_line[17]), + 'nice': int(split_line[18]), + 'num_threads': int(split_line[19]), + 'itrealvalue': int(split_line[20]), + 'starttime': int(split_line[21]), + 'vsize': int(split_line[22]), + 'rss': int(split_line[23]), + 'rsslim': int(split_line[24]), + 'startcode': int(split_line[25]), + 'endcode': int(split_line[26]), + 'startstack': int(split_line[27]), + 'kstkeep': int(split_line[28]), + 'kstkeip': int(split_line[29]), + 'signal': int(split_line[30]), + 'blocked': int(split_line[31]), + 'sigignore': int(split_line[32]), + 'sigcatch': int(split_line[33]), + 'wchan': int(split_line[34]), + 'nswap': int(split_line[35]), + 'cnswap': int(split_line[36]) + } + + if len(split_line) > 37: + raw_output['exit_signal'] = int(split_line[37]) + + if len(split_line) > 38: + raw_output['processor'] = int(split_line[38]) + + if len(split_line) > 39: + raw_output['rt_priority'] = int(split_line[39]) + raw_output['policy'] = int(split_line[40]) + + if len(split_line) > 41: + raw_output['delayacct_blkio_ticks'] = int(split_line[41]) + + if len(split_line) > 42: + raw_output['guest_time'] = int(split_line[42]) + raw_output['cguest_time'] = int(split_line[43]) + + if len(split_line) > 44: + raw_output['start_data'] = int(split_line[44]) + raw_output['end_data'] = int(split_line[45]) + raw_output['start_brk'] = int(split_line[46]) + + if len(split_line) > 47: + raw_output['arg_start'] = int(split_line[47]) + raw_output['arg_end'] = int(split_line[48]) + raw_output['env_start'] = int(split_line[49]) + raw_output['env_end'] = int(split_line[50]) + raw_output['exit_code'] = int(split_line[51]) + + return raw_output if raw else _process(raw_output) diff --git a/man/jc.1 b/man/jc.1 index 0888ea5b..fdccc75d 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -1,4 +1,4 @@ -.TH jc 1 2022-09-22 1.21.2 "JSON Convert" +.TH jc 1 2022-09-24 1.21.2 "JSON Convert" .SH NAME \fBjc\fP \- JSON Convert JSONifies the output of many CLI tools, file-types, and strings .SH SYNOPSIS @@ -570,6 +570,16 @@ PLIST file parser \fB--proc-pid-numa-maps\fP `/proc//numa_maps` file parser +.TP +.B +\fB--proc-pid-smaps\fP +`/proc//smaps` file parser + +.TP +.B +\fB--proc-pid-stat\fP +`/proc//stat` file parser + .TP .B \fB--ps\fP diff --git a/tests/fixtures/linux-proc/pid_smaps.json b/tests/fixtures/linux-proc/pid_smaps.json new file mode 100644 index 00000000..a0e42538 --- /dev/null +++ b/tests/fixtures/linux-proc/pid_smaps.json @@ -0,0 +1 @@ +[{"start":"55a9e753c000","end":"55a9e7570000","perms":["read","private"],"offset":"00000000","maj":"fd","min":"00","inode":798126,"pathname":"/usr/lib/systemd/systemd","Size":208,"KernelPageSize":4,"MMUPageSize":4,"Rss":208,"Pss":104,"Shared_Clean":208,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":208,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","dw","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","disabled write to the mapped file","soft-dirty flag"]},{"start":"55a9e7570000","end":"55a9e763a000","perms":["read","execute","private"],"offset":"00034000","maj":"fd","min":"00","inode":798126,"pathname":"/usr/lib/systemd/systemd","Size":808,"KernelPageSize":4,"MMUPageSize":4,"Rss":800,"Pss":378,"Shared_Clean":800,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":800,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","ex","mr","mw","me","dw","sd"],"VmFlags_pretty":["readable","executable","may read","may write","may execute","disabled write to the mapped file","soft-dirty flag"]},{"start":"55a9e763a000","end":"55a9e7694000","perms":["read","private"],"offset":"000fe000","maj":"fd","min":"00","inode":798126,"pathname":"/usr/lib/systemd/systemd","Size":360,"KernelPageSize":4,"MMUPageSize":4,"Rss":276,"Pss":127,"Shared_Clean":276,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":276,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","dw","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","disabled write to the mapped file","soft-dirty flag"]},{"start":"55a9e7695000","end":"55a9e76da000","perms":["read","private"],"offset":"00158000","maj":"fd","min":"00","inode":798126,"pathname":"/usr/lib/systemd/systemd","Size":276,"KernelPageSize":4,"MMUPageSize":4,"Rss":268,"Pss":131,"Shared_Clean":16,"Shared_Dirty":252,"Private_Clean":0,"Private_Dirty":0,"Referenced":268,"Anonymous":252,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","dw","ac","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","disabled write to the mapped file","area is accountable","soft-dirty flag"]},{"start":"55a9e76da000","end":"55a9e76db000","perms":["read","write","private"],"offset":"0019d000","maj":"fd","min":"00","inode":798126,"pathname":"/usr/lib/systemd/systemd","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":4,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":4,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","dw","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","disabled write to the mapped file","area is accountable","soft-dirty flag"]},{"start":"55a9e8cd4000","end":"55a9e8f68000","perms":["read","write","private"],"offset":"00000000","maj":"00","min":"00","inode":0,"pathname":"[heap]","Size":2640,"KernelPageSize":4,"MMUPageSize":4,"Rss":2444,"Pss":2414,"Shared_Clean":0,"Shared_Dirty":60,"Private_Clean":0,"Private_Dirty":2384,"Referenced":2444,"Anonymous":2444,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53a4000000","end":"7f53a4021000","perms":["read","write","private"],"offset":"00000000","maj":"00","min":"00","inode":0,"pathname":"","Size":132,"KernelPageSize":4,"MMUPageSize":4,"Rss":12,"Pss":12,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":12,"Referenced":12,"Anonymous":12,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","nr","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","swap space is not reserved for the area","soft-dirty flag"]},{"start":"7f53a4021000","end":"7f53a8000000","perms":["private"],"offset":"00000000","maj":"00","min":"00","inode":0,"pathname":"","Size":65404,"KernelPageSize":4,"MMUPageSize":4,"Rss":0,"Pss":0,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":0,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["mr","mw","me","nr","sd"],"VmFlags_pretty":["may read","may write","may execute","swap space is not reserved for the area","soft-dirty flag"]},{"start":"7f53ac000000","end":"7f53ac021000","perms":["read","write","private"],"offset":"00000000","maj":"00","min":"00","inode":0,"pathname":"","Size":132,"KernelPageSize":4,"MMUPageSize":4,"Rss":12,"Pss":12,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":12,"Referenced":12,"Anonymous":12,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","nr","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","swap space is not reserved for the area","soft-dirty flag"]},{"start":"7f53ac021000","end":"7f53b0000000","perms":["private"],"offset":"00000000","maj":"00","min":"00","inode":0,"pathname":"","Size":65404,"KernelPageSize":4,"MMUPageSize":4,"Rss":0,"Pss":0,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":0,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["mr","mw","me","nr","sd"],"VmFlags_pretty":["may read","may write","may execute","swap space is not reserved for the area","soft-dirty flag"]},{"start":"7f53b2fb8000","end":"7f53b2fb9000","perms":["private"],"offset":"00000000","maj":"00","min":"00","inode":0,"pathname":"","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":0,"Pss":0,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":0,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["mr","mw","me","sd"],"VmFlags_pretty":["may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b2fb9000","end":"7f53b37b9000","perms":["read","write","private"],"offset":"00000000","maj":"00","min":"00","inode":0,"pathname":"","Size":8192,"KernelPageSize":4,"MMUPageSize":4,"Rss":8,"Pss":8,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":8,"Referenced":8,"Anonymous":8,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b37b9000","end":"7f53b37ba000","perms":["private"],"offset":"00000000","maj":"00","min":"00","inode":0,"pathname":"","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":0,"Pss":0,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":0,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["mr","mw","me","sd"],"VmFlags_pretty":["may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b37ba000","end":"7f53b3fc1000","perms":["read","write","private"],"offset":"00000000","maj":"00","min":"00","inode":0,"pathname":"","Size":8220,"KernelPageSize":4,"MMUPageSize":4,"Rss":32,"Pss":26,"Shared_Clean":0,"Shared_Dirty":12,"Private_Clean":0,"Private_Dirty":20,"Referenced":32,"Anonymous":32,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b3fc1000","end":"7f53b3fd0000","perms":["read","private"],"offset":"00000000","maj":"fd","min":"00","inode":793156,"pathname":"/usr/lib/x86_64-linux-gnu/libm-2.32.so","Size":60,"KernelPageSize":4,"MMUPageSize":4,"Rss":56,"Pss":4,"Shared_Clean":56,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":56,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b3fd0000","end":"7f53b4077000","perms":["read","execute","private"],"offset":"0000f000","maj":"fd","min":"00","inode":793156,"pathname":"/usr/lib/x86_64-linux-gnu/libm-2.32.so","Size":668,"KernelPageSize":4,"MMUPageSize":4,"Rss":284,"Pss":23,"Shared_Clean":284,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":284,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","ex","mr","mw","me","sd"],"VmFlags_pretty":["readable","executable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4077000","end":"7f53b410e000","perms":["read","private"],"offset":"000b6000","maj":"fd","min":"00","inode":793156,"pathname":"/usr/lib/x86_64-linux-gnu/libm-2.32.so","Size":604,"KernelPageSize":4,"MMUPageSize":4,"Rss":0,"Pss":0,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":0,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b410e000","end":"7f53b410f000","perms":["read","private"],"offset":"0014c000","maj":"fd","min":"00","inode":793156,"pathname":"/usr/lib/x86_64-linux-gnu/libm-2.32.so","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b410f000","end":"7f53b4110000","perms":["read","write","private"],"offset":"0014d000","maj":"fd","min":"00","inode":793156,"pathname":"/usr/lib/x86_64-linux-gnu/libm-2.32.so","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4110000","end":"7f53b4114000","perms":["read","private"],"offset":"00000000","maj":"fd","min":"00","inode":788923,"pathname":"/usr/lib/x86_64-linux-gnu/libudev.so.1.6.18","Size":16,"KernelPageSize":4,"MMUPageSize":4,"Rss":16,"Pss":1,"Shared_Clean":16,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":16,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4114000","end":"7f53b412d000","perms":["read","execute","private"],"offset":"00004000","maj":"fd","min":"00","inode":788923,"pathname":"/usr/lib/x86_64-linux-gnu/libudev.so.1.6.18","Size":100,"KernelPageSize":4,"MMUPageSize":4,"Rss":64,"Pss":7,"Shared_Clean":64,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":64,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","ex","mr","mw","me","sd"],"VmFlags_pretty":["readable","executable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b412d000","end":"7f53b4136000","perms":["read","private"],"offset":"0001d000","maj":"fd","min":"00","inode":788923,"pathname":"/usr/lib/x86_64-linux-gnu/libudev.so.1.6.18","Size":36,"KernelPageSize":4,"MMUPageSize":4,"Rss":0,"Pss":0,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":0,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4136000","end":"7f53b4137000","perms":["read","private"],"offset":"00025000","maj":"fd","min":"00","inode":788923,"pathname":"/usr/lib/x86_64-linux-gnu/libudev.so.1.6.18","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4137000","end":"7f53b4138000","perms":["read","write","private"],"offset":"00026000","maj":"fd","min":"00","inode":788923,"pathname":"/usr/lib/x86_64-linux-gnu/libudev.so.1.6.18","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4138000","end":"7f53b4148000","perms":["read","private"],"offset":"00000000","maj":"fd","min":"00","inode":793263,"pathname":"/usr/lib/x86_64-linux-gnu/libunistring.so.2.1.0","Size":64,"KernelPageSize":4,"MMUPageSize":4,"Rss":64,"Pss":9,"Shared_Clean":64,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":64,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4148000","end":"7f53b417e000","perms":["read","execute","private"],"offset":"00010000","maj":"fd","min":"00","inode":793263,"pathname":"/usr/lib/x86_64-linux-gnu/libunistring.so.2.1.0","Size":216,"KernelPageSize":4,"MMUPageSize":4,"Rss":60,"Pss":8,"Shared_Clean":60,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":60,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","ex","mr","mw","me","sd"],"VmFlags_pretty":["readable","executable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b417e000","end":"7f53b42b5000","perms":["read","private"],"offset":"00046000","maj":"fd","min":"00","inode":793263,"pathname":"/usr/lib/x86_64-linux-gnu/libunistring.so.2.1.0","Size":1244,"KernelPageSize":4,"MMUPageSize":4,"Rss":0,"Pss":0,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":0,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b42b5000","end":"7f53b42b6000","perms":["private"],"offset":"0017d000","maj":"fd","min":"00","inode":793263,"pathname":"/usr/lib/x86_64-linux-gnu/libunistring.so.2.1.0","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":0,"Pss":0,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":0,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["mr","mw","me","sd"],"VmFlags_pretty":["may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b42b6000","end":"7f53b42b9000","perms":["read","private"],"offset":"0017d000","maj":"fd","min":"00","inode":793263,"pathname":"/usr/lib/x86_64-linux-gnu/libunistring.so.2.1.0","Size":12,"KernelPageSize":4,"MMUPageSize":4,"Rss":12,"Pss":6,"Shared_Clean":0,"Shared_Dirty":12,"Private_Clean":0,"Private_Dirty":0,"Referenced":12,"Anonymous":12,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b42b9000","end":"7f53b42ba000","perms":["read","write","private"],"offset":"00180000","maj":"fd","min":"00","inode":793263,"pathname":"/usr/lib/x86_64-linux-gnu/libunistring.so.2.1.0","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b42ba000","end":"7f53b42bf000","perms":["read","private"],"offset":"00000000","maj":"fd","min":"00","inode":793102,"pathname":"/usr/lib/x86_64-linux-gnu/libgpg-error.so.0.29.0","Size":20,"KernelPageSize":4,"MMUPageSize":4,"Rss":20,"Pss":1,"Shared_Clean":20,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":20,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b42bf000","end":"7f53b42d4000","perms":["read","execute","private"],"offset":"00005000","maj":"fd","min":"00","inode":793102,"pathname":"/usr/lib/x86_64-linux-gnu/libgpg-error.so.0.29.0","Size":84,"KernelPageSize":4,"MMUPageSize":4,"Rss":80,"Pss":4,"Shared_Clean":80,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":80,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","ex","mr","mw","me","sd"],"VmFlags_pretty":["readable","executable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b42d4000","end":"7f53b42de000","perms":["read","private"],"offset":"0001a000","maj":"fd","min":"00","inode":793102,"pathname":"/usr/lib/x86_64-linux-gnu/libgpg-error.so.0.29.0","Size":40,"KernelPageSize":4,"MMUPageSize":4,"Rss":36,"Pss":2,"Shared_Clean":36,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":36,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b42de000","end":"7f53b42df000","perms":["private"],"offset":"00024000","maj":"fd","min":"00","inode":793102,"pathname":"/usr/lib/x86_64-linux-gnu/libgpg-error.so.0.29.0","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":0,"Pss":0,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":0,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["mr","mw","me","sd"],"VmFlags_pretty":["may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b42df000","end":"7f53b42e0000","perms":["read","private"],"offset":"00024000","maj":"fd","min":"00","inode":793102,"pathname":"/usr/lib/x86_64-linux-gnu/libgpg-error.so.0.29.0","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b42e0000","end":"7f53b42e1000","perms":["read","write","private"],"offset":"00025000","maj":"fd","min":"00","inode":793102,"pathname":"/usr/lib/x86_64-linux-gnu/libgpg-error.so.0.29.0","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b42e1000","end":"7f53b42e5000","perms":["read","private"],"offset":"00000000","maj":"fd","min":"00","inode":793139,"pathname":"/usr/lib/x86_64-linux-gnu/libjson-c.so.5.1.0","Size":16,"KernelPageSize":4,"MMUPageSize":4,"Rss":16,"Pss":2,"Shared_Clean":16,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":16,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b42e5000","end":"7f53b42ee000","perms":["read","execute","private"],"offset":"00004000","maj":"fd","min":"00","inode":793139,"pathname":"/usr/lib/x86_64-linux-gnu/libjson-c.so.5.1.0","Size":36,"KernelPageSize":4,"MMUPageSize":4,"Rss":32,"Pss":4,"Shared_Clean":32,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":32,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","ex","mr","mw","me","sd"],"VmFlags_pretty":["readable","executable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b42ee000","end":"7f53b42f2000","perms":["read","private"],"offset":"0000d000","maj":"fd","min":"00","inode":793139,"pathname":"/usr/lib/x86_64-linux-gnu/libjson-c.so.5.1.0","Size":16,"KernelPageSize":4,"MMUPageSize":4,"Rss":0,"Pss":0,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":0,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b42f2000","end":"7f53b42f3000","perms":["read","private"],"offset":"00010000","maj":"fd","min":"00","inode":793139,"pathname":"/usr/lib/x86_64-linux-gnu/libjson-c.so.5.1.0","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b42f3000","end":"7f53b42f4000","perms":["read","write","private"],"offset":"00011000","maj":"fd","min":"00","inode":793139,"pathname":"/usr/lib/x86_64-linux-gnu/libjson-c.so.5.1.0","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b42f4000","end":"7f53b42f6000","perms":["read","write","private"],"offset":"00000000","maj":"00","min":"00","inode":0,"pathname":"","Size":8,"KernelPageSize":4,"MMUPageSize":4,"Rss":8,"Pss":6,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":4,"Referenced":8,"Anonymous":8,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b42f6000","end":"7f53b42f7000","perms":["read","private"],"offset":"00000000","maj":"fd","min":"00","inode":793030,"pathname":"/usr/lib/x86_64-linux-gnu/libargon2.so.1","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":0,"Shared_Clean":4,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b42f7000","end":"7f53b42fc000","perms":["read","execute","private"],"offset":"00001000","maj":"fd","min":"00","inode":793030,"pathname":"/usr/lib/x86_64-linux-gnu/libargon2.so.1","Size":20,"KernelPageSize":4,"MMUPageSize":4,"Rss":20,"Pss":2,"Shared_Clean":20,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":20,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","ex","mr","mw","me","sd"],"VmFlags_pretty":["readable","executable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b42fc000","end":"7f53b42fe000","perms":["read","private"],"offset":"00006000","maj":"fd","min":"00","inode":793030,"pathname":"/usr/lib/x86_64-linux-gnu/libargon2.so.1","Size":8,"KernelPageSize":4,"MMUPageSize":4,"Rss":0,"Pss":0,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":0,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b42fe000","end":"7f53b42ff000","perms":["read","private"],"offset":"00007000","maj":"fd","min":"00","inode":793030,"pathname":"/usr/lib/x86_64-linux-gnu/libargon2.so.1","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b42ff000","end":"7f53b4300000","perms":["read","write","private"],"offset":"00008000","maj":"fd","min":"00","inode":793030,"pathname":"/usr/lib/x86_64-linux-gnu/libargon2.so.1","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4300000","end":"7f53b430a000","perms":["read","private"],"offset":"00000000","maj":"fd","min":"00","inode":793061,"pathname":"/usr/lib/x86_64-linux-gnu/libdevmapper.so.1.02.1","Size":40,"KernelPageSize":4,"MMUPageSize":4,"Rss":40,"Pss":5,"Shared_Clean":40,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":40,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b430a000","end":"7f53b4352000","perms":["read","execute","private"],"offset":"0000a000","maj":"fd","min":"00","inode":793061,"pathname":"/usr/lib/x86_64-linux-gnu/libdevmapper.so.1.02.1","Size":288,"KernelPageSize":4,"MMUPageSize":4,"Rss":60,"Pss":7,"Shared_Clean":60,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":60,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","ex","mr","mw","me","sd"],"VmFlags_pretty":["readable","executable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4352000","end":"7f53b4366000","perms":["read","private"],"offset":"00052000","maj":"fd","min":"00","inode":793061,"pathname":"/usr/lib/x86_64-linux-gnu/libdevmapper.so.1.02.1","Size":80,"KernelPageSize":4,"MMUPageSize":4,"Rss":64,"Pss":8,"Shared_Clean":64,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":64,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4366000","end":"7f53b4367000","perms":["read","private"],"offset":"00065000","maj":"fd","min":"00","inode":793061,"pathname":"/usr/lib/x86_64-linux-gnu/libdevmapper.so.1.02.1","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4367000","end":"7f53b436a000","perms":["read","write","private"],"offset":"00066000","maj":"fd","min":"00","inode":793061,"pathname":"/usr/lib/x86_64-linux-gnu/libdevmapper.so.1.02.1","Size":12,"KernelPageSize":4,"MMUPageSize":4,"Rss":12,"Pss":4,"Shared_Clean":4,"Shared_Dirty":8,"Private_Clean":0,"Private_Dirty":0,"Referenced":12,"Anonymous":8,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b436a000","end":"7f53b436b000","perms":["read","write","private"],"offset":"00000000","maj":"00","min":"00","inode":0,"pathname":"","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":0,"Pss":0,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":0,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b436b000","end":"7f53b436d000","perms":["read","private"],"offset":"00000000","maj":"fd","min":"00","inode":793279,"pathname":"/usr/lib/x86_64-linux-gnu/libuuid.so.1.3.0","Size":8,"KernelPageSize":4,"MMUPageSize":4,"Rss":8,"Pss":1,"Shared_Clean":8,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":8,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b436d000","end":"7f53b4371000","perms":["read","execute","private"],"offset":"00002000","maj":"fd","min":"00","inode":793279,"pathname":"/usr/lib/x86_64-linux-gnu/libuuid.so.1.3.0","Size":16,"KernelPageSize":4,"MMUPageSize":4,"Rss":16,"Pss":2,"Shared_Clean":16,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":16,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","ex","mr","mw","me","sd"],"VmFlags_pretty":["readable","executable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4371000","end":"7f53b4372000","perms":["read","private"],"offset":"00006000","maj":"fd","min":"00","inode":793279,"pathname":"/usr/lib/x86_64-linux-gnu/libuuid.so.1.3.0","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":0,"Pss":0,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":0,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4372000","end":"7f53b4373000","perms":["read","private"],"offset":"00006000","maj":"fd","min":"00","inode":793279,"pathname":"/usr/lib/x86_64-linux-gnu/libuuid.so.1.3.0","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4373000","end":"7f53b4374000","perms":["read","write","private"],"offset":"00007000","maj":"fd","min":"00","inode":793279,"pathname":"/usr/lib/x86_64-linux-gnu/libuuid.so.1.3.0","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4374000","end":"7f53b43ec000","perms":["read","private"],"offset":"00000000","maj":"fd","min":"00","inode":790506,"pathname":"/usr/lib/x86_64-linux-gnu/libcrypto.so.1.1","Size":480,"KernelPageSize":4,"MMUPageSize":4,"Rss":480,"Pss":39,"Shared_Clean":480,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":480,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b43ec000","end":"7f53b458e000","perms":["read","execute","private"],"offset":"00078000","maj":"fd","min":"00","inode":790506,"pathname":"/usr/lib/x86_64-linux-gnu/libcrypto.so.1.1","Size":1672,"KernelPageSize":4,"MMUPageSize":4,"Rss":180,"Pss":20,"Shared_Clean":180,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":180,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","ex","mr","mw","me","sd"],"VmFlags_pretty":["readable","executable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b458e000","end":"7f53b461e000","perms":["read","private"],"offset":"0021a000","maj":"fd","min":"00","inode":790506,"pathname":"/usr/lib/x86_64-linux-gnu/libcrypto.so.1.1","Size":576,"KernelPageSize":4,"MMUPageSize":4,"Rss":64,"Pss":7,"Shared_Clean":64,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":64,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b461e000","end":"7f53b461f000","perms":["private"],"offset":"002aa000","maj":"fd","min":"00","inode":790506,"pathname":"/usr/lib/x86_64-linux-gnu/libcrypto.so.1.1","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":0,"Pss":0,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":0,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["mr","mw","me","sd"],"VmFlags_pretty":["may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b461f000","end":"7f53b464b000","perms":["read","private"],"offset":"002aa000","maj":"fd","min":"00","inode":790506,"pathname":"/usr/lib/x86_64-linux-gnu/libcrypto.so.1.1","Size":176,"KernelPageSize":4,"MMUPageSize":4,"Rss":176,"Pss":88,"Shared_Clean":0,"Shared_Dirty":176,"Private_Clean":0,"Private_Dirty":0,"Referenced":176,"Anonymous":176,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b464b000","end":"7f53b464d000","perms":["read","write","private"],"offset":"002d6000","maj":"fd","min":"00","inode":790506,"pathname":"/usr/lib/x86_64-linux-gnu/libcrypto.so.1.1","Size":8,"KernelPageSize":4,"MMUPageSize":4,"Rss":8,"Pss":4,"Shared_Clean":0,"Shared_Dirty":8,"Private_Clean":0,"Private_Dirty":0,"Referenced":8,"Anonymous":8,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b464d000","end":"7f53b4651000","perms":["read","write","private"],"offset":"00000000","maj":"00","min":"00","inode":0,"pathname":"","Size":16,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4651000","end":"7f53b4653000","perms":["read","private"],"offset":"00000000","maj":"fd","min":"00","inode":793046,"pathname":"/usr/lib/x86_64-linux-gnu/libcap-ng.so.0.0.0","Size":8,"KernelPageSize":4,"MMUPageSize":4,"Rss":8,"Pss":0,"Shared_Clean":8,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":8,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4653000","end":"7f53b4656000","perms":["read","execute","private"],"offset":"00002000","maj":"fd","min":"00","inode":793046,"pathname":"/usr/lib/x86_64-linux-gnu/libcap-ng.so.0.0.0","Size":12,"KernelPageSize":4,"MMUPageSize":4,"Rss":12,"Pss":0,"Shared_Clean":12,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":12,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","ex","mr","mw","me","sd"],"VmFlags_pretty":["readable","executable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4656000","end":"7f53b4657000","perms":["read","private"],"offset":"00005000","maj":"fd","min":"00","inode":793046,"pathname":"/usr/lib/x86_64-linux-gnu/libcap-ng.so.0.0.0","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":0,"Pss":0,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":0,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4657000","end":"7f53b4658000","perms":["read","private"],"offset":"00005000","maj":"fd","min":"00","inode":793046,"pathname":"/usr/lib/x86_64-linux-gnu/libcap-ng.so.0.0.0","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4658000","end":"7f53b4659000","perms":["read","write","private"],"offset":"00006000","maj":"fd","min":"00","inode":793046,"pathname":"/usr/lib/x86_64-linux-gnu/libcap-ng.so.0.0.0","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":4,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":4,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4659000","end":"7f53b465b000","perms":["read","private"],"offset":"00000000","maj":"fd","min":"00","inode":793203,"pathname":"/usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.9.0","Size":8,"KernelPageSize":4,"MMUPageSize":4,"Rss":8,"Pss":0,"Shared_Clean":8,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":8,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b465b000","end":"7f53b46bf000","perms":["read","execute","private"],"offset":"00002000","maj":"fd","min":"00","inode":793203,"pathname":"/usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.9.0","Size":400,"KernelPageSize":4,"MMUPageSize":4,"Rss":60,"Pss":2,"Shared_Clean":60,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":60,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","ex","mr","mw","me","sd"],"VmFlags_pretty":["readable","executable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b46bf000","end":"7f53b46e7000","perms":["read","private"],"offset":"00066000","maj":"fd","min":"00","inode":793203,"pathname":"/usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.9.0","Size":160,"KernelPageSize":4,"MMUPageSize":4,"Rss":0,"Pss":0,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":0,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b46e7000","end":"7f53b46e8000","perms":["read","private"],"offset":"0008d000","maj":"fd","min":"00","inode":793203,"pathname":"/usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.9.0","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b46e8000","end":"7f53b46e9000","perms":["read","write","private"],"offset":"0008e000","maj":"fd","min":"00","inode":793203,"pathname":"/usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.9.0","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b46e9000","end":"7f53b46eb000","perms":["read","write","private"],"offset":"00000000","maj":"00","min":"00","inode":0,"pathname":"","Size":8,"KernelPageSize":4,"MMUPageSize":4,"Rss":8,"Pss":6,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":4,"Referenced":8,"Anonymous":8,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b46eb000","end":"7f53b46f2000","perms":["read","private"],"offset":"00000000","maj":"fd","min":"00","inode":793218,"pathname":"/usr/lib/x86_64-linux-gnu/libpthread-2.32.so","Size":28,"KernelPageSize":4,"MMUPageSize":4,"Rss":28,"Pss":1,"Shared_Clean":28,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":28,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b46f2000","end":"7f53b4702000","perms":["read","execute","private"],"offset":"00007000","maj":"fd","min":"00","inode":793218,"pathname":"/usr/lib/x86_64-linux-gnu/libpthread-2.32.so","Size":64,"KernelPageSize":4,"MMUPageSize":4,"Rss":64,"Pss":2,"Shared_Clean":64,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":64,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","ex","mr","mw","me","sd"],"VmFlags_pretty":["readable","executable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4702000","end":"7f53b4707000","perms":["read","private"],"offset":"00017000","maj":"fd","min":"00","inode":793218,"pathname":"/usr/lib/x86_64-linux-gnu/libpthread-2.32.so","Size":20,"KernelPageSize":4,"MMUPageSize":4,"Rss":20,"Pss":1,"Shared_Clean":20,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":20,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4707000","end":"7f53b4708000","perms":["read","private"],"offset":"0001b000","maj":"fd","min":"00","inode":793218,"pathname":"/usr/lib/x86_64-linux-gnu/libpthread-2.32.so","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4708000","end":"7f53b4709000","perms":["read","write","private"],"offset":"0001c000","maj":"fd","min":"00","inode":793218,"pathname":"/usr/lib/x86_64-linux-gnu/libpthread-2.32.so","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":4,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":4,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4709000","end":"7f53b470d000","perms":["read","write","private"],"offset":"00000000","maj":"00","min":"00","inode":0,"pathname":"","Size":16,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":4,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":4,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b470d000","end":"7f53b470e000","perms":["read","private"],"offset":"00000000","maj":"fd","min":"00","inode":793062,"pathname":"/usr/lib/x86_64-linux-gnu/libdl-2.32.so","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":0,"Shared_Clean":4,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b470e000","end":"7f53b4710000","perms":["read","execute","private"],"offset":"00001000","maj":"fd","min":"00","inode":793062,"pathname":"/usr/lib/x86_64-linux-gnu/libdl-2.32.so","Size":8,"KernelPageSize":4,"MMUPageSize":4,"Rss":8,"Pss":0,"Shared_Clean":8,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":8,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","ex","mr","mw","me","sd"],"VmFlags_pretty":["readable","executable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4710000","end":"7f53b4711000","perms":["read","private"],"offset":"00003000","maj":"fd","min":"00","inode":793062,"pathname":"/usr/lib/x86_64-linux-gnu/libdl-2.32.so","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":0,"Pss":0,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":0,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4711000","end":"7f53b4712000","perms":["read","private"],"offset":"00003000","maj":"fd","min":"00","inode":793062,"pathname":"/usr/lib/x86_64-linux-gnu/libdl-2.32.so","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4712000","end":"7f53b4713000","perms":["read","write","private"],"offset":"00004000","maj":"fd","min":"00","inode":793062,"pathname":"/usr/lib/x86_64-linux-gnu/libdl-2.32.so","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":4,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":4,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4713000","end":"7f53b4716000","perms":["read","private"],"offset":"00000000","maj":"fd","min":"00","inode":793154,"pathname":"/usr/lib/x86_64-linux-gnu/liblzma.so.5.2.4","Size":12,"KernelPageSize":4,"MMUPageSize":4,"Rss":12,"Pss":0,"Shared_Clean":12,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":12,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4716000","end":"7f53b472e000","perms":["read","execute","private"],"offset":"00003000","maj":"fd","min":"00","inode":793154,"pathname":"/usr/lib/x86_64-linux-gnu/liblzma.so.5.2.4","Size":96,"KernelPageSize":4,"MMUPageSize":4,"Rss":60,"Pss":3,"Shared_Clean":60,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":60,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","ex","mr","mw","me","sd"],"VmFlags_pretty":["readable","executable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b472e000","end":"7f53b4739000","perms":["read","private"],"offset":"0001b000","maj":"fd","min":"00","inode":793154,"pathname":"/usr/lib/x86_64-linux-gnu/liblzma.so.5.2.4","Size":44,"KernelPageSize":4,"MMUPageSize":4,"Rss":0,"Pss":0,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":0,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4739000","end":"7f53b473a000","perms":["private"],"offset":"00026000","maj":"fd","min":"00","inode":793154,"pathname":"/usr/lib/x86_64-linux-gnu/liblzma.so.5.2.4","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":0,"Pss":0,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":0,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["mr","mw","me","sd"],"VmFlags_pretty":["may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b473a000","end":"7f53b473b000","perms":["read","private"],"offset":"00026000","maj":"fd","min":"00","inode":793154,"pathname":"/usr/lib/x86_64-linux-gnu/liblzma.so.5.2.4","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b473b000","end":"7f53b473c000","perms":["read","write","private"],"offset":"00027000","maj":"fd","min":"00","inode":793154,"pathname":"/usr/lib/x86_64-linux-gnu/liblzma.so.5.2.4","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b473c000","end":"7f53b4740000","perms":["read","private"],"offset":"00000000","maj":"fd","min":"00","inode":792974,"pathname":"/usr/lib/x86_64-linux-gnu/libzstd.so.1.4.5","Size":16,"KernelPageSize":4,"MMUPageSize":4,"Rss":16,"Pss":0,"Shared_Clean":16,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":16,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4740000","end":"7f53b47f8000","perms":["read","execute","private"],"offset":"00004000","maj":"fd","min":"00","inode":792974,"pathname":"/usr/lib/x86_64-linux-gnu/libzstd.so.1.4.5","Size":736,"KernelPageSize":4,"MMUPageSize":4,"Rss":64,"Pss":3,"Shared_Clean":64,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":64,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","ex","mr","mw","me","sd"],"VmFlags_pretty":["readable","executable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b47f8000","end":"7f53b480a000","perms":["read","private"],"offset":"000bc000","maj":"fd","min":"00","inode":792974,"pathname":"/usr/lib/x86_64-linux-gnu/libzstd.so.1.4.5","Size":72,"KernelPageSize":4,"MMUPageSize":4,"Rss":0,"Pss":0,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":0,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b480a000","end":"7f53b480b000","perms":["read","private"],"offset":"000cd000","maj":"fd","min":"00","inode":792974,"pathname":"/usr/lib/x86_64-linux-gnu/libzstd.so.1.4.5","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b480b000","end":"7f53b480c000","perms":["read","write","private"],"offset":"000ce000","maj":"fd","min":"00","inode":792974,"pathname":"/usr/lib/x86_64-linux-gnu/libzstd.so.1.4.5","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b480c000","end":"7f53b480e000","perms":["read","private"],"offset":"00000000","maj":"fd","min":"00","inode":787663,"pathname":"/usr/lib/x86_64-linux-gnu/liblz4.so.1.9.2","Size":8,"KernelPageSize":4,"MMUPageSize":4,"Rss":8,"Pss":0,"Shared_Clean":8,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":8,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b480e000","end":"7f53b4829000","perms":["read","execute","private"],"offset":"00002000","maj":"fd","min":"00","inode":787663,"pathname":"/usr/lib/x86_64-linux-gnu/liblz4.so.1.9.2","Size":108,"KernelPageSize":4,"MMUPageSize":4,"Rss":64,"Pss":3,"Shared_Clean":64,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":64,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","ex","mr","mw","me","sd"],"VmFlags_pretty":["readable","executable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4829000","end":"7f53b482c000","perms":["read","private"],"offset":"0001d000","maj":"fd","min":"00","inode":787663,"pathname":"/usr/lib/x86_64-linux-gnu/liblz4.so.1.9.2","Size":12,"KernelPageSize":4,"MMUPageSize":4,"Rss":0,"Pss":0,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":0,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b482c000","end":"7f53b482d000","perms":["read","private"],"offset":"0001f000","maj":"fd","min":"00","inode":787663,"pathname":"/usr/lib/x86_64-linux-gnu/liblz4.so.1.9.2","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b482d000","end":"7f53b482e000","perms":["read","write","private"],"offset":"00020000","maj":"fd","min":"00","inode":787663,"pathname":"/usr/lib/x86_64-linux-gnu/liblz4.so.1.9.2","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b482e000","end":"7f53b4830000","perms":["read","write","private"],"offset":"00000000","maj":"00","min":"00","inode":0,"pathname":"","Size":8,"KernelPageSize":4,"MMUPageSize":4,"Rss":8,"Pss":6,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":4,"Referenced":8,"Anonymous":8,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4830000","end":"7f53b4832000","perms":["read","private"],"offset":"00000000","maj":"fd","min":"00","inode":793129,"pathname":"/usr/lib/x86_64-linux-gnu/libip4tc.so.2.0.0","Size":8,"KernelPageSize":4,"MMUPageSize":4,"Rss":8,"Pss":1,"Shared_Clean":8,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":8,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4832000","end":"7f53b4836000","perms":["read","execute","private"],"offset":"00002000","maj":"fd","min":"00","inode":793129,"pathname":"/usr/lib/x86_64-linux-gnu/libip4tc.so.2.0.0","Size":16,"KernelPageSize":4,"MMUPageSize":4,"Rss":16,"Pss":2,"Shared_Clean":16,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":16,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","ex","mr","mw","me","sd"],"VmFlags_pretty":["readable","executable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4836000","end":"7f53b4838000","perms":["read","private"],"offset":"00006000","maj":"fd","min":"00","inode":793129,"pathname":"/usr/lib/x86_64-linux-gnu/libip4tc.so.2.0.0","Size":8,"KernelPageSize":4,"MMUPageSize":4,"Rss":0,"Pss":0,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":0,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4838000","end":"7f53b4839000","perms":["read","private"],"offset":"00007000","maj":"fd","min":"00","inode":793129,"pathname":"/usr/lib/x86_64-linux-gnu/libip4tc.so.2.0.0","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4839000","end":"7f53b483a000","perms":["read","write","private"],"offset":"00008000","maj":"fd","min":"00","inode":793129,"pathname":"/usr/lib/x86_64-linux-gnu/libip4tc.so.2.0.0","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b483a000","end":"7f53b483c000","perms":["read","private"],"offset":"00000000","maj":"fd","min":"00","inode":793128,"pathname":"/usr/lib/x86_64-linux-gnu/libidn2.so.0.3.7","Size":8,"KernelPageSize":4,"MMUPageSize":4,"Rss":8,"Pss":1,"Shared_Clean":8,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":8,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b483c000","end":"7f53b4841000","perms":["read","execute","private"],"offset":"00002000","maj":"fd","min":"00","inode":793128,"pathname":"/usr/lib/x86_64-linux-gnu/libidn2.so.0.3.7","Size":20,"KernelPageSize":4,"MMUPageSize":4,"Rss":20,"Pss":2,"Shared_Clean":20,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":20,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","ex","mr","mw","me","sd"],"VmFlags_pretty":["readable","executable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4841000","end":"7f53b485a000","perms":["read","private"],"offset":"00007000","maj":"fd","min":"00","inode":793128,"pathname":"/usr/lib/x86_64-linux-gnu/libidn2.so.0.3.7","Size":100,"KernelPageSize":4,"MMUPageSize":4,"Rss":0,"Pss":0,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":0,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b485a000","end":"7f53b485b000","perms":["read","private"],"offset":"0001f000","maj":"fd","min":"00","inode":793128,"pathname":"/usr/lib/x86_64-linux-gnu/libidn2.so.0.3.7","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b485b000","end":"7f53b485c000","perms":["read","write","private"],"offset":"00020000","maj":"fd","min":"00","inode":793128,"pathname":"/usr/lib/x86_64-linux-gnu/libidn2.so.0.3.7","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b485c000","end":"7f53b4868000","perms":["read","private"],"offset":"00000000","maj":"fd","min":"00","inode":793092,"pathname":"/usr/lib/x86_64-linux-gnu/libgcrypt.so.20.2.5","Size":48,"KernelPageSize":4,"MMUPageSize":4,"Rss":48,"Pss":2,"Shared_Clean":48,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":48,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4868000","end":"7f53b4936000","perms":["read","execute","private"],"offset":"0000c000","maj":"fd","min":"00","inode":793092,"pathname":"/usr/lib/x86_64-linux-gnu/libgcrypt.so.20.2.5","Size":824,"KernelPageSize":4,"MMUPageSize":4,"Rss":60,"Pss":3,"Shared_Clean":60,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":60,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","ex","mr","mw","me","sd"],"VmFlags_pretty":["readable","executable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4936000","end":"7f53b4973000","perms":["read","private"],"offset":"000da000","maj":"fd","min":"00","inode":793092,"pathname":"/usr/lib/x86_64-linux-gnu/libgcrypt.so.20.2.5","Size":244,"KernelPageSize":4,"MMUPageSize":4,"Rss":0,"Pss":0,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":0,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4973000","end":"7f53b4975000","perms":["read","private"],"offset":"00116000","maj":"fd","min":"00","inode":793092,"pathname":"/usr/lib/x86_64-linux-gnu/libgcrypt.so.20.2.5","Size":8,"KernelPageSize":4,"MMUPageSize":4,"Rss":8,"Pss":4,"Shared_Clean":0,"Shared_Dirty":8,"Private_Clean":0,"Private_Dirty":0,"Referenced":8,"Anonymous":8,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4975000","end":"7f53b497a000","perms":["read","write","private"],"offset":"00118000","maj":"fd","min":"00","inode":793092,"pathname":"/usr/lib/x86_64-linux-gnu/libgcrypt.so.20.2.5","Size":20,"KernelPageSize":4,"MMUPageSize":4,"Rss":20,"Pss":10,"Shared_Clean":0,"Shared_Dirty":20,"Private_Clean":0,"Private_Dirty":0,"Referenced":20,"Anonymous":20,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b497a000","end":"7f53b4981000","perms":["read","private"],"offset":"00000000","maj":"fd","min":"00","inode":793052,"pathname":"/usr/lib/x86_64-linux-gnu/libcryptsetup.so.12.6.0","Size":28,"KernelPageSize":4,"MMUPageSize":4,"Rss":28,"Pss":3,"Shared_Clean":28,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":28,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4981000","end":"7f53b49d2000","perms":["read","execute","private"],"offset":"00007000","maj":"fd","min":"00","inode":793052,"pathname":"/usr/lib/x86_64-linux-gnu/libcryptsetup.so.12.6.0","Size":324,"KernelPageSize":4,"MMUPageSize":4,"Rss":64,"Pss":9,"Shared_Clean":64,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":64,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","ex","mr","mw","me","sd"],"VmFlags_pretty":["readable","executable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b49d2000","end":"7f53b49ec000","perms":["read","private"],"offset":"00058000","maj":"fd","min":"00","inode":793052,"pathname":"/usr/lib/x86_64-linux-gnu/libcryptsetup.so.12.6.0","Size":104,"KernelPageSize":4,"MMUPageSize":4,"Rss":0,"Pss":0,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":0,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b49ec000","end":"7f53b49ed000","perms":["private"],"offset":"00072000","maj":"fd","min":"00","inode":793052,"pathname":"/usr/lib/x86_64-linux-gnu/libcryptsetup.so.12.6.0","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":0,"Pss":0,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":0,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["mr","mw","me","sd"],"VmFlags_pretty":["may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b49ed000","end":"7f53b49ef000","perms":["read","private"],"offset":"00072000","maj":"fd","min":"00","inode":793052,"pathname":"/usr/lib/x86_64-linux-gnu/libcryptsetup.so.12.6.0","Size":8,"KernelPageSize":4,"MMUPageSize":4,"Rss":8,"Pss":4,"Shared_Clean":0,"Shared_Dirty":8,"Private_Clean":0,"Private_Dirty":0,"Referenced":8,"Anonymous":8,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b49ef000","end":"7f53b49f1000","perms":["read","write","private"],"offset":"00074000","maj":"fd","min":"00","inode":793052,"pathname":"/usr/lib/x86_64-linux-gnu/libcryptsetup.so.12.6.0","Size":8,"KernelPageSize":4,"MMUPageSize":4,"Rss":8,"Pss":4,"Shared_Clean":0,"Shared_Dirty":8,"Private_Clean":0,"Private_Dirty":0,"Referenced":8,"Anonymous":8,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b49f1000","end":"7f53b49f3000","perms":["read","private"],"offset":"00000000","maj":"fd","min":"00","inode":793050,"pathname":"/usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0","Size":8,"KernelPageSize":4,"MMUPageSize":4,"Rss":8,"Pss":0,"Shared_Clean":8,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":8,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b49f3000","end":"7f53b4a08000","perms":["read","execute","private"],"offset":"00002000","maj":"fd","min":"00","inode":793050,"pathname":"/usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0","Size":84,"KernelPageSize":4,"MMUPageSize":4,"Rss":48,"Pss":3,"Shared_Clean":48,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":48,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","ex","mr","mw","me","sd"],"VmFlags_pretty":["readable","executable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4a08000","end":"7f53b4a22000","perms":["read","private"],"offset":"00017000","maj":"fd","min":"00","inode":793050,"pathname":"/usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0","Size":104,"KernelPageSize":4,"MMUPageSize":4,"Rss":0,"Pss":0,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":0,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4a22000","end":"7f53b4a23000","perms":["read","private"],"offset":"00030000","maj":"fd","min":"00","inode":793050,"pathname":"/usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4a23000","end":"7f53b4a24000","perms":["read","write","private"],"offset":"00031000","maj":"fd","min":"00","inode":793050,"pathname":"/usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4a24000","end":"7f53b4a2c000","perms":["read","write","private"],"offset":"00000000","maj":"00","min":"00","inode":0,"pathname":"","Size":32,"KernelPageSize":4,"MMUPageSize":4,"Rss":0,"Pss":0,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":0,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4a2c000","end":"7f53b4a2f000","perms":["read","private"],"offset":"00000000","maj":"fd","min":"00","inode":793047,"pathname":"/usr/lib/x86_64-linux-gnu/libcap.so.2.43","Size":12,"KernelPageSize":4,"MMUPageSize":4,"Rss":12,"Pss":1,"Shared_Clean":12,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":12,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4a2f000","end":"7f53b4a33000","perms":["read","execute","private"],"offset":"00003000","maj":"fd","min":"00","inode":793047,"pathname":"/usr/lib/x86_64-linux-gnu/libcap.so.2.43","Size":16,"KernelPageSize":4,"MMUPageSize":4,"Rss":16,"Pss":1,"Shared_Clean":16,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":16,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","ex","mr","mw","me","sd"],"VmFlags_pretty":["readable","executable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4a33000","end":"7f53b4a35000","perms":["read","private"],"offset":"00007000","maj":"fd","min":"00","inode":793047,"pathname":"/usr/lib/x86_64-linux-gnu/libcap.so.2.43","Size":8,"KernelPageSize":4,"MMUPageSize":4,"Rss":0,"Pss":0,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":0,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4a35000","end":"7f53b4a36000","perms":["read","private"],"offset":"00008000","maj":"fd","min":"00","inode":793047,"pathname":"/usr/lib/x86_64-linux-gnu/libcap.so.2.43","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4a36000","end":"7f53b4a37000","perms":["read","write","private"],"offset":"00009000","maj":"fd","min":"00","inode":793047,"pathname":"/usr/lib/x86_64-linux-gnu/libcap.so.2.43","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4a37000","end":"7f53b4a39000","perms":["read","write","private"],"offset":"00000000","maj":"00","min":"00","inode":0,"pathname":"","Size":8,"KernelPageSize":4,"MMUPageSize":4,"Rss":8,"Pss":6,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":4,"Referenced":8,"Anonymous":8,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4a39000","end":"7f53b4a42000","perms":["read","private"],"offset":"00000000","maj":"fd","min":"00","inode":793038,"pathname":"/usr/lib/x86_64-linux-gnu/libblkid.so.1.1.0","Size":36,"KernelPageSize":4,"MMUPageSize":4,"Rss":36,"Pss":2,"Shared_Clean":36,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":36,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4a42000","end":"7f53b4a76000","perms":["read","execute","private"],"offset":"00009000","maj":"fd","min":"00","inode":793038,"pathname":"/usr/lib/x86_64-linux-gnu/libblkid.so.1.1.0","Size":208,"KernelPageSize":4,"MMUPageSize":4,"Rss":60,"Pss":4,"Shared_Clean":60,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":60,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","ex","mr","mw","me","sd"],"VmFlags_pretty":["readable","executable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4a76000","end":"7f53b4a86000","perms":["read","private"],"offset":"0003d000","maj":"fd","min":"00","inode":793038,"pathname":"/usr/lib/x86_64-linux-gnu/libblkid.so.1.1.0","Size":64,"KernelPageSize":4,"MMUPageSize":4,"Rss":0,"Pss":0,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":0,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4a86000","end":"7f53b4a87000","perms":["private"],"offset":"0004d000","maj":"fd","min":"00","inode":793038,"pathname":"/usr/lib/x86_64-linux-gnu/libblkid.so.1.1.0","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":0,"Pss":0,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":0,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["mr","mw","me","sd"],"VmFlags_pretty":["may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4a87000","end":"7f53b4a8b000","perms":["read","private"],"offset":"0004d000","maj":"fd","min":"00","inode":793038,"pathname":"/usr/lib/x86_64-linux-gnu/libblkid.so.1.1.0","Size":16,"KernelPageSize":4,"MMUPageSize":4,"Rss":16,"Pss":8,"Shared_Clean":0,"Shared_Dirty":16,"Private_Clean":0,"Private_Dirty":0,"Referenced":16,"Anonymous":16,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4a8b000","end":"7f53b4a8c000","perms":["read","write","private"],"offset":"00051000","maj":"fd","min":"00","inode":793038,"pathname":"/usr/lib/x86_64-linux-gnu/libblkid.so.1.1.0","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4a8c000","end":"7f53b4a8e000","perms":["read","private"],"offset":"00000000","maj":"fd","min":"00","inode":793022,"pathname":"/usr/lib/x86_64-linux-gnu/libacl.so.1.1.2253","Size":8,"KernelPageSize":4,"MMUPageSize":4,"Rss":8,"Pss":1,"Shared_Clean":8,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":8,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4a8e000","end":"7f53b4a93000","perms":["read","execute","private"],"offset":"00002000","maj":"fd","min":"00","inode":793022,"pathname":"/usr/lib/x86_64-linux-gnu/libacl.so.1.1.2253","Size":20,"KernelPageSize":4,"MMUPageSize":4,"Rss":20,"Pss":2,"Shared_Clean":20,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":20,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","ex","mr","mw","me","sd"],"VmFlags_pretty":["readable","executable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4a93000","end":"7f53b4a95000","perms":["read","private"],"offset":"00007000","maj":"fd","min":"00","inode":793022,"pathname":"/usr/lib/x86_64-linux-gnu/libacl.so.1.1.2253","Size":8,"KernelPageSize":4,"MMUPageSize":4,"Rss":0,"Pss":0,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":0,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4a95000","end":"7f53b4a96000","perms":["read","private"],"offset":"00008000","maj":"fd","min":"00","inode":793022,"pathname":"/usr/lib/x86_64-linux-gnu/libacl.so.1.1.2253","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4a96000","end":"7f53b4a97000","perms":["read","write","private"],"offset":"00009000","maj":"fd","min":"00","inode":793022,"pathname":"/usr/lib/x86_64-linux-gnu/libacl.so.1.1.2253","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4a97000","end":"7f53b4abd000","perms":["read","private"],"offset":"00000000","maj":"fd","min":"00","inode":793044,"pathname":"/usr/lib/x86_64-linux-gnu/libc-2.32.so","Size":152,"KernelPageSize":4,"MMUPageSize":4,"Rss":148,"Pss":4,"Shared_Clean":148,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":148,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4abd000","end":"7f53b4c2a000","perms":["read","execute","private"],"offset":"00026000","maj":"fd","min":"00","inode":793044,"pathname":"/usr/lib/x86_64-linux-gnu/libc-2.32.so","Size":1460,"KernelPageSize":4,"MMUPageSize":4,"Rss":1256,"Pss":48,"Shared_Clean":1256,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":1256,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","ex","mr","mw","me","sd"],"VmFlags_pretty":["readable","executable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4c2a000","end":"7f53b4c76000","perms":["read","private"],"offset":"00193000","maj":"fd","min":"00","inode":793044,"pathname":"/usr/lib/x86_64-linux-gnu/libc-2.32.so","Size":304,"KernelPageSize":4,"MMUPageSize":4,"Rss":144,"Pss":4,"Shared_Clean":144,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":144,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4c76000","end":"7f53b4c77000","perms":["private"],"offset":"001df000","maj":"fd","min":"00","inode":793044,"pathname":"/usr/lib/x86_64-linux-gnu/libc-2.32.so","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":0,"Pss":0,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":0,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["mr","mw","me","sd"],"VmFlags_pretty":["may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4c77000","end":"7f53b4c7a000","perms":["read","private"],"offset":"001df000","maj":"fd","min":"00","inode":793044,"pathname":"/usr/lib/x86_64-linux-gnu/libc-2.32.so","Size":12,"KernelPageSize":4,"MMUPageSize":4,"Rss":12,"Pss":6,"Shared_Clean":0,"Shared_Dirty":12,"Private_Clean":0,"Private_Dirty":0,"Referenced":12,"Anonymous":12,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4c7a000","end":"7f53b4c7d000","perms":["read","write","private"],"offset":"001e2000","maj":"fd","min":"00","inode":793044,"pathname":"/usr/lib/x86_64-linux-gnu/libc-2.32.so","Size":12,"KernelPageSize":4,"MMUPageSize":4,"Rss":12,"Pss":12,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":12,"Referenced":12,"Anonymous":12,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4c7d000","end":"7f53b4c81000","perms":["read","write","private"],"offset":"00000000","maj":"00","min":"00","inode":0,"pathname":"","Size":16,"KernelPageSize":4,"MMUPageSize":4,"Rss":12,"Pss":12,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":12,"Referenced":12,"Anonymous":12,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4c81000","end":"7f53b4c84000","perms":["read","private"],"offset":"00000000","maj":"fd","min":"00","inode":793025,"pathname":"/usr/lib/x86_64-linux-gnu/libapparmor.so.1.7.0","Size":12,"KernelPageSize":4,"MMUPageSize":4,"Rss":12,"Pss":3,"Shared_Clean":12,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":12,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4c84000","end":"7f53b4c8d000","perms":["read","execute","private"],"offset":"00003000","maj":"fd","min":"00","inode":793025,"pathname":"/usr/lib/x86_64-linux-gnu/libapparmor.so.1.7.0","Size":36,"KernelPageSize":4,"MMUPageSize":4,"Rss":36,"Pss":11,"Shared_Clean":36,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":36,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","ex","mr","mw","me","sd"],"VmFlags_pretty":["readable","executable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4c8d000","end":"7f53b4c94000","perms":["read","private"],"offset":"0000c000","maj":"fd","min":"00","inode":793025,"pathname":"/usr/lib/x86_64-linux-gnu/libapparmor.so.1.7.0","Size":28,"KernelPageSize":4,"MMUPageSize":4,"Rss":24,"Pss":12,"Shared_Clean":24,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":24,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4c94000","end":"7f53b4c95000","perms":["read","private"],"offset":"00012000","maj":"fd","min":"00","inode":793025,"pathname":"/usr/lib/x86_64-linux-gnu/libapparmor.so.1.7.0","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4c95000","end":"7f53b4c96000","perms":["read","write","private"],"offset":"00013000","maj":"fd","min":"00","inode":793025,"pathname":"/usr/lib/x86_64-linux-gnu/libapparmor.so.1.7.0","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4c96000","end":"7f53b4c99000","perms":["read","private"],"offset":"00000000","maj":"fd","min":"00","inode":793143,"pathname":"/usr/lib/x86_64-linux-gnu/libkmod.so.2.3.5","Size":12,"KernelPageSize":4,"MMUPageSize":4,"Rss":12,"Pss":1,"Shared_Clean":12,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":12,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4c99000","end":"7f53b4ca9000","perms":["read","execute","private"],"offset":"00003000","maj":"fd","min":"00","inode":793143,"pathname":"/usr/lib/x86_64-linux-gnu/libkmod.so.2.3.5","Size":64,"KernelPageSize":4,"MMUPageSize":4,"Rss":64,"Pss":8,"Shared_Clean":64,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":64,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","ex","mr","mw","me","sd"],"VmFlags_pretty":["readable","executable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4ca9000","end":"7f53b4caf000","perms":["read","private"],"offset":"00013000","maj":"fd","min":"00","inode":793143,"pathname":"/usr/lib/x86_64-linux-gnu/libkmod.so.2.3.5","Size":24,"KernelPageSize":4,"MMUPageSize":4,"Rss":24,"Pss":12,"Shared_Clean":24,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":24,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4caf000","end":"7f53b4cb0000","perms":["read","private"],"offset":"00018000","maj":"fd","min":"00","inode":793143,"pathname":"/usr/lib/x86_64-linux-gnu/libkmod.so.2.3.5","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4cb0000","end":"7f53b4cb1000","perms":["read","write","private"],"offset":"00019000","maj":"fd","min":"00","inode":793143,"pathname":"/usr/lib/x86_64-linux-gnu/libkmod.so.2.3.5","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4cb1000","end":"7f53b4cb4000","perms":["read","private"],"offset":"00000000","maj":"fd","min":"00","inode":793036,"pathname":"/usr/lib/x86_64-linux-gnu/libaudit.so.1.0.0","Size":12,"KernelPageSize":4,"MMUPageSize":4,"Rss":12,"Pss":0,"Shared_Clean":12,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":12,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4cb4000","end":"7f53b4cbc000","perms":["read","execute","private"],"offset":"00003000","maj":"fd","min":"00","inode":793036,"pathname":"/usr/lib/x86_64-linux-gnu/libaudit.so.1.0.0","Size":32,"KernelPageSize":4,"MMUPageSize":4,"Rss":32,"Pss":2,"Shared_Clean":32,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":32,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","ex","mr","mw","me","sd"],"VmFlags_pretty":["readable","executable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4cbc000","end":"7f53b4cd0000","perms":["read","private"],"offset":"0000b000","maj":"fd","min":"00","inode":793036,"pathname":"/usr/lib/x86_64-linux-gnu/libaudit.so.1.0.0","Size":80,"KernelPageSize":4,"MMUPageSize":4,"Rss":60,"Pss":36,"Shared_Clean":32,"Shared_Dirty":0,"Private_Clean":28,"Private_Dirty":0,"Referenced":60,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4cd0000","end":"7f53b4cd1000","perms":["private"],"offset":"0001f000","maj":"fd","min":"00","inode":793036,"pathname":"/usr/lib/x86_64-linux-gnu/libaudit.so.1.0.0","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":0,"Pss":0,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":0,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["mr","mw","me","sd"],"VmFlags_pretty":["may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4cd1000","end":"7f53b4cd2000","perms":["read","private"],"offset":"0001f000","maj":"fd","min":"00","inode":793036,"pathname":"/usr/lib/x86_64-linux-gnu/libaudit.so.1.0.0","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4cd2000","end":"7f53b4cd3000","perms":["read","write","private"],"offset":"00020000","maj":"fd","min":"00","inode":793036,"pathname":"/usr/lib/x86_64-linux-gnu/libaudit.so.1.0.0","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":4,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":4,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4cd3000","end":"7f53b4cdf000","perms":["read","write","private"],"offset":"00000000","maj":"00","min":"00","inode":0,"pathname":"","Size":48,"KernelPageSize":4,"MMUPageSize":4,"Rss":12,"Pss":10,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":8,"Referenced":12,"Anonymous":12,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4cdf000","end":"7f53b4ce2000","perms":["read","private"],"offset":"00000000","maj":"fd","min":"00","inode":793193,"pathname":"/usr/lib/x86_64-linux-gnu/libpam.so.0.84.2","Size":12,"KernelPageSize":4,"MMUPageSize":4,"Rss":12,"Pss":0,"Shared_Clean":12,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":12,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4ce2000","end":"7f53b4ceb000","perms":["read","execute","private"],"offset":"00003000","maj":"fd","min":"00","inode":793193,"pathname":"/usr/lib/x86_64-linux-gnu/libpam.so.0.84.2","Size":36,"KernelPageSize":4,"MMUPageSize":4,"Rss":32,"Pss":2,"Shared_Clean":32,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":32,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","ex","mr","mw","me","sd"],"VmFlags_pretty":["readable","executable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4ceb000","end":"7f53b4cef000","perms":["read","private"],"offset":"0000c000","maj":"fd","min":"00","inode":793193,"pathname":"/usr/lib/x86_64-linux-gnu/libpam.so.0.84.2","Size":16,"KernelPageSize":4,"MMUPageSize":4,"Rss":0,"Pss":0,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":0,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4cef000","end":"7f53b4cf0000","perms":["read","private"],"offset":"0000f000","maj":"fd","min":"00","inode":793193,"pathname":"/usr/lib/x86_64-linux-gnu/libpam.so.0.84.2","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4cf0000","end":"7f53b4cf1000","perms":["read","write","private"],"offset":"00010000","maj":"fd","min":"00","inode":793193,"pathname":"/usr/lib/x86_64-linux-gnu/libpam.so.0.84.2","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":4,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":4,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4cf1000","end":"7f53b4cfb000","perms":["read","private"],"offset":"00000000","maj":"fd","min":"00","inode":793163,"pathname":"/usr/lib/x86_64-linux-gnu/libmount.so.1.1.0","Size":40,"KernelPageSize":4,"MMUPageSize":4,"Rss":40,"Pss":3,"Shared_Clean":40,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":40,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4cfb000","end":"7f53b4d39000","perms":["read","execute","private"],"offset":"0000a000","maj":"fd","min":"00","inode":793163,"pathname":"/usr/lib/x86_64-linux-gnu/libmount.so.1.1.0","Size":248,"KernelPageSize":4,"MMUPageSize":4,"Rss":208,"Pss":78,"Shared_Clean":208,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":208,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","ex","mr","mw","me","sd"],"VmFlags_pretty":["readable","executable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4d39000","end":"7f53b4d4c000","perms":["read","private"],"offset":"00048000","maj":"fd","min":"00","inode":793163,"pathname":"/usr/lib/x86_64-linux-gnu/libmount.so.1.1.0","Size":76,"KernelPageSize":4,"MMUPageSize":4,"Rss":60,"Pss":30,"Shared_Clean":60,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":60,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4d4c000","end":"7f53b4d4e000","perms":["read","private"],"offset":"0005a000","maj":"fd","min":"00","inode":793163,"pathname":"/usr/lib/x86_64-linux-gnu/libmount.so.1.1.0","Size":8,"KernelPageSize":4,"MMUPageSize":4,"Rss":8,"Pss":4,"Shared_Clean":0,"Shared_Dirty":8,"Private_Clean":0,"Private_Dirty":0,"Referenced":8,"Anonymous":8,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4d4e000","end":"7f53b4d4f000","perms":["read","write","private"],"offset":"0005c000","maj":"fd","min":"00","inode":793163,"pathname":"/usr/lib/x86_64-linux-gnu/libmount.so.1.1.0","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4d4f000","end":"7f53b4d55000","perms":["read","private"],"offset":"00000000","maj":"fd","min":"00","inode":793228,"pathname":"/usr/lib/x86_64-linux-gnu/libselinux.so.1","Size":24,"KernelPageSize":4,"MMUPageSize":4,"Rss":24,"Pss":1,"Shared_Clean":24,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":24,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4d55000","end":"7f53b4d6e000","perms":["read","execute","private"],"offset":"00006000","maj":"fd","min":"00","inode":793228,"pathname":"/usr/lib/x86_64-linux-gnu/libselinux.so.1","Size":100,"KernelPageSize":4,"MMUPageSize":4,"Rss":100,"Pss":14,"Shared_Clean":100,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":100,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","ex","mr","mw","me","sd"],"VmFlags_pretty":["readable","executable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4d6e000","end":"7f53b4d76000","perms":["read","private"],"offset":"0001f000","maj":"fd","min":"00","inode":793228,"pathname":"/usr/lib/x86_64-linux-gnu/libselinux.so.1","Size":32,"KernelPageSize":4,"MMUPageSize":4,"Rss":32,"Pss":1,"Shared_Clean":32,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":32,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4d76000","end":"7f53b4d77000","perms":["read","private"],"offset":"00026000","maj":"fd","min":"00","inode":793228,"pathname":"/usr/lib/x86_64-linux-gnu/libselinux.so.1","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4d77000","end":"7f53b4d78000","perms":["read","write","private"],"offset":"00027000","maj":"fd","min":"00","inode":793228,"pathname":"/usr/lib/x86_64-linux-gnu/libselinux.so.1","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4d78000","end":"7f53b4d7a000","perms":["read","write","private"],"offset":"00000000","maj":"00","min":"00","inode":0,"pathname":"","Size":8,"KernelPageSize":4,"MMUPageSize":4,"Rss":8,"Pss":4,"Shared_Clean":0,"Shared_Dirty":8,"Private_Clean":0,"Private_Dirty":0,"Referenced":8,"Anonymous":8,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4d7a000","end":"7f53b4da2000","perms":["read","private"],"offset":"00000000","maj":"fd","min":"00","inode":793227,"pathname":"/usr/lib/x86_64-linux-gnu/libseccomp.so.2.4.3","Size":160,"KernelPageSize":4,"MMUPageSize":4,"Rss":160,"Pss":22,"Shared_Clean":160,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":160,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4da2000","end":"7f53b4dad000","perms":["read","execute","private"],"offset":"00028000","maj":"fd","min":"00","inode":793227,"pathname":"/usr/lib/x86_64-linux-gnu/libseccomp.so.2.4.3","Size":44,"KernelPageSize":4,"MMUPageSize":4,"Rss":44,"Pss":6,"Shared_Clean":44,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":44,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","ex","mr","mw","me","sd"],"VmFlags_pretty":["readable","executable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4dad000","end":"7f53b4db1000","perms":["read","private"],"offset":"00033000","maj":"fd","min":"00","inode":793227,"pathname":"/usr/lib/x86_64-linux-gnu/libseccomp.so.2.4.3","Size":16,"KernelPageSize":4,"MMUPageSize":4,"Rss":16,"Pss":16,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":16,"Private_Dirty":0,"Referenced":16,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4db1000","end":"7f53b4dcc000","perms":["read","private"],"offset":"00036000","maj":"fd","min":"00","inode":793227,"pathname":"/usr/lib/x86_64-linux-gnu/libseccomp.so.2.4.3","Size":108,"KernelPageSize":4,"MMUPageSize":4,"Rss":108,"Pss":54,"Shared_Clean":0,"Shared_Dirty":108,"Private_Clean":0,"Private_Dirty":0,"Referenced":108,"Anonymous":108,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4dcc000","end":"7f53b4dcd000","perms":["read","write","private"],"offset":"00051000","maj":"fd","min":"00","inode":793227,"pathname":"/usr/lib/x86_64-linux-gnu/libseccomp.so.2.4.3","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4dcd000","end":"7f53b4dd0000","perms":["read","private"],"offset":"00000000","maj":"fd","min":"00","inode":793224,"pathname":"/usr/lib/x86_64-linux-gnu/librt-2.32.so","Size":12,"KernelPageSize":4,"MMUPageSize":4,"Rss":12,"Pss":0,"Shared_Clean":12,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":12,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4dd0000","end":"7f53b4dd4000","perms":["read","execute","private"],"offset":"00003000","maj":"fd","min":"00","inode":793224,"pathname":"/usr/lib/x86_64-linux-gnu/librt-2.32.so","Size":16,"KernelPageSize":4,"MMUPageSize":4,"Rss":16,"Pss":0,"Shared_Clean":16,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":16,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","ex","mr","mw","me","sd"],"VmFlags_pretty":["readable","executable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4dd4000","end":"7f53b4dd6000","perms":["read","private"],"offset":"00007000","maj":"fd","min":"00","inode":793224,"pathname":"/usr/lib/x86_64-linux-gnu/librt-2.32.so","Size":8,"KernelPageSize":4,"MMUPageSize":4,"Rss":0,"Pss":0,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":0,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4dd6000","end":"7f53b4dd7000","perms":["read","private"],"offset":"00008000","maj":"fd","min":"00","inode":793224,"pathname":"/usr/lib/x86_64-linux-gnu/librt-2.32.so","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4dd7000","end":"7f53b4dd8000","perms":["read","write","private"],"offset":"00009000","maj":"fd","min":"00","inode":793224,"pathname":"/usr/lib/x86_64-linux-gnu/librt-2.32.so","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b4ddf000","end":"7f53b4e29000","perms":["read","private"],"offset":"00000000","maj":"fd","min":"00","inode":798124,"pathname":"/usr/lib/systemd/libsystemd-shared-246.so","Size":296,"KernelPageSize":4,"MMUPageSize":4,"Rss":296,"Pss":42,"Shared_Clean":296,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":296,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4e29000","end":"7f53b4fac000","perms":["read","execute","private"],"offset":"0004a000","maj":"fd","min":"00","inode":798124,"pathname":"/usr/lib/systemd/libsystemd-shared-246.so","Size":1548,"KernelPageSize":4,"MMUPageSize":4,"Rss":1416,"Pss":286,"Shared_Clean":1416,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":1416,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","ex","mr","mw","me","sd"],"VmFlags_pretty":["readable","executable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b4fac000","end":"7f53b503f000","perms":["read","private"],"offset":"001cd000","maj":"fd","min":"00","inode":798124,"pathname":"/usr/lib/systemd/libsystemd-shared-246.so","Size":588,"KernelPageSize":4,"MMUPageSize":4,"Rss":336,"Pss":53,"Shared_Clean":336,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":336,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b503f000","end":"7f53b5040000","perms":["private"],"offset":"00260000","maj":"fd","min":"00","inode":798124,"pathname":"/usr/lib/systemd/libsystemd-shared-246.so","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":0,"Pss":0,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":0,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["mr","mw","me","sd"],"VmFlags_pretty":["may read","may write","may execute","soft-dirty flag"]},{"start":"7f53b5040000","end":"7f53b5050000","perms":["read","private"],"offset":"00260000","maj":"fd","min":"00","inode":798124,"pathname":"/usr/lib/systemd/libsystemd-shared-246.so","Size":64,"KernelPageSize":4,"MMUPageSize":4,"Rss":64,"Pss":32,"Shared_Clean":0,"Shared_Dirty":64,"Private_Clean":0,"Private_Dirty":0,"Referenced":64,"Anonymous":64,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b5050000","end":"7f53b5051000","perms":["read","write","private"],"offset":"00270000","maj":"fd","min":"00","inode":798124,"pathname":"/usr/lib/systemd/libsystemd-shared-246.so","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":4,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":4,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b5051000","end":"7f53b5054000","perms":["read","write","private"],"offset":"00000000","maj":"00","min":"00","inode":0,"pathname":"","Size":12,"KernelPageSize":4,"MMUPageSize":4,"Rss":12,"Pss":12,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":12,"Referenced":12,"Anonymous":12,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","area is accountable","soft-dirty flag"]},{"start":"7f53b5054000","end":"7f53b5055000","perms":["read","private"],"offset":"00000000","maj":"fd","min":"00","inode":793013,"pathname":"/usr/lib/x86_64-linux-gnu/ld-2.32.so","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":0,"Shared_Clean":4,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","dw","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","disabled write to the mapped file","soft-dirty flag"]},{"start":"7f53b5055000","end":"7f53b5079000","perms":["read","execute","private"],"offset":"00001000","maj":"fd","min":"00","inode":793013,"pathname":"/usr/lib/x86_64-linux-gnu/ld-2.32.so","Size":144,"KernelPageSize":4,"MMUPageSize":4,"Rss":144,"Pss":4,"Shared_Clean":144,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":144,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","ex","mr","mw","me","dw","sd"],"VmFlags_pretty":["readable","executable","may read","may write","may execute","disabled write to the mapped file","soft-dirty flag"]},{"start":"7f53b5079000","end":"7f53b5082000","perms":["read","private"],"offset":"00025000","maj":"fd","min":"00","inode":793013,"pathname":"/usr/lib/x86_64-linux-gnu/ld-2.32.so","Size":36,"KernelPageSize":4,"MMUPageSize":4,"Rss":32,"Pss":1,"Shared_Clean":32,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":32,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","dw","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","disabled write to the mapped file","soft-dirty flag"]},{"start":"7f53b5082000","end":"7f53b5083000","perms":["read","private"],"offset":"0002d000","maj":"fd","min":"00","inode":793013,"pathname":"/usr/lib/x86_64-linux-gnu/ld-2.32.so","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":2,"Shared_Clean":0,"Shared_Dirty":4,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":4,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","mw","me","dw","ac","sd"],"VmFlags_pretty":["readable","may read","may write","may execute","disabled write to the mapped file","area is accountable","soft-dirty flag"]},{"start":"7f53b5083000","end":"7f53b5085000","perms":["read","write","private"],"offset":"0002e000","maj":"fd","min":"00","inode":793013,"pathname":"/usr/lib/x86_64-linux-gnu/ld-2.32.so","Size":8,"KernelPageSize":4,"MMUPageSize":4,"Rss":8,"Pss":8,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":8,"Referenced":8,"Anonymous":8,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","dw","ac","sd"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","disabled write to the mapped file","area is accountable","soft-dirty flag"]},{"start":"7ffd1b23e000","end":"7ffd1b340000","perms":["read","write","private"],"offset":"00000000","maj":"00","min":"00","inode":0,"pathname":"[stack]","Size":1032,"KernelPageSize":4,"MMUPageSize":4,"Rss":1032,"Pss":1032,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":1032,"Referenced":1032,"Anonymous":1032,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","wr","mr","mw","me","gd","ac"],"VmFlags_pretty":["readable","writeable","may read","may write","may execute","stack segment growns down","area is accountable"]},{"start":"7ffd1b3b1000","end":"7ffd1b3b5000","perms":["read","private"],"offset":"00000000","maj":"00","min":"00","inode":0,"pathname":"[vvar]","Size":16,"KernelPageSize":4,"MMUPageSize":4,"Rss":0,"Pss":0,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":0,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","mr","pf","io","de","dd","sd"],"VmFlags_pretty":["readable","may read","pure PFN range","memory mapped I/O area","do not expand area on remapping","do not include area into core dump","soft-dirty flag"]},{"start":"7ffd1b3b5000","end":"7ffd1b3b7000","perms":["read","execute","private"],"offset":"00000000","maj":"00","min":"00","inode":0,"pathname":"[vdso]","Size":8,"KernelPageSize":4,"MMUPageSize":4,"Rss":4,"Pss":0,"Shared_Clean":4,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":4,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["rd","ex","mr","mw","me","de","sd"],"VmFlags_pretty":["readable","executable","may read","may write","may execute","do not expand area on remapping","soft-dirty flag"]},{"start":"ffffffffff600000","end":"ffffffffff601000","perms":["execute","private"],"offset":"00000000","maj":"00","min":"00","inode":0,"pathname":"[vsyscall]","Size":4,"KernelPageSize":4,"MMUPageSize":4,"Rss":0,"Pss":0,"Shared_Clean":0,"Shared_Dirty":0,"Private_Clean":0,"Private_Dirty":0,"Referenced":0,"Anonymous":0,"LazyFree":0,"AnonHugePages":0,"ShmemPmdMapped":0,"FilePmdMapped":0,"Shared_Hugetlb":0,"Private_Hugetlb":0,"Swap":0,"SwapPss":0,"Locked":0,"THPeligible":0,"VmFlags":["ex"],"VmFlags_pretty":["executable"]}] diff --git a/tests/test_proc_pid_smaps.py b/tests/test_proc_pid_smaps.py new file mode 100644 index 00000000..b579c801 --- /dev/null +++ b/tests/test_proc_pid_smaps.py @@ -0,0 +1,44 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_pid_smaps + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_pid_smaps': ( + 'fixtures/linux-proc/pid_smaps', + 'fixtures/linux-proc/pid_smaps.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_pid_smaps_nodata(self): + """ + Test 'proc_pid_smaps' with no data + """ + self.assertEqual(jc.parsers.proc_pid_smaps.parse('', quiet=True), []) + + def test_proc_pid_smaps(self): + """ + Test '/proc//smaps' + """ + self.assertEqual(jc.parsers.proc_pid_smaps.parse(self.f_in['proc_pid_smaps'], quiet=True), + self.f_json['proc_pid_smaps']) + + +if __name__ == '__main__': + unittest.main() From 51bc2674bd61098809a5139ccc1f9b7119549cad Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Sat, 24 Sep 2022 17:53:24 -0700 Subject: [PATCH 091/124] add proc_pid_stat tests --- tests/fixtures/linux-proc/pid_stat.json | 1 + tests/test_proc_pid_stat.py | 44 +++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 tests/fixtures/linux-proc/pid_stat.json create mode 100644 tests/test_proc_pid_stat.py diff --git a/tests/fixtures/linux-proc/pid_stat.json b/tests/fixtures/linux-proc/pid_stat.json new file mode 100644 index 00000000..cf77b8df --- /dev/null +++ b/tests/fixtures/linux-proc/pid_stat.json @@ -0,0 +1 @@ +{"pid":1,"comm":"systemd","state":"S","ppid":0,"pgrp":1,"session":1,"tty_nr":0,"tpg_id":-1,"flags":4194560,"minflt":23478,"cminflt":350218,"majflt":99,"cmajflt":472,"utime":107,"stime":461,"cutime":2672,"cstime":4402,"priority":20,"nice":0,"num_threads":1,"itrealvalue":0,"starttime":128,"vsize":174063616,"rss":3313,"rsslim":18446744073709551615,"startcode":94188219072512,"endcode":94188219899461,"startstack":140725059845296,"kstkeep":0,"kstkeip":0,"signal":0,"blocked":671173123,"sigignore":4096,"sigcatch":1260,"wchan":1,"nswap":0,"cnswap":0,"exit_signal":17,"processor":0,"rt_priority":0,"policy":0,"delayacct_blkio_ticks":18,"guest_time":0,"cguest_time":0,"start_data":94188220274448,"end_data":94188220555504,"start_brk":94188243599360,"arg_start":140725059845923,"arg_end":140725059845934,"env_start":140725059845934,"env_end":140725059846125,"exit_code":0,"state_pretty":"Sleeping in an interruptible wait"} diff --git a/tests/test_proc_pid_stat.py b/tests/test_proc_pid_stat.py new file mode 100644 index 00000000..876ce032 --- /dev/null +++ b/tests/test_proc_pid_stat.py @@ -0,0 +1,44 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_pid_stat + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_pid_stat': ( + 'fixtures/linux-proc/pid_stat', + 'fixtures/linux-proc/pid_stat.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_pid_stat_nodata(self): + """ + Test 'proc_pid_stat' with no data + """ + self.assertEqual(jc.parsers.proc_pid_stat.parse('', quiet=True), {}) + + def test_proc_pid_stat(self): + """ + Test '/proc//stat' + """ + self.assertEqual(jc.parsers.proc_pid_stat.parse(self.f_in['proc_pid_stat'], quiet=True), + self.f_json['proc_pid_stat']) + + +if __name__ == '__main__': + unittest.main() From b0f0d02e75100554d7ac04f97e1c988aaaa167a2 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Sun, 25 Sep 2022 09:03:38 -0700 Subject: [PATCH 092/124] add proc-pid-statm parser and tests --- docs/parsers/proc_pid_statm.md | 78 +++++++++++++++ jc/lib.py | 1 + jc/parsers/proc_pid_statm.py | 119 +++++++++++++++++++++++ man/jc.1 | 7 +- tests/fixtures/linux-proc/pid_statm.json | 1 + tests/test_proc_pid_statm.py | 44 +++++++++ 6 files changed, 249 insertions(+), 1 deletion(-) create mode 100644 docs/parsers/proc_pid_statm.md create mode 100644 jc/parsers/proc_pid_statm.py create mode 100644 tests/fixtures/linux-proc/pid_statm.json create mode 100644 tests/test_proc_pid_statm.py diff --git a/docs/parsers/proc_pid_statm.md b/docs/parsers/proc_pid_statm.md new file mode 100644 index 00000000..b1254631 --- /dev/null +++ b/docs/parsers/proc_pid_statm.md @@ -0,0 +1,78 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_pid\_statm + +jc - JSON Convert `/proc//statm` file parser + +Usage (cli): + + $ cat /proc/1/statm | jc --proc + +or + + $ jc /proc/1/statm + +or + + $ cat /proc/1/statm | jc --proc-pid_statm + +Usage (module): + + import jc + result = jc.parse('proc', proc_pid_statm_file) + +or + + import jc + result = jc.parse('proc_pid_statm', proc_pid_statm_file) + +Schema: + + { + "size": integer, + "resident": integer, + "shared": integer, + "text": integer, + "lib": integer, + "data": integer, + "dt": integer + } + +Examples: + + $ cat /proc/1/statm | jc --proc -p + { + "size": 42496, + "resident": 3313, + "shared": 2169, + "text": 202, + "lib": 0, + "data": 5180, + "dt": 0 + } + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> Dict +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + Dictionary. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/lib.py b/jc/lib.py index b5ac480b..b08b5649 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -119,6 +119,7 @@ parsers = [ 'proc-pid-numa-maps', 'proc-pid-smaps', 'proc-pid-stat', + 'proc-pid-statm', 'ps', 'route', 'rpm-qi', diff --git a/jc/parsers/proc_pid_statm.py b/jc/parsers/proc_pid_statm.py new file mode 100644 index 00000000..bf817ef6 --- /dev/null +++ b/jc/parsers/proc_pid_statm.py @@ -0,0 +1,119 @@ +"""jc - JSON Convert `/proc//statm` file parser + +Usage (cli): + + $ cat /proc/1/statm | jc --proc + +or + + $ jc /proc/1/statm + +or + + $ cat /proc/1/statm | jc --proc-pid_statm + +Usage (module): + + import jc + result = jc.parse('proc', proc_pid_statm_file) + +or + + import jc + result = jc.parse('proc_pid_statm', proc_pid_statm_file) + +Schema: + + { + "size": integer, + "resident": integer, + "shared": integer, + "text": integer, + "lib": integer, + "data": integer, + "dt": integer + } + +Examples: + + $ cat /proc/1/statm | jc --proc -p + { + "size": 42496, + "resident": 3313, + "shared": 2169, + "text": 202, + "lib": 0, + "data": 5180, + "dt": 0 + } +""" +from typing import Dict +import jc.utils + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc//statm` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + hidden = True + + +__version__ = info.version + + +def _process(proc_data: Dict) -> Dict: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (Dictionary) raw structured data to process + + Returns: + + Dictionary. Structured to conform to the schema. + """ + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> Dict: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + Dictionary. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: Dict = {} + + if jc.utils.has_data(data): + + size, resident, shared, text, lib, data_, dt = data.split() + + raw_output = { + 'size': int(size), + 'resident': int(resident), + 'shared': int(shared), + 'text': int(text), + 'lib': int(lib), + 'data': int(data_), + 'dt': int(dt) + } + + return raw_output if raw else _process(raw_output) diff --git a/man/jc.1 b/man/jc.1 index fdccc75d..e320a915 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -1,4 +1,4 @@ -.TH jc 1 2022-09-24 1.21.2 "JSON Convert" +.TH jc 1 2022-09-25 1.21.2 "JSON Convert" .SH NAME \fBjc\fP \- JSON Convert JSONifies the output of many CLI tools, file-types, and strings .SH SYNOPSIS @@ -580,6 +580,11 @@ PLIST file parser \fB--proc-pid-stat\fP `/proc//stat` file parser +.TP +.B +\fB--proc-pid-statm\fP +`/proc//statm` file parser + .TP .B \fB--ps\fP diff --git a/tests/fixtures/linux-proc/pid_statm.json b/tests/fixtures/linux-proc/pid_statm.json new file mode 100644 index 00000000..f19cabe4 --- /dev/null +++ b/tests/fixtures/linux-proc/pid_statm.json @@ -0,0 +1 @@ +{"size":42496,"resident":3313,"shared":2169,"text":202,"lib":0,"data":5180,"dt":0} diff --git a/tests/test_proc_pid_statm.py b/tests/test_proc_pid_statm.py new file mode 100644 index 00000000..4b22219d --- /dev/null +++ b/tests/test_proc_pid_statm.py @@ -0,0 +1,44 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_pid_statm + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_pid_statm': ( + 'fixtures/linux-proc/pid_statm', + 'fixtures/linux-proc/pid_statm.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_pid_statm_nodata(self): + """ + Test 'proc_pid_statm' with no data + """ + self.assertEqual(jc.parsers.proc_pid_statm.parse('', quiet=True), {}) + + def test_proc_pid_statm(self): + """ + Test '/proc//statm' + """ + self.assertEqual(jc.parsers.proc_pid_statm.parse(self.f_in['proc_pid_statm'], quiet=True), + self.f_json['proc_pid_statm']) + + +if __name__ == '__main__': + unittest.main() From ef8c688fa1857ba08b7bd56bd9bcbdcadd1d3362 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Sun, 25 Sep 2022 09:57:48 -0700 Subject: [PATCH 093/124] add proc_pid_status parser and tests --- CHANGELOG | 1 + docs/parsers/proc_pid_status.md | 295 ++++++++++++++++++ jc/lib.py | 1 + jc/parsers/proc_pid_status.py | 361 ++++++++++++++++++++++ man/jc.1 | 5 + tests/fixtures/linux-proc/pid_status.json | 1 + tests/test_proc_pid_status.py | 44 +++ 7 files changed, 708 insertions(+) create mode 100644 docs/parsers/proc_pid_status.md create mode 100644 jc/parsers/proc_pid_status.py create mode 100644 tests/fixtures/linux-proc/pid_status.json create mode 100644 tests/test_proc_pid_status.py diff --git a/CHANGELOG b/CHANGELOG index 311a878e..95d36b9c 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -5,6 +5,7 @@ jc changelog - Enhance `free` parser to support `-w` option integer conversions - Fix `ini` and `kv` parsers so they don't change keynames to lower case - Fix `id` command parser to allow usernames and groupnames with spaces +- Optimize tests 20220829 v1.21.2 - Fix IP Address string parser for older python versions that don't cleanly diff --git a/docs/parsers/proc_pid_status.md b/docs/parsers/proc_pid_status.md new file mode 100644 index 00000000..528c57cc --- /dev/null +++ b/docs/parsers/proc_pid_status.md @@ -0,0 +1,295 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_pid\_status + +jc - JSON Convert `/proc//status` file parser + +Usage (cli): + + $ cat /proc/1/status | jc --proc + +or + + $ jc /proc/1/status + +or + + $ cat /proc/1/status | jc --proc-pid_status + +Usage (module): + + import jc + result = jc.parse('proc', proc_pid_status_file) + +or + + import jc + result = jc.parse('proc_pid_status', proc_pid_status_file) + +Schema: + + { + "Name": string, + "Umask": string, + "State": string, + "State_pretty": string, + "Tgid": integer, + "Ngid": integer, + "Pid": integer, + "PPid": integer, + "TracerPid": integer, + "Uid": [ + integer + ], + "Gid": [ + integer + ], + "FDSize": integer, + "Groups": string, + "NStgid": integer, + "NSpid": integer, + "NSpgid": integer, + "NSsid": integer, + "VmPeak": integer, + "VmSize": integer, + "VmLck": integer, + "VmPin": integer, + "VmHWM": integer, + "VmRSS": integer, + "RssAnon": integer, + "RssFile": integer, + "RssShmem": integer, + "VmData": integer, + "VmStk": integer, + "VmExe": integer, + "VmLib": integer, + "VmPTE": integer, + "VmSwap": integer, + "HugetlbPages": integer, + "CoreDumping": integer, + "THP_enabled": integer, + "Threads": integer, + "SigQ": string, + "SigQ_current": integer, + "SigQ_limit": integer, + "SigPnd": string, + "ShdPnd": string, + "SigBlk": string, + "SigIgn": string, + "SigCgt": string, + "CapInh": string, + "CapPrm": string, + "CapEff": string, + "CapBnd": string, + "CapAmb": string, + "NoNewPrivs": integer, + "Seccomp": integer, + "Speculation_Store_Bypass": string, + "Cpus_allowed": [ + string + ], + "Cpus_allowed_list": string, + "Mems_allowed": [ + string + ], + "Mems_allowed_list": string, + "voluntary_ctxt_switches": integer, + "nonvoluntary_ctxt_switches": integer + } + +Examples: + + $ cat /proc/1/status | jc --proc -p + { + "Name": "systemd", + "Umask": "0000", + "State": "S", + "Tgid": 1, + "Ngid": 0, + "Pid": 1, + "PPid": 0, + "TracerPid": 0, + "Uid": [ + 0, + 0, + 0, + 0 + ], + "Gid": [ + 0, + 0, + 0, + 0 + ], + "FDSize": 128, + "Groups": "", + "NStgid": 1, + "NSpid": 1, + "NSpgid": 1, + "NSsid": 1, + "VmPeak": 235380, + "VmSize": 169984, + "VmLck": 0, + "VmPin": 0, + "VmHWM": 13252, + "VmRSS": 13252, + "RssAnon": 4576, + "RssFile": 8676, + "RssShmem": 0, + "VmData": 19688, + "VmStk": 1032, + "VmExe": 808, + "VmLib": 9772, + "VmPTE": 96, + "VmSwap": 0, + "HugetlbPages": 0, + "CoreDumping": 0, + "THP_enabled": 1, + "Threads": 1, + "SigQ": "0/15245", + "SigPnd": "0000000000000000", + "ShdPnd": "0000000000000000", + "SigBlk": "7be3c0fe28014a03", + "SigIgn": "0000000000001000", + "SigCgt": "00000001800004ec", + "CapInh": "0000000000000000", + "CapPrm": "000000ffffffffff", + "CapEff": "000000ffffffffff", + "CapBnd": "000000ffffffffff", + "CapAmb": "0000000000000000", + "NoNewPrivs": 0, + "Seccomp": 0, + "Speculation_Store_Bypass": "thread vulnerable", + "Cpus_allowed": [ + "ffffffff", + "ffffffff", + "ffffffff", + "ffffffff" + ], + "Cpus_allowed_list": "0-127", + "Mems_allowed": [ + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000001" + ], + "Mems_allowed_list": "0", + "voluntary_ctxt_switches": 1856, + "nonvoluntary_ctxt_switches": 6620, + "State_pretty": "sleeping", + "SigQ_current": 0, + "SigQ_limit": 15245 + } + + $ cat /proc/1/status | jc --proc -p -r + { + "Name": "systemd", + "Umask": "0000", + "State": "S (sleeping)", + "Tgid": "1", + "Ngid": "0", + "Pid": "1", + "PPid": "0", + "TracerPid": "0", + "Uid": "0\t0\t0\t0", + "Gid": "0\t0\t0\t0", + "FDSize": "128", + "Groups": "", + "NStgid": "1", + "NSpid": "1", + "NSpgid": "1", + "NSsid": "1", + "VmPeak": "235380 kB", + "VmSize": "169984 kB", + "VmLck": "0 kB", + "VmPin": "0 kB", + "VmHWM": "13252 kB", + "VmRSS": "13252 kB", + "RssAnon": "4576 kB", + "RssFile": "8676 kB", + "RssShmem": "0 kB", + "VmData": "19688 kB", + "VmStk": "1032 kB", + "VmExe": "808 kB", + "VmLib": "9772 kB", + "VmPTE": "96 kB", + "VmSwap": "0 kB", + "HugetlbPages": "0 kB", + "CoreDumping": "0", + "THP_enabled": "1", + "Threads": "1", + "SigQ": "0/15245", + "SigPnd": "0000000000000000", + "ShdPnd": "0000000000000000", + "SigBlk": "7be3c0fe28014a03", + "SigIgn": "0000000000001000", + "SigCgt": "00000001800004ec", + "CapInh": "0000000000000000", + "CapPrm": "000000ffffffffff", + "CapEff": "000000ffffffffff", + "CapBnd": "000000ffffffffff", + "CapAmb": "0000000000000000", + "NoNewPrivs": "0", + "Seccomp": "0", + "Speculation_Store_Bypass": "thread vulnerable", + "Cpus_allowed": "ffffffff,ffffffff,ffffffff,ffffffff", + "Cpus_allowed_list": "0-127", + "Mems_allowed": "00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001", + "Mems_allowed_list": "0", + "voluntary_ctxt_switches": "1856", + "nonvoluntary_ctxt_switches": "6620" + } + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> Dict +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + Dictionary. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/lib.py b/jc/lib.py index b08b5649..c26e4ad2 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -120,6 +120,7 @@ parsers = [ 'proc-pid-smaps', 'proc-pid-stat', 'proc-pid-statm', + 'proc-pid-status', 'ps', 'route', 'rpm-qi', diff --git a/jc/parsers/proc_pid_status.py b/jc/parsers/proc_pid_status.py new file mode 100644 index 00000000..f19de7f8 --- /dev/null +++ b/jc/parsers/proc_pid_status.py @@ -0,0 +1,361 @@ +"""jc - JSON Convert `/proc//status` file parser + +Usage (cli): + + $ cat /proc/1/status | jc --proc + +or + + $ jc /proc/1/status + +or + + $ cat /proc/1/status | jc --proc-pid_status + +Usage (module): + + import jc + result = jc.parse('proc', proc_pid_status_file) + +or + + import jc + result = jc.parse('proc_pid_status', proc_pid_status_file) + +Schema: + + { + "Name": string, + "Umask": string, + "State": string, + "State_pretty": string, + "Tgid": integer, + "Ngid": integer, + "Pid": integer, + "PPid": integer, + "TracerPid": integer, + "Uid": [ + integer + ], + "Gid": [ + integer + ], + "FDSize": integer, + "Groups": string, + "NStgid": integer, + "NSpid": integer, + "NSpgid": integer, + "NSsid": integer, + "VmPeak": integer, + "VmSize": integer, + "VmLck": integer, + "VmPin": integer, + "VmHWM": integer, + "VmRSS": integer, + "RssAnon": integer, + "RssFile": integer, + "RssShmem": integer, + "VmData": integer, + "VmStk": integer, + "VmExe": integer, + "VmLib": integer, + "VmPTE": integer, + "VmSwap": integer, + "HugetlbPages": integer, + "CoreDumping": integer, + "THP_enabled": integer, + "Threads": integer, + "SigQ": string, + "SigQ_current": integer, + "SigQ_limit": integer, + "SigPnd": string, + "ShdPnd": string, + "SigBlk": string, + "SigIgn": string, + "SigCgt": string, + "CapInh": string, + "CapPrm": string, + "CapEff": string, + "CapBnd": string, + "CapAmb": string, + "NoNewPrivs": integer, + "Seccomp": integer, + "Speculation_Store_Bypass": string, + "Cpus_allowed": [ + string + ], + "Cpus_allowed_list": string, + "Mems_allowed": [ + string + ], + "Mems_allowed_list": string, + "voluntary_ctxt_switches": integer, + "nonvoluntary_ctxt_switches": integer + } + +Examples: + + $ cat /proc/1/status | jc --proc -p + { + "Name": "systemd", + "Umask": "0000", + "State": "S", + "Tgid": 1, + "Ngid": 0, + "Pid": 1, + "PPid": 0, + "TracerPid": 0, + "Uid": [ + 0, + 0, + 0, + 0 + ], + "Gid": [ + 0, + 0, + 0, + 0 + ], + "FDSize": 128, + "Groups": "", + "NStgid": 1, + "NSpid": 1, + "NSpgid": 1, + "NSsid": 1, + "VmPeak": 235380, + "VmSize": 169984, + "VmLck": 0, + "VmPin": 0, + "VmHWM": 13252, + "VmRSS": 13252, + "RssAnon": 4576, + "RssFile": 8676, + "RssShmem": 0, + "VmData": 19688, + "VmStk": 1032, + "VmExe": 808, + "VmLib": 9772, + "VmPTE": 96, + "VmSwap": 0, + "HugetlbPages": 0, + "CoreDumping": 0, + "THP_enabled": 1, + "Threads": 1, + "SigQ": "0/15245", + "SigPnd": "0000000000000000", + "ShdPnd": "0000000000000000", + "SigBlk": "7be3c0fe28014a03", + "SigIgn": "0000000000001000", + "SigCgt": "00000001800004ec", + "CapInh": "0000000000000000", + "CapPrm": "000000ffffffffff", + "CapEff": "000000ffffffffff", + "CapBnd": "000000ffffffffff", + "CapAmb": "0000000000000000", + "NoNewPrivs": 0, + "Seccomp": 0, + "Speculation_Store_Bypass": "thread vulnerable", + "Cpus_allowed": [ + "ffffffff", + "ffffffff", + "ffffffff", + "ffffffff" + ], + "Cpus_allowed_list": "0-127", + "Mems_allowed": [ + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000000", + "00000001" + ], + "Mems_allowed_list": "0", + "voluntary_ctxt_switches": 1856, + "nonvoluntary_ctxt_switches": 6620, + "State_pretty": "sleeping", + "SigQ_current": 0, + "SigQ_limit": 15245 + } + + $ cat /proc/1/status | jc --proc -p -r + { + "Name": "systemd", + "Umask": "0000", + "State": "S (sleeping)", + "Tgid": "1", + "Ngid": "0", + "Pid": "1", + "PPid": "0", + "TracerPid": "0", + "Uid": "0\t0\t0\t0", + "Gid": "0\t0\t0\t0", + "FDSize": "128", + "Groups": "", + "NStgid": "1", + "NSpid": "1", + "NSpgid": "1", + "NSsid": "1", + "VmPeak": "235380 kB", + "VmSize": "169984 kB", + "VmLck": "0 kB", + "VmPin": "0 kB", + "VmHWM": "13252 kB", + "VmRSS": "13252 kB", + "RssAnon": "4576 kB", + "RssFile": "8676 kB", + "RssShmem": "0 kB", + "VmData": "19688 kB", + "VmStk": "1032 kB", + "VmExe": "808 kB", + "VmLib": "9772 kB", + "VmPTE": "96 kB", + "VmSwap": "0 kB", + "HugetlbPages": "0 kB", + "CoreDumping": "0", + "THP_enabled": "1", + "Threads": "1", + "SigQ": "0/15245", + "SigPnd": "0000000000000000", + "ShdPnd": "0000000000000000", + "SigBlk": "7be3c0fe28014a03", + "SigIgn": "0000000000001000", + "SigCgt": "00000001800004ec", + "CapInh": "0000000000000000", + "CapPrm": "000000ffffffffff", + "CapEff": "000000ffffffffff", + "CapBnd": "000000ffffffffff", + "CapAmb": "0000000000000000", + "NoNewPrivs": "0", + "Seccomp": "0", + "Speculation_Store_Bypass": "thread vulnerable", + "Cpus_allowed": "ffffffff,ffffffff,ffffffff,ffffffff", + "Cpus_allowed_list": "0-127", + "Mems_allowed": "00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001", + "Mems_allowed_list": "0", + "voluntary_ctxt_switches": "1856", + "nonvoluntary_ctxt_switches": "6620" + } +""" +from typing import Dict +import jc.utils + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc//status` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + hidden = True + + +__version__ = info.version + + +def _process(proc_data: Dict) -> Dict: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (Dictionary) raw structured data to process + + Returns: + + Dictionary. Structured to conform to the schema. + """ + int_list = {'Tgid', 'Ngid', 'Pid', 'PPid', 'TracerPid', 'FDSize', 'NStgid', + 'NSpid', 'NSpgid', 'NSsid', 'VmPeak', 'VmSize', 'VmLck', 'VmPin', 'VmHWM', + 'VmRSS', 'RssAnon', 'RssFile', 'RssShmem', 'VmData', 'VmStk', 'VmExe', 'VmLib', + 'VmPTE', 'VmSwap', 'HugetlbPages', 'CoreDumping', 'THP_enabled', 'Threads', + 'NoNewPrivs', 'Seccomp', 'voluntary_ctxt_switches', 'nonvoluntary_ctxt_switches'} + + for key, val in proc_data.items(): + if key in int_list: + proc_data[key] = jc.utils.convert_to_int(val) + + if 'State' in proc_data: + st, st_pretty = proc_data['State'].split() + proc_data['State'] = st + proc_data['State_pretty'] = st_pretty.strip('()') + + if 'Uid' in proc_data: + proc_data['Uid'] = [int(x) for x in proc_data['Uid'].split()] + + if 'Gid' in proc_data: + proc_data['Gid'] = [int(x) for x in proc_data['Gid'].split()] + + if 'SigQ' in proc_data: + current_q, limit_q = proc_data['SigQ'].split('/') + proc_data['SigQ_current'] = int(current_q) + proc_data['SigQ_limit'] = int(limit_q) + + if 'Cpus_allowed' in proc_data: + proc_data['Cpus_allowed'] = proc_data['Cpus_allowed'].split(',') + + if 'Mems_allowed' in proc_data: + proc_data['Mems_allowed'] = proc_data['Mems_allowed'].split(',') + + + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> Dict: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + Dictionary. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: Dict = {} + + if jc.utils.has_data(data): + + for line in filter(None, data.splitlines()): + key, val = line.split(':', maxsplit=1) + raw_output[key] = val.strip() + + return raw_output if raw else _process(raw_output) diff --git a/man/jc.1 b/man/jc.1 index e320a915..049b2b4e 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -585,6 +585,11 @@ PLIST file parser \fB--proc-pid-statm\fP `/proc//statm` file parser +.TP +.B +\fB--proc-pid-status\fP +`/proc//status` file parser + .TP .B \fB--ps\fP diff --git a/tests/fixtures/linux-proc/pid_status.json b/tests/fixtures/linux-proc/pid_status.json new file mode 100644 index 00000000..ce9f376f --- /dev/null +++ b/tests/fixtures/linux-proc/pid_status.json @@ -0,0 +1 @@ +{"Name":"systemd","Umask":"0000","State":"S","Tgid":1,"Ngid":0,"Pid":1,"PPid":0,"TracerPid":0,"Uid":[0,0,0,0],"Gid":[0,0,0,0],"FDSize":128,"Groups":"","NStgid":1,"NSpid":1,"NSpgid":1,"NSsid":1,"VmPeak":235380,"VmSize":169984,"VmLck":0,"VmPin":0,"VmHWM":13252,"VmRSS":13252,"RssAnon":4576,"RssFile":8676,"RssShmem":0,"VmData":19688,"VmStk":1032,"VmExe":808,"VmLib":9772,"VmPTE":96,"VmSwap":0,"HugetlbPages":0,"CoreDumping":0,"THP_enabled":1,"Threads":1,"SigQ":"0/15245","SigPnd":"0000000000000000","ShdPnd":"0000000000000000","SigBlk":"7be3c0fe28014a03","SigIgn":"0000000000001000","SigCgt":"00000001800004ec","CapInh":"0000000000000000","CapPrm":"000000ffffffffff","CapEff":"000000ffffffffff","CapBnd":"000000ffffffffff","CapAmb":"0000000000000000","NoNewPrivs":0,"Seccomp":0,"Speculation_Store_Bypass":"thread vulnerable","Cpus_allowed":["ffffffff","ffffffff","ffffffff","ffffffff"],"Cpus_allowed_list":"0-127","Mems_allowed":["00000000","00000000","00000000","00000000","00000000","00000000","00000000","00000000","00000000","00000000","00000000","00000000","00000000","00000000","00000000","00000000","00000000","00000000","00000000","00000000","00000000","00000000","00000000","00000000","00000000","00000000","00000000","00000000","00000000","00000000","00000000","00000001"],"Mems_allowed_list":"0","voluntary_ctxt_switches":1856,"nonvoluntary_ctxt_switches":6620,"State_pretty":"sleeping","SigQ_current":0,"SigQ_limit":15245} diff --git a/tests/test_proc_pid_status.py b/tests/test_proc_pid_status.py new file mode 100644 index 00000000..2d2fb1c7 --- /dev/null +++ b/tests/test_proc_pid_status.py @@ -0,0 +1,44 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_pid_status + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_pid_status': ( + 'fixtures/linux-proc/pid_status', + 'fixtures/linux-proc/pid_status.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_pid_status_nodata(self): + """ + Test 'proc_pid_status' with no data + """ + self.assertEqual(jc.parsers.proc_pid_status.parse('', quiet=True), {}) + + def test_proc_pid_status(self): + """ + Test '/proc//status' + """ + self.assertEqual(jc.parsers.proc_pid_status.parse(self.f_in['proc_pid_status'], quiet=True), + self.f_json['proc_pid_status']) + + +if __name__ == '__main__': + unittest.main() From d9c7dde174aa40a4c0dd99f58b52238f25b0772d Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Sun, 25 Sep 2022 12:09:01 -0700 Subject: [PATCH 094/124] add proc_net_arp parser and tests --- docs/parsers/proc_net_arp.md | 81 +++++++++++++++++ jc/lib.py | 1 + jc/parsers/proc_net_arp.py | 116 +++++++++++++++++++++++++ man/jc.1 | 5 ++ tests/fixtures/linux-proc/net_arp.json | 1 + tests/test_proc_net_arp.py | 44 ++++++++++ 6 files changed, 248 insertions(+) create mode 100644 docs/parsers/proc_net_arp.md create mode 100644 jc/parsers/proc_net_arp.py create mode 100644 tests/fixtures/linux-proc/net_arp.json create mode 100644 tests/test_proc_net_arp.py diff --git a/docs/parsers/proc_net_arp.md b/docs/parsers/proc_net_arp.md new file mode 100644 index 00000000..0585b5ca --- /dev/null +++ b/docs/parsers/proc_net_arp.md @@ -0,0 +1,81 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_net\_arp + +jc - JSON Convert `/proc/net/arp` file parser + +Usage (cli): + + $ cat /proc/net/arp | jc --proc + +or + + $ jc /proc/net/arp + +or + + $ cat /proc/net/arp | jc --proc-net-arp + +Usage (module): + + import jc + result = jc.parse('proc', proc_net_arp_file) + +or + + import jc + result = jc.parse('proc_net_arp', proc_net_arp_file) + +Schema: + + [ + { + "IP_address": string, + "HW_type": string, + "Flags": string, + "HW_address": string, + "Mask": string, + "Device": string + } + ] + +Examples: + + $ cat /proc/net/arp | jc --proc -p + [ + { + "IP_address": "192.168.71.254", + "HW_type": "0x1", + "Flags": "0x2", + "HW_address": "00:50:56:f3:2f:ae", + "Mask": "*", + "Device": "ens33" + }, + ... + ] + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict] +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + List of Dictionaries. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/lib.py b/jc/lib.py index c26e4ad2..e156054e 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -121,6 +121,7 @@ parsers = [ 'proc-pid-stat', 'proc-pid-statm', 'proc-pid-status', + 'proc-net-arp', 'ps', 'route', 'rpm-qi', diff --git a/jc/parsers/proc_net_arp.py b/jc/parsers/proc_net_arp.py new file mode 100644 index 00000000..1535326d --- /dev/null +++ b/jc/parsers/proc_net_arp.py @@ -0,0 +1,116 @@ +"""jc - JSON Convert `/proc/net/arp` file parser + +Usage (cli): + + $ cat /proc/net/arp | jc --proc + +or + + $ jc /proc/net/arp + +or + + $ cat /proc/net/arp | jc --proc-net-arp + +Usage (module): + + import jc + result = jc.parse('proc', proc_net_arp_file) + +or + + import jc + result = jc.parse('proc_net_arp', proc_net_arp_file) + +Schema: + + [ + { + "IP_address": string, + "HW_type": string, + "Flags": string, + "HW_address": string, + "Mask": string, + "Device": string + } + ] + +Examples: + + $ cat /proc/net/arp | jc --proc -p + [ + { + "IP_address": "192.168.71.254", + "HW_type": "0x1", + "Flags": "0x2", + "HW_address": "00:50:56:f3:2f:ae", + "Mask": "*", + "Device": "ens33" + }, + ... + ] +""" +from typing import List, Dict +import jc.utils +from jc.parsers.universal import simple_table_parse + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc/net/arp` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + hidden = True + + +__version__ = info.version + + +def _process(proc_data: List[Dict]) -> List[Dict]: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (List of Dictionaries) raw structured data to process + + Returns: + + List of Dictionaries. Structured to conform to the schema. + """ + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> List[Dict]: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + List of Dictionaries. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: List = [] + + if jc.utils.has_data(data): + + header = 'IP_address HW_type Flags HW_address Mask Device' + data_splitlines = data.splitlines() + data_splitlines[0] = header + raw_output = simple_table_parse(data_splitlines) + + return raw_output if raw else _process(raw_output) diff --git a/man/jc.1 b/man/jc.1 index 049b2b4e..bd18b318 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -590,6 +590,11 @@ PLIST file parser \fB--proc-pid-status\fP `/proc//status` file parser +.TP +.B +\fB--proc-net-arp\fP +`/proc/net/arp` file parser + .TP .B \fB--ps\fP diff --git a/tests/fixtures/linux-proc/net_arp.json b/tests/fixtures/linux-proc/net_arp.json new file mode 100644 index 00000000..e961a02d --- /dev/null +++ b/tests/fixtures/linux-proc/net_arp.json @@ -0,0 +1 @@ +[{"IP_address":"192.168.71.254","HW_type":"0x1","Flags":"0x2","HW_address":"00:50:56:f3:2f:ae","Mask":"*","Device":"ens33"},{"IP_address":"192.168.71.2","HW_type":"0x1","Flags":"0x2","HW_address":"00:50:56:f7:4a:fc","Mask":"*","Device":"ens33"},{"IP_address":"192.168.71.1","HW_type":"0x1","Flags":"0x2","HW_address":"a6:83:e7:d2:a9:65","Mask":"*","Device":"ens33"}] diff --git a/tests/test_proc_net_arp.py b/tests/test_proc_net_arp.py new file mode 100644 index 00000000..3d1acbf0 --- /dev/null +++ b/tests/test_proc_net_arp.py @@ -0,0 +1,44 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_net_arp + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_net_arp': ( + 'fixtures/linux-proc/net_arp', + 'fixtures/linux-proc/net_arp.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_net_arp_nodata(self): + """ + Test 'proc_net_arp' with no data + """ + self.assertEqual(jc.parsers.proc_net_arp.parse('', quiet=True), []) + + def test_proc_net_arp(self): + """ + Test '/proc/net/arp' + """ + self.assertEqual(jc.parsers.proc_net_arp.parse(self.f_in['proc_net_arp'], quiet=True), + self.f_json['proc_net_arp']) + + +if __name__ == '__main__': + unittest.main() From 647820c75e4fb9b9b7f5386e463087a794e9d507 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Sun, 25 Sep 2022 12:09:12 -0700 Subject: [PATCH 095/124] optimize docgen --- docgen.sh | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/docgen.sh b/docgen.sh index 06ad9717..4792d2e2 100755 --- a/docgen.sh +++ b/docgen.sh @@ -112,23 +112,25 @@ do parsers+=("$value") done < <(jc -a | jq -c '.parsers[] | select(.plugin != true)') -for parser in "${parsers[@]}" -do ( - parser_name=$(jq -r '.name' <<< "$parser") - compatible=$(jq -r '.compatible | join(", ")' <<< "$parser") - version=$(jq -r '.version' <<< "$parser") - author=$(jq -r '.author' <<< "$parser") - author_email=$(jq -r '.author_email' <<< "$parser") +for parser in "${parsers[@]}"; do + ( + parser_name=$(jq -r '.name' <<< "$parser") + if ! git diff --exit-code -- "jc/parsers/${parser_name}.py"; then + compatible=$(jq -r '.compatible | join(", ")' <<< "$parser") + version=$(jq -r '.version' <<< "$parser") + author=$(jq -r '.author' <<< "$parser") + author_email=$(jq -r '.author_email' <<< "$parser") - echo "Building docs for: ${parser_name}" - echo "[Home](https://kellyjonbrazil.github.io/jc/)" > ../docs/parsers/"${parser_name}".md - pydoc-markdown -m jc.parsers."${parser_name}" "${parser_config}" >> ../docs/parsers/"${parser_name}".md - echo "### Parser Information" >> ../docs/parsers/"${parser_name}".md - echo "Compatibility: ${compatible}" >> ../docs/parsers/"${parser_name}".md - echo >> ../docs/parsers/"${parser_name}".md - echo "Version ${version} by ${author} (${author_email})" >> ../docs/parsers/"${parser_name}".md - echo "+++ ${parser_name} docs complete" -) & + echo "Building docs for: ${parser_name}" + echo "[Home](https://kellyjonbrazil.github.io/jc/)" > ../docs/parsers/"${parser_name}".md + pydoc-markdown -m jc.parsers."${parser_name}" "${parser_config}" >> ../docs/parsers/"${parser_name}".md + echo "### Parser Information" >> ../docs/parsers/"${parser_name}".md + echo "Compatibility: ${compatible}" >> ../docs/parsers/"${parser_name}".md + echo >> ../docs/parsers/"${parser_name}".md + echo "Version ${version} by ${author} (${author_email})" >> ../docs/parsers/"${parser_name}".md + echo "+++ ${parser_name} docs complete" + fi + ) & done wait echo "Document Generation Complete" From 1d9965dad69ab0afb19f990433fc1f886c25a62c Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Sun, 25 Sep 2022 12:35:23 -0700 Subject: [PATCH 096/124] force doc update --- docgen.sh | 10 +++++----- docs/parsers/proc_net_arp.md | 2 +- jc/parsers/proc_net_arp.py | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docgen.sh b/docgen.sh index 4792d2e2..ccdfcfb2 100755 --- a/docgen.sh +++ b/docgen.sh @@ -113,9 +113,9 @@ do done < <(jc -a | jq -c '.parsers[] | select(.plugin != true)') for parser in "${parsers[@]}"; do - ( - parser_name=$(jq -r '.name' <<< "$parser") - if ! git diff --exit-code -- "jc/parsers/${parser_name}.py"; then + parser_name=$(jq -r '.name' <<< "$parser") + if ! git diff --quiet --exit-code -- "parsers/${parser_name}.py"; then + { compatible=$(jq -r '.compatible | join(", ")' <<< "$parser") version=$(jq -r '.version' <<< "$parser") author=$(jq -r '.author' <<< "$parser") @@ -129,8 +129,8 @@ for parser in "${parsers[@]}"; do echo >> ../docs/parsers/"${parser_name}".md echo "Version ${version} by ${author} (${author_email})" >> ../docs/parsers/"${parser_name}".md echo "+++ ${parser_name} docs complete" - fi - ) & + } & + fi done wait echo "Document Generation Complete" diff --git a/docs/parsers/proc_net_arp.md b/docs/parsers/proc_net_arp.md index 0585b5ca..c1eb30b2 100644 --- a/docs/parsers/proc_net_arp.md +++ b/docs/parsers/proc_net_arp.md @@ -3,7 +3,7 @@ # jc.parsers.proc\_net\_arp -jc - JSON Convert `/proc/net/arp` file parser +jc - JSON Convert `/proc/net/arp3` file parser Usage (cli): diff --git a/jc/parsers/proc_net_arp.py b/jc/parsers/proc_net_arp.py index 1535326d..8127e535 100644 --- a/jc/parsers/proc_net_arp.py +++ b/jc/parsers/proc_net_arp.py @@ -1,4 +1,4 @@ -"""jc - JSON Convert `/proc/net/arp` file parser +"""jc - JSON Convert `/proc/net/arp3` file parser Usage (cli): From 331171b826f96cb8c29b27cf5c54b7ac85a9e819 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Sun, 25 Sep 2022 12:38:17 -0700 Subject: [PATCH 097/124] optimize docgen --- docgen.sh | 28 ++++++++++++++-------------- docs/parsers/proc_net_arp.md | 2 +- jc/parsers/proc_net_arp.py | 2 +- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/docgen.sh b/docgen.sh index ccdfcfb2..dee2f9b0 100755 --- a/docgen.sh +++ b/docgen.sh @@ -114,23 +114,23 @@ done < <(jc -a | jq -c '.parsers[] | select(.plugin != true)') for parser in "${parsers[@]}"; do parser_name=$(jq -r '.name' <<< "$parser") - if ! git diff --quiet --exit-code -- "parsers/${parser_name}.py"; then { - compatible=$(jq -r '.compatible | join(", ")' <<< "$parser") - version=$(jq -r '.version' <<< "$parser") - author=$(jq -r '.author' <<< "$parser") - author_email=$(jq -r '.author_email' <<< "$parser") + if ! git diff --quiet --exit-code -- "parsers/${parser_name}.py"; then + compatible=$(jq -r '.compatible | join(", ")' <<< "$parser") + version=$(jq -r '.version' <<< "$parser") + author=$(jq -r '.author' <<< "$parser") + author_email=$(jq -r '.author_email' <<< "$parser") - echo "Building docs for: ${parser_name}" - echo "[Home](https://kellyjonbrazil.github.io/jc/)" > ../docs/parsers/"${parser_name}".md - pydoc-markdown -m jc.parsers."${parser_name}" "${parser_config}" >> ../docs/parsers/"${parser_name}".md - echo "### Parser Information" >> ../docs/parsers/"${parser_name}".md - echo "Compatibility: ${compatible}" >> ../docs/parsers/"${parser_name}".md - echo >> ../docs/parsers/"${parser_name}".md - echo "Version ${version} by ${author} (${author_email})" >> ../docs/parsers/"${parser_name}".md - echo "+++ ${parser_name} docs complete" + echo "Building docs for: ${parser_name}" + echo "[Home](https://kellyjonbrazil.github.io/jc/)" > ../docs/parsers/"${parser_name}".md + pydoc-markdown -m jc.parsers."${parser_name}" "${parser_config}" >> ../docs/parsers/"${parser_name}".md + echo "### Parser Information" >> ../docs/parsers/"${parser_name}".md + echo "Compatibility: ${compatible}" >> ../docs/parsers/"${parser_name}".md + echo >> ../docs/parsers/"${parser_name}".md + echo "Version ${version} by ${author} (${author_email})" >> ../docs/parsers/"${parser_name}".md + echo "+++ ${parser_name} docs complete" + fi } & - fi done wait echo "Document Generation Complete" diff --git a/docs/parsers/proc_net_arp.md b/docs/parsers/proc_net_arp.md index c1eb30b2..0585b5ca 100644 --- a/docs/parsers/proc_net_arp.md +++ b/docs/parsers/proc_net_arp.md @@ -3,7 +3,7 @@ # jc.parsers.proc\_net\_arp -jc - JSON Convert `/proc/net/arp3` file parser +jc - JSON Convert `/proc/net/arp` file parser Usage (cli): diff --git a/jc/parsers/proc_net_arp.py b/jc/parsers/proc_net_arp.py index 8127e535..1535326d 100644 --- a/jc/parsers/proc_net_arp.py +++ b/jc/parsers/proc_net_arp.py @@ -1,4 +1,4 @@ -"""jc - JSON Convert `/proc/net/arp3` file parser +"""jc - JSON Convert `/proc/net/arp` file parser Usage (cli): From 83a50bb610c2254ac9804e802d5d9008568ab90e Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Sun, 25 Sep 2022 13:02:25 -0700 Subject: [PATCH 098/124] add proc-net-dev parser --- jc/lib.py | 1 + jc/parsers/proc_net_dev.py | 173 +++++++++++++++++++++++++ man/jc.1 | 5 + tests/fixtures/linux-proc/net_dev.json | 1 + tests/test_proc_net_dev.py | 44 +++++++ 5 files changed, 224 insertions(+) create mode 100644 jc/parsers/proc_net_dev.py create mode 100644 tests/fixtures/linux-proc/net_dev.json create mode 100644 tests/test_proc_net_dev.py diff --git a/jc/lib.py b/jc/lib.py index e156054e..f4af774b 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -122,6 +122,7 @@ parsers = [ 'proc-pid-statm', 'proc-pid-status', 'proc-net-arp', + 'proc-net-dev', 'ps', 'route', 'rpm-qi', diff --git a/jc/parsers/proc_net_dev.py b/jc/parsers/proc_net_dev.py new file mode 100644 index 00000000..1b2997dd --- /dev/null +++ b/jc/parsers/proc_net_dev.py @@ -0,0 +1,173 @@ +"""jc - JSON Convert `/proc/net/dev` file parser + +Usage (cli): + + $ cat /proc/net/dev | jc --proc + +or + + $ jc /proc/net/dev + +or + + $ cat /proc/net/dev | jc --proc-net-dev + +Usage (module): + + import jc + result = jc.parse('proc', proc_net_dev_file) + +or + + import jc + result = jc.parse('proc_net_dev', proc_net_dev_file) + +Schema: + + [ + { + "interface": string, + "r_bytes": integer, + "r_packets": integer, + "r_errs": integer, + "r_drop": integer, + "r_fifo": integer, + "r_frame": integer, + "r_compressed": integer, + "r_multicast": integer, + "t_bytes": integer, + "t_packets": integer, + "t_errs": integer, + "t_drop": integer, + "t_fifo": integer, + "t_colls": integer, + "t_carrier": integer, + "t_compressed": integer + } + ] + +Examples: + + $ cat /proc/net/dev | jc --proc -p + [ + { + "interface": "lo", + "r_bytes": 13222, + "r_packets": 152, + "r_errs": 0, + "r_drop": 0, + "r_fifo": 0, + "r_frame": 0, + "r_compressed": 0, + "r_multicast": 0, + "t_bytes": 13222, + "t_packets": 152, + "t_errs": 0, + "t_drop": 0, + "t_fifo": 0, + "t_colls": 0, + "t_carrier": 0, + "t_compressed": 0 + }, + ... + ] + + $ cat /proc/net/dev | jc --proc -p -r + [ + { + "interface": "lo:", + "r_bytes": "13222", + "r_packets": "152", + "r_errs": "0", + "r_drop": "0", + "r_fifo": "0", + "r_frame": "0", + "r_compressed": "0", + "r_multicast": "0", + "t_bytes": "13222", + "t_packets": "152", + "t_errs": "0", + "t_drop": "0", + "t_fifo": "0", + "t_colls": "0", + "t_carrier": "0", + "t_compressed": "0" + }, + ... + ] +""" +from typing import List, Dict +import jc.utils +from jc.parsers.universal import simple_table_parse + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc/net/dev` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + hidden = True + + +__version__ = info.version + + +def _process(proc_data: List[Dict]) -> List[Dict]: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (List of Dictionaries) raw structured data to process + + Returns: + + List of Dictionaries. Structured to conform to the schema. + """ + for item in proc_data: + if 'interface' in item: + item['interface'] = item['interface'][:-1] + + for key, val in item.items(): + try: + item[key] = int(val) + except Exception: + pass + + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> List[Dict]: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + List of Dictionaries. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: List = [] + + if jc.utils.has_data(data): + + header = 'interface r_bytes r_packets r_errs r_drop r_fifo r_frame r_compressed r_multicast t_bytes t_packets t_errs t_drop t_fifo t_colls t_carrier t_compressed' + data_splitlines = data.splitlines() + data_splitlines.pop(0) + data_splitlines[0] = header + raw_output = simple_table_parse(data_splitlines) + + return raw_output if raw else _process(raw_output) diff --git a/man/jc.1 b/man/jc.1 index bd18b318..7f9f3170 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -595,6 +595,11 @@ PLIST file parser \fB--proc-net-arp\fP `/proc/net/arp` file parser +.TP +.B +\fB--proc-net-dev\fP +`/proc/net/dev` file parser + .TP .B \fB--ps\fP diff --git a/tests/fixtures/linux-proc/net_dev.json b/tests/fixtures/linux-proc/net_dev.json new file mode 100644 index 00000000..28844511 --- /dev/null +++ b/tests/fixtures/linux-proc/net_dev.json @@ -0,0 +1 @@ +[{"interface":"lo","r_bytes":13222,"r_packets":152,"r_errs":0,"r_drop":0,"r_fifo":0,"r_frame":0,"r_compressed":0,"r_multicast":0,"t_bytes":13222,"t_packets":152,"t_errs":0,"t_drop":0,"t_fifo":0,"t_colls":0,"t_carrier":0,"t_compressed":0},{"interface":"ens33","r_bytes":60600053,"r_packets":109378,"r_errs":0,"r_drop":0,"r_fifo":0,"r_frame":0,"r_compressed":0,"r_multicast":0,"t_bytes":44256546,"t_packets":121425,"t_errs":0,"t_drop":0,"t_fifo":0,"t_colls":0,"t_carrier":0,"t_compressed":0}] diff --git a/tests/test_proc_net_dev.py b/tests/test_proc_net_dev.py new file mode 100644 index 00000000..cb4196ef --- /dev/null +++ b/tests/test_proc_net_dev.py @@ -0,0 +1,44 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_net_dev + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_net_dev': ( + 'fixtures/linux-proc/net_dev', + 'fixtures/linux-proc/net_dev.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_net_dev_nodata(self): + """ + Test 'proc_net_dev' with no data + """ + self.assertEqual(jc.parsers.proc_net_dev.parse('', quiet=True), []) + + def test_proc_net_dev(self): + """ + Test '/proc/net/dev' + """ + self.assertEqual(jc.parsers.proc_net_dev.parse(self.f_in['proc_net_dev'], quiet=True), + self.f_json['proc_net_dev']) + + +if __name__ == '__main__': + unittest.main() From eb205562bfe567ede7eae3de8b078577054822ea Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Sun, 25 Sep 2022 13:07:31 -0700 Subject: [PATCH 099/124] force docupdate --- docgen.sh | 2 +- docs/parsers/proc_net_dev.md | 127 +++++++++++++++++++++++++++++++++++ jc/parsers/proc_net_dev.py | 2 +- 3 files changed, 129 insertions(+), 2 deletions(-) create mode 100644 docs/parsers/proc_net_dev.md diff --git a/docgen.sh b/docgen.sh index dee2f9b0..ffadbe45 100755 --- a/docgen.sh +++ b/docgen.sh @@ -115,7 +115,7 @@ done < <(jc -a | jq -c '.parsers[] | select(.plugin != true)') for parser in "${parsers[@]}"; do parser_name=$(jq -r '.name' <<< "$parser") { - if ! git diff --quiet --exit-code -- "parsers/${parser_name}.py"; then + if ! git diff --quiet --exit-code HEAD -- "parsers/${parser_name}.py"; then compatible=$(jq -r '.compatible | join(", ")' <<< "$parser") version=$(jq -r '.version' <<< "$parser") author=$(jq -r '.author' <<< "$parser") diff --git a/docs/parsers/proc_net_dev.md b/docs/parsers/proc_net_dev.md new file mode 100644 index 00000000..9f53b768 --- /dev/null +++ b/docs/parsers/proc_net_dev.md @@ -0,0 +1,127 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_net\_dev + +jc - JSON Convert `/proc/net/dev1` file parser + +Usage (cli): + + $ cat /proc/net/dev | jc --proc + +or + + $ jc /proc/net/dev + +or + + $ cat /proc/net/dev | jc --proc-net-dev + +Usage (module): + + import jc + result = jc.parse('proc', proc_net_dev_file) + +or + + import jc + result = jc.parse('proc_net_dev', proc_net_dev_file) + +Schema: + + [ + { + "interface": string, + "r_bytes": integer, + "r_packets": integer, + "r_errs": integer, + "r_drop": integer, + "r_fifo": integer, + "r_frame": integer, + "r_compressed": integer, + "r_multicast": integer, + "t_bytes": integer, + "t_packets": integer, + "t_errs": integer, + "t_drop": integer, + "t_fifo": integer, + "t_colls": integer, + "t_carrier": integer, + "t_compressed": integer + } + ] + +Examples: + + $ cat /proc/net/dev | jc --proc -p + [ + { + "interface": "lo", + "r_bytes": 13222, + "r_packets": 152, + "r_errs": 0, + "r_drop": 0, + "r_fifo": 0, + "r_frame": 0, + "r_compressed": 0, + "r_multicast": 0, + "t_bytes": 13222, + "t_packets": 152, + "t_errs": 0, + "t_drop": 0, + "t_fifo": 0, + "t_colls": 0, + "t_carrier": 0, + "t_compressed": 0 + }, + ... + ] + + $ cat /proc/net/dev | jc --proc -p -r + [ + { + "interface": "lo:", + "r_bytes": "13222", + "r_packets": "152", + "r_errs": "0", + "r_drop": "0", + "r_fifo": "0", + "r_frame": "0", + "r_compressed": "0", + "r_multicast": "0", + "t_bytes": "13222", + "t_packets": "152", + "t_errs": "0", + "t_drop": "0", + "t_fifo": "0", + "t_colls": "0", + "t_carrier": "0", + "t_compressed": "0" + }, + ... + ] + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict] +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + List of Dictionaries. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/parsers/proc_net_dev.py b/jc/parsers/proc_net_dev.py index 1b2997dd..5ca5450c 100644 --- a/jc/parsers/proc_net_dev.py +++ b/jc/parsers/proc_net_dev.py @@ -1,4 +1,4 @@ -"""jc - JSON Convert `/proc/net/dev` file parser +"""jc - JSON Convert `/proc/net/dev1` file parser Usage (cli): From c60e1e8d7f0d89110441c10bbea9fac3d2229322 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Sun, 25 Sep 2022 13:08:17 -0700 Subject: [PATCH 100/124] doc update --- docs/parsers/proc_net_dev.md | 2 +- jc/parsers/proc_net_dev.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/parsers/proc_net_dev.md b/docs/parsers/proc_net_dev.md index 9f53b768..e2bdc8d0 100644 --- a/docs/parsers/proc_net_dev.md +++ b/docs/parsers/proc_net_dev.md @@ -3,7 +3,7 @@ # jc.parsers.proc\_net\_dev -jc - JSON Convert `/proc/net/dev1` file parser +jc - JSON Convert `/proc/net/dev` file parser Usage (cli): diff --git a/jc/parsers/proc_net_dev.py b/jc/parsers/proc_net_dev.py index 5ca5450c..1b2997dd 100644 --- a/jc/parsers/proc_net_dev.py +++ b/jc/parsers/proc_net_dev.py @@ -1,4 +1,4 @@ -"""jc - JSON Convert `/proc/net/dev1` file parser +"""jc - JSON Convert `/proc/net/dev` file parser Usage (cli): From 3ebd89760133fd549d08c97d40f591761a4ccbf2 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Sun, 25 Sep 2022 13:32:03 -0700 Subject: [PATCH 101/124] add ./docgen all functionality --- docgen.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docgen.sh b/docgen.sh index ffadbe45..087b1299 100755 --- a/docgen.sh +++ b/docgen.sh @@ -1,6 +1,9 @@ #!/bin/bash # Generate docs.md # requires pydoc-markdown 4.6.1 + +# use ./docgen all to generate all docs + readme_config=$(cat <<'EOF' { "processors": [ @@ -115,7 +118,7 @@ done < <(jc -a | jq -c '.parsers[] | select(.plugin != true)') for parser in "${parsers[@]}"; do parser_name=$(jq -r '.name' <<< "$parser") { - if ! git diff --quiet --exit-code HEAD -- "parsers/${parser_name}.py"; then + if [[ $1 == "all" ]] || ! git diff --quiet --exit-code HEAD -- "parsers/${parser_name}.py"; then compatible=$(jq -r '.compatible | join(", ")' <<< "$parser") version=$(jq -r '.version' <<< "$parser") author=$(jq -r '.author' <<< "$parser") From be0f4477bf236853f90f8ccd4ba212c8b20ba94b Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Sun, 25 Sep 2022 13:44:29 -0700 Subject: [PATCH 102/124] add proc-net-dev_mcast parser --- docs/parsers/proc_net_dev_mcast.md | 105 ++++++++++++++++++++ jc/lib.py | 1 + jc/parsers/proc_net_dev_mcast.py | 150 +++++++++++++++++++++++++++++ man/jc.1 | 5 + 4 files changed, 261 insertions(+) create mode 100644 docs/parsers/proc_net_dev_mcast.md create mode 100644 jc/parsers/proc_net_dev_mcast.py diff --git a/docs/parsers/proc_net_dev_mcast.md b/docs/parsers/proc_net_dev_mcast.md new file mode 100644 index 00000000..05017451 --- /dev/null +++ b/docs/parsers/proc_net_dev_mcast.md @@ -0,0 +1,105 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_net\_dev\_mcast + +jc - JSON Convert `/proc/net/dev_mcast` file parser + +Usage (cli): + + $ cat /proc/net/dev_mcast | jc --proc + +or + + $ jc /proc/net/dev_mcast + +or + + $ cat /proc/net/dev_mcast | jc --proc-net-dev_mcast + +Usage (module): + + import jc + result = jc.parse('proc', proc_net_dev_mcast_file) + +or + + import jc + result = jc.parse('proc_net_dev_mcast', proc_net_dev_mcast_file) + +Schema: + + [ + { + "index": integer, + "interface_name": string, + "dmi_u": integer, + "dmi_g": integer, + "dmi_address": string + } + ] + +Examples: + + $ cat /proc/net/dev_mcast | jc --proc -p + [ + { + "index": 2, + "interface_name": "ens33", + "dmi_u": 1, + "dmi_g": 0, + "dmi_address": "333300000001" + }, + { + "index": 2, + "interface_name": "ens33", + "dmi_u": 1, + "dmi_g": 0, + "dmi_address": "01005e000001" + }, + ... + ] + + $ cat /proc/net/dev_mcast | jc --proc -p -r + [ + { + "index": "2", + "interface_name": "ens33", + "dmi_u": "1", + "dmi_g": "0", + "dmi_address": "333300000001" + }, + { + "index": "2", + "interface_name": "ens33", + "dmi_u": "1", + "dmi_g": "0", + "dmi_address": "01005e000001" + }, + ... + ] + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict] +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + List of Dictionaries. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/lib.py b/jc/lib.py index f4af774b..a54a0c90 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -123,6 +123,7 @@ parsers = [ 'proc-pid-status', 'proc-net-arp', 'proc-net-dev', + 'proc-net-dev-mcast', 'ps', 'route', 'rpm-qi', diff --git a/jc/parsers/proc_net_dev_mcast.py b/jc/parsers/proc_net_dev_mcast.py new file mode 100644 index 00000000..5502ef58 --- /dev/null +++ b/jc/parsers/proc_net_dev_mcast.py @@ -0,0 +1,150 @@ +"""jc - JSON Convert `/proc/net/dev_mcast` file parser + +Usage (cli): + + $ cat /proc/net/dev_mcast | jc --proc + +or + + $ jc /proc/net/dev_mcast + +or + + $ cat /proc/net/dev_mcast | jc --proc-net-dev_mcast + +Usage (module): + + import jc + result = jc.parse('proc', proc_net_dev_mcast_file) + +or + + import jc + result = jc.parse('proc_net_dev_mcast', proc_net_dev_mcast_file) + +Schema: + + [ + { + "index": integer, + "interface_name": string, + "dmi_u": integer, + "dmi_g": integer, + "dmi_address": string + } + ] + +Examples: + + $ cat /proc/net/dev_mcast | jc --proc -p + [ + { + "index": 2, + "interface_name": "ens33", + "dmi_u": 1, + "dmi_g": 0, + "dmi_address": "333300000001" + }, + { + "index": 2, + "interface_name": "ens33", + "dmi_u": 1, + "dmi_g": 0, + "dmi_address": "01005e000001" + }, + ... + ] + + $ cat /proc/net/dev_mcast | jc --proc -p -r + [ + { + "index": "2", + "interface_name": "ens33", + "dmi_u": "1", + "dmi_g": "0", + "dmi_address": "333300000001" + }, + { + "index": "2", + "interface_name": "ens33", + "dmi_u": "1", + "dmi_g": "0", + "dmi_address": "01005e000001" + }, + ... + ] +""" +from typing import List, Dict +import jc.utils +from jc.parsers.universal import simple_table_parse + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc/net/dev_mcast` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + hidden = True + + +__version__ = info.version + + +def _process(proc_data: List[Dict]) -> List[Dict]: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (List of Dictionaries) raw structured data to process + + Returns: + + List of Dictionaries. Structured to conform to the schema. + """ + no_convert = {'interface_name', 'dmi_address'} + + for item in proc_data: + for key, val in item.items(): + if key not in no_convert: + try: + item[key] = int(val) + except Exception: + pass + + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> List[Dict]: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + List of Dictionaries. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: List = [] + + if jc.utils.has_data(data): + + header = 'index interface_name dmi_u dmi_g dmi_address\n' + data = header + data + data_splitlines = data.splitlines() + raw_output = simple_table_parse(data_splitlines) + + return raw_output if raw else _process(raw_output) diff --git a/man/jc.1 b/man/jc.1 index 7f9f3170..8223559e 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -600,6 +600,11 @@ PLIST file parser \fB--proc-net-dev\fP `/proc/net/dev` file parser +.TP +.B +\fB--proc-net-dev-mcast\fP +`/proc/net/dev_mcast` file parser + .TP .B \fB--ps\fP From 95a38c771223f50ca37db0ae1183688272a48662 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Sun, 25 Sep 2022 13:50:42 -0700 Subject: [PATCH 103/124] add proc-net-dev-mcast parser docs and tests --- docs/parsers/proc_net_dev_mcast.md | 10 ++--- jc/parsers/proc_net_dev_mcast.py | 12 +++--- tests/fixtures/linux-proc/net_dev_mcast.json | 1 + tests/test_proc_net_dev_mcast.py | 44 ++++++++++++++++++++ 4 files changed, 56 insertions(+), 11 deletions(-) create mode 100644 tests/fixtures/linux-proc/net_dev_mcast.json create mode 100644 tests/test_proc_net_dev_mcast.py diff --git a/docs/parsers/proc_net_dev_mcast.md b/docs/parsers/proc_net_dev_mcast.md index 05017451..15c530e2 100644 --- a/docs/parsers/proc_net_dev_mcast.md +++ b/docs/parsers/proc_net_dev_mcast.md @@ -32,7 +32,7 @@ Schema: [ { "index": integer, - "interface_name": string, + "interface": string, "dmi_u": integer, "dmi_g": integer, "dmi_address": string @@ -45,14 +45,14 @@ Examples: [ { "index": 2, - "interface_name": "ens33", + "interface": "ens33", "dmi_u": 1, "dmi_g": 0, "dmi_address": "333300000001" }, { "index": 2, - "interface_name": "ens33", + "interface": "ens33", "dmi_u": 1, "dmi_g": 0, "dmi_address": "01005e000001" @@ -64,14 +64,14 @@ Examples: [ { "index": "2", - "interface_name": "ens33", + "interface": "ens33", "dmi_u": "1", "dmi_g": "0", "dmi_address": "333300000001" }, { "index": "2", - "interface_name": "ens33", + "interface": "ens33", "dmi_u": "1", "dmi_g": "0", "dmi_address": "01005e000001" diff --git a/jc/parsers/proc_net_dev_mcast.py b/jc/parsers/proc_net_dev_mcast.py index 5502ef58..03bf729d 100644 --- a/jc/parsers/proc_net_dev_mcast.py +++ b/jc/parsers/proc_net_dev_mcast.py @@ -27,7 +27,7 @@ Schema: [ { "index": integer, - "interface_name": string, + "interface": string, "dmi_u": integer, "dmi_g": integer, "dmi_address": string @@ -40,14 +40,14 @@ Examples: [ { "index": 2, - "interface_name": "ens33", + "interface": "ens33", "dmi_u": 1, "dmi_g": 0, "dmi_address": "333300000001" }, { "index": 2, - "interface_name": "ens33", + "interface": "ens33", "dmi_u": 1, "dmi_g": 0, "dmi_address": "01005e000001" @@ -59,14 +59,14 @@ Examples: [ { "index": "2", - "interface_name": "ens33", + "interface": "ens33", "dmi_u": "1", "dmi_g": "0", "dmi_address": "333300000001" }, { "index": "2", - "interface_name": "ens33", + "interface": "ens33", "dmi_u": "1", "dmi_g": "0", "dmi_address": "01005e000001" @@ -142,7 +142,7 @@ def parse( if jc.utils.has_data(data): - header = 'index interface_name dmi_u dmi_g dmi_address\n' + header = 'index interface dmi_u dmi_g dmi_address\n' data = header + data data_splitlines = data.splitlines() raw_output = simple_table_parse(data_splitlines) diff --git a/tests/fixtures/linux-proc/net_dev_mcast.json b/tests/fixtures/linux-proc/net_dev_mcast.json new file mode 100644 index 00000000..f0f348ea --- /dev/null +++ b/tests/fixtures/linux-proc/net_dev_mcast.json @@ -0,0 +1 @@ +[{"index":2,"interface":"ens33","dmi_u":1,"dmi_g":0,"dmi_address":"333300000001"},{"index":2,"interface":"ens33","dmi_u":1,"dmi_g":0,"dmi_address":"01005e000001"},{"index":2,"interface":"ens33","dmi_u":1,"dmi_g":0,"dmi_address":"0180c2000000"},{"index":2,"interface":"ens33","dmi_u":1,"dmi_g":0,"dmi_address":"0180c2000003"},{"index":2,"interface":"ens33","dmi_u":1,"dmi_g":0,"dmi_address":"0180c200000e"},{"index":2,"interface":"ens33","dmi_u":1,"dmi_g":0,"dmi_address":"3333ffa4e315"}] diff --git a/tests/test_proc_net_dev_mcast.py b/tests/test_proc_net_dev_mcast.py new file mode 100644 index 00000000..039374b0 --- /dev/null +++ b/tests/test_proc_net_dev_mcast.py @@ -0,0 +1,44 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_net_dev_mcast + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_net_dev_mcast': ( + 'fixtures/linux-proc/net_dev_mcast', + 'fixtures/linux-proc/net_dev_mcast.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_net_dev_mcast_nodata(self): + """ + Test 'proc_net_dev_mcast' with no data + """ + self.assertEqual(jc.parsers.proc_net_dev_mcast.parse('', quiet=True), []) + + def test_proc_net_dev_mcast(self): + """ + Test '/proc/net/dev_mcast' + """ + self.assertEqual(jc.parsers.proc_net_dev_mcast.parse(self.f_in['proc_net_dev_mcast'], quiet=True), + self.f_json['proc_net_dev_mcast']) + + +if __name__ == '__main__': + unittest.main() From fcfbbc6d84a1494dc98ba87f91d7045070e92c16 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Sun, 25 Sep 2022 14:13:20 -0700 Subject: [PATCH 104/124] add proc-net-if-inet6 parser and tests --- docs/parsers/proc_net_if_inet6.md | 88 ++++++++++++++ jc/lib.py | 1 + jc/parsers/proc_net_if_inet6.py | 122 ++++++++++++++++++++ tests/fixtures/linux-proc/net_if_inet6.json | 1 + tests/test_proc_net_if_inet6.py | 44 +++++++ 5 files changed, 256 insertions(+) create mode 100644 docs/parsers/proc_net_if_inet6.md create mode 100644 jc/parsers/proc_net_if_inet6.py create mode 100644 tests/fixtures/linux-proc/net_if_inet6.json create mode 100644 tests/test_proc_net_if_inet6.py diff --git a/docs/parsers/proc_net_if_inet6.md b/docs/parsers/proc_net_if_inet6.md new file mode 100644 index 00000000..893d6b3e --- /dev/null +++ b/docs/parsers/proc_net_if_inet6.md @@ -0,0 +1,88 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_net\_if\_inet6 + +jc - JSON Convert `/proc/net/if_inet6` file parser + +Usage (cli): + + $ cat /proc/net/if_inet6 | jc --proc + +or + + $ jc /proc/net/if_inet6 + +or + + $ cat /proc/net/if_inet6 | jc --proc-net-if-inet6 + +Usage (module): + + import jc + result = jc.parse('proc', proc_net_if_inet6_file) + +or + + import jc + result = jc.parse('proc_net_if_inet6', proc_net_if_inet6_file) + +Schema: + + [ + { + "address": string, + "index": string, + "prefix": string, + "scope": string, + "flags": string, + "name": string + } + ] + +Examples: + + $ cat /proc/net/if_inet6 | jc --proc -p + [ + { + "address": "fe80000000000000020c29fffea4e315", + "index": "02", + "prefix": "40", + "scope": "20", + "flags": "80", + "name": "ens33" + }, + { + "address": "00000000000000000000000000000001", + "index": "01", + "prefix": "80", + "scope": "10", + "flags": "80", + "name": "lo" + } + ] + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict] +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + List of Dictionaries. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/lib.py b/jc/lib.py index a54a0c90..b60efebd 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -124,6 +124,7 @@ parsers = [ 'proc-net-arp', 'proc-net-dev', 'proc-net-dev-mcast', + 'proc-net-if-inet6', 'ps', 'route', 'rpm-qi', diff --git a/jc/parsers/proc_net_if_inet6.py b/jc/parsers/proc_net_if_inet6.py new file mode 100644 index 00000000..700e8ba0 --- /dev/null +++ b/jc/parsers/proc_net_if_inet6.py @@ -0,0 +1,122 @@ +"""jc - JSON Convert `/proc/net/if_inet6` file parser + +Usage (cli): + + $ cat /proc/net/if_inet6 | jc --proc + +or + + $ jc /proc/net/if_inet6 + +or + + $ cat /proc/net/if_inet6 | jc --proc-net-if-inet6 + +Usage (module): + + import jc + result = jc.parse('proc', proc_net_if_inet6_file) + +or + + import jc + result = jc.parse('proc_net_if_inet6', proc_net_if_inet6_file) + +Schema: + + [ + { + "address": string, + "index": string, + "prefix": string, + "scope": string, + "flags": string, + "name": string + } + ] + +Examples: + + $ cat /proc/net/if_inet6 | jc --proc -p + [ + { + "address": "fe80000000000000020c29fffea4e315", + "index": "02", + "prefix": "40", + "scope": "20", + "flags": "80", + "name": "ens33" + }, + { + "address": "00000000000000000000000000000001", + "index": "01", + "prefix": "80", + "scope": "10", + "flags": "80", + "name": "lo" + } + ] +""" +from typing import List, Dict +import jc.utils +from jc.parsers.universal import simple_table_parse + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc/net/if_inet6` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + hidden = True + + +__version__ = info.version + + +def _process(proc_data: List[Dict]) -> List[Dict]: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (List of Dictionaries) raw structured data to process + + Returns: + + List of Dictionaries. Structured to conform to the schema. + """ + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> List[Dict]: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + List of Dictionaries. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: List = [] + + if jc.utils.has_data(data): + + header = 'address index prefix scope flags name\n' + data = header + data + raw_output = simple_table_parse(data.splitlines()) + + return raw_output if raw else _process(raw_output) diff --git a/tests/fixtures/linux-proc/net_if_inet6.json b/tests/fixtures/linux-proc/net_if_inet6.json new file mode 100644 index 00000000..8b1ca114 --- /dev/null +++ b/tests/fixtures/linux-proc/net_if_inet6.json @@ -0,0 +1 @@ +[{"address":"fe80000000000000020c29fffea4e315","index":"02","prefix":"40","scope":"20","flags":"80","name":"ens33"},{"address":"00000000000000000000000000000001","index":"01","prefix":"80","scope":"10","flags":"80","name":"lo"}] diff --git a/tests/test_proc_net_if_inet6.py b/tests/test_proc_net_if_inet6.py new file mode 100644 index 00000000..32e04fc9 --- /dev/null +++ b/tests/test_proc_net_if_inet6.py @@ -0,0 +1,44 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_net_if_inet6 + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_net_if_inet6': ( + 'fixtures/linux-proc/net_if_inet6', + 'fixtures/linux-proc/net_if_inet6.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_net_if_inet6_nodata(self): + """ + Test 'proc_net_if_inet6' with no data + """ + self.assertEqual(jc.parsers.proc_net_if_inet6.parse('', quiet=True), []) + + def test_proc_net_if_inet6(self): + """ + Test '/proc/net/if_inet6' + """ + self.assertEqual(jc.parsers.proc_net_if_inet6.parse(self.f_in['proc_net_if_inet6'], quiet=True), + self.f_json['proc_net_if_inet6']) + + +if __name__ == '__main__': + unittest.main() From e4a40704b562e3967f89db2829f3763e80241431 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Sun, 25 Sep 2022 15:19:43 -0700 Subject: [PATCH 105/124] add proc-net-igmp parser and tests --- docs/parsers/proc_net_igmp.md | 152 ++++++++++++ jc/lib.py | 1 + jc/parsers/proc_net_igmp.py | 231 +++++++++++++++++++ tests/fixtures/linux-proc/net_igmp.json | 1 + tests/fixtures/linux-proc/net_igmp_more | 30 +++ tests/fixtures/linux-proc/net_igmp_more.json | 1 + tests/test_proc_net_igmp.py | 54 +++++ 7 files changed, 470 insertions(+) create mode 100644 docs/parsers/proc_net_igmp.md create mode 100644 jc/parsers/proc_net_igmp.py create mode 100644 tests/fixtures/linux-proc/net_igmp.json create mode 100644 tests/fixtures/linux-proc/net_igmp_more create mode 100644 tests/fixtures/linux-proc/net_igmp_more.json create mode 100644 tests/test_proc_net_igmp.py diff --git a/docs/parsers/proc_net_igmp.md b/docs/parsers/proc_net_igmp.md new file mode 100644 index 00000000..9672f7ab --- /dev/null +++ b/docs/parsers/proc_net_igmp.md @@ -0,0 +1,152 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_net\_igmp + +jc - JSON Convert `/proc/net/igmp` file parser + +Usage (cli): + + $ cat /proc/net/igmp | jc --proc + +or + + $ jc /proc/net/igmp + +or + + $ cat /proc/net/igmp | jc --proc-net-igmp + +Usage (module): + + import jc + result = jc.parse('proc', proc_net_igmp_file) + +or + + import jc + result = jc.parse('proc_net_igmp', proc_net_igmp_file) + +Schema: + + [ + { + "index": integer, + "device": string, + "count": integer, + "querier": string, + "groups": [ + { + "address": string, + "users": integer, + "timer": string, + "reporter": integer + } + ] + } + ] + +Examples: + + $ cat /proc/net/igmp | jc --proc -p + [ + { + "index": 0, + "device": "lo", + "count": 0, + "querier": "V3", + "groups": [ + { + "address": "010000E0", + "users": 1, + "timer": "0:00000000", + "reporter": 0 + } + ] + }, + { + "index": 2, + "device": "eth0", + "count": 26, + "querier": "V2", + "groups": [ + { + "address": "260301E0", + "users": 1, + "timer": "0:00000000", + "reporter": 1 + }, + { + "address": "9B0101E0", + "users": 1, + "timer": "0:00000000", + "reporter": 1 + }, + ] + } + ... + ] + + $ cat /proc/net/igmp | jc --proc -p -r + [ + { + "index": "0", + "device": "lo", + "count": "0", + "querier": "V3", + "groups": [ + { + "address": "010000E0", + "users": "1", + "timer": "0:00000000", + "reporter": "0" + } + ] + }, + { + "index": "2", + "device": "eth0", + "count": "26", + "querier": "V2", + "groups": [ + { + "address": "260301E0", + "users": "1", + "timer": "0:00000000", + "reporter": "1" + }, + { + "address": "9B0101E0", + "users": "1", + "timer": "0:00000000", + "reporter": "1" + }, + ] + } + ... + } + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict] +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + List of Dictionaries. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/lib.py b/jc/lib.py index b60efebd..454f5811 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -125,6 +125,7 @@ parsers = [ 'proc-net-dev', 'proc-net-dev-mcast', 'proc-net-if-inet6', + 'proc-net-igmp', 'ps', 'route', 'rpm-qi', diff --git a/jc/parsers/proc_net_igmp.py b/jc/parsers/proc_net_igmp.py new file mode 100644 index 00000000..b230abfd --- /dev/null +++ b/jc/parsers/proc_net_igmp.py @@ -0,0 +1,231 @@ +"""jc - JSON Convert `/proc/net/igmp` file parser + +Usage (cli): + + $ cat /proc/net/igmp | jc --proc + +or + + $ jc /proc/net/igmp + +or + + $ cat /proc/net/igmp | jc --proc-net-igmp + +Usage (module): + + import jc + result = jc.parse('proc', proc_net_igmp_file) + +or + + import jc + result = jc.parse('proc_net_igmp', proc_net_igmp_file) + +Schema: + + [ + { + "index": integer, + "device": string, + "count": integer, + "querier": string, + "groups": [ + { + "address": string, + "users": integer, + "timer": string, + "reporter": integer + } + ] + } + ] + +Examples: + + $ cat /proc/net/igmp | jc --proc -p + [ + { + "index": 0, + "device": "lo", + "count": 0, + "querier": "V3", + "groups": [ + { + "address": "010000E0", + "users": 1, + "timer": "0:00000000", + "reporter": 0 + } + ] + }, + { + "index": 2, + "device": "eth0", + "count": 26, + "querier": "V2", + "groups": [ + { + "address": "260301E0", + "users": 1, + "timer": "0:00000000", + "reporter": 1 + }, + { + "address": "9B0101E0", + "users": 1, + "timer": "0:00000000", + "reporter": 1 + }, + ] + } + ... + ] + + $ cat /proc/net/igmp | jc --proc -p -r + [ + { + "index": "0", + "device": "lo", + "count": "0", + "querier": "V3", + "groups": [ + { + "address": "010000E0", + "users": "1", + "timer": "0:00000000", + "reporter": "0" + } + ] + }, + { + "index": "2", + "device": "eth0", + "count": "26", + "querier": "V2", + "groups": [ + { + "address": "260301E0", + "users": "1", + "timer": "0:00000000", + "reporter": "1" + }, + { + "address": "9B0101E0", + "users": "1", + "timer": "0:00000000", + "reporter": "1" + }, + ] + } + ... + } +""" +from typing import List, Dict +import jc.utils + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc/net/igmp` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + hidden = True + + +__version__ = info.version + + +def _process(proc_data: List[Dict]) -> List[Dict]: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (List of Dictionaries) raw structured data to process + + Returns: + + List of Dictionaries. Structured to conform to the schema. + """ + int_list = {'index', 'count', 'users', 'reporter'} + + for item in proc_data: + for key, val in item.items(): + if key in int_list: + item[key] = int(val) + + if 'groups' in item: + for group in item['groups']: + for key, val in group.items(): + if key in int_list: + group[key] = int(val) + + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> List[Dict]: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + List of Dictionaries. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: List = [] + output_line: Dict = {} + groups: List = [] + group: Dict = {} + + if jc.utils.has_data(data): + + for line in filter(None, data.splitlines()[1:]): + if not line.startswith('\t'): + if output_line: + if groups: + output_line['groups'] = groups + raw_output.append(output_line) + output_line = {} + groups = [] + group = {} + + index, device, _, count, querier = line.split() + output_line = { + 'index': index, + 'device': device, + 'count': count, + 'querier': querier + } + continue + + address, users, timer, reporter = line.split() + group = { + 'address': address, + 'users': users, + 'timer': timer, + 'reporter': reporter + } + groups.append(group) + continue + + if output_line: + if groups: + output_line['groups'] = groups + raw_output.append(output_line) + + return raw_output if raw else _process(raw_output) diff --git a/tests/fixtures/linux-proc/net_igmp.json b/tests/fixtures/linux-proc/net_igmp.json new file mode 100644 index 00000000..50647e4c --- /dev/null +++ b/tests/fixtures/linux-proc/net_igmp.json @@ -0,0 +1 @@ +[{"index":1,"device":"lo","count":1,"querier":"V3","groups":[{"address":"010000E0","users":1,"timer":"0:00000000","reporter":0}]},{"index":2,"device":"ens33","count":1,"querier":"V3","groups":[{"address":"010000E0","users":1,"timer":"0:00000000","reporter":0}]}] diff --git a/tests/fixtures/linux-proc/net_igmp_more b/tests/fixtures/linux-proc/net_igmp_more new file mode 100644 index 00000000..11d8a94d --- /dev/null +++ b/tests/fixtures/linux-proc/net_igmp_more @@ -0,0 +1,30 @@ +Idx Device : Count Querier Group Users Timer Reporter +0 lo : 0 V3 + 010000E0 1 0:00000000 0 +2 eth0 : 26 V2 + 260301E0 1 0:00000000 1 + 9B0101E0 1 0:00000000 1 + 439501E0 1 0:00000000 1 + 990101E0 1 0:00000000 1 + 580101E0 1 0:00000000 1 + 2A0301E0 1 0:00000000 1 + 290301E0 1 0:00000000 1 + 280301E0 1 0:00000000 1 + 9BD901E0 1 0:00000000 1 + 2D0301E0 1 0:00000000 1 + 2C0301E0 1 0:00000000 1 + 370301E0 1 0:00000000 1 + 050101E0 1 0:00000000 1 + 620201E0 1 0:00000000 1 + 040201E0 1 0:00000000 1 + 5F0101E0 1 0:00000000 1 + 520101E0 1 0:00000000 1 + 2BEF01E0 1 0:00000000 1 + 4D0101E0 1 0:00000000 1 + E00C01E0 1 0:00000000 1 + 400301E0 1 0:00000000 1 + FB0000E0 1 0:00000000 1 + 010000E0 1 0:00000000 0 +3 eth1 : 5 V2 + FB0000E0 1 0:00000000 1 + 010000E0 1 0:00000000 0 diff --git a/tests/fixtures/linux-proc/net_igmp_more.json b/tests/fixtures/linux-proc/net_igmp_more.json new file mode 100644 index 00000000..e7f9ec97 --- /dev/null +++ b/tests/fixtures/linux-proc/net_igmp_more.json @@ -0,0 +1 @@ +[{"index":0,"device":"lo","count":0,"querier":"V3","groups":[{"address":"010000E0","users":1,"timer":"0:00000000","reporter":0}]},{"index":2,"device":"eth0","count":26,"querier":"V2","groups":[{"address":"260301E0","users":1,"timer":"0:00000000","reporter":1},{"address":"9B0101E0","users":1,"timer":"0:00000000","reporter":1},{"address":"439501E0","users":1,"timer":"0:00000000","reporter":1},{"address":"990101E0","users":1,"timer":"0:00000000","reporter":1},{"address":"580101E0","users":1,"timer":"0:00000000","reporter":1},{"address":"2A0301E0","users":1,"timer":"0:00000000","reporter":1},{"address":"290301E0","users":1,"timer":"0:00000000","reporter":1},{"address":"280301E0","users":1,"timer":"0:00000000","reporter":1},{"address":"9BD901E0","users":1,"timer":"0:00000000","reporter":1},{"address":"2D0301E0","users":1,"timer":"0:00000000","reporter":1},{"address":"2C0301E0","users":1,"timer":"0:00000000","reporter":1},{"address":"370301E0","users":1,"timer":"0:00000000","reporter":1},{"address":"050101E0","users":1,"timer":"0:00000000","reporter":1},{"address":"620201E0","users":1,"timer":"0:00000000","reporter":1},{"address":"040201E0","users":1,"timer":"0:00000000","reporter":1},{"address":"5F0101E0","users":1,"timer":"0:00000000","reporter":1},{"address":"520101E0","users":1,"timer":"0:00000000","reporter":1},{"address":"2BEF01E0","users":1,"timer":"0:00000000","reporter":1},{"address":"4D0101E0","users":1,"timer":"0:00000000","reporter":1},{"address":"E00C01E0","users":1,"timer":"0:00000000","reporter":1},{"address":"400301E0","users":1,"timer":"0:00000000","reporter":1},{"address":"FB0000E0","users":1,"timer":"0:00000000","reporter":1},{"address":"010000E0","users":1,"timer":"0:00000000","reporter":0}]},{"index":3,"device":"eth1","count":5,"querier":"V2","groups":[{"address":"FB0000E0","users":1,"timer":"0:00000000","reporter":1},{"address":"010000E0","users":1,"timer":"0:00000000","reporter":0}]}] diff --git a/tests/test_proc_net_igmp.py b/tests/test_proc_net_igmp.py new file mode 100644 index 00000000..bcff2514 --- /dev/null +++ b/tests/test_proc_net_igmp.py @@ -0,0 +1,54 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_net_igmp + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_net_igmp': ( + 'fixtures/linux-proc/net_igmp', + 'fixtures/linux-proc/net_igmp.json'), + 'proc_net_igmp_more': ( + 'fixtures/linux-proc/net_igmp_more', + 'fixtures/linux-proc/net_igmp_more.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_net_igmp_nodata(self): + """ + Test 'proc_net_igmp' with no data + """ + self.assertEqual(jc.parsers.proc_net_igmp.parse('', quiet=True), []) + + def test_proc_net_igmp(self): + """ + Test '/proc/net/igmp' + """ + self.assertEqual(jc.parsers.proc_net_igmp.parse(self.f_in['proc_net_igmp'], quiet=True), + self.f_json['proc_net_igmp']) + + def test_proc_net_igmp_more(self): + """ + Test '/proc/net/igmp' additional file + """ + self.assertEqual(jc.parsers.proc_net_igmp.parse(self.f_in['proc_net_igmp_more'], quiet=True), + self.f_json['proc_net_igmp_more']) + + +if __name__ == '__main__': + unittest.main() From 5186347b483f73e5f7b3cfd4218181d207707fce Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Sun, 25 Sep 2022 18:16:54 -0700 Subject: [PATCH 106/124] add proc-net-igmp6 parser and tests --- docs/parsers/proc_net_igmp6.md | 125 +++++++++++++++++ jc/lib.py | 1 + jc/parsers/proc_net_igmp6.py | 166 +++++++++++++++++++++++ man/jc.1 | 15 ++ tests/fixtures/linux-proc/net_igmp6.json | 1 + tests/test_proc_net_igmp6.py | 44 ++++++ 6 files changed, 352 insertions(+) create mode 100644 docs/parsers/proc_net_igmp6.md create mode 100644 jc/parsers/proc_net_igmp6.py create mode 100644 tests/fixtures/linux-proc/net_igmp6.json create mode 100644 tests/test_proc_net_igmp6.py diff --git a/docs/parsers/proc_net_igmp6.md b/docs/parsers/proc_net_igmp6.md new file mode 100644 index 00000000..917446f4 --- /dev/null +++ b/docs/parsers/proc_net_igmp6.md @@ -0,0 +1,125 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_net\_igmp6 + +jc - JSON Convert `/proc/net/igmp6` file parser + +Usage (cli): + + $ cat /proc/net/igmp6 | jc --proc + +or + + $ jc /proc/net/igmp6 + +or + + $ cat /proc/net/igmp6 | jc --proc-net-if-inet6 + +Usage (module): + + import jc + result = jc.parse('proc', proc_net_igmp6_file) + +or + + import jc + result = jc.parse('proc_net_igmp6', proc_net_igmp6_file) + +Schema: + + [ + { + "index": integer, + "name": string, + "address": string, + "users": integer, + "group": string, + "reporters": integer + } + ] + +Examples: + + $ cat /proc/net/igmp6 | jc --proc -p + [ + { + "index": 1, + "name": "lo", + "address": "ff020000000000000000000000000001", + "users": 1, + "group": "0000000C", + "reporters": 0 + }, + { + "index": 1, + "name": "lo", + "address": "ff010000000000000000000000000001", + "users": 1, + "group": "00000008", + "reporters": 0 + }, + { + "index": 2, + "name": "ens33", + "address": "ff0200000000000000000001ffa4e315", + "users": 1, + "group": "00000004", + "reporters": 0 + }, + ... + ] + + $ cat /proc/net/igmp6 | jc --proc -p -r + [ + { + "index": "1", + "name": "lo", + "address": "ff020000000000000000000000000001", + "users": "1", + "group": "0000000C", + "reporters": "0" + }, + { + "index": "1", + "name": "lo", + "address": "ff010000000000000000000000000001", + "users": "1", + "group": "00000008", + "reporters": "0" + }, + { + "index": "2", + "name": "ens33", + "address": "ff0200000000000000000001ffa4e315", + "users": "1", + "group": "00000004", + "reporters": "0" + } + ] + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict] +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + List of Dictionaries. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/lib.py b/jc/lib.py index 454f5811..e4787e93 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -126,6 +126,7 @@ parsers = [ 'proc-net-dev-mcast', 'proc-net-if-inet6', 'proc-net-igmp', + 'proc-net-igmp6', 'ps', 'route', 'rpm-qi', diff --git a/jc/parsers/proc_net_igmp6.py b/jc/parsers/proc_net_igmp6.py new file mode 100644 index 00000000..8517657f --- /dev/null +++ b/jc/parsers/proc_net_igmp6.py @@ -0,0 +1,166 @@ +"""jc - JSON Convert `/proc/net/igmp6` file parser + +Usage (cli): + + $ cat /proc/net/igmp6 | jc --proc + +or + + $ jc /proc/net/igmp6 + +or + + $ cat /proc/net/igmp6 | jc --proc-net-if-inet6 + +Usage (module): + + import jc + result = jc.parse('proc', proc_net_igmp6_file) + +or + + import jc + result = jc.parse('proc_net_igmp6', proc_net_igmp6_file) + +Schema: + + [ + { + "index": integer, + "name": string, + "address": string, + "users": integer, + "group": string, + "reporters": integer + } + ] + +Examples: + + $ cat /proc/net/igmp6 | jc --proc -p + [ + { + "index": 1, + "name": "lo", + "address": "ff020000000000000000000000000001", + "users": 1, + "group": "0000000C", + "reporters": 0 + }, + { + "index": 1, + "name": "lo", + "address": "ff010000000000000000000000000001", + "users": 1, + "group": "00000008", + "reporters": 0 + }, + { + "index": 2, + "name": "ens33", + "address": "ff0200000000000000000001ffa4e315", + "users": 1, + "group": "00000004", + "reporters": 0 + }, + ... + ] + + $ cat /proc/net/igmp6 | jc --proc -p -r + [ + { + "index": "1", + "name": "lo", + "address": "ff020000000000000000000000000001", + "users": "1", + "group": "0000000C", + "reporters": "0" + }, + { + "index": "1", + "name": "lo", + "address": "ff010000000000000000000000000001", + "users": "1", + "group": "00000008", + "reporters": "0" + }, + { + "index": "2", + "name": "ens33", + "address": "ff0200000000000000000001ffa4e315", + "users": "1", + "group": "00000004", + "reporters": "0" + } + ] +""" +from typing import List, Dict +import jc.utils +from jc.parsers.universal import simple_table_parse + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc/net/igmp6` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + hidden = True + + +__version__ = info.version + + +def _process(proc_data: List[Dict]) -> List[Dict]: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (List of Dictionaries) raw structured data to process + + Returns: + + List of Dictionaries. Structured to conform to the schema. + """ + int_list = {'index', 'users', 'reporters'} + + for item in proc_data: + for key, val in item.items(): + if key in int_list: + item[key] = int(val) + + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> List[Dict]: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + List of Dictionaries. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: List = [] + + if jc.utils.has_data(data): + + header = 'index name address users group reporters\n' + data = header + data + raw_output = simple_table_parse(data.splitlines()) + + return raw_output if raw else _process(raw_output) diff --git a/man/jc.1 b/man/jc.1 index 8223559e..aa9e78f5 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -605,6 +605,21 @@ PLIST file parser \fB--proc-net-dev-mcast\fP `/proc/net/dev_mcast` file parser +.TP +.B +\fB--proc-net-if-inet6\fP +`/proc/net/if_inet6` file parser + +.TP +.B +\fB--proc-net-igmp\fP +`/proc/net/igmp` file parser + +.TP +.B +\fB--proc-net-igmp6\fP +`/proc/net/igmp6` file parser + .TP .B \fB--ps\fP diff --git a/tests/fixtures/linux-proc/net_igmp6.json b/tests/fixtures/linux-proc/net_igmp6.json new file mode 100644 index 00000000..aafe98ba --- /dev/null +++ b/tests/fixtures/linux-proc/net_igmp6.json @@ -0,0 +1 @@ +[{"index":1,"name":"lo","address":"ff020000000000000000000000000001","users":1,"group":"0000000C","reporters":0},{"index":1,"name":"lo","address":"ff010000000000000000000000000001","users":1,"group":"00000008","reporters":0},{"index":2,"name":"ens33","address":"ff0200000000000000000001ffa4e315","users":1,"group":"00000004","reporters":0},{"index":2,"name":"ens33","address":"ff020000000000000000000000000001","users":2,"group":"0000000C","reporters":0},{"index":2,"name":"ens33","address":"ff010000000000000000000000000001","users":1,"group":"00000008","reporters":0}] diff --git a/tests/test_proc_net_igmp6.py b/tests/test_proc_net_igmp6.py new file mode 100644 index 00000000..364e15ed --- /dev/null +++ b/tests/test_proc_net_igmp6.py @@ -0,0 +1,44 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_net_igmp6 + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_net_igmp6': ( + 'fixtures/linux-proc/net_igmp6', + 'fixtures/linux-proc/net_igmp6.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_net_igmp6_nodata(self): + """ + Test 'proc_net_igmp6' with no data + """ + self.assertEqual(jc.parsers.proc_net_igmp6.parse('', quiet=True), []) + + def test_proc_net_igmp6(self): + """ + Test '/proc/net/igmp6' + """ + self.assertEqual(jc.parsers.proc_net_igmp6.parse(self.f_in['proc_net_igmp6'], quiet=True), + self.f_json['proc_net_igmp6']) + + +if __name__ == '__main__': + unittest.main() From c9fcd3d203c48ccc5c0ff579d9c3173c353b0942 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Sun, 25 Sep 2022 18:28:23 -0700 Subject: [PATCH 107/124] add proc-net-ipv6-route parser and tests --- docs/parsers/proc_net_igmp6.md | 2 +- docs/parsers/proc_net_ipv6_route.md | 89 +++++++++++++ jc/lib.py | 1 + jc/parsers/proc_net_igmp6.py | 2 +- jc/parsers/proc_net_ipv6_route.py | 123 ++++++++++++++++++ man/jc.1 | 5 + tests/fixtures/linux-proc/net_ipv6_route.json | 1 + tests/test_proc_net_ipv6_route.py | 44 +++++++ 8 files changed, 265 insertions(+), 2 deletions(-) create mode 100644 docs/parsers/proc_net_ipv6_route.md create mode 100644 jc/parsers/proc_net_ipv6_route.py create mode 100644 tests/fixtures/linux-proc/net_ipv6_route.json create mode 100644 tests/test_proc_net_ipv6_route.py diff --git a/docs/parsers/proc_net_igmp6.md b/docs/parsers/proc_net_igmp6.md index 917446f4..089950c5 100644 --- a/docs/parsers/proc_net_igmp6.md +++ b/docs/parsers/proc_net_igmp6.md @@ -15,7 +15,7 @@ or or - $ cat /proc/net/igmp6 | jc --proc-net-if-inet6 + $ cat /proc/net/igmp6 | jc --proc-net-igmp6 Usage (module): diff --git a/docs/parsers/proc_net_ipv6_route.md b/docs/parsers/proc_net_ipv6_route.md new file mode 100644 index 00000000..9c8f033f --- /dev/null +++ b/docs/parsers/proc_net_ipv6_route.md @@ -0,0 +1,89 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_net\_ipv6\_route + +jc - JSON Convert `/proc/net/ipv6_route` file parser + +Usage (cli): + + $ cat /proc/net/ipv6_route | jc --proc + +or + + $ jc /proc/net/ipv6_route + +or + + $ cat /proc/net/ipv6_route | jc --proc-net-ipv6-route + +Usage (module): + + import jc + result = jc.parse('proc', proc_net_ipv6_route_file) + +or + + import jc + result = jc.parse('proc_net_ipv6_route', proc_net_ipv6_route_file) + +Schema: + + [ + { + "dest_net": string, + "dest_prefix": string, + "source_net": string, + "source_prefix": string, + "next_hop": string, + "metric": string, + "ref_count": string, + "use_count": string, + "flags": string, + "device": string + } + ] + +Examples: + + $ cat /proc/net/ipv6_route | jc --proc -p + [ + { + "dest_net": "00000000000000000000000000000001", + "dest_prefix": "80", + "source_net": "00000000000000000000000000000000", + "source_prefix": "00", + "next_hop": "00000000000000000000000000000000", + "metric": "00000100", + "ref_count": "00000001", + "use_count": "00000000", + "flags": "00000001", + "device": "lo" + }, + ... + ] + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict] +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + List of Dictionaries. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/lib.py b/jc/lib.py index e4787e93..9ca3f68d 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -127,6 +127,7 @@ parsers = [ 'proc-net-if-inet6', 'proc-net-igmp', 'proc-net-igmp6', + 'proc-net-ipv6-route', 'ps', 'route', 'rpm-qi', diff --git a/jc/parsers/proc_net_igmp6.py b/jc/parsers/proc_net_igmp6.py index 8517657f..543e6afa 100644 --- a/jc/parsers/proc_net_igmp6.py +++ b/jc/parsers/proc_net_igmp6.py @@ -10,7 +10,7 @@ or or - $ cat /proc/net/igmp6 | jc --proc-net-if-inet6 + $ cat /proc/net/igmp6 | jc --proc-net-igmp6 Usage (module): diff --git a/jc/parsers/proc_net_ipv6_route.py b/jc/parsers/proc_net_ipv6_route.py new file mode 100644 index 00000000..ccc0be1a --- /dev/null +++ b/jc/parsers/proc_net_ipv6_route.py @@ -0,0 +1,123 @@ +"""jc - JSON Convert `/proc/net/ipv6_route` file parser + +Usage (cli): + + $ cat /proc/net/ipv6_route | jc --proc + +or + + $ jc /proc/net/ipv6_route + +or + + $ cat /proc/net/ipv6_route | jc --proc-net-ipv6-route + +Usage (module): + + import jc + result = jc.parse('proc', proc_net_ipv6_route_file) + +or + + import jc + result = jc.parse('proc_net_ipv6_route', proc_net_ipv6_route_file) + +Schema: + + [ + { + "dest_net": string, + "dest_prefix": string, + "source_net": string, + "source_prefix": string, + "next_hop": string, + "metric": string, + "ref_count": string, + "use_count": string, + "flags": string, + "device": string + } + ] + +Examples: + + $ cat /proc/net/ipv6_route | jc --proc -p + [ + { + "dest_net": "00000000000000000000000000000001", + "dest_prefix": "80", + "source_net": "00000000000000000000000000000000", + "source_prefix": "00", + "next_hop": "00000000000000000000000000000000", + "metric": "00000100", + "ref_count": "00000001", + "use_count": "00000000", + "flags": "00000001", + "device": "lo" + }, + ... + ] +""" +from typing import List, Dict +import jc.utils +from jc.parsers.universal import simple_table_parse + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc/net/ipv6_route` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + hidden = True + + +__version__ = info.version + + +def _process(proc_data: List[Dict]) -> List[Dict]: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (List of Dictionaries) raw structured data to process + + Returns: + + List of Dictionaries. Structured to conform to the schema. + """ + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> List[Dict]: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + List of Dictionaries. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: List = [] + + if jc.utils.has_data(data): + + header = 'dest_net dest_prefix source_net source_prefix next_hop metric ref_count use_count flags device\n' + data = header + data + raw_output = simple_table_parse(data.splitlines()) + + return raw_output if raw else _process(raw_output) diff --git a/man/jc.1 b/man/jc.1 index aa9e78f5..2aa7db1b 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -620,6 +620,11 @@ PLIST file parser \fB--proc-net-igmp6\fP `/proc/net/igmp6` file parser +.TP +.B +\fB--proc-net-ipv6-route\fP +`/proc/net/ipv6_route` file parser + .TP .B \fB--ps\fP diff --git a/tests/fixtures/linux-proc/net_ipv6_route.json b/tests/fixtures/linux-proc/net_ipv6_route.json new file mode 100644 index 00000000..aa0dc1c7 --- /dev/null +++ b/tests/fixtures/linux-proc/net_ipv6_route.json @@ -0,0 +1 @@ +[{"dest_net":"00000000000000000000000000000001","dest_prefix":"80","source_net":"00000000000000000000000000000000","source_prefix":"00","next_hop":"00000000000000000000000000000000","metric":"00000100","ref_count":"00000001","use_count":"00000000","flags":"00000001","device":"lo"},{"dest_net":"fe800000000000000000000000000000","dest_prefix":"40","source_net":"00000000000000000000000000000000","source_prefix":"00","next_hop":"00000000000000000000000000000000","metric":"00000100","ref_count":"00000001","use_count":"00000000","flags":"00000001","device":"ens33"},{"dest_net":"00000000000000000000000000000000","dest_prefix":"00","source_net":"00000000000000000000000000000000","source_prefix":"00","next_hop":"00000000000000000000000000000000","metric":"ffffffff","ref_count":"00000001","use_count":"00000000","flags":"00200200","device":"lo"},{"dest_net":"00000000000000000000000000000001","dest_prefix":"80","source_net":"00000000000000000000000000000000","source_prefix":"00","next_hop":"00000000000000000000000000000000","metric":"00000000","ref_count":"00000004","use_count":"00000000","flags":"80200001","device":"lo"},{"dest_net":"fe80000000000000020c29fffea4e315","dest_prefix":"80","source_net":"00000000000000000000000000000000","source_prefix":"00","next_hop":"00000000000000000000000000000000","metric":"00000000","ref_count":"00000002","use_count":"00000000","flags":"80200001","device":"ens33"},{"dest_net":"ff000000000000000000000000000000","dest_prefix":"08","source_net":"00000000000000000000000000000000","source_prefix":"00","next_hop":"00000000000000000000000000000000","metric":"00000100","ref_count":"00000004","use_count":"00000000","flags":"00000001","device":"ens33"},{"dest_net":"00000000000000000000000000000000","dest_prefix":"00","source_net":"00000000000000000000000000000000","source_prefix":"00","next_hop":"00000000000000000000000000000000","metric":"ffffffff","ref_count":"00000001","use_count":"00000000","flags":"00200200","device":"lo"}] diff --git a/tests/test_proc_net_ipv6_route.py b/tests/test_proc_net_ipv6_route.py new file mode 100644 index 00000000..c696fb02 --- /dev/null +++ b/tests/test_proc_net_ipv6_route.py @@ -0,0 +1,44 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_net_ipv6_route + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_net_ipv6_route': ( + 'fixtures/linux-proc/net_ipv6_route', + 'fixtures/linux-proc/net_ipv6_route.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_net_ipv6_route_nodata(self): + """ + Test 'proc_net_ipv6_route' with no data + """ + self.assertEqual(jc.parsers.proc_net_ipv6_route.parse('', quiet=True), []) + + def test_proc_net_ipv6_route(self): + """ + Test '/proc/net/ipv6_route' + """ + self.assertEqual(jc.parsers.proc_net_ipv6_route.parse(self.f_in['proc_net_ipv6_route'], quiet=True), + self.f_json['proc_net_ipv6_route']) + + +if __name__ == '__main__': + unittest.main() From ab3dc4135844cf95b2fd539f1defbc11ab5b1359 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Sun, 25 Sep 2022 19:36:12 -0700 Subject: [PATCH 108/124] add proc-net-netlink parser and tests --- docs/parsers/proc_net_netlink.md | 130 ++++++++++++++++ jc/lib.py | 1 + jc/parsers/proc_net_netlink.py | 169 +++++++++++++++++++++ man/jc.1 | 5 + tests/fixtures/linux-proc/net_netlink.json | 1 + tests/test_proc_net_netlink.py | 44 ++++++ 6 files changed, 350 insertions(+) create mode 100644 docs/parsers/proc_net_netlink.md create mode 100644 jc/parsers/proc_net_netlink.py create mode 100644 tests/fixtures/linux-proc/net_netlink.json create mode 100644 tests/test_proc_net_netlink.py diff --git a/docs/parsers/proc_net_netlink.md b/docs/parsers/proc_net_netlink.md new file mode 100644 index 00000000..54b40a83 --- /dev/null +++ b/docs/parsers/proc_net_netlink.md @@ -0,0 +1,130 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_net\_netlink + +jc - JSON Convert `/proc/net/netlink` file parser + +Usage (cli): + + $ cat /proc/net/netlink | jc --proc + +or + + $ jc /proc/net/netlink + +or + + $ cat /proc/net/netlink | jc --proc-net-netlink + +Usage (module): + + import jc + result = jc.parse('proc', proc_net_netlink_file) + +or + + import jc + result = jc.parse('proc_net_netlink', proc_net_netlink_file) + +Schema: + + [ + { + "sk": string, + "Eth": integer, + "Pid": integer, + "Groups": string, + "Rmem": integer, + "Wmem": integer, + "Dump": integer, + "Locks": integer, + "Drops": integer, + "Inode": integer + } + ] + +Examples: + + $ cat /proc/net/netlink | jc --proc -p + [ + { + "sk": "ffff9b61adaff000", + "Eth": 0, + "Pid": 1, + "Groups": "800405d5", + "Rmem": 0, + "Wmem": 0, + "Dump": 0, + "Locks": 2, + "Drops": 0, + "Inode": 29791 + }, + { + "sk": "ffff9b61a792a000", + "Eth": 0, + "Pid": 837, + "Groups": "00000111", + "Rmem": 0, + "Wmem": 0, + "Dump": 0, + "Locks": 2, + "Drops": 0, + "Inode": 35337 + }, + ... + ] + + $ cat /proc/net/netlink | jc --proc -p -r + [ + { + "sk": "ffff9b61adaff000", + "Eth": "0", + "Pid": "1", + "Groups": "800405d5", + "Rmem": "0", + "Wmem": "0", + "Dump": "0", + "Locks": "2", + "Drops": "0", + "Inode": "29791" + }, + { + "sk": "ffff9b61a792a000", + "Eth": "0", + "Pid": "837", + "Groups": "00000111", + "Rmem": "0", + "Wmem": "0", + "Dump": "0", + "Locks": "2", + "Drops": "0", + "Inode": "35337" + }, + ... + ] + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict] +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + List of Dictionaries. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/lib.py b/jc/lib.py index 9ca3f68d..ec172cd8 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -128,6 +128,7 @@ parsers = [ 'proc-net-igmp', 'proc-net-igmp6', 'proc-net-ipv6-route', + 'proc-net-netlink', 'ps', 'route', 'rpm-qi', diff --git a/jc/parsers/proc_net_netlink.py b/jc/parsers/proc_net_netlink.py new file mode 100644 index 00000000..be3a4496 --- /dev/null +++ b/jc/parsers/proc_net_netlink.py @@ -0,0 +1,169 @@ +"""jc - JSON Convert `/proc/net/netlink` file parser + +Usage (cli): + + $ cat /proc/net/netlink | jc --proc + +or + + $ jc /proc/net/netlink + +or + + $ cat /proc/net/netlink | jc --proc-net-netlink + +Usage (module): + + import jc + result = jc.parse('proc', proc_net_netlink_file) + +or + + import jc + result = jc.parse('proc_net_netlink', proc_net_netlink_file) + +Schema: + + [ + { + "sk": string, + "Eth": integer, + "Pid": integer, + "Groups": string, + "Rmem": integer, + "Wmem": integer, + "Dump": integer, + "Locks": integer, + "Drops": integer, + "Inode": integer + } + ] + +Examples: + + $ cat /proc/net/netlink | jc --proc -p + [ + { + "sk": "ffff9b61adaff000", + "Eth": 0, + "Pid": 1, + "Groups": "800405d5", + "Rmem": 0, + "Wmem": 0, + "Dump": 0, + "Locks": 2, + "Drops": 0, + "Inode": 29791 + }, + { + "sk": "ffff9b61a792a000", + "Eth": 0, + "Pid": 837, + "Groups": "00000111", + "Rmem": 0, + "Wmem": 0, + "Dump": 0, + "Locks": 2, + "Drops": 0, + "Inode": 35337 + }, + ... + ] + + $ cat /proc/net/netlink | jc --proc -p -r + [ + { + "sk": "ffff9b61adaff000", + "Eth": "0", + "Pid": "1", + "Groups": "800405d5", + "Rmem": "0", + "Wmem": "0", + "Dump": "0", + "Locks": "2", + "Drops": "0", + "Inode": "29791" + }, + { + "sk": "ffff9b61a792a000", + "Eth": "0", + "Pid": "837", + "Groups": "00000111", + "Rmem": "0", + "Wmem": "0", + "Dump": "0", + "Locks": "2", + "Drops": "0", + "Inode": "35337" + }, + ... + ] +""" +from typing import List, Dict +import jc.utils +from jc.parsers.universal import simple_table_parse + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc/net/netlink` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + hidden = True + + +__version__ = info.version + + +def _process(proc_data: List[Dict]) -> List[Dict]: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (List of Dictionaries) raw structured data to process + + Returns: + + List of Dictionaries. Structured to conform to the schema. + """ + int_list = {'Eth', 'Pid', 'Rmem', 'Wmem', 'Dump', 'Locks', 'Drops', 'Inode'} + + for item in proc_data: + for key, val in item.items(): + if key in int_list: + item[key] = int(val) + + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> List[Dict]: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + List of Dictionaries. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: List = [] + + if jc.utils.has_data(data): + + raw_output = simple_table_parse(data.splitlines()) + + return raw_output if raw else _process(raw_output) diff --git a/man/jc.1 b/man/jc.1 index 2aa7db1b..28ce203d 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -625,6 +625,11 @@ PLIST file parser \fB--proc-net-ipv6-route\fP `/proc/net/ipv6_route` file parser +.TP +.B +\fB--proc-net-netlink\fP +`/proc/net/netlink` file parser + .TP .B \fB--ps\fP diff --git a/tests/fixtures/linux-proc/net_netlink.json b/tests/fixtures/linux-proc/net_netlink.json new file mode 100644 index 00000000..aaa0f5fa --- /dev/null +++ b/tests/fixtures/linux-proc/net_netlink.json @@ -0,0 +1 @@ +[{"sk":"ffff9b61adaff000","Eth":0,"Pid":1,"Groups":"800405d5","Rmem":0,"Wmem":0,"Dump":0,"Locks":2,"Drops":0,"Inode":29791},{"sk":"ffff9b61a792a000","Eth":0,"Pid":837,"Groups":"00000111","Rmem":0,"Wmem":0,"Dump":0,"Locks":2,"Drops":0,"Inode":35337},{"sk":"ffff9b61b8e4d000","Eth":0,"Pid":0,"Groups":"00000000","Rmem":0,"Wmem":0,"Dump":0,"Locks":2,"Drops":0,"Inode":17},{"sk":"ffff9b61a7464800","Eth":4,"Pid":0,"Groups":"00000000","Rmem":0,"Wmem":0,"Dump":0,"Locks":2,"Drops":0,"Inode":24798},{"sk":"ffff9b61b8216800","Eth":7,"Pid":0,"Groups":"00000000","Rmem":0,"Wmem":0,"Dump":0,"Locks":2,"Drops":0,"Inode":17250},{"sk":"ffff9b61a7592000","Eth":9,"Pid":2875,"Groups":"00000000","Rmem":0,"Wmem":0,"Dump":0,"Locks":2,"Drops":0,"Inode":89117},{"sk":"ffff9b61adafc000","Eth":9,"Pid":4095138316,"Groups":"00000000","Rmem":0,"Wmem":0,"Dump":0,"Locks":2,"Drops":0,"Inode":29927},{"sk":"ffff9b61b8e4e800","Eth":9,"Pid":0,"Groups":"00000000","Rmem":0,"Wmem":0,"Dump":0,"Locks":2,"Drops":0,"Inode":22},{"sk":"ffff9b61b71c4800","Eth":9,"Pid":1,"Groups":"00000001","Rmem":0,"Wmem":0,"Dump":0,"Locks":2,"Drops":0,"Inode":29784},{"sk":"ffff9b61b82ef000","Eth":10,"Pid":0,"Groups":"00000000","Rmem":0,"Wmem":0,"Dump":0,"Locks":2,"Drops":0,"Inode":14333},{"sk":"ffff9b61b821d000","Eth":11,"Pid":0,"Groups":"00000000","Rmem":0,"Wmem":0,"Dump":0,"Locks":2,"Drops":0,"Inode":1026},{"sk":"ffff9b61a6ca7800","Eth":15,"Pid":3496194766,"Groups":"00000002","Rmem":0,"Wmem":0,"Dump":0,"Locks":2,"Drops":0,"Inode":38994},{"sk":"ffff9b61b5a60800","Eth":15,"Pid":835,"Groups":"00000002","Rmem":0,"Wmem":0,"Dump":0,"Locks":2,"Drops":0,"Inode":34728},{"sk":"ffff9b61adafc800","Eth":15,"Pid":3516054882,"Groups":"00000001","Rmem":0,"Wmem":0,"Dump":0,"Locks":2,"Drops":0,"Inode":29794},{"sk":"ffff9b61acb18800","Eth":15,"Pid":701,"Groups":"00000002","Rmem":0,"Wmem":0,"Dump":0,"Locks":2,"Drops":0,"Inode":33113},{"sk":"ffff9b61b71c0800","Eth":15,"Pid":1,"Groups":"00000002","Rmem":0,"Wmem":0,"Dump":0,"Locks":2,"Drops":0,"Inode":29760},{"sk":"ffff9b61a6ca4000","Eth":15,"Pid":4232252993,"Groups":"00000002","Rmem":0,"Wmem":0,"Dump":0,"Locks":2,"Drops":0,"Inode":38995},{"sk":"ffff9b61b1f08800","Eth":15,"Pid":1207,"Groups":"00000002","Rmem":0,"Wmem":0,"Dump":0,"Locks":2,"Drops":0,"Inode":41861},{"sk":"ffff9b61a768d000","Eth":15,"Pid":872,"Groups":"00000002","Rmem":0,"Wmem":0,"Dump":0,"Locks":2,"Drops":0,"Inode":38992},{"sk":"ffff9b61b3c84000","Eth":15,"Pid":870,"Groups":"00000002","Rmem":0,"Wmem":0,"Dump":0,"Locks":2,"Drops":0,"Inode":40752},{"sk":"ffff9b61ad435800","Eth":15,"Pid":8470,"Groups":"00000002","Rmem":0,"Wmem":0,"Dump":0,"Locks":2,"Drops":0,"Inode":104872},{"sk":"ffff9b61a6ca2800","Eth":15,"Pid":3571242113,"Groups":"00000002","Rmem":0,"Wmem":0,"Dump":0,"Locks":2,"Drops":0,"Inode":38993},{"sk":"ffff9b61b8e48800","Eth":15,"Pid":0,"Groups":"00000000","Rmem":0,"Wmem":0,"Dump":0,"Locks":2,"Drops":0,"Inode":24},{"sk":"ffff9b61b821b800","Eth":16,"Pid":0,"Groups":"00000000","Rmem":0,"Wmem":0,"Dump":0,"Locks":2,"Drops":0,"Inode":1037},{"sk":"ffff9b61b5a64000","Eth":16,"Pid":835,"Groups":"00000000","Rmem":0,"Wmem":0,"Dump":0,"Locks":2,"Drops":0,"Inode":34727},{"sk":"ffff9b61b8218800","Eth":18,"Pid":0,"Groups":"00000000","Rmem":0,"Wmem":0,"Dump":0,"Locks":2,"Drops":0,"Inode":1029}] diff --git a/tests/test_proc_net_netlink.py b/tests/test_proc_net_netlink.py new file mode 100644 index 00000000..8dd76746 --- /dev/null +++ b/tests/test_proc_net_netlink.py @@ -0,0 +1,44 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_net_netlink + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_net_netlink': ( + 'fixtures/linux-proc/net_netlink', + 'fixtures/linux-proc/net_netlink.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_net_netlink_nodata(self): + """ + Test 'proc_net_netlink' with no data + """ + self.assertEqual(jc.parsers.proc_net_netlink.parse('', quiet=True), []) + + def test_proc_net_netlink(self): + """ + Test '/proc/net/netlink' + """ + self.assertEqual(jc.parsers.proc_net_netlink.parse(self.f_in['proc_net_netlink'], quiet=True), + self.f_json['proc_net_netlink']) + + +if __name__ == '__main__': + unittest.main() From 4a103927cdba474afbba37bc7017422eaf3596f1 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Sun, 25 Sep 2022 20:00:44 -0700 Subject: [PATCH 109/124] add proc-net-netstat parser and tests --- docs/parsers/proc_net_netstat.md | 324 ++++++++++++++++++ jc/lib.py | 1 + jc/parsers/proc_net_netstat.py | 381 +++++++++++++++++++++ man/jc.1 | 5 + tests/fixtures/linux-proc/net_netstat.json | 1 + tests/test_proc_net_netstat.py | 44 +++ 6 files changed, 756 insertions(+) create mode 100644 docs/parsers/proc_net_netstat.md create mode 100644 jc/parsers/proc_net_netstat.py create mode 100644 tests/fixtures/linux-proc/net_netstat.json create mode 100644 tests/test_proc_net_netstat.py diff --git a/docs/parsers/proc_net_netstat.md b/docs/parsers/proc_net_netstat.md new file mode 100644 index 00000000..e9f2f982 --- /dev/null +++ b/docs/parsers/proc_net_netstat.md @@ -0,0 +1,324 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_net\_netstat + +jc - JSON Convert `/proc/net/netstat` file parser + +Usage (cli): + + $ cat /proc/net/netstat | jc --proc + +or + + $ jc /proc/net/netstat + +or + + $ cat /proc/net/netstat | jc --proc-net-netstat + +Usage (module): + + import jc + result = jc.parse('proc', proc_net_netstat_file) + +or + + import jc + result = jc.parse('proc_net_netstat', proc_net_netstat_file) + +Schema: + +All values except "type" are integers + + [ + { + "type": string, + "": integer + } + ] + +Examples: + + $ cat /proc/net/netstat | jc --proc -p + [ + { + "SyncookiesSent": 0, + "SyncookiesRecv": 0, + "SyncookiesFailed": 0, + "EmbryonicRsts": 0, + "PruneCalled": 0, + "RcvPruned": 0, + "OfoPruned": 0, + "OutOfWindowIcmps": 0, + "LockDroppedIcmps": 0, + "ArpFilter": 0, + "TW": 3, + "TWRecycled": 0, + "TWKilled": 0, + "PAWSActive": 0, + "PAWSEstab": 0, + "DelayedACKs": 10, + "DelayedACKLocked": 53, + "DelayedACKLost": 0, + "ListenOverflows": 0, + "ListenDrops": 0, + "TCPHPHits": 2387, + "TCPPureAcks": 12711, + "TCPHPAcks": 53535, + "TCPRenoRecovery": 0, + "TCPSackRecovery": 0, + "TCPSACKReneging": 0, + "TCPSACKReorder": 0, + "TCPRenoReorder": 0, + "TCPTSReorder": 0, + "TCPFullUndo": 0, + "TCPPartialUndo": 0, + "TCPDSACKUndo": 0, + "TCPLossUndo": 0, + "TCPLostRetransmit": 0, + "TCPRenoFailures": 0, + "TCPSackFailures": 0, + "TCPLossFailures": 0, + "TCPFastRetrans": 0, + "TCPSlowStartRetrans": 0, + "TCPTimeouts": 0, + "TCPLossProbes": 0, + "TCPLossProbeRecovery": 0, + "TCPRenoRecoveryFail": 0, + "TCPSackRecoveryFail": 0, + "TCPRcvCollapsed": 0, + "TCPBacklogCoalesce": 2883, + "TCPDSACKOldSent": 0, + "TCPDSACKOfoSent": 0, + "TCPDSACKRecv": 0, + "TCPDSACKOfoRecv": 0, + "TCPAbortOnData": 0, + "TCPAbortOnClose": 1, + "TCPAbortOnMemory": 0, + "TCPAbortOnTimeout": 0, + "TCPAbortOnLinger": 0, + "TCPAbortFailed": 0, + "TCPMemoryPressures": 0, + "TCPMemoryPressuresChrono": 0, + "TCPSACKDiscard": 0, + "TCPDSACKIgnoredOld": 0, + "TCPDSACKIgnoredNoUndo": 0, + "TCPSpuriousRTOs": 0, + "TCPMD5NotFound": 0, + "TCPMD5Unexpected": 0, + "TCPMD5Failure": 0, + "TCPSackShifted": 0, + "TCPSackMerged": 0, + "TCPSackShiftFallback": 0, + "TCPBacklogDrop": 0, + "PFMemallocDrop": 0, + "TCPMinTTLDrop": 0, + "TCPDeferAcceptDrop": 0, + "IPReversePathFilter": 0, + "TCPTimeWaitOverflow": 0, + "TCPReqQFullDoCookies": 0, + "TCPReqQFullDrop": 0, + "TCPRetransFail": 0, + "TCPRcvCoalesce": 151, + "TCPOFOQueue": 0, + "TCPOFODrop": 0, + "TCPOFOMerge": 0, + "TCPChallengeACK": 0, + "TCPSYNChallenge": 0, + "TCPFastOpenActive": 0, + "TCPFastOpenActiveFail": 0, + "TCPFastOpenPassive": 0, + "TCPFastOpenPassiveFail": 0, + "TCPFastOpenListenOverflow": 0, + "TCPFastOpenCookieReqd": 0, + "TCPFastOpenBlackhole": 0, + "TCPSpuriousRtxHostQueues": 0, + "BusyPollRxPackets": 0, + "TCPAutoCorking": 28376, + "TCPFromZeroWindowAdv": 0, + "TCPToZeroWindowAdv": 0, + "TCPWantZeroWindowAdv": 0, + "TCPSynRetrans": 0, + "TCPOrigDataSent": 119438, + "TCPHystartTrainDetect": 3, + "TCPHystartTrainCwnd": 60, + "TCPHystartDelayDetect": 0, + "TCPHystartDelayCwnd": 0, + "TCPACKSkippedSynRecv": 0, + "TCPACKSkippedPAWS": 0, + "TCPACKSkippedSeq": 0, + "TCPACKSkippedFinWait2": 0, + "TCPACKSkippedTimeWait": 0, + "TCPACKSkippedChallenge": 0, + "TCPWinProbe": 0, + "TCPKeepAlive": 6, + "TCPMTUPFail": 0, + "TCPMTUPSuccess": 0, + "TCPDelivered": 119453, + "TCPDeliveredCE": 0, + "TCPAckCompressed": 0, + "TCPZeroWindowDrop": 0, + "TCPRcvQDrop": 0, + "TCPWqueueTooBig": 0, + "TCPFastOpenPassiveAltKey": 0, + "TcpTimeoutRehash": 0, + "TcpDuplicateDataRehash": 0, + "type": "TcpExt" + }, + ... + ] + + $ cat /proc/net/netstat | jc --proc -p -r + [ + { + "SyncookiesSent": "0", + "SyncookiesRecv": "0", + "SyncookiesFailed": "0", + "EmbryonicRsts": "0", + "PruneCalled": "0", + "RcvPruned": "0", + "OfoPruned": "0", + "OutOfWindowIcmps": "0", + "LockDroppedIcmps": "0", + "ArpFilter": "0", + "TW": "3", + "TWRecycled": "0", + "TWKilled": "0", + "PAWSActive": "0", + "PAWSEstab": "0", + "DelayedACKs": "10", + "DelayedACKLocked": "53", + "DelayedACKLost": "0", + "ListenOverflows": "0", + "ListenDrops": "0", + "TCPHPHits": "2387", + "TCPPureAcks": "12711", + "TCPHPAcks": "53535", + "TCPRenoRecovery": "0", + "TCPSackRecovery": "0", + "TCPSACKReneging": "0", + "TCPSACKReorder": "0", + "TCPRenoReorder": "0", + "TCPTSReorder": "0", + "TCPFullUndo": "0", + "TCPPartialUndo": "0", + "TCPDSACKUndo": "0", + "TCPLossUndo": "0", + "TCPLostRetransmit": "0", + "TCPRenoFailures": "0", + "TCPSackFailures": "0", + "TCPLossFailures": "0", + "TCPFastRetrans": "0", + "TCPSlowStartRetrans": "0", + "TCPTimeouts": "0", + "TCPLossProbes": "0", + "TCPLossProbeRecovery": "0", + "TCPRenoRecoveryFail": "0", + "TCPSackRecoveryFail": "0", + "TCPRcvCollapsed": "0", + "TCPBacklogCoalesce": "2883", + "TCPDSACKOldSent": "0", + "TCPDSACKOfoSent": "0", + "TCPDSACKRecv": "0", + "TCPDSACKOfoRecv": "0", + "TCPAbortOnData": "0", + "TCPAbortOnClose": "1", + "TCPAbortOnMemory": "0", + "TCPAbortOnTimeout": "0", + "TCPAbortOnLinger": "0", + "TCPAbortFailed": "0", + "TCPMemoryPressures": "0", + "TCPMemoryPressuresChrono": "0", + "TCPSACKDiscard": "0", + "TCPDSACKIgnoredOld": "0", + "TCPDSACKIgnoredNoUndo": "0", + "TCPSpuriousRTOs": "0", + "TCPMD5NotFound": "0", + "TCPMD5Unexpected": "0", + "TCPMD5Failure": "0", + "TCPSackShifted": "0", + "TCPSackMerged": "0", + "TCPSackShiftFallback": "0", + "TCPBacklogDrop": "0", + "PFMemallocDrop": "0", + "TCPMinTTLDrop": "0", + "TCPDeferAcceptDrop": "0", + "IPReversePathFilter": "0", + "TCPTimeWaitOverflow": "0", + "TCPReqQFullDoCookies": "0", + "TCPReqQFullDrop": "0", + "TCPRetransFail": "0", + "TCPRcvCoalesce": "151", + "TCPOFOQueue": "0", + "TCPOFODrop": "0", + "TCPOFOMerge": "0", + "TCPChallengeACK": "0", + "TCPSYNChallenge": "0", + "TCPFastOpenActive": "0", + "TCPFastOpenActiveFail": "0", + "TCPFastOpenPassive": "0", + "TCPFastOpenPassiveFail": "0", + "TCPFastOpenListenOverflow": "0", + "TCPFastOpenCookieReqd": "0", + "TCPFastOpenBlackhole": "0", + "TCPSpuriousRtxHostQueues": "0", + "BusyPollRxPackets": "0", + "TCPAutoCorking": "28376", + "TCPFromZeroWindowAdv": "0", + "TCPToZeroWindowAdv": "0", + "TCPWantZeroWindowAdv": "0", + "TCPSynRetrans": "0", + "TCPOrigDataSent": "119438", + "TCPHystartTrainDetect": "3", + "TCPHystartTrainCwnd": "60", + "TCPHystartDelayDetect": "0", + "TCPHystartDelayCwnd": "0", + "TCPACKSkippedSynRecv": "0", + "TCPACKSkippedPAWS": "0", + "TCPACKSkippedSeq": "0", + "TCPACKSkippedFinWait2": "0", + "TCPACKSkippedTimeWait": "0", + "TCPACKSkippedChallenge": "0", + "TCPWinProbe": "0", + "TCPKeepAlive": "6", + "TCPMTUPFail": "0", + "TCPMTUPSuccess": "0", + "TCPDelivered": "119453", + "TCPDeliveredCE": "0", + "TCPAckCompressed": "0", + "TCPZeroWindowDrop": "0", + "TCPRcvQDrop": "0", + "TCPWqueueTooBig": "0", + "TCPFastOpenPassiveAltKey": "0", + "TcpTimeoutRehash": "0", + "TcpDuplicateDataRehash": "0", + "type": "TcpExt" + }, + ... + ] + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict] +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + List of Dictionaries. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/lib.py b/jc/lib.py index ec172cd8..0b1a7180 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -129,6 +129,7 @@ parsers = [ 'proc-net-igmp6', 'proc-net-ipv6-route', 'proc-net-netlink', + 'proc-net-netstat', 'ps', 'route', 'rpm-qi', diff --git a/jc/parsers/proc_net_netstat.py b/jc/parsers/proc_net_netstat.py new file mode 100644 index 00000000..55e447b2 --- /dev/null +++ b/jc/parsers/proc_net_netstat.py @@ -0,0 +1,381 @@ +"""jc - JSON Convert `/proc/net/netstat` file parser + +Usage (cli): + + $ cat /proc/net/netstat | jc --proc + +or + + $ jc /proc/net/netstat + +or + + $ cat /proc/net/netstat | jc --proc-net-netstat + +Usage (module): + + import jc + result = jc.parse('proc', proc_net_netstat_file) + +or + + import jc + result = jc.parse('proc_net_netstat', proc_net_netstat_file) + +Schema: + +All values except "type" are integers + + [ + { + "type": string, + "": integer + } + ] + +Examples: + + $ cat /proc/net/netstat | jc --proc -p + [ + { + "SyncookiesSent": 0, + "SyncookiesRecv": 0, + "SyncookiesFailed": 0, + "EmbryonicRsts": 0, + "PruneCalled": 0, + "RcvPruned": 0, + "OfoPruned": 0, + "OutOfWindowIcmps": 0, + "LockDroppedIcmps": 0, + "ArpFilter": 0, + "TW": 3, + "TWRecycled": 0, + "TWKilled": 0, + "PAWSActive": 0, + "PAWSEstab": 0, + "DelayedACKs": 10, + "DelayedACKLocked": 53, + "DelayedACKLost": 0, + "ListenOverflows": 0, + "ListenDrops": 0, + "TCPHPHits": 2387, + "TCPPureAcks": 12711, + "TCPHPAcks": 53535, + "TCPRenoRecovery": 0, + "TCPSackRecovery": 0, + "TCPSACKReneging": 0, + "TCPSACKReorder": 0, + "TCPRenoReorder": 0, + "TCPTSReorder": 0, + "TCPFullUndo": 0, + "TCPPartialUndo": 0, + "TCPDSACKUndo": 0, + "TCPLossUndo": 0, + "TCPLostRetransmit": 0, + "TCPRenoFailures": 0, + "TCPSackFailures": 0, + "TCPLossFailures": 0, + "TCPFastRetrans": 0, + "TCPSlowStartRetrans": 0, + "TCPTimeouts": 0, + "TCPLossProbes": 0, + "TCPLossProbeRecovery": 0, + "TCPRenoRecoveryFail": 0, + "TCPSackRecoveryFail": 0, + "TCPRcvCollapsed": 0, + "TCPBacklogCoalesce": 2883, + "TCPDSACKOldSent": 0, + "TCPDSACKOfoSent": 0, + "TCPDSACKRecv": 0, + "TCPDSACKOfoRecv": 0, + "TCPAbortOnData": 0, + "TCPAbortOnClose": 1, + "TCPAbortOnMemory": 0, + "TCPAbortOnTimeout": 0, + "TCPAbortOnLinger": 0, + "TCPAbortFailed": 0, + "TCPMemoryPressures": 0, + "TCPMemoryPressuresChrono": 0, + "TCPSACKDiscard": 0, + "TCPDSACKIgnoredOld": 0, + "TCPDSACKIgnoredNoUndo": 0, + "TCPSpuriousRTOs": 0, + "TCPMD5NotFound": 0, + "TCPMD5Unexpected": 0, + "TCPMD5Failure": 0, + "TCPSackShifted": 0, + "TCPSackMerged": 0, + "TCPSackShiftFallback": 0, + "TCPBacklogDrop": 0, + "PFMemallocDrop": 0, + "TCPMinTTLDrop": 0, + "TCPDeferAcceptDrop": 0, + "IPReversePathFilter": 0, + "TCPTimeWaitOverflow": 0, + "TCPReqQFullDoCookies": 0, + "TCPReqQFullDrop": 0, + "TCPRetransFail": 0, + "TCPRcvCoalesce": 151, + "TCPOFOQueue": 0, + "TCPOFODrop": 0, + "TCPOFOMerge": 0, + "TCPChallengeACK": 0, + "TCPSYNChallenge": 0, + "TCPFastOpenActive": 0, + "TCPFastOpenActiveFail": 0, + "TCPFastOpenPassive": 0, + "TCPFastOpenPassiveFail": 0, + "TCPFastOpenListenOverflow": 0, + "TCPFastOpenCookieReqd": 0, + "TCPFastOpenBlackhole": 0, + "TCPSpuriousRtxHostQueues": 0, + "BusyPollRxPackets": 0, + "TCPAutoCorking": 28376, + "TCPFromZeroWindowAdv": 0, + "TCPToZeroWindowAdv": 0, + "TCPWantZeroWindowAdv": 0, + "TCPSynRetrans": 0, + "TCPOrigDataSent": 119438, + "TCPHystartTrainDetect": 3, + "TCPHystartTrainCwnd": 60, + "TCPHystartDelayDetect": 0, + "TCPHystartDelayCwnd": 0, + "TCPACKSkippedSynRecv": 0, + "TCPACKSkippedPAWS": 0, + "TCPACKSkippedSeq": 0, + "TCPACKSkippedFinWait2": 0, + "TCPACKSkippedTimeWait": 0, + "TCPACKSkippedChallenge": 0, + "TCPWinProbe": 0, + "TCPKeepAlive": 6, + "TCPMTUPFail": 0, + "TCPMTUPSuccess": 0, + "TCPDelivered": 119453, + "TCPDeliveredCE": 0, + "TCPAckCompressed": 0, + "TCPZeroWindowDrop": 0, + "TCPRcvQDrop": 0, + "TCPWqueueTooBig": 0, + "TCPFastOpenPassiveAltKey": 0, + "TcpTimeoutRehash": 0, + "TcpDuplicateDataRehash": 0, + "type": "TcpExt" + }, + ... + ] + + $ cat /proc/net/netstat | jc --proc -p -r + [ + { + "SyncookiesSent": "0", + "SyncookiesRecv": "0", + "SyncookiesFailed": "0", + "EmbryonicRsts": "0", + "PruneCalled": "0", + "RcvPruned": "0", + "OfoPruned": "0", + "OutOfWindowIcmps": "0", + "LockDroppedIcmps": "0", + "ArpFilter": "0", + "TW": "3", + "TWRecycled": "0", + "TWKilled": "0", + "PAWSActive": "0", + "PAWSEstab": "0", + "DelayedACKs": "10", + "DelayedACKLocked": "53", + "DelayedACKLost": "0", + "ListenOverflows": "0", + "ListenDrops": "0", + "TCPHPHits": "2387", + "TCPPureAcks": "12711", + "TCPHPAcks": "53535", + "TCPRenoRecovery": "0", + "TCPSackRecovery": "0", + "TCPSACKReneging": "0", + "TCPSACKReorder": "0", + "TCPRenoReorder": "0", + "TCPTSReorder": "0", + "TCPFullUndo": "0", + "TCPPartialUndo": "0", + "TCPDSACKUndo": "0", + "TCPLossUndo": "0", + "TCPLostRetransmit": "0", + "TCPRenoFailures": "0", + "TCPSackFailures": "0", + "TCPLossFailures": "0", + "TCPFastRetrans": "0", + "TCPSlowStartRetrans": "0", + "TCPTimeouts": "0", + "TCPLossProbes": "0", + "TCPLossProbeRecovery": "0", + "TCPRenoRecoveryFail": "0", + "TCPSackRecoveryFail": "0", + "TCPRcvCollapsed": "0", + "TCPBacklogCoalesce": "2883", + "TCPDSACKOldSent": "0", + "TCPDSACKOfoSent": "0", + "TCPDSACKRecv": "0", + "TCPDSACKOfoRecv": "0", + "TCPAbortOnData": "0", + "TCPAbortOnClose": "1", + "TCPAbortOnMemory": "0", + "TCPAbortOnTimeout": "0", + "TCPAbortOnLinger": "0", + "TCPAbortFailed": "0", + "TCPMemoryPressures": "0", + "TCPMemoryPressuresChrono": "0", + "TCPSACKDiscard": "0", + "TCPDSACKIgnoredOld": "0", + "TCPDSACKIgnoredNoUndo": "0", + "TCPSpuriousRTOs": "0", + "TCPMD5NotFound": "0", + "TCPMD5Unexpected": "0", + "TCPMD5Failure": "0", + "TCPSackShifted": "0", + "TCPSackMerged": "0", + "TCPSackShiftFallback": "0", + "TCPBacklogDrop": "0", + "PFMemallocDrop": "0", + "TCPMinTTLDrop": "0", + "TCPDeferAcceptDrop": "0", + "IPReversePathFilter": "0", + "TCPTimeWaitOverflow": "0", + "TCPReqQFullDoCookies": "0", + "TCPReqQFullDrop": "0", + "TCPRetransFail": "0", + "TCPRcvCoalesce": "151", + "TCPOFOQueue": "0", + "TCPOFODrop": "0", + "TCPOFOMerge": "0", + "TCPChallengeACK": "0", + "TCPSYNChallenge": "0", + "TCPFastOpenActive": "0", + "TCPFastOpenActiveFail": "0", + "TCPFastOpenPassive": "0", + "TCPFastOpenPassiveFail": "0", + "TCPFastOpenListenOverflow": "0", + "TCPFastOpenCookieReqd": "0", + "TCPFastOpenBlackhole": "0", + "TCPSpuriousRtxHostQueues": "0", + "BusyPollRxPackets": "0", + "TCPAutoCorking": "28376", + "TCPFromZeroWindowAdv": "0", + "TCPToZeroWindowAdv": "0", + "TCPWantZeroWindowAdv": "0", + "TCPSynRetrans": "0", + "TCPOrigDataSent": "119438", + "TCPHystartTrainDetect": "3", + "TCPHystartTrainCwnd": "60", + "TCPHystartDelayDetect": "0", + "TCPHystartDelayCwnd": "0", + "TCPACKSkippedSynRecv": "0", + "TCPACKSkippedPAWS": "0", + "TCPACKSkippedSeq": "0", + "TCPACKSkippedFinWait2": "0", + "TCPACKSkippedTimeWait": "0", + "TCPACKSkippedChallenge": "0", + "TCPWinProbe": "0", + "TCPKeepAlive": "6", + "TCPMTUPFail": "0", + "TCPMTUPSuccess": "0", + "TCPDelivered": "119453", + "TCPDeliveredCE": "0", + "TCPAckCompressed": "0", + "TCPZeroWindowDrop": "0", + "TCPRcvQDrop": "0", + "TCPWqueueTooBig": "0", + "TCPFastOpenPassiveAltKey": "0", + "TcpTimeoutRehash": "0", + "TcpDuplicateDataRehash": "0", + "type": "TcpExt" + }, + ... + ] +""" +from typing import List, Dict +import jc.utils +from jc.parsers.universal import simple_table_parse + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc/net/netstat` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + hidden = True + + +__version__ = info.version + + +def _process(proc_data: List[Dict]) -> List[Dict]: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (List of Dictionaries) raw structured data to process + + Returns: + + List of Dictionaries. Structured to conform to the schema. + """ + for item in proc_data: + for key, val in item.items(): + if key != 'type': + item[key] = int(val) + + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> List[Dict]: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + List of Dictionaries. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: List = [] + rows: List = [] + this_row: str = '' + headers: str = '' + + if jc.utils.has_data(data): + + for line in filter(None, data.splitlines()): + row_name, header_data = line.split(':', maxsplit=1) + + if row_name in rows: + # this is data + _, row_data = line.split(':', maxsplit=1) + data_table = headers + row_data + output_line = simple_table_parse(data_table.splitlines()) + output_line[0]['type'] = this_row + raw_output.extend(output_line) + continue + + else: + # this is a header row + rows.append(row_name) + this_row = row_name + headers = header_data + '\n' + continue + + return raw_output if raw else _process(raw_output) diff --git a/man/jc.1 b/man/jc.1 index 28ce203d..52fd0d40 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -630,6 +630,11 @@ PLIST file parser \fB--proc-net-netlink\fP `/proc/net/netlink` file parser +.TP +.B +\fB--proc-net-netstat\fP +`/proc/net/netstat` file parser + .TP .B \fB--ps\fP diff --git a/tests/fixtures/linux-proc/net_netstat.json b/tests/fixtures/linux-proc/net_netstat.json new file mode 100644 index 00000000..922a442a --- /dev/null +++ b/tests/fixtures/linux-proc/net_netstat.json @@ -0,0 +1 @@ +[{"SyncookiesSent":0,"SyncookiesRecv":0,"SyncookiesFailed":0,"EmbryonicRsts":0,"PruneCalled":0,"RcvPruned":0,"OfoPruned":0,"OutOfWindowIcmps":0,"LockDroppedIcmps":0,"ArpFilter":0,"TW":3,"TWRecycled":0,"TWKilled":0,"PAWSActive":0,"PAWSEstab":0,"DelayedACKs":10,"DelayedACKLocked":53,"DelayedACKLost":0,"ListenOverflows":0,"ListenDrops":0,"TCPHPHits":2387,"TCPPureAcks":12711,"TCPHPAcks":53535,"TCPRenoRecovery":0,"TCPSackRecovery":0,"TCPSACKReneging":0,"TCPSACKReorder":0,"TCPRenoReorder":0,"TCPTSReorder":0,"TCPFullUndo":0,"TCPPartialUndo":0,"TCPDSACKUndo":0,"TCPLossUndo":0,"TCPLostRetransmit":0,"TCPRenoFailures":0,"TCPSackFailures":0,"TCPLossFailures":0,"TCPFastRetrans":0,"TCPSlowStartRetrans":0,"TCPTimeouts":0,"TCPLossProbes":0,"TCPLossProbeRecovery":0,"TCPRenoRecoveryFail":0,"TCPSackRecoveryFail":0,"TCPRcvCollapsed":0,"TCPBacklogCoalesce":2883,"TCPDSACKOldSent":0,"TCPDSACKOfoSent":0,"TCPDSACKRecv":0,"TCPDSACKOfoRecv":0,"TCPAbortOnData":0,"TCPAbortOnClose":1,"TCPAbortOnMemory":0,"TCPAbortOnTimeout":0,"TCPAbortOnLinger":0,"TCPAbortFailed":0,"TCPMemoryPressures":0,"TCPMemoryPressuresChrono":0,"TCPSACKDiscard":0,"TCPDSACKIgnoredOld":0,"TCPDSACKIgnoredNoUndo":0,"TCPSpuriousRTOs":0,"TCPMD5NotFound":0,"TCPMD5Unexpected":0,"TCPMD5Failure":0,"TCPSackShifted":0,"TCPSackMerged":0,"TCPSackShiftFallback":0,"TCPBacklogDrop":0,"PFMemallocDrop":0,"TCPMinTTLDrop":0,"TCPDeferAcceptDrop":0,"IPReversePathFilter":0,"TCPTimeWaitOverflow":0,"TCPReqQFullDoCookies":0,"TCPReqQFullDrop":0,"TCPRetransFail":0,"TCPRcvCoalesce":151,"TCPOFOQueue":0,"TCPOFODrop":0,"TCPOFOMerge":0,"TCPChallengeACK":0,"TCPSYNChallenge":0,"TCPFastOpenActive":0,"TCPFastOpenActiveFail":0,"TCPFastOpenPassive":0,"TCPFastOpenPassiveFail":0,"TCPFastOpenListenOverflow":0,"TCPFastOpenCookieReqd":0,"TCPFastOpenBlackhole":0,"TCPSpuriousRtxHostQueues":0,"BusyPollRxPackets":0,"TCPAutoCorking":28376,"TCPFromZeroWindowAdv":0,"TCPToZeroWindowAdv":0,"TCPWantZeroWindowAdv":0,"TCPSynRetrans":0,"TCPOrigDataSent":119438,"TCPHystartTrainDetect":3,"TCPHystartTrainCwnd":60,"TCPHystartDelayDetect":0,"TCPHystartDelayCwnd":0,"TCPACKSkippedSynRecv":0,"TCPACKSkippedPAWS":0,"TCPACKSkippedSeq":0,"TCPACKSkippedFinWait2":0,"TCPACKSkippedTimeWait":0,"TCPACKSkippedChallenge":0,"TCPWinProbe":0,"TCPKeepAlive":6,"TCPMTUPFail":0,"TCPMTUPSuccess":0,"TCPDelivered":119453,"TCPDeliveredCE":0,"TCPAckCompressed":0,"TCPZeroWindowDrop":0,"TCPRcvQDrop":0,"TCPWqueueTooBig":0,"TCPFastOpenPassiveAltKey":0,"TcpTimeoutRehash":0,"TcpDuplicateDataRehash":0,"type":"TcpExt"},{"InNoRoutes":0,"InTruncatedPkts":0,"InMcastPkts":0,"OutMcastPkts":0,"InBcastPkts":366,"OutBcastPkts":0,"InOctets":57734503,"OutOctets":42330709,"InMcastOctets":0,"OutMcastOctets":0,"InBcastOctets":31466,"OutBcastOctets":0,"InCsumErrors":0,"InNoECTPkts":106821,"InECT1Pkts":0,"InECT0Pkts":3273,"InCEPkts":0,"ReasmOverlaps":0,"type":"IpExt"},{"MPCapableSYNRX":0,"MPCapableACKRX":0,"MPCapableFallbackACK":0,"MPCapableFallbackSYNACK":0,"MPTCPRetrans":0,"MPJoinNoTokenFound":0,"MPJoinSynRx":0,"MPJoinSynAckRx":0,"MPJoinSynAckHMacFailure":0,"MPJoinAckRx":0,"MPJoinAckHMacFailure":0,"DSSNotMatching":0,"InfiniteMapRx":0,"type":"MPTcpExt"}] diff --git a/tests/test_proc_net_netstat.py b/tests/test_proc_net_netstat.py new file mode 100644 index 00000000..10e5e9fa --- /dev/null +++ b/tests/test_proc_net_netstat.py @@ -0,0 +1,44 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_net_netstat + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_net_netstat': ( + 'fixtures/linux-proc/net_netstat', + 'fixtures/linux-proc/net_netstat.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_net_netstat_nodata(self): + """ + Test 'proc_net_netstat' with no data + """ + self.assertEqual(jc.parsers.proc_net_netstat.parse('', quiet=True), []) + + def test_proc_net_netstat(self): + """ + Test '/proc/net/netstat' + """ + self.assertEqual(jc.parsers.proc_net_netstat.parse(self.f_in['proc_net_netstat'], quiet=True), + self.f_json['proc_net_netstat']) + + +if __name__ == '__main__': + unittest.main() From 1e14425555e42b50a208e41f0808f89447a392c9 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Sun, 25 Sep 2022 20:14:53 -0700 Subject: [PATCH 110/124] add proc-net-packet parser and tests --- docs/parsers/proc_net_packet.md | 95 +++++++++++++++ jc/lib.py | 1 + jc/parsers/proc_net_packet.py | 134 ++++++++++++++++++++++ man/jc.1 | 5 + tests/fixtures/linux-proc/net_packet.json | 1 + tests/test_proc_net_packet.py | 44 +++++++ 6 files changed, 280 insertions(+) create mode 100644 docs/parsers/proc_net_packet.md create mode 100644 jc/parsers/proc_net_packet.py create mode 100644 tests/fixtures/linux-proc/net_packet.json create mode 100644 tests/test_proc_net_packet.py diff --git a/docs/parsers/proc_net_packet.md b/docs/parsers/proc_net_packet.md new file mode 100644 index 00000000..6c1b3bc0 --- /dev/null +++ b/docs/parsers/proc_net_packet.md @@ -0,0 +1,95 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_net\_packet + +jc - JSON Convert `/proc/net/packet` file parser + +Usage (cli): + + $ cat /proc/net/packet | jc --proc + +or + + $ jc /proc/net/packet + +or + + $ cat /proc/net/packet | jc --proc-net-packet + +Usage (module): + + import jc + result = jc.parse('proc', proc_net_packet_file) + +or + + import jc + result = jc.parse('proc_net_packet', proc_net_packet_file) + +Schema: + + { + "sk": string, + "RefCnt": integer, + "Type": integer, + "Proto": string, + "Iface": integer, + "R": integer, + "Rmem": integer, + "User": integer, + "Inode": integer + } + +Examples: + + $ cat /proc/net/packet | jc --proc -p + { + "sk": "ffff9b61b56c1800", + "RefCnt": 3, + "Type": 3, + "Proto": "88cc", + "Iface": 2, + "R": 1, + "Rmem": 0, + "User": 101, + "Inode": 34754 + } + + $ cat /proc/net/packet | jc --proc -p -r + { + "sk": "ffff9b61b56c1800", + "RefCnt": "3", + "Type": "3", + "Proto": "88cc", + "Iface": "2", + "R": "1", + "Rmem": "0", + "User": "101", + "Inode": "34754" + } + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> Dict +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + Dictionary. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/lib.py b/jc/lib.py index 0b1a7180..7d7b3328 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -130,6 +130,7 @@ parsers = [ 'proc-net-ipv6-route', 'proc-net-netlink', 'proc-net-netstat', + 'proc-net-packet', 'ps', 'route', 'rpm-qi', diff --git a/jc/parsers/proc_net_packet.py b/jc/parsers/proc_net_packet.py new file mode 100644 index 00000000..b7631042 --- /dev/null +++ b/jc/parsers/proc_net_packet.py @@ -0,0 +1,134 @@ +"""jc - JSON Convert `/proc/net/packet` file parser + +Usage (cli): + + $ cat /proc/net/packet | jc --proc + +or + + $ jc /proc/net/packet + +or + + $ cat /proc/net/packet | jc --proc-net-packet + +Usage (module): + + import jc + result = jc.parse('proc', proc_net_packet_file) + +or + + import jc + result = jc.parse('proc_net_packet', proc_net_packet_file) + +Schema: + + { + "sk": string, + "RefCnt": integer, + "Type": integer, + "Proto": string, + "Iface": integer, + "R": integer, + "Rmem": integer, + "User": integer, + "Inode": integer + } + +Examples: + + $ cat /proc/net/packet | jc --proc -p + { + "sk": "ffff9b61b56c1800", + "RefCnt": 3, + "Type": 3, + "Proto": "88cc", + "Iface": 2, + "R": 1, + "Rmem": 0, + "User": 101, + "Inode": 34754 + } + + $ cat /proc/net/packet | jc --proc -p -r + { + "sk": "ffff9b61b56c1800", + "RefCnt": "3", + "Type": "3", + "Proto": "88cc", + "Iface": "2", + "R": "1", + "Rmem": "0", + "User": "101", + "Inode": "34754" + } +""" +from typing import Dict +import jc.utils +from jc.parsers.universal import simple_table_parse + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc/net/packet` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + hidden = True + + +__version__ = info.version + + +def _process(proc_data: Dict) -> Dict: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (List of Dictionaries) raw structured data to process + + Returns: + + Dictionary. Structured to conform to the schema. + """ + int_list = {'RefCnt', 'Type', 'Iface', 'R', 'Rmem', 'User', 'Inode'} + + for key, val in proc_data.items(): + if key in int_list: + proc_data[key] = int(val) + + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> Dict: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + Dictionary. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: Dict = {} + + if jc.utils.has_data(data): + + raw_output_list = simple_table_parse(data.splitlines()) + raw_output = raw_output_list[0] + + return raw_output if raw else _process(raw_output) diff --git a/man/jc.1 b/man/jc.1 index 52fd0d40..93ca1017 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -635,6 +635,11 @@ PLIST file parser \fB--proc-net-netstat\fP `/proc/net/netstat` file parser +.TP +.B +\fB--proc-net-packet\fP +`/proc/net/packet` file parser + .TP .B \fB--ps\fP diff --git a/tests/fixtures/linux-proc/net_packet.json b/tests/fixtures/linux-proc/net_packet.json new file mode 100644 index 00000000..cdfee322 --- /dev/null +++ b/tests/fixtures/linux-proc/net_packet.json @@ -0,0 +1 @@ +{"sk":"ffff9b61b56c1800","RefCnt":3,"Type":3,"Proto":"88cc","Iface":2,"R":1,"Rmem":0,"User":101,"Inode":34754} diff --git a/tests/test_proc_net_packet.py b/tests/test_proc_net_packet.py new file mode 100644 index 00000000..9e08041d --- /dev/null +++ b/tests/test_proc_net_packet.py @@ -0,0 +1,44 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_net_packet + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_net_packet': ( + 'fixtures/linux-proc/net_packet', + 'fixtures/linux-proc/net_packet.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_net_packet_nodata(self): + """ + Test 'proc_net_packet' with no data + """ + self.assertEqual(jc.parsers.proc_net_packet.parse('', quiet=True), {}) + + def test_proc_net_packet(self): + """ + Test '/proc/net/packet' + """ + self.assertEqual(jc.parsers.proc_net_packet.parse(self.f_in['proc_net_packet'], quiet=True), + self.f_json['proc_net_packet']) + + +if __name__ == '__main__': + unittest.main() From c5835982572f19818905efee229f0d6c01596b04 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Mon, 26 Sep 2022 08:28:48 -0700 Subject: [PATCH 111/124] add proc-net-protocols parser and tests --- docs/parsers/proc_net_protocols.md | 157 +++++++++++++++ jc/lib.py | 1 + jc/parsers/proc_net_protocols.py | 200 +++++++++++++++++++ man/jc.1 | 7 +- tests/fixtures/linux-proc/net_protocols.json | 1 + tests/test_proc_net_protocols.py | 44 ++++ 6 files changed, 409 insertions(+), 1 deletion(-) create mode 100644 docs/parsers/proc_net_protocols.md create mode 100644 jc/parsers/proc_net_protocols.py create mode 100644 tests/fixtures/linux-proc/net_protocols.json create mode 100644 tests/test_proc_net_protocols.py diff --git a/docs/parsers/proc_net_protocols.md b/docs/parsers/proc_net_protocols.md new file mode 100644 index 00000000..a86416dd --- /dev/null +++ b/docs/parsers/proc_net_protocols.md @@ -0,0 +1,157 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_net\_protocols + +jc - JSON Convert `/proc/net/protocols` file parser + +Usage (cli): + + $ cat /proc/net/protocols | jc --proc + +or + + $ jc /proc/net/protocols + +or + + $ cat /proc/net/protocols | jc --proc-net-protocols + +Usage (module): + + import jc + result = jc.parse('proc', proc_net_protocols_file) + +or + + import jc + result = jc.parse('proc_net_protocols', proc_net_protocols_file) + +Schema: + + [ + { + "protocol": string, + "size": integer, + "sockets": integer, + "memory": integer, + "press": string, + "maxhdr": integer, + "slab": boolean, + "module": string, + "cl": boolean, + "co": boolean, + "di": boolean, + "ac": boolean, + "io": boolean, + "in": boolean, + "de": boolean, + "sh": boolean, + "ss": boolean, + "gs": boolean, + "se": boolean, + "re": boolean, + "sp": boolean, + "bi": boolean, + "br": boolean, + "ha": boolean, + "uh": boolean, + "gp": boolean, + "em": boolean, + } + ] + +Examples: + + $ cat /proc/net/protocols | jc --proc -p + [ + { + "protocol": "AF_VSOCK", + "size": 1216, + "sockets": 0, + "memory": -1, + "press": "NI", + "maxhdr": 0, + "slab": true, + "module": "vsock", + "cl": false, + "co": false, + "di": false, + "ac": false, + "io": false, + "in": false, + "de": false, + "sh": false, + "ss": false, + "gs": false, + "se": false, + "re": false, + "sp": false, + "bi": false, + "br": false, + "ha": false, + "uh": false, + "gp": false, + "em": false + }, + ... + ] + + $ cat /proc/net/protocols | jc --proc -p -r + [ + { + "protocol": "AF_VSOCK", + "size": "1216", + "sockets": "0", + "memory": "-1", + "press": "NI", + "maxhdr": "0", + "slab": "yes", + "module": "vsock", + "cl": "n", + "co": "n", + "di": "n", + "ac": "n", + "io": "n", + "in": "n", + "de": "n", + "sh": "n", + "ss": "n", + "gs": "n", + "se": "n", + "re": "n", + "sp": "n", + "bi": "n", + "br": "n", + "ha": "n", + "uh": "n", + "gp": "n", + "em": "n" + }, + ... + ] + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict] +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + List of Dictionaries. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/lib.py b/jc/lib.py index 7d7b3328..e455ef8b 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -131,6 +131,7 @@ parsers = [ 'proc-net-netlink', 'proc-net-netstat', 'proc-net-packet', + 'proc-net-protocols', 'ps', 'route', 'rpm-qi', diff --git a/jc/parsers/proc_net_protocols.py b/jc/parsers/proc_net_protocols.py new file mode 100644 index 00000000..024e568d --- /dev/null +++ b/jc/parsers/proc_net_protocols.py @@ -0,0 +1,200 @@ +"""jc - JSON Convert `/proc/net/protocols` file parser + +Usage (cli): + + $ cat /proc/net/protocols | jc --proc + +or + + $ jc /proc/net/protocols + +or + + $ cat /proc/net/protocols | jc --proc-net-protocols + +Usage (module): + + import jc + result = jc.parse('proc', proc_net_protocols_file) + +or + + import jc + result = jc.parse('proc_net_protocols', proc_net_protocols_file) + +Schema: + + [ + { + "protocol": string, + "size": integer, + "sockets": integer, + "memory": integer, + "press": string, + "maxhdr": integer, + "slab": boolean, + "module": string, + "cl": boolean, + "co": boolean, + "di": boolean, + "ac": boolean, + "io": boolean, + "in": boolean, + "de": boolean, + "sh": boolean, + "ss": boolean, + "gs": boolean, + "se": boolean, + "re": boolean, + "sp": boolean, + "bi": boolean, + "br": boolean, + "ha": boolean, + "uh": boolean, + "gp": boolean, + "em": boolean, + } + ] + +Examples: + + $ cat /proc/net/protocols | jc --proc -p + [ + { + "protocol": "AF_VSOCK", + "size": 1216, + "sockets": 0, + "memory": -1, + "press": "NI", + "maxhdr": 0, + "slab": true, + "module": "vsock", + "cl": false, + "co": false, + "di": false, + "ac": false, + "io": false, + "in": false, + "de": false, + "sh": false, + "ss": false, + "gs": false, + "se": false, + "re": false, + "sp": false, + "bi": false, + "br": false, + "ha": false, + "uh": false, + "gp": false, + "em": false + }, + ... + ] + + $ cat /proc/net/protocols | jc --proc -p -r + [ + { + "protocol": "AF_VSOCK", + "size": "1216", + "sockets": "0", + "memory": "-1", + "press": "NI", + "maxhdr": "0", + "slab": "yes", + "module": "vsock", + "cl": "n", + "co": "n", + "di": "n", + "ac": "n", + "io": "n", + "in": "n", + "de": "n", + "sh": "n", + "ss": "n", + "gs": "n", + "se": "n", + "re": "n", + "sp": "n", + "bi": "n", + "br": "n", + "ha": "n", + "uh": "n", + "gp": "n", + "em": "n" + }, + ... + ] +""" +from typing import List, Dict +import jc.utils +from jc.parsers.universal import simple_table_parse + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc/net/protocols` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + hidden = True + + +__version__ = info.version + + +def _process(proc_data: List[Dict]) -> List[Dict]: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (List of Dictionaries) raw structured data to process + + Returns: + + List of Dictionaries. Structured to conform to the schema. + """ + int_list = {'size', 'sockets', 'memory', 'maxhdr'} + bool_list = {'slab', 'cl', 'co', 'di', 'ac', 'io', 'in', 'de', 'sh', 'ss', + 'gs', 'se', 're', 'sp', 'bi', 'br', 'ha', 'uh', 'gp', 'em'} + + for item in proc_data: + for key, val in item.items(): + if key in int_list: + item[key] = int(val) + if key in bool_list: + item[key] = jc.utils.convert_to_bool(val) + + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> List[Dict]: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + List of Dictionaries. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: List = [] + + if jc.utils.has_data(data): + + raw_output = simple_table_parse(data.splitlines()) + + return raw_output if raw else _process(raw_output) diff --git a/man/jc.1 b/man/jc.1 index 93ca1017..ead159f9 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -1,4 +1,4 @@ -.TH jc 1 2022-09-25 1.21.2 "JSON Convert" +.TH jc 1 2022-09-26 1.21.2 "JSON Convert" .SH NAME \fBjc\fP \- JSON Convert JSONifies the output of many CLI tools, file-types, and strings .SH SYNOPSIS @@ -640,6 +640,11 @@ PLIST file parser \fB--proc-net-packet\fP `/proc/net/packet` file parser +.TP +.B +\fB--proc-net-protocols\fP +`/proc/net/protocols` file parser + .TP .B \fB--ps\fP diff --git a/tests/fixtures/linux-proc/net_protocols.json b/tests/fixtures/linux-proc/net_protocols.json new file mode 100644 index 00000000..651071a2 --- /dev/null +++ b/tests/fixtures/linux-proc/net_protocols.json @@ -0,0 +1 @@ +[{"protocol":"AF_VSOCK","size":1216,"sockets":0,"memory":-1,"press":"NI","maxhdr":0,"slab":true,"module":"vsock","cl":false,"co":false,"di":false,"ac":false,"io":false,"in":false,"de":false,"sh":false,"ss":false,"gs":false,"se":false,"re":false,"sp":false,"bi":false,"br":false,"ha":false,"uh":false,"gp":false,"em":false},{"protocol":"SCO","size":832,"sockets":0,"memory":-1,"press":"NI","maxhdr":0,"slab":false,"module":"bluetooth","cl":false,"co":false,"di":false,"ac":false,"io":false,"in":false,"de":false,"sh":false,"ss":false,"gs":false,"se":false,"re":false,"sp":false,"bi":false,"br":false,"ha":false,"uh":false,"gp":false,"em":false},{"protocol":"L2CAP","size":816,"sockets":0,"memory":-1,"press":"NI","maxhdr":0,"slab":false,"module":"bluetooth","cl":false,"co":false,"di":false,"ac":false,"io":false,"in":false,"de":false,"sh":false,"ss":false,"gs":false,"se":false,"re":false,"sp":false,"bi":false,"br":false,"ha":false,"uh":false,"gp":false,"em":false},{"protocol":"HCI","size":880,"sockets":0,"memory":-1,"press":"NI","maxhdr":0,"slab":false,"module":"bluetooth","cl":false,"co":false,"di":false,"ac":false,"io":false,"in":false,"de":false,"sh":false,"ss":false,"gs":false,"se":false,"re":false,"sp":false,"bi":false,"br":false,"ha":false,"uh":false,"gp":false,"em":false},{"protocol":"PACKET","size":1472,"sockets":1,"memory":-1,"press":"NI","maxhdr":0,"slab":false,"module":"kernel","cl":false,"co":false,"di":false,"ac":false,"io":false,"in":false,"de":false,"sh":false,"ss":false,"gs":false,"se":false,"re":false,"sp":false,"bi":false,"br":false,"ha":false,"uh":false,"gp":false,"em":false},{"protocol":"MPTCPv6","size":1824,"sockets":0,"memory":1,"press":"no","maxhdr":0,"slab":true,"module":"kernel","cl":true,"co":false,"di":true,"ac":true,"io":false,"in":true,"de":true,"sh":true,"ss":true,"gs":true,"se":true,"re":true,"sp":false,"bi":false,"br":false,"ha":true,"uh":true,"gp":true,"em":false},{"protocol":"PINGv6","size":1176,"sockets":0,"memory":-1,"press":"NI","maxhdr":0,"slab":true,"module":"kernel","cl":true,"co":true,"di":true,"ac":false,"io":false,"in":true,"de":false,"sh":false,"ss":true,"gs":true,"se":true,"re":true,"sp":false,"bi":true,"br":true,"ha":true,"uh":true,"gp":true,"em":false},{"protocol":"RAWv6","size":1176,"sockets":1,"memory":-1,"press":"NI","maxhdr":0,"slab":true,"module":"kernel","cl":true,"co":true,"di":true,"ac":false,"io":true,"in":true,"de":true,"sh":false,"ss":true,"gs":true,"se":true,"re":true,"sp":false,"bi":true,"br":true,"ha":true,"uh":true,"gp":false,"em":false},{"protocol":"UDPLITEv6","size":1344,"sockets":0,"memory":1,"press":"NI","maxhdr":0,"slab":true,"module":"kernel","cl":true,"co":true,"di":true,"ac":false,"io":true,"in":true,"de":true,"sh":false,"ss":true,"gs":true,"se":true,"re":true,"sp":false,"bi":false,"br":false,"ha":true,"uh":true,"gp":true,"em":false},{"protocol":"UDPv6","size":1344,"sockets":0,"memory":1,"press":"NI","maxhdr":0,"slab":true,"module":"kernel","cl":true,"co":true,"di":true,"ac":false,"io":true,"in":true,"de":true,"sh":false,"ss":true,"gs":true,"se":true,"re":true,"sp":false,"bi":false,"br":false,"ha":true,"uh":true,"gp":true,"em":false},{"protocol":"TCPv6","size":2368,"sockets":1,"memory":1,"press":"no","maxhdr":320,"slab":true,"module":"kernel","cl":true,"co":true,"di":true,"ac":true,"io":true,"in":true,"de":true,"sh":true,"ss":true,"gs":true,"se":true,"re":true,"sp":true,"bi":false,"br":true,"ha":true,"uh":true,"gp":true,"em":true},{"protocol":"XDP","size":960,"sockets":0,"memory":-1,"press":"NI","maxhdr":0,"slab":false,"module":"kernel","cl":false,"co":false,"di":false,"ac":false,"io":false,"in":false,"de":false,"sh":false,"ss":false,"gs":false,"se":false,"re":false,"sp":false,"bi":false,"br":false,"ha":false,"uh":false,"gp":false,"em":false},{"protocol":"UNIX","size":1024,"sockets":131,"memory":-1,"press":"NI","maxhdr":0,"slab":true,"module":"kernel","cl":false,"co":false,"di":false,"ac":false,"io":false,"in":false,"de":false,"sh":false,"ss":false,"gs":false,"se":false,"re":false,"sp":false,"bi":false,"br":false,"ha":false,"uh":false,"gp":false,"em":false},{"protocol":"UDP-Lite","size":1152,"sockets":0,"memory":1,"press":"NI","maxhdr":0,"slab":true,"module":"kernel","cl":true,"co":true,"di":true,"ac":false,"io":true,"in":true,"de":true,"sh":false,"ss":true,"gs":true,"se":true,"re":true,"sp":true,"bi":false,"br":false,"ha":true,"uh":true,"gp":true,"em":false},{"protocol":"MPTCP","size":1664,"sockets":0,"memory":1,"press":"no","maxhdr":0,"slab":true,"module":"kernel","cl":true,"co":false,"di":true,"ac":true,"io":false,"in":true,"de":true,"sh":true,"ss":true,"gs":true,"se":true,"re":true,"sp":false,"bi":false,"br":false,"ha":true,"uh":true,"gp":true,"em":false},{"protocol":"PING","size":968,"sockets":0,"memory":-1,"press":"NI","maxhdr":0,"slab":true,"module":"kernel","cl":true,"co":true,"di":true,"ac":false,"io":false,"in":true,"de":false,"sh":false,"ss":true,"gs":true,"se":true,"re":true,"sp":false,"bi":true,"br":true,"ha":true,"uh":true,"gp":true,"em":false},{"protocol":"RAW","size":976,"sockets":0,"memory":-1,"press":"NI","maxhdr":0,"slab":true,"module":"kernel","cl":true,"co":true,"di":true,"ac":false,"io":true,"in":true,"de":true,"sh":false,"ss":true,"gs":true,"se":true,"re":true,"sp":false,"bi":true,"br":true,"ha":true,"uh":true,"gp":false,"em":false},{"protocol":"UDP","size":1152,"sockets":2,"memory":1,"press":"NI","maxhdr":0,"slab":true,"module":"kernel","cl":true,"co":true,"di":true,"ac":false,"io":true,"in":true,"de":true,"sh":false,"ss":true,"gs":true,"se":true,"re":true,"sp":true,"bi":false,"br":false,"ha":true,"uh":true,"gp":true,"em":false},{"protocol":"TCP","size":2208,"sockets":3,"memory":1,"press":"no","maxhdr":320,"slab":true,"module":"kernel","cl":true,"co":true,"di":true,"ac":true,"io":true,"in":true,"de":true,"sh":true,"ss":true,"gs":true,"se":true,"re":true,"sp":true,"bi":false,"br":true,"ha":true,"uh":true,"gp":true,"em":true},{"protocol":"NETLINK","size":1096,"sockets":18,"memory":-1,"press":"NI","maxhdr":0,"slab":false,"module":"kernel","cl":false,"co":false,"di":false,"ac":false,"io":false,"in":false,"de":false,"sh":false,"ss":false,"gs":false,"se":false,"re":false,"sp":false,"bi":false,"br":false,"ha":false,"uh":false,"gp":false,"em":false}] diff --git a/tests/test_proc_net_protocols.py b/tests/test_proc_net_protocols.py new file mode 100644 index 00000000..2f676b85 --- /dev/null +++ b/tests/test_proc_net_protocols.py @@ -0,0 +1,44 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_net_protocols + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_net_protocols': ( + 'fixtures/linux-proc/net_protocols', + 'fixtures/linux-proc/net_protocols.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_net_protocols_nodata(self): + """ + Test 'proc_net_protocols' with no data + """ + self.assertEqual(jc.parsers.proc_net_protocols.parse('', quiet=True), []) + + def test_proc_net_protocols(self): + """ + Test '/proc/net/protocols' + """ + self.assertEqual(jc.parsers.proc_net_protocols.parse(self.f_in['proc_net_protocols'], quiet=True), + self.f_json['proc_net_protocols']) + + +if __name__ == '__main__': + unittest.main() From f178bea0d054f47a5f5af02124e3d1d0efe6d42c Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Mon, 26 Sep 2022 11:33:48 -0700 Subject: [PATCH 112/124] add signature detection tests for the proc parser --- tests/test_proc.py | 230 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 230 insertions(+) create mode 100644 tests/test_proc.py diff --git a/tests/test_proc.py b/tests/test_proc.py new file mode 100644 index 00000000..e2f83b1b --- /dev/null +++ b/tests/test_proc.py @@ -0,0 +1,230 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc +from jc.exceptions import ParseError + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + """ + These tests replicate the individual /proc file module tests, but the purpose + is different. These tests ensure the file signature matching engine in the + /proc parser module sends the user input to the correct parser. + + Signature match regex can be order dependent, so these tests make sure we + don't break anything when adding/removing/re-ordering the signature regexes. + """ + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_buddyinfo': ( + 'fixtures/linux-proc/buddyinfo', + 'fixtures/linux-proc/buddyinfo.json'), + 'proc_consoles': ( + 'fixtures/linux-proc/consoles', + 'fixtures/linux-proc/consoles.json'), + 'proc_consoles2': ( + 'fixtures/linux-proc/consoles2', + 'fixtures/linux-proc/consoles2.json'), + 'proc_cpuinfo': ( + 'fixtures/linux-proc/cpuinfo', + 'fixtures/linux-proc/cpuinfo.json'), + 'proc_cpuinfo2': ( + 'fixtures/linux-proc/cpuinfo2', + 'fixtures/linux-proc/cpuinfo2.json'), + 'proc_crypto': ( + 'fixtures/linux-proc/crypto', + 'fixtures/linux-proc/crypto.json'), + 'proc_devices': ( + 'fixtures/linux-proc/devices', + 'fixtures/linux-proc/devices.json'), + 'proc_diskstats': ( + 'fixtures/linux-proc/diskstats', + 'fixtures/linux-proc/diskstats.json'), + 'proc_driver_rtc': ( + 'fixtures/linux-proc/driver_rtc', + 'fixtures/linux-proc/driver_rtc.json'), + 'proc_filesystems': ( + 'fixtures/linux-proc/filesystems', + 'fixtures/linux-proc/filesystems.json'), + 'proc_interrupts': ( + 'fixtures/linux-proc/interrupts', + 'fixtures/linux-proc/interrupts.json'), + 'proc_iomem': ( + 'fixtures/linux-proc/iomem', + 'fixtures/linux-proc/iomem.json'), + 'proc_ioports': ( + 'fixtures/linux-proc/ioports', + 'fixtures/linux-proc/ioports.json'), + 'proc_loadavg': ( + 'fixtures/linux-proc/loadavg', + 'fixtures/linux-proc/loadavg.json'), + 'proc_locks': ( + 'fixtures/linux-proc/locks', + 'fixtures/linux-proc/locks.json'), + 'proc_meminfo': ( + 'fixtures/linux-proc/meminfo', + 'fixtures/linux-proc/meminfo.json'), + 'proc_modules': ( + 'fixtures/linux-proc/modules', + 'fixtures/linux-proc/modules.json'), + 'proc_mtrr': ( + 'fixtures/linux-proc/mtrr', + 'fixtures/linux-proc/mtrr.json'), + 'proc_pagetypeinfo': ( + 'fixtures/linux-proc/pagetypeinfo', + 'fixtures/linux-proc/pagetypeinfo.json'), + 'proc_partitions': ( + 'fixtures/linux-proc/partitions', + 'fixtures/linux-proc/partitions.json'), + 'proc_slabinfo': ( + 'fixtures/linux-proc/slabinfo', + 'fixtures/linux-proc/slabinfo.json'), + 'proc_softirqs': ( + 'fixtures/linux-proc/softirqs', + 'fixtures/linux-proc/softirqs.json'), + 'proc_stat': ( + 'fixtures/linux-proc/stat', + 'fixtures/linux-proc/stat.json'), + 'proc_stat2': ( + 'fixtures/linux-proc/stat2', + 'fixtures/linux-proc/stat2.json'), + 'proc_swaps': ( + 'fixtures/linux-proc/swaps', + 'fixtures/linux-proc/swaps.json'), + 'proc_uptime': ( + 'fixtures/linux-proc/uptime', + 'fixtures/linux-proc/uptime.json'), + 'proc_version': ( + 'fixtures/linux-proc/version', + 'fixtures/linux-proc/version.json'), + 'proc_version2': ( + 'fixtures/linux-proc/version2', + 'fixtures/linux-proc/version2.json'), + 'proc_version3': ( + 'fixtures/linux-proc/version3', + 'fixtures/linux-proc/version3.json'), + 'proc_vmallocinfo': ( + 'fixtures/linux-proc/vmallocinfo', + 'fixtures/linux-proc/vmallocinfo.json'), + 'proc_vmstat': ( + 'fixtures/linux-proc/vmstat', + 'fixtures/linux-proc/vmstat.json'), + 'proc_zoneinfo': ( + 'fixtures/linux-proc/zoneinfo', + 'fixtures/linux-proc/zoneinfo.json'), + 'proc_zoneinfo2': ( + 'fixtures/linux-proc/zoneinfo2', + 'fixtures/linux-proc/zoneinfo2.json'), + + 'proc_net_arp': ( + 'fixtures/linux-proc/net_arp', + 'fixtures/linux-proc/net_arp.json'), + 'proc_net_dev_mcast': ( + 'fixtures/linux-proc/net_dev_mcast', + 'fixtures/linux-proc/net_dev_mcast.json'), + 'proc_net_dev': ( + 'fixtures/linux-proc/net_dev', + 'fixtures/linux-proc/net_dev.json'), + 'proc_net_if_inet6': ( + 'fixtures/linux-proc/net_if_inet6', + 'fixtures/linux-proc/net_if_inet6.json'), + 'proc_net_igmp': ( + 'fixtures/linux-proc/net_igmp', + 'fixtures/linux-proc/net_igmp.json'), + 'proc_net_igmp_more': ( + 'fixtures/linux-proc/net_igmp_more', + 'fixtures/linux-proc/net_igmp_more.json'), + 'proc_net_igmp6': ( + 'fixtures/linux-proc/net_igmp6', + 'fixtures/linux-proc/net_igmp6.json'), + 'proc_net_ipv6_route': ( + 'fixtures/linux-proc/net_ipv6_route', + 'fixtures/linux-proc/net_ipv6_route.json'), + 'proc_net_netlink': ( + 'fixtures/linux-proc/net_netlink', + 'fixtures/linux-proc/net_netlink.json'), + 'proc_net_netstat': ( + 'fixtures/linux-proc/net_netstat', + 'fixtures/linux-proc/net_netstat.json'), + 'proc_net_packet': ( + 'fixtures/linux-proc/net_packet', + 'fixtures/linux-proc/net_packet.json'), + 'proc_net_protocols': ( + 'fixtures/linux-proc/net_protocols', + 'fixtures/linux-proc/net_protocols.json'), + + 'proc_pid_fdinfo': ( + 'fixtures/linux-proc/pid_fdinfo', + 'fixtures/linux-proc/pid_fdinfo.json'), + 'proc_pid_fdinfo_dma': ( + 'fixtures/linux-proc/pid_fdinfo_dma', + 'fixtures/linux-proc/pid_fdinfo_dma.json'), + 'proc_pid_fdinfo_epoll': ( + 'fixtures/linux-proc/pid_fdinfo_epoll', + 'fixtures/linux-proc/pid_fdinfo_epoll.json'), + 'proc_pid_fdinfo_fanotify': ( + 'fixtures/linux-proc/pid_fdinfo_fanotify', + 'fixtures/linux-proc/pid_fdinfo_fanotify.json'), + 'proc_pid_fdinfo_inotify': ( + 'fixtures/linux-proc/pid_fdinfo_inotify', + 'fixtures/linux-proc/pid_fdinfo_inotify.json'), + 'proc_pid_fdinfo_timerfd': ( + 'fixtures/linux-proc/pid_fdinfo_timerfd', + 'fixtures/linux-proc/pid_fdinfo_timerfd.json'), + 'proc_pid_io': ( + 'fixtures/linux-proc/pid_io', + 'fixtures/linux-proc/pid_io.json'), + 'proc_pid_maps': ( + 'fixtures/linux-proc/pid_maps', + 'fixtures/linux-proc/pid_maps.json'), + 'proc_pid_mountinfo': ( + 'fixtures/linux-proc/pid_mountinfo', + 'fixtures/linux-proc/pid_mountinfo.json'), + 'proc_pid_numa_maps': ( + 'fixtures/linux-proc/pid_numa_maps', + 'fixtures/linux-proc/pid_numa_maps.json'), + 'proc_pid_smaps': ( + 'fixtures/linux-proc/pid_smaps', + 'fixtures/linux-proc/pid_smaps.json'), + 'proc_pid_stat': ( + 'fixtures/linux-proc/pid_stat', + 'fixtures/linux-proc/pid_stat.json'), + 'proc_pid_statm': ( + 'fixtures/linux-proc/pid_statm', + 'fixtures/linux-proc/pid_statm.json'), + 'proc_pid_status': ( + 'fixtures/linux-proc/pid_status', + 'fixtures/linux-proc/pid_status.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_foo_nodata(self): + """ + Test 'foo' with no data + """ + self.assertRaises(ParseError, jc.parsers.proc.parse, '') + + def test_proc_file_signature_detection(self): + """ + Test proc parser file signature detection + """ + for in_, expected in zip(self.f_in.keys(), self.f_json.keys()): + self.assertEqual(jc.parsers.proc.parse(self.f_in[in_], quiet=True), + self.f_json[expected]) + + +if __name__ == '__main__': + unittest.main() From 00129f4b407cd95c73278b375e13b2c21ec0b2fb Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Mon, 26 Sep 2022 11:41:23 -0700 Subject: [PATCH 113/124] doc update --- docs/parsers/proc_driver_rtc.md | 12 ++++++------ jc/parsers/proc.py | 2 +- jc/parsers/proc_driver_rtc.py | 14 +++++++------- tests/test_proc.py | 7 ++++--- 4 files changed, 18 insertions(+), 17 deletions(-) diff --git a/docs/parsers/proc_driver_rtc.md b/docs/parsers/proc_driver_rtc.md index 05ea5972..8b7e3de9 100644 --- a/docs/parsers/proc_driver_rtc.md +++ b/docs/parsers/proc_driver_rtc.md @@ -3,19 +3,19 @@ # jc.parsers.proc\_driver\_rtc -jc - JSON Convert `/proc/driver_rtc` file parser +jc - JSON Convert `/proc/driver/rtc` file parser Usage (cli): - $ cat /proc/driver_rtc | jc --proc + $ cat /proc/driver/rtc | jc --proc or - $ jc /proc/driver_rtc + $ jc /proc/driver/rtc or - $ cat /proc/driver_rtc | jc --proc-driver-rtc + $ cat /proc/driver/rtc | jc --proc-driver-rtc Usage (module): @@ -56,7 +56,7 @@ are attempted. If you do not want this behavior, then use `--raw` (cli) or Examples: - $ cat /proc/driver_rtc | jc --proc -p + $ cat /proc/driver/rtc | jc --proc -p { "rtc_time": "16:09:21", "rtc_date": "2022-09-03", @@ -78,7 +78,7 @@ Examples: "batt_status": "okay" } - $ cat /proc/driver_rtc | jc --proc -p -r + $ cat /proc/driver/rtc | jc --proc -p -r { "rtc_time": "16:09:21", "rtc_date": "2022-09-03", diff --git a/jc/parsers/proc.py b/jc/parsers/proc.py index cfe59399..574f1aab 100644 --- a/jc/parsers/proc.py +++ b/jc/parsers/proc.py @@ -201,9 +201,9 @@ def parse( pid_mountinfo_p = re.compile(r'^\d+ \d+ \d+:\d+ /.+\n') pid_numa_maps_p = re.compile(r'^[a-f0-9]{12} default [^\n]+\n') pid_smaps_p = re.compile(r'^[0-9a-f]{12}-[0-9a-f]{12} [rwxsp\-]{4} [0-9a-f]{8} [0-9a-f]{2}:[0-9a-f]{2} \d+ [^\n]+\nSize:\s+\d+ \S\S\n') + pid_stat_p = re.compile(r'^\d+ \(.{1,16}\) \w \d+ \d+ \d+ \d+ -?\d+ (?:\d+ ){43}\d+$') pid_statm_p = re.compile(r'^\d+ \d+ \d+\s\d+\s\d+\s\d+\s\d+$') pid_status_p = re.compile(r'^Name:\t.+\nUmask:\t\d+\nState:\t.+\nTgid:\t\d+\n') - pid_stat_p = re.compile(r'^\d+ \(.{1,16}\) \w \d+ \d+ \d+ \d+ -?\d+ (?:\d+ ){43}\d+$') scsi_device_info = re.compile(r"^'\w+' '.+' 0x\d+") scsi_scsi_p = re.compile(r'^Attached devices:\nHost: \w+ ') diff --git a/jc/parsers/proc_driver_rtc.py b/jc/parsers/proc_driver_rtc.py index 2bc40f33..2b046cbc 100644 --- a/jc/parsers/proc_driver_rtc.py +++ b/jc/parsers/proc_driver_rtc.py @@ -1,16 +1,16 @@ -"""jc - JSON Convert `/proc/driver_rtc` file parser +"""jc - JSON Convert `/proc/driver/rtc` file parser Usage (cli): - $ cat /proc/driver_rtc | jc --proc + $ cat /proc/driver/rtc | jc --proc or - $ jc /proc/driver_rtc + $ jc /proc/driver/rtc or - $ cat /proc/driver_rtc | jc --proc-driver-rtc + $ cat /proc/driver/rtc | jc --proc-driver-rtc Usage (module): @@ -51,7 +51,7 @@ are attempted. If you do not want this behavior, then use `--raw` (cli) or Examples: - $ cat /proc/driver_rtc | jc --proc -p + $ cat /proc/driver/rtc | jc --proc -p { "rtc_time": "16:09:21", "rtc_date": "2022-09-03", @@ -73,7 +73,7 @@ Examples: "batt_status": "okay" } - $ cat /proc/driver_rtc | jc --proc -p -r + $ cat /proc/driver/rtc | jc --proc -p -r { "rtc_time": "16:09:21", "rtc_date": "2022-09-03", @@ -102,7 +102,7 @@ import jc.utils class info(): """Provides parser metadata (version, author, etc.)""" version = '1.0' - description = '`/proc/driver_rtc` file parser' + description = '`/proc/driver/rtc` file parser' author = 'Kelly Brazil' author_email = 'kellyjonbrazil@gmail.com' compatible = ['linux'] diff --git a/tests/test_proc.py b/tests/test_proc.py index e2f83b1b..a57f2e2f 100644 --- a/tests/test_proc.py +++ b/tests/test_proc.py @@ -47,9 +47,6 @@ class MyTests(unittest.TestCase): 'proc_diskstats': ( 'fixtures/linux-proc/diskstats', 'fixtures/linux-proc/diskstats.json'), - 'proc_driver_rtc': ( - 'fixtures/linux-proc/driver_rtc', - 'fixtures/linux-proc/driver_rtc.json'), 'proc_filesystems': ( 'fixtures/linux-proc/filesystems', 'fixtures/linux-proc/filesystems.json'), @@ -123,6 +120,10 @@ class MyTests(unittest.TestCase): 'fixtures/linux-proc/zoneinfo2', 'fixtures/linux-proc/zoneinfo2.json'), + 'proc_driver_rtc': ( + 'fixtures/linux-proc/driver_rtc', + 'fixtures/linux-proc/driver_rtc.json'), + 'proc_net_arp': ( 'fixtures/linux-proc/net_arp', 'fixtures/linux-proc/net_arp.json'), From 980c2907adfaaf1fdcee1e62c173558f55e648f6 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Mon, 26 Sep 2022 13:16:18 -0700 Subject: [PATCH 114/124] add proc-net-route parser and tests --- docs/parsers/proc_net_route.md | 109 +++++++++++++++++ jc/lib.py | 1 + jc/parsers/proc_net_route.py | 149 +++++++++++++++++++++++ man/jc.1 | 7 +- tests/fixtures/linux-proc/net_route.json | 1 + tests/test_proc.py | 3 + tests/test_proc_net_route.py | 44 +++++++ 7 files changed, 313 insertions(+), 1 deletion(-) create mode 100644 docs/parsers/proc_net_route.md create mode 100644 jc/parsers/proc_net_route.py create mode 100644 tests/fixtures/linux-proc/net_route.json create mode 100644 tests/test_proc_net_route.py diff --git a/docs/parsers/proc_net_route.md b/docs/parsers/proc_net_route.md new file mode 100644 index 00000000..674887f0 --- /dev/null +++ b/docs/parsers/proc_net_route.md @@ -0,0 +1,109 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_net\_route + +jc - JSON Convert `/proc/net/route` file parser + +Usage (cli): + + $ cat /proc/net/route | jc --proc + +or + + $ jc /proc/net/route + +or + + $ cat /proc/net/route | jc --proc-net-route + +Usage (module): + + import jc + result = jc.parse('proc', proc_net_route_file) + +or + + import jc + result = jc.parse('proc_net_route', proc_net_route_file) + +Schema: + + [ + { + "Iface": string, + "Destination": string, + "Gateway": string, + "Flags": string, + "RefCnt": integer, + "Use": integer, + "Metric": integer, + "Mask": string, + "MTU": integer, + "Window": integer, + "IRTT": integer + } + ] + +Examples: + + $ cat /proc/net/route | jc --proc -p + [ + { + "Iface": "ens33", + "Destination": "00000000", + "Gateway": "0247A8C0", + "Flags": "0003", + "RefCnt": 0, + "Use": 0, + "Metric": 100, + "Mask": "00000000", + "MTU": 0, + "Window": 0, + "IRTT": 0 + }, + ... + ] + + $ cat /proc/net/route | jc --proc -p -r + [ + { + "Iface": "ens33", + "Destination": "00000000", + "Gateway": "0247A8C0", + "Flags": "0003", + "RefCnt": "0", + "Use": "0", + "Metric": "100", + "Mask": "00000000", + "MTU": "0", + "Window": "0", + "IRTT": "0" + }, + ... + ] + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict] +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + List of Dictionaries. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/lib.py b/jc/lib.py index e455ef8b..4b088c35 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -132,6 +132,7 @@ parsers = [ 'proc-net-netstat', 'proc-net-packet', 'proc-net-protocols', + 'proc-net-route', 'ps', 'route', 'rpm-qi', diff --git a/jc/parsers/proc_net_route.py b/jc/parsers/proc_net_route.py new file mode 100644 index 00000000..ee10a81d --- /dev/null +++ b/jc/parsers/proc_net_route.py @@ -0,0 +1,149 @@ +"""jc - JSON Convert `/proc/net/route` file parser + +Usage (cli): + + $ cat /proc/net/route | jc --proc + +or + + $ jc /proc/net/route + +or + + $ cat /proc/net/route | jc --proc-net-route + +Usage (module): + + import jc + result = jc.parse('proc', proc_net_route_file) + +or + + import jc + result = jc.parse('proc_net_route', proc_net_route_file) + +Schema: + + [ + { + "Iface": string, + "Destination": string, + "Gateway": string, + "Flags": string, + "RefCnt": integer, + "Use": integer, + "Metric": integer, + "Mask": string, + "MTU": integer, + "Window": integer, + "IRTT": integer + } + ] + +Examples: + + $ cat /proc/net/route | jc --proc -p + [ + { + "Iface": "ens33", + "Destination": "00000000", + "Gateway": "0247A8C0", + "Flags": "0003", + "RefCnt": 0, + "Use": 0, + "Metric": 100, + "Mask": "00000000", + "MTU": 0, + "Window": 0, + "IRTT": 0 + }, + ... + ] + + $ cat /proc/net/route | jc --proc -p -r + [ + { + "Iface": "ens33", + "Destination": "00000000", + "Gateway": "0247A8C0", + "Flags": "0003", + "RefCnt": "0", + "Use": "0", + "Metric": "100", + "Mask": "00000000", + "MTU": "0", + "Window": "0", + "IRTT": "0" + }, + ... + ] +""" +from typing import List, Dict +import jc.utils +from jc.parsers.universal import simple_table_parse + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc/net/route` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + hidden = True + + +__version__ = info.version + + +def _process(proc_data: List[Dict]) -> List[Dict]: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (List of Dictionaries) raw structured data to process + + Returns: + + List of Dictionaries. Structured to conform to the schema. + """ + # field types documented here: https://github.com/torvalds/linux/blob/v4.19/include/uapi/linux/route.h + int_list = {'RefCnt', 'Use', 'Metric', 'MTU', 'Window', 'IRTT'} + + for entry in proc_data: + for key, val in entry.items(): + if key in int_list: + entry[key] = int(val) + + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> List[Dict]: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + List of Dictionaries. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: List = [] + + if jc.utils.has_data(data): + + raw_output = simple_table_parse(data.splitlines()) + + return raw_output if raw else _process(raw_output) diff --git a/man/jc.1 b/man/jc.1 index ead159f9..a53fd049 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -443,7 +443,7 @@ PLIST file parser .TP .B \fB--proc-driver-rtc\fP -`/proc/driver_rtc` file parser +`/proc/driver/rtc` file parser .TP .B @@ -645,6 +645,11 @@ PLIST file parser \fB--proc-net-protocols\fP `/proc/net/protocols` file parser +.TP +.B +\fB--proc-net-route\fP +`/proc/net/route` file parser + .TP .B \fB--ps\fP diff --git a/tests/fixtures/linux-proc/net_route.json b/tests/fixtures/linux-proc/net_route.json new file mode 100644 index 00000000..f0c18248 --- /dev/null +++ b/tests/fixtures/linux-proc/net_route.json @@ -0,0 +1 @@ +[{"Iface":"ens33","Destination":"00000000","Gateway":"0247A8C0","Flags":"0003","RefCnt":0,"Use":0,"Metric":100,"Mask":"00000000","MTU":0,"Window":0,"IRTT":0},{"Iface":"ens33","Destination":"0047A8C0","Gateway":"00000000","Flags":"0001","RefCnt":0,"Use":0,"Metric":0,"Mask":"00FFFFFF","MTU":0,"Window":0,"IRTT":0},{"Iface":"ens33","Destination":"0247A8C0","Gateway":"00000000","Flags":"0005","RefCnt":0,"Use":0,"Metric":100,"Mask":"FFFFFFFF","MTU":0,"Window":0,"IRTT":0}] diff --git a/tests/test_proc.py b/tests/test_proc.py index a57f2e2f..82bf744c 100644 --- a/tests/test_proc.py +++ b/tests/test_proc.py @@ -160,6 +160,9 @@ class MyTests(unittest.TestCase): 'proc_net_protocols': ( 'fixtures/linux-proc/net_protocols', 'fixtures/linux-proc/net_protocols.json'), + 'proc_net_route': ( + 'fixtures/linux-proc/net_route', + 'fixtures/linux-proc/net_route.json'), 'proc_pid_fdinfo': ( 'fixtures/linux-proc/pid_fdinfo', diff --git a/tests/test_proc_net_route.py b/tests/test_proc_net_route.py new file mode 100644 index 00000000..177d5847 --- /dev/null +++ b/tests/test_proc_net_route.py @@ -0,0 +1,44 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_net_route + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_net_route': ( + 'fixtures/linux-proc/net_route', + 'fixtures/linux-proc/net_route.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_net_route_nodata(self): + """ + Test 'proc_net_route' with no data + """ + self.assertEqual(jc.parsers.proc_net_route.parse('', quiet=True), []) + + def test_proc_net_route(self): + """ + Test '/proc/net/route' + """ + self.assertEqual(jc.parsers.proc_net_route.parse(self.f_in['proc_net_route'], quiet=True), + self.f_json['proc_net_route']) + + +if __name__ == '__main__': + unittest.main() From 6c8ad1139c84bfa25590cac220d33fd9ae119c64 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Mon, 26 Sep 2022 13:28:21 -0700 Subject: [PATCH 115/124] add proc-net-unix parser and tests --- docs/parsers/proc_net_protocols.md | 62 +++++------ docs/parsers/proc_net_unix.md | 100 +++++++++++++++++ jc/lib.py | 1 + jc/parsers/proc_net_protocols.py | 62 +++++------ jc/parsers/proc_net_unix.py | 139 ++++++++++++++++++++++++ man/jc.1 | 5 + tests/fixtures/linux-proc/net_unix.json | 1 + tests/test_proc.py | 3 + tests/test_proc_net_unix.py | 44 ++++++++ 9 files changed, 355 insertions(+), 62 deletions(-) create mode 100644 docs/parsers/proc_net_unix.md create mode 100644 jc/parsers/proc_net_unix.py create mode 100644 tests/fixtures/linux-proc/net_unix.json create mode 100644 tests/test_proc_net_unix.py diff --git a/docs/parsers/proc_net_protocols.md b/docs/parsers/proc_net_protocols.md index a86416dd..8517308d 100644 --- a/docs/parsers/proc_net_protocols.md +++ b/docs/parsers/proc_net_protocols.md @@ -99,37 +99,37 @@ Examples: $ cat /proc/net/protocols | jc --proc -p -r [ - { - "protocol": "AF_VSOCK", - "size": "1216", - "sockets": "0", - "memory": "-1", - "press": "NI", - "maxhdr": "0", - "slab": "yes", - "module": "vsock", - "cl": "n", - "co": "n", - "di": "n", - "ac": "n", - "io": "n", - "in": "n", - "de": "n", - "sh": "n", - "ss": "n", - "gs": "n", - "se": "n", - "re": "n", - "sp": "n", - "bi": "n", - "br": "n", - "ha": "n", - "uh": "n", - "gp": "n", - "em": "n" - }, - ... - ] + { + "protocol": "AF_VSOCK", + "size": "1216", + "sockets": "0", + "memory": "-1", + "press": "NI", + "maxhdr": "0", + "slab": "yes", + "module": "vsock", + "cl": "n", + "co": "n", + "di": "n", + "ac": "n", + "io": "n", + "in": "n", + "de": "n", + "sh": "n", + "ss": "n", + "gs": "n", + "se": "n", + "re": "n", + "sp": "n", + "bi": "n", + "br": "n", + "ha": "n", + "uh": "n", + "gp": "n", + "em": "n" + }, + ... + ] diff --git a/docs/parsers/proc_net_unix.md b/docs/parsers/proc_net_unix.md new file mode 100644 index 00000000..9b565d32 --- /dev/null +++ b/docs/parsers/proc_net_unix.md @@ -0,0 +1,100 @@ +[Home](https://kellyjonbrazil.github.io/jc/) + + +# jc.parsers.proc\_net\_unix + +jc - JSON Convert `/proc/net/unix` file parser + +Usage (cli): + + $ cat /proc/net/unix | jc --proc + +or + + $ jc /proc/net/unix + +or + + $ cat /proc/net/unix | jc --proc-net-unix + +Usage (module): + + import jc + result = jc.parse('proc', proc_net_unix_file) + +or + + import jc + result = jc.parse('proc_net_unix', proc_net_unix_file) + +Schema: + + [ + { + "Num": string, + "RefCount": string, + "Protocol": string, + "Flags": string, + "Type": string, + "St": string, + "Inode": integer, + "Path": string + } + ] + +Examples: + + $ cat /proc/net/unix | jc --proc -p + [ + { + "Num": "ffff9b61ac49c400:", + "RefCount": "00000002", + "Protocol": "00000000", + "Flags": "00010000", + "Type": "0001", + "St": "01", + "Inode": 42776, + "Path": "/var/snap/lxd/common/lxd/unix.socket" + }, + ... + ] + + $ cat /proc/net/unix | jc --proc -p -r + [ + { + "Num": "ffff9b61ac49c400:", + "RefCount": "00000002", + "Protocol": "00000000", + "Flags": "00010000", + "Type": "0001", + "St": "01", + "Inode": "42776", + "Path": "/var/snap/lxd/common/lxd/unix.socket" + }, + ... + ] + + + +### parse + +```python +def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict] +``` + +Main text parsing function + +Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + +Returns: + + List of Dictionaries. Raw or processed structured data. + +### Parser Information +Compatibility: linux + +Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/lib.py b/jc/lib.py index 4b088c35..2ddd9d48 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -133,6 +133,7 @@ parsers = [ 'proc-net-packet', 'proc-net-protocols', 'proc-net-route', + 'proc-net-unix', 'ps', 'route', 'rpm-qi', diff --git a/jc/parsers/proc_net_protocols.py b/jc/parsers/proc_net_protocols.py index 024e568d..1a309bf4 100644 --- a/jc/parsers/proc_net_protocols.py +++ b/jc/parsers/proc_net_protocols.py @@ -94,37 +94,37 @@ Examples: $ cat /proc/net/protocols | jc --proc -p -r [ - { - "protocol": "AF_VSOCK", - "size": "1216", - "sockets": "0", - "memory": "-1", - "press": "NI", - "maxhdr": "0", - "slab": "yes", - "module": "vsock", - "cl": "n", - "co": "n", - "di": "n", - "ac": "n", - "io": "n", - "in": "n", - "de": "n", - "sh": "n", - "ss": "n", - "gs": "n", - "se": "n", - "re": "n", - "sp": "n", - "bi": "n", - "br": "n", - "ha": "n", - "uh": "n", - "gp": "n", - "em": "n" - }, - ... - ] + { + "protocol": "AF_VSOCK", + "size": "1216", + "sockets": "0", + "memory": "-1", + "press": "NI", + "maxhdr": "0", + "slab": "yes", + "module": "vsock", + "cl": "n", + "co": "n", + "di": "n", + "ac": "n", + "io": "n", + "in": "n", + "de": "n", + "sh": "n", + "ss": "n", + "gs": "n", + "se": "n", + "re": "n", + "sp": "n", + "bi": "n", + "br": "n", + "ha": "n", + "uh": "n", + "gp": "n", + "em": "n" + }, + ... + ] """ from typing import List, Dict import jc.utils diff --git a/jc/parsers/proc_net_unix.py b/jc/parsers/proc_net_unix.py new file mode 100644 index 00000000..66e1536f --- /dev/null +++ b/jc/parsers/proc_net_unix.py @@ -0,0 +1,139 @@ +"""jc - JSON Convert `/proc/net/unix` file parser + +Usage (cli): + + $ cat /proc/net/unix | jc --proc + +or + + $ jc /proc/net/unix + +or + + $ cat /proc/net/unix | jc --proc-net-unix + +Usage (module): + + import jc + result = jc.parse('proc', proc_net_unix_file) + +or + + import jc + result = jc.parse('proc_net_unix', proc_net_unix_file) + +Schema: + + [ + { + "Num": string, + "RefCount": string, + "Protocol": string, + "Flags": string, + "Type": string, + "St": string, + "Inode": integer, + "Path": string + } + ] + +Examples: + + $ cat /proc/net/unix | jc --proc -p + [ + { + "Num": "ffff9b61ac49c400:", + "RefCount": "00000002", + "Protocol": "00000000", + "Flags": "00010000", + "Type": "0001", + "St": "01", + "Inode": 42776, + "Path": "/var/snap/lxd/common/lxd/unix.socket" + }, + ... + ] + + $ cat /proc/net/unix | jc --proc -p -r + [ + { + "Num": "ffff9b61ac49c400:", + "RefCount": "00000002", + "Protocol": "00000000", + "Flags": "00010000", + "Type": "0001", + "St": "01", + "Inode": "42776", + "Path": "/var/snap/lxd/common/lxd/unix.socket" + }, + ... + ] +""" +from typing import List, Dict +import jc.utils +from jc.parsers.universal import simple_table_parse + + +class info(): + """Provides parser metadata (version, author, etc.)""" + version = '1.0' + description = '`/proc/net/unix` file parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + compatible = ['linux'] + hidden = True + + +__version__ = info.version + + +def _process(proc_data: List[Dict]) -> List[Dict]: + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (List of Dictionaries) raw structured data to process + + Returns: + + List of Dictionaries. Structured to conform to the schema. + """ + int_list = {'Inode'} + + for entry in proc_data: + for key, val in entry.items(): + if key in int_list: + entry[key] = int(val) + + return proc_data + + +def parse( + data: str, + raw: bool = False, + quiet: bool = False +) -> List[Dict]: + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) unprocessed output if True + quiet: (boolean) suppress warning messages if True + + Returns: + + List of Dictionaries. Raw or processed structured data. + """ + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) + + raw_output: List = [] + + if jc.utils.has_data(data): + + raw_output = simple_table_parse(data.splitlines()) + + return raw_output if raw else _process(raw_output) diff --git a/man/jc.1 b/man/jc.1 index a53fd049..f8a3734a 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -650,6 +650,11 @@ PLIST file parser \fB--proc-net-route\fP `/proc/net/route` file parser +.TP +.B +\fB--proc-net-unix\fP +`/proc/net/unix` file parser + .TP .B \fB--ps\fP diff --git a/tests/fixtures/linux-proc/net_unix.json b/tests/fixtures/linux-proc/net_unix.json new file mode 100644 index 00000000..4106e4bf --- /dev/null +++ b/tests/fixtures/linux-proc/net_unix.json @@ -0,0 +1 @@ +[{"Num":"ffff9b61ac49c400:","RefCount":"00000002","Protocol":"00000000","Flags":"00010000","Type":"0001","St":"01","Inode":42776,"Path":"/var/snap/lxd/common/lxd/unix.socket"},{"Num":"ffff9b61b509bc00:","RefCount":"00000002","Protocol":"00000000","Flags":"00010000","Type":"0001","St":"01","Inode":35128,"Path":"/var/run/vmware/guestServicePipe"},{"Num":"ffff9b61a77b9800:","RefCount":"00000002","Protocol":"00000000","Flags":"00010000","Type":"0005","St":"01","Inode":29792,"Path":"/run/udev/control"},{"Num":"ffff9b61ac49a800:","RefCount":"00000002","Protocol":"00000000","Flags":"00010000","Type":"0001","St":"01","Inode":42769,"Path":"/var/snap/lxd/common/lxd-user/unix.socket"},{"Num":"ffff9b61b0e54800:","RefCount":"00000002","Protocol":"00000000","Flags":"00000000","Type":"0002","St":"01","Inode":41863,"Path":"/run/user/1000/systemd/notify"},{"Num":"ffff9b61b0e56c00:","RefCount":"00000002","Protocol":"00000000","Flags":"00010000","Type":"0001","St":"01","Inode":41866,"Path":"/run/user/1000/systemd/private"},{"Num":"ffff9b61b0e52c00:","RefCount":"00000002","Protocol":"00000000","Flags":"00010000","Type":"0001","St":"01","Inode":41874,"Path":"/run/user/1000/bus"},{"Num":"ffff9b61a77bb800:","RefCount":"00000002","Protocol":"00000000","Flags":"00010000","Type":"0001","St":"01","Inode":29777,"Path":"@/org/kernel/linux/storage/multipathd"},{"Num":"ffff9b61b0e50000:","RefCount":"00000002","Protocol":"00000000","Flags":"00010000","Type":"0001","St":"01","Inode":41875,"Path":"/run/user/1000/gnupg/S.dirmngr"},{"Num":"ffff9b61b0e51000:","RefCount":"00000002","Protocol":"00000000","Flags":"00010000","Type":"0001","St":"01","Inode":41876,"Path":"/run/user/1000/gnupg/S.gpg-agent.browser"},{"Num":"ffff9b61b0e50c00:","RefCount":"00000002","Protocol":"00000000","Flags":"00010000","Type":"0001","St":"01","Inode":41877,"Path":"/run/user/1000/gnupg/S.gpg-agent.extra"},{"Num":"ffff9b61b0e51400:","RefCount":"00000002","Protocol":"00000000","Flags":"00010000","Type":"0001","St":"01","Inode":41878,"Path":"/run/user/1000/gnupg/S.gpg-agent.ssh"},{"Num":"ffff9b61a777d400:","RefCount":"00000002","Protocol":"00000000","Flags":"00010000","Type":"0001","St":"01","Inode":35973,"Path":"/run/dbus/system_bus_socket"},{"Num":"ffff9b61b0e52400:","RefCount":"00000002","Protocol":"00000000","Flags":"00010000","Type":"0001","St":"01","Inode":41879,"Path":"/run/user/1000/gnupg/S.gpg-agent"},{"Num":"ffff9b61a7779800:","RefCount":"00000002","Protocol":"00000000","Flags":"00010000","Type":"0001","St":"01","Inode":35990,"Path":"/run/snapd.socket"},{"Num":"ffff9b61b0e57000:","RefCount":"00000002","Protocol":"00000000","Flags":"00010000","Type":"0001","St":"01","Inode":41903,"Path":"/run/user/1000/pk-debconf-socket"},{"Num":"ffff9b61a777d000:","RefCount":"00000002","Protocol":"00000000","Flags":"00010000","Type":"0001","St":"01","Inode":35992,"Path":"/run/snapd-snap.socket"},{"Num":"ffff9b61b0e54c00:","RefCount":"00000002","Protocol":"00000000","Flags":"00010000","Type":"0001","St":"01","Inode":41904,"Path":"/run/user/1000/snapd-session-agent.socket"},{"Num":"ffff9b61a777ac00:","RefCount":"00000002","Protocol":"00000000","Flags":"00010000","Type":"0001","St":"01","Inode":35994,"Path":"/run/uuidd/request"},{"Num":"ffff9b61b2919c00:","RefCount":"00000002","Protocol":"00000000","Flags":"00010000","Type":"0001","St":"01","Inode":37637,"Path":"/run/irqbalance/irqbalance861.sock"},{"Num":"ffff9b61a77bfc00:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0002","St":"01","Inode":29761,"Path":"/run/systemd/notify"},{"Num":"ffff9b61a77b9c00:","RefCount":"00000002","Protocol":"00000000","Flags":"00010000","Type":"0001","St":"01","Inode":29764,"Path":"/run/systemd/private"},{"Num":"ffff9b61a77ba000:","RefCount":"00000002","Protocol":"00000000","Flags":"00010000","Type":"0001","St":"01","Inode":29766,"Path":"/run/systemd/userdb/io.systemd.DynamicUser"},{"Num":"ffff9b61a77bec00:","RefCount":"00000002","Protocol":"00000000","Flags":"00010000","Type":"0001","St":"01","Inode":29775,"Path":"/run/lvm/lvmpolld.socket"},{"Num":"ffff9b61a77be000:","RefCount":"00000002","Protocol":"00000000","Flags":"00000000","Type":"0002","St":"01","Inode":29778,"Path":"/run/systemd/journal/syslog"},{"Num":"ffff9b61a77bdc00:","RefCount":"0000000A","Protocol":"00000000","Flags":"00000000","Type":"0002","St":"01","Inode":29785,"Path":"/run/systemd/journal/dev-log"},{"Num":"ffff9b61a77bc000:","RefCount":"00000002","Protocol":"00000000","Flags":"00010000","Type":"0001","St":"01","Inode":29787,"Path":"/run/systemd/journal/stdout"},{"Num":"ffff9b61a77bcc00:","RefCount":"00000009","Protocol":"00000000","Flags":"00000000","Type":"0002","St":"01","Inode":29789,"Path":"/run/systemd/journal/socket"},{"Num":"ffff9b61a777c000:","RefCount":"00000002","Protocol":"00000000","Flags":"00010000","Type":"0001","St":"01","Inode":30858,"Path":"/run/systemd/journal/io.systemd.journal"},{"Num":"ffff9b61a777f800:","RefCount":"00000002","Protocol":"00000000","Flags":"00010000","Type":"0001","St":"01","Inode":35985,"Path":"@ISCSIADM_ABSTRACT_NAMESPACE"},{"Num":"ffff9b61b0e55400:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0002","St":"01","Inode":41865},{"Num":"ffff9b61b2c07800:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":40074,"Path":"/run/dbus/system_bus_socket"},{"Num":"ffff9b61b2d56c00:","RefCount":"00000002","Protocol":"00000000","Flags":"00000000","Type":"0002","St":"01","Inode":37639},{"Num":"ffff9b61a7842800:","RefCount":"00000002","Protocol":"00000000","Flags":"00000000","Type":"0002","St":"01","Inode":34191},{"Num":"ffff9b61b5a91000:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0002","St":"01","Inode":34731},{"Num":"ffff9b61a7842c00:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0002","St":"01","Inode":34198},{"Num":"ffff9b61b4a40000:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":37395},{"Num":"ffff9b61ac18a400:","RefCount":"00000002","Protocol":"00000000","Flags":"00000000","Type":"0002","St":"01","Inode":34187},{"Num":"ffff9b61b0e54400:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":41868,"Path":"/run/dbus/system_bus_socket"},{"Num":"ffff9b61ab65dc00:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":32191,"Path":"/run/systemd/journal/stdout"},{"Num":"ffff9b61b4a40400:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":37695,"Path":"/run/dbus/system_bus_socket"},{"Num":"ffff9b61b5a90800:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0002","St":"01","Inode":34732},{"Num":"ffff9b61a777c400:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":34123},{"Num":"ffff9b61a77bc400:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":104866},{"Num":"ffff9b61b279d000:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":39056},{"Num":"ffff9b61a777cc00:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":37694,"Path":"/run/dbus/system_bus_socket"},{"Num":"ffff9b61b579d000:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":35846,"Path":"/run/systemd/journal/stdout"},{"Num":"ffff9b61b4a43000:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":35594,"Path":"/run/systemd/journal/stdout"},{"Num":"ffff9b61ab65ec00:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":33108},{"Num":"ffff9b61a7840000:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0002","St":"01","Inode":34195},{"Num":"ffff9b61a77bf800:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":30127},{"Num":"ffff9b61b633a000:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0002","St":"01","Inode":30139},{"Num":"ffff9b61a77bf400:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":37473},{"Num":"ffff9b61b633ac00:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0002","St":"01","Inode":30140},{"Num":"ffff9b61b5a93000:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0002","St":"01","Inode":34729},{"Num":"ffff9b61a77bf000:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0002","St":"01","Inode":29762},{"Num":"ffff9b61ab7fe400:","RefCount":"00000002","Protocol":"00000000","Flags":"00000000","Type":"0002","St":"01","Inode":30860},{"Num":"ffff9b61b0e56400:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0002","St":"01","Inode":41864},{"Num":"ffff9b61b4058000:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":35735,"Path":"/run/systemd/journal/stdout"},{"Num":"ffff9b61a777e400:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":36549},{"Num":"ffff9b61b0e56000:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":41867},{"Num":"ffff9b61b4820000:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":37693,"Path":"/run/dbus/system_bus_socket"},{"Num":"ffff9b61b3af2400:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":37400,"Path":"/run/systemd/journal/stdout"},{"Num":"ffff9b61a77be400:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0002","St":"01","Inode":29763},{"Num":"ffff9b61a7841800:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0002","St":"01","Inode":34196},{"Num":"ffff9b61a777ec00:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":36166},{"Num":"ffff9b61b633b800:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":30891,"Path":"/run/systemd/journal/stdout"},{"Num":"ffff9b61a7779000:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":36010},{"Num":"ffff9b61b2897800:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":37635,"Path":"/run/systemd/journal/stdout"},{"Num":"ffff9b61b5a95800:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":37691,"Path":"/run/dbus/system_bus_socket"},{"Num":"ffff9b61b2798c00:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":39057},{"Num":"ffff9b61ac18fc00:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":32701,"Path":"/run/systemd/journal/stdout"},{"Num":"ffff9b61a7846800:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":33991,"Path":"/run/systemd/journal/stdout"},{"Num":"ffff9b61a7778000:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":35845},{"Num":"ffff9b61a7847000:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":35984},{"Num":"ffff9b61a77b8800:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":35734},{"Num":"ffff9b61b5a94800:","RefCount":"00000002","Protocol":"00000000","Flags":"00000000","Type":"0002","St":"01","Inode":34725},{"Num":"ffff9b61a77b8400:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":35806},{"Num":"ffff9b61a7778800:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":34722},{"Num":"ffff9b61a7778c00:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":38537},{"Num":"ffff9b61a77b8000:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":35593},{"Num":"ffff9b61b5a94000:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":35262,"Path":"/run/systemd/journal/stdout"},{"Num":"ffff9b61b2799400:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":39051},{"Num":"ffff9b61a777b000:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":33989},{"Num":"ffff9b61b2c01400:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":37547,"Path":"/run/systemd/journal/stdout"},{"Num":"ffff9b61a77bb400:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":41833,"Path":"/run/systemd/journal/stdout"},{"Num":"ffff9b61b5a97400:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":35983},{"Num":"ffff9b61b4825c00:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":35453},{"Num":"ffff9b61a7844800:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0002","St":"01","Inode":34197},{"Num":"ffff9b61a77bb000:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":42102},{"Num":"ffff9b61b0e53800:","RefCount":"00000002","Protocol":"00000000","Flags":"00000000","Type":"0002","St":"01","Inode":41844},{"Num":"ffff9b61a7844c00:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":37692,"Path":"/run/dbus/system_bus_socket"},{"Num":"ffff9b61a777a000:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":36317},{"Num":"ffff9b61b2c00000:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":38743},{"Num":"ffff9b61b4824400:","RefCount":"00000002","Protocol":"00000000","Flags":"00000000","Type":"0002","St":"01","Inode":35335},{"Num":"ffff9b61b279b800:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":39052,"Path":"/run/dbus/system_bus_socket"},{"Num":"ffff9b61b08e4800:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":32702,"Path":"/run/systemd/journal/stdout"},{"Num":"ffff9b61b5a96400:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0002","St":"01","Inode":34730},{"Num":"ffff9b61a777a800:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":34066},{"Num":"ffff9b61a77ba400:","RefCount":"00000002","Protocol":"00000000","Flags":"00000000","Type":"0002","St":"01","Inode":30241},{"Num":"ffff9b61b633f800:","RefCount":"00000002","Protocol":"00000000","Flags":"00000000","Type":"0002","St":"01","Inode":30136},{"Num":"ffff9b61b288b800:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":37721,"Path":"/run/systemd/journal/stdout"},{"Num":"ffff9b61b48ab800:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":39006,"Path":"/run/systemd/journal/stdout"},{"Num":"ffff9b61b0defc00:","RefCount":"00000002","Protocol":"00000000","Flags":"00000000","Type":"0002","St":"01","Inode":42110},{"Num":"ffff9b61b3b5ac00:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":39035,"Path":"/run/dbus/system_bus_socket"},{"Num":"ffff9b612acc4800:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":104870,"Path":"/run/dbus/system_bus_socket"},{"Num":"ffff9b612acc5000:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":103612,"Path":"/run/systemd/journal/stdout"},{"Num":"ffff9b61b4121c00:","RefCount":"00000002","Protocol":"00000000","Flags":"00000000","Type":"0002","St":"01","Inode":37688},{"Num":"ffff9b61ab534400:","RefCount":"00000002","Protocol":"00000000","Flags":"00000000","Type":"0002","St":"01","Inode":40763},{"Num":"ffff9b61b24a3800:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":37831},{"Num":"ffff9b61b6334400:","RefCount":"00000002","Protocol":"00000000","Flags":"00000000","Type":"0002","St":"01","Inode":38990},{"Num":"ffff9b612acc2400:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":104869},{"Num":"ffff9b61af8ce800:","RefCount":"00000002","Protocol":"00000000","Flags":"00000000","Type":"0002","St":"01","Inode":89141},{"Num":"ffff9b61af8cf000:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":86011},{"Num":"ffff9b61b6335000:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":38997,"Path":"/run/dbus/system_bus_socket"},{"Num":"ffff9b61b3b5d000:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":39038},{"Num":"ffff9b61b4127000:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":35808,"Path":"/run/systemd/journal/stdout"},{"Num":"ffff9b61b3b5e400:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":37474,"Path":"/run/systemd/journal/stdout"},{"Num":"ffff9b61b42d7c00:","RefCount":"00000002","Protocol":"00000000","Flags":"00000000","Type":"0002","St":"01","Inode":36009},{"Num":"ffff9b61b3b5ec00:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":39037},{"Num":"ffff9b61af8cc800:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":86012},{"Num":"ffff9b61b3b5e800:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":39034},{"Num":"ffff9b61b6337400:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":38996},{"Num":"ffff9b61b4125400:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":37690},{"Num":"ffff9b61af8cd000:","RefCount":"00000002","Protocol":"00000000","Flags":"00000000","Type":"0002","St":"01","Inode":89121},{"Num":"ffff9b61b288cc00:","RefCount":"00000002","Protocol":"00000000","Flags":"00000000","Type":"0002","St":"01","Inode":85934},{"Num":"ffff9b61b4125000:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":37689},{"Num":"ffff9b61b288c000:","RefCount":"00000002","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":85914},{"Num":"ffff9b61b24a0400:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":37832,"Path":"/run/dbus/system_bus_socket"},{"Num":"ffff9b61b288c400:","RefCount":"00000003","Protocol":"00000000","Flags":"00000000","Type":"0001","St":"03","Inode":38139}] diff --git a/tests/test_proc.py b/tests/test_proc.py index 82bf744c..b96e289b 100644 --- a/tests/test_proc.py +++ b/tests/test_proc.py @@ -163,6 +163,9 @@ class MyTests(unittest.TestCase): 'proc_net_route': ( 'fixtures/linux-proc/net_route', 'fixtures/linux-proc/net_route.json'), + 'proc_net_unix': ( + 'fixtures/linux-proc/net_unix', + 'fixtures/linux-proc/net_unix.json'), 'proc_pid_fdinfo': ( 'fixtures/linux-proc/pid_fdinfo', diff --git a/tests/test_proc_net_unix.py b/tests/test_proc_net_unix.py new file mode 100644 index 00000000..a5d2ed91 --- /dev/null +++ b/tests/test_proc_net_unix.py @@ -0,0 +1,44 @@ +import os +import unittest +import json +from typing import Dict +import jc.parsers.proc_net_unix + +THIS_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class MyTests(unittest.TestCase): + f_in: Dict = {} + f_json: Dict = {} + + @classmethod + def setUpClass(cls): + fixtures = { + 'proc_net_unix': ( + 'fixtures/linux-proc/net_unix', + 'fixtures/linux-proc/net_unix.json') + } + + for file, filepaths in fixtures.items(): + with open(os.path.join(THIS_DIR, filepaths[0]), 'r', encoding='utf-8') as a, \ + open(os.path.join(THIS_DIR, filepaths[1]), 'r', encoding='utf-8') as b: + cls.f_in[file] = a.read() + cls.f_json[file] = json.loads(b.read()) + + + def test_proc_net_unix_nodata(self): + """ + Test 'proc_net_unix' with no data + """ + self.assertEqual(jc.parsers.proc_net_unix.parse('', quiet=True), []) + + def test_proc_net_unix(self): + """ + Test '/proc/net/unix' + """ + self.assertEqual(jc.parsers.proc_net_unix.parse(self.f_in['proc_net_unix'], quiet=True), + self.f_json['proc_net_unix']) + + +if __name__ == '__main__': + unittest.main() From 32183118dec06835613ed3fd884802ea5d1f64ee Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Mon, 26 Sep 2022 13:30:52 -0700 Subject: [PATCH 116/124] update parser order --- jc/lib.py | 18 +++++------ man/jc.1 | 90 +++++++++++++++++++++++++++---------------------------- 2 files changed, 54 insertions(+), 54 deletions(-) diff --git a/jc/lib.py b/jc/lib.py index 2ddd9d48..b85fa39b 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -112,15 +112,6 @@ parsers = [ 'proc-vmallocinfo', 'proc-vmstat', 'proc-zoneinfo', - 'proc-pid-fdinfo', - 'proc-pid-io', - 'proc-pid-maps', - 'proc-pid-mountinfo', - 'proc-pid-numa-maps', - 'proc-pid-smaps', - 'proc-pid-stat', - 'proc-pid-statm', - 'proc-pid-status', 'proc-net-arp', 'proc-net-dev', 'proc-net-dev-mcast', @@ -134,6 +125,15 @@ parsers = [ 'proc-net-protocols', 'proc-net-route', 'proc-net-unix', + 'proc-pid-fdinfo', + 'proc-pid-io', + 'proc-pid-maps', + 'proc-pid-mountinfo', + 'proc-pid-numa-maps', + 'proc-pid-smaps', + 'proc-pid-stat', + 'proc-pid-statm', + 'proc-pid-status', 'ps', 'route', 'rpm-qi', diff --git a/man/jc.1 b/man/jc.1 index f8a3734a..1f08a901 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -545,51 +545,6 @@ PLIST file parser \fB--proc-zoneinfo\fP `/proc/zoneinfo` file parser -.TP -.B -\fB--proc-pid-fdinfo\fP -`/proc//fdinfo/` file parser - -.TP -.B -\fB--proc-pid-io\fP -`/proc//io` file parser - -.TP -.B -\fB--proc-pid-maps\fP -`/proc//maps` file parser - -.TP -.B -\fB--proc-pid-mountinfo\fP -`/proc//mountinfo` file parser - -.TP -.B -\fB--proc-pid-numa-maps\fP -`/proc//numa_maps` file parser - -.TP -.B -\fB--proc-pid-smaps\fP -`/proc//smaps` file parser - -.TP -.B -\fB--proc-pid-stat\fP -`/proc//stat` file parser - -.TP -.B -\fB--proc-pid-statm\fP -`/proc//statm` file parser - -.TP -.B -\fB--proc-pid-status\fP -`/proc//status` file parser - .TP .B \fB--proc-net-arp\fP @@ -655,6 +610,51 @@ PLIST file parser \fB--proc-net-unix\fP `/proc/net/unix` file parser +.TP +.B +\fB--proc-pid-fdinfo\fP +`/proc//fdinfo/` file parser + +.TP +.B +\fB--proc-pid-io\fP +`/proc//io` file parser + +.TP +.B +\fB--proc-pid-maps\fP +`/proc//maps` file parser + +.TP +.B +\fB--proc-pid-mountinfo\fP +`/proc//mountinfo` file parser + +.TP +.B +\fB--proc-pid-numa-maps\fP +`/proc//numa_maps` file parser + +.TP +.B +\fB--proc-pid-smaps\fP +`/proc//smaps` file parser + +.TP +.B +\fB--proc-pid-stat\fP +`/proc//stat` file parser + +.TP +.B +\fB--proc-pid-statm\fP +`/proc//statm` file parser + +.TP +.B +\fB--proc-pid-status\fP +`/proc//status` file parser + .TP .B \fB--ps\fP From 253aa03e07a2d777c6c8a88c839c02b0151e4789 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Mon, 26 Sep 2022 13:32:33 -0700 Subject: [PATCH 117/124] fix parser order --- jc/lib.py | 2 +- man/jc.1 | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/jc/lib.py b/jc/lib.py index b85fa39b..6464648f 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -91,7 +91,6 @@ parsers = [ 'proc-crypto', 'proc-devices', 'proc-diskstats', - 'proc-driver-rtc', 'proc-filesystems', 'proc-interrupts', 'proc-iomem', @@ -112,6 +111,7 @@ parsers = [ 'proc-vmallocinfo', 'proc-vmstat', 'proc-zoneinfo', + 'proc-driver-rtc', 'proc-net-arp', 'proc-net-dev', 'proc-net-dev-mcast', diff --git a/man/jc.1 b/man/jc.1 index 1f08a901..70836260 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -440,11 +440,6 @@ PLIST file parser \fB--proc-diskstats\fP `/proc/diskstats` file parser -.TP -.B -\fB--proc-driver-rtc\fP -`/proc/driver/rtc` file parser - .TP .B \fB--proc-filesystems\fP @@ -545,6 +540,11 @@ PLIST file parser \fB--proc-zoneinfo\fP `/proc/zoneinfo` file parser +.TP +.B +\fB--proc-driver-rtc\fP +`/proc/driver/rtc` file parser + .TP .B \fB--proc-net-arp\fP From efd0bae0d623f9604eb21c66cf13f78673248667 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Mon, 26 Sep 2022 15:46:59 -0700 Subject: [PATCH 118/124] add /proc shel completions --- completions/jc_bash_completion.sh | 8 ++++- completions/jc_zsh_completion.sh | 58 ++++++++++++++++++++++++++++++- jc/parsers/proc.py | 8 ++--- jc/shell_completions.py | 17 +++++++-- 4 files changed, 83 insertions(+), 8 deletions(-) diff --git a/completions/jc_bash_completion.sh b/completions/jc_bash_completion.sh index 941ffc92..645cf6d8 100644 --- a/completions/jc_bash_completion.sh +++ b/completions/jc_bash_completion.sh @@ -4,7 +4,7 @@ _jc() jc_about_options jc_about_mod_options jc_help_options jc_special_options jc_commands=(acpi airport arp blkid chage cksum crontab date df dig dmidecode dpkg du env file finger free git gpg hciconfig id ifconfig iostat iptables iw jobs last lastb ls lsblk lsmod lsof lsusb md5 md5sum mdadm mount mpstat netstat nmcli ntpq pidstat ping ping6 pip pip3 postconf printenv ps route rpm rsync sfdisk sha1sum sha224sum sha256sum sha384sum sha512sum shasum ss stat sum sysctl systemctl systeminfo timedatectl top tracepath tracepath6 traceroute traceroute6 ufw uname update-alternatives upower uptime vdir vmstat w wc who xrandr zipinfo) - jc_parsers=(--acpi --airport --airport-s --arp --asciitable --asciitable-m --blkid --cef --cef-s --chage --cksum --crontab --crontab-u --csv --csv-s --date --df --dig --dir --dmidecode --dpkg-l --du --email-address --env --file --finger --free --fstab --git-log --git-log-s --gpg --group --gshadow --hash --hashsum --hciconfig --history --hosts --id --ifconfig --ini --iostat --iostat-s --ip-address --iptables --iso-datetime --iw-scan --jar-manifest --jobs --jwt --kv --last --ls --ls-s --lsblk --lsmod --lsof --lsusb --m3u --mdadm --mount --mpstat --mpstat-s --netstat --nmcli --ntpq --passwd --pidstat --pidstat-s --ping --ping-s --pip-list --pip-show --plist --postconf --proc --ps --route --rpm-qi --rsync --rsync-s --sfdisk --shadow --ss --stat --stat-s --sysctl --syslog --syslog-s --syslog-bsd --syslog-bsd-s --systemctl --systemctl-lj --systemctl-ls --systemctl-luf --systeminfo --time --timedatectl --timestamp --top --top-s --tracepath --traceroute --ufw --ufw-appinfo --uname --update-alt-gs --update-alt-q --upower --uptime --url --vmstat --vmstat-s --w --wc --who --x509-cert --xml --xrandr --yaml --zipinfo) + jc_parsers=(--acpi --airport --airport-s --arp --asciitable --asciitable-m --blkid --cef --cef-s --chage --cksum --crontab --crontab-u --csv --csv-s --date --df --dig --dir --dmidecode --dpkg-l --du --email-address --env --file --finger --free --fstab --git-log --git-log-s --gpg --group --gshadow --hash --hashsum --hciconfig --history --hosts --id --ifconfig --ini --iostat --iostat-s --ip-address --iptables --iso-datetime --iw-scan --jar-manifest --jobs --jwt --kv --last --ls --ls-s --lsblk --lsmod --lsof --lsusb --m3u --mdadm --mount --mpstat --mpstat-s --netstat --nmcli --ntpq --passwd --pidstat --pidstat-s --ping --ping-s --pip-list --pip-show --plist --postconf --proc --proc-buddyinfo --proc-consoles --proc-cpuinfo --proc-crypto --proc-devices --proc-diskstats --proc-filesystems --proc-interrupts --proc-iomem --proc-ioports --proc-loadavg --proc-locks --proc-meminfo --proc-modules --proc-mtrr --proc-pagetypeinfo --proc-partitions --proc-slabinfo --proc-softirqs --proc-stat --proc-swaps --proc-uptime --proc-version --proc-vmallocinfo --proc-vmstat --proc-zoneinfo --proc-driver-rtc --proc-net-arp --proc-net-dev --proc-net-dev-mcast --proc-net-if-inet6 --proc-net-igmp --proc-net-igmp6 --proc-net-ipv6-route --proc-net-netlink --proc-net-netstat --proc-net-packet --proc-net-protocols --proc-net-route --proc-net-unix --proc-pid-fdinfo --proc-pid-io --proc-pid-maps --proc-pid-mountinfo --proc-pid-numa-maps --proc-pid-smaps --proc-pid-stat --proc-pid-statm --proc-pid-status --ps --route --rpm-qi --rsync --rsync-s --sfdisk --shadow --ss --stat --stat-s --sysctl --syslog --syslog-s --syslog-bsd --syslog-bsd-s --systemctl --systemctl-lj --systemctl-ls --systemctl-luf --systeminfo --time --timedatectl --timestamp --top --top-s --tracepath --traceroute --ufw --ufw-appinfo --uname --update-alt-gs --update-alt-q --upower --uptime --url --vmstat --vmstat-s --w --wc --who --x509-cert --xml --xrandr --yaml --zipinfo) jc_options=(--force-color -C --debug -d --monochrome -m --meta-out -M --pretty -p --quiet -q --raw -r --unbuffer -u --yaml-out -y) jc_about_options=(--about -a) jc_about_mod_options=(--pretty -p --yaml-out -y --monochrome -m --force-color -C) @@ -67,6 +67,12 @@ _jc() fi done + # if "/proc" (magic for Procfile parsers) is found anywhere in the line, complete with files/directories in the path + if [[ "${words[@]::${#words[@]}-1}" =~ "/proc" ]]; then + _filedir + return 0 + fi + # if a parser arg is found anywhere in the line, only show options and help options for i in "${words[@]::${#words[@]}-1}"; do if [[ " ${jc_parsers[*]} " =~ " ${i} " ]]; then diff --git a/completions/jc_zsh_completion.sh b/completions/jc_zsh_completion.sh index ced2aa52..9c62a92f 100644 --- a/completions/jc_zsh_completion.sh +++ b/completions/jc_zsh_completion.sh @@ -95,7 +95,7 @@ _jc() { 'xrandr:run "xrandr" command with magic syntax.' 'zipinfo:run "zipinfo" command with magic syntax.' ) - jc_parsers=(--acpi --airport --airport-s --arp --asciitable --asciitable-m --blkid --cef --cef-s --chage --cksum --crontab --crontab-u --csv --csv-s --date --df --dig --dir --dmidecode --dpkg-l --du --email-address --env --file --finger --free --fstab --git-log --git-log-s --gpg --group --gshadow --hash --hashsum --hciconfig --history --hosts --id --ifconfig --ini --iostat --iostat-s --ip-address --iptables --iso-datetime --iw-scan --jar-manifest --jobs --jwt --kv --last --ls --ls-s --lsblk --lsmod --lsof --lsusb --m3u --mdadm --mount --mpstat --mpstat-s --netstat --nmcli --ntpq --passwd --pidstat --pidstat-s --ping --ping-s --pip-list --pip-show --plist --postconf --proc --ps --route --rpm-qi --rsync --rsync-s --sfdisk --shadow --ss --stat --stat-s --sysctl --syslog --syslog-s --syslog-bsd --syslog-bsd-s --systemctl --systemctl-lj --systemctl-ls --systemctl-luf --systeminfo --time --timedatectl --timestamp --top --top-s --tracepath --traceroute --ufw --ufw-appinfo --uname --update-alt-gs --update-alt-q --upower --uptime --url --vmstat --vmstat-s --w --wc --who --x509-cert --xml --xrandr --yaml --zipinfo) + jc_parsers=(--acpi --airport --airport-s --arp --asciitable --asciitable-m --blkid --cef --cef-s --chage --cksum --crontab --crontab-u --csv --csv-s --date --df --dig --dir --dmidecode --dpkg-l --du --email-address --env --file --finger --free --fstab --git-log --git-log-s --gpg --group --gshadow --hash --hashsum --hciconfig --history --hosts --id --ifconfig --ini --iostat --iostat-s --ip-address --iptables --iso-datetime --iw-scan --jar-manifest --jobs --jwt --kv --last --ls --ls-s --lsblk --lsmod --lsof --lsusb --m3u --mdadm --mount --mpstat --mpstat-s --netstat --nmcli --ntpq --passwd --pidstat --pidstat-s --ping --ping-s --pip-list --pip-show --plist --postconf --proc --proc-buddyinfo --proc-consoles --proc-cpuinfo --proc-crypto --proc-devices --proc-diskstats --proc-filesystems --proc-interrupts --proc-iomem --proc-ioports --proc-loadavg --proc-locks --proc-meminfo --proc-modules --proc-mtrr --proc-pagetypeinfo --proc-partitions --proc-slabinfo --proc-softirqs --proc-stat --proc-swaps --proc-uptime --proc-version --proc-vmallocinfo --proc-vmstat --proc-zoneinfo --proc-driver-rtc --proc-net-arp --proc-net-dev --proc-net-dev-mcast --proc-net-if-inet6 --proc-net-igmp --proc-net-igmp6 --proc-net-ipv6-route --proc-net-netlink --proc-net-netstat --proc-net-packet --proc-net-protocols --proc-net-route --proc-net-unix --proc-pid-fdinfo --proc-pid-io --proc-pid-maps --proc-pid-mountinfo --proc-pid-numa-maps --proc-pid-smaps --proc-pid-stat --proc-pid-statm --proc-pid-status --ps --route --rpm-qi --rsync --rsync-s --sfdisk --shadow --ss --stat --stat-s --sysctl --syslog --syslog-s --syslog-bsd --syslog-bsd-s --systemctl --systemctl-lj --systemctl-ls --systemctl-luf --systeminfo --time --timedatectl --timestamp --top --top-s --tracepath --traceroute --ufw --ufw-appinfo --uname --update-alt-gs --update-alt-q --upower --uptime --url --vmstat --vmstat-s --w --wc --who --x509-cert --xml --xrandr --yaml --zipinfo) jc_parsers_describe=( '--acpi:`acpi` command parser' '--airport:`airport -I` command parser' @@ -173,6 +173,55 @@ _jc() { '--plist:PLIST file parser' '--postconf:`postconf -M` command parser' '--proc:`/proc/` file parser' + '--proc-buddyinfo:`/proc/buddyinfo` file parser' + '--proc-consoles:`/proc/consoles` file parser' + '--proc-cpuinfo:`/proc/cpuinfo` file parser' + '--proc-crypto:`/proc/crypto` file parser' + '--proc-devices:`/proc/devices` file parser' + '--proc-diskstats:`/proc/diskstats` file parser' + '--proc-filesystems:`/proc/filesystems` file parser' + '--proc-interrupts:`/proc/interrupts` file parser' + '--proc-iomem:`/proc/iomem` file parser' + '--proc-ioports:`/proc/ioports` file parser' + '--proc-loadavg:`/proc/loadavg` file parser' + '--proc-locks:`/proc/locks` file parser' + '--proc-meminfo:`/proc/meminfo` file parser' + '--proc-modules:`/proc/modules` file parser' + '--proc-mtrr:`/proc/mtrr` file parser' + '--proc-pagetypeinfo:`/proc/pagetypeinfo` file parser' + '--proc-partitions:`/proc/partitions` file parser' + '--proc-slabinfo:`/proc/slabinfo` file parser' + '--proc-softirqs:`/proc/softirqs` file parser' + '--proc-stat:`/proc/stat` file parser' + '--proc-swaps:`/proc/swaps` file parser' + '--proc-uptime:`/proc/uptime` file parser' + '--proc-version:`/proc/version` file parser' + '--proc-vmallocinfo:`/proc/vmallocinfo` file parser' + '--proc-vmstat:`/proc/vmstat` file parser' + '--proc-zoneinfo:`/proc/zoneinfo` file parser' + '--proc-driver-rtc:`/proc/driver/rtc` file parser' + '--proc-net-arp:`/proc/net/arp` file parser' + '--proc-net-dev:`/proc/net/dev` file parser' + '--proc-net-dev-mcast:`/proc/net/dev_mcast` file parser' + '--proc-net-if-inet6:`/proc/net/if_inet6` file parser' + '--proc-net-igmp:`/proc/net/igmp` file parser' + '--proc-net-igmp6:`/proc/net/igmp6` file parser' + '--proc-net-ipv6-route:`/proc/net/ipv6_route` file parser' + '--proc-net-netlink:`/proc/net/netlink` file parser' + '--proc-net-netstat:`/proc/net/netstat` file parser' + '--proc-net-packet:`/proc/net/packet` file parser' + '--proc-net-protocols:`/proc/net/protocols` file parser' + '--proc-net-route:`/proc/net/route` file parser' + '--proc-net-unix:`/proc/net/unix` file parser' + '--proc-pid-fdinfo:`/proc//fdinfo/` file parser' + '--proc-pid-io:`/proc//io` file parser' + '--proc-pid-maps:`/proc//maps` file parser' + '--proc-pid-mountinfo:`/proc//mountinfo` file parser' + '--proc-pid-numa-maps:`/proc//numa_maps` file parser' + '--proc-pid-smaps:`/proc//smaps` file parser' + '--proc-pid-stat:`/proc//stat` file parser' + '--proc-pid-statm:`/proc//statm` file parser' + '--proc-pid-status:`/proc//status` file parser' '--ps:`ps` command parser' '--route:`route` command parser' '--rpm-qi:`rpm -qi` command parser' @@ -328,6 +377,13 @@ _jc() { fi done + # if "/proc" (magic for Procfile parsers) is found anywhere in the line, complete with files/directories in the path + if (( ${words:0:-1}[(Ie)/proc] )); then + # run files completion + _files + return 0 + fi + # if a parser arg is found anywhere in the line, only show options and help options for i in ${words:0:-1}; do if (( $jc_parsers[(Ie)${i}] )); then diff --git a/jc/parsers/proc.py b/jc/parsers/proc.py index 574f1aab..8cada8bc 100644 --- a/jc/parsers/proc.py +++ b/jc/parsers/proc.py @@ -205,8 +205,8 @@ def parse( pid_statm_p = re.compile(r'^\d+ \d+ \d+\s\d+\s\d+\s\d+\s\d+$') pid_status_p = re.compile(r'^Name:\t.+\nUmask:\t\d+\nState:\t.+\nTgid:\t\d+\n') - scsi_device_info = re.compile(r"^'\w+' '.+' 0x\d+") - scsi_scsi_p = re.compile(r'^Attached devices:\nHost: \w+ ') + # scsi_device_info = re.compile(r"^'\w+' '.+' 0x\d+") + # scsi_scsi_p = re.compile(r'^Attached devices:\nHost: \w+ ') procmap = { buddyinfo_p: 'proc_buddyinfo', @@ -262,8 +262,8 @@ def parse( pid_smaps_p: 'proc_pid_smaps', # before pid_maps pid_maps_p: 'proc_pid_maps', # after pid_smaps - scsi_device_info: 'proc_scsi_device_info', - scsi_scsi_p: 'proc_scsi_scsi' + # scsi_device_info: 'proc_scsi_device_info', + # scsi_scsi_p: 'proc_scsi_scsi' } for reg_pattern, parse_mod in procmap.items(): diff --git a/jc/shell_completions.py b/jc/shell_completions.py index 65f497db..a15b74c4 100644 --- a/jc/shell_completions.py +++ b/jc/shell_completions.py @@ -75,6 +75,12 @@ _jc() fi done + # if "/proc" (magic for Procfile parsers) is found anywhere in the line, complete with files/directories in the path + if [[ "$${words[@]::$${#words[@]}-1}" =~ "/proc" ]]; then + _filedir + return 0 + fi + # if a parser arg is found anywhere in the line, only show options and help options for i in "$${words[@]::$${#words[@]}-1}"; do if [[ " $${jc_parsers[*]} " =~ " $${i} " ]]; then @@ -190,6 +196,13 @@ _jc() { fi done + # if "/proc" (magic for Procfile parsers) is found anywhere in the line, complete with files/directories in the path + if (( $${words:0:-1}[(Ie)/proc] )); then + # run files completion + _files + return 0 + fi + # if a parser arg is found anywhere in the line, only show options and help options for i in $${words:0:-1}; do if (( $$jc_parsers[(Ie)$${i}] )); then @@ -230,7 +243,7 @@ def get_options(): def get_parsers(): p_list = [] - for cmd in all_parser_info(): + for cmd in all_parser_info(show_hidden=True): if 'argument' in cmd: p_list.append(cmd['argument']) @@ -239,7 +252,7 @@ def get_parsers(): def get_parsers_descriptions(): pd_list = [] - for p in all_parser_info(): + for p in all_parser_info(show_hidden=True): if 'description' in p: pd_list.append(f"'{p['argument']}:{p['description']}'") From f30e15159f1506968b00140d4bfb40a812675a11 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Mon, 26 Sep 2022 16:59:55 -0700 Subject: [PATCH 119/124] finalize shell completions --- completions/jc_bash_completion.sh | 4 ++-- completions/jc_zsh_completion.sh | 4 ++-- jc/shell_completions.py | 8 ++++---- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/completions/jc_bash_completion.sh b/completions/jc_bash_completion.sh index 645cf6d8..7c9f1a79 100644 --- a/completions/jc_bash_completion.sh +++ b/completions/jc_bash_completion.sh @@ -67,8 +67,8 @@ _jc() fi done - # if "/proc" (magic for Procfile parsers) is found anywhere in the line, complete with files/directories in the path - if [[ "${words[@]::${#words[@]}-1}" =~ "/proc" ]]; then + # if "/pr[oc]" (magic for Procfile parsers) is in the current word, complete with files/directories in the path + if [[ "${cur}" =~ "/pr" ]]; then _filedir return 0 fi diff --git a/completions/jc_zsh_completion.sh b/completions/jc_zsh_completion.sh index 9c62a92f..f39c5e93 100644 --- a/completions/jc_zsh_completion.sh +++ b/completions/jc_zsh_completion.sh @@ -377,8 +377,8 @@ _jc() { fi done - # if "/proc" (magic for Procfile parsers) is found anywhere in the line, complete with files/directories in the path - if (( ${words:0:-1}[(Ie)/proc] )); then + # if "/pr[oc]" (magic for Procfile parsers) is in the current word, complete with files/directories in the path + if [[ "${words[-1]}" =~ "/pr" ]]; then # run files completion _files return 0 diff --git a/jc/shell_completions.py b/jc/shell_completions.py index a15b74c4..adb5375c 100644 --- a/jc/shell_completions.py +++ b/jc/shell_completions.py @@ -75,8 +75,8 @@ _jc() fi done - # if "/proc" (magic for Procfile parsers) is found anywhere in the line, complete with files/directories in the path - if [[ "$${words[@]::$${#words[@]}-1}" =~ "/proc" ]]; then + # if "/pr[oc]" (magic for Procfile parsers) is in the current word, complete with files/directories in the path + if [[ "$${cur}" =~ "/pr" ]]; then _filedir return 0 fi @@ -196,8 +196,8 @@ _jc() { fi done - # if "/proc" (magic for Procfile parsers) is found anywhere in the line, complete with files/directories in the path - if (( $${words:0:-1}[(Ie)/proc] )); then + # if "/pr[oc]" (magic for Procfile parsers) is in the current word, complete with files/directories in the path + if [[ "$${words[-1]}" =~ "/pr" ]]; then # run files completion _files return 0 From 32019c99f49a8b4da6efaa5fef3455fd8e340f25 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Mon, 26 Sep 2022 19:21:25 -0700 Subject: [PATCH 120/124] check git diff 5 commits back before generating parser doc --- docgen.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docgen.sh b/docgen.sh index 087b1299..e83e36e9 100755 --- a/docgen.sh +++ b/docgen.sh @@ -118,7 +118,7 @@ done < <(jc -a | jq -c '.parsers[] | select(.plugin != true)') for parser in "${parsers[@]}"; do parser_name=$(jq -r '.name' <<< "$parser") { - if [[ $1 == "all" ]] || ! git diff --quiet --exit-code HEAD -- "parsers/${parser_name}.py"; then + if [[ $1 == "all" ]] || ! git diff --quiet --exit-code HEAD~5 -- "parsers/${parser_name}.py"; then compatible=$(jq -r '.compatible | join(", ")' <<< "$parser") version=$(jq -r '.version' <<< "$parser") author=$(jq -r '.author' <<< "$parser") From 97eefe28f14f7d16bea9659bf8ba476bf6247680 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Mon, 26 Sep 2022 19:41:35 -0700 Subject: [PATCH 121/124] doc fixes --- docs/parsers/proc_interrupts.md | 2 +- docs/parsers/proc_locks.md | 2 +- docs/parsers/proc_modules.md | 2 +- docs/parsers/proc_mtrr.md | 2 +- docs/parsers/proc_net_dev.md | 2 +- docs/parsers/proc_net_dev_mcast.md | 4 ++-- docs/parsers/proc_net_igmp.md | 2 +- docs/parsers/proc_net_igmp6.md | 2 +- docs/parsers/proc_net_netlink.md | 2 +- docs/parsers/proc_net_netstat.md | 2 +- docs/parsers/proc_net_packet.md | 2 +- docs/parsers/proc_net_protocols.md | 2 +- docs/parsers/proc_net_route.md | 2 +- docs/parsers/proc_net_unix.md | 2 +- docs/parsers/proc_partitions.md | 2 +- docs/parsers/proc_pid_mountinfo.md | 2 +- docs/parsers/proc_pid_numa_maps.md | 8 ++++---- docs/parsers/proc_pid_stat.md | 4 ++-- docs/parsers/proc_pid_statm.md | 2 +- docs/parsers/proc_pid_status.md | 4 ++-- docs/parsers/proc_swaps.md | 2 +- docs/parsers/proc_vmallocinfo.md | 2 +- jc/parsers/proc_interrupts.py | 2 +- jc/parsers/proc_locks.py | 2 +- jc/parsers/proc_modules.py | 2 +- jc/parsers/proc_mtrr.py | 2 +- jc/parsers/proc_net_dev.py | 2 +- jc/parsers/proc_net_dev_mcast.py | 4 ++-- jc/parsers/proc_net_igmp.py | 2 +- jc/parsers/proc_net_igmp6.py | 2 +- jc/parsers/proc_net_netlink.py | 2 +- jc/parsers/proc_net_netstat.py | 2 +- jc/parsers/proc_net_packet.py | 2 +- jc/parsers/proc_net_protocols.py | 2 +- jc/parsers/proc_net_route.py | 2 +- jc/parsers/proc_net_unix.py | 2 +- jc/parsers/proc_partitions.py | 2 +- jc/parsers/proc_pid_mountinfo.py | 2 +- jc/parsers/proc_pid_numa_maps.py | 8 ++++---- jc/parsers/proc_pid_stat.py | 4 ++-- jc/parsers/proc_pid_statm.py | 2 +- jc/parsers/proc_pid_status.py | 4 ++-- jc/parsers/proc_swaps.py | 2 +- jc/parsers/proc_vmallocinfo.py | 2 +- 44 files changed, 56 insertions(+), 56 deletions(-) diff --git a/docs/parsers/proc_interrupts.md b/docs/parsers/proc_interrupts.md index f0f8c123..02f48c0d 100644 --- a/docs/parsers/proc_interrupts.md +++ b/docs/parsers/proc_interrupts.md @@ -76,7 +76,7 @@ Examples: ... ] - $ cat /proc/interrupts | jc --proc_interrupts -p -r + $ cat /proc/interrupts | jc --proc-interrupts -p -r [ { "irq": "0", diff --git a/docs/parsers/proc_locks.md b/docs/parsers/proc_locks.md index a611bb62..5b826e81 100644 --- a/docs/parsers/proc_locks.md +++ b/docs/parsers/proc_locks.md @@ -75,7 +75,7 @@ Examples: ... ] - $ cat /proc/locks | jc --proc_locks -p -r + $ cat /proc/locks | jc --proc-locks -p -r [ { "id": "1", diff --git a/docs/parsers/proc_modules.md b/docs/parsers/proc_modules.md index f300ae06..02697d44 100644 --- a/docs/parsers/proc_modules.md +++ b/docs/parsers/proc_modules.md @@ -75,7 +75,7 @@ Examples: ... ] - $ cat /proc/modules | jc --proc_modules -p -r + $ cat /proc/modules | jc --proc-modules -p -r [ { "module": "binfmt_misc", diff --git a/docs/parsers/proc_mtrr.md b/docs/parsers/proc_mtrr.md index d6e905ab..af4fa55a 100644 --- a/docs/parsers/proc_mtrr.md +++ b/docs/parsers/proc_mtrr.md @@ -64,7 +64,7 @@ Examples: ... ] - $ cat /proc/mtrr | jc --proc_mtrr -p -r + $ cat /proc/mtrr | jc --proc-mtrr -p -r [ { "register": "reg00", diff --git a/docs/parsers/proc_net_dev.md b/docs/parsers/proc_net_dev.md index e2bdc8d0..fcf60680 100644 --- a/docs/parsers/proc_net_dev.md +++ b/docs/parsers/proc_net_dev.md @@ -77,7 +77,7 @@ Examples: ... ] - $ cat /proc/net/dev | jc --proc -p -r + $ cat /proc/net/dev | jc --proc-net-dev -p -r [ { "interface": "lo:", diff --git a/docs/parsers/proc_net_dev_mcast.md b/docs/parsers/proc_net_dev_mcast.md index 15c530e2..6b4362b7 100644 --- a/docs/parsers/proc_net_dev_mcast.md +++ b/docs/parsers/proc_net_dev_mcast.md @@ -15,7 +15,7 @@ or or - $ cat /proc/net/dev_mcast | jc --proc-net-dev_mcast + $ cat /proc/net/dev_mcast | jc --proc-net-dev-mcast Usage (module): @@ -60,7 +60,7 @@ Examples: ... ] - $ cat /proc/net/dev_mcast | jc --proc -p -r + $ cat /proc/net/dev_mcast | jc --proc-net-dev-mcast -p -r [ { "index": "2", diff --git a/docs/parsers/proc_net_igmp.md b/docs/parsers/proc_net_igmp.md index 9672f7ab..015ce5fa 100644 --- a/docs/parsers/proc_net_igmp.md +++ b/docs/parsers/proc_net_igmp.md @@ -87,7 +87,7 @@ Examples: ... ] - $ cat /proc/net/igmp | jc --proc -p -r + $ cat /proc/net/igmp | jc --proc-net-igmp -p -r [ { "index": "0", diff --git a/docs/parsers/proc_net_igmp6.md b/docs/parsers/proc_net_igmp6.md index 089950c5..f0553216 100644 --- a/docs/parsers/proc_net_igmp6.md +++ b/docs/parsers/proc_net_igmp6.md @@ -71,7 +71,7 @@ Examples: ... ] - $ cat /proc/net/igmp6 | jc --proc -p -r + $ cat /proc/net/igmp6 | jc --proc-net-igmp6 -p -r [ { "index": "1", diff --git a/docs/parsers/proc_net_netlink.md b/docs/parsers/proc_net_netlink.md index 54b40a83..b3bb8bbe 100644 --- a/docs/parsers/proc_net_netlink.md +++ b/docs/parsers/proc_net_netlink.md @@ -75,7 +75,7 @@ Examples: ... ] - $ cat /proc/net/netlink | jc --proc -p -r + $ cat /proc/net/netlink | jc --proc-net-netlink -p -r [ { "sk": "ffff9b61adaff000", diff --git a/docs/parsers/proc_net_netstat.md b/docs/parsers/proc_net_netstat.md index e9f2f982..ca390d2b 100644 --- a/docs/parsers/proc_net_netstat.md +++ b/docs/parsers/proc_net_netstat.md @@ -169,7 +169,7 @@ Examples: ... ] - $ cat /proc/net/netstat | jc --proc -p -r + $ cat /proc/net/netstat | jc --proc-net-netstat -p -r [ { "SyncookiesSent": "0", diff --git a/docs/parsers/proc_net_packet.md b/docs/parsers/proc_net_packet.md index 6c1b3bc0..e7dbc87f 100644 --- a/docs/parsers/proc_net_packet.md +++ b/docs/parsers/proc_net_packet.md @@ -56,7 +56,7 @@ Examples: "Inode": 34754 } - $ cat /proc/net/packet | jc --proc -p -r + $ cat /proc/net/packet | jc --proc-net-packet -p -r { "sk": "ffff9b61b56c1800", "RefCnt": "3", diff --git a/docs/parsers/proc_net_protocols.md b/docs/parsers/proc_net_protocols.md index 8517308d..f489f62f 100644 --- a/docs/parsers/proc_net_protocols.md +++ b/docs/parsers/proc_net_protocols.md @@ -97,7 +97,7 @@ Examples: ... ] - $ cat /proc/net/protocols | jc --proc -p -r + $ cat /proc/net/protocols | jc --proc-net-protocols -p -r [ { "protocol": "AF_VSOCK", diff --git a/docs/parsers/proc_net_route.md b/docs/parsers/proc_net_route.md index 674887f0..b7a3aaac 100644 --- a/docs/parsers/proc_net_route.md +++ b/docs/parsers/proc_net_route.md @@ -65,7 +65,7 @@ Examples: ... ] - $ cat /proc/net/route | jc --proc -p -r + $ cat /proc/net/route | jc --proc-net-route -p -r [ { "Iface": "ens33", diff --git a/docs/parsers/proc_net_unix.md b/docs/parsers/proc_net_unix.md index 9b565d32..5c902ceb 100644 --- a/docs/parsers/proc_net_unix.md +++ b/docs/parsers/proc_net_unix.md @@ -59,7 +59,7 @@ Examples: ... ] - $ cat /proc/net/unix | jc --proc -p -r + $ cat /proc/net/unix | jc --proc-net-unix -p -r [ { "Num": "ffff9b61ac49c400:", diff --git a/docs/parsers/proc_partitions.md b/docs/parsers/proc_partitions.md index 78e0b3f1..a5be19b3 100644 --- a/docs/parsers/proc_partitions.md +++ b/docs/parsers/proc_partitions.md @@ -57,7 +57,7 @@ Examples: ... ] - $ cat /proc/partitions | jc --proc_partitions -p -r + $ cat /proc/partitions | jc --proc-partitions -p -r [ { "major": "7", diff --git a/docs/parsers/proc_pid_mountinfo.md b/docs/parsers/proc_pid_mountinfo.md index f0114ee2..69a10691 100644 --- a/docs/parsers/proc_pid_mountinfo.md +++ b/docs/parsers/proc_pid_mountinfo.md @@ -113,7 +113,7 @@ Examples: ... ] - $ cat /proc/1/mountinfo | jc --proc_pid-mountinfo -p -r + $ cat /proc/1/mountinfo | jc --proc-pid-mountinfo -p -r [ { "mount_id": "24", diff --git a/docs/parsers/proc_pid_numa_maps.md b/docs/parsers/proc_pid_numa_maps.md index 94e444a6..fa9573c9 100644 --- a/docs/parsers/proc_pid_numa_maps.md +++ b/docs/parsers/proc_pid_numa_maps.md @@ -19,17 +19,17 @@ or or - $ cat /proc/1/numa_maps | jc --proc-numa-maps + $ cat /proc/1/numa_maps | jc --proc-pid-numa-maps Usage (module): import jc - result = jc.parse('proc', proc_numa_maps_file) + result = jc.parse('proc', proc_pid_numa_maps_file) or import jc - result = jc.parse('proc_numa_maps', proc_numa_maps_file) + result = jc.parse('proc_pid_numa_maps', proc_pid_numa_maps_file) Schema: @@ -75,7 +75,7 @@ Examples: ... ] - $ cat /proc/1/numa_maps | jc --proc_numa_maps -p -r + $ cat /proc/1/numa_maps | jc --proc-pid-numa-maps -p -r [ { "address": "7f53b5083000", diff --git a/docs/parsers/proc_pid_stat.md b/docs/parsers/proc_pid_stat.md index fd5f00d4..c4fb011d 100644 --- a/docs/parsers/proc_pid_stat.md +++ b/docs/parsers/proc_pid_stat.md @@ -15,7 +15,7 @@ or or - $ cat /proc/1/stat | jc --proc-pid_stat + $ cat /proc/1/stat | jc --proc-pid-stat Usage (module): @@ -144,7 +144,7 @@ Examples: "state_pretty": "Sleeping in an interruptible wait" } - $ cat /proc/1/stat | jc --proc -p -r + $ cat /proc/1/stat | jc --proc-pid-stat -p -r { "pid": 1, "comm": "systemd", diff --git a/docs/parsers/proc_pid_statm.md b/docs/parsers/proc_pid_statm.md index b1254631..766830f5 100644 --- a/docs/parsers/proc_pid_statm.md +++ b/docs/parsers/proc_pid_statm.md @@ -15,7 +15,7 @@ or or - $ cat /proc/1/statm | jc --proc-pid_statm + $ cat /proc/1/statm | jc --proc-pid-statm Usage (module): diff --git a/docs/parsers/proc_pid_status.md b/docs/parsers/proc_pid_status.md index 528c57cc..6b4fb422 100644 --- a/docs/parsers/proc_pid_status.md +++ b/docs/parsers/proc_pid_status.md @@ -15,7 +15,7 @@ or or - $ cat /proc/1/status | jc --proc-pid_status + $ cat /proc/1/status | jc --proc-pid-status Usage (module): @@ -210,7 +210,7 @@ Examples: "SigQ_limit": 15245 } - $ cat /proc/1/status | jc --proc -p -r + $ cat /proc/1/status | jc --proc-pid-status -p -r { "Name": "systemd", "Umask": "0000", diff --git a/docs/parsers/proc_swaps.md b/docs/parsers/proc_swaps.md index 47237358..8b42eaae 100644 --- a/docs/parsers/proc_swaps.md +++ b/docs/parsers/proc_swaps.md @@ -53,7 +53,7 @@ Examples: ... ] - $ cat /proc/swaps | jc --proc_swaps -p -r + $ cat /proc/swaps | jc --proc-swaps -p -r [ { "filename": "/swap.img", diff --git a/docs/parsers/proc_vmallocinfo.md b/docs/parsers/proc_vmallocinfo.md index 1eb11bf0..3bbfb731 100644 --- a/docs/parsers/proc_vmallocinfo.md +++ b/docs/parsers/proc_vmallocinfo.md @@ -75,7 +75,7 @@ Examples: ... ] - $ cat /proc/vmallocinfo | jc --proc -p -r + $ cat /proc/vmallocinfo | jc --proc-vmallocinfo -p -r [ { "start": "0xffffb3c1c0000000", diff --git a/jc/parsers/proc_interrupts.py b/jc/parsers/proc_interrupts.py index 606cadc1..49a27b19 100644 --- a/jc/parsers/proc_interrupts.py +++ b/jc/parsers/proc_interrupts.py @@ -71,7 +71,7 @@ Examples: ... ] - $ cat /proc/interrupts | jc --proc_interrupts -p -r + $ cat /proc/interrupts | jc --proc-interrupts -p -r [ { "irq": "0", diff --git a/jc/parsers/proc_locks.py b/jc/parsers/proc_locks.py index 24d3cd58..ce4c675e 100644 --- a/jc/parsers/proc_locks.py +++ b/jc/parsers/proc_locks.py @@ -70,7 +70,7 @@ Examples: ... ] - $ cat /proc/locks | jc --proc_locks -p -r + $ cat /proc/locks | jc --proc-locks -p -r [ { "id": "1", diff --git a/jc/parsers/proc_modules.py b/jc/parsers/proc_modules.py index 18e35b15..e94cbb54 100644 --- a/jc/parsers/proc_modules.py +++ b/jc/parsers/proc_modules.py @@ -70,7 +70,7 @@ Examples: ... ] - $ cat /proc/modules | jc --proc_modules -p -r + $ cat /proc/modules | jc --proc-modules -p -r [ { "module": "binfmt_misc", diff --git a/jc/parsers/proc_mtrr.py b/jc/parsers/proc_mtrr.py index ea6e89e8..052414b4 100644 --- a/jc/parsers/proc_mtrr.py +++ b/jc/parsers/proc_mtrr.py @@ -59,7 +59,7 @@ Examples: ... ] - $ cat /proc/mtrr | jc --proc_mtrr -p -r + $ cat /proc/mtrr | jc --proc-mtrr -p -r [ { "register": "reg00", diff --git a/jc/parsers/proc_net_dev.py b/jc/parsers/proc_net_dev.py index 1b2997dd..a72ac899 100644 --- a/jc/parsers/proc_net_dev.py +++ b/jc/parsers/proc_net_dev.py @@ -72,7 +72,7 @@ Examples: ... ] - $ cat /proc/net/dev | jc --proc -p -r + $ cat /proc/net/dev | jc --proc-net-dev -p -r [ { "interface": "lo:", diff --git a/jc/parsers/proc_net_dev_mcast.py b/jc/parsers/proc_net_dev_mcast.py index 03bf729d..62563b9a 100644 --- a/jc/parsers/proc_net_dev_mcast.py +++ b/jc/parsers/proc_net_dev_mcast.py @@ -10,7 +10,7 @@ or or - $ cat /proc/net/dev_mcast | jc --proc-net-dev_mcast + $ cat /proc/net/dev_mcast | jc --proc-net-dev-mcast Usage (module): @@ -55,7 +55,7 @@ Examples: ... ] - $ cat /proc/net/dev_mcast | jc --proc -p -r + $ cat /proc/net/dev_mcast | jc --proc-net-dev-mcast -p -r [ { "index": "2", diff --git a/jc/parsers/proc_net_igmp.py b/jc/parsers/proc_net_igmp.py index b230abfd..4f80151b 100644 --- a/jc/parsers/proc_net_igmp.py +++ b/jc/parsers/proc_net_igmp.py @@ -82,7 +82,7 @@ Examples: ... ] - $ cat /proc/net/igmp | jc --proc -p -r + $ cat /proc/net/igmp | jc --proc-net-igmp -p -r [ { "index": "0", diff --git a/jc/parsers/proc_net_igmp6.py b/jc/parsers/proc_net_igmp6.py index 543e6afa..6c8949ed 100644 --- a/jc/parsers/proc_net_igmp6.py +++ b/jc/parsers/proc_net_igmp6.py @@ -66,7 +66,7 @@ Examples: ... ] - $ cat /proc/net/igmp6 | jc --proc -p -r + $ cat /proc/net/igmp6 | jc --proc-net-igmp6 -p -r [ { "index": "1", diff --git a/jc/parsers/proc_net_netlink.py b/jc/parsers/proc_net_netlink.py index be3a4496..c5a65966 100644 --- a/jc/parsers/proc_net_netlink.py +++ b/jc/parsers/proc_net_netlink.py @@ -70,7 +70,7 @@ Examples: ... ] - $ cat /proc/net/netlink | jc --proc -p -r + $ cat /proc/net/netlink | jc --proc-net-netlink -p -r [ { "sk": "ffff9b61adaff000", diff --git a/jc/parsers/proc_net_netstat.py b/jc/parsers/proc_net_netstat.py index 55e447b2..fe84eb93 100644 --- a/jc/parsers/proc_net_netstat.py +++ b/jc/parsers/proc_net_netstat.py @@ -164,7 +164,7 @@ Examples: ... ] - $ cat /proc/net/netstat | jc --proc -p -r + $ cat /proc/net/netstat | jc --proc-net-netstat -p -r [ { "SyncookiesSent": "0", diff --git a/jc/parsers/proc_net_packet.py b/jc/parsers/proc_net_packet.py index b7631042..37d3cf63 100644 --- a/jc/parsers/proc_net_packet.py +++ b/jc/parsers/proc_net_packet.py @@ -51,7 +51,7 @@ Examples: "Inode": 34754 } - $ cat /proc/net/packet | jc --proc -p -r + $ cat /proc/net/packet | jc --proc-net-packet -p -r { "sk": "ffff9b61b56c1800", "RefCnt": "3", diff --git a/jc/parsers/proc_net_protocols.py b/jc/parsers/proc_net_protocols.py index 1a309bf4..7703b764 100644 --- a/jc/parsers/proc_net_protocols.py +++ b/jc/parsers/proc_net_protocols.py @@ -92,7 +92,7 @@ Examples: ... ] - $ cat /proc/net/protocols | jc --proc -p -r + $ cat /proc/net/protocols | jc --proc-net-protocols -p -r [ { "protocol": "AF_VSOCK", diff --git a/jc/parsers/proc_net_route.py b/jc/parsers/proc_net_route.py index ee10a81d..dcbafeb3 100644 --- a/jc/parsers/proc_net_route.py +++ b/jc/parsers/proc_net_route.py @@ -60,7 +60,7 @@ Examples: ... ] - $ cat /proc/net/route | jc --proc -p -r + $ cat /proc/net/route | jc --proc-net-route -p -r [ { "Iface": "ens33", diff --git a/jc/parsers/proc_net_unix.py b/jc/parsers/proc_net_unix.py index 66e1536f..1f11b71e 100644 --- a/jc/parsers/proc_net_unix.py +++ b/jc/parsers/proc_net_unix.py @@ -54,7 +54,7 @@ Examples: ... ] - $ cat /proc/net/unix | jc --proc -p -r + $ cat /proc/net/unix | jc --proc-net-unix -p -r [ { "Num": "ffff9b61ac49c400:", diff --git a/jc/parsers/proc_partitions.py b/jc/parsers/proc_partitions.py index c04ab215..826a33a5 100644 --- a/jc/parsers/proc_partitions.py +++ b/jc/parsers/proc_partitions.py @@ -52,7 +52,7 @@ Examples: ... ] - $ cat /proc/partitions | jc --proc_partitions -p -r + $ cat /proc/partitions | jc --proc-partitions -p -r [ { "major": "7", diff --git a/jc/parsers/proc_pid_mountinfo.py b/jc/parsers/proc_pid_mountinfo.py index 2babb5bb..40847cfc 100644 --- a/jc/parsers/proc_pid_mountinfo.py +++ b/jc/parsers/proc_pid_mountinfo.py @@ -108,7 +108,7 @@ Examples: ... ] - $ cat /proc/1/mountinfo | jc --proc_pid-mountinfo -p -r + $ cat /proc/1/mountinfo | jc --proc-pid-mountinfo -p -r [ { "mount_id": "24", diff --git a/jc/parsers/proc_pid_numa_maps.py b/jc/parsers/proc_pid_numa_maps.py index f05714bc..812a91b4 100644 --- a/jc/parsers/proc_pid_numa_maps.py +++ b/jc/parsers/proc_pid_numa_maps.py @@ -14,17 +14,17 @@ or or - $ cat /proc/1/numa_maps | jc --proc-numa-maps + $ cat /proc/1/numa_maps | jc --proc-pid-numa-maps Usage (module): import jc - result = jc.parse('proc', proc_numa_maps_file) + result = jc.parse('proc', proc_pid_numa_maps_file) or import jc - result = jc.parse('proc_numa_maps', proc_numa_maps_file) + result = jc.parse('proc_pid_numa_maps', proc_pid_numa_maps_file) Schema: @@ -70,7 +70,7 @@ Examples: ... ] - $ cat /proc/1/numa_maps | jc --proc_numa_maps -p -r + $ cat /proc/1/numa_maps | jc --proc-pid-numa-maps -p -r [ { "address": "7f53b5083000", diff --git a/jc/parsers/proc_pid_stat.py b/jc/parsers/proc_pid_stat.py index 9c9f055e..a263c16f 100644 --- a/jc/parsers/proc_pid_stat.py +++ b/jc/parsers/proc_pid_stat.py @@ -10,7 +10,7 @@ or or - $ cat /proc/1/stat | jc --proc-pid_stat + $ cat /proc/1/stat | jc --proc-pid-stat Usage (module): @@ -139,7 +139,7 @@ Examples: "state_pretty": "Sleeping in an interruptible wait" } - $ cat /proc/1/stat | jc --proc -p -r + $ cat /proc/1/stat | jc --proc-pid-stat -p -r { "pid": 1, "comm": "systemd", diff --git a/jc/parsers/proc_pid_statm.py b/jc/parsers/proc_pid_statm.py index bf817ef6..6b96519b 100644 --- a/jc/parsers/proc_pid_statm.py +++ b/jc/parsers/proc_pid_statm.py @@ -10,7 +10,7 @@ or or - $ cat /proc/1/statm | jc --proc-pid_statm + $ cat /proc/1/statm | jc --proc-pid-statm Usage (module): diff --git a/jc/parsers/proc_pid_status.py b/jc/parsers/proc_pid_status.py index f19de7f8..6aa214bf 100644 --- a/jc/parsers/proc_pid_status.py +++ b/jc/parsers/proc_pid_status.py @@ -10,7 +10,7 @@ or or - $ cat /proc/1/status | jc --proc-pid_status + $ cat /proc/1/status | jc --proc-pid-status Usage (module): @@ -205,7 +205,7 @@ Examples: "SigQ_limit": 15245 } - $ cat /proc/1/status | jc --proc -p -r + $ cat /proc/1/status | jc --proc-pid-status -p -r { "Name": "systemd", "Umask": "0000", diff --git a/jc/parsers/proc_swaps.py b/jc/parsers/proc_swaps.py index 2669159d..d50387a0 100644 --- a/jc/parsers/proc_swaps.py +++ b/jc/parsers/proc_swaps.py @@ -48,7 +48,7 @@ Examples: ... ] - $ cat /proc/swaps | jc --proc_swaps -p -r + $ cat /proc/swaps | jc --proc-swaps -p -r [ { "filename": "/swap.img", diff --git a/jc/parsers/proc_vmallocinfo.py b/jc/parsers/proc_vmallocinfo.py index 86f58eed..f3e8a54b 100644 --- a/jc/parsers/proc_vmallocinfo.py +++ b/jc/parsers/proc_vmallocinfo.py @@ -70,7 +70,7 @@ Examples: ... ] - $ cat /proc/vmallocinfo | jc --proc -p -r + $ cat /proc/vmallocinfo | jc --proc-vmallocinfo -p -r [ { "start": "0xffffb3c1c0000000", From 086cdc559cd20e7470da6077fe052550e0bcc062 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Mon, 26 Sep 2022 19:50:39 -0700 Subject: [PATCH 122/124] version bump --- CHANGELOG | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- jc/lib.py | 2 +- man/jc.1 | 2 +- setup.py | 2 +- 4 files changed, 56 insertions(+), 5 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 95d36b9c..6cdc5284 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,11 +1,62 @@ jc changelog -20220915 v1.22.0 -- Add /proc file parsers +20220926 v1.22.0 +- Add /proc file parsers for linux. Support for the following files: + `/proc/buddyinfo` + `/proc/consoles` + `/proc/cpuinfo` + `/proc/crypto` + `/proc/devices` + `/proc/diskstats` + `/proc/filesystems` + `/proc/interrupts` + `/proc/iomem` + `/proc/ioports` + `/proc/loadavg` + `/proc/locks` + `/proc/meminfo` + `/proc/modules` + `/proc/mtrr` + `/proc/pagetypeinfo` + `/proc/partitions` + `/proc/slabinfo` + `/proc/softirqs` + `/proc/stat` + `/proc/swaps` + `/proc/uptime` + `/proc/version` + `/proc/vmallocinfo` + `/proc/vmstat` + `/proc/zoneinfo` + `/proc/driver/rtc` + `/proc/net/arp` + `/proc/net/dev` + `/proc/net/dev_mcast` + `/proc/net/if_inet6` + `/proc/net/igmp` + `/proc/net/igmp6` + `/proc/net/ipv6_route` + `/proc/net/netlink` + `/proc/net/netstat` + `/proc/net/packet` + `/proc/net/protocols` + `/proc/net/route` + `/proc/net/unix` + `/proc//fdinfo/` + `/proc//io` + `/proc//maps` + `/proc//mountinfo` + `/proc//numa_maps` + `/proc//smaps` + `/proc//stat` + `/proc//statm` + `/proc//status` - Enhance `free` parser to support `-w` option integer conversions - Fix `ini` and `kv` parsers so they don't change keynames to lower case + NOTE: This can be a breaking change in your scripts - Fix `id` command parser to allow usernames and groupnames with spaces - Optimize tests +- Optimize documentation build script 20220829 v1.21.2 - Fix IP Address string parser for older python versions that don't cleanly diff --git a/jc/lib.py b/jc/lib.py index 6464648f..a8c170f5 100644 --- a/jc/lib.py +++ b/jc/lib.py @@ -6,7 +6,7 @@ import importlib from typing import Dict, List, Iterable, Union, Iterator from jc import appdirs -__version__ = '1.21.2' +__version__ = '1.22.0' parsers = [ 'acpi', diff --git a/man/jc.1 b/man/jc.1 index 70836260..915bfdb2 100644 --- a/man/jc.1 +++ b/man/jc.1 @@ -1,4 +1,4 @@ -.TH jc 1 2022-09-26 1.21.2 "JSON Convert" +.TH jc 1 2022-09-26 1.22.0 "JSON Convert" .SH NAME \fBjc\fP \- JSON Convert JSONifies the output of many CLI tools, file-types, and strings .SH SYNOPSIS diff --git a/setup.py b/setup.py index 0513ac02..9f5744df 100755 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ with open('README.md', 'r') as f: setuptools.setup( name='jc', - version='1.21.2', + version='1.22.0', author='Kelly Brazil', author_email='kellyjonbrazil@gmail.com', description='Converts the output of popular command-line tools and file-types to JSON.', From 03a2b35846da2903cddead358b265aed53738c4c Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Tue, 27 Sep 2022 11:11:16 -0700 Subject: [PATCH 123/124] Add metadata object to empty results list --- CHANGELOG | 2 ++ jc/cli.py | 7 +++++++ 2 files changed, 9 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index 6cdc5284..88ae1a4a 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -51,10 +51,12 @@ jc changelog `/proc//stat` `/proc//statm` `/proc//status` +- Magic syntax support for `/proc` files - Enhance `free` parser to support `-w` option integer conversions - Fix `ini` and `kv` parsers so they don't change keynames to lower case NOTE: This can be a breaking change in your scripts - Fix `id` command parser to allow usernames and groupnames with spaces +- Enhance metadata output to output metadata even when results are empty - Optimize tests - Optimize documentation build script diff --git a/jc/cli.py b/jc/cli.py index 9c35ee95..fb2ecbb2 100644 --- a/jc/cli.py +++ b/jc/cli.py @@ -475,6 +475,10 @@ def add_metadata_to(list_or_dict, does not already exist, it will be created with the metadata fields. If the _jc_meta field already exists, the metadata fields will be added to the existing object. + + In the case of an empty list (no data), a dictionary with a _jc_meta + object will be added to the list. This way you always get metadata, + even if there are no results. """ run_timestamp = runtime.timestamp() @@ -494,6 +498,9 @@ def add_metadata_to(list_or_dict, list_or_dict['_jc_meta'].update(meta_obj) elif isinstance(list_or_dict, list): + if not list_or_dict: + list_or_dict.append({}) + for item in list_or_dict: if '_jc_meta' not in item: item['_jc_meta'] = {} From 32fddce8fbb42eb1040fe123c66523122fe9aa72 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Tue, 27 Sep 2022 11:49:41 -0700 Subject: [PATCH 124/124] Add autocompletions --- CHANGELOG | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG b/CHANGELOG index 88ae1a4a..754a1683 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -52,6 +52,7 @@ jc changelog `/proc//statm` `/proc//status` - Magic syntax support for `/proc` files +- Enhance bash and zsh autocompletions for `/proc` files - Enhance `free` parser to support `-w` option integer conversions - Fix `ini` and `kv` parsers so they don't change keynames to lower case NOTE: This can be a breaking change in your scripts