1+ # !/usr/bin/perl -w
2+
3+ use Test::Command tests => 33;
4+ use Test::More;
5+
6+ # fping -J -c 2 127.0.0.1
7+ {
8+ my $cmd = Test::Command-> new(cmd => " fping -J -c 2 127.0.0.1" );
9+ $cmd -> exit_is_num(0);
10+ $cmd -> stdout_like(qr / ^\{ "resp":\s\{ "host":\s "127\. 0\. 0\. 1",\s "seq":\s 0,\s "size":\s\d +,\s "rtt":\s\d +\.\d +,\s "rttAvg":\s\d +\.\d +,\s "loss":\s\d +\}\}
11+ \{ "resp":\s\{ "host":\s "127\. 0\. 0\. 1",\s "seq":\s 1,\s "size":\s\d +,\s "rtt":\s\d +\.\d +,\s "rttAvg":\s\d +\.\d +,\s "loss":\s\d +\}\}
12+ \{ "summary":\s\{ "host":\s "127\. 0\. 0\. 1",\s "xmt":\s\d +,\s "rcv":\s\d +,\s "loss":\s\d +,\s "rttMin":\s\d +\.\d +,\s "rttAvg":\s\d +\.\d +,\s "rttMax":\s\d +\.\d +\}\}\n ?$ / );
13+ $cmd -> stderr_is_eq(" " );
14+ }
15+
16+ # fping -J -c 1 192.0.2.47
17+ {
18+ my $cmd = Test::Command-> new(cmd => " fping -J -c 1 192.0.2.47" );
19+ $cmd -> exit_is_num(1);
20+ $cmd -> stdout_like(qr / ^\{ "resp":\s\{ "host":\s "192\. 0\. 2\. 47",\s "seq":\s\d +,\s "rttAvg":\s "NaN",\s "loss":\s\d +\}\}
21+ \{ "summary":\s\{ "host":\s "192\. 0\. 2\. 47",\s "xmt":\s\d +,\s "rcv":\s\d +,\s "loss":\s\d +\}\}\n ?$ / );
22+ $cmd -> stderr_is_eq(" " );
23+ }
24+
25+ # fping -J -c 1 -q 127.0.0.1
26+ {
27+ my $cmd = Test::Command-> new(cmd => " fping -J -c 1 -q 127.0.0.1" );
28+ $cmd -> exit_is_num(0);
29+ $cmd -> stdout_like(qr / ^\{ "summary":\s\{ "host":\s "127\. 0\. 0\. 1",\s "xmt":\s\d +,\s "rcv":\s\d +,\s "loss":\s\d +,\s "rttMin":\s\d +\.\d +,\s "rttAvg":\s\d +\.\d +,\s "rttMax":\s\d +\.\d +\}\}\n ?$ / );
30+ $cmd -> stderr_is_eq(" " );
31+ }
32+
33+ # fping -J -C 1 -q 127.0.0.1
34+ {
35+ my $cmd = Test::Command-> new(cmd => " fping -J -C 1 -q 127.0.0.1" );
36+ $cmd -> exit_is_num(0);
37+ $cmd -> stdout_like(qr / ^\{ "vSum":\s\{ "host":\s "\d +\.\d +\.\d +\.\d +",\s "values":\s\[\d +\.\d +\]\}\}\n ?$ / );
38+ $cmd -> stderr_is_eq(" " );
39+ }
40+
41+ # fping -J -C 1 -q 127.0.0.1 127.0.0.2
42+ {
43+ my $cmd = Test::Command-> new(cmd => " fping -J -C 1 -q 127.0.0.1 127.0.0.2" );
44+ $cmd -> exit_is_num(0); # Both hosts are reachable in this test
45+ $cmd -> stdout_like(qr / ^\{ "vSum":\s\{ "host":\s "\d +\.\d +\.\d +\.\d +",\s "values":\s\[\d +\.\d +\] }}
46+ \{ "vSum":\s\{ "host":\s "\d +\.\d +\.\d +\.\d +",\s "values":\s\[\d +\.\d +\]\}\}\n ?$ / );
47+ $cmd -> stderr_is_eq(" " );
48+ }
49+
50+ # fping -J -C3 -p 100 -q 127.0.0.1
51+ {
52+ my $cmd = Test::Command-> new(cmd => " fping -J -C3 -p 100 -q 127.0.0.1" );
53+ $cmd -> exit_is_num(0);
54+ $cmd -> stdout_like(qr / ^\{ "vSum":\s\{ "host":\s "\d +\.\d +\.\d +\.\d +",\s "values":\s\[\d +\.\d +\,\s\d +\.\d +,\s\d +\.\d +\]\}\}\n ?$ / );
55+ $cmd -> stderr_is_eq(" " );
56+ }
57+
58+ # fping -J -c 1 -q host.invalid
59+ {
60+ my $cmd = Test::Command-> new(cmd => " fping -J -c 1 -q host.invalid" );
61+ $cmd -> exit_is_num(2); # Exit code 2 indicates name resolution error
62+ $cmd -> stdout_is_eq(" " );
63+ $cmd -> stderr_like(qr / ^\{ "host":\s "host\. invalid", "error":\s "(?:Name or service not known|Temporary failure in name resolution|nodename nor servname provided, or not known)"\} $ / );
64+ }
65+
66+ # fping -J -c 1 -q -g 127.0.0.1/30
67+ {
68+ my $cmd = Test::Command-> new(cmd => " fping -J -c 1 -q -g 127.0.0.1/30" );
69+ $cmd -> exit_is_num(0);
70+ $cmd -> stdout_like(qr / ^\{ "summary":\s\{ "host":\s "127\. 0\. 0\. 1",\s "xmt":\s\d +,\s "rcv":\s\d +,\s "loss":\s\d +,\s "rttMin":\s\d +\.\d +,\s "rttAvg":\s\d +\.\d +,\s "rttMax":\s\d +\.\d +\}\}
71+ \{ "summary":\s\{ "host":\s "127\. 0\. 0\. 2",\s "xmt":\s\d +,\s "rcv":\s\d +,\s "loss":\s\d +,\s "rttMin":\s\d +\.\d +,\s "rttAvg":\s\d +\.\d +,\s "rttMax":\s\d +\.\d +\}\} ?$ / );
72+ $cmd -> stderr_is_eq(" " );
73+ }
74+
75+ # fping -J -c 2 -Q 1 127.0.0.1
76+ {
77+ my $cmd = Test::Command-> new(cmd => " fping -J -c 2 -Q 1 127.0.0.1" );
78+ $cmd -> exit_is_num(0);
79+ $cmd -> stdout_like(qr / ^\{ "intSum":\s\{ "time":\s\d +,"host":\s "127\. 0\. 0\. 1",\s "xmt":\s\d +,\s "rcv":\s\d +,\s "loss":\s\d +,\s "rttMin":\s\d +\.\d +,\s "rttAvg":\s\d +\.\d +,\s "rttMax":\s\d +\.\d +\}\}
80+ \{ "summary":\s\{ "host":\s "127\. 0\. 0\. 1",\s "xmt":\s\d +,\s "rcv":\s\d +,\s "loss":\s\d +,\s "rttMin":\s\d +\.\d +,\s "rttAvg":\s\d +\.\d +,\s "rttMax":\s\d +\.\d +\}\} ?$ / );
81+ $cmd -> stderr_is_eq(" " );
82+ }
83+
84+ # fping -J -s -q -c 2 127.0.0.1
85+ {
86+ my $cmd = Test::Command-> new(cmd => " fping -J -s -q -c 2 127.0.0.1" );
87+ $cmd -> exit_is_num(0);
88+ $cmd -> stdout_like(qr / ^\{ "summary":\s\{ "host":\s "127\. 0\. 0\. 1",\s "xmt":\s\d +,\s "rcv":\s\d +,\s "loss":\s\d +,\s "rttMin":\s\d +\.\d +,\s "rttAvg":\s\d +\.\d +,\s "rttMax":\s\d +\.\d +\}\}
89+ \{ "globalSum":\s\{ "targets":\s\d +,\s "alive":\s\d +,\s "unreachable":\s\d +,\s "unknown\s addresses":\s\d +,\s "timeouts\s\( waiting\s for\s response\) ":\s\d +,\s "ICMP\s Echos\s sent":\s\d +,\s "ICMP\s Echo\s Replies\s received":\s\d +,\s "other\s ICMP\s received":\s 0,\s "ms\s\( min\s round\s trip\s time\) ":\s\d +\.\d +,\s "ms\s\( avg\s round\s trip\s time\) ":\s\d +\.\d +,\s "ms\s\( max\s round\s trip\s time\) ":\s\d +\.\d +,\s "sec\s\( elapsed\s real\s time\) ":\s\d +\.\d +\}\} ?$ / );
90+ $cmd -> stderr_is_eq(" " );
91+ }
92+
93+ # fping -J 127.0.0.1
94+ {
95+ my $cmd = Test::Command-> new(cmd => " fping -J 127.0.0.1" );
96+ $cmd -> exit_is_num(1);
97+ $cmd -> stdout_is_eq(" " );
98+ $cmd -> stderr_is_eq(" fping: with -J or --json required -c or -C\n " );
99+ }
0 commit comments