mirror of
https://github.com/kellyjonbrazil/jc.git
synced 2025-06-19 00:17:51 +02:00
@ -1,5 +1,14 @@
|
|||||||
jc changelog
|
jc changelog
|
||||||
|
|
||||||
|
20210910 v1.17.0 # In progress
|
||||||
|
- Note to Package Maintainers: please see note at 20210720 v1.16.0
|
||||||
|
- Add generic ASCII tables parser
|
||||||
|
- Add vmstat parser
|
||||||
|
- Add support for streaming parsers
|
||||||
|
- Add ls command streaming parser tested on linux, macOS, and freeBSD
|
||||||
|
- Add ping command streaming parser tested on linux, macOS, and freeBSD
|
||||||
|
- Add -u option to allow unbuffered output
|
||||||
|
|
||||||
20210830 v1.16.2
|
20210830 v1.16.2
|
||||||
- Note to Package Maintainers: please see note at 20210720 v1.16.0
|
- Note to Package Maintainers: please see note at 20210720 v1.16.0
|
||||||
- Update sfdisk parser to support the -F option and newer versions of sfdisk
|
- Update sfdisk parser to support the -F option and newer versions of sfdisk
|
||||||
|
52
README.md
52
README.md
@ -60,6 +60,8 @@ See also:
|
|||||||
- [libxo on FreeBSD](http://juniper.github.io/libxo/libxo-manual.html)
|
- [libxo on FreeBSD](http://juniper.github.io/libxo/libxo-manual.html)
|
||||||
- [powershell](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/convertto-json?view=powershell-7)
|
- [powershell](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/convertto-json?view=powershell-7)
|
||||||
- [blog: linux apps should have a json flag](https://thomashunter.name/posts/2012-06-06-linux-cli-apps-should-have-a-json-flag)
|
- [blog: linux apps should have a json flag](https://thomashunter.name/posts/2012-06-06-linux-cli-apps-should-have-a-json-flag)
|
||||||
|
- [Hacker News discussion](https://news.ycombinator.com/item?id=28266193)
|
||||||
|
- [Reddit discussion](https://www.reddit.com/r/programming/comments/pa4cbb/bringing_the_unix_philosophy_to_the_21st_century/)
|
||||||
|
|
||||||
Use Cases:
|
Use Cases:
|
||||||
- [Bash scripting](https://blog.kellybrazil.com/2021/04/12/practical-json-at-the-command-line/)
|
- [Bash scripting](https://blog.kellybrazil.com/2021/04/12/practical-json-at-the-command-line/)
|
||||||
@ -141,6 +143,7 @@ The JSON output can be compact (default) or pretty formatted with the `-p` optio
|
|||||||
- `--kv` enables the Key/Value file parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/kv))
|
- `--kv` enables the Key/Value file parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/kv))
|
||||||
- `--last` enables the `last` and `lastb` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/last))
|
- `--last` enables the `last` and `lastb` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/last))
|
||||||
- `--ls` enables the `ls` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/ls))
|
- `--ls` enables the `ls` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/ls))
|
||||||
|
- `--ls-s` enables the `ls` command streaming parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/ls_s))
|
||||||
- `--lsblk` enables the `lsblk` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/lsblk))
|
- `--lsblk` enables the `lsblk` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/lsblk))
|
||||||
- `--lsmod` enables the `lsmod` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/lsmod))
|
- `--lsmod` enables the `lsmod` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/lsmod))
|
||||||
- `--lsof` enables the `lsof` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/lsof))
|
- `--lsof` enables the `lsof` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/lsof))
|
||||||
@ -149,6 +152,7 @@ The JSON output can be compact (default) or pretty formatted with the `-p` optio
|
|||||||
- `--ntpq` enables the `ntpq -p` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/ntpq))
|
- `--ntpq` enables the `ntpq -p` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/ntpq))
|
||||||
- `--passwd` enables the `/etc/passwd` file parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/passwd))
|
- `--passwd` enables the `/etc/passwd` file parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/passwd))
|
||||||
- `--ping` enables the `ping` and `ping6` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/ping))
|
- `--ping` enables the `ping` and `ping6` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/ping))
|
||||||
|
- `--ping-s` enables the `ping` and `ping6` command streaming parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/ping_s))
|
||||||
- `--pip-list` enables the `pip list` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/pip_list))
|
- `--pip-list` enables the `pip list` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/pip_list))
|
||||||
- `--pip-show` enables the `pip show` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/pip_show))
|
- `--pip-show` enables the `pip show` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/pip_show))
|
||||||
- `--ps` enables the `ps` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/ps))
|
- `--ps` enables the `ps` command parser ([documentation](https://kellyjonbrazil.github.io/jc/docs/parsers/ps))
|
||||||
@ -182,11 +186,12 @@ The JSON output can be compact (default) or pretty formatted with the `-p` optio
|
|||||||
### Options
|
### Options
|
||||||
- `-a` about `jc`. Prints information about `jc` and the parsers (in JSON, of course!)
|
- `-a` about `jc`. Prints information about `jc` and the parsers (in JSON, of course!)
|
||||||
- `-d` debug mode. Prints trace messages if parsing issues are encountered (use `-dd` for verbose debugging)
|
- `-d` debug mode. Prints trace messages if parsing issues are encountered (use `-dd` for verbose debugging)
|
||||||
- `-h` `jc` help. Use `jc -h --parser_name` for parser documentation
|
- `-h` help. Use `jc -h --parser_name` for parser documentation
|
||||||
- `-m` monochrome JSON output
|
- `-m` monochrome JSON output
|
||||||
- `-p` pretty format the JSON output
|
- `-p` pretty format the JSON output
|
||||||
- `-q` quiet mode. Suppresses parser warning messages
|
- `-q` quiet mode. Suppresses parser warning messages
|
||||||
- `-r` raw output. Provides a more literal JSON output, typically with string values and no additional semantic processing
|
- `-r` raw output. Provides a more literal JSON output, typically with string values and no additional semantic processing
|
||||||
|
- `-u` unbuffer output
|
||||||
- `-v` version information
|
- `-v` version information
|
||||||
|
|
||||||
### Exit Codes
|
### Exit Codes
|
||||||
@ -218,6 +223,51 @@ or
|
|||||||
JC_COLORS=default,default,default,default
|
JC_COLORS=default,default,default,default
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Streaming Parsers
|
||||||
|
Most parsers load all of the data from STDIN, parse it, then output the entire JSON document serially. There are some streaming parsers (e.g. `ls-s` and `ping-s`) that immediately start processing and outputing the data line-by-line as [JSON Lines](https://jsonlines.org/) (aka [NDJSON](http://ndjson.org/)) while it is being received from STDIN. This can significantly reduce the amount of memory required to parse large amounts of command output (e.g. `ls -lR /`) and can sometimes process the data more quickly. Streaming parsers have slightly different behavior than standard parsers as outlined below.
|
||||||
|
|
||||||
|
> Note: Streaming parsers cannot be used with the "magic" syntax
|
||||||
|
|
||||||
|
**Ignoring Errors**
|
||||||
|
|
||||||
|
You may want to ignore parsing errors when using streaming parsers since these may be used in long-lived processing pipelines and errors can break the pipe. To ignore parsing errors, use the `-q` cli option or the `quiet=True` argument with the `parse()` function. This will add a `_meta` object to the JSON output with a `success` attribute. If `success` is `true`, then there were no issues parsing the line. If `success` is `false`, then a parsing issue was found and `error` and `line` fields will be added to include a short error description and the contents of the unparsable line, respectively:
|
||||||
|
|
||||||
|
Successfully parsed line with `-q` option:
|
||||||
|
```
|
||||||
|
{
|
||||||
|
"command_data": "data",
|
||||||
|
"_meta": {
|
||||||
|
"success": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
Unsuccessfully parsed line with `-q` option:
|
||||||
|
```
|
||||||
|
{
|
||||||
|
"_meta": {
|
||||||
|
"success": false,
|
||||||
|
"error": "error parsing line",
|
||||||
|
"line": "original line data"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Unbuffering Output**
|
||||||
|
|
||||||
|
Most operating systems will buffer output that is being piped from process to process. The buffer is usually around 4KB. When viewing the output in the terminal the OS buffer is not engaged so output is immediately displayed on the screen. When piping multiple processes together, though, it may seem as if the output is hanging when the input data is very slow (e.g. `ping`):
|
||||||
|
```
|
||||||
|
$ ping 1.1.1.1 | jc --ping-s | jq
|
||||||
|
<slow output>
|
||||||
|
```
|
||||||
|
This is because the OS engages the 4KB buffer between `jc` and `jq` in this example. To display the data on the terminal in realtime, you can disable the buffer with the `-u` (unbuffer) cli option:
|
||||||
|
```
|
||||||
|
$ ping 1.1.1.1 | jc --ping-s -u | jq
|
||||||
|
{"type":"reply","pattern":null,"timestamp":null,"bytes":"64","response_ip":"1.1.1.1","icmp_seq":"1","ttl":"128","time_ms":"24.6","duplicate":false}
|
||||||
|
{"type":"reply","pattern":null,"timestamp":null,"bytes":"64","response_ip":"1.1.1.1","icmp_seq":"2","ttl":"128","time_ms":"26.8","duplicate":false}
|
||||||
|
...
|
||||||
|
```
|
||||||
|
> Note: Unbuffered output can be slower for faster data streams.
|
||||||
|
|
||||||
### Custom Parsers
|
### Custom Parsers
|
||||||
Custom local parser plugins may be placed in a `jc/jcparsers` folder in your local **"App data directory"**:
|
Custom local parser plugins may be placed in a `jc/jcparsers` folder in your local **"App data directory"**:
|
||||||
|
|
||||||
|
91
docs/parsers/ls_s.md
Normal file
91
docs/parsers/ls_s.md
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||||
|
|
||||||
|
# jc.parsers.ls_s
|
||||||
|
jc - JSON CLI output utility `ls` and `vdir` command output streaming parser
|
||||||
|
|
||||||
|
This streaming parser requires the `-l` option to be used on `ls`. If there are newline characters in the filename, then make sure to use the `-b` option on `ls`.
|
||||||
|
|
||||||
|
The `jc` `-q` option can be used to ignore parsing errors. (e.g. filenames with newline characters, but `-b` was not used)
|
||||||
|
|
||||||
|
The `epoch` calculated timestamp field is naive (i.e. based on the local time of the system the parser is run on)
|
||||||
|
|
||||||
|
The `epoch_utc` calculated timestamp field is timezone-aware and is only available if the timezone field is UTC.
|
||||||
|
|
||||||
|
Usage (cli):
|
||||||
|
|
||||||
|
$ ls | jc --ls-s
|
||||||
|
|
||||||
|
Usage (module):
|
||||||
|
|
||||||
|
import jc.parsers.ls_s
|
||||||
|
result = jc.parsers.ls_s.parse(ls_command_output.splitlines()) # result is an iterable object
|
||||||
|
for item in result:
|
||||||
|
# do something
|
||||||
|
|
||||||
|
Schema:
|
||||||
|
|
||||||
|
{
|
||||||
|
"filename": string,
|
||||||
|
"flags": string,
|
||||||
|
"links": integer,
|
||||||
|
"parent": string,
|
||||||
|
"owner": string,
|
||||||
|
"group": string,
|
||||||
|
"size": integer,
|
||||||
|
"date": string,
|
||||||
|
"epoch": integer, # naive timestamp if date field exists and can be converted
|
||||||
|
"epoch_utc": integer, # timezone aware timestamp if date field is in UTC and can be converted
|
||||||
|
"_meta": # This object only exists if using -q or quiet=True
|
||||||
|
{
|
||||||
|
"success": booean, # true if successfully parsed, false if error
|
||||||
|
"error": string, # exists if "success" is false
|
||||||
|
"line": string # exists if "success" is false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
$ ls -l /usr/bin | jc --ls-s
|
||||||
|
{"filename":"2to3-","flags":"-rwxr-xr-x","links":4,"owner":"root","group":"wheel","size":925,"date":"Feb 22 2019"}
|
||||||
|
{"filename":"2to3-2.7","link_to":"../../System/Library/Frameworks/Python.framework/Versions/2.7/bin/2to3-2.7","flags":"lrwxr-xr-x","links":1,"owner":"root","group":"wheel","size":74,"date":"May 4 2019"}
|
||||||
|
{"filename":"AssetCacheLocatorUtil","flags":"-rwxr-xr-x","links":1,"owner":"root","group":"wheel","size":55152,"date":"May 3 2019"}
|
||||||
|
...
|
||||||
|
|
||||||
|
$ ls -l /usr/bin | jc --ls-s -r
|
||||||
|
{"filename":"2to3-","flags":"-rwxr-xr-x","links":"4","owner":"root","group":"wheel","size":"925","date":"Feb 22 2019"}
|
||||||
|
{"filename":"2to3-2.7","link_to":"../../System/Library/Frameworks/Python.framework/Versions/2.7/bin/2to3-2.7","flags":"lrwxr-xr-x","links":"1","owner":"root","group":"wheel","size":"74","date":"May 4 2019"}
|
||||||
|
{"filename":"AssetCacheLocatorUtil","flags":"-rwxr-xr-x","links":"1","owner":"root","group":"wheel","size":"55152","date":"May 3 2019"}
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
## info
|
||||||
|
```python
|
||||||
|
info()
|
||||||
|
```
|
||||||
|
Provides parser metadata (version, author, etc.)
|
||||||
|
|
||||||
|
## parse
|
||||||
|
```python
|
||||||
|
parse(data, raw=False, quiet=False)
|
||||||
|
```
|
||||||
|
|
||||||
|
Main text parsing generator function. Returns an iterator object.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
|
||||||
|
data: (iterable) line-based text data to parse (e.g. sys.stdin or str.splitlines())
|
||||||
|
raw: (boolean) output preprocessed JSON if True
|
||||||
|
quiet: (boolean) suppress warning messages and ignore parsing exceptions if True
|
||||||
|
|
||||||
|
Yields:
|
||||||
|
|
||||||
|
Dictionary. Raw or processed structured data.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
Iterator object
|
||||||
|
|
||||||
|
## Parser Information
|
||||||
|
Compatibility: linux, darwin, cygwin, aix, freebsd
|
||||||
|
|
||||||
|
Version 0.5 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
98
docs/parsers/ping_s.md
Normal file
98
docs/parsers/ping_s.md
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
[Home](https://kellyjonbrazil.github.io/jc/)
|
||||||
|
|
||||||
|
# jc.parsers.ping_s
|
||||||
|
jc - JSON CLI output utility `ping` command output streaming parser
|
||||||
|
|
||||||
|
Supports `ping` and `ping6` output.
|
||||||
|
|
||||||
|
Usage (cli):
|
||||||
|
|
||||||
|
$ ping | jc --ping-s
|
||||||
|
|
||||||
|
> Note: When piping `jc` converted ping output to other processes it may appear the output is hanging due to the OS pipe buffers. This is because `ping` output is too small to quickly fill up the buffer. Use the `-u` option to unbuffer the `jc` output if you would like immediate output. See the [readme](https://github.com/kellyjonbrazil/jc/tree/streaming#streaming-parsers) for more information.
|
||||||
|
|
||||||
|
Usage (module):
|
||||||
|
|
||||||
|
import jc.parsers.ping_s
|
||||||
|
result = jc.parsers.ping_s.parse(ping_command_output.splitlines()) # result is an iterable object
|
||||||
|
for item in result:
|
||||||
|
# do something
|
||||||
|
|
||||||
|
Schema:
|
||||||
|
|
||||||
|
{
|
||||||
|
"type": string, # 'reply', 'timeout', 'summary', etc. See `_error_type.type_map` for all options.
|
||||||
|
"source_ip": string,
|
||||||
|
"destination_ip": string,
|
||||||
|
"sent_bytes": integer,
|
||||||
|
"pattern": string, # (null if not set)
|
||||||
|
"destination": string,
|
||||||
|
"timestamp": float,
|
||||||
|
"response_bytes": integer,
|
||||||
|
"response_ip": string,
|
||||||
|
"icmp_seq": integer,
|
||||||
|
"ttl": integer,
|
||||||
|
"time_ms": float,
|
||||||
|
"duplicate": boolean,
|
||||||
|
"packets_transmitted": integer,
|
||||||
|
"packets_received": integer,
|
||||||
|
"packet_loss_percent": float,
|
||||||
|
"duplicates": integer,
|
||||||
|
"round_trip_ms_min": float,
|
||||||
|
"round_trip_ms_avg": float,
|
||||||
|
"round_trip_ms_max": float,
|
||||||
|
"round_trip_ms_stddev": float,
|
||||||
|
"_meta": # This object only exists if using -q or quiet=True
|
||||||
|
{
|
||||||
|
"success": booean, # true if successfully parsed, false if error
|
||||||
|
"error": string, # exists if "success" is false
|
||||||
|
"line": string # exists if "success" is false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
$ ping 1.1.1.1 | jc --ping-s
|
||||||
|
{"type":"reply","destination_ip":"1.1.1.1","sent_bytes":56,"pattern":null,"response_bytes":64,"response_ip":"1.1.1.1","icmp_seq":0,"ttl":56,"time_ms":23.703}
|
||||||
|
{"type":"reply","destination_ip":"1.1.1.1","sent_bytes":56,"pattern":null,"response_bytes":64,"response_ip":"1.1.1.1","icmp_seq":1,"ttl":56,"time_ms":22.862}
|
||||||
|
{"type":"reply","destination_ip":"1.1.1.1","sent_bytes":56,"pattern":null,"response_bytes":64,"response_ip":"1.1.1.1","icmp_seq":2,"ttl":56,"time_ms":22.82}
|
||||||
|
...
|
||||||
|
|
||||||
|
$ ping 1.1.1.1 | jc --ping-s -r
|
||||||
|
{"type":"reply","destination_ip":"1.1.1.1","sent_bytes":"56","pattern":null,"response_bytes":"64","response_ip":"1.1.1.1","icmp_seq":"0","ttl":"56","time_ms":"23.054"}
|
||||||
|
{"type":"reply","destination_ip":"1.1.1.1","sent_bytes":"56","pattern":null,"response_bytes":"64","response_ip":"1.1.1.1","icmp_seq":"1","ttl":"56","time_ms":"24.739"}
|
||||||
|
{"type":"reply","destination_ip":"1.1.1.1","sent_bytes":"56","pattern":null,"response_bytes":"64","response_ip":"1.1.1.1","icmp_seq":"2","ttl":"56","time_ms":"23.232"}
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
## info
|
||||||
|
```python
|
||||||
|
info()
|
||||||
|
```
|
||||||
|
Provides parser metadata (version, author, etc.)
|
||||||
|
|
||||||
|
## parse
|
||||||
|
```python
|
||||||
|
parse(data, raw=False, quiet=False)
|
||||||
|
```
|
||||||
|
|
||||||
|
Main text parsing generator function. Returns an iterator object.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
|
||||||
|
data: (iterable) line-based text data to parse (e.g. sys.stdin or str.splitlines())
|
||||||
|
raw: (boolean) output preprocessed JSON if True
|
||||||
|
quiet: (boolean) suppress warning messages and ignore parsing exceptions if True
|
||||||
|
|
||||||
|
Yields:
|
||||||
|
|
||||||
|
Dictionary. Raw or processed structured data.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
Iterator object
|
||||||
|
|
||||||
|
## Parser Information
|
||||||
|
Compatibility: linux, darwin, freebsd
|
||||||
|
|
||||||
|
Version 0.5 by Kelly Brazil (kellyjonbrazil@gmail.com)
|
@ -59,26 +59,13 @@ Module Example:
|
|||||||
|
|
||||||
>>> import jc.parsers.dig
|
>>> import jc.parsers.dig
|
||||||
>>>
|
>>>
|
||||||
>>> data = '''; <<>> DiG 9.10.6 <<>> example.com
|
>>> import subprocess
|
||||||
... ;; global options: +cmd
|
>>> import jc.parsers.dig
|
||||||
... ;; Got answer:
|
|
||||||
... ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64612
|
|
||||||
... ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
|
|
||||||
...
|
|
||||||
... ;; OPT PSEUDOSECTION:
|
|
||||||
... ; EDNS: version: 0, flags:; udp: 4096
|
|
||||||
... ;; QUESTION SECTION:
|
|
||||||
... ;example.com. IN A
|
|
||||||
...
|
|
||||||
... ;; ANSWER SECTION:
|
|
||||||
... example.com. 29658 IN A 93.184.216.34
|
|
||||||
...
|
|
||||||
... ;; Query time: 52 msec
|
|
||||||
... ;; SERVER: 2600:1700:bab0:d40::1#53(2600:1700:bab0:d40::1)
|
|
||||||
... ;; WHEN: Fri Apr 16 16:13:00 PDT 2021
|
|
||||||
... ;; MSG SIZE rcvd: 56'''
|
|
||||||
>>>
|
>>>
|
||||||
>>> jc.parsers.dig.parse(data)
|
>>> cmd_output = subprocess.check_output(['dig', 'example.com'], text=True)
|
||||||
|
>>> data = jc.parsers.dig.parse(cmd_output)
|
||||||
|
>>>
|
||||||
|
>>> data
|
||||||
[{'id': 64612, 'opcode': 'QUERY', 'status': 'NOERROR', 'flags': ['qr', 'rd', 'ra'], 'query_num': 1, 'answer_num':
|
[{'id': 64612, 'opcode': 'QUERY', 'status': 'NOERROR', 'flags': ['qr', 'rd', 'ra'], 'query_num': 1, 'answer_num':
|
||||||
1, 'authority_num': 0, 'additional_num': 1, 'opt_pseudosection': {'edns': {'version': 0, 'flags': [], 'udp':
|
1, 'authority_num': 0, 'additional_num': 1, 'opt_pseudosection': {'edns': {'version': 0, 'flags': [], 'udp':
|
||||||
4096}}, 'question': {'name': 'example.com.', 'class': 'IN', 'type': 'A'}, 'answer': [{'name': 'example.com.',
|
4096}}, 'question': {'name': 'example.com.', 'class': 'IN', 'type': 'A'}, 'answer': [{'name': 'example.com.',
|
||||||
|
@ -117,6 +117,18 @@ Returns:
|
|||||||
True/False False unless a 'truthy' number or string is found ('y', 'yes', 'true', '1', 1, -1, etc.)
|
True/False False unless a 'truthy' number or string is found ('y', 'yes', 'true', '1', 1, -1, etc.)
|
||||||
|
|
||||||
|
|
||||||
|
## stream_success
|
||||||
|
```python
|
||||||
|
stream_success(output_line, quiet)
|
||||||
|
```
|
||||||
|
add _meta object to output line if -q (quiet) option is used
|
||||||
|
|
||||||
|
## stream_error
|
||||||
|
```python
|
||||||
|
stream_error(e, quiet, line)
|
||||||
|
```
|
||||||
|
reraise the stream exception with annotation or print an error _meta field if quiet=True
|
||||||
|
|
||||||
## timestamp
|
## timestamp
|
||||||
```python
|
```python
|
||||||
timestamp(datetime_string)
|
timestamp(datetime_string)
|
||||||
|
@ -57,26 +57,13 @@ Module Example:
|
|||||||
|
|
||||||
>>> import jc.parsers.dig
|
>>> import jc.parsers.dig
|
||||||
>>>
|
>>>
|
||||||
>>> data = '''; <<>> DiG 9.10.6 <<>> example.com
|
>>> import subprocess
|
||||||
... ;; global options: +cmd
|
>>> import jc.parsers.dig
|
||||||
... ;; Got answer:
|
>>>
|
||||||
... ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64612
|
>>> cmd_output = subprocess.check_output(['dig', 'example.com'], text=True)
|
||||||
... ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
|
>>> data = jc.parsers.dig.parse(cmd_output)
|
||||||
...
|
|
||||||
... ;; OPT PSEUDOSECTION:
|
|
||||||
... ; EDNS: version: 0, flags:; udp: 4096
|
|
||||||
... ;; QUESTION SECTION:
|
|
||||||
... ;example.com. IN A
|
|
||||||
...
|
|
||||||
... ;; ANSWER SECTION:
|
|
||||||
... example.com. 29658 IN A 93.184.216.34
|
|
||||||
...
|
|
||||||
... ;; Query time: 52 msec
|
|
||||||
... ;; SERVER: 2600:1700:bab0:d40::1#53(2600:1700:bab0:d40::1)
|
|
||||||
... ;; WHEN: Fri Apr 16 16:13:00 PDT 2021
|
|
||||||
... ;; MSG SIZE rcvd: 56'''
|
|
||||||
>>>
|
>>>
|
||||||
>>> jc.parsers.dig.parse(data)
|
>>> data
|
||||||
[{'id': 64612, 'opcode': 'QUERY', 'status': 'NOERROR', 'flags': ['qr', 'rd', 'ra'], 'query_num': 1, 'answer_num':
|
[{'id': 64612, 'opcode': 'QUERY', 'status': 'NOERROR', 'flags': ['qr', 'rd', 'ra'], 'query_num': 1, 'answer_num':
|
||||||
1, 'authority_num': 0, 'additional_num': 1, 'opt_pseudosection': {'edns': {'version': 0, 'flags': [], 'udp':
|
1, 'authority_num': 0, 'additional_num': 1, 'opt_pseudosection': {'edns': {'version': 0, 'flags': [], 'udp':
|
||||||
4096}}, 'question': {'name': 'example.com.', 'class': 'IN', 'type': 'A'}, 'answer': [{'name': 'example.com.',
|
4096}}, 'question': {'name': 'example.com.', 'class': 'IN', 'type': 'A'}, 'answer': [{'name': 'example.com.',
|
||||||
@ -86,4 +73,4 @@ Module Example:
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
name = 'jc'
|
name = 'jc'
|
||||||
__version__ = '1.16.2'
|
__version__ = '1.17.0'
|
||||||
|
66
jc/cli.py
66
jc/cli.py
@ -81,6 +81,7 @@ parsers = [
|
|||||||
'kv',
|
'kv',
|
||||||
'last',
|
'last',
|
||||||
'ls',
|
'ls',
|
||||||
|
'ls-s',
|
||||||
'lsblk',
|
'lsblk',
|
||||||
'lsmod',
|
'lsmod',
|
||||||
'lsof',
|
'lsof',
|
||||||
@ -89,6 +90,7 @@ parsers = [
|
|||||||
'ntpq',
|
'ntpq',
|
||||||
'passwd',
|
'passwd',
|
||||||
'ping',
|
'ping',
|
||||||
|
'ping-s',
|
||||||
'pip-list',
|
'pip-list',
|
||||||
'pip-show',
|
'pip-show',
|
||||||
'ps',
|
'ps',
|
||||||
@ -333,6 +335,7 @@ def helptext():
|
|||||||
-p pretty print output
|
-p pretty print output
|
||||||
-q quiet - suppress parser warnings
|
-q quiet - suppress parser warnings
|
||||||
-r raw JSON output
|
-r raw JSON output
|
||||||
|
-u unbuffer output
|
||||||
-v version info
|
-v version info
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
@ -524,6 +527,7 @@ def main():
|
|||||||
pretty = 'p' in options
|
pretty = 'p' in options
|
||||||
quiet = 'q' in options
|
quiet = 'q' in options
|
||||||
raw = 'r' in options
|
raw = 'r' in options
|
||||||
|
unbuffer = 'u' in options
|
||||||
version_info = 'v' in options
|
version_info = 'v' in options
|
||||||
|
|
||||||
if verbose_debug:
|
if verbose_debug:
|
||||||
@ -611,11 +615,35 @@ def main():
|
|||||||
jc.utils.error_message('Missing piped data. Use "jc -h" for help.')
|
jc.utils.error_message('Missing piped data. Use "jc -h" for help.')
|
||||||
sys.exit(combined_exit_code(magic_exit_code, JC_ERROR_EXIT))
|
sys.exit(combined_exit_code(magic_exit_code, JC_ERROR_EXIT))
|
||||||
|
|
||||||
# parse the data
|
# parse and print to stdout
|
||||||
data = magic_stdout or sys.stdin.read()
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
result = parser.parse(data, raw=raw, quiet=quiet)
|
# differentiate between regular and streaming parsers
|
||||||
|
|
||||||
|
# streaming
|
||||||
|
if getattr(parser.info, 'streaming', None):
|
||||||
|
result = parser.parse(sys.stdin, raw=raw, quiet=quiet)
|
||||||
|
for line in result:
|
||||||
|
print(json_out(line,
|
||||||
|
pretty=pretty,
|
||||||
|
env_colors=jc_colors,
|
||||||
|
mono=mono,
|
||||||
|
piped_out=piped_output()),
|
||||||
|
flush=unbuffer)
|
||||||
|
|
||||||
|
sys.exit(combined_exit_code(magic_exit_code, 0))
|
||||||
|
|
||||||
|
# regular
|
||||||
|
else:
|
||||||
|
data = magic_stdout or sys.stdin.read()
|
||||||
|
result = parser.parse(data, raw=raw, quiet=quiet)
|
||||||
|
print(json_out(result,
|
||||||
|
pretty=pretty,
|
||||||
|
env_colors=jc_colors,
|
||||||
|
mono=mono,
|
||||||
|
piped_out=piped_output()),
|
||||||
|
flush=unbuffer)
|
||||||
|
|
||||||
|
sys.exit(combined_exit_code(magic_exit_code, 0))
|
||||||
|
|
||||||
except (ParseError, LibraryNotInstalled) as e:
|
except (ParseError, LibraryNotInstalled) as e:
|
||||||
if debug:
|
if debug:
|
||||||
@ -627,21 +655,7 @@ def main():
|
|||||||
' For details use the -d or -dd option. Use "jc -h" for help.')
|
' For details use the -d or -dd option. Use "jc -h" for help.')
|
||||||
sys.exit(combined_exit_code(magic_exit_code, JC_ERROR_EXIT))
|
sys.exit(combined_exit_code(magic_exit_code, JC_ERROR_EXIT))
|
||||||
|
|
||||||
except Exception:
|
except json.JSONDecodeError:
|
||||||
if debug:
|
|
||||||
raise
|
|
||||||
else:
|
|
||||||
jc.utils.error_message(
|
|
||||||
f'{parser_name} parser could not parse the input data. Did you use the correct parser?\n'
|
|
||||||
' For details use the -d or -dd option. Use "jc -h" for help.')
|
|
||||||
sys.exit(combined_exit_code(magic_exit_code, JC_ERROR_EXIT))
|
|
||||||
|
|
||||||
# output the json
|
|
||||||
try:
|
|
||||||
print(json_out(result, pretty=pretty, env_colors=jc_colors, mono=mono, piped_out=piped_output()))
|
|
||||||
sys.exit(combined_exit_code(magic_exit_code, 0))
|
|
||||||
|
|
||||||
except Exception:
|
|
||||||
if debug:
|
if debug:
|
||||||
raise
|
raise
|
||||||
else:
|
else:
|
||||||
@ -650,6 +664,20 @@ def main():
|
|||||||
' For details use the -d or -dd option.')
|
' For details use the -d or -dd option.')
|
||||||
sys.exit(combined_exit_code(magic_exit_code, JC_ERROR_EXIT))
|
sys.exit(combined_exit_code(magic_exit_code, JC_ERROR_EXIT))
|
||||||
|
|
||||||
|
except Exception:
|
||||||
|
if debug:
|
||||||
|
raise
|
||||||
|
else:
|
||||||
|
streaming_msg = ''
|
||||||
|
if getattr(parser.info, 'streaming', None):
|
||||||
|
streaming_msg = ' Use the -q option to ignore streaming parser errors.\n'
|
||||||
|
|
||||||
|
jc.utils.error_message(
|
||||||
|
f'{parser_name} parser could not parse the input data. Did you use the correct parser?\n'
|
||||||
|
f'{streaming_msg}'
|
||||||
|
' For details use the -d or -dd option. Use "jc -h" for help.')
|
||||||
|
sys.exit(combined_exit_code(magic_exit_code, JC_ERROR_EXIT))
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
BIN
jc/man/jc.1.gz
BIN
jc/man/jc.1.gz
Binary file not shown.
@ -65,6 +65,7 @@ def _process(proc_data):
|
|||||||
List of Dictionaries. Structured to conform to the schema.
|
List of Dictionaries. Structured to conform to the schema.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
# process the data here
|
||||||
# rebuild output for added semantic information
|
# rebuild output for added semantic information
|
||||||
# use helper functions in jc.utils for int, float, bool conversions and timestamps
|
# use helper functions in jc.utils for int, float, bool conversions and timestamps
|
||||||
|
|
||||||
@ -93,10 +94,9 @@ def parse(data, raw=False, quiet=False):
|
|||||||
if jc.utils.has_data(data):
|
if jc.utils.has_data(data):
|
||||||
|
|
||||||
for line in filter(None, data.splitlines()):
|
for line in filter(None, data.splitlines()):
|
||||||
# parse the content
|
#
|
||||||
|
# parse the content here
|
||||||
|
#
|
||||||
pass
|
pass
|
||||||
|
|
||||||
if raw:
|
return raw_output if raw else _process(raw_output)
|
||||||
return raw_output
|
|
||||||
else:
|
|
||||||
return _process(raw_output)
|
|
||||||
|
106
jc/parsers/foo_s.py
Normal file
106
jc/parsers/foo_s.py
Normal file
@ -0,0 +1,106 @@
|
|||||||
|
"""jc - JSON CLI output utility `foo` command output streaming parser
|
||||||
|
|
||||||
|
Usage (cli):
|
||||||
|
|
||||||
|
$ foo | jc --foo_s
|
||||||
|
|
||||||
|
Usage (module):
|
||||||
|
|
||||||
|
import jc.parsers.foo_s
|
||||||
|
result = jc.parsers.foo_s.parse(foo_command_output.splitlines()) # result is an iterable object
|
||||||
|
for item in result:
|
||||||
|
# do something
|
||||||
|
|
||||||
|
Schema:
|
||||||
|
|
||||||
|
{
|
||||||
|
"foo": string,
|
||||||
|
"_meta": # This object only exists if using -q or quiet=True
|
||||||
|
{
|
||||||
|
"success": booean, # true if successfully parsed, false if error
|
||||||
|
"error": string, # exists if "success" is false
|
||||||
|
"line": string # exists if "success" is false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
$ foo | jc --foo-s
|
||||||
|
{example output}
|
||||||
|
...
|
||||||
|
|
||||||
|
$ foo | jc --foo-s -r
|
||||||
|
{example output}
|
||||||
|
...
|
||||||
|
"""
|
||||||
|
import jc.utils
|
||||||
|
from jc.utils import stream_success, stream_error
|
||||||
|
|
||||||
|
|
||||||
|
class info():
|
||||||
|
"""Provides parser metadata (version, author, etc.)"""
|
||||||
|
version = '1.0'
|
||||||
|
description = '`foo` command streaming parser'
|
||||||
|
author = 'John Doe'
|
||||||
|
author_email = 'johndoe@gmail.com'
|
||||||
|
|
||||||
|
# compatible options: linux, darwin, cygwin, win32, aix, freebsd
|
||||||
|
compatible = ['linux', 'darwin', 'cygwin', 'aix', 'freebsd']
|
||||||
|
streaming = True
|
||||||
|
|
||||||
|
|
||||||
|
__version__ = info.version
|
||||||
|
|
||||||
|
|
||||||
|
def _process(proc_data):
|
||||||
|
"""
|
||||||
|
Final processing to conform to the schema.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
|
||||||
|
proc_data: (Dictionary) raw structured data to process
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
Dictionary. Structured data 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(data, raw=False, quiet=False):
|
||||||
|
"""
|
||||||
|
Main text parsing generator function. Returns an iterator object.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
|
||||||
|
data: (iterable) line-based text data to parse (e.g. sys.stdin or str.splitlines())
|
||||||
|
raw: (boolean) output preprocessed JSON if True
|
||||||
|
quiet: (boolean) suppress warning messages and ignore parsing exceptions if True
|
||||||
|
|
||||||
|
Yields:
|
||||||
|
|
||||||
|
Dictionary. Raw or processed structured data.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
Iterator object
|
||||||
|
"""
|
||||||
|
if not quiet:
|
||||||
|
jc.utils.compatibility(__name__, info.compatible)
|
||||||
|
|
||||||
|
for line in data:
|
||||||
|
try:
|
||||||
|
#
|
||||||
|
# parse the input here
|
||||||
|
#
|
||||||
|
|
||||||
|
yield stream_success(output_line, quiet) if raw else stream_success(_process(output_line), quiet)
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
yield stream_error(e, quiet, line)
|
177
jc/parsers/ls_s.py
Normal file
177
jc/parsers/ls_s.py
Normal file
@ -0,0 +1,177 @@
|
|||||||
|
"""jc - JSON CLI output utility `ls` and `vdir` command output streaming parser
|
||||||
|
|
||||||
|
This streaming parser requires the `-l` option to be used on `ls`. If there are newline characters in the filename, then make sure to use the `-b` option on `ls`.
|
||||||
|
|
||||||
|
The `jc` `-q` option can be used to ignore parsing errors. (e.g. filenames with newline characters, but `-b` was not used)
|
||||||
|
|
||||||
|
The `epoch` calculated timestamp field is naive (i.e. based on the local time of the system the parser is run on)
|
||||||
|
|
||||||
|
The `epoch_utc` calculated timestamp field is timezone-aware and is only available if the timezone field is UTC.
|
||||||
|
|
||||||
|
Usage (cli):
|
||||||
|
|
||||||
|
$ ls | jc --ls-s
|
||||||
|
|
||||||
|
Usage (module):
|
||||||
|
|
||||||
|
import jc.parsers.ls_s
|
||||||
|
result = jc.parsers.ls_s.parse(ls_command_output.splitlines()) # result is an iterable object
|
||||||
|
for item in result:
|
||||||
|
# do something
|
||||||
|
|
||||||
|
Schema:
|
||||||
|
|
||||||
|
{
|
||||||
|
"filename": string,
|
||||||
|
"flags": string,
|
||||||
|
"links": integer,
|
||||||
|
"parent": string,
|
||||||
|
"owner": string,
|
||||||
|
"group": string,
|
||||||
|
"size": integer,
|
||||||
|
"date": string,
|
||||||
|
"epoch": integer, # naive timestamp if date field exists and can be converted
|
||||||
|
"epoch_utc": integer, # timezone aware timestamp if date field is in UTC and can be converted
|
||||||
|
"_meta": # This object only exists if using -q or quiet=True
|
||||||
|
{
|
||||||
|
"success": booean, # true if successfully parsed, false if error
|
||||||
|
"error": string, # exists if "success" is false
|
||||||
|
"line": string # exists if "success" is false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
$ ls -l /usr/bin | jc --ls-s
|
||||||
|
{"filename":"2to3-","flags":"-rwxr-xr-x","links":4,"owner":"root","group":"wheel","size":925,"date":"Feb 22 2019"}
|
||||||
|
{"filename":"2to3-2.7","link_to":"../../System/Library/Frameworks/Python.framework/Versions/2.7/bin/2to3-2.7","flags":"lrwxr-xr-x","links":1,"owner":"root","group":"wheel","size":74,"date":"May 4 2019"}
|
||||||
|
{"filename":"AssetCacheLocatorUtil","flags":"-rwxr-xr-x","links":1,"owner":"root","group":"wheel","size":55152,"date":"May 3 2019"}
|
||||||
|
...
|
||||||
|
|
||||||
|
$ ls -l /usr/bin | jc --ls-s -r
|
||||||
|
{"filename":"2to3-","flags":"-rwxr-xr-x","links":"4","owner":"root","group":"wheel","size":"925","date":"Feb 22 2019"}
|
||||||
|
{"filename":"2to3-2.7","link_to":"../../System/Library/Frameworks/Python.framework/Versions/2.7/bin/2to3-2.7","flags":"lrwxr-xr-x","links":"1","owner":"root","group":"wheel","size":"74","date":"May 4 2019"}
|
||||||
|
{"filename":"AssetCacheLocatorUtil","flags":"-rwxr-xr-x","links":"1","owner":"root","group":"wheel","size":"55152","date":"May 3 2019"}
|
||||||
|
...
|
||||||
|
"""
|
||||||
|
import re
|
||||||
|
import jc.utils
|
||||||
|
from jc.utils import stream_success, stream_error
|
||||||
|
from jc.exceptions import ParseError
|
||||||
|
|
||||||
|
|
||||||
|
class info():
|
||||||
|
"""Provides parser metadata (version, author, etc.)"""
|
||||||
|
version = '0.5'
|
||||||
|
description = '`ls` command streaming parser'
|
||||||
|
author = 'Kelly Brazil'
|
||||||
|
author_email = 'kellyjonbrazil@gmail.com'
|
||||||
|
|
||||||
|
# compatible options: linux, darwin, cygwin, win32, aix, freebsd
|
||||||
|
compatible = ['linux', 'darwin', 'cygwin', 'aix', 'freebsd']
|
||||||
|
streaming = True
|
||||||
|
|
||||||
|
|
||||||
|
__version__ = info.version
|
||||||
|
|
||||||
|
|
||||||
|
def _process(proc_data):
|
||||||
|
"""
|
||||||
|
Final processing to conform to the schema.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
|
||||||
|
proc_data: (Dictionary) raw structured data to process
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
Dictionary. Structured data to conform to the schema.
|
||||||
|
"""
|
||||||
|
int_list = ['links', 'size']
|
||||||
|
for key in proc_data:
|
||||||
|
if key in int_list:
|
||||||
|
proc_data[key] = jc.utils.convert_to_int(proc_data[key])
|
||||||
|
|
||||||
|
if 'date' in proc_data:
|
||||||
|
# to speed up processing only try to convert the date if it's not the default format
|
||||||
|
if not re.match(r'[a-zA-Z]{3}\s{1,2}\d{1,2}\s{1,2}[0-9:]{4,5}', proc_data['date']):
|
||||||
|
ts = jc.utils.timestamp(proc_data['date'])
|
||||||
|
proc_data['epoch'] = ts.naive
|
||||||
|
proc_data['epoch_utc'] = ts.utc
|
||||||
|
|
||||||
|
return proc_data
|
||||||
|
|
||||||
|
|
||||||
|
def parse(data, raw=False, quiet=False):
|
||||||
|
"""
|
||||||
|
Main text parsing generator function. Returns an iterator object.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
|
||||||
|
data: (iterable) line-based text data to parse (e.g. sys.stdin or str.splitlines())
|
||||||
|
raw: (boolean) output preprocessed JSON if True
|
||||||
|
quiet: (boolean) suppress warning messages and ignore parsing exceptions if True
|
||||||
|
|
||||||
|
Yields:
|
||||||
|
|
||||||
|
Dictionary. Raw or processed structured data.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
Iterator object
|
||||||
|
"""
|
||||||
|
if not quiet:
|
||||||
|
jc.utils.compatibility(__name__, info.compatible)
|
||||||
|
|
||||||
|
parent = ''
|
||||||
|
|
||||||
|
for line in data:
|
||||||
|
try:
|
||||||
|
|
||||||
|
# skip line if it starts with 'total 1234'
|
||||||
|
if re.match(r'total [0-9]+', line):
|
||||||
|
continue
|
||||||
|
|
||||||
|
# skip blank lines
|
||||||
|
if line.strip() == '':
|
||||||
|
continue
|
||||||
|
|
||||||
|
# Look for parent line if glob or -R is used
|
||||||
|
if not re.match(r'[-dclpsbDCMnP?]([-r][-w][-xsS]){2}([-r][-w][-xtT])[+]?', line) \
|
||||||
|
and line.strip().endswith(':'):
|
||||||
|
parent = line.strip()[:-1]
|
||||||
|
continue
|
||||||
|
|
||||||
|
if not re.match(r'[-dclpsbDCMnP?]([-r][-w][-xsS]){2}([-r][-w][-xtT])[+]?', line):
|
||||||
|
raise ParseError('Not ls -l data')
|
||||||
|
|
||||||
|
parsed_line = line.strip().split(maxsplit=8)
|
||||||
|
output_line = {}
|
||||||
|
|
||||||
|
# split filenames and links
|
||||||
|
if len(parsed_line) == 9:
|
||||||
|
filename_field = parsed_line[8].split(' -> ')
|
||||||
|
else:
|
||||||
|
# in case of filenames starting with a newline character
|
||||||
|
filename_field = ['']
|
||||||
|
|
||||||
|
# create output object
|
||||||
|
output_line['filename'] = filename_field[0]
|
||||||
|
|
||||||
|
if len(filename_field) > 1:
|
||||||
|
output_line['link_to'] = filename_field[1]
|
||||||
|
|
||||||
|
if parent:
|
||||||
|
output_line['parent'] = parent
|
||||||
|
|
||||||
|
output_line['flags'] = parsed_line[0]
|
||||||
|
output_line['links'] = parsed_line[1]
|
||||||
|
output_line['owner'] = parsed_line[2]
|
||||||
|
output_line['group'] = parsed_line[3]
|
||||||
|
output_line['size'] = parsed_line[4]
|
||||||
|
output_line['date'] = ' '.join(parsed_line[5:8])
|
||||||
|
|
||||||
|
yield stream_success(output_line, quiet) if raw else stream_success(_process(output_line), quiet)
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
yield stream_error(e, quiet, line)
|
528
jc/parsers/ping_s.py
Normal file
528
jc/parsers/ping_s.py
Normal file
@ -0,0 +1,528 @@
|
|||||||
|
"""jc - JSON CLI output utility `ping` command output streaming parser
|
||||||
|
|
||||||
|
Supports `ping` and `ping6` output.
|
||||||
|
|
||||||
|
Usage (cli):
|
||||||
|
|
||||||
|
$ ping | jc --ping-s
|
||||||
|
|
||||||
|
> Note: When piping `jc` converted ping output to other processes it may appear the output is hanging due to the OS pipe buffers. This is because `ping` output is too small to quickly fill up the buffer. Use the `-u` option to unbuffer the `jc` output if you would like immediate output. See the [readme](https://github.com/kellyjonbrazil/jc/tree/streaming#streaming-parsers) for more information.
|
||||||
|
|
||||||
|
Usage (module):
|
||||||
|
|
||||||
|
import jc.parsers.ping_s
|
||||||
|
result = jc.parsers.ping_s.parse(ping_command_output.splitlines()) # result is an iterable object
|
||||||
|
for item in result:
|
||||||
|
# do something
|
||||||
|
|
||||||
|
Schema:
|
||||||
|
|
||||||
|
{
|
||||||
|
"type": string, # 'reply', 'timeout', 'summary', etc. See `_error_type.type_map` for all options.
|
||||||
|
"source_ip": string,
|
||||||
|
"destination_ip": string,
|
||||||
|
"sent_bytes": integer,
|
||||||
|
"pattern": string, # (null if not set)
|
||||||
|
"destination": string,
|
||||||
|
"timestamp": float,
|
||||||
|
"response_bytes": integer,
|
||||||
|
"response_ip": string,
|
||||||
|
"icmp_seq": integer,
|
||||||
|
"ttl": integer,
|
||||||
|
"time_ms": float,
|
||||||
|
"duplicate": boolean,
|
||||||
|
"packets_transmitted": integer,
|
||||||
|
"packets_received": integer,
|
||||||
|
"packet_loss_percent": float,
|
||||||
|
"duplicates": integer,
|
||||||
|
"round_trip_ms_min": float,
|
||||||
|
"round_trip_ms_avg": float,
|
||||||
|
"round_trip_ms_max": float,
|
||||||
|
"round_trip_ms_stddev": float,
|
||||||
|
"_meta": # This object only exists if using -q or quiet=True
|
||||||
|
{
|
||||||
|
"success": booean, # true if successfully parsed, false if error
|
||||||
|
"error": string, # exists if "success" is false
|
||||||
|
"line": string # exists if "success" is false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
$ ping 1.1.1.1 | jc --ping-s
|
||||||
|
{"type":"reply","destination_ip":"1.1.1.1","sent_bytes":56,"pattern":null,"response_bytes":64,"response_ip":"1.1.1.1","icmp_seq":0,"ttl":56,"time_ms":23.703}
|
||||||
|
{"type":"reply","destination_ip":"1.1.1.1","sent_bytes":56,"pattern":null,"response_bytes":64,"response_ip":"1.1.1.1","icmp_seq":1,"ttl":56,"time_ms":22.862}
|
||||||
|
{"type":"reply","destination_ip":"1.1.1.1","sent_bytes":56,"pattern":null,"response_bytes":64,"response_ip":"1.1.1.1","icmp_seq":2,"ttl":56,"time_ms":22.82}
|
||||||
|
...
|
||||||
|
|
||||||
|
$ ping 1.1.1.1 | jc --ping-s -r
|
||||||
|
{"type":"reply","destination_ip":"1.1.1.1","sent_bytes":"56","pattern":null,"response_bytes":"64","response_ip":"1.1.1.1","icmp_seq":"0","ttl":"56","time_ms":"23.054"}
|
||||||
|
{"type":"reply","destination_ip":"1.1.1.1","sent_bytes":"56","pattern":null,"response_bytes":"64","response_ip":"1.1.1.1","icmp_seq":"1","ttl":"56","time_ms":"24.739"}
|
||||||
|
{"type":"reply","destination_ip":"1.1.1.1","sent_bytes":"56","pattern":null,"response_bytes":"64","response_ip":"1.1.1.1","icmp_seq":"2","ttl":"56","time_ms":"23.232"}
|
||||||
|
...
|
||||||
|
"""
|
||||||
|
import string
|
||||||
|
import ipaddress
|
||||||
|
import jc.utils
|
||||||
|
from jc.exceptions import ParseError
|
||||||
|
from jc.utils import stream_success, stream_error
|
||||||
|
|
||||||
|
|
||||||
|
class info():
|
||||||
|
"""Provides parser metadata (version, author, etc.)"""
|
||||||
|
version = '0.5'
|
||||||
|
description = '`ping` and `ping6` command streaming parser'
|
||||||
|
author = 'Kelly Brazil'
|
||||||
|
author_email = 'kellyjonbrazil@gmail.com'
|
||||||
|
|
||||||
|
# compatible options: linux, darwin, cygwin, win32, aix, freebsd
|
||||||
|
compatible = ['linux', 'darwin', 'freebsd']
|
||||||
|
streaming = True
|
||||||
|
|
||||||
|
|
||||||
|
__version__ = info.version
|
||||||
|
|
||||||
|
|
||||||
|
def _process(proc_data):
|
||||||
|
"""
|
||||||
|
Final processing to conform to the schema.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
|
||||||
|
proc_data: (Dictionary) raw structured data to process
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
Dictionary. Structured data to conform to the schema.
|
||||||
|
"""
|
||||||
|
int_list = ['sent_bytes', 'packets_transmitted', 'packets_received', 'response_bytes', 'icmp_seq', 'ttl',
|
||||||
|
'duplicates', 'vr', 'hl', 'tos', 'len', 'id', 'flg', 'off', 'pro', 'cks']
|
||||||
|
float_list = ['packet_loss_percent', 'round_trip_ms_min', 'round_trip_ms_avg', 'round_trip_ms_max',
|
||||||
|
'round_trip_ms_stddev', 'timestamp', 'time_ms']
|
||||||
|
|
||||||
|
for key in proc_data:
|
||||||
|
if key in int_list:
|
||||||
|
proc_data[key] = jc.utils.convert_to_int(proc_data[key])
|
||||||
|
|
||||||
|
if key in float_list:
|
||||||
|
proc_data[key] = jc.utils.convert_to_float(proc_data[key])
|
||||||
|
|
||||||
|
return proc_data
|
||||||
|
|
||||||
|
|
||||||
|
class _state:
|
||||||
|
os_detected = None
|
||||||
|
linux = None
|
||||||
|
bsd = None
|
||||||
|
ipv4 = None
|
||||||
|
hostname = None
|
||||||
|
destination_ip = None
|
||||||
|
sent_bytes = None
|
||||||
|
pattern = None
|
||||||
|
footer = False
|
||||||
|
packets_transmitted = None
|
||||||
|
packets_received = None
|
||||||
|
packet_loss_percent = None
|
||||||
|
time_ms = None
|
||||||
|
duplicates = None
|
||||||
|
|
||||||
|
|
||||||
|
def _ipv6_in(line):
|
||||||
|
line_list = line.replace('(', ' ').replace(')', ' ').replace(',', ' ').replace('%', ' ').split()
|
||||||
|
ipv6 = False
|
||||||
|
for item in line_list:
|
||||||
|
try:
|
||||||
|
_ = ipaddress.IPv6Address(item)
|
||||||
|
ipv6 = True
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
return ipv6
|
||||||
|
|
||||||
|
|
||||||
|
def _error_type(line):
|
||||||
|
# from https://github.com/dgibson/iputils/blob/master/ping.c
|
||||||
|
# https://android.googlesource.com/platform/external/ping/+/8fc3c91cf9e7f87bc20b9e6d3ea2982d87b70d9a/ping.c
|
||||||
|
# https://opensource.apple.com/source/network_cmds/network_cmds-328/ping.tproj/ping.c
|
||||||
|
type_map = {
|
||||||
|
'Destination Net Unreachable': 'destination_net_unreachable',
|
||||||
|
'Destination Host Unreachable': 'destination_host_unreachable',
|
||||||
|
'Destination Protocol Unreachable': 'destination_protocol_unreachable',
|
||||||
|
'Destination Port Unreachable': 'destination_port_unreachable',
|
||||||
|
'Frag needed and DF set': 'frag_needed_and_df_set',
|
||||||
|
'Source Route Failed': 'source_route_failed',
|
||||||
|
'Destination Net Unknown': 'destination_net_unknown',
|
||||||
|
'Destination Host Unknown': 'destination_host_unknown',
|
||||||
|
'Source Host Isolated': 'source_host_isolated',
|
||||||
|
'Destination Net Prohibited': 'destination_net_prohibited',
|
||||||
|
'Destination Host Prohibited': 'destination_host_prohibited',
|
||||||
|
'Destination Net Unreachable for Type of Service': 'destination_net_unreachable_for_type_of_service',
|
||||||
|
'Destination Host Unreachable for Type of Service': 'destination_host_unreachable_for_type_of_service',
|
||||||
|
'Packet filtered': 'packet_filtered',
|
||||||
|
'Precedence Violation': 'precedence_violation',
|
||||||
|
'Precedence Cutoff': 'precedence_cutoff',
|
||||||
|
'Dest Unreachable, Bad Code': 'dest_unreachable_bad_code',
|
||||||
|
'Redirect Network': 'redirect_network',
|
||||||
|
'Redirect Host': 'redirect_host',
|
||||||
|
'Redirect Type of Service and Network': 'redirect_type_of_service_and_network',
|
||||||
|
'Redirect, Bad Code': 'redirect_bad_code',
|
||||||
|
'Time to live exceeded': 'time_to_live_exceeded',
|
||||||
|
'Frag reassembly time exceeded': 'frag_reassembly_time_exceeded',
|
||||||
|
'Time exceeded, Bad Code': 'time_exceeded_bad_code'
|
||||||
|
}
|
||||||
|
|
||||||
|
for err_type, code in type_map.items():
|
||||||
|
if err_type in line:
|
||||||
|
return code
|
||||||
|
|
||||||
|
|
||||||
|
def _bsd_parse(line, s):
|
||||||
|
output_line = {}
|
||||||
|
|
||||||
|
|
||||||
|
if line.startswith('PING '):
|
||||||
|
s.destination_ip = line.split()[2].lstrip('(').rstrip(':').rstrip(')')
|
||||||
|
s.sent_bytes = line.split()[3]
|
||||||
|
return None
|
||||||
|
|
||||||
|
if line.startswith('PING6('):
|
||||||
|
line = line.replace('(', ' ').replace(')', ' ').replace('=', ' ')
|
||||||
|
s.source_ip = line.split()[4]
|
||||||
|
s.destination_ip = line.split()[6]
|
||||||
|
s.sent_bytes = line.split()[1]
|
||||||
|
return None
|
||||||
|
|
||||||
|
if line.startswith('---'):
|
||||||
|
s.footer = True
|
||||||
|
return None
|
||||||
|
|
||||||
|
if s.footer:
|
||||||
|
if 'packets transmitted' in line:
|
||||||
|
if ' duplicates,' in line:
|
||||||
|
s.packets_transmitted = line.split()[0]
|
||||||
|
s.packets_received = line.split()[3]
|
||||||
|
s.packet_loss_percent = line.split()[8].rstrip('%')
|
||||||
|
s.duplicates = line.split()[6].lstrip('+')
|
||||||
|
return None
|
||||||
|
|
||||||
|
else:
|
||||||
|
s.packets_transmitted = line.split()[0]
|
||||||
|
s.packets_received = line.split()[3]
|
||||||
|
s.packet_loss_percent = line.split()[6].rstrip('%')
|
||||||
|
s.duplicates = '0'
|
||||||
|
return None
|
||||||
|
|
||||||
|
else:
|
||||||
|
split_line = line.split(' = ')[1]
|
||||||
|
split_line = split_line.split('/')
|
||||||
|
|
||||||
|
output_line = {
|
||||||
|
'type': 'summary',
|
||||||
|
'destination_ip': s.destination_ip or None,
|
||||||
|
'sent_bytes': s.sent_bytes or None,
|
||||||
|
'pattern': s.pattern or None,
|
||||||
|
'packets_transmitted': s.packets_transmitted or None,
|
||||||
|
'packets_received': s.packets_received or None,
|
||||||
|
'packet_loss_percent': s.packet_loss_percent or None,
|
||||||
|
'duplicates': s.duplicates or None,
|
||||||
|
'round_trip_ms_min': split_line[0],
|
||||||
|
'round_trip_ms_avg': split_line[1],
|
||||||
|
'round_trip_ms_max': split_line[2],
|
||||||
|
'round_trip_ms_stddev': split_line[3].replace(' ms', '')
|
||||||
|
}
|
||||||
|
|
||||||
|
return output_line
|
||||||
|
|
||||||
|
# ping response lines
|
||||||
|
else:
|
||||||
|
# ipv4 lines
|
||||||
|
if not _ipv6_in(line):
|
||||||
|
|
||||||
|
# request timeout
|
||||||
|
if line.startswith('Request timeout for '):
|
||||||
|
output_line = {
|
||||||
|
'type': 'timeout',
|
||||||
|
'destination_ip': s.destination_ip or None,
|
||||||
|
'sent_bytes': s.sent_bytes or None,
|
||||||
|
'pattern': s.pattern or None,
|
||||||
|
'icmp_seq': line.split()[4]
|
||||||
|
}
|
||||||
|
|
||||||
|
return output_line
|
||||||
|
|
||||||
|
# catch error responses
|
||||||
|
err = _error_type(line)
|
||||||
|
if err:
|
||||||
|
output_line = {
|
||||||
|
'type': err
|
||||||
|
}
|
||||||
|
|
||||||
|
try:
|
||||||
|
output_line['bytes'] = line.split()[0]
|
||||||
|
output_line['destination_ip'] = s.destination_ip
|
||||||
|
output_line['response_ip'] = line.split()[4].strip(':').strip('(').strip(')')
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
|
return output_line
|
||||||
|
|
||||||
|
# normal response
|
||||||
|
elif ' bytes from ' in line:
|
||||||
|
line = line.replace(':', ' ').replace('=', ' ')
|
||||||
|
|
||||||
|
output_line = {
|
||||||
|
'type': 'reply',
|
||||||
|
'destination_ip': s.destination_ip or None,
|
||||||
|
'sent_bytes': s.sent_bytes or None,
|
||||||
|
'pattern': s.pattern or None,
|
||||||
|
'response_bytes': line.split()[0],
|
||||||
|
'response_ip': line.split()[3],
|
||||||
|
'icmp_seq': line.split()[5],
|
||||||
|
'ttl': line.split()[7],
|
||||||
|
'time_ms': line.split()[9]
|
||||||
|
}
|
||||||
|
|
||||||
|
return output_line
|
||||||
|
|
||||||
|
# ipv6 lines
|
||||||
|
elif ' bytes from ' in line:
|
||||||
|
line = line.replace(',', ' ').replace('=', ' ')
|
||||||
|
|
||||||
|
output_line = {
|
||||||
|
'type': 'reply',
|
||||||
|
'destination_ip': s.destination_ip or None,
|
||||||
|
'sent_bytes': s.sent_bytes or None,
|
||||||
|
'pattern': s.pattern or None,
|
||||||
|
'bytes': line.split()[0],
|
||||||
|
'response_ip': line.split()[3],
|
||||||
|
'icmp_seq': line.split()[5],
|
||||||
|
'ttl': line.split()[7],
|
||||||
|
'time_ms': line.split()[9]
|
||||||
|
}
|
||||||
|
|
||||||
|
return output_line
|
||||||
|
|
||||||
|
|
||||||
|
def _linux_parse(line, s):
|
||||||
|
"""
|
||||||
|
Linux ping line parsing function.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
|
||||||
|
line: (string) line of text data to parse
|
||||||
|
s: (state object) global state
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
Dictionary. Raw structured data.
|
||||||
|
"""
|
||||||
|
output_line = {}
|
||||||
|
|
||||||
|
if line.startswith('PING '):
|
||||||
|
s.ipv4 = True if 'bytes of data' in line else False
|
||||||
|
|
||||||
|
if s.ipv4 and line[5] not in string.digits:
|
||||||
|
s.hostname = True
|
||||||
|
elif s.ipv4 and line[5] in string.digits:
|
||||||
|
s.hostname = False
|
||||||
|
elif not s.ipv4 and ' (' in line:
|
||||||
|
s.hostname = True
|
||||||
|
else:
|
||||||
|
s.hostname = False
|
||||||
|
|
||||||
|
if s.ipv4 and not s.hostname:
|
||||||
|
dst_ip, dta_byts = (2, 3)
|
||||||
|
elif s.ipv4 and s.hostname:
|
||||||
|
dst_ip, dta_byts = (2, 3)
|
||||||
|
elif not s.ipv4 and not s.hostname:
|
||||||
|
dst_ip, dta_byts = (2, 3)
|
||||||
|
else:
|
||||||
|
dst_ip, dta_byts = (3, 4)
|
||||||
|
|
||||||
|
line = line.replace('(', ' ').replace(')', ' ')
|
||||||
|
s.destination_ip = line.split()[dst_ip].lstrip('(').rstrip(')')
|
||||||
|
s.sent_bytes = line.split()[dta_byts]
|
||||||
|
|
||||||
|
return None
|
||||||
|
|
||||||
|
if line.startswith('---'):
|
||||||
|
s.footer = True
|
||||||
|
return None
|
||||||
|
|
||||||
|
if s.footer:
|
||||||
|
if 'packets transmitted' in line:
|
||||||
|
if ' duplicates,' in line:
|
||||||
|
s.packets_transmitted = line.split()[0]
|
||||||
|
s.packets_received = line.split()[3]
|
||||||
|
s.packet_loss_percent = line.split()[7].rstrip('%')
|
||||||
|
s.duplicates = line.split()[5].lstrip('+')
|
||||||
|
s.time_ms = line.split()[11].replace('ms', '')
|
||||||
|
|
||||||
|
return None
|
||||||
|
|
||||||
|
else:
|
||||||
|
s.packets_transmitted = line.split()[0]
|
||||||
|
s.packets_received = line.split()[3]
|
||||||
|
s.packet_loss_percent = line.split()[5].rstrip('%')
|
||||||
|
s.duplicates = '0'
|
||||||
|
s.time_ms = line.split()[9].replace('ms', '')
|
||||||
|
|
||||||
|
return None
|
||||||
|
|
||||||
|
else:
|
||||||
|
split_line = line.split(' = ')[1]
|
||||||
|
split_line = split_line.split('/')
|
||||||
|
output_line = {
|
||||||
|
'type': 'summary',
|
||||||
|
'destination_ip': s.destination_ip or None,
|
||||||
|
'sent_bytes': s.sent_bytes or None,
|
||||||
|
'pattern': s.pattern or None,
|
||||||
|
'packets_transmitted': s.packets_transmitted or None,
|
||||||
|
'packets_received': s.packets_received or None,
|
||||||
|
'packet_loss_percent': s.packet_loss_percent or None,
|
||||||
|
'duplicates': s.duplicates or None,
|
||||||
|
'time_ms': s.time_ms or None,
|
||||||
|
'round_trip_ms_min': split_line[0],
|
||||||
|
'round_trip_ms_avg': split_line[1],
|
||||||
|
'round_trip_ms_max': split_line[2],
|
||||||
|
'round_trip_ms_stddev': split_line[3].split()[0]
|
||||||
|
}
|
||||||
|
|
||||||
|
return output_line
|
||||||
|
|
||||||
|
# ping response lines
|
||||||
|
else:
|
||||||
|
# request timeout
|
||||||
|
if 'no answer yet for icmp_seq=' in line:
|
||||||
|
timestamp = False
|
||||||
|
isequence = 5
|
||||||
|
|
||||||
|
# if timestamp option is specified, then shift icmp sequence field right by one
|
||||||
|
if line[0] == '[':
|
||||||
|
timestamp = True
|
||||||
|
isequence = 6
|
||||||
|
|
||||||
|
output_line = {
|
||||||
|
'type': 'timeout',
|
||||||
|
'destination_ip': s.destination_ip or None,
|
||||||
|
'sent_bytes': s.sent_bytes or None,
|
||||||
|
'pattern': s.pattern or None,
|
||||||
|
'timestamp': line.split()[0].lstrip('[').rstrip(']') if timestamp else None,
|
||||||
|
'icmp_seq': line.replace('=', ' ').split()[isequence]
|
||||||
|
}
|
||||||
|
|
||||||
|
return output_line
|
||||||
|
|
||||||
|
# normal responses
|
||||||
|
elif ' bytes from ' in line:
|
||||||
|
|
||||||
|
line = line.replace('(', ' ').replace(')', ' ').replace('=', ' ')
|
||||||
|
|
||||||
|
# positions of items depend on whether ipv4/ipv6 and/or ip/hostname is used
|
||||||
|
if s.ipv4 and not s.hostname:
|
||||||
|
bts, rip, iseq, t2l, tms = (0, 3, 5, 7, 9)
|
||||||
|
elif s.ipv4 and s.hostname:
|
||||||
|
bts, rip, iseq, t2l, tms = (0, 4, 7, 9, 11)
|
||||||
|
elif not s.ipv4 and not s.hostname:
|
||||||
|
bts, rip, iseq, t2l, tms = (0, 3, 5, 7, 9)
|
||||||
|
elif not s.ipv4 and s.hostname:
|
||||||
|
bts, rip, iseq, t2l, tms = (0, 4, 7, 9, 11)
|
||||||
|
|
||||||
|
# if timestamp option is specified, then shift everything right by one
|
||||||
|
timestamp = False
|
||||||
|
if line[0] == '[':
|
||||||
|
timestamp = True
|
||||||
|
bts, rip, iseq, t2l, tms = (bts + 1, rip + 1, iseq + 1, t2l + 1, tms + 1)
|
||||||
|
|
||||||
|
output_line = {
|
||||||
|
'type': 'reply',
|
||||||
|
'destination_ip': s.destination_ip or None,
|
||||||
|
'sent_bytes': s.sent_bytes or None,
|
||||||
|
'pattern': s.pattern or None,
|
||||||
|
'timestamp': line.split()[0].lstrip('[').rstrip(']') if timestamp else None,
|
||||||
|
'response_bytes': line.split()[bts],
|
||||||
|
'response_ip': line.split()[rip].rstrip(':'),
|
||||||
|
'icmp_seq': line.split()[iseq],
|
||||||
|
'ttl': line.split()[t2l],
|
||||||
|
'time_ms': line.split()[tms],
|
||||||
|
'duplicate': True if 'DUP!' in line else False
|
||||||
|
}
|
||||||
|
|
||||||
|
return output_line
|
||||||
|
|
||||||
|
|
||||||
|
def parse(data, raw=False, quiet=False):
|
||||||
|
"""
|
||||||
|
Main text parsing generator function. Returns an iterator object.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
|
||||||
|
data: (iterable) line-based text data to parse (e.g. sys.stdin or str.splitlines())
|
||||||
|
raw: (boolean) output preprocessed JSON if True
|
||||||
|
quiet: (boolean) suppress warning messages and ignore parsing exceptions if True
|
||||||
|
|
||||||
|
Yields:
|
||||||
|
|
||||||
|
Dictionary. Raw or processed structured data.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
Iterator object
|
||||||
|
"""
|
||||||
|
s = _state()
|
||||||
|
|
||||||
|
if not quiet:
|
||||||
|
jc.utils.compatibility(__name__, info.compatible)
|
||||||
|
|
||||||
|
for line in data:
|
||||||
|
|
||||||
|
output_line = {}
|
||||||
|
|
||||||
|
try:
|
||||||
|
# skip blank lines
|
||||||
|
if line.strip() == '':
|
||||||
|
continue
|
||||||
|
|
||||||
|
# skip warning lines
|
||||||
|
if line.startswith('WARNING: '):
|
||||||
|
continue
|
||||||
|
|
||||||
|
# check for PATTERN
|
||||||
|
if line.startswith('PATTERN: '):
|
||||||
|
s.pattern = line.strip().split(': ')[1]
|
||||||
|
continue
|
||||||
|
|
||||||
|
# detect Linux vs. BSD ping
|
||||||
|
if not s.os_detected and line.strip().endswith('bytes of data.'):
|
||||||
|
s.os_detected = True
|
||||||
|
s.linux = True
|
||||||
|
|
||||||
|
elif not s.os_detected and '-->' in line:
|
||||||
|
s.os_detected = True
|
||||||
|
s.bsd = True
|
||||||
|
|
||||||
|
elif not s.os_detected and _ipv6_in(line) and line.strip().endswith('data bytes'):
|
||||||
|
s.os_detected = True
|
||||||
|
s.linux = True
|
||||||
|
|
||||||
|
elif not s.os_detected and not _ipv6_in(line) and line.strip().endswith('data bytes'):
|
||||||
|
s.os_detected = True
|
||||||
|
s.bsd = True
|
||||||
|
|
||||||
|
# parse the data
|
||||||
|
if s.os_detected and s.linux:
|
||||||
|
output_line = _linux_parse(line, s)
|
||||||
|
|
||||||
|
elif s.os_detected and s.bsd:
|
||||||
|
output_line = _bsd_parse(line, s)
|
||||||
|
|
||||||
|
else:
|
||||||
|
raise ParseError('Could not detect ping OS')
|
||||||
|
|
||||||
|
# yield the output line if it has data
|
||||||
|
if output_line:
|
||||||
|
yield stream_success(output_line, quiet) if raw else stream_success(_process(output_line), quiet)
|
||||||
|
else:
|
||||||
|
continue
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
yield stream_error(e, quiet, line)
|
24
jc/utils.py
24
jc/utils.py
@ -173,6 +173,30 @@ def convert_to_bool(value):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
def stream_success(output_line, quiet):
|
||||||
|
"""add _meta object to output line if -q (quiet) option is used"""
|
||||||
|
if quiet:
|
||||||
|
output_line.update({'_meta': {'success': True}})
|
||||||
|
|
||||||
|
return output_line
|
||||||
|
|
||||||
|
|
||||||
|
def stream_error(e, quiet, line):
|
||||||
|
"""reraise the stream exception with annotation or print an error _meta field if quiet=True"""
|
||||||
|
if not quiet:
|
||||||
|
e.args = (str(e) + '... Use the quiet option (-q) to ignore streaming parser errors.',)
|
||||||
|
raise e
|
||||||
|
else:
|
||||||
|
return {
|
||||||
|
'_meta':
|
||||||
|
{
|
||||||
|
'success': False,
|
||||||
|
'error': f'{e}',
|
||||||
|
'line': line.strip()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class timestamp:
|
class timestamp:
|
||||||
"""
|
"""
|
||||||
Input a date-time text string of several formats and convert to a naive or timezone-aware epoch timestamp in UTC
|
Input a date-time text string of several formats and convert to a naive or timezone-aware epoch timestamp in UTC
|
||||||
|
86
man/jc.1
86
man/jc.1
@ -1,4 +1,4 @@
|
|||||||
.TH jc 1 2021-08-31 1.16.2 "JSON CLI output utility"
|
.TH jc 1 2021-09-21 1.17.0 "JSON CLI output utility"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
jc \- JSONifies the output of many CLI tools and file-types
|
jc \- JSONifies the output of many CLI tools and file-types
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
@ -202,6 +202,11 @@ Key/Value file parser
|
|||||||
\fB--ls\fP
|
\fB--ls\fP
|
||||||
`ls` command parser
|
`ls` command parser
|
||||||
|
|
||||||
|
.TP
|
||||||
|
.B
|
||||||
|
\fB--ls-s\fP
|
||||||
|
`ls` command streaming parser
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B
|
.B
|
||||||
\fB--lsblk\fP
|
\fB--lsblk\fP
|
||||||
@ -242,6 +247,11 @@ Key/Value file parser
|
|||||||
\fB--ping\fP
|
\fB--ping\fP
|
||||||
`ping` and `ping6` command parser
|
`ping` and `ping6` command parser
|
||||||
|
|
||||||
|
.TP
|
||||||
|
.B
|
||||||
|
\fB--ping-s\fP
|
||||||
|
`ping` and `ping6` command streaming parser
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B
|
.B
|
||||||
\fB--pip-list\fP
|
\fB--pip-list\fP
|
||||||
@ -424,6 +434,10 @@ quiet - suppress warnings
|
|||||||
raw JSON output
|
raw JSON output
|
||||||
.TP
|
.TP
|
||||||
.B
|
.B
|
||||||
|
\fB-u\fP
|
||||||
|
unbuffer output (useful for slow streaming data with streaming parsers)
|
||||||
|
.TP
|
||||||
|
.B
|
||||||
\fB-v\fP
|
\fB-v\fP
|
||||||
version information
|
version information
|
||||||
|
|
||||||
@ -459,6 +473,76 @@ or
|
|||||||
JC_COLORS=default,default,default,default
|
JC_COLORS=default,default,default,default
|
||||||
.RE
|
.RE
|
||||||
|
|
||||||
|
|
||||||
|
.SH STREAMING PARSERS
|
||||||
|
Most parsers load all of the data from \fBSTDIN\fP, parse it, then output the entire JSON document serially. There are some streaming parsers (e.g. \fBls-s\fP and \fBping-s\fP) that immediately start processing and outputing the data line-by-line as JSON Lines (aka NDJSON) while it is being received from \fBSTDIN\fP. This can significantly reduce the amount of memory required to parse large amounts of command output (e.g. \fBls -lR /\fP) and can sometimes process the data more quickly. Streaming parsers have slightly different behavior than standard parsers as outlined below.
|
||||||
|
|
||||||
|
.RS
|
||||||
|
Note: Streaming parsers cannot be used with the "magic" syntax
|
||||||
|
.RE
|
||||||
|
|
||||||
|
\fBIgnoring Errors\fP
|
||||||
|
|
||||||
|
You may want to ignore parsing errors when using streaming parsers since these may be used in long-lived processing pipelines and errors can break the pipe. To ignore parsing errors, use the \fB-q\fP cli option or the \fBquiet=True\fP argument with the \fBparse()\fP function. This will add a \fB_meta\fP object to the JSON output with a \fBsuccess\fP attribute. If \fBsuccess\fP is \fBtrue\fP, then there were no issues parsing the line. If \fBsuccess\fP is \fBfalse\fP, then a parsing issue was found and \fBerror\fP and \fBline\fP fields will be added to include a short error description and the contents of the unparsable line, respectively:
|
||||||
|
|
||||||
|
.RS
|
||||||
|
Successfully parsed line with \fB-q\fP option:
|
||||||
|
.RS
|
||||||
|
{
|
||||||
|
|
||||||
|
"command_data": "data",
|
||||||
|
|
||||||
|
"_meta": {
|
||||||
|
|
||||||
|
"success": true
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
.RE
|
||||||
|
|
||||||
|
Unsuccessfully parsed line with \fB-q\fP option:
|
||||||
|
.RS
|
||||||
|
{
|
||||||
|
|
||||||
|
"_meta": {
|
||||||
|
|
||||||
|
"success": false,
|
||||||
|
|
||||||
|
"error": "error parsing line",
|
||||||
|
|
||||||
|
"line": "original line data"
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
.RE
|
||||||
|
|
||||||
|
.RE
|
||||||
|
\fBUnbuffering Output\fP
|
||||||
|
|
||||||
|
Most operating systems will buffer output that is being piped from process to process. The buffer is usually around 4KB. When viewing the output in the terminal the OS buffer is not engaged so output is immediately displayed on the screen. When piping multiple processes together, though, it may seem as if the output is hanging when the input data is very slow (e.g. \fBping\fP):
|
||||||
|
|
||||||
|
.RS
|
||||||
|
$ ping 1.1.1.1 | jc --ping-s | jq
|
||||||
|
|
||||||
|
<slow output>
|
||||||
|
.RE
|
||||||
|
|
||||||
|
This is because the OS engages the 4KB buffer between \fBjc\fP and \fBjq\fP in this example. To display the data on the terminal in realtime, you can disable the buffer with the \fB-u\fP (unbuffer) cli option:
|
||||||
|
|
||||||
|
.RS
|
||||||
|
$ ping 1.1.1.1 | jc --ping-s -u | jq
|
||||||
|
|
||||||
|
{"type":"reply","pattern":null,"timestamp":null,"bytes":"64","response_ip":"1.1.1.1","icmp_seq":"1","ttl":"128","time_ms":"24.6","duplicate":false}
|
||||||
|
|
||||||
|
{"type":"reply","pattern":null,"timestamp":null,"bytes":"64","response_ip":"1.1.1.1","icmp_seq":"2","ttl":"128","time_ms":"26.8","duplicate":false}
|
||||||
|
|
||||||
|
etc...
|
||||||
|
|
||||||
|
Note: Unbuffered output can be slower for faster data streams.
|
||||||
|
.RE
|
||||||
|
|
||||||
.SH CUSTOM PARSERS
|
.SH CUSTOM PARSERS
|
||||||
Custom local parser plugins may be placed in a \fBjc/jcparsers\fP folder in your local "App data directory":
|
Custom local parser plugins may be placed in a \fBjc/jcparsers\fP folder in your local "App data directory":
|
||||||
|
|
||||||
|
BIN
man/jc.1.gz
BIN
man/jc.1.gz
Binary file not shown.
@ -15,11 +15,3 @@ output = template.render(today=date.today(),
|
|||||||
|
|
||||||
with open('man/jc.1', 'w') as f:
|
with open('man/jc.1', 'w') as f:
|
||||||
f.write(output)
|
f.write(output)
|
||||||
|
|
||||||
with open('man/jc.1', 'rb') as f_in:
|
|
||||||
with gzip.open('man/jc.1.gz', 'wb') as f_out:
|
|
||||||
shutil.copyfileobj(f_in, f_out)
|
|
||||||
|
|
||||||
shutil.copyfile('man/jc.1.gz', 'jc/man/jc.1.gz')
|
|
||||||
|
|
||||||
# os.remove('man/jc.1')
|
|
||||||
|
2
setup.py
2
setup.py
@ -5,7 +5,7 @@ with open('README.md', 'r') as f:
|
|||||||
|
|
||||||
setuptools.setup(
|
setuptools.setup(
|
||||||
name='jc',
|
name='jc',
|
||||||
version='1.16.2',
|
version='1.17.0',
|
||||||
author='Kelly Brazil',
|
author='Kelly Brazil',
|
||||||
author_email='kellyjonbrazil@gmail.com',
|
author_email='kellyjonbrazil@gmail.com',
|
||||||
description='Converts the output of popular command-line tools and file-types to JSON.',
|
description='Converts the output of popular command-line tools and file-types to JSON.',
|
||||||
|
@ -59,6 +59,10 @@ quiet - suppress warnings
|
|||||||
raw JSON output
|
raw JSON output
|
||||||
.TP
|
.TP
|
||||||
.B
|
.B
|
||||||
|
\fB-u\fP
|
||||||
|
unbuffer output (useful for slow streaming data with streaming parsers)
|
||||||
|
.TP
|
||||||
|
.B
|
||||||
\fB-v\fP
|
\fB-v\fP
|
||||||
version information
|
version information
|
||||||
|
|
||||||
@ -94,6 +98,76 @@ or
|
|||||||
JC_COLORS=default,default,default,default
|
JC_COLORS=default,default,default,default
|
||||||
.RE
|
.RE
|
||||||
|
|
||||||
|
|
||||||
|
.SH STREAMING PARSERS
|
||||||
|
Most parsers load all of the data from \fBSTDIN\fP, parse it, then output the entire JSON document serially. There are some streaming parsers (e.g. \fBls-s\fP and \fBping-s\fP) that immediately start processing and outputing the data line-by-line as JSON Lines (aka NDJSON) while it is being received from \fBSTDIN\fP. This can significantly reduce the amount of memory required to parse large amounts of command output (e.g. \fBls -lR /\fP) and can sometimes process the data more quickly. Streaming parsers have slightly different behavior than standard parsers as outlined below.
|
||||||
|
|
||||||
|
.RS
|
||||||
|
Note: Streaming parsers cannot be used with the "magic" syntax
|
||||||
|
.RE
|
||||||
|
|
||||||
|
\fBIgnoring Errors\fP
|
||||||
|
|
||||||
|
You may want to ignore parsing errors when using streaming parsers since these may be used in long-lived processing pipelines and errors can break the pipe. To ignore parsing errors, use the \fB-q\fP cli option or the \fBquiet=True\fP argument with the \fBparse()\fP function. This will add a \fB_meta\fP object to the JSON output with a \fBsuccess\fP attribute. If \fBsuccess\fP is \fBtrue\fP, then there were no issues parsing the line. If \fBsuccess\fP is \fBfalse\fP, then a parsing issue was found and \fBerror\fP and \fBline\fP fields will be added to include a short error description and the contents of the unparsable line, respectively:
|
||||||
|
|
||||||
|
.RS
|
||||||
|
Successfully parsed line with \fB-q\fP option:
|
||||||
|
.RS
|
||||||
|
{
|
||||||
|
|
||||||
|
"command_data": "data",
|
||||||
|
|
||||||
|
"_meta": {
|
||||||
|
|
||||||
|
"success": true
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
.RE
|
||||||
|
|
||||||
|
Unsuccessfully parsed line with \fB-q\fP option:
|
||||||
|
.RS
|
||||||
|
{
|
||||||
|
|
||||||
|
"_meta": {
|
||||||
|
|
||||||
|
"success": false,
|
||||||
|
|
||||||
|
"error": "error parsing line",
|
||||||
|
|
||||||
|
"line": "original line data"
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
.RE
|
||||||
|
|
||||||
|
.RE
|
||||||
|
\fBUnbuffering Output\fP
|
||||||
|
|
||||||
|
Most operating systems will buffer output that is being piped from process to process. The buffer is usually around 4KB. When viewing the output in the terminal the OS buffer is not engaged so output is immediately displayed on the screen. When piping multiple processes together, though, it may seem as if the output is hanging when the input data is very slow (e.g. \fBping\fP):
|
||||||
|
|
||||||
|
.RS
|
||||||
|
$ ping 1.1.1.1 | jc --ping-s | jq
|
||||||
|
|
||||||
|
<slow output>
|
||||||
|
.RE
|
||||||
|
|
||||||
|
This is because the OS engages the 4KB buffer between \fBjc\fP and \fBjq\fP in this example. To display the data on the terminal in realtime, you can disable the buffer with the \fB-u\fP (unbuffer) cli option:
|
||||||
|
|
||||||
|
.RS
|
||||||
|
$ ping 1.1.1.1 | jc --ping-s -u | jq
|
||||||
|
|
||||||
|
{"type":"reply","pattern":null,"timestamp":null,"bytes":"64","response_ip":"1.1.1.1","icmp_seq":"1","ttl":"128","time_ms":"24.6","duplicate":false}
|
||||||
|
|
||||||
|
{"type":"reply","pattern":null,"timestamp":null,"bytes":"64","response_ip":"1.1.1.1","icmp_seq":"2","ttl":"128","time_ms":"26.8","duplicate":false}
|
||||||
|
|
||||||
|
etc...
|
||||||
|
|
||||||
|
Note: Unbuffered output can be slower for faster data streams.
|
||||||
|
.RE
|
||||||
|
|
||||||
.SH CUSTOM PARSERS
|
.SH CUSTOM PARSERS
|
||||||
Custom local parser plugins may be placed in a \fBjc/jcparsers\fP folder in your local "App data directory":
|
Custom local parser plugins may be placed in a \fBjc/jcparsers\fP folder in your local "App data directory":
|
||||||
|
|
||||||
|
@ -60,6 +60,8 @@ See also:
|
|||||||
- [libxo on FreeBSD](http://juniper.github.io/libxo/libxo-manual.html)
|
- [libxo on FreeBSD](http://juniper.github.io/libxo/libxo-manual.html)
|
||||||
- [powershell](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/convertto-json?view=powershell-7)
|
- [powershell](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/convertto-json?view=powershell-7)
|
||||||
- [blog: linux apps should have a json flag](https://thomashunter.name/posts/2012-06-06-linux-cli-apps-should-have-a-json-flag)
|
- [blog: linux apps should have a json flag](https://thomashunter.name/posts/2012-06-06-linux-cli-apps-should-have-a-json-flag)
|
||||||
|
- [Hacker News discussion](https://news.ycombinator.com/item?id=28266193)
|
||||||
|
- [Reddit discussion](https://www.reddit.com/r/programming/comments/pa4cbb/bringing_the_unix_philosophy_to_the_21st_century/)
|
||||||
|
|
||||||
Use Cases:
|
Use Cases:
|
||||||
- [Bash scripting](https://blog.kellybrazil.com/2021/04/12/practical-json-at-the-command-line/)
|
- [Bash scripting](https://blog.kellybrazil.com/2021/04/12/practical-json-at-the-command-line/)
|
||||||
@ -109,11 +111,12 @@ The JSON output can be compact (default) or pretty formatted with the `-p` optio
|
|||||||
### Options
|
### Options
|
||||||
- `-a` about `jc`. Prints information about `jc` and the parsers (in JSON, of course!)
|
- `-a` about `jc`. Prints information about `jc` and the parsers (in JSON, of course!)
|
||||||
- `-d` debug mode. Prints trace messages if parsing issues are encountered (use `-dd` for verbose debugging)
|
- `-d` debug mode. Prints trace messages if parsing issues are encountered (use `-dd` for verbose debugging)
|
||||||
- `-h` `jc` help. Use `jc -h --parser_name` for parser documentation
|
- `-h` help. Use `jc -h --parser_name` for parser documentation
|
||||||
- `-m` monochrome JSON output
|
- `-m` monochrome JSON output
|
||||||
- `-p` pretty format the JSON output
|
- `-p` pretty format the JSON output
|
||||||
- `-q` quiet mode. Suppresses parser warning messages
|
- `-q` quiet mode. Suppresses parser warning messages
|
||||||
- `-r` raw output. Provides a more literal JSON output, typically with string values and no additional semantic processing
|
- `-r` raw output. Provides a more literal JSON output, typically with string values and no additional semantic processing
|
||||||
|
- `-u` unbuffer output
|
||||||
- `-v` version information
|
- `-v` version information
|
||||||
|
|
||||||
### Exit Codes
|
### Exit Codes
|
||||||
@ -145,6 +148,51 @@ or
|
|||||||
JC_COLORS=default,default,default,default
|
JC_COLORS=default,default,default,default
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Streaming Parsers
|
||||||
|
Most parsers load all of the data from STDIN, parse it, then output the entire JSON document serially. There are some streaming parsers (e.g. `ls-s` and `ping-s`) that immediately start processing and outputing the data line-by-line as [JSON Lines](https://jsonlines.org/) (aka [NDJSON](http://ndjson.org/)) while it is being received from STDIN. This can significantly reduce the amount of memory required to parse large amounts of command output (e.g. `ls -lR /`) and can sometimes process the data more quickly. Streaming parsers have slightly different behavior than standard parsers as outlined below.
|
||||||
|
|
||||||
|
> Note: Streaming parsers cannot be used with the "magic" syntax
|
||||||
|
|
||||||
|
**Ignoring Errors**
|
||||||
|
|
||||||
|
You may want to ignore parsing errors when using streaming parsers since these may be used in long-lived processing pipelines and errors can break the pipe. To ignore parsing errors, use the `-q` cli option or the `quiet=True` argument with the `parse()` function. This will add a `_meta` object to the JSON output with a `success` attribute. If `success` is `true`, then there were no issues parsing the line. If `success` is `false`, then a parsing issue was found and `error` and `line` fields will be added to include a short error description and the contents of the unparsable line, respectively:
|
||||||
|
|
||||||
|
Successfully parsed line with `-q` option:
|
||||||
|
```
|
||||||
|
{
|
||||||
|
"command_data": "data",
|
||||||
|
"_meta": {
|
||||||
|
"success": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
Unsuccessfully parsed line with `-q` option:
|
||||||
|
```
|
||||||
|
{
|
||||||
|
"_meta": {
|
||||||
|
"success": false,
|
||||||
|
"error": "error parsing line",
|
||||||
|
"line": "original line data"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Unbuffering Output**
|
||||||
|
|
||||||
|
Most operating systems will buffer output that is being piped from process to process. The buffer is usually around 4KB. When viewing the output in the terminal the OS buffer is not engaged so output is immediately displayed on the screen. When piping multiple processes together, though, it may seem as if the output is hanging when the input data is very slow (e.g. `ping`):
|
||||||
|
```
|
||||||
|
$ ping 1.1.1.1 | jc --ping-s | jq
|
||||||
|
<slow output>
|
||||||
|
```
|
||||||
|
This is because the OS engages the 4KB buffer between `jc` and `jq` in this example. To display the data on the terminal in realtime, you can disable the buffer with the `-u` (unbuffer) cli option:
|
||||||
|
```
|
||||||
|
$ ping 1.1.1.1 | jc --ping-s -u | jq
|
||||||
|
{"type":"reply","pattern":null,"timestamp":null,"bytes":"64","response_ip":"1.1.1.1","icmp_seq":"1","ttl":"128","time_ms":"24.6","duplicate":false}
|
||||||
|
{"type":"reply","pattern":null,"timestamp":null,"bytes":"64","response_ip":"1.1.1.1","icmp_seq":"2","ttl":"128","time_ms":"26.8","duplicate":false}
|
||||||
|
...
|
||||||
|
```
|
||||||
|
> Note: Unbuffered output can be slower for faster data streams.
|
||||||
|
|
||||||
### Custom Parsers
|
### Custom Parsers
|
||||||
Custom local parser plugins may be placed in a `jc/jcparsers` folder in your local **"App data directory"**:
|
Custom local parser plugins may be placed in a `jc/jcparsers` folder in your local **"App data directory"**:
|
||||||
|
|
||||||
|
1
tests/fixtures/centos-7.7/ls-al-streaming.json
vendored
Normal file
1
tests/fixtures/centos-7.7/ls-al-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"filename":".","flags":"dr-xr-xr-x.","links":17,"owner":"root","group":"root","size":224,"date":"Aug 15 10:56"},{"filename":"..","flags":"dr-xr-xr-x.","links":17,"owner":"root","group":"root","size":224,"date":"Aug 15 10:56"},{"filename":"bin","link_to":"usr/bin","flags":"lrwxrwxrwx.","links":1,"owner":"root","group":"root","size":7,"date":"Aug 15 10:53"},{"filename":"boot","flags":"dr-xr-xr-x.","links":5,"owner":"root","group":"root","size":4096,"date":"Oct 21 13:18"},{"filename":"dev","flags":"drwxr-xr-x.","links":20,"owner":"root","group":"root","size":3180,"date":"Oct 25 18:21"},{"filename":"etc","flags":"drwxr-xr-x.","links":78,"owner":"root","group":"root","size":8192,"date":"Oct 25 18:47"},{"filename":"home","flags":"drwxr-xr-x.","links":3,"owner":"root","group":"root","size":21,"date":"Aug 15 10:56"},{"filename":"lib","link_to":"usr/lib","flags":"lrwxrwxrwx.","links":1,"owner":"root","group":"root","size":7,"date":"Aug 15 10:53"},{"filename":"lib64","link_to":"usr/lib64","flags":"lrwxrwxrwx.","links":1,"owner":"root","group":"root","size":9,"date":"Aug 15 10:53"},{"filename":"media","flags":"drwxr-xr-x.","links":2,"owner":"root","group":"root","size":6,"date":"Apr 10 2018"},{"filename":"mnt","flags":"drwxr-xr-x.","links":2,"owner":"root","group":"root","size":6,"date":"Apr 10 2018"},{"filename":"opt","flags":"drwxr-xr-x.","links":2,"owner":"root","group":"root","size":6,"date":"Apr 10 2018"},{"filename":"proc","flags":"dr-xr-xr-x.","links":121,"owner":"root","group":"root","size":0,"date":"Oct 25 18:21"},{"filename":"root","flags":"dr-xr-x---.","links":3,"owner":"root","group":"root","size":170,"date":"Oct 15 11:11"},{"filename":"run","flags":"drwxr-xr-x.","links":26,"owner":"root","group":"root","size":800,"date":"Oct 25 18:47"},{"filename":"sbin","link_to":"usr/sbin","flags":"lrwxrwxrwx.","links":1,"owner":"root","group":"root","size":8,"date":"Aug 15 10:53"},{"filename":"srv","flags":"drwxr-xr-x.","links":2,"owner":"root","group":"root","size":6,"date":"Apr 10 2018"},{"filename":"sys","flags":"dr-xr-xr-x.","links":13,"owner":"root","group":"root","size":0,"date":"Oct 25 18:21"},{"filename":"tmp","flags":"drwxrwxrwt.","links":19,"owner":"root","group":"root","size":4096,"date":"Oct 26 10:14"},{"filename":"usr","flags":"drwxr-xr-x.","links":13,"owner":"root","group":"root","size":155,"date":"Aug 15 10:53"},{"filename":"var","flags":"drwxr-xr-x.","links":19,"owner":"root","group":"root","size":267,"date":"Aug 15 10:57"}]
|
1
tests/fixtures/centos-7.7/ls-alR-streaming.json
vendored
Normal file
1
tests/fixtures/centos-7.7/ls-alR-streaming.json
vendored
Normal file
File diff suppressed because one or more lines are too long
1
tests/fixtures/centos-7.7/ls-alh-streaming.json
vendored
Normal file
1
tests/fixtures/centos-7.7/ls-alh-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"filename":".","flags":"dr-xr-xr-x.","links":17,"owner":"root","group":"root","size":224,"date":"Aug 15 10:56"},{"filename":"..","flags":"dr-xr-xr-x.","links":17,"owner":"root","group":"root","size":224,"date":"Aug 15 10:56"},{"filename":"bin","link_to":"usr/bin","flags":"lrwxrwxrwx.","links":1,"owner":"root","group":"root","size":7,"date":"Aug 15 10:53"},{"filename":"boot","flags":"dr-xr-xr-x.","links":5,"owner":"root","group":"root","size":4,"date":"Oct 21 13:18"},{"filename":"dev","flags":"drwxr-xr-x.","links":20,"owner":"root","group":"root","size":3,"date":"Oct 25 18:21"},{"filename":"etc","flags":"drwxr-xr-x.","links":78,"owner":"root","group":"root","size":8,"date":"Oct 25 18:47"},{"filename":"home","flags":"drwxr-xr-x.","links":3,"owner":"root","group":"root","size":21,"date":"Aug 15 10:56"},{"filename":"lib","link_to":"usr/lib","flags":"lrwxrwxrwx.","links":1,"owner":"root","group":"root","size":7,"date":"Aug 15 10:53"},{"filename":"lib64","link_to":"usr/lib64","flags":"lrwxrwxrwx.","links":1,"owner":"root","group":"root","size":9,"date":"Aug 15 10:53"},{"filename":"media","flags":"drwxr-xr-x.","links":2,"owner":"root","group":"root","size":6,"date":"Apr 10 2018"},{"filename":"mnt","flags":"drwxr-xr-x.","links":2,"owner":"root","group":"root","size":6,"date":"Apr 10 2018"},{"filename":"opt","flags":"drwxr-xr-x.","links":2,"owner":"root","group":"root","size":6,"date":"Apr 10 2018"},{"filename":"proc","flags":"dr-xr-xr-x.","links":121,"owner":"root","group":"root","size":0,"date":"Oct 25 18:21"},{"filename":"root","flags":"dr-xr-x---.","links":3,"owner":"root","group":"root","size":170,"date":"Oct 15 11:11"},{"filename":"run","flags":"drwxr-xr-x.","links":26,"owner":"root","group":"root","size":800,"date":"Oct 25 18:47"},{"filename":"sbin","link_to":"usr/sbin","flags":"lrwxrwxrwx.","links":1,"owner":"root","group":"root","size":8,"date":"Aug 15 10:53"},{"filename":"srv","flags":"drwxr-xr-x.","links":2,"owner":"root","group":"root","size":6,"date":"Apr 10 2018"},{"filename":"sys","flags":"dr-xr-xr-x.","links":13,"owner":"root","group":"root","size":0,"date":"Oct 25 18:21"},{"filename":"tmp","flags":"drwxrwxrwt.","links":19,"owner":"root","group":"root","size":4,"date":"Oct 26 10:14"},{"filename":"usr","flags":"drwxr-xr-x.","links":13,"owner":"root","group":"root","size":155,"date":"Aug 15 10:53"},{"filename":"var","flags":"drwxr-xr-x.","links":19,"owner":"root","group":"root","size":267,"date":"Aug 15 10:57"}]
|
1
tests/fixtures/centos-7.7/ping-hostname-O-D-p-s-streaming.json
vendored
Normal file
1
tests/fixtures/centos-7.7/ping-hostname-O-D-p-s-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1594978465.914536,"response_bytes":1408,"response_ip":"151.101.189.67","icmp_seq":1,"ttl":59,"time_ms":31.4,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1594978465.993009,"response_bytes":1408,"response_ip":"151.101.189.67","icmp_seq":2,"ttl":59,"time_ms":30.3,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1594978467.010196,"response_bytes":1408,"response_ip":"151.101.189.67","icmp_seq":3,"ttl":59,"time_ms":32.0,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1594978468.033743,"response_bytes":1408,"response_ip":"151.101.189.67","icmp_seq":4,"ttl":59,"time_ms":38.8,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1594978469.051227,"response_bytes":1408,"response_ip":"151.101.189.67","icmp_seq":5,"ttl":59,"time_ms":38.0,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1594978470.048764,"response_bytes":1408,"response_ip":"151.101.189.67","icmp_seq":6,"ttl":59,"time_ms":29.9,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1594978471.051945,"response_bytes":1408,"response_ip":"151.101.189.67","icmp_seq":7,"ttl":59,"time_ms":28.9,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1594978472.064206,"response_bytes":1408,"response_ip":"151.101.189.67","icmp_seq":8,"ttl":59,"time_ms":37.4,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1594978473.062587,"response_bytes":1408,"response_ip":"151.101.189.67","icmp_seq":9,"ttl":59,"time_ms":31.5,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1594978474.074343,"response_bytes":1408,"response_ip":"151.101.189.67","icmp_seq":10,"ttl":59,"time_ms":38.3,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1594978475.079703,"response_bytes":1408,"response_ip":"151.101.189.67","icmp_seq":11,"ttl":59,"time_ms":38.8,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1594978476.076383,"response_bytes":1408,"response_ip":"151.101.189.67","icmp_seq":12,"ttl":59,"time_ms":30.7,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1594978477.084119,"response_bytes":1408,"response_ip":"151.101.189.67","icmp_seq":13,"ttl":59,"time_ms":30.7,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1594978478.092207,"response_bytes":1408,"response_ip":"151.101.189.67","icmp_seq":14,"ttl":59,"time_ms":31.6,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1594978479.104358,"response_bytes":1408,"response_ip":"151.101.189.67","icmp_seq":15,"ttl":59,"time_ms":37.7,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1594978480.106907,"response_bytes":1408,"response_ip":"151.101.189.67","icmp_seq":16,"ttl":59,"time_ms":37.5,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1594978481.11558,"response_bytes":1408,"response_ip":"151.101.189.67","icmp_seq":17,"ttl":59,"time_ms":37.3,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1594978482.119872,"response_bytes":1408,"response_ip":"151.101.189.67","icmp_seq":18,"ttl":59,"time_ms":33.8,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1594978483.131901,"response_bytes":1408,"response_ip":"151.101.189.67","icmp_seq":19,"ttl":59,"time_ms":37.0,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1594978484.141117,"response_bytes":1408,"response_ip":"151.101.189.67","icmp_seq":20,"ttl":59,"time_ms":36.9,"duplicate":false},{"type":"summary","destination_ip":"151.101.189.67","sent_bytes":1400,"pattern":"0xabcd","packets_transmitted":20,"packets_received":20,"packet_loss_percent":0.0,"duplicates":0,"time_ms":19146.0,"round_trip_ms_min":28.96,"round_trip_ms_avg":34.468,"round_trip_ms_max":38.892,"round_trip_ms_stddev":3.497}]
|
1
tests/fixtures/centos-7.7/ping-hostname-O-p-streaming.json
vendored
Normal file
1
tests/fixtures/centos-7.7/ping-hostname-O-p-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.129.67","icmp_seq":1,"ttl":59,"time_ms":24.4,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.129.67","icmp_seq":2,"ttl":59,"time_ms":23.3,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.129.67","icmp_seq":3,"ttl":59,"time_ms":32.6,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.129.67","icmp_seq":4,"ttl":59,"time_ms":32.6,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.129.67","icmp_seq":5,"ttl":59,"time_ms":26.9,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.129.67","icmp_seq":6,"ttl":59,"time_ms":24.1,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.129.67","icmp_seq":7,"ttl":59,"time_ms":24.6,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.129.67","icmp_seq":8,"ttl":59,"time_ms":33.9,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.129.67","icmp_seq":9,"ttl":59,"time_ms":32.7,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.129.67","icmp_seq":10,"ttl":59,"time_ms":31.2,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.129.67","icmp_seq":11,"ttl":59,"time_ms":25.7,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.129.67","icmp_seq":12,"ttl":59,"time_ms":33.8,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.129.67","icmp_seq":13,"ttl":59,"time_ms":23.7,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.129.67","icmp_seq":14,"ttl":59,"time_ms":23.9,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.129.67","icmp_seq":15,"ttl":59,"time_ms":33.6,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.129.67","icmp_seq":16,"ttl":59,"time_ms":24.5,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.129.67","icmp_seq":17,"ttl":59,"time_ms":30.1,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.129.67","icmp_seq":18,"ttl":59,"time_ms":24.1,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.129.67","icmp_seq":19,"ttl":59,"time_ms":32.2,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.129.67","icmp_seq":20,"ttl":59,"time_ms":31.0,"duplicate":false},{"type":"summary","destination_ip":"151.101.129.67","sent_bytes":56,"pattern":"0xabcd","packets_transmitted":20,"packets_received":20,"packet_loss_percent":0.0,"duplicates":0,"time_ms":19233.0,"round_trip_ms_min":23.359,"round_trip_ms_avg":28.495,"round_trip_ms_max":33.979,"round_trip_ms_stddev":4.081}]
|
1
tests/fixtures/centos-7.7/ping-hostname-O-streaming.json
vendored
Normal file
1
tests/fixtures/centos-7.7/ping-hostname-O-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":1,"ttl":59,"time_ms":29.6,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":2,"ttl":59,"time_ms":30.1,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":3,"ttl":59,"time_ms":35.5,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":4,"ttl":59,"time_ms":35.5,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":5,"ttl":59,"time_ms":34.9,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":6,"ttl":59,"time_ms":29.9,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":7,"ttl":59,"time_ms":27.6,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":8,"ttl":59,"time_ms":28.6,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":9,"ttl":59,"time_ms":35.2,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":10,"ttl":59,"time_ms":34.4,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":11,"ttl":59,"time_ms":35.9,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":12,"ttl":59,"time_ms":35.8,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":13,"ttl":59,"time_ms":34.4,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":14,"ttl":59,"time_ms":35.5,"duplicate":false},{"type":"timeout","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":null,"timestamp":null,"icmp_seq":15},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":16,"ttl":59,"time_ms":36.6,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":17,"ttl":59,"time_ms":34.6,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":18,"ttl":59,"time_ms":34.6,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":19,"ttl":59,"time_ms":36.7,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":20,"ttl":59,"time_ms":34.3,"duplicate":false},{"type":"summary","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":null,"packets_transmitted":20,"packets_received":19,"packet_loss_percent":5.0,"duplicates":0,"time_ms":19125.0,"round_trip_ms_min":27.656,"round_trip_ms_avg":33.717,"round_trip_ms_max":36.758,"round_trip_ms_stddev":2.814}]
|
1
tests/fixtures/centos-7.7/ping-ip-O-D-streaming.json
vendored
Normal file
1
tests/fixtures/centos-7.7/ping-ip-O-D-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595037214.261953,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":1,"ttl":64,"time_ms":0.041,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595037215.264798,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":2,"ttl":64,"time_ms":0.048,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595037216.272296,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":3,"ttl":64,"time_ms":0.047,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595037217.275851,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":4,"ttl":64,"time_ms":0.062,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595037218.284242,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":5,"ttl":64,"time_ms":0.045,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595037219.283712,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":6,"ttl":64,"time_ms":0.043,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595037220.290949,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":7,"ttl":64,"time_ms":0.046,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595037221.295962,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":8,"ttl":64,"time_ms":0.044,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595037222.30702,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":9,"ttl":64,"time_ms":0.048,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595037223.313919,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":10,"ttl":64,"time_ms":0.081,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595037224.313679,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":11,"ttl":64,"time_ms":0.043,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595037225.320748,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":12,"ttl":64,"time_ms":0.044,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595037226.324322,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":13,"ttl":64,"time_ms":0.045,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595037227.325835,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":14,"ttl":64,"time_ms":0.046,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595037228.327028,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":15,"ttl":64,"time_ms":0.046,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595037229.329891,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":16,"ttl":64,"time_ms":0.052,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595037230.333891,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":17,"ttl":64,"time_ms":0.044,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595037231.338137,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":18,"ttl":64,"time_ms":0.046,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595037232.340475,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":19,"ttl":64,"time_ms":0.048,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595037233.343058,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":20,"ttl":64,"time_ms":0.045,"duplicate":false},{"type":"summary","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"packets_transmitted":20,"packets_received":20,"packet_loss_percent":0.0,"duplicates":0,"time_ms":19081.0,"round_trip_ms_min":0.041,"round_trip_ms_avg":0.048,"round_trip_ms_max":0.081,"round_trip_ms_stddev":0.009}]
|
1
tests/fixtures/centos-7.7/ping-ip-O-streaming-quiet.json
vendored
Normal file
1
tests/fixtures/centos-7.7/ping-ip-O-streaming-quiet.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":1,"ttl":64,"time_ms":0.038,"duplicate":false,"_meta":{"success":true}},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":2,"ttl":64,"time_ms":0.043,"duplicate":false,"_meta":{"success":true}},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":3,"ttl":64,"time_ms":0.044,"duplicate":false,"_meta":{"success":true}},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":4,"ttl":64,"time_ms":0.052,"duplicate":false,"_meta":{"success":true}},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":5,"ttl":64,"time_ms":0.08,"duplicate":false,"_meta":{"success":true}},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":6,"ttl":64,"time_ms":0.043,"duplicate":false,"_meta":{"success":true}},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":7,"ttl":64,"time_ms":0.047,"duplicate":false,"_meta":{"success":true}},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":8,"ttl":64,"time_ms":0.04,"duplicate":false,"_meta":{"success":true}},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":9,"ttl":64,"time_ms":0.052,"duplicate":false,"_meta":{"success":true}},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":10,"ttl":64,"time_ms":0.044,"duplicate":false,"_meta":{"success":true}},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":11,"ttl":64,"time_ms":0.043,"duplicate":false,"_meta":{"success":true}},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":12,"ttl":64,"time_ms":0.043,"duplicate":false,"_meta":{"success":true}},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":13,"ttl":64,"time_ms":0.05,"duplicate":false,"_meta":{"success":true}},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":14,"ttl":64,"time_ms":0.045,"duplicate":false,"_meta":{"success":true}},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":15,"ttl":64,"time_ms":0.062,"duplicate":false,"_meta":{"success":true}},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":16,"ttl":64,"time_ms":0.046,"duplicate":false,"_meta":{"success":true}},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":17,"ttl":64,"time_ms":0.046,"duplicate":false,"_meta":{"success":true}},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":18,"ttl":64,"time_ms":0.045,"duplicate":false,"_meta":{"success":true}},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":19,"ttl":64,"time_ms":0.044,"duplicate":false,"_meta":{"success":true}},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":20,"ttl":64,"time_ms":0.044,"duplicate":false,"_meta":{"success":true}},{"type":"summary","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"packets_transmitted":20,"packets_received":20,"packet_loss_percent":0.0,"duplicates":0,"time_ms":19070.0,"round_trip_ms_min":0.038,"round_trip_ms_avg":0.047,"round_trip_ms_max":0.08,"round_trip_ms_stddev":0.011,"_meta":{"success":true}}]
|
1
tests/fixtures/centos-7.7/ping-ip-O-streaming.json
vendored
Normal file
1
tests/fixtures/centos-7.7/ping-ip-O-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":1,"ttl":64,"time_ms":0.038,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":2,"ttl":64,"time_ms":0.043,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":3,"ttl":64,"time_ms":0.044,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":4,"ttl":64,"time_ms":0.052,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":5,"ttl":64,"time_ms":0.08,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":6,"ttl":64,"time_ms":0.043,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":7,"ttl":64,"time_ms":0.047,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":8,"ttl":64,"time_ms":0.04,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":9,"ttl":64,"time_ms":0.052,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":10,"ttl":64,"time_ms":0.044,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":11,"ttl":64,"time_ms":0.043,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":12,"ttl":64,"time_ms":0.043,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":13,"ttl":64,"time_ms":0.05,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":14,"ttl":64,"time_ms":0.045,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":15,"ttl":64,"time_ms":0.062,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":16,"ttl":64,"time_ms":0.046,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":17,"ttl":64,"time_ms":0.046,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":18,"ttl":64,"time_ms":0.045,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":19,"ttl":64,"time_ms":0.044,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":20,"ttl":64,"time_ms":0.044,"duplicate":false},{"type":"summary","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"packets_transmitted":20,"packets_received":20,"packet_loss_percent":0.0,"duplicates":0,"time_ms":19070.0,"round_trip_ms_min":0.038,"round_trip_ms_avg":0.047,"round_trip_ms_max":0.08,"round_trip_ms_stddev":0.011}]
|
1
tests/fixtures/centos-7.7/ping-ip-dup-streaming.json
vendored
Normal file
1
tests/fixtures/centos-7.7/ping-ip-dup-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"192.168.1.255","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"192.168.1.221","icmp_seq":1,"ttl":64,"time_ms":0.586,"duplicate":false},{"type":"reply","destination_ip":"192.168.1.255","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"192.168.1.88","icmp_seq":1,"ttl":64,"time_ms":382.0,"duplicate":true},{"type":"reply","destination_ip":"192.168.1.255","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"192.168.1.78","icmp_seq":1,"ttl":128,"time_ms":382.0,"duplicate":true},{"type":"reply","destination_ip":"192.168.1.255","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"192.168.1.217","icmp_seq":1,"ttl":255,"time_ms":387.0,"duplicate":true},{"type":"reply","destination_ip":"192.168.1.255","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"192.168.1.186","icmp_seq":1,"ttl":64,"time_ms":389.0,"duplicate":true},{"type":"reply","destination_ip":"192.168.1.255","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"192.168.1.89","icmp_seq":1,"ttl":64,"time_ms":389.0,"duplicate":true},{"type":"reply","destination_ip":"192.168.1.255","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"192.168.1.75","icmp_seq":1,"ttl":64,"time_ms":584.0,"duplicate":true},{"type":"reply","destination_ip":"192.168.1.255","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"192.168.1.221","icmp_seq":2,"ttl":64,"time_ms":0.861,"duplicate":false},{"type":"reply","destination_ip":"192.168.1.255","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"192.168.1.78","icmp_seq":2,"ttl":128,"time_ms":4.17,"duplicate":true},{"type":"reply","destination_ip":"192.168.1.255","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"192.168.1.88","icmp_seq":2,"ttl":64,"time_ms":4.19,"duplicate":true},{"type":"reply","destination_ip":"192.168.1.255","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"192.168.1.89","icmp_seq":2,"ttl":64,"time_ms":12.7,"duplicate":true},{"type":"reply","destination_ip":"192.168.1.255","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"192.168.1.81","icmp_seq":1,"ttl":64,"time_ms":1029.0,"duplicate":true},{"type":"reply","destination_ip":"192.168.1.255","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"192.168.1.72","icmp_seq":1,"ttl":64,"time_ms":1276.0,"duplicate":true},{"type":"reply","destination_ip":"192.168.1.255","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"192.168.1.251","icmp_seq":1,"ttl":64,"time_ms":1276.0,"duplicate":true},{"type":"reply","destination_ip":"192.168.1.255","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"192.168.1.251","icmp_seq":2,"ttl":64,"time_ms":262.0,"duplicate":true},{"type":"reply","destination_ip":"192.168.1.255","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"192.168.1.72","icmp_seq":2,"ttl":64,"time_ms":263.0,"duplicate":true},{"type":"reply","destination_ip":"192.168.1.255","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"192.168.1.246","icmp_seq":2,"ttl":255,"time_ms":263.0,"duplicate":true},{"type":"reply","destination_ip":"192.168.1.255","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"192.168.1.217","icmp_seq":2,"ttl":255,"time_ms":919.0,"duplicate":true},{"type":"reply","destination_ip":"192.168.1.255","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"192.168.1.186","icmp_seq":2,"ttl":64,"time_ms":919.0,"duplicate":true},{"type":"reply","destination_ip":"192.168.1.255","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"192.168.1.75","icmp_seq":2,"ttl":64,"time_ms":919.0,"duplicate":true},{"type":"reply","destination_ip":"192.168.1.255","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"192.168.1.81","icmp_seq":2,"ttl":64,"time_ms":919.0,"duplicate":true},{"type":"summary","destination_ip":"192.168.1.255","sent_bytes":56,"pattern":null,"packets_transmitted":2,"packets_received":2,"packet_loss_percent":0.0,"duplicates":19,"time_ms":1013.0,"round_trip_ms_min":0.586,"round_trip_ms_avg":504.26,"round_trip_ms_max":1276.448,"round_trip_ms_stddev":417.208}]
|
1
tests/fixtures/centos-7.7/ping6-hostname-O-D-p-s-streaming.json
vendored
Normal file
1
tests/fixtures/centos-7.7/ping6-hostname-O-D-p-s-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1594978345.609669,"response_bytes":1408,"response_ip":"2a04:4e42:2d::323","icmp_seq":1,"ttl":59,"time_ms":32.4,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1594978346.58542,"response_bytes":1408,"response_ip":"2a04:4e42:2d::323","icmp_seq":2,"ttl":59,"time_ms":39.9,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1594978347.594128,"response_bytes":1408,"response_ip":"2a04:4e42:2d::323","icmp_seq":3,"ttl":59,"time_ms":42.3,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1594978348.595221,"response_bytes":1408,"response_ip":"2a04:4e42:2d::323","icmp_seq":4,"ttl":59,"time_ms":40.2,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1594978349.600372,"response_bytes":1408,"response_ip":"2a04:4e42:2d::323","icmp_seq":5,"ttl":59,"time_ms":43.2,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1594978350.590676,"response_bytes":1408,"response_ip":"2a04:4e42:2d::323","icmp_seq":6,"ttl":59,"time_ms":31.8,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1594978351.601527,"response_bytes":1408,"response_ip":"2a04:4e42:2d::323","icmp_seq":7,"ttl":59,"time_ms":41.8,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1594978352.604195,"response_bytes":1408,"response_ip":"2a04:4e42:2d::323","icmp_seq":8,"ttl":59,"time_ms":41.7,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1594978353.607212,"response_bytes":1408,"response_ip":"2a04:4e42:2d::323","icmp_seq":9,"ttl":59,"time_ms":42.0,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1594978354.610771,"response_bytes":1408,"response_ip":"2a04:4e42:2d::323","icmp_seq":10,"ttl":59,"time_ms":40.7,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1594978355.613729,"response_bytes":1408,"response_ip":"2a04:4e42:2d::323","icmp_seq":11,"ttl":59,"time_ms":40.4,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1594978356.611887,"response_bytes":1408,"response_ip":"2a04:4e42:2d::323","icmp_seq":12,"ttl":59,"time_ms":32.6,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1594978357.62481,"response_bytes":1408,"response_ip":"2a04:4e42:2d::323","icmp_seq":13,"ttl":59,"time_ms":40.1,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1594978358.629185,"response_bytes":1408,"response_ip":"2a04:4e42:2d::323","icmp_seq":14,"ttl":59,"time_ms":42.0,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1594978359.634854,"response_bytes":1408,"response_ip":"2a04:4e42:2d::323","icmp_seq":15,"ttl":59,"time_ms":41.2,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1594978360.638344,"response_bytes":1408,"response_ip":"2a04:4e42:2d::323","icmp_seq":16,"ttl":59,"time_ms":40.6,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1594978361.640968,"response_bytes":1408,"response_ip":"2a04:4e42:2d::323","icmp_seq":17,"ttl":59,"time_ms":40.7,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1594978362.645739,"response_bytes":1408,"response_ip":"2a04:4e42:2d::323","icmp_seq":18,"ttl":59,"time_ms":39.9,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1594978363.6467,"response_bytes":1408,"response_ip":"2a04:4e42:2d::323","icmp_seq":19,"ttl":59,"time_ms":37.5,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1594978364.650853,"response_bytes":1408,"response_ip":"2a04:4e42:2d::323","icmp_seq":20,"ttl":59,"time_ms":33.6,"duplicate":false},{"type":"summary","destination_ip":"2a04:4e42:2d::323","sent_bytes":1400,"pattern":"0xabcd","packets_transmitted":20,"packets_received":20,"packet_loss_percent":0.0,"duplicates":0,"time_ms":19077.0,"round_trip_ms_min":31.845,"round_trip_ms_avg":39.274,"round_trip_ms_max":43.243,"round_trip_ms_stddev":3.522}]
|
1
tests/fixtures/centos-7.7/ping6-hostname-O-p-streaming.json
vendored
Normal file
1
tests/fixtures/centos-7.7/ping6-hostname-O-p-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:2d::323","icmp_seq":1,"ttl":59,"time_ms":30.9,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:2d::323","icmp_seq":2,"ttl":59,"time_ms":39.0,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:2d::323","icmp_seq":3,"ttl":59,"time_ms":32.6,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:2d::323","icmp_seq":4,"ttl":59,"time_ms":38.4,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:2d::323","icmp_seq":5,"ttl":59,"time_ms":38.8,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:2d::323","icmp_seq":6,"ttl":59,"time_ms":42.6,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:2d::323","icmp_seq":7,"ttl":59,"time_ms":30.7,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:2d::323","icmp_seq":8,"ttl":59,"time_ms":39.4,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:2d::323","icmp_seq":9,"ttl":59,"time_ms":39.3,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:2d::323","icmp_seq":10,"ttl":59,"time_ms":38.9,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:2d::323","icmp_seq":11,"ttl":59,"time_ms":38.6,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:2d::323","icmp_seq":12,"ttl":59,"time_ms":38.2,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:2d::323","icmp_seq":13,"ttl":59,"time_ms":39.6,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:2d::323","icmp_seq":14,"ttl":59,"time_ms":37.4,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:2d::323","icmp_seq":15,"ttl":59,"time_ms":33.7,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:2d::323","icmp_seq":16,"ttl":59,"time_ms":39.4,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:2d::323","icmp_seq":17,"ttl":59,"time_ms":38.9,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:2d::323","icmp_seq":18,"ttl":59,"time_ms":41.3,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:2d::323","icmp_seq":19,"ttl":59,"time_ms":32.2,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:2d::323","icmp_seq":20,"ttl":59,"time_ms":38.4,"duplicate":false},{"type":"summary","destination_ip":"2a04:4e42:2d::323","sent_bytes":56,"pattern":"0xabcd","packets_transmitted":20,"packets_received":20,"packet_loss_percent":0.0,"duplicates":0,"time_ms":19164.0,"round_trip_ms_min":30.757,"round_trip_ms_avg":37.455,"round_trip_ms_max":42.652,"round_trip_ms_stddev":3.338}]
|
1
tests/fixtures/centos-7.7/ping6-ip-O-D-p-streaming.json
vendored
Normal file
1
tests/fixtures/centos-7.7/ping6-ip-O-D-p-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1594976827.240914,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":1,"ttl":59,"time_ms":28.7,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1594976828.25493,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":2,"ttl":59,"time_ms":37.2,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1594976829.252877,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":3,"ttl":59,"time_ms":29.7,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1594976830.262654,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":4,"ttl":59,"time_ms":37.7,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1594976831.265626,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":5,"ttl":59,"time_ms":34.8,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1594976832.269834,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":6,"ttl":59,"time_ms":35.6,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1594976833.268059,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":7,"ttl":59,"time_ms":28.4,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1594976834.274292,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":8,"ttl":59,"time_ms":28.1,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1594976835.287123,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":9,"ttl":59,"time_ms":34.9,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1594976836.287707,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":10,"ttl":59,"time_ms":34.4,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1594976837.290589,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":11,"ttl":59,"time_ms":35.2,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1594976838.293514,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":12,"ttl":59,"time_ms":35.4,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1594976839.290914,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":13,"ttl":59,"time_ms":29.8,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1594976840.292897,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":14,"ttl":59,"time_ms":28.5,"duplicate":false},{"type":"timeout","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1594976842.269238,"icmp_seq":15},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1594976842.30145,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":16,"ttl":59,"time_ms":31.8,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1594976843.312998,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":17,"ttl":59,"time_ms":39.8,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1594976844.314228,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":18,"ttl":59,"time_ms":35.7,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1594976845.315518,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":19,"ttl":59,"time_ms":35.1,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1594976846.321706,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":20,"ttl":59,"time_ms":35.4,"duplicate":false},{"type":"summary","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","packets_transmitted":20,"packets_received":19,"packet_loss_percent":5.0,"duplicates":0,"time_ms":19074.0,"round_trip_ms_min":28.15,"round_trip_ms_avg":33.534,"round_trip_ms_max":39.843,"round_trip_ms_stddev":3.489}]
|
1
tests/fixtures/centos-7.7/ping6-ip-O-p-streaming.json
vendored
Normal file
1
tests/fixtures/centos-7.7/ping6-ip-O-p-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":1,"ttl":59,"time_ms":27.9,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":2,"ttl":59,"time_ms":28.4,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":3,"ttl":59,"time_ms":36.0,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":4,"ttl":59,"time_ms":28.5,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":5,"ttl":59,"time_ms":35.8,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":6,"ttl":59,"time_ms":34.4,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":7,"ttl":59,"time_ms":30.7,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":8,"ttl":59,"time_ms":28.5,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":9,"ttl":59,"time_ms":36.5,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":10,"ttl":59,"time_ms":36.3,"duplicate":false},{"type":"timeout","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"icmp_seq":11},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":12,"ttl":59,"time_ms":37.4,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":13,"ttl":59,"time_ms":30.7,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":14,"ttl":59,"time_ms":36.5,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":15,"ttl":59,"time_ms":35.4,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":16,"ttl":59,"time_ms":36.3,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":17,"ttl":59,"time_ms":37.5,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":18,"ttl":59,"time_ms":36.2,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":19,"ttl":59,"time_ms":27.0,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":20,"ttl":59,"time_ms":38.1,"duplicate":false},{"type":"summary","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","packets_transmitted":20,"packets_received":19,"packet_loss_percent":5.0,"duplicates":0,"time_ms":19067.0,"round_trip_ms_min":27.064,"round_trip_ms_avg":33.626,"round_trip_ms_max":38.146,"round_trip_ms_stddev":3.803}]
|
1
tests/fixtures/centos-7.7/ping6-ip-dup-streaming.json
vendored
Normal file
1
tests/fixtures/centos-7.7/ping6-ip-dup-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"ff02::1%ens33","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"fe80::c48:5896:526d:81ba%ens33","icmp_seq":1,"ttl":64,"time_ms":0.245,"duplicate":false},{"type":"reply","destination_ip":"ff02::1%ens33","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"fe80::feae:34ff:fea1:3a80%ens33","icmp_seq":1,"ttl":64,"time_ms":3.65,"duplicate":true},{"type":"reply","destination_ip":"ff02::1%ens33","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"fe80::c48:5896:526d:81ba%ens33","icmp_seq":2,"ttl":64,"time_ms":0.329,"duplicate":false},{"type":"reply","destination_ip":"ff02::1%ens33","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"fe80::feae:34ff:fea1:3a80%ens33","icmp_seq":2,"ttl":64,"time_ms":11.7,"duplicate":true},{"type":"reply","destination_ip":"ff02::1%ens33","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"fe80::c48:5896:526d:81ba%ens33","icmp_seq":3,"ttl":64,"time_ms":0.592,"duplicate":false},{"type":"reply","destination_ip":"ff02::1%ens33","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"fe80::feae:34ff:fea1:3a80%ens33","icmp_seq":3,"ttl":64,"time_ms":12.3,"duplicate":true},{"type":"reply","destination_ip":"ff02::1%ens33","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"fe80::c48:5896:526d:81ba%ens33","icmp_seq":4,"ttl":64,"time_ms":0.51,"duplicate":false},{"type":"reply","destination_ip":"ff02::1%ens33","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"fe80::feae:34ff:fea1:3a80%ens33","icmp_seq":4,"ttl":64,"time_ms":12.5,"duplicate":true},{"type":"reply","destination_ip":"ff02::1%ens33","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"fe80::c48:5896:526d:81ba%ens33","icmp_seq":5,"ttl":64,"time_ms":0.538,"duplicate":false},{"type":"summary","destination_ip":"ff02::1%ens33","sent_bytes":56,"pattern":null,"packets_transmitted":5,"packets_received":5,"packet_loss_percent":0.0,"duplicates":4,"time_ms":4017.0,"round_trip_ms_min":0.245,"round_trip_ms_avg":4.726,"round_trip_ms_max":12.568,"round_trip_ms_stddev":5.395}]
|
1
tests/fixtures/fedora32/ping-hostname-O-D-p-s-streaming.json
vendored
Normal file
1
tests/fixtures/fedora32/ping-hostname-O-D-p-s-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595191335.548399,"response_bytes":1408,"response_ip":"151.101.129.67","icmp_seq":1,"ttl":59,"time_ms":46.1,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595191336.134174,"response_bytes":1408,"response_ip":"151.101.129.67","icmp_seq":2,"ttl":59,"time_ms":61.5,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595191337.101575,"response_bytes":1408,"response_ip":"151.101.129.67","icmp_seq":3,"ttl":59,"time_ms":26.3,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595191338.108023,"response_bytes":1408,"response_ip":"151.101.129.67","icmp_seq":4,"ttl":59,"time_ms":30.9,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595191339.229213,"response_bytes":1408,"response_ip":"151.101.129.67","icmp_seq":5,"ttl":59,"time_ms":149.0,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595191340.114026,"response_bytes":1408,"response_ip":"151.101.129.67","icmp_seq":6,"ttl":59,"time_ms":32.4,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595191341.122628,"response_bytes":1408,"response_ip":"151.101.129.67","icmp_seq":7,"ttl":59,"time_ms":37.9,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595191342.110785,"response_bytes":1408,"response_ip":"151.101.129.67","icmp_seq":8,"ttl":59,"time_ms":26.0,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595191343.118652,"response_bytes":1408,"response_ip":"151.101.129.67","icmp_seq":9,"ttl":59,"time_ms":32.3,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595191344.1303,"response_bytes":1408,"response_ip":"151.101.129.67","icmp_seq":10,"ttl":59,"time_ms":43.4,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595191345.162284,"response_bytes":1408,"response_ip":"151.101.129.67","icmp_seq":11,"ttl":59,"time_ms":71.9,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595191346.123086,"response_bytes":1408,"response_ip":"151.101.129.67","icmp_seq":12,"ttl":59,"time_ms":31.1,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595191347.127689,"response_bytes":1408,"response_ip":"151.101.129.67","icmp_seq":13,"ttl":59,"time_ms":33.6,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595191348.142817,"response_bytes":1408,"response_ip":"151.101.129.67","icmp_seq":14,"ttl":59,"time_ms":45.6,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595191349.125383,"response_bytes":1408,"response_ip":"151.101.129.67","icmp_seq":15,"ttl":59,"time_ms":25.9,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595191350.136294,"response_bytes":1408,"response_ip":"151.101.129.67","icmp_seq":16,"ttl":59,"time_ms":34.0,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595191351.135889,"response_bytes":1408,"response_ip":"151.101.129.67","icmp_seq":17,"ttl":59,"time_ms":31.2,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595191352.134199,"response_bytes":1408,"response_ip":"151.101.129.67","icmp_seq":18,"ttl":59,"time_ms":26.2,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595191353.147391,"response_bytes":1408,"response_ip":"151.101.129.67","icmp_seq":19,"ttl":59,"time_ms":38.5,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595191354.15064,"response_bytes":1408,"response_ip":"151.101.129.67","icmp_seq":20,"ttl":59,"time_ms":39.5,"duplicate":false},{"type":"summary","destination_ip":"151.101.129.67","sent_bytes":1400,"pattern":"0xabcd","packets_transmitted":20,"packets_received":20,"packet_loss_percent":0.0,"duplicates":0,"time_ms":19040.0,"round_trip_ms_min":25.934,"round_trip_ms_avg":43.176,"round_trip_ms_max":149.271,"round_trip_ms_stddev":26.937}]
|
1
tests/fixtures/fedora32/ping-hostname-O-p-streaming.json
vendored
Normal file
1
tests/fixtures/fedora32/ping-hostname-O-p-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"151.101.197.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.197.67","icmp_seq":1,"ttl":56,"time_ms":38.2,"duplicate":false},{"type":"reply","destination_ip":"151.101.197.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.197.67","icmp_seq":2,"ttl":56,"time_ms":38.5,"duplicate":false},{"type":"reply","destination_ip":"151.101.197.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.197.67","icmp_seq":3,"ttl":56,"time_ms":39.3,"duplicate":false},{"type":"reply","destination_ip":"151.101.197.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.197.67","icmp_seq":4,"ttl":56,"time_ms":49.2,"duplicate":false},{"type":"reply","destination_ip":"151.101.197.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.197.67","icmp_seq":5,"ttl":56,"time_ms":47.4,"duplicate":false},{"type":"reply","destination_ip":"151.101.197.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.197.67","icmp_seq":6,"ttl":56,"time_ms":48.2,"duplicate":false},{"type":"reply","destination_ip":"151.101.197.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.197.67","icmp_seq":7,"ttl":56,"time_ms":53.4,"duplicate":false},{"type":"reply","destination_ip":"151.101.197.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.197.67","icmp_seq":8,"ttl":56,"time_ms":47.1,"duplicate":false},{"type":"reply","destination_ip":"151.101.197.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.197.67","icmp_seq":9,"ttl":56,"time_ms":47.3,"duplicate":false},{"type":"reply","destination_ip":"151.101.197.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.197.67","icmp_seq":10,"ttl":56,"time_ms":51.8,"duplicate":false},{"type":"reply","destination_ip":"151.101.197.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.197.67","icmp_seq":11,"ttl":56,"time_ms":55.1,"duplicate":false},{"type":"reply","destination_ip":"151.101.197.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.197.67","icmp_seq":12,"ttl":56,"time_ms":40.6,"duplicate":false},{"type":"reply","destination_ip":"151.101.197.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.197.67","icmp_seq":13,"ttl":56,"time_ms":39.5,"duplicate":false},{"type":"reply","destination_ip":"151.101.197.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.197.67","icmp_seq":14,"ttl":56,"time_ms":40.1,"duplicate":false},{"type":"reply","destination_ip":"151.101.197.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.197.67","icmp_seq":15,"ttl":56,"time_ms":41.4,"duplicate":false},{"type":"reply","destination_ip":"151.101.197.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.197.67","icmp_seq":16,"ttl":56,"time_ms":57.9,"duplicate":false},{"type":"reply","destination_ip":"151.101.197.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.197.67","icmp_seq":17,"ttl":56,"time_ms":45.7,"duplicate":false},{"type":"reply","destination_ip":"151.101.197.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.197.67","icmp_seq":18,"ttl":56,"time_ms":39.3,"duplicate":false},{"type":"reply","destination_ip":"151.101.197.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.197.67","icmp_seq":19,"ttl":56,"time_ms":37.4,"duplicate":false},{"type":"reply","destination_ip":"151.101.197.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.197.67","icmp_seq":20,"ttl":56,"time_ms":40.4,"duplicate":false},{"type":"summary","destination_ip":"151.101.197.67","sent_bytes":56,"pattern":"0xabcd","packets_transmitted":20,"packets_received":20,"packet_loss_percent":0.0,"duplicates":0,"time_ms":19026.0,"round_trip_ms_min":37.406,"round_trip_ms_avg":44.894,"round_trip_ms_max":57.881,"round_trip_ms_stddev":6.101}]
|
1
tests/fixtures/fedora32/ping-hostname-O-streaming.json
vendored
Normal file
1
tests/fixtures/fedora32/ping-hostname-O-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.129.67","icmp_seq":1,"ttl":59,"time_ms":27.5,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.129.67","icmp_seq":2,"ttl":59,"time_ms":31.5,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.129.67","icmp_seq":3,"ttl":59,"time_ms":25.5,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.129.67","icmp_seq":4,"ttl":59,"time_ms":65.1,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.129.67","icmp_seq":5,"ttl":59,"time_ms":32.4,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.129.67","icmp_seq":6,"ttl":59,"time_ms":32.2,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.129.67","icmp_seq":7,"ttl":59,"time_ms":156.0,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.129.67","icmp_seq":8,"ttl":59,"time_ms":216.0,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.129.67","icmp_seq":9,"ttl":59,"time_ms":275.0,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.129.67","icmp_seq":10,"ttl":59,"time_ms":25.7,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.129.67","icmp_seq":11,"ttl":59,"time_ms":29.5,"duplicate":false},{"type":"timeout","destination_ip":"151.101.129.67","sent_bytes":56,"pattern":null,"timestamp":null,"icmp_seq":12},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.129.67","icmp_seq":13,"ttl":59,"time_ms":25.9,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.129.67","icmp_seq":14,"ttl":59,"time_ms":33.0,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.129.67","icmp_seq":15,"ttl":59,"time_ms":24.3,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.129.67","icmp_seq":16,"ttl":59,"time_ms":35.8,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.129.67","icmp_seq":17,"ttl":59,"time_ms":24.8,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.129.67","icmp_seq":18,"ttl":59,"time_ms":34.0,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.129.67","icmp_seq":19,"ttl":59,"time_ms":30.7,"duplicate":false},{"type":"reply","destination_ip":"151.101.129.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.129.67","icmp_seq":20,"ttl":59,"time_ms":45.8,"duplicate":false},{"type":"summary","destination_ip":"151.101.129.67","sent_bytes":56,"pattern":null,"packets_transmitted":20,"packets_received":19,"packet_loss_percent":5.0,"duplicates":0,"time_ms":19075.0,"round_trip_ms_min":24.317,"round_trip_ms_avg":61.577,"round_trip_ms_max":274.537,"round_trip_ms_stddev":69.94}]
|
1
tests/fixtures/fedora32/ping-ip-O-D-streaming.json
vendored
Normal file
1
tests/fixtures/fedora32/ping-ip-O-D-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595191373.643436,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":1,"ttl":64,"time_ms":0.043,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595191374.662543,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":2,"ttl":64,"time_ms":0.083,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595191375.685291,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":3,"ttl":64,"time_ms":0.091,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595191376.709678,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":4,"ttl":64,"time_ms":0.092,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595191377.734105,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":5,"ttl":64,"time_ms":0.09,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595191378.758107,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":6,"ttl":64,"time_ms":0.089,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595191379.781215,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":7,"ttl":64,"time_ms":0.087,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595191380.80601,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":8,"ttl":64,"time_ms":0.092,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595191381.829806,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":9,"ttl":64,"time_ms":0.088,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595191382.853166,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":10,"ttl":64,"time_ms":0.135,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595191383.876966,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":11,"ttl":64,"time_ms":0.101,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595191384.900636,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":12,"ttl":64,"time_ms":0.084,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595191385.925055,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":13,"ttl":64,"time_ms":0.071,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595191386.94986,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":14,"ttl":64,"time_ms":0.087,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595191387.973041,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":15,"ttl":64,"time_ms":0.087,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595191388.997049,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":16,"ttl":64,"time_ms":0.073,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595191390.021265,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":17,"ttl":64,"time_ms":0.074,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595191391.044904,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":18,"ttl":64,"time_ms":0.089,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595191392.069285,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":19,"ttl":64,"time_ms":0.09,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595191393.093307,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":20,"ttl":64,"time_ms":0.084,"duplicate":false},{"type":"summary","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"packets_transmitted":20,"packets_received":20,"packet_loss_percent":0.0,"duplicates":0,"time_ms":19450.0,"round_trip_ms_min":0.043,"round_trip_ms_avg":0.086,"round_trip_ms_max":0.135,"round_trip_ms_stddev":0.016}]
|
1
tests/fixtures/fedora32/ping-ip-O-streaming.json
vendored
Normal file
1
tests/fixtures/fedora32/ping-ip-O-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":1,"ttl":64,"time_ms":0.043,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":2,"ttl":64,"time_ms":0.07,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":3,"ttl":64,"time_ms":0.09,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":4,"ttl":64,"time_ms":0.093,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":5,"ttl":64,"time_ms":0.078,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":6,"ttl":64,"time_ms":0.16,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":7,"ttl":64,"time_ms":0.089,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":8,"ttl":64,"time_ms":0.155,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":9,"ttl":64,"time_ms":0.084,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":10,"ttl":64,"time_ms":0.111,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":11,"ttl":64,"time_ms":0.079,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":12,"ttl":64,"time_ms":0.103,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":13,"ttl":64,"time_ms":0.105,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":14,"ttl":64,"time_ms":0.087,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":15,"ttl":64,"time_ms":0.081,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":16,"ttl":64,"time_ms":0.089,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":17,"ttl":64,"time_ms":0.09,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":18,"ttl":64,"time_ms":0.089,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":19,"ttl":64,"time_ms":0.09,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":20,"ttl":64,"time_ms":0.092,"duplicate":false},{"type":"summary","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"packets_transmitted":20,"packets_received":20,"packet_loss_percent":0.0,"duplicates":0,"time_ms":19480.0,"round_trip_ms_min":0.043,"round_trip_ms_avg":0.093,"round_trip_ms_max":0.16,"round_trip_ms_stddev":0.025}]
|
1
tests/fixtures/fedora32/ping6-hostname-O-D-p-s-streaming.json
vendored
Normal file
1
tests/fixtures/fedora32/ping6-hostname-O-D-p-s-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"2a04:4e42:200::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595191433.391154,"response_bytes":1408,"response_ip":"2a04:4e42:200::323","icmp_seq":1,"ttl":59,"time_ms":34.6,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:200::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595191434.063086,"response_bytes":1408,"response_ip":"2a04:4e42:200::323","icmp_seq":2,"ttl":59,"time_ms":37.2,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:200::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595191435.071905,"response_bytes":1408,"response_ip":"2a04:4e42:200::323","icmp_seq":3,"ttl":59,"time_ms":44.3,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:200::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595191436.067128,"response_bytes":1408,"response_ip":"2a04:4e42:200::323","icmp_seq":4,"ttl":59,"time_ms":37.3,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:200::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595191437.06455,"response_bytes":1408,"response_ip":"2a04:4e42:200::323","icmp_seq":5,"ttl":59,"time_ms":32.2,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:200::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595191438.06541,"response_bytes":1408,"response_ip":"2a04:4e42:200::323","icmp_seq":6,"ttl":59,"time_ms":30.8,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:200::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595191439.076718,"response_bytes":1408,"response_ip":"2a04:4e42:200::323","icmp_seq":7,"ttl":59,"time_ms":40.6,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:200::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595191440.076357,"response_bytes":1408,"response_ip":"2a04:4e42:200::323","icmp_seq":8,"ttl":59,"time_ms":38.2,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:200::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595191441.079078,"response_bytes":1408,"response_ip":"2a04:4e42:200::323","icmp_seq":9,"ttl":59,"time_ms":39.0,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:200::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595191442.077537,"response_bytes":1408,"response_ip":"2a04:4e42:200::323","icmp_seq":10,"ttl":59,"time_ms":34.3,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:200::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595191443.104345,"response_bytes":1408,"response_ip":"2a04:4e42:200::323","icmp_seq":11,"ttl":59,"time_ms":59.0,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:200::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595191444.083741,"response_bytes":1408,"response_ip":"2a04:4e42:200::323","icmp_seq":12,"ttl":59,"time_ms":36.8,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:200::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595191445.086748,"response_bytes":1408,"response_ip":"2a04:4e42:200::323","icmp_seq":13,"ttl":59,"time_ms":37.6,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:200::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595191446.088958,"response_bytes":1408,"response_ip":"2a04:4e42:200::323","icmp_seq":14,"ttl":59,"time_ms":37.3,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:200::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595191447.086122,"response_bytes":1408,"response_ip":"2a04:4e42:200::323","icmp_seq":15,"ttl":59,"time_ms":30.9,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:200::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595191448.088312,"response_bytes":1408,"response_ip":"2a04:4e42:200::323","icmp_seq":16,"ttl":59,"time_ms":30.8,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:200::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595191449.098353,"response_bytes":1408,"response_ip":"2a04:4e42:200::323","icmp_seq":17,"ttl":59,"time_ms":38.9,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:200::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595191450.09959,"response_bytes":1408,"response_ip":"2a04:4e42:200::323","icmp_seq":18,"ttl":59,"time_ms":38.1,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:200::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595191451.10105,"response_bytes":1408,"response_ip":"2a04:4e42:200::323","icmp_seq":19,"ttl":59,"time_ms":37.8,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:200::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595191452.100239,"response_bytes":1408,"response_ip":"2a04:4e42:200::323","icmp_seq":20,"ttl":59,"time_ms":35.0,"duplicate":false},{"type":"summary","destination_ip":"2a04:4e42:200::323","sent_bytes":1400,"pattern":"0xabcd","packets_transmitted":20,"packets_received":20,"packet_loss_percent":0.0,"duplicates":0,"time_ms":19042.0,"round_trip_ms_min":30.757,"round_trip_ms_avg":37.536,"round_trip_ms_max":59.021,"round_trip_ms_stddev":5.967}]
|
1
tests/fixtures/fedora32/ping6-hostname-O-p-streaming.json
vendored
Normal file
1
tests/fixtures/fedora32/ping6-hostname-O-p-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"2a04:4e42:400::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:400::323","icmp_seq":1,"ttl":59,"time_ms":24.0,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:400::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:400::323","icmp_seq":2,"ttl":59,"time_ms":30.5,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:400::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:400::323","icmp_seq":3,"ttl":59,"time_ms":23.6,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:400::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:400::323","icmp_seq":4,"ttl":59,"time_ms":35.8,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:400::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:400::323","icmp_seq":5,"ttl":59,"time_ms":32.3,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:400::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:400::323","icmp_seq":6,"ttl":59,"time_ms":32.4,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:400::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:400::323","icmp_seq":7,"ttl":59,"time_ms":26.5,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:400::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:400::323","icmp_seq":8,"ttl":59,"time_ms":31.1,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:400::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:400::323","icmp_seq":9,"ttl":59,"time_ms":33.9,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:400::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:400::323","icmp_seq":10,"ttl":59,"time_ms":32.5,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:400::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:400::323","icmp_seq":11,"ttl":59,"time_ms":31.0,"duplicate":false},{"type":"timeout","destination_ip":"2a04:4e42:400::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"icmp_seq":12},{"type":"reply","destination_ip":"2a04:4e42:400::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:400::323","icmp_seq":13,"ttl":59,"time_ms":31.9,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:400::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:400::323","icmp_seq":14,"ttl":59,"time_ms":112.0,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:400::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:400::323","icmp_seq":15,"ttl":59,"time_ms":162.0,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:400::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:400::323","icmp_seq":16,"ttl":59,"time_ms":223.0,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:400::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:400::323","icmp_seq":17,"ttl":59,"time_ms":281.0,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:400::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:400::323","icmp_seq":18,"ttl":59,"time_ms":33.4,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:400::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:400::323","icmp_seq":19,"ttl":59,"time_ms":32.7,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:400::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:400::323","icmp_seq":20,"ttl":59,"time_ms":42.3,"duplicate":false},{"type":"summary","destination_ip":"2a04:4e42:400::323","sent_bytes":56,"pattern":"0xabcd","packets_transmitted":20,"packets_received":19,"packet_loss_percent":5.0,"duplicates":0,"time_ms":19049.0,"round_trip_ms_min":23.598,"round_trip_ms_avg":65.877,"round_trip_ms_max":281.064,"round_trip_ms_stddev":72.64}]
|
1
tests/fixtures/fedora32/ping6-ip-O-D-p-streaming.json
vendored
Normal file
1
tests/fixtures/fedora32/ping6-ip-O-D-p-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1595191413.333769,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":1,"ttl":59,"time_ms":34.6,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1595191414.342973,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":2,"ttl":59,"time_ms":41.9,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1595191415.332214,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":3,"ttl":59,"time_ms":28.8,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1595191416.342603,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":4,"ttl":59,"time_ms":36.8,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1595191417.344996,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":5,"ttl":59,"time_ms":37.6,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1595191418.348619,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":6,"ttl":59,"time_ms":37.9,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1595191419.357154,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":7,"ttl":59,"time_ms":44.4,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1595191420.350087,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":8,"ttl":59,"time_ms":35.1,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1595191421.346691,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":9,"ttl":59,"time_ms":29.9,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1595191422.355843,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":10,"ttl":59,"time_ms":37.4,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1595191423.397934,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":11,"ttl":59,"time_ms":76.7,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1595191424.470798,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":12,"ttl":59,"time_ms":148.0,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1595191425.358652,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":13,"ttl":59,"time_ms":33.6,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1595191426.404587,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":14,"ttl":59,"time_ms":77.2,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1595191427.359785,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":15,"ttl":59,"time_ms":29.7,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1595191428.367539,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":16,"ttl":59,"time_ms":34.9,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1595191429.372551,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":17,"ttl":59,"time_ms":37.2,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1595191430.364571,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":18,"ttl":59,"time_ms":27.9,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1595191431.375232,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":19,"ttl":59,"time_ms":37.1,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1595191432.375802,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":20,"ttl":59,"time_ms":34.3,"duplicate":false},{"type":"summary","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","packets_transmitted":20,"packets_received":20,"packet_loss_percent":0.0,"duplicates":0,"time_ms":19042.0,"round_trip_ms_min":27.88,"round_trip_ms_avg":45.072,"round_trip_ms_max":148.38,"round_trip_ms_stddev":27.078}]
|
1
tests/fixtures/fedora32/ping6-ip-O-p-streaming.json
vendored
Normal file
1
tests/fixtures/fedora32/ping6-ip-O-p-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":1,"ttl":59,"time_ms":34.9,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":2,"ttl":59,"time_ms":36.6,"duplicate":false},{"type":"timeout","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"icmp_seq":3},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":4,"ttl":59,"time_ms":28.9,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":5,"ttl":59,"time_ms":36.8,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":6,"ttl":59,"time_ms":28.9,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":7,"ttl":59,"time_ms":39.5,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":8,"ttl":59,"time_ms":28.2,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":9,"ttl":59,"time_ms":28.9,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":10,"ttl":59,"time_ms":36.5,"duplicate":false},{"type":"timeout","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"icmp_seq":11},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":12,"ttl":59,"time_ms":33.9,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":13,"ttl":59,"time_ms":28.1,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":14,"ttl":59,"time_ms":27.6,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":15,"ttl":59,"time_ms":36.0,"duplicate":false},{"type":"timeout","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"icmp_seq":16},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":17,"ttl":59,"time_ms":26.6,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":18,"ttl":59,"time_ms":38.5,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":19,"ttl":59,"time_ms":43.9,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":20,"ttl":59,"time_ms":37.9,"duplicate":false},{"type":"summary","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","packets_transmitted":20,"packets_received":17,"packet_loss_percent":15.0,"duplicates":0,"time_ms":19193.0,"round_trip_ms_min":26.566,"round_trip_ms_avg":33.623,"round_trip_ms_max":43.945,"round_trip_ms_stddev":5.029}]
|
1
tests/fixtures/freebsd12/ping-hostname-p-streaming.json
vendored
Normal file
1
tests/fixtures/freebsd12/ping-hostname-p-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"151.101.1.67","sent_bytes":56,"pattern":"0xff","response_bytes":64,"response_ip":"151.101.1.67","icmp_seq":0,"ttl":59,"time_ms":32.34},{"type":"reply","destination_ip":"151.101.1.67","sent_bytes":56,"pattern":"0xff","response_bytes":64,"response_ip":"151.101.1.67","icmp_seq":1,"ttl":59,"time_ms":34.505},{"type":"reply","destination_ip":"151.101.1.67","sent_bytes":56,"pattern":"0xff","response_bytes":64,"response_ip":"151.101.1.67","icmp_seq":2,"ttl":59,"time_ms":28.389},{"type":"summary","destination_ip":"151.101.1.67","sent_bytes":56,"pattern":"0xff","packets_transmitted":3,"packets_received":3,"packet_loss_percent":0.0,"duplicates":0,"round_trip_ms_min":28.389,"round_trip_ms_avg":31.745,"round_trip_ms_max":34.505,"round_trip_ms_stddev":2.532}]
|
1
tests/fixtures/freebsd12/ping-hostname-s-streaming.json
vendored
Normal file
1
tests/fixtures/freebsd12/ping-hostname-s-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":40,"pattern":null,"response_bytes":48,"response_ip":"127.0.0.1","icmp_seq":0,"ttl":64,"time_ms":0.022},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":40,"pattern":null,"response_bytes":48,"response_ip":"127.0.0.1","icmp_seq":1,"ttl":64,"time_ms":0.038},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":40,"pattern":null,"response_bytes":48,"response_ip":"127.0.0.1","icmp_seq":2,"ttl":64,"time_ms":0.03},{"type":"summary","destination_ip":"127.0.0.1","sent_bytes":40,"pattern":null,"packets_transmitted":3,"packets_received":3,"packet_loss_percent":0.0,"duplicates":0,"round_trip_ms_min":0.022,"round_trip_ms_avg":0.03,"round_trip_ms_max":0.038,"round_trip_ms_stddev":0.006}]
|
1
tests/fixtures/freebsd12/ping-hostname-streaming.json
vendored
Normal file
1
tests/fixtures/freebsd12/ping-hostname-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"151.101.65.67","sent_bytes":56,"pattern":null,"response_bytes":64,"response_ip":"151.101.65.67","icmp_seq":0,"ttl":59,"time_ms":27.01},{"type":"reply","destination_ip":"151.101.65.67","sent_bytes":56,"pattern":null,"response_bytes":64,"response_ip":"151.101.65.67","icmp_seq":1,"ttl":59,"time_ms":31.978},{"type":"reply","destination_ip":"151.101.65.67","sent_bytes":56,"pattern":null,"response_bytes":64,"response_ip":"151.101.65.67","icmp_seq":2,"ttl":59,"time_ms":42.506},{"type":"summary","destination_ip":"151.101.65.67","sent_bytes":56,"pattern":null,"packets_transmitted":3,"packets_received":3,"packet_loss_percent":0.0,"duplicates":0,"round_trip_ms_min":27.01,"round_trip_ms_avg":33.831,"round_trip_ms_max":42.506,"round_trip_ms_stddev":6.461}]
|
1
tests/fixtures/freebsd12/ping-ip-p-streaming.json
vendored
Normal file
1
tests/fixtures/freebsd12/ping-ip-p-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":"0xff","response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":0,"ttl":64,"time_ms":0.036},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":"0xff","response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":1,"ttl":64,"time_ms":0.042},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":"0xff","response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":2,"ttl":64,"time_ms":0.034},{"type":"summary","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":"0xff","packets_transmitted":3,"packets_received":3,"packet_loss_percent":0.0,"duplicates":0,"round_trip_ms_min":0.034,"round_trip_ms_avg":0.037,"round_trip_ms_max":0.042,"round_trip_ms_stddev":0.003}]
|
1
tests/fixtures/freebsd12/ping-ip-s-streaming.json
vendored
Normal file
1
tests/fixtures/freebsd12/ping-ip-s-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":40,"pattern":null,"response_bytes":48,"response_ip":"127.0.0.1","icmp_seq":0,"ttl":64,"time_ms":0.024},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":40,"pattern":null,"response_bytes":48,"response_ip":"127.0.0.1","icmp_seq":1,"ttl":64,"time_ms":0.036},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":40,"pattern":null,"response_bytes":48,"response_ip":"127.0.0.1","icmp_seq":2,"ttl":64,"time_ms":0.036},{"type":"summary","destination_ip":"127.0.0.1","sent_bytes":40,"pattern":null,"packets_transmitted":3,"packets_received":3,"packet_loss_percent":0.0,"duplicates":0,"round_trip_ms_min":0.024,"round_trip_ms_avg":0.032,"round_trip_ms_max":0.036,"round_trip_ms_stddev":0.006}]
|
1
tests/fixtures/freebsd12/ping-ip-streaming.json
vendored
Normal file
1
tests/fixtures/freebsd12/ping-ip-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":0,"ttl":64,"time_ms":0.022},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":1,"ttl":64,"time_ms":0.036},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":2,"ttl":64,"time_ms":0.041},{"type":"summary","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"packets_transmitted":3,"packets_received":3,"packet_loss_percent":0.0,"duplicates":0,"round_trip_ms_min":0.022,"round_trip_ms_avg":0.033,"round_trip_ms_max":0.041,"round_trip_ms_stddev":0.008}]
|
1
tests/fixtures/freebsd12/ping6-hostname-p-streaming.json
vendored
Normal file
1
tests/fixtures/freebsd12/ping6-hostname-p-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"::1","sent_bytes":56,"pattern":"0xff","bytes":"16","response_ip":"::1","icmp_seq":0,"ttl":64,"time_ms":0.036},{"type":"reply","destination_ip":"::1","sent_bytes":56,"pattern":"0xff","bytes":"16","response_ip":"::1","icmp_seq":1,"ttl":64,"time_ms":0.051},{"type":"reply","destination_ip":"::1","sent_bytes":56,"pattern":"0xff","bytes":"16","response_ip":"::1","icmp_seq":2,"ttl":64,"time_ms":0.048},{"type":"summary","destination_ip":"::1","sent_bytes":56,"pattern":"0xff","packets_transmitted":3,"packets_received":3,"packet_loss_percent":0.0,"duplicates":0,"round_trip_ms_min":0.036,"round_trip_ms_avg":0.045,"round_trip_ms_max":0.051,"round_trip_ms_stddev":0.007}]
|
1
tests/fixtures/freebsd12/ping6-hostname-s-streaming.json
vendored
Normal file
1
tests/fixtures/freebsd12/ping6-hostname-s-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"::1","sent_bytes":88,"pattern":null,"bytes":"48","response_ip":"::1","icmp_seq":0,"ttl":64,"time_ms":0.035},{"type":"reply","destination_ip":"::1","sent_bytes":88,"pattern":null,"bytes":"48","response_ip":"::1","icmp_seq":1,"ttl":64,"time_ms":0.082},{"type":"reply","destination_ip":"::1","sent_bytes":88,"pattern":null,"bytes":"48","response_ip":"::1","icmp_seq":2,"ttl":64,"time_ms":0.051},{"type":"summary","destination_ip":"::1","sent_bytes":88,"pattern":null,"packets_transmitted":3,"packets_received":3,"packet_loss_percent":0.0,"duplicates":0,"round_trip_ms_min":0.035,"round_trip_ms_avg":0.056,"round_trip_ms_max":0.082,"round_trip_ms_stddev":0.019}]
|
1
tests/fixtures/freebsd12/ping6-hostname-streaming.json
vendored
Normal file
1
tests/fixtures/freebsd12/ping6-hostname-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"::1","sent_bytes":56,"pattern":null,"bytes":"16","response_ip":"::1","icmp_seq":0,"ttl":64,"time_ms":0.036},{"type":"reply","destination_ip":"::1","sent_bytes":56,"pattern":null,"bytes":"16","response_ip":"::1","icmp_seq":1,"ttl":64,"time_ms":0.041},{"type":"reply","destination_ip":"::1","sent_bytes":56,"pattern":null,"bytes":"16","response_ip":"::1","icmp_seq":2,"ttl":64,"time_ms":0.048},{"type":"summary","destination_ip":"::1","sent_bytes":56,"pattern":null,"packets_transmitted":3,"packets_received":3,"packet_loss_percent":0.0,"duplicates":0,"round_trip_ms_min":0.036,"round_trip_ms_avg":0.042,"round_trip_ms_max":0.048,"round_trip_ms_stddev":0.005}]
|
1
tests/fixtures/freebsd12/ping6-ip-p-streaming.json
vendored
Normal file
1
tests/fixtures/freebsd12/ping6-ip-p-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"::1","sent_bytes":56,"pattern":"0xff","bytes":"16","response_ip":"::1","icmp_seq":0,"ttl":64,"time_ms":0.036},{"type":"reply","destination_ip":"::1","sent_bytes":56,"pattern":"0xff","bytes":"16","response_ip":"::1","icmp_seq":1,"ttl":64,"time_ms":0.054},{"type":"reply","destination_ip":"::1","sent_bytes":56,"pattern":"0xff","bytes":"16","response_ip":"::1","icmp_seq":2,"ttl":64,"time_ms":0.045},{"type":"summary","destination_ip":"::1","sent_bytes":56,"pattern":"0xff","packets_transmitted":3,"packets_received":3,"packet_loss_percent":0.0,"duplicates":0,"round_trip_ms_min":0.036,"round_trip_ms_avg":0.045,"round_trip_ms_max":0.054,"round_trip_ms_stddev":0.007}]
|
1
tests/fixtures/freebsd12/ping6-ip-s-streaming.json
vendored
Normal file
1
tests/fixtures/freebsd12/ping6-ip-s-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"::1","sent_bytes":88,"pattern":null,"bytes":"48","response_ip":"::1","icmp_seq":0,"ttl":64,"time_ms":0.036},{"type":"reply","destination_ip":"::1","sent_bytes":88,"pattern":null,"bytes":"48","response_ip":"::1","icmp_seq":1,"ttl":64,"time_ms":0.088},{"type":"reply","destination_ip":"::1","sent_bytes":88,"pattern":null,"bytes":"48","response_ip":"::1","icmp_seq":2,"ttl":64,"time_ms":0.049},{"type":"summary","destination_ip":"::1","sent_bytes":88,"pattern":null,"packets_transmitted":3,"packets_received":3,"packet_loss_percent":0.0,"duplicates":0,"round_trip_ms_min":0.036,"round_trip_ms_avg":0.058,"round_trip_ms_max":0.088,"round_trip_ms_stddev":0.022}]
|
1
tests/fixtures/freebsd12/ping6-ip-streaming.json
vendored
Normal file
1
tests/fixtures/freebsd12/ping6-ip-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"::1","sent_bytes":56,"pattern":null,"bytes":"16","response_ip":"::1","icmp_seq":0,"ttl":64,"time_ms":0.034},{"type":"reply","destination_ip":"::1","sent_bytes":56,"pattern":null,"bytes":"16","response_ip":"::1","icmp_seq":1,"ttl":64,"time_ms":0.053},{"type":"reply","destination_ip":"::1","sent_bytes":56,"pattern":null,"bytes":"16","response_ip":"::1","icmp_seq":2,"ttl":64,"time_ms":0.045},{"type":"summary","destination_ip":"::1","sent_bytes":56,"pattern":null,"packets_transmitted":3,"packets_received":3,"packet_loss_percent":0.0,"duplicates":0,"round_trip_ms_min":0.034,"round_trip_ms_avg":0.044,"round_trip_ms_max":0.053,"round_trip_ms_stddev":0.008}]
|
1
tests/fixtures/osx-10.14.6/ls-al-streaming.json
vendored
Normal file
1
tests/fixtures/osx-10.14.6/ls-al-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"filename":".","flags":"drwxr-xr-x","links":34,"owner":"root","group":"wheel","size":1088,"date":"Dec 12 00:13"},{"filename":"..","flags":"drwxr-xr-x","links":34,"owner":"root","group":"wheel","size":1088,"date":"Dec 12 00:13"},{"filename":".DS_Store","flags":"-rw-rw-r--","links":1,"owner":"root","group":"admin","size":8196,"date":"Jul 25 18:21"},{"filename":".DocumentRevisions-V100","flags":"d--x--x--x","links":9,"owner":"root","group":"wheel","size":288,"date":"Dec 12 00:14"},{"filename":".OSInstallerMessages","flags":"-rw-r--r--","links":1,"owner":"root","group":"wheel","size":992,"date":"Dec 12 00:13"},{"filename":".PKInstallSandboxManager","flags":"drwxr-xr-x","links":2,"owner":"root","group":"wheel","size":64,"date":"May 4 2019"},{"filename":".PKInstallSandboxManager-SystemSoftware","flags":"drwx------","links":2,"owner":"root","group":"admin","size":64,"date":"Dec 12 00:13"},{"filename":".Spotlight-V100","flags":"drwx------","links":5,"owner":"root","group":"wheel","size":160,"date":"May 4 2019"},{"filename":".file","flags":"----------","links":1,"owner":"root","group":"admin","size":0,"date":"Feb 25 2019"},{"filename":".fseventsd","flags":"drwx------","links":68,"owner":"kbrazil","group":"staff","size":2176,"date":"Dec 12 09:47"},{"filename":".vol","flags":"drwxr-xr-x","links":2,"owner":"root","group":"wheel","size":64,"date":"Feb 25 2019"},{"filename":"Applications","flags":"drwxrwxr-x+","links":73,"owner":"root","group":"admin","size":2336,"date":"Dec 12 00:36"},{"filename":"Library","flags":"drwxr-xr-x+","links":69,"owner":"root","group":"wheel","size":2208,"date":"Dec 12 00:35"},{"filename":"Network","flags":"drwxr-xr-x","links":2,"owner":"root","group":"wheel","size":64,"date":"Feb 25 2019"},{"filename":"System","flags":"drwxr-xr-x@","links":5,"owner":"root","group":"wheel","size":160,"date":"May 3 2019"},{"filename":"Users","flags":"drwxr-xr-x","links":8,"owner":"root","group":"admin","size":256,"date":"Oct 14 07:21"},{"filename":"Volumes","flags":"drwxr-xr-x+","links":6,"owner":"root","group":"wheel","size":192,"date":"Dec 12 08:56"},{"filename":"bin","flags":"drwxr-xr-x@","links":37,"owner":"root","group":"wheel","size":1184,"date":"Dec 12 00:12"},{"filename":"cores","flags":"drwxrwxr-t","links":2,"owner":"root","group":"admin","size":64,"date":"Feb 25 2019"},{"filename":"dev","flags":"dr-xr-xr-x","links":3,"owner":"root","group":"wheel","size":7728,"date":"Dec 12 00:14"},{"filename":"etc","link_to":"private/etc","flags":"lrwxr-xr-x@","links":1,"owner":"root","group":"wheel","size":11,"date":"May 4 2019"},{"filename":"home","flags":"dr-xr-xr-x","links":2,"owner":"root","group":"wheel","size":1,"date":"Dec 12 07:41"},{"filename":"installer.failurerequests","flags":"-rw-r--r--","links":1,"owner":"root","group":"wheel","size":313,"date":"Feb 24 2019"},{"filename":"net","flags":"dr-xr-xr-x","links":2,"owner":"root","group":"wheel","size":1,"date":"Dec 12 07:41"},{"filename":"obj_1_uhYWBO","flags":"-rw-------","links":1,"owner":"root","group":"wheel","size":11984,"date":"Jul 30 21:02"},{"filename":"obj_2_Q0HjZP","flags":"-rw-------","links":1,"owner":"root","group":"wheel","size":9080,"date":"Jul 30 21:02"},{"filename":"obj_3_OUvCmT","flags":"-rw-------","links":1,"owner":"root","group":"wheel","size":15912,"date":"Jul 30 21:02"},{"filename":"obj_4_q0hkvG","flags":"-rw-------","links":1,"owner":"root","group":"wheel","size":16880,"date":"Jul 30 21:02"},{"filename":"obj_5_qmI8ZT","flags":"-rw-------","links":1,"owner":"root","group":"wheel","size":9416,"date":"Jul 30 21:02"},{"filename":"private","flags":"drwxr-xr-x","links":6,"owner":"root","group":"wheel","size":192,"date":"May 3 2019"},{"filename":"sbin","flags":"drwxr-xr-x@","links":64,"owner":"root","group":"wheel","size":2048,"date":"Dec 12 00:12"},{"filename":"tmp","link_to":"private/tmp","flags":"lrwxr-xr-x@","links":1,"owner":"root","group":"wheel","size":11,"date":"May 4 2019"},{"filename":"usr","flags":"drwxr-xr-x@","links":9,"owner":"root","group":"wheel","size":288,"date":"May 3 2019"},{"filename":"var","link_to":"private/var","flags":"lrwxr-xr-x@","links":1,"owner":"root","group":"wheel","size":11,"date":"May 4 2019"}]
|
1
tests/fixtures/osx-10.14.6/ls-alR-streaming.json
vendored
Normal file
1
tests/fixtures/osx-10.14.6/ls-alR-streaming.json
vendored
Normal file
File diff suppressed because one or more lines are too long
1
tests/fixtures/osx-10.14.6/ls-alh-streaming.json
vendored
Normal file
1
tests/fixtures/osx-10.14.6/ls-alh-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"filename":".","flags":"drwxr-xr-x","links":34,"owner":"root","group":"wheel","size":1,"date":"Dec 12 00:13"},{"filename":"..","flags":"drwxr-xr-x","links":34,"owner":"root","group":"wheel","size":1,"date":"Dec 12 00:13"},{"filename":".DS_Store","flags":"-rw-rw-r--","links":1,"owner":"root","group":"admin","size":8,"date":"Jul 25 18:21"},{"filename":".DocumentRevisions-V100","flags":"d--x--x--x","links":9,"owner":"root","group":"wheel","size":288,"date":"Dec 12 00:14"},{"filename":".OSInstallerMessages","flags":"-rw-r--r--","links":1,"owner":"root","group":"wheel","size":992,"date":"Dec 12 00:13"},{"filename":".PKInstallSandboxManager","flags":"drwxr-xr-x","links":2,"owner":"root","group":"wheel","size":64,"date":"May 4 2019"},{"filename":".PKInstallSandboxManager-SystemSoftware","flags":"drwx------","links":2,"owner":"root","group":"admin","size":64,"date":"Dec 12 00:13"},{"filename":".Spotlight-V100","flags":"drwx------","links":5,"owner":"root","group":"wheel","size":160,"date":"May 4 2019"},{"filename":".file","flags":"----------","links":1,"owner":"root","group":"admin","size":0,"date":"Feb 25 2019"},{"filename":".fseventsd","flags":"drwx------","links":68,"owner":"kbrazil","group":"staff","size":2,"date":"Dec 12 09:47"},{"filename":".vol","flags":"drwxr-xr-x","links":2,"owner":"root","group":"wheel","size":64,"date":"Feb 25 2019"},{"filename":"Applications","flags":"drwxrwxr-x+","links":73,"owner":"root","group":"admin","size":2,"date":"Dec 12 00:36"},{"filename":"Library","flags":"drwxr-xr-x+","links":69,"owner":"root","group":"wheel","size":2,"date":"Dec 12 00:35"},{"filename":"Network","flags":"drwxr-xr-x","links":2,"owner":"root","group":"wheel","size":64,"date":"Feb 25 2019"},{"filename":"System","flags":"drwxr-xr-x@","links":5,"owner":"root","group":"wheel","size":160,"date":"May 3 2019"},{"filename":"Users","flags":"drwxr-xr-x","links":8,"owner":"root","group":"admin","size":256,"date":"Oct 14 07:21"},{"filename":"Volumes","flags":"drwxr-xr-x+","links":6,"owner":"root","group":"wheel","size":192,"date":"Dec 12 08:56"},{"filename":"bin","flags":"drwxr-xr-x@","links":37,"owner":"root","group":"wheel","size":1,"date":"Dec 12 00:12"},{"filename":"cores","flags":"drwxrwxr-t","links":2,"owner":"root","group":"admin","size":64,"date":"Feb 25 2019"},{"filename":"dev","flags":"dr-xr-xr-x","links":3,"owner":"root","group":"wheel","size":7,"date":"Dec 12 00:14"},{"filename":"etc","link_to":"private/etc","flags":"lrwxr-xr-x@","links":1,"owner":"root","group":"wheel","size":11,"date":"May 4 2019"},{"filename":"home","flags":"dr-xr-xr-x","links":2,"owner":"root","group":"wheel","size":1,"date":"Dec 12 07:41"},{"filename":"installer.failurerequests","flags":"-rw-r--r--","links":1,"owner":"root","group":"wheel","size":313,"date":"Feb 24 2019"},{"filename":"net","flags":"dr-xr-xr-x","links":2,"owner":"root","group":"wheel","size":1,"date":"Dec 12 07:41"},{"filename":"obj_1_uhYWBO","flags":"-rw-------","links":1,"owner":"root","group":"wheel","size":12,"date":"Jul 30 21:02"},{"filename":"obj_2_Q0HjZP","flags":"-rw-------","links":1,"owner":"root","group":"wheel","size":8,"date":"Jul 30 21:02"},{"filename":"obj_3_OUvCmT","flags":"-rw-------","links":1,"owner":"root","group":"wheel","size":16,"date":"Jul 30 21:02"},{"filename":"obj_4_q0hkvG","flags":"-rw-------","links":1,"owner":"root","group":"wheel","size":16,"date":"Jul 30 21:02"},{"filename":"obj_5_qmI8ZT","flags":"-rw-------","links":1,"owner":"root","group":"wheel","size":9,"date":"Jul 30 21:02"},{"filename":"private","flags":"drwxr-xr-x","links":6,"owner":"root","group":"wheel","size":192,"date":"May 3 2019"},{"filename":"sbin","flags":"drwxr-xr-x@","links":64,"owner":"root","group":"wheel","size":2,"date":"Dec 12 00:12"},{"filename":"tmp","link_to":"private/tmp","flags":"lrwxr-xr-x@","links":1,"owner":"root","group":"wheel","size":11,"date":"May 4 2019"},{"filename":"usr","flags":"drwxr-xr-x@","links":9,"owner":"root","group":"wheel","size":288,"date":"May 3 2019"},{"filename":"var","link_to":"private/var","flags":"lrwxr-xr-x@","links":1,"owner":"root","group":"wheel","size":11,"date":"May 4 2019"}]
|
1
tests/fixtures/osx-10.14.6/ls-lR-empty-folder-streaming.json
vendored
Normal file
1
tests/fixtures/osx-10.14.6/ls-lR-empty-folder-streaming.json
vendored
Normal file
File diff suppressed because one or more lines are too long
1
tests/fixtures/osx-10.14.6/ping-hostname-p-streaming.json
vendored
Normal file
1
tests/fixtures/osx-10.14.6/ping-hostname-p-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"151.101.1.67","sent_bytes":56,"pattern":"0xff","response_bytes":64,"response_ip":"151.101.1.67","icmp_seq":0,"ttl":59,"time_ms":89.422},{"type":"reply","destination_ip":"151.101.1.67","sent_bytes":56,"pattern":"0xff","response_bytes":64,"response_ip":"151.101.1.67","icmp_seq":1,"ttl":59,"time_ms":116.712},{"type":"reply","destination_ip":"151.101.1.67","sent_bytes":56,"pattern":"0xff","response_bytes":64,"response_ip":"151.101.1.67","icmp_seq":2,"ttl":59,"time_ms":147.964},{"type":"summary","destination_ip":"151.101.1.67","sent_bytes":56,"pattern":"0xff","packets_transmitted":3,"packets_received":3,"packet_loss_percent":0.0,"duplicates":0,"round_trip_ms_min":89.422,"round_trip_ms_avg":118.033,"round_trip_ms_max":147.964,"round_trip_ms_stddev":23.918}]
|
1
tests/fixtures/osx-10.14.6/ping-hostname-s-streaming.json
vendored
Normal file
1
tests/fixtures/osx-10.14.6/ping-hostname-s-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"151.101.1.67","sent_bytes":1400,"pattern":null,"response_bytes":1408,"response_ip":"151.101.1.67","icmp_seq":0,"ttl":59,"time_ms":39.048},{"type":"reply","destination_ip":"151.101.1.67","sent_bytes":1400,"pattern":null,"response_bytes":1408,"response_ip":"151.101.1.67","icmp_seq":1,"ttl":59,"time_ms":29.954},{"type":"reply","destination_ip":"151.101.1.67","sent_bytes":1400,"pattern":null,"response_bytes":1408,"response_ip":"151.101.1.67","icmp_seq":2,"ttl":59,"time_ms":50.674},{"type":"summary","destination_ip":"151.101.1.67","sent_bytes":1400,"pattern":null,"packets_transmitted":3,"packets_received":3,"packet_loss_percent":0.0,"duplicates":0,"round_trip_ms_min":29.954,"round_trip_ms_avg":39.892,"round_trip_ms_max":50.674,"round_trip_ms_stddev":8.48}]
|
1
tests/fixtures/osx-10.14.6/ping-hostname-streaming.json
vendored
Normal file
1
tests/fixtures/osx-10.14.6/ping-hostname-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"151.101.1.67","sent_bytes":56,"pattern":null,"response_bytes":64,"response_ip":"151.101.1.67","icmp_seq":0,"ttl":59,"time_ms":28.042},{"type":"reply","destination_ip":"151.101.1.67","sent_bytes":56,"pattern":null,"response_bytes":64,"response_ip":"151.101.1.67","icmp_seq":1,"ttl":59,"time_ms":34.786},{"type":"reply","destination_ip":"151.101.1.67","sent_bytes":56,"pattern":null,"response_bytes":64,"response_ip":"151.101.1.67","icmp_seq":2,"ttl":59,"time_ms":41.182},{"type":"summary","destination_ip":"151.101.1.67","sent_bytes":56,"pattern":null,"packets_transmitted":3,"packets_received":3,"packet_loss_percent":0.0,"duplicates":0,"round_trip_ms_min":28.042,"round_trip_ms_avg":34.67,"round_trip_ms_max":41.182,"round_trip_ms_stddev":5.365}]
|
1
tests/fixtures/osx-10.14.6/ping-ip-dup-streaming.json
vendored
Normal file
1
tests/fixtures/osx-10.14.6/ping-ip-dup-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"192.168.1.255","sent_bytes":56,"pattern":null,"response_bytes":64,"response_ip":"192.168.1.221","icmp_seq":0,"ttl":64,"time_ms":0.235},{"type":"reply","destination_ip":"192.168.1.255","sent_bytes":56,"pattern":null,"response_bytes":64,"response_ip":"192.168.1.88","icmp_seq":0,"ttl":64,"time_ms":4.224},{"type":"reply","destination_ip":"192.168.1.255","sent_bytes":56,"pattern":null,"response_bytes":64,"response_ip":"192.168.1.89","icmp_seq":0,"ttl":64,"time_ms":8.37},{"type":"reply","destination_ip":"192.168.1.255","sent_bytes":56,"pattern":null,"response_bytes":64,"response_ip":"192.168.1.72","icmp_seq":0,"ttl":64,"time_ms":62.635},{"type":"reply","destination_ip":"192.168.1.255","sent_bytes":56,"pattern":null,"response_bytes":64,"response_ip":"192.168.1.246","icmp_seq":0,"ttl":255,"time_ms":62.805},{"type":"reply","destination_ip":"192.168.1.255","sent_bytes":56,"pattern":null,"response_bytes":64,"response_ip":"192.168.1.78","icmp_seq":0,"ttl":128,"time_ms":63.803},{"type":"reply","destination_ip":"192.168.1.255","sent_bytes":56,"pattern":null,"response_bytes":64,"response_ip":"192.168.1.251","icmp_seq":0,"ttl":64,"time_ms":63.857},{"type":"reply","destination_ip":"192.168.1.255","sent_bytes":56,"pattern":null,"response_bytes":64,"response_ip":"192.168.1.217","icmp_seq":0,"ttl":255,"time_ms":672.974},{"type":"reply","destination_ip":"192.168.1.255","sent_bytes":56,"pattern":null,"response_bytes":64,"response_ip":"192.168.1.186","icmp_seq":0,"ttl":64,"time_ms":673.123},{"type":"reply","destination_ip":"192.168.1.255","sent_bytes":56,"pattern":null,"response_bytes":64,"response_ip":"192.168.1.75","icmp_seq":0,"ttl":64,"time_ms":673.358},{"type":"reply","destination_ip":"192.168.1.255","sent_bytes":56,"pattern":null,"response_bytes":64,"response_ip":"192.168.1.221","icmp_seq":1,"ttl":64,"time_ms":0.291},{"type":"reply","destination_ip":"192.168.1.255","sent_bytes":56,"pattern":null,"response_bytes":64,"response_ip":"192.168.1.78","icmp_seq":1,"ttl":128,"time_ms":7.898},{"type":"reply","destination_ip":"192.168.1.255","sent_bytes":56,"pattern":null,"response_bytes":64,"response_ip":"192.168.1.88","icmp_seq":1,"ttl":64,"time_ms":7.927},{"type":"reply","destination_ip":"192.168.1.255","sent_bytes":56,"pattern":null,"response_bytes":64,"response_ip":"192.168.1.89","icmp_seq":1,"ttl":64,"time_ms":10.077},{"type":"reply","destination_ip":"192.168.1.255","sent_bytes":56,"pattern":null,"response_bytes":64,"response_ip":"192.168.1.250","icmp_seq":0,"ttl":64,"time_ms":1084.262},{"type":"summary","destination_ip":"192.168.1.255","sent_bytes":56,"pattern":null,"packets_transmitted":2,"packets_received":2,"packet_loss_percent":0.0,"duplicates":13,"round_trip_ms_min":0.235,"round_trip_ms_avg":226.389,"round_trip_ms_max":1084.262,"round_trip_ms_stddev":344.729}]
|
1
tests/fixtures/osx-10.14.6/ping-ip-p-streaming.json
vendored
Normal file
1
tests/fixtures/osx-10.14.6/ping-ip-p-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":"0xff","response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":0,"ttl":64,"time_ms":0.05},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":"0xff","response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":1,"ttl":64,"time_ms":0.104},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":"0xff","response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":2,"ttl":64,"time_ms":0.079},{"type":"summary","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":"0xff","packets_transmitted":3,"packets_received":3,"packet_loss_percent":0.0,"duplicates":0,"round_trip_ms_min":0.05,"round_trip_ms_avg":0.078,"round_trip_ms_max":0.104,"round_trip_ms_stddev":0.022}]
|
1
tests/fixtures/osx-10.14.6/ping-ip-s-streaming.json
vendored
Normal file
1
tests/fixtures/osx-10.14.6/ping-ip-s-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":1400,"pattern":null,"response_bytes":1408,"response_ip":"127.0.0.1","icmp_seq":0,"ttl":64,"time_ms":0.053},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":1400,"pattern":null,"response_bytes":1408,"response_ip":"127.0.0.1","icmp_seq":1,"ttl":64,"time_ms":0.108},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":1400,"pattern":null,"response_bytes":1408,"response_ip":"127.0.0.1","icmp_seq":2,"ttl":64,"time_ms":0.089},{"type":"summary","destination_ip":"127.0.0.1","sent_bytes":1400,"pattern":null,"packets_transmitted":3,"packets_received":3,"packet_loss_percent":0.0,"duplicates":0,"round_trip_ms_min":0.053,"round_trip_ms_avg":0.083,"round_trip_ms_max":0.108,"round_trip_ms_stddev":0.023}]
|
1
tests/fixtures/osx-10.14.6/ping-ip-streaming.json
vendored
Normal file
1
tests/fixtures/osx-10.14.6/ping-ip-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":0,"ttl":64,"time_ms":0.052},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":1,"ttl":64,"time_ms":0.095},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":2,"ttl":64,"time_ms":0.05},{"type":"summary","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"packets_transmitted":3,"packets_received":3,"packet_loss_percent":0.0,"duplicates":0,"round_trip_ms_min":0.05,"round_trip_ms_avg":0.066,"round_trip_ms_max":0.095,"round_trip_ms_stddev":0.021}]
|
1
tests/fixtures/osx-10.14.6/ping-ip-unreachable-streaming.json
vendored
Normal file
1
tests/fixtures/osx-10.14.6/ping-ip-unreachable-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"timeout","destination_ip":"192.168.1.220","sent_bytes":56,"pattern":null,"icmp_seq":0},{"type":"timeout","destination_ip":"192.168.1.220","sent_bytes":56,"pattern":null,"icmp_seq":1},{"type":"destination_host_unreachable","bytes":"92","destination_ip":"192.168.1.220","response_ip":"192.168.1.220"},{"type":"destination_host_unreachable","bytes":"92","destination_ip":"192.168.1.220","response_ip":"192.168.1.220"},{"type":"destination_host_unreachable","bytes":"92","destination_ip":"192.168.1.220","response_ip":"192.168.1.220"},{"type":"timeout","destination_ip":"192.168.1.220","sent_bytes":56,"pattern":null,"icmp_seq":2},{"type":"timeout","destination_ip":"192.168.1.220","sent_bytes":56,"pattern":null,"icmp_seq":3},{"type":"timeout","destination_ip":"192.168.1.220","sent_bytes":56,"pattern":null,"icmp_seq":4},{"type":"destination_host_unreachable","bytes":"92","destination_ip":"192.168.1.220","response_ip":"192.168.1.220"},{"type":"destination_host_unreachable","bytes":"92","destination_ip":"192.168.1.220","response_ip":"192.168.1.220"},{"type":"destination_host_unreachable","bytes":"92","destination_ip":"192.168.1.220","response_ip":"192.168.1.220"},{"type":"timeout","destination_ip":"192.168.1.220","sent_bytes":56,"pattern":null,"icmp_seq":5},{"type":"timeout","destination_ip":"192.168.1.220","sent_bytes":56,"pattern":null,"icmp_seq":6}]
|
1
tests/fixtures/osx-10.14.6/ping6-hostname-p-streaming.json
vendored
Normal file
1
tests/fixtures/osx-10.14.6/ping6-hostname-p-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"2a04:4e42:200::323","sent_bytes":56,"pattern":"0xff","bytes":"16","response_ip":"2a04:4e42:200::323","icmp_seq":0,"ttl":59,"time_ms":32.992},{"type":"reply","destination_ip":"2a04:4e42:200::323","sent_bytes":56,"pattern":"0xff","bytes":"16","response_ip":"2a04:4e42:200::323","icmp_seq":1,"ttl":59,"time_ms":34.757},{"type":"reply","destination_ip":"2a04:4e42:200::323","sent_bytes":56,"pattern":"0xff","bytes":"16","response_ip":"2a04:4e42:200::323","icmp_seq":2,"ttl":59,"time_ms":36.07},{"type":"summary","destination_ip":"2a04:4e42:200::323","sent_bytes":56,"pattern":"0xff","packets_transmitted":3,"packets_received":3,"packet_loss_percent":0.0,"duplicates":0,"round_trip_ms_min":32.992,"round_trip_ms_avg":34.606,"round_trip_ms_max":36.07,"round_trip_ms_stddev":1.261}]
|
1
tests/fixtures/osx-10.14.6/ping6-hostname-s-streaming.json
vendored
Normal file
1
tests/fixtures/osx-10.14.6/ping6-hostname-s-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":128,"pattern":null,"bytes":"88","response_ip":"2a04:4e42:600::323","icmp_seq":0,"ttl":59,"time_ms":26.292},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":128,"pattern":null,"bytes":"88","response_ip":"2a04:4e42:600::323","icmp_seq":1,"ttl":59,"time_ms":64.712},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":128,"pattern":null,"bytes":"88","response_ip":"2a04:4e42:600::323","icmp_seq":2,"ttl":59,"time_ms":25.933},{"type":"summary","destination_ip":"2a04:4e42:600::323","sent_bytes":128,"pattern":null,"packets_transmitted":3,"packets_received":3,"packet_loss_percent":0.0,"duplicates":0,"round_trip_ms_min":25.933,"round_trip_ms_avg":38.979,"round_trip_ms_max":64.712,"round_trip_ms_stddev":18.197}]
|
1
tests/fixtures/osx-10.14.6/ping6-hostname-streaming.json
vendored
Normal file
1
tests/fixtures/osx-10.14.6/ping6-hostname-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"2a04:4e42:200::323","sent_bytes":56,"pattern":null,"bytes":"16","response_ip":"2a04:4e42:200::323","icmp_seq":0,"ttl":59,"time_ms":27.684},{"type":"reply","destination_ip":"2a04:4e42:200::323","sent_bytes":56,"pattern":null,"bytes":"16","response_ip":"2a04:4e42:200::323","icmp_seq":1,"ttl":59,"time_ms":31.824},{"type":"reply","destination_ip":"2a04:4e42:200::323","sent_bytes":56,"pattern":null,"bytes":"16","response_ip":"2a04:4e42:200::323","icmp_seq":2,"ttl":59,"time_ms":30.0},{"type":"summary","destination_ip":"2a04:4e42:200::323","sent_bytes":56,"pattern":null,"packets_transmitted":3,"packets_received":3,"packet_loss_percent":0.0,"duplicates":0,"round_trip_ms_min":27.684,"round_trip_ms_avg":29.836,"round_trip_ms_max":31.824,"round_trip_ms_stddev":1.694}]
|
1
tests/fixtures/osx-10.14.6/ping6-ip-dup-streaming.json
vendored
Normal file
1
tests/fixtures/osx-10.14.6/ping6-ip-dup-streaming.json
vendored
Normal file
File diff suppressed because one or more lines are too long
1
tests/fixtures/osx-10.14.6/ping6-ip-p-streaming.json
vendored
Normal file
1
tests/fixtures/osx-10.14.6/ping6-ip-p-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"::1","sent_bytes":56,"pattern":"0xff","bytes":"16","response_ip":"::1","icmp_seq":0,"ttl":64,"time_ms":0.077},{"type":"reply","destination_ip":"::1","sent_bytes":56,"pattern":"0xff","bytes":"16","response_ip":"::1","icmp_seq":1,"ttl":64,"time_ms":0.156},{"type":"reply","destination_ip":"::1","sent_bytes":56,"pattern":"0xff","bytes":"16","response_ip":"::1","icmp_seq":2,"ttl":64,"time_ms":0.139},{"type":"summary","destination_ip":"::1","sent_bytes":56,"pattern":"0xff","packets_transmitted":3,"packets_received":3,"packet_loss_percent":0.0,"duplicates":0,"round_trip_ms_min":0.077,"round_trip_ms_avg":0.124,"round_trip_ms_max":0.156,"round_trip_ms_stddev":0.034}]
|
1
tests/fixtures/osx-10.14.6/ping6-ip-s-streaming.json
vendored
Normal file
1
tests/fixtures/osx-10.14.6/ping6-ip-s-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"::1","sent_bytes":1448,"pattern":null,"bytes":"1408","response_ip":"::1","icmp_seq":0,"ttl":64,"time_ms":0.093},{"type":"reply","destination_ip":"::1","sent_bytes":1448,"pattern":null,"bytes":"1408","response_ip":"::1","icmp_seq":1,"ttl":64,"time_ms":0.161},{"type":"reply","destination_ip":"::1","sent_bytes":1448,"pattern":null,"bytes":"1408","response_ip":"::1","icmp_seq":2,"ttl":64,"time_ms":0.152},{"type":"summary","destination_ip":"::1","sent_bytes":1448,"pattern":null,"packets_transmitted":3,"packets_received":3,"packet_loss_percent":0.0,"duplicates":0,"round_trip_ms_min":0.093,"round_trip_ms_avg":0.135,"round_trip_ms_max":0.161,"round_trip_ms_stddev":0.03}]
|
1
tests/fixtures/osx-10.14.6/ping6-ip-streaming.json
vendored
Normal file
1
tests/fixtures/osx-10.14.6/ping6-ip-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"::1","sent_bytes":56,"pattern":null,"bytes":"16","response_ip":"::1","icmp_seq":0,"ttl":64,"time_ms":0.071},{"type":"reply","destination_ip":"::1","sent_bytes":56,"pattern":null,"bytes":"16","response_ip":"::1","icmp_seq":1,"ttl":64,"time_ms":0.153},{"type":"reply","destination_ip":"::1","sent_bytes":56,"pattern":null,"bytes":"16","response_ip":"::1","icmp_seq":2,"ttl":64,"time_ms":0.122},{"type":"summary","destination_ip":"::1","sent_bytes":56,"pattern":null,"packets_transmitted":3,"packets_received":3,"packet_loss_percent":0.0,"duplicates":0,"round_trip_ms_min":0.071,"round_trip_ms_avg":0.115,"round_trip_ms_max":0.153,"round_trip_ms_stddev":0.034}]
|
1
tests/fixtures/pi/ping-ip-O-D-streaming.json
vendored
Normal file
1
tests/fixtures/pi/ping-ip-O-D-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"timeout","destination_ip":"192.168.120.164","sent_bytes":56,"pattern":null,"timestamp":1596585008.591169,"icmp_seq":1},{"type":"timeout","destination_ip":"192.168.120.164","sent_bytes":56,"pattern":null,"timestamp":1596585009.631169,"icmp_seq":2},{"type":"timeout","destination_ip":"192.168.120.164","sent_bytes":56,"pattern":null,"timestamp":1596585010.671173,"icmp_seq":3},{"type":"timeout","destination_ip":"192.168.120.164","sent_bytes":56,"pattern":null,"timestamp":1596585011.711167,"icmp_seq":4}]
|
1
tests/fixtures/pi/ping-ip-O-streaming.json
vendored
Normal file
1
tests/fixtures/pi/ping-ip-O-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"timeout","destination_ip":"192.168.120.164","sent_bytes":56,"pattern":null,"timestamp":null,"icmp_seq":1},{"type":"timeout","destination_ip":"192.168.120.164","sent_bytes":56,"pattern":null,"timestamp":null,"icmp_seq":2},{"type":"timeout","destination_ip":"192.168.120.164","sent_bytes":56,"pattern":null,"timestamp":null,"icmp_seq":3},{"type":"timeout","destination_ip":"192.168.120.164","sent_bytes":56,"pattern":null,"timestamp":null,"icmp_seq":4}]
|
1
tests/fixtures/ubuntu-18.04/ls-al-streaming.json
vendored
Normal file
1
tests/fixtures/ubuntu-18.04/ls-al-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"filename":".","flags":"drwxr-xr-x","links":24,"owner":"root","group":"root","size":4096,"date":"Oct 24 06:33"},{"filename":"..","flags":"drwxr-xr-x","links":24,"owner":"root","group":"root","size":4096,"date":"Oct 24 06:33"},{"filename":"bin","flags":"drwxr-xr-x","links":2,"owner":"root","group":"root","size":4096,"date":"Oct 18 00:12"},{"filename":"boot","flags":"drwxr-xr-x","links":3,"owner":"root","group":"root","size":4096,"date":"Oct 25 07:14"},{"filename":"cdrom","flags":"drwxr-xr-x","links":2,"owner":"root","group":"root","size":4096,"date":"Aug 12 17:21"},{"filename":"dev","flags":"drwxr-xr-x","links":19,"owner":"root","group":"root","size":4060,"date":"Oct 24 06:33"},{"filename":"etc","flags":"drwxr-xr-x","links":93,"owner":"root","group":"root","size":4096,"date":"Oct 24 06:32"},{"filename":"home","flags":"drwxr-xr-x","links":3,"owner":"root","group":"root","size":4096,"date":"Aug 12 17:24"},{"filename":"initrd.img","link_to":"boot/initrd.img-4.15.0-66-generic","flags":"lrwxrwxrwx","links":1,"owner":"root","group":"root","size":33,"date":"Oct 24 06:33"},{"filename":"initrd.img.old","link_to":"boot/initrd.img-4.15.0-65-generic","flags":"lrwxrwxrwx","links":1,"owner":"root","group":"root","size":33,"date":"Oct 24 06:33"},{"filename":"lib","flags":"drwxr-xr-x","links":23,"owner":"root","group":"root","size":4096,"date":"Oct 18 00:14"},{"filename":"lib64","flags":"drwxr-xr-x","links":2,"owner":"root","group":"root","size":4096,"date":"Aug 5 19:23"},{"filename":"lost+found","flags":"drwx------","links":2,"owner":"root","group":"root","size":16384,"date":"Aug 12 17:21"},{"filename":"media","flags":"drwxr-xr-x","links":2,"owner":"root","group":"root","size":4096,"date":"Aug 5 19:22"},{"filename":"mnt","flags":"drwxr-xr-x","links":2,"owner":"root","group":"root","size":4096,"date":"Aug 5 19:22"},{"filename":"opt","flags":"drwxr-xr-x","links":3,"owner":"root","group":"root","size":4096,"date":"Aug 14 02:02"},{"filename":"proc","flags":"dr-xr-xr-x","links":184,"owner":"root","group":"root","size":0,"date":"Oct 21 20:17"},{"filename":"root","flags":"drwx------","links":4,"owner":"root","group":"root","size":4096,"date":"Aug 13 23:27"},{"filename":"run","flags":"drwxr-xr-x","links":29,"owner":"root","group":"root","size":1060,"date":"Oct 28 08:49"},{"filename":"sbin","flags":"drwxr-xr-x","links":2,"owner":"root","group":"root","size":12288,"date":"Oct 18 00:11"},{"filename":"snap","flags":"drwxr-xr-x","links":9,"owner":"root","group":"root","size":4096,"date":"Aug 14 02:01"},{"filename":"srv","flags":"drwxr-xr-x","links":2,"owner":"root","group":"root","size":4096,"date":"Aug 5 19:22"},{"filename":"swap.img","flags":"-rw-------","links":1,"owner":"root","group":"root","size":2147483648,"date":"Aug 12 17:22"},{"filename":"sys","flags":"dr-xr-xr-x","links":13,"owner":"root","group":"root","size":0,"date":"Oct 22 00:54"},{"filename":"tmp","flags":"drwxrwxrwt","links":11,"owner":"root","group":"root","size":4096,"date":"Oct 28 19:42"},{"filename":"usr","flags":"drwxr-xr-x","links":10,"owner":"root","group":"root","size":4096,"date":"Aug 5 19:22"},{"filename":"var","flags":"drwxr-xr-x","links":13,"owner":"root","group":"root","size":4096,"date":"Aug 5 19:24"},{"filename":"vmlinuz","link_to":"boot/vmlinuz-4.15.0-66-generic","flags":"lrwxrwxrwx","links":1,"owner":"root","group":"root","size":30,"date":"Oct 24 06:33"},{"filename":"vmlinuz.old","link_to":"boot/vmlinuz-4.15.0-65-generic","flags":"lrwxrwxrwx","links":1,"owner":"root","group":"root","size":30,"date":"Oct 24 06:33"}]
|
1
tests/fixtures/ubuntu-18.04/ls-alR-streaming.json
vendored
Normal file
1
tests/fixtures/ubuntu-18.04/ls-alR-streaming.json
vendored
Normal file
File diff suppressed because one or more lines are too long
1
tests/fixtures/ubuntu-18.04/ls-alh-streaming.json
vendored
Normal file
1
tests/fixtures/ubuntu-18.04/ls-alh-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"filename":".","flags":"drwxr-xr-x","links":24,"owner":"root","group":"root","size":4,"date":"Oct 24 06:33"},{"filename":"..","flags":"drwxr-xr-x","links":24,"owner":"root","group":"root","size":4,"date":"Oct 24 06:33"},{"filename":"bin","flags":"drwxr-xr-x","links":2,"owner":"root","group":"root","size":4,"date":"Oct 18 00:12"},{"filename":"boot","flags":"drwxr-xr-x","links":3,"owner":"root","group":"root","size":4,"date":"Oct 25 07:14"},{"filename":"cdrom","flags":"drwxr-xr-x","links":2,"owner":"root","group":"root","size":4,"date":"Aug 12 17:21"},{"filename":"dev","flags":"drwxr-xr-x","links":19,"owner":"root","group":"root","size":4,"date":"Oct 24 06:33"},{"filename":"etc","flags":"drwxr-xr-x","links":93,"owner":"root","group":"root","size":4,"date":"Oct 24 06:32"},{"filename":"home","flags":"drwxr-xr-x","links":3,"owner":"root","group":"root","size":4,"date":"Aug 12 17:24"},{"filename":"initrd.img","link_to":"boot/initrd.img-4.15.0-66-generic","flags":"lrwxrwxrwx","links":1,"owner":"root","group":"root","size":33,"date":"Oct 24 06:33"},{"filename":"initrd.img.old","link_to":"boot/initrd.img-4.15.0-65-generic","flags":"lrwxrwxrwx","links":1,"owner":"root","group":"root","size":33,"date":"Oct 24 06:33"},{"filename":"lib","flags":"drwxr-xr-x","links":23,"owner":"root","group":"root","size":4,"date":"Oct 18 00:14"},{"filename":"lib64","flags":"drwxr-xr-x","links":2,"owner":"root","group":"root","size":4,"date":"Aug 5 19:23"},{"filename":"lost+found","flags":"drwx------","links":2,"owner":"root","group":"root","size":16,"date":"Aug 12 17:21"},{"filename":"media","flags":"drwxr-xr-x","links":2,"owner":"root","group":"root","size":4,"date":"Aug 5 19:22"},{"filename":"mnt","flags":"drwxr-xr-x","links":2,"owner":"root","group":"root","size":4,"date":"Aug 5 19:22"},{"filename":"opt","flags":"drwxr-xr-x","links":3,"owner":"root","group":"root","size":4,"date":"Aug 14 02:02"},{"filename":"proc","flags":"dr-xr-xr-x","links":184,"owner":"root","group":"root","size":0,"date":"Oct 21 20:17"},{"filename":"root","flags":"drwx------","links":4,"owner":"root","group":"root","size":4,"date":"Aug 13 23:27"},{"filename":"run","flags":"drwxr-xr-x","links":29,"owner":"root","group":"root","size":1,"date":"Oct 28 08:49"},{"filename":"sbin","flags":"drwxr-xr-x","links":2,"owner":"root","group":"root","size":12,"date":"Oct 18 00:11"},{"filename":"snap","flags":"drwxr-xr-x","links":9,"owner":"root","group":"root","size":4,"date":"Aug 14 02:01"},{"filename":"srv","flags":"drwxr-xr-x","links":2,"owner":"root","group":"root","size":4,"date":"Aug 5 19:22"},{"filename":"swap.img","flags":"-rw-------","links":1,"owner":"root","group":"root","size":2,"date":"Aug 12 17:22"},{"filename":"sys","flags":"dr-xr-xr-x","links":13,"owner":"root","group":"root","size":0,"date":"Oct 22 00:54"},{"filename":"tmp","flags":"drwxrwxrwt","links":11,"owner":"root","group":"root","size":4,"date":"Oct 28 19:42"},{"filename":"usr","flags":"drwxr-xr-x","links":10,"owner":"root","group":"root","size":4,"date":"Aug 5 19:22"},{"filename":"var","flags":"drwxr-xr-x","links":13,"owner":"root","group":"root","size":4,"date":"Aug 5 19:24"},{"filename":"vmlinuz","link_to":"boot/vmlinuz-4.15.0-66-generic","flags":"lrwxrwxrwx","links":1,"owner":"root","group":"root","size":30,"date":"Oct 24 06:33"},{"filename":"vmlinuz.old","link_to":"boot/vmlinuz-4.15.0-65-generic","flags":"lrwxrwxrwx","links":1,"owner":"root","group":"root","size":30,"date":"Oct 24 06:33"}]
|
1
tests/fixtures/ubuntu-18.04/ls-l-iso-streaming.json
vendored
Normal file
1
tests/fixtures/ubuntu-18.04/ls-l-iso-streaming.json
vendored
Normal file
File diff suppressed because one or more lines are too long
1
tests/fixtures/ubuntu-18.04/ping-hostname-O-D-p-s-streaming.json
vendored
Normal file
1
tests/fixtures/ubuntu-18.04/ping-hostname-O-D-p-s-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595103464.996693,"response_bytes":1408,"response_ip":"151.101.189.67","icmp_seq":1,"ttl":59,"time_ms":26.7,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595103466.001289,"response_bytes":1408,"response_ip":"151.101.189.67","icmp_seq":2,"ttl":59,"time_ms":28.5,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595103467.004316,"response_bytes":1408,"response_ip":"151.101.189.67","icmp_seq":3,"ttl":59,"time_ms":28.8,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595103468.009966,"response_bytes":1408,"response_ip":"151.101.189.67","icmp_seq":4,"ttl":59,"time_ms":33.2,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595103469.013655,"response_bytes":1408,"response_ip":"151.101.189.67","icmp_seq":5,"ttl":59,"time_ms":34.4,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595103470.014253,"response_bytes":1408,"response_ip":"151.101.189.67","icmp_seq":6,"ttl":59,"time_ms":34.2,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595103471.02653,"response_bytes":1408,"response_ip":"151.101.189.67","icmp_seq":7,"ttl":59,"time_ms":44.1,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595103472.019493,"response_bytes":1408,"response_ip":"151.101.189.67","icmp_seq":8,"ttl":59,"time_ms":34.9,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595103473.021432,"response_bytes":1408,"response_ip":"151.101.189.67","icmp_seq":9,"ttl":59,"time_ms":35.6,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595103474.015603,"response_bytes":1408,"response_ip":"151.101.189.67","icmp_seq":10,"ttl":59,"time_ms":27.4,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595103475.02676,"response_bytes":1408,"response_ip":"151.101.189.67","icmp_seq":11,"ttl":59,"time_ms":36.9,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595103476.02693,"response_bytes":1408,"response_ip":"151.101.189.67","icmp_seq":12,"ttl":59,"time_ms":35.7,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595103477.031093,"response_bytes":1408,"response_ip":"151.101.189.67","icmp_seq":13,"ttl":59,"time_ms":36.8,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595103478.028918,"response_bytes":1408,"response_ip":"151.101.189.67","icmp_seq":14,"ttl":59,"time_ms":33.1,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595103479.032238,"response_bytes":1408,"response_ip":"151.101.189.67","icmp_seq":15,"ttl":59,"time_ms":35.6,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595103480.032097,"response_bytes":1408,"response_ip":"151.101.189.67","icmp_seq":16,"ttl":59,"time_ms":33.3,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595103481.034546,"response_bytes":1408,"response_ip":"151.101.189.67","icmp_seq":17,"ttl":59,"time_ms":34.8,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595103482.037939,"response_bytes":1408,"response_ip":"151.101.189.67","icmp_seq":18,"ttl":59,"time_ms":35.7,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595103483.041514,"response_bytes":1408,"response_ip":"151.101.189.67","icmp_seq":19,"ttl":59,"time_ms":35.8,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595103484.03911,"response_bytes":1408,"response_ip":"151.101.189.67","icmp_seq":20,"ttl":59,"time_ms":29.3,"duplicate":false},{"type":"summary","destination_ip":"151.101.189.67","sent_bytes":1400,"pattern":"0xabcd","packets_transmitted":20,"packets_received":20,"packet_loss_percent":0.0,"duplicates":0,"time_ms":19040.0,"round_trip_ms_min":26.767,"round_trip_ms_avg":33.782,"round_trip_ms_max":44.159,"round_trip_ms_stddev":3.954}]
|
1
tests/fixtures/ubuntu-18.04/ping-hostname-O-p-streaming.json
vendored
Normal file
1
tests/fixtures/ubuntu-18.04/ping-hostname-O-p-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":1,"ttl":59,"time_ms":26.6,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":2,"ttl":59,"time_ms":26.8,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":3,"ttl":59,"time_ms":34.8,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":4,"ttl":59,"time_ms":34.2,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":5,"ttl":59,"time_ms":32.6,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":6,"ttl":59,"time_ms":25.6,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":7,"ttl":59,"time_ms":33.1,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":8,"ttl":59,"time_ms":34.8,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":9,"ttl":59,"time_ms":27.1,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":10,"ttl":59,"time_ms":32.9,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":11,"ttl":59,"time_ms":32.6,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":12,"ttl":59,"time_ms":32.0,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":13,"ttl":59,"time_ms":24.7,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":14,"ttl":59,"time_ms":34.6,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":15,"ttl":59,"time_ms":35.2,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":16,"ttl":59,"time_ms":33.3,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":17,"ttl":59,"time_ms":74.5,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":18,"ttl":59,"time_ms":31.8,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":19,"ttl":59,"time_ms":85.3,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":20,"ttl":59,"time_ms":143.0,"duplicate":false},{"type":"summary","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":"0xabcd","packets_transmitted":20,"packets_received":20,"packet_loss_percent":0.0,"duplicates":0,"time_ms":19052.0,"round_trip_ms_min":24.785,"round_trip_ms_avg":41.856,"round_trip_ms_max":143.789,"round_trip_ms_stddev":27.768}]
|
1
tests/fixtures/ubuntu-18.04/ping-hostname-O-streaming.json
vendored
Normal file
1
tests/fixtures/ubuntu-18.04/ping-hostname-O-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":1,"ttl":59,"time_ms":26.3,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":2,"ttl":59,"time_ms":24.3,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":3,"ttl":59,"time_ms":32.5,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":4,"ttl":59,"time_ms":33.1,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":5,"ttl":59,"time_ms":32.5,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":6,"ttl":59,"time_ms":26.1,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":7,"ttl":59,"time_ms":34.2,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":8,"ttl":59,"time_ms":24.6,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":9,"ttl":59,"time_ms":34.7,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":10,"ttl":59,"time_ms":33.8,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":11,"ttl":59,"time_ms":33.9,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":12,"ttl":59,"time_ms":28.4,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":13,"ttl":59,"time_ms":33.2,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":14,"ttl":59,"time_ms":26.3,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":15,"ttl":59,"time_ms":27.0,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":16,"ttl":59,"time_ms":33.8,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":17,"ttl":59,"time_ms":35.2,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":18,"ttl":59,"time_ms":26.4,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":19,"ttl":59,"time_ms":34.1,"duplicate":false},{"type":"reply","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"151.101.189.67","icmp_seq":20,"ttl":59,"time_ms":27.1,"duplicate":false},{"type":"summary","destination_ip":"151.101.189.67","sent_bytes":56,"pattern":null,"packets_transmitted":20,"packets_received":20,"packet_loss_percent":0.0,"duplicates":0,"time_ms":19290.0,"round_trip_ms_min":24.33,"round_trip_ms_avg":30.42,"round_trip_ms_max":35.259,"round_trip_ms_stddev":3.84}]
|
1
tests/fixtures/ubuntu-18.04/ping-ip-O-D-streaming.json
vendored
Normal file
1
tests/fixtures/ubuntu-18.04/ping-ip-O-D-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595102903.313934,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":1,"ttl":64,"time_ms":0.017,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595102904.33341,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":2,"ttl":64,"time_ms":0.033,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595102905.35791,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":3,"ttl":64,"time_ms":0.041,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595102906.3814,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":4,"ttl":64,"time_ms":0.039,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595102907.406752,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":5,"ttl":64,"time_ms":0.05,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595102908.430739,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":6,"ttl":64,"time_ms":0.05,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595102909.454753,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":7,"ttl":64,"time_ms":0.051,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595102910.478765,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":8,"ttl":64,"time_ms":0.05,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595102911.50115,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":9,"ttl":64,"time_ms":0.027,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595102912.525888,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":10,"ttl":64,"time_ms":0.051,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595102913.550088,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":11,"ttl":64,"time_ms":0.05,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595102914.574405,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":12,"ttl":64,"time_ms":0.04,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595102915.598696,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":13,"ttl":64,"time_ms":0.05,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595102916.622554,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":14,"ttl":64,"time_ms":0.049,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595102917.646755,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":15,"ttl":64,"time_ms":0.05,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595102918.670765,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":16,"ttl":64,"time_ms":0.051,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595102919.693157,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":17,"ttl":64,"time_ms":0.05,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595102920.717034,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":18,"ttl":64,"time_ms":0.038,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595102921.741629,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":19,"ttl":64,"time_ms":0.05,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":1595102922.766421,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":20,"ttl":64,"time_ms":0.05,"duplicate":false},{"type":"summary","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"packets_transmitted":20,"packets_received":20,"packet_loss_percent":0.0,"duplicates":0,"time_ms":19452.0,"round_trip_ms_min":0.017,"round_trip_ms_avg":0.044,"round_trip_ms_max":0.051,"round_trip_ms_stddev":0.01}]
|
1
tests/fixtures/ubuntu-18.04/ping-ip-O-streaming.json
vendored
Normal file
1
tests/fixtures/ubuntu-18.04/ping-ip-O-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":1,"ttl":64,"time_ms":0.02,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":2,"ttl":64,"time_ms":0.043,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":3,"ttl":64,"time_ms":0.05,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":4,"ttl":64,"time_ms":0.051,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":5,"ttl":64,"time_ms":0.051,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":6,"ttl":64,"time_ms":0.027,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":7,"ttl":64,"time_ms":0.05,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":8,"ttl":64,"time_ms":0.051,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":9,"ttl":64,"time_ms":0.051,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":10,"ttl":64,"time_ms":0.051,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":11,"ttl":64,"time_ms":0.051,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":12,"ttl":64,"time_ms":0.05,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":13,"ttl":64,"time_ms":0.05,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":14,"ttl":64,"time_ms":0.041,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":15,"ttl":64,"time_ms":0.052,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":16,"ttl":64,"time_ms":0.057,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":17,"ttl":64,"time_ms":0.05,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":18,"ttl":64,"time_ms":0.051,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":19,"ttl":64,"time_ms":0.05,"duplicate":false},{"type":"reply","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"timestamp":null,"response_bytes":64,"response_ip":"127.0.0.1","icmp_seq":20,"ttl":64,"time_ms":0.049,"duplicate":false},{"type":"summary","destination_ip":"127.0.0.1","sent_bytes":56,"pattern":null,"packets_transmitted":20,"packets_received":20,"packet_loss_percent":0.0,"duplicates":0,"time_ms":19434.0,"round_trip_ms_min":0.02,"round_trip_ms_avg":0.047,"round_trip_ms_max":0.057,"round_trip_ms_stddev":0.01}]
|
1
tests/fixtures/ubuntu-18.04/ping6-hostname-O-D-p-s-streaming.json
vendored
Normal file
1
tests/fixtures/ubuntu-18.04/ping6-hostname-O-D-p-s-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595102963.207191,"response_bytes":1408,"response_ip":"2a04:4e42:2d::323","icmp_seq":1,"ttl":59,"time_ms":162.0,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595102964.072572,"response_bytes":1408,"response_ip":"2a04:4e42:2d::323","icmp_seq":2,"ttl":59,"time_ms":26.2,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595102965.083093,"response_bytes":1408,"response_ip":"2a04:4e42:2d::323","icmp_seq":3,"ttl":59,"time_ms":34.0,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595102966.086221,"response_bytes":1408,"response_ip":"2a04:4e42:2d::323","icmp_seq":4,"ttl":59,"time_ms":34.6,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595102967.088365,"response_bytes":1408,"response_ip":"2a04:4e42:2d::323","icmp_seq":5,"ttl":59,"time_ms":32.9,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595102968.090956,"response_bytes":1408,"response_ip":"2a04:4e42:2d::323","icmp_seq":6,"ttl":59,"time_ms":33.5,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595102969.088229,"response_bytes":1408,"response_ip":"2a04:4e42:2d::323","icmp_seq":7,"ttl":59,"time_ms":27.6,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595102970.08863,"response_bytes":1408,"response_ip":"2a04:4e42:2d::323","icmp_seq":8,"ttl":59,"time_ms":25.0,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595102971.093828,"response_bytes":1408,"response_ip":"2a04:4e42:2d::323","icmp_seq":9,"ttl":59,"time_ms":27.0,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595102972.104782,"response_bytes":1408,"response_ip":"2a04:4e42:2d::323","icmp_seq":10,"ttl":59,"time_ms":35.3,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595102973.098518,"response_bytes":1408,"response_ip":"2a04:4e42:2d::323","icmp_seq":11,"ttl":59,"time_ms":27.1,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595102974.108744,"response_bytes":1408,"response_ip":"2a04:4e42:2d::323","icmp_seq":12,"ttl":59,"time_ms":36.0,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595102975.104919,"response_bytes":1408,"response_ip":"2a04:4e42:2d::323","icmp_seq":13,"ttl":59,"time_ms":30.4,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595102976.103486,"response_bytes":1408,"response_ip":"2a04:4e42:2d::323","icmp_seq":14,"ttl":59,"time_ms":26.1,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595102977.107027,"response_bytes":1408,"response_ip":"2a04:4e42:2d::323","icmp_seq":15,"ttl":59,"time_ms":27.2,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595102978.111345,"response_bytes":1408,"response_ip":"2a04:4e42:2d::323","icmp_seq":16,"ttl":59,"time_ms":28.3,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595102979.121028,"response_bytes":1408,"response_ip":"2a04:4e42:2d::323","icmp_seq":17,"ttl":59,"time_ms":35.9,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595102980.116465,"response_bytes":1408,"response_ip":"2a04:4e42:2d::323","icmp_seq":18,"ttl":59,"time_ms":28.8,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595102981.126039,"response_bytes":1408,"response_ip":"2a04:4e42:2d::323","icmp_seq":19,"ttl":59,"time_ms":34.7,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":1400,"pattern":"0xabcd","timestamp":1595102982.12868,"response_bytes":1408,"response_ip":"2a04:4e42:2d::323","icmp_seq":20,"ttl":59,"time_ms":34.3,"duplicate":false},{"type":"summary","destination_ip":"2a04:4e42:2d::323","sent_bytes":1400,"pattern":"0xabcd","packets_transmitted":20,"packets_received":20,"packet_loss_percent":0.0,"duplicates":0,"time_ms":19050.0,"round_trip_ms_min":25.086,"round_trip_ms_avg":37.398,"round_trip_ms_max":162.132,"round_trip_ms_stddev":28.854}]
|
1
tests/fixtures/ubuntu-18.04/ping6-hostname-O-p-streaming.json
vendored
Normal file
1
tests/fixtures/ubuntu-18.04/ping6-hostname-O-p-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:2d::323","icmp_seq":1,"ttl":59,"time_ms":25.4,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:2d::323","icmp_seq":2,"ttl":59,"time_ms":27.6,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:2d::323","icmp_seq":3,"ttl":59,"time_ms":26.5,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:2d::323","icmp_seq":4,"ttl":59,"time_ms":34.4,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:2d::323","icmp_seq":5,"ttl":59,"time_ms":27.5,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:2d::323","icmp_seq":6,"ttl":59,"time_ms":34.5,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:2d::323","icmp_seq":7,"ttl":59,"time_ms":26.6,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:2d::323","icmp_seq":8,"ttl":59,"time_ms":35.3,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:2d::323","icmp_seq":9,"ttl":59,"time_ms":26.8,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:2d::323","icmp_seq":10,"ttl":59,"time_ms":33.1,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:2d::323","icmp_seq":11,"ttl":59,"time_ms":33.5,"duplicate":false},{"type":"timeout","destination_ip":"2a04:4e42:2d::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"icmp_seq":12},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:2d::323","icmp_seq":13,"ttl":59,"time_ms":25.2,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:2d::323","icmp_seq":14,"ttl":59,"time_ms":25.2,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:2d::323","icmp_seq":15,"ttl":59,"time_ms":36.5,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:2d::323","icmp_seq":16,"ttl":59,"time_ms":34.4,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:2d::323","icmp_seq":17,"ttl":59,"time_ms":35.4,"duplicate":false},{"type":"timeout","destination_ip":"2a04:4e42:2d::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"icmp_seq":18},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:2d::323","icmp_seq":19,"ttl":59,"time_ms":151.0,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:2d::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:2d::323","icmp_seq":20,"ttl":59,"time_ms":51.5,"duplicate":false},{"type":"summary","destination_ip":"2a04:4e42:2d::323","sent_bytes":56,"pattern":"0xabcd","packets_transmitted":20,"packets_received":18,"packet_loss_percent":10.0,"duplicates":0,"time_ms":19081.0,"round_trip_ms_min":25.229,"round_trip_ms_avg":38.451,"round_trip_ms_max":151.911,"round_trip_ms_stddev":28.221}]
|
1
tests/fixtures/ubuntu-18.04/ping6-ip-O-D-p-streaming.json
vendored
Normal file
1
tests/fixtures/ubuntu-18.04/ping6-ip-O-D-p-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1595102942.853155,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":1,"ttl":59,"time_ms":28.4,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1595102943.857295,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":2,"ttl":59,"time_ms":29.4,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1595102944.861751,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":3,"ttl":59,"time_ms":31.2,"duplicate":false},{"type":"timeout","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1595102946.861681,"icmp_seq":4},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1595102946.891881,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":5,"ttl":59,"time_ms":30.0,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1595102947.884818,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":6,"ttl":59,"time_ms":22.0,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1595102948.89152,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":7,"ttl":59,"time_ms":27.2,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1595102949.897424,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":8,"ttl":59,"time_ms":30.5,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1595102950.89982,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":9,"ttl":59,"time_ms":29.0,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1595102951.905148,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":10,"ttl":59,"time_ms":31.3,"duplicate":false},{"type":"timeout","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1595102953.901458,"icmp_seq":11},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1595102953.93159,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":12,"ttl":59,"time_ms":29.9,"duplicate":false},{"type":"timeout","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1595102955.918953,"icmp_seq":13},{"type":"timeout","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1595102956.942898,"icmp_seq":14},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1595102956.973463,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":15,"ttl":59,"time_ms":30.4,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1595102957.966655,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":16,"ttl":59,"time_ms":21.4,"duplicate":false},{"type":"timeout","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1595102959.981759,"icmp_seq":17},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1595102960.035095,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":18,"ttl":59,"time_ms":53.2,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1595102961.106079,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":19,"ttl":59,"time_ms":121.0,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":1595102962.145647,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":20,"ttl":59,"time_ms":159.0,"duplicate":false},{"type":"summary","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","packets_transmitted":20,"packets_received":15,"packet_loss_percent":25.0,"duplicates":0,"time_ms":19161.0,"round_trip_ms_min":21.405,"round_trip_ms_avg":45.041,"round_trip_ms_max":159.38,"round_trip_ms_stddev":38.693}]
|
1
tests/fixtures/ubuntu-18.04/ping6-ip-O-p-streaming.json
vendored
Normal file
1
tests/fixtures/ubuntu-18.04/ping6-ip-O-p-streaming.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
[{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":1,"ttl":59,"time_ms":26.8,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":2,"ttl":59,"time_ms":24.6,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":3,"ttl":59,"time_ms":23.6,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":4,"ttl":59,"time_ms":21.7,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":5,"ttl":59,"time_ms":28.4,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":6,"ttl":59,"time_ms":23.0,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":7,"ttl":59,"time_ms":21.4,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":8,"ttl":59,"time_ms":22.3,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":9,"ttl":59,"time_ms":22.3,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":10,"ttl":59,"time_ms":29.3,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":11,"ttl":59,"time_ms":22.6,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":12,"ttl":59,"time_ms":22.7,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":13,"ttl":59,"time_ms":29.9,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":14,"ttl":59,"time_ms":22.0,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":15,"ttl":59,"time_ms":30.1,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":16,"ttl":59,"time_ms":24.2,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":17,"ttl":59,"time_ms":22.9,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":18,"ttl":59,"time_ms":24.5,"duplicate":false},{"type":"reply","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","timestamp":null,"response_bytes":64,"response_ip":"2a04:4e42:600::323","icmp_seq":19,"ttl":59,"time_ms":29.9,"duplicate":false},{"type":"summary","destination_ip":"2a04:4e42:600::323","sent_bytes":56,"pattern":"0xabcd","packets_transmitted":20,"packets_received":19,"packet_loss_percent":5.0,"duplicates":0,"time_ms":19046.0,"round_trip_ms_min":21.403,"round_trip_ms_avg":24.901,"round_trip_ms_max":30.176,"round_trip_ms_stddev":3.056}]
|
184
tests/test_ls_s.py
Normal file
184
tests/test_ls_s.py
Normal file
@ -0,0 +1,184 @@
|
|||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import time
|
||||||
|
import json
|
||||||
|
import unittest
|
||||||
|
from jc.exceptions import ParseError
|
||||||
|
import jc.parsers.ls_s
|
||||||
|
|
||||||
|
THIS_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
|
||||||
|
# Set the timezone on POSIX systems. Need to manually set for Windows tests
|
||||||
|
if not sys.platform.startswith('win32'):
|
||||||
|
os.environ['TZ'] = 'America/Los_Angeles'
|
||||||
|
time.tzset()
|
||||||
|
|
||||||
|
|
||||||
|
# To create streaming output use:
|
||||||
|
# $ cat ls-al.out | jc --ls-s | jello -c > ls-al-streaming.json
|
||||||
|
|
||||||
|
|
||||||
|
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()
|
||||||
|
|
||||||
|
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/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/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.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/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/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/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.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/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/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/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-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/ubuntu-18.04/ls-l-iso.out'), 'r', encoding='utf-8') as f:
|
||||||
|
self.ubuntu_18_4_ls_l_iso = f.read()
|
||||||
|
|
||||||
|
# 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/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/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/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/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/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/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/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/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-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/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_empty_dir(self):
|
||||||
|
"""
|
||||||
|
Test plain 'ls' on an empty directory
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ls_s.parse('', quiet=True)), [])
|
||||||
|
|
||||||
|
def test_ls_centos_7_7(self):
|
||||||
|
"""
|
||||||
|
Test plain 'ls /' on Centos 7.7 (raises ParseError)
|
||||||
|
"""
|
||||||
|
g = jc.parsers.ls_s.parse(self.centos_7_7_ls.splitlines())
|
||||||
|
with self.assertRaises(ParseError):
|
||||||
|
list(g)
|
||||||
|
|
||||||
|
def test_ls_al_centos_7_7(self):
|
||||||
|
"""
|
||||||
|
Test 'ls -al /' on Centos 7.7
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ls_s.parse(self.centos_7_7_ls_al.splitlines())), self.centos_7_7_ls_al_streaming_json)
|
||||||
|
|
||||||
|
def test_ls_al_ubuntu_18_4(self):
|
||||||
|
"""
|
||||||
|
Test 'ls -al /' on Ubuntu 18.4
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ls_s.parse(self.ubuntu_18_4_ls_al.splitlines())), self.ubuntu_18_4_ls_al_streaming_json)
|
||||||
|
|
||||||
|
def test_ls_al_osx_10_14_6(self):
|
||||||
|
"""
|
||||||
|
Test 'ls -al /' on OSX 10.14.6
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ls_s.parse(self.osx_10_14_6_ls_al.splitlines())), self.osx_10_14_6_ls_al_streaming_json)
|
||||||
|
|
||||||
|
def test_ls_alh_centos_7_7(self):
|
||||||
|
"""
|
||||||
|
Test 'ls -alh /' on Centos 7.7
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ls_s.parse(self.centos_7_7_ls_alh.splitlines())), self.centos_7_7_ls_alh_streaming_json)
|
||||||
|
|
||||||
|
def test_ls_alh_ubuntu_18_4(self):
|
||||||
|
"""
|
||||||
|
Test 'ls -alh /' on Ubuntu 18.4
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ls_s.parse(self.ubuntu_18_4_ls_alh.splitlines())), self.ubuntu_18_4_ls_alh_streaming_json)
|
||||||
|
|
||||||
|
def test_ls_alh_osx_10_14_6(self):
|
||||||
|
"""
|
||||||
|
Test 'ls -alh /' on OSX 10.14.6
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ls_s.parse(self.osx_10_14_6_ls_alh.splitlines())), self.osx_10_14_6_ls_alh_streaming_json)
|
||||||
|
|
||||||
|
def test_ls_alR_centos_7_7(self):
|
||||||
|
"""
|
||||||
|
Test 'ls -alR /usr' on Centos 7.7
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ls_s.parse(self.centos_7_7_ls_alR.splitlines())), self.centos_7_7_ls_alR_streaming_json)
|
||||||
|
|
||||||
|
def test_ls_alR_ubuntu_18_4(self):
|
||||||
|
"""
|
||||||
|
Test 'ls -alR /usr' on Ubuntu 18.4
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ls_s.parse(self.ubuntu_18_4_ls_alR.splitlines())), self.ubuntu_18_4_ls_alR_streaming_json)
|
||||||
|
|
||||||
|
def test_ls_alR_osx_10_14_6(self):
|
||||||
|
"""
|
||||||
|
Test 'ls -alR /usr' on OSX 10.14.6
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ls_s.parse(self.osx_10_14_6_ls_alR.splitlines())), self.osx_10_14_6_ls_alR_streaming_json)
|
||||||
|
|
||||||
|
def test_ls_lR_empty_folder_osx_10_14_6(self):
|
||||||
|
"""
|
||||||
|
Test 'ls -lR' for empty directories on OSX 10.14.6
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ls_s.parse(self.osx_10_14_6_ls_lR_empty_folder.splitlines())), self.osx_10_14_6_ls_lR_empty_folder_streaming_json)
|
||||||
|
|
||||||
|
def test_ls_l_iso_ubuntu_18_4(self):
|
||||||
|
"""
|
||||||
|
Test 'ls -l --time-style=full-iso' for files with convertible dates on Ubuntu 18.4
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ls_s.parse(self.ubuntu_18_4_ls_l_iso.splitlines())), self.ubuntu_18_4_ls_l_iso_streaming_json)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main()
|
798
tests/test_ping_s.py
Normal file
798
tests/test_ping_s.py
Normal file
@ -0,0 +1,798 @@
|
|||||||
|
import os
|
||||||
|
import unittest
|
||||||
|
import json
|
||||||
|
from jc.exceptions import ParseError
|
||||||
|
import jc.parsers.ping_s
|
||||||
|
|
||||||
|
THIS_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
|
||||||
|
|
||||||
|
# To create streaming output use:
|
||||||
|
# $ cat ping.out | jc --ping-s | jello -c > ping-streaming.json
|
||||||
|
|
||||||
|
|
||||||
|
class MyTests(unittest.TestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
# 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()
|
||||||
|
|
||||||
|
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-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-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-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/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-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-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-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-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/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/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/ping-ip-O-unparsedlines.out'), 'r', encoding='utf-8') as f:
|
||||||
|
self.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()
|
||||||
|
|
||||||
|
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-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-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-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/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-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-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-D-p-s.out'), 'r', encoding='utf-8') as f:
|
||||||
|
self.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()
|
||||||
|
|
||||||
|
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-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-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-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/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-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-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-D-p-s.out'), 'r', encoding='utf-8') as f:
|
||||||
|
self.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()
|
||||||
|
|
||||||
|
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.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-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-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.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/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-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.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-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-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.out'), 'r', encoding='utf-8') as f:
|
||||||
|
self.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()
|
||||||
|
|
||||||
|
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.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-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-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.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-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-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/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-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.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-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-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.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-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/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/ping6-ip-dup.out'), 'r', encoding='utf-8') as f:
|
||||||
|
self.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()
|
||||||
|
|
||||||
|
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()
|
||||||
|
|
||||||
|
# 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())
|
||||||
|
|
||||||
|
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/ping-ip-O-streaming-quiet.json'), 'r', encoding='utf-8') as f:
|
||||||
|
self.centos_7_7_ping_ip_O_streaming_quiet_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-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-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-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/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-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-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-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/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/ping6-ip-dup-streaming.json'), 'r', encoding='utf-8') as f:
|
||||||
|
self.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())
|
||||||
|
|
||||||
|
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-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-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-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/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-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-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-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())
|
||||||
|
|
||||||
|
# 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())
|
||||||
|
|
||||||
|
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-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-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-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/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-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-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-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())
|
||||||
|
|
||||||
|
# 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())
|
||||||
|
|
||||||
|
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-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-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-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-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/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-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-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-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-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-streaming.json'), 'r', encoding='utf-8') as f:
|
||||||
|
self.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())
|
||||||
|
|
||||||
|
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-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-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-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-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-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/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-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-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-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-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-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/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/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())
|
||||||
|
|
||||||
|
# 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())
|
||||||
|
|
||||||
|
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_nodata(self):
|
||||||
|
"""
|
||||||
|
Test 'ping' with no data
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse('')), [])
|
||||||
|
|
||||||
|
def test_ping_quiet_success(self):
|
||||||
|
"""
|
||||||
|
Test 'ping' with quiet option
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.centos_7_7_ping_ip_O.splitlines(), quiet=True)), self.centos_7_7_ping_ip_O_streaming_quiet_json)
|
||||||
|
|
||||||
|
def test_ping_quiet_error(self):
|
||||||
|
"""
|
||||||
|
Test 'ping' with quiet option and error
|
||||||
|
"""
|
||||||
|
data_in = 'not ping'
|
||||||
|
expected = json.loads('[{"_meta":{"success":false,"error":"Could not detect ping OS","line":"not ping"}}]')
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(data_in.splitlines(), quiet=True)), expected)
|
||||||
|
|
||||||
|
def test_ping_ip_O_centos_7_7(self):
|
||||||
|
"""
|
||||||
|
Test 'ping <ip> -O' on Centos 7.7
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.centos_7_7_ping_ip_O.splitlines())), self.centos_7_7_ping_ip_O_streaming_json)
|
||||||
|
|
||||||
|
def test_ping_ip_O_D_centos_7_7(self):
|
||||||
|
"""
|
||||||
|
Test 'ping <ip> -O -D' on Centos 7.7
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.centos_7_7_ping_ip_O_D.splitlines())), self.centos_7_7_ping_ip_O_D_streaming_json)
|
||||||
|
|
||||||
|
def test_ping_hostname_O_centos_7_7(self):
|
||||||
|
"""
|
||||||
|
Test 'ping <hostname> -O' on Centos 7.7
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.centos_7_7_ping_hostname_O.splitlines())), self.centos_7_7_ping_hostname_O_streaming_json)
|
||||||
|
|
||||||
|
def test_ping_hostname_O_p_centos_7_7(self):
|
||||||
|
"""
|
||||||
|
Test 'ping <hostname> -O -p' on Centos 7.7
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.centos_7_7_ping_hostname_O_p.splitlines())), self.centos_7_7_ping_hostname_O_p_streaming_json)
|
||||||
|
|
||||||
|
def test_ping_hostname_O_D_p_s_centos_7_7(self):
|
||||||
|
"""
|
||||||
|
Test 'ping <hostname> -O -D -p -s' on Centos 7.7
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.centos_7_7_ping_hostname_O_D_p_s.splitlines())), self.centos_7_7_ping_hostname_O_D_p_s_streaming_json)
|
||||||
|
|
||||||
|
def test_ping6_ip_O_p_centos_7_7(self):
|
||||||
|
"""
|
||||||
|
Test 'ping6 <ip> -O -p' on Centos 7.7
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.centos_7_7_ping6_ip_O_p.splitlines())), self.centos_7_7_ping6_ip_O_p_streaming_json)
|
||||||
|
|
||||||
|
def test_ping6_ip_O_p_unparsable_centos_7_7(self):
|
||||||
|
"""
|
||||||
|
Test 'ping6 <ip> -O -p' with unparsable lines on Centos 7.7 (raises IndexError)
|
||||||
|
"""
|
||||||
|
g = jc.parsers.ping_s.parse(self.centos_7_7_ping6_ip_O_p_unparsable.splitlines())
|
||||||
|
with self.assertRaises(IndexError):
|
||||||
|
list(g)
|
||||||
|
|
||||||
|
def test_ping6_ip_O_D_p_centos_7_7(self):
|
||||||
|
"""
|
||||||
|
Test 'ping6 <ip> -O -D -p' on Centos 7.7
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.centos_7_7_ping6_ip_O_D_p.splitlines())), self.centos_7_7_ping6_ip_O_D_p_streaming_json)
|
||||||
|
|
||||||
|
def test_ping6_hostname_O_p_centos_7_7(self):
|
||||||
|
"""
|
||||||
|
Test 'ping6 <hostname> -O -p' on Centos 7.7
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.centos_7_7_ping6_hostname_O_p.splitlines())), self.centos_7_7_ping6_hostname_O_p_streaming_json)
|
||||||
|
|
||||||
|
def test_ping6_hostname_O_D_p_s_centos_7_7(self):
|
||||||
|
"""
|
||||||
|
Test 'ping6 <hostname> -O -D -p -s' on Centos 7.7
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.centos_7_7_ping6_hostname_O_D_p_s.splitlines())), self.centos_7_7_ping6_hostname_O_D_p_s_streaming_json)
|
||||||
|
|
||||||
|
def test_ping_ip_dup_centos_7_7(self):
|
||||||
|
"""
|
||||||
|
Test 'ping <ip>' to broadcast IP to get duplicate replies on Centos 7.7
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.centos_7_7_ping_ip_dup.splitlines())), self.centos_7_7_ping_ip_dup_streaming_json)
|
||||||
|
|
||||||
|
def test_ping6_ip_dup_centos_7_7(self):
|
||||||
|
"""
|
||||||
|
Test 'ping6 <ip>' to broadcast IP to get duplicate replies on Centos 7.7
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.centos_7_7_ping6_ip_dup.splitlines())), self.centos_7_7_ping6_ip_dup_streaming_json)
|
||||||
|
|
||||||
|
def test_ping_ip_O_unparsedlines_centos_7_7(self):
|
||||||
|
"""
|
||||||
|
Test 'ping <ip> -O' on Centos 7.7 with unparsable lines and error messages
|
||||||
|
"""
|
||||||
|
g = jc.parsers.ping_s.parse(self.centos_7_7_ping_ip_O_unparsedlines.splitlines())
|
||||||
|
with self.assertRaises(IndexError):
|
||||||
|
list(g)
|
||||||
|
|
||||||
|
def test_ping_ip_O_ubuntu_18_4(self):
|
||||||
|
"""
|
||||||
|
Test 'ping <ip> -O' on Ubuntu 18.4
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.ubuntu_18_4_ping_ip_O.splitlines())), self.ubuntu_18_4_ping_ip_O_streaming_json)
|
||||||
|
|
||||||
|
def test_ping_ip_O_D_ubuntu_18_4(self):
|
||||||
|
"""
|
||||||
|
Test 'ping <ip> -O -D' on Ubuntu 18.4
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.ubuntu_18_4_ping_ip_O_D.splitlines())), self.ubuntu_18_4_ping_ip_O_D_streaming_json)
|
||||||
|
|
||||||
|
def test_ping_hostname_O_ubuntu_18_4(self):
|
||||||
|
"""
|
||||||
|
Test 'ping <hostname> -O' on Ubuntu 18.4
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.ubuntu_18_4_ping_hostname_O.splitlines())), self.ubuntu_18_4_ping_hostname_O_streaming_json)
|
||||||
|
|
||||||
|
def test_ping_hostname_O_p_ubuntu_18_4(self):
|
||||||
|
"""
|
||||||
|
Test 'ping <hostname> -O -p' on Ubuntu 18.4
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.ubuntu_18_4_ping_hostname_O_p.splitlines())), self.ubuntu_18_4_ping_hostname_O_p_streaming_json)
|
||||||
|
|
||||||
|
def test_ping_hostname_O_D_p_s_ubuntu_18_4(self):
|
||||||
|
"""
|
||||||
|
Test 'ping <hostname> -O -D -p -s' on Ubuntu 18.4
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.ubuntu_18_4_ping_hostname_O_D_p_s.splitlines())), self.ubuntu_18_4_ping_hostname_O_D_p_s_streaming_json)
|
||||||
|
|
||||||
|
def test_ping6_ip_O_p_ubuntu_18_4(self):
|
||||||
|
"""
|
||||||
|
Test 'ping6 <ip> -O -p' on Ubuntu 18.4
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.ubuntu_18_4_ping6_ip_O_p.splitlines())), self.ubuntu_18_4_ping6_ip_O_p_streaming_json)
|
||||||
|
|
||||||
|
def test_ping6_ip_O_D_p_ubuntu_18_4(self):
|
||||||
|
"""
|
||||||
|
Test 'ping6 <ip> -O -D -p' on Ubuntu 18.4
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.ubuntu_18_4_ping6_ip_O_D_p.splitlines())), self.ubuntu_18_4_ping6_ip_O_D_p_streaming_json)
|
||||||
|
|
||||||
|
def test_ping6_hostname_O_p_ubuntu_18_4(self):
|
||||||
|
"""
|
||||||
|
Test 'ping6 <hostname> -O -p' on Ubuntu 18.4
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.ubuntu_18_4_ping6_hostname_O_p.splitlines())), self.ubuntu_18_4_ping6_hostname_O_p_streaming_json)
|
||||||
|
|
||||||
|
def test_ping6_hostname_O_D_p_s_ubuntu_18_4(self):
|
||||||
|
"""
|
||||||
|
Test 'ping6 <hostname> -O -D -p -s' on Ubuntu 18.4
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.ubuntu_18_4_ping6_hostname_O_D_p_s.splitlines())), self.ubuntu_18_4_ping6_hostname_O_D_p_s_streaming_json)
|
||||||
|
|
||||||
|
def test_ping_ip_O_fedora32(self):
|
||||||
|
"""
|
||||||
|
Test 'ping <ip> -O' on fedora32
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.fedora32_ping_ip_O.splitlines())), self.fedora32_ping_ip_O_streaming_json)
|
||||||
|
|
||||||
|
def test_ping_ip_O_D_fedora32(self):
|
||||||
|
"""
|
||||||
|
Test 'ping <ip> -O -D' on fedora32
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.fedora32_ping_ip_O_D.splitlines())), self.fedora32_ping_ip_O_D_streaming_json)
|
||||||
|
|
||||||
|
def test_ping_hostname_O_fedora32(self):
|
||||||
|
"""
|
||||||
|
Test 'ping <hostname> -O' on fedora32
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.fedora32_ping_hostname_O.splitlines())), self.fedora32_ping_hostname_O_streaming_json)
|
||||||
|
|
||||||
|
def test_ping_hostname_O_p_fedora32(self):
|
||||||
|
"""
|
||||||
|
Test 'ping <hostname> -O -p' on fedora32
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.fedora32_ping_hostname_O_p.splitlines())), self.fedora32_ping_hostname_O_p_streaming_json)
|
||||||
|
|
||||||
|
def test_ping_hostname_O_D_p_s_fedora32(self):
|
||||||
|
"""
|
||||||
|
Test 'ping <hostname> -O -D -p -s' on fedora32
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.fedora32_ping_hostname_O_D_p_s.splitlines())), self.fedora32_ping_hostname_O_D_p_s_streaming_json)
|
||||||
|
|
||||||
|
def test_ping6_ip_O_p_fedora32(self):
|
||||||
|
"""
|
||||||
|
Test 'ping6 <ip> -O -p' on fedora32
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.fedora32_ping6_ip_O_p.splitlines())), self.fedora32_ping6_ip_O_p_streaming_json)
|
||||||
|
|
||||||
|
def test_ping6_ip_O_D_p_fedora32(self):
|
||||||
|
"""
|
||||||
|
Test 'ping6 <ip> -O -D -p' on fedora32
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.fedora32_ping6_ip_O_D_p.splitlines())), self.fedora32_ping6_ip_O_D_p_streaming_json)
|
||||||
|
|
||||||
|
def test_ping6_hostname_O_p_fedora32(self):
|
||||||
|
"""
|
||||||
|
Test 'ping6 <hostname> -O -p' on fedora32
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.fedora32_ping6_hostname_O_p.splitlines())), self.fedora32_ping6_hostname_O_p_streaming_json)
|
||||||
|
|
||||||
|
def test_ping6_hostname_O_D_p_s_fedora32(self):
|
||||||
|
"""
|
||||||
|
Test 'ping6 <hostname> -O -D -p -s' on fedora32
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.fedora32_ping6_hostname_O_D_p_s.splitlines())), self.fedora32_ping6_hostname_O_D_p_s_streaming_json)
|
||||||
|
|
||||||
|
def test_ping_hostname_p_freebsd12(self):
|
||||||
|
"""
|
||||||
|
Test 'ping <hostname> -p' on freebsd12
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.freebsd12_ping_hostname_p.splitlines())), self.freebsd12_ping_hostname_p_streaming_json)
|
||||||
|
|
||||||
|
def test_ping_hostname_s_freebsd12(self):
|
||||||
|
"""
|
||||||
|
Test 'ping <hostname> -s' on freebsd12
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.freebsd12_ping_hostname_s.splitlines())), self.freebsd12_ping_hostname_s_streaming_json)
|
||||||
|
|
||||||
|
def test_ping_ping_hostname_freebsd12(self):
|
||||||
|
"""
|
||||||
|
Test 'ping <hostname>' on freebsd12
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.freebsd12_ping_hostname.splitlines())), self.freebsd12_ping_hostname_streaming_json)
|
||||||
|
|
||||||
|
def test_ping_ip_p_freebsd12(self):
|
||||||
|
"""
|
||||||
|
Test 'ping <ip> -p' on freebsd12
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.freebsd12_ping_ip_p.splitlines())), self.freebsd12_ping_ip_p_streaming_json)
|
||||||
|
|
||||||
|
def test_ping_ip_s_freebsd12(self):
|
||||||
|
"""
|
||||||
|
Test 'ping <ip> -s' on freebsd12
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.freebsd12_ping_ip_s.splitlines())), self.freebsd12_ping_ip_s_streaming_json)
|
||||||
|
|
||||||
|
def test_ping_ip_freebsd12(self):
|
||||||
|
"""
|
||||||
|
Test 'ping6 <ip>' on freebsd127
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.freebsd12_ping_ip.splitlines())), self.freebsd12_ping_ip_streaming_json)
|
||||||
|
|
||||||
|
def test_ping6_hostname_p_freebsd12(self):
|
||||||
|
"""
|
||||||
|
Test 'ping6 <hostname> -p' on freebsd12
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.freebsd12_ping6_hostname_p.splitlines())), self.freebsd12_ping6_hostname_p_streaming_json)
|
||||||
|
|
||||||
|
def test_ping6_hostname_s_freebsd12(self):
|
||||||
|
"""
|
||||||
|
Test 'ping6 <hostname> -s' on freebsd12
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.freebsd12_ping6_hostname_s.splitlines())), self.freebsd12_ping6_hostname_s_streaming_json)
|
||||||
|
|
||||||
|
def test_ping6_hostname_freebsd12(self):
|
||||||
|
"""
|
||||||
|
Test 'ping6 <hostname>' on freebsd12
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.freebsd12_ping6_hostname.splitlines())), self.freebsd12_ping6_hostname_streaming_json)
|
||||||
|
|
||||||
|
def test_ping6_ip_p_freebsd12(self):
|
||||||
|
"""
|
||||||
|
Test 'ping6 <ip> -p' on freebsd12
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.freebsd12_ping6_ip_p.splitlines())), self.freebsd12_ping6_ip_p_streaming_json)
|
||||||
|
|
||||||
|
def test_ping6_ip_s_freebsd12(self):
|
||||||
|
"""
|
||||||
|
Test 'ping6 <ip> -s' on freebsd12
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.freebsd12_ping6_ip_s.splitlines())), self.freebsd12_ping6_ip_s_streaming_json)
|
||||||
|
|
||||||
|
def test_ping6_ip_freebsd12(self):
|
||||||
|
"""
|
||||||
|
Test 'ping6 <ip>' on freebsd12
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.freebsd12_ping6_ip.splitlines())), self.freebsd12_ping6_ip_streaming_json)
|
||||||
|
|
||||||
|
def test_ping_hostname_p_osx_10_14_6(self):
|
||||||
|
"""
|
||||||
|
Test 'ping <hostname> -p' on osx 10.14.6
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.osx_10_14_6_ping_hostname_p.splitlines())), self.osx_10_14_6_ping_hostname_p_streaming_json)
|
||||||
|
|
||||||
|
def test_ping_hostname_s_osx_10_14_6(self):
|
||||||
|
"""
|
||||||
|
Test 'ping <hostname> -s' on osx 10.14.6
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.osx_10_14_6_ping_hostname_s.splitlines())), self.osx_10_14_6_ping_hostname_s_streaming_json)
|
||||||
|
|
||||||
|
def test_ping_hostname_osx_10_14_6(self):
|
||||||
|
"""
|
||||||
|
Test 'ping <hostname>' on osx 10.14.6
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.osx_10_14_6_ping_hostname.splitlines())), self.osx_10_14_6_ping_hostname_streaming_json)
|
||||||
|
|
||||||
|
def test_ping_ip_p_osx_10_14_6(self):
|
||||||
|
"""
|
||||||
|
Test 'ping <ip> -p' on osx 10.14.6
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.osx_10_14_6_ping_ip_p.splitlines())), self.osx_10_14_6_ping_ip_p_streaming_json)
|
||||||
|
|
||||||
|
def test_ping_ip_s_osx_10_14_6(self):
|
||||||
|
"""
|
||||||
|
Test 'ping <ip> -s' on osx 10.14.6
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.osx_10_14_6_ping_ip_s.splitlines())), self.osx_10_14_6_ping_ip_s_streaming_json)
|
||||||
|
|
||||||
|
def test_ping_ip_osx_10_14_6(self):
|
||||||
|
"""
|
||||||
|
Test 'ping <ip>' on osx 10.14.6
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.osx_10_14_6_ping_ip.splitlines())), self.osx_10_14_6_ping_ip_streaming_json)
|
||||||
|
|
||||||
|
def test_ping_ip_unreachable_osx_10_14_6(self):
|
||||||
|
"""
|
||||||
|
Test 'ping <ip>' with host unreachable error on osx 10.14.6
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.osx_10_14_6_ping_ip_unreachable.splitlines())), self.osx_10_14_6_ping_ip_unreachable_streaming_json)
|
||||||
|
|
||||||
|
def test_ping_ip_unknown_errors_osx_10_14_6(self):
|
||||||
|
"""
|
||||||
|
Test 'ping <ip>' with unknown/unparsable errors on osx 10.14.6
|
||||||
|
"""
|
||||||
|
g = jc.parsers.ping_s.parse(self.osx_10_14_6_ping_ip_unknown_errors.splitlines())
|
||||||
|
with self.assertRaises(IndexError):
|
||||||
|
list(g)
|
||||||
|
|
||||||
|
def test_ping6_hostname_p_osx_10_14_6(self):
|
||||||
|
"""
|
||||||
|
Test 'ping6 <hostname> -p' on osx 10.14.6
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.osx_10_14_6_ping6_hostname_p.splitlines())), self.osx_10_14_6_ping6_hostname_p_streaming_json)
|
||||||
|
|
||||||
|
def test_ping6_hostname_s_osx_10_14_6(self):
|
||||||
|
"""
|
||||||
|
Test 'ping6 <hostname> -s' on osx 10.14.6
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.osx_10_14_6_ping6_hostname_s.splitlines())), self.osx_10_14_6_ping6_hostname_s_streaming_json)
|
||||||
|
|
||||||
|
def test_ping6_hostname_osx_10_14_6(self):
|
||||||
|
"""
|
||||||
|
Test 'ping6 <hostname>' on osx 10.14.6
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.osx_10_14_6_ping6_hostname.splitlines())), self.osx_10_14_6_ping6_hostname_streaming_json)
|
||||||
|
|
||||||
|
def test_ping6_ip_p_osx_10_14_6(self):
|
||||||
|
"""
|
||||||
|
Test 'ping6 <ip> -p' on osx 10.14.6
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.osx_10_14_6_ping6_ip_p.splitlines())), self.osx_10_14_6_ping6_ip_p_streaming_json)
|
||||||
|
|
||||||
|
def test_ping6_ip_s_osx_10_14_6(self):
|
||||||
|
"""
|
||||||
|
Test 'ping6 <ip> -s' on osx 10.14.6
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.osx_10_14_6_ping6_ip_s.splitlines())), self.osx_10_14_6_ping6_ip_s_streaming_json)
|
||||||
|
|
||||||
|
def test_ping6_ip_osx_10_14_6(self):
|
||||||
|
"""
|
||||||
|
Test 'ping6 <ip>' on osx 10.14.6
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.osx_10_14_6_ping6_ip.splitlines())), self.osx_10_14_6_ping6_ip_streaming_json)
|
||||||
|
|
||||||
|
def test_ping6_ip_unparsable_osx_10_14_6(self):
|
||||||
|
"""
|
||||||
|
Test 'ping6 <ip>' with unparsable lines on osx 10.14.6
|
||||||
|
"""
|
||||||
|
g = jc.parsers.ping_s.parse(self.osx_10_14_6_ping6_ip_unparsable.splitlines())
|
||||||
|
with self.assertRaises(IndexError):
|
||||||
|
list(g)
|
||||||
|
|
||||||
|
def test_ping_ip_dup_osx_10_14_6(self):
|
||||||
|
"""
|
||||||
|
Test 'ping <ip>' to broadcast IP to get duplicate replies on osx 10.14.6
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.osx_10_14_6_ping_ip_dup.splitlines())), self.osx_10_14_6_ping_ip_dup_streaming_json)
|
||||||
|
|
||||||
|
def test_ping6_ip_dup_osx_10_14_6(self):
|
||||||
|
"""
|
||||||
|
Test 'ping6 <ip>' to broadcast IP to get duplicate replies on osx 10.14.6
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.osx_10_14_6_ping6_ip_dup.splitlines())), self.osx_10_14_6_ping6_ip_dup_streaming_json)
|
||||||
|
|
||||||
|
def test_ping_ip_O_pi(self):
|
||||||
|
"""
|
||||||
|
Test 'ping6 <ip> -O' on raspberry pi
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.pi_ping_ip_O.splitlines())), self.pi_ping_ip_O_streaming_json)
|
||||||
|
|
||||||
|
def test_ping_ip_O_D_pi(self):
|
||||||
|
"""
|
||||||
|
Test 'ping6 <ip> -O -D' on raspberry pi
|
||||||
|
"""
|
||||||
|
self.assertEqual(list(jc.parsers.ping_s.parse(self.pi_ping_ip_O_D.splitlines())), self.pi_ping_ip_O_D_streaming_json)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main()
|
Reference in New Issue
Block a user