cjson Validation
Port build from safelibs/port-cjson at commit b91fbf4008d0 (release build-b91fbf4008d0)
Tests
Allocator hook edge behavior Original / cjson / allocator-hooks-edge Passed
Malformed number rejection Original / cjson / malformed-number-rejection Passed
Minify JSON whitespace behavior Original / cjson / minify-whitespace Passed
Parse and print JSON round trip Original / cjson / parse-print-roundtrip Passed
JSON pointer patch behavior Original / cjson / utils-patch-pointer Passed
iperf3 -J --bidir end.streams[*].receiver.bits_per_second nonneg Original / cjson / usage-iperf3-json-batch12-bidir-end-streams-receiver-bps Passed
Runs an iperf3 bidirectional loopback transfer and verifies all end.streams[*].receiver.bits_per_second values in JSON are nonnegative numbers.
iperf3 -J --bidir end.streams[*].sender.bits_per_second nonneg Original / cjson / usage-iperf3-json-batch12-bidir-end-streams-sender-bps Passed
Runs an iperf3 bidirectional transfer and verifies end.streams[*].sender.bits_per_second values are nonnegative numbers.
iperf3 -J end.cpu_utilization_percent has all four host/remote keys Original / cjson / usage-iperf3-json-batch12-end-cpu-utilization-percent-keys Passed
Runs an iperf3 transfer and verifies end.cpu_utilization_percent JSON object contains host_total, host_user, remote_total, remote_user.
iperf3 -J -P 2 end.streams length equals num_streams Original / cjson / usage-iperf3-json-batch12-end-streams-array-equals-num-streams Passed
Runs iperf3 with -P 2 and verifies end.streams JSON array length equals start.test_start.num_streams.
iperf3 -J -f g flag accepted and yields valid JSON Original / cjson / usage-iperf3-json-batch12-format-gigabits-flag Passed
Runs iperf3 with -f g to format throughput in gigabits and verifies the JSON parses and end.sum_sent.bits_per_second is a number.
iperf3 -J start.cookie is a non-empty string Original / cjson / usage-iperf3-json-batch12-start-cookie-string Passed
Runs an iperf3 transfer and verifies start.cookie in JSON is a non-empty string with a printable shape.
iperf3 -J start.test_start.tos defaults to zero Original / cjson / usage-iperf3-json-batch12-start-test-start-tos-zero-default Passed
Runs an iperf3 client without -S/--tos and verifies start.test_start.tos is reported as zero in the JSON.
iperf3 -J start.version begins with "iperf" Original / cjson / usage-iperf3-json-batch12-start-version-string-shape Passed
Runs an iperf3 transfer and verifies start.version JSON string starts with "iperf" and has length >= 6.
iperf3 -J intervals[].streams[].rcv_wnd positive Original / cjson / usage-iperf3-json-batch12-tcp-rcv-wnd-positive Passed
Runs a short iperf3 TCP loopback transfer and verifies intervals[].streams[].rcv_wnd values in JSON are all positive integers when present.
iperf3 -J -u -b 100K end.sum.bytes positive Original / cjson / usage-iperf3-json-batch12-udp-bitrate-100k-end-positive Passed
Runs a UDP iperf3 transfer at 100Kbps and verifies end.sum.bytes is greater than zero in JSON output.
iperf3 JSON bidir end streams mixed direction Original / cjson / usage-iperf3-json-bidir-end-streams-mixed-direction Passed
Runs iperf3 --bidir and verifies the cjson serializer emits two end.streams entries with one sender flag set true and the other false to reflect the bidirectional pair.
iperf3 JSON bidir reverse sum bytes Original / cjson / usage-iperf3-json-bidir-reverse-sum-bytes Passed
Runs --bidir and reads the reverse-direction sum bytes from the iperf3 JSON so the cjson serializer must emit the bidir reverse summary object.
iperf3 bidirectional JSON run Original / cjson / usage-iperf3-json-bidirectional Passed
iperf3 JSON bound client Original / cjson / usage-iperf3-json-bind-loopback Passed
iperf3 JSON block size field Original / cjson / usage-iperf3-json-blksize-field Passed
Sets a custom application block size in iperf3 and verifies the JSON metadata preserves that block size.
iperf3 JSON three block count Original / cjson / usage-iperf3-json-blockcount-three-blocks Passed
Runs an iperf3 transfer with -k 3 and verifies start.test_start.blockcount equals 3 so cjson serializes the requested block count.
iperf3 JSON block count Original / cjson / usage-iperf3-json-blockcount Passed
iperf3 JSON one megabyte fixed transfer Original / cjson / usage-iperf3-json-bytes-1m-fixed-field Passed
Runs a 1 MiB iperf3 transfer with -n 1M and verifies start.test_start.bytes equals 1048576 so cjson encodes the requested byte budget.
iperf3 JSON fixed 8K bytes Original / cjson / usage-iperf3-json-bytes-8k-fixed Passed
Runs a fixed-byte iperf3 test and verifies the requested byte count stored in the JSON metadata.
iperf3 JSON bytes field Original / cjson / usage-iperf3-json-bytes-field Passed
iperf3 JSON accepts -A client-side CPU affinity Original / cjson / usage-iperf3-json-client-affinity-flag Passed
Confirms iperf3 honours -A 0 (CPU affinity to CPU 0) and still produces a parseable JSON report with start metadata.
iperf3 JSON connected count Original / cjson / usage-iperf3-json-connected-count Passed
iperf3 JSON connecting_to host Original / cjson / usage-iperf3-json-connecting-to-host Passed
Verifies the cjson serializer encodes the connecting_to.host loopback target in the iperf3 JSON header.
iperf3 JSON connecting_to.port numeric Original / cjson / usage-iperf3-json-connecting-to-port-numeric Passed
Verifies iperf3 JSON start.connecting_to exposes a numeric port that matches the chosen server port.
iperf3 JSON cookie field Original / cjson / usage-iperf3-json-cookie-field Passed
iperf3 JSON cookie length Original / cjson / usage-iperf3-json-cookie-length-check Passed
iperf3 JSON cport local port Original / cjson / usage-iperf3-json-cport-local-port-25001 Passed
Runs iperf3 with an explicit client port and verifies the recorded local port in the JSON connection metadata.
iperf3 JSON paired ports range 32007 Original / cjson / usage-iperf3-json-cport-paired-range-32007 Passed
Runs iperf3 with a server port in the 32000-32099 range and a client port of 32007 so cjson must serialize both connected[0].remote_port and connected[0].local_port from a paired range distinct from any prior cport testcase.
iperf3 JSON paired ports range 33503 Original / cjson / usage-iperf3-json-cport-paired-range-33503 Passed
Runs iperf3 with a server port in the 33500-33599 range and a client port of 33503 so cjson must serialize both connected[0].remote_port and connected[0].local_port from a second paired range disjoint from earlier cport pairings.
iperf3 JSON duration field Original / cjson / usage-iperf3-json-duration-field Passed
iperf3 JSON duration two seconds Original / cjson / usage-iperf3-json-duration-two-seconds Passed
iperf3 JSON end host CPU system Original / cjson / usage-iperf3-json-end-cpu-host-system-nonnegative Passed
Reads end.cpu_utilization_percent.host_system from the iperf3 JSON summary so the cjson serializer must encode the host-side kernel CPU fraction distinct from the total.
iperf3 JSON end host CPU total Original / cjson / usage-iperf3-json-end-cpu-host-total-field Passed
Reads end.cpu_utilization_percent.host_total from the iperf3 JSON summary so the cjson serializer must encode the host CPU utilization metric.
iperf3 JSON end host_total percentage bounds Original / cjson / usage-iperf3-json-end-cpu-host-total-percentage-bounds Passed
Asserts end.cpu_utilization_percent.host_total falls within the inclusive 0..100 percentage range so cjson must serialize the host total CPU utilization as a real percentage rather than just a non-negative number.
iperf3 JSON end host CPU user Original / cjson / usage-iperf3-json-end-cpu-host-user-nonnegative Passed
Reads end.cpu_utilization_percent.host_user from the iperf3 JSON summary so the cjson serializer must encode the host-side user CPU fraction distinct from the total.
iperf3 JSON end cpu_utilization remote_system Original / cjson / usage-iperf3-json-end-cpu-remote-system-nonnegative Passed
Confirms iperf3 JSON end.cpu_utilization_percent.remote_system is a non-negative number on a loopback transfer.
iperf3 JSON end remote CPU total Original / cjson / usage-iperf3-json-end-cpu-remote-total-field Passed
Reads end.cpu_utilization_percent.remote_total from the iperf3 JSON summary so cjson must serialize the server-side CPU utilization metric.
iperf3 JSON end cpu_utilization remote_total bounds Original / cjson / usage-iperf3-json-end-cpu-remote-total-percentage-bounds Passed
Verifies iperf3 JSON end.cpu_utilization_percent.remote_total stays within a permissive [0, 400] bound on loopback.
iperf3 JSON end remote CPU user Original / cjson / usage-iperf3-json-end-cpu-remote-user-nonnegative Passed
Reads end.cpu_utilization_percent.remote_user from the iperf3 JSON summary so the cjson serializer must encode the server-side user CPU fraction distinct from the remote total.
iperf3 JSON end stream count Original / cjson / usage-iperf3-json-end-stream-count Passed
Runs a parallel iperf3 test and verifies the number of stream summaries in the JSON end section.
iperf3 JSON .end.streams[0].receiver.bits_per_second is a positive number Original / cjson / usage-iperf3-json-end-stream-receiver-bits-per-second-positive Passed
Confirms iperf3 reports a numeric, positive receiver throughput in .end.streams[0].receiver.bits_per_second after a short transfer.
iperf3 JSON end stream receiver end positive Original / cjson / usage-iperf3-json-end-stream-receiver-end-positive Passed
Confirms iperf3 reports a positive numeric end time on the receiver stream summary in JSON output.
iperf3 JSON end stream receiver start zero Original / cjson / usage-iperf3-json-end-stream-receiver-start-zero Passed
iperf3 JSON per-stream sender bits per second Original / cjson / usage-iperf3-json-end-stream-sender-bps-positive Passed
Reads end.streams[0].sender.bits_per_second from the iperf3 JSON summary so the cjson serializer must emit the per-stream sender throughput as a positive number.
iperf3 JSON sender end time Original / cjson / usage-iperf3-json-end-stream-sender-end-positive Passed
Reads end.streams[0].sender.end from the iperf3 JSON summary so the cjson serializer must emit the per-stream sender finish timestamp as a positive number.
iperf3 JSON end stream sender max_rtt Original / cjson / usage-iperf3-json-end-stream-sender-max-rtt-nonnegative Passed
Confirms iperf3 reports a non-negative numeric max_rtt for the sender stream summary in JSON output.
iperf3 JSON end stream sender max_snd_cwnd Original / cjson / usage-iperf3-json-end-stream-sender-max-snd-cwnd-positive Passed
iperf3 JSON end stream sender max_snd_wnd positive Original / cjson / usage-iperf3-json-end-stream-sender-max-snd-wnd-positive Passed
Verifies that end.streams[].sender.max_snd_wnd is a positive integer in the cjson-serialized summary of a TCP loopback transfer.
iperf3 JSON end stream sender mean_rtt Original / cjson / usage-iperf3-json-end-stream-sender-mean-rtt-nonnegative Passed
Confirms iperf3 reports a non-negative numeric mean_rtt for the sender stream summary in JSON output.
iperf3 JSON end stream sender min_rtt Original / cjson / usage-iperf3-json-end-stream-sender-min-rtt-nonnegative Passed
Confirms iperf3 reports a non-negative numeric min_rtt for the sender stream summary in JSON output.
iperf3 JSON sender start time Original / cjson / usage-iperf3-json-end-stream-sender-start-zero Passed
Reads end.streams[0].sender.start from the iperf3 JSON summary so the cjson serializer must emit the per-stream sender start offset as zero.
iperf3 JSON end streams receiver bytes Original / cjson / usage-iperf3-json-end-streams-receiver-bytes Passed
Reads end.streams[0].receiver.bytes from the iperf3 JSON summary so cjson must serialize the per-stream receiver byte counter.
iperf3 JSON per-stream receiver seconds Original / cjson / usage-iperf3-json-end-streams-receiver-seconds-positive Passed
Reads end.streams[0].receiver.seconds from the iperf3 JSON summary so the cjson serializer must encode the per-stream receiver duration.
iperf3 JSON end streams sender bytes Original / cjson / usage-iperf3-json-end-streams-sender-bytes Passed
Reads end.streams[0].sender.bytes from the iperf3 JSON summary so cjson must serialize the per-stream sender byte counter.
iperf3 JSON per-stream sender retransmits Original / cjson / usage-iperf3-json-end-streams-sender-retransmits Passed
Reads end.streams[0].sender.retransmits from the iperf3 JSON summary so the cjson serializer must encode the per-stream retransmit counter.
iperf3 JSON UDP loopback reports zero lost_packets Original / cjson / usage-iperf3-json-end-streams-udp-lost-packets-zero-default Passed
Confirms iperf3 over UDP loopback reports .end.streams[0].udp.lost_packets equal to zero for a low-rate transfer that should not drop packets.
iperf3 JSON end sum received throughput Original / cjson / usage-iperf3-json-end-sum-received-bps-positive Passed
Reads end.sum_received.bits_per_second from the iperf3 JSON summary so the cjson serializer must encode the aggregate receiver throughput as a positive number distinct from the sender throughput.
iperf3 JSON end sum received bytes Original / cjson / usage-iperf3-json-end-sum-received-bytes-positive Passed
Verifies end.sum_received.bytes in the iperf3 JSON summary is positive so cjson serializes the receiver-side byte accounting.
iperf3 JSON end sum sent throughput Original / cjson / usage-iperf3-json-end-sum-sent-bps-positive Passed
Reads end.sum_sent.bits_per_second from the iperf3 JSON summary so the cjson serializer must encode the aggregate sender throughput as a positive number distinct from per-stream values.
iperf3 JSON end sum sent bytes Original / cjson / usage-iperf3-json-end-sum-sent-bytes-positive Passed
Verifies end.sum_sent.bytes in the iperf3 JSON summary reports the requested 64K transfer so cjson serializes the sent byte total.
iperf3 JSON extra data field Original / cjson / usage-iperf3-json-extra-data-field Passed
iperf3 JSON fixed 48K bytes Original / cjson / usage-iperf3-json-fixed-48k-bytes Passed
Runs a fixed-byte iperf3 transfer and verifies the JSON test metadata stores the requested 48K byte count.
iperf3 JSON fixed bytes accounting Original / cjson / usage-iperf3-json-fixed-bytes-accounting Passed
Transfers a fixed byte count through iperf3 and verifies the JSON summary reports at least that many sent bytes.
iperf3 fixed-byte JSON run Original / cjson / usage-iperf3-json-fixed-bytes Passed
iperf3 JSON kbit format Original / cjson / usage-iperf3-json-format-kbits Passed
iperf3 JSON megabyte format flag Original / cjson / usage-iperf3-json-format-megabytes-flag Passed
Runs an iperf3 transfer with -f M and verifies the JSON summary still emits the TCP protocol field so cjson encodes the protocol under the alternate format.
iperf3 JSON half-second interval count Original / cjson / usage-iperf3-json-half-second-interval-count Passed
Runs iperf3 with -i 0.5 -t 2 and verifies that the cjson serializer emits at least four interval entries reflecting the sub-second reporting cadence.
iperf3 JSON half-second interval end monotonic Original / cjson / usage-iperf3-json-half-second-interval-end-monotonic Passed
Runs iperf3 with -i 0.5 -t 2 and verifies the cjson-serialized intervals[].sum.end timestamps are strictly increasing across the report cadence.
iperf3 interval JSON report Original / cjson / usage-iperf3-json-interval-report Passed
Runs an iperf3 loopback test with interval reporting and verifies interval objects in JSON output.
iperf3 JSON retransmits field Original / cjson / usage-iperf3-json-interval-retransmits-field Passed
iperf3 JSON interval stream pmtu positive Original / cjson / usage-iperf3-json-interval-stream-pmtu-positive Passed
Verifies that every intervals[].streams[].pmtu value emitted by the cjson serializer is positive for a TCP loopback transfer.
iperf3 JSON interval stream rttvar nonnegative Original / cjson / usage-iperf3-json-interval-stream-rttvar-nonnegative Passed
Verifies that every intervals[].streams[].rttvar value emitted by the cjson serializer is a nonnegative integer for a TCP loopback transfer.
iperf3 JSON interval stream snd_wnd positive Original / cjson / usage-iperf3-json-interval-stream-snd-wnd-positive Passed
Verifies that every intervals[].streams[].snd_wnd value emitted by the cjson serializer is positive for a TCP loopback transfer.
iperf3 JSON interval sum seconds Original / cjson / usage-iperf3-json-interval-sum-seconds Passed
Runs an interval-reporting iperf3 test and verifies the first interval sum records elapsed seconds.
iperf3 JSON intervals array Original / cjson / usage-iperf3-json-intervals-array Passed
Requests interval reporting from iperf3 and verifies the JSON output includes at least one interval record.
iperf3 JSON intervals stream bytes Original / cjson / usage-iperf3-json-intervals-stream-bytes-nonnegative Passed
Verifies the first interval per-stream entry exposes a non-negative numeric bytes counter in iperf3 JSON output.
iperf3 JSON intervals[0].streams[0].omitted false Original / cjson / usage-iperf3-json-intervals-stream-omitted-false-default Passed
Runs iperf3 without -O so the per-stream omitted flag inside intervals[0].streams[0] must serialize as false through cjson, confirming the per-stream omission marker (distinct from the sum-level marker).
iperf3 JSON intervals stream seconds positive Original / cjson / usage-iperf3-json-intervals-stream-seconds-positive Passed
Verifies the first interval per-stream entry exposes a positive numeric seconds value in iperf3 JSON output.
iperf3 JSON intervals streams rtt Original / cjson / usage-iperf3-json-intervals-streams-rtt-nonnegative Passed
Verifies the first interval's first stream record carries a non-negative numeric rtt in iperf3 JSON output.
iperf3 JSON .intervals[].sum.end is numeric and monotonic Original / cjson / usage-iperf3-json-intervals-sum-end-numeric Passed
Confirms every iperf3 interval entry exposes a numeric .sum.end greater than its .sum.start and that values are strictly positive.
iperf3 JSON intervals sum omitted false Original / cjson / usage-iperf3-json-intervals-sum-omitted-false-default Passed
Runs iperf3 without -O so every intervals[].sum.omitted boolean must serialize as false through cjson, demonstrating the default non-omitted interval marker.
iperf3 JSON intervals sum rtt Original / cjson / usage-iperf3-json-intervals-sum-rtt-nonnegative Passed
iperf3 JSON intervals sum snd_cwnd Original / cjson / usage-iperf3-json-intervals-sum-snd-cwnd-positive Passed
iperf3 JSON .intervals[].sum.start is numeric and ordered Original / cjson / usage-iperf3-json-intervals-sum-start-numeric Passed
Confirms every iperf3 interval entry exposes a numeric .sum.start that is non-negative and that the first interval starts at zero.
iperf3 JSON IPv4 client Original / cjson / usage-iperf3-json-ipv4-family Passed
iperf3 JSON two kilobyte blksize Original / cjson / usage-iperf3-json-length-2k-blksize Passed
Runs an iperf3 transfer with -l 2K and verifies start.test_start.blksize is 2048 so cjson serializes the user-specified block size.
iperf3 JSON buffer length Original / cjson / usage-iperf3-json-length-buffer Passed
iperf3 JSON local host loopback Original / cjson / usage-iperf3-json-local-host-loopback Passed
iperf3 JSON local port field Original / cjson / usage-iperf3-json-local-port-field Passed
iperf3 JSON logfile round-trip Original / cjson / usage-iperf3-json-logfile-roundtrip Passed
Runs iperf3 with --logfile so the cjson-serialized JSON report is written to disk, then parses the file with jq to confirm the round-trip is well formed.
iperf3 JSON MSS clamp Original / cjson / usage-iperf3-json-mss-clamp Passed
iperf3 JSON no-delay transfer Original / cjson / usage-iperf3-json-nodelay Passed
iperf3 JSON omit field Original / cjson / usage-iperf3-json-omit-field Passed
Uses iperf3 warmup omission and verifies the omit interval is recorded in the JSON test metadata.
iperf3 JSON omit one second Original / cjson / usage-iperf3-json-omit-one-second-flag Passed
Runs an iperf3 transfer with a one-second omitted warmup interval and verifies the JSON omit setting.
iperf3 JSON omitted warmup second Original / cjson / usage-iperf3-json-omit-second Passed
iperf3 omitted warmup JSON intervals Original / cjson / usage-iperf3-json-omit-warmup Passed
Runs an iperf3 loopback test with omitted warmup time and verifies JSON interval omission markers.
iperf3 JSON pacing-timer accepted Original / cjson / usage-iperf3-json-pacing-timer-microseconds Passed
Runs iperf3 with --pacing-timer 1000 (microseconds) so the cjson-using binary must accept the option and still emit a well-formed JSON document with positive sender bytes and a populated test_start record.
iperf3 JSON parallel stream count Original / cjson / usage-iperf3-json-parallel-stream-count Passed
Runs iperf3 with parallel client streams and verifies the JSON test metadata records the stream count.
iperf3 parallel JSON streams Original / cjson / usage-iperf3-json-parallel-streams Passed
iperf3 JSON parallel TCP Original / cjson / usage-iperf3-json-parallel-tcp Passed
iperf3 JSON parallel three streams Original / cjson / usage-iperf3-json-parallel-three-streams-count Passed
Runs a three-stream iperf3 transfer and verifies the JSON metadata records the requested stream count.
iperf3 JSON paired remote and local ports Original / cjson / usage-iperf3-json-port-cport-paired Passed
Runs iperf3 with explicit -p and --cport so the cjson serializer must echo both the remote server port and the local client port in start.connected[0].
iperf3 JSON connected port match Original / cjson / usage-iperf3-json-port-match Passed
Runs an iperf3 loopback test and verifies the connected remote port recorded in JSON matches the server port.
iperf3 -J end.streams[].receiver.bits_per_second per-stream positive Original / cjson / usage-iperf3-json-r10-end-streams-receiver-bps-each-positive Passed
Runs a short iperf3 -P 2 TCP loopback transfer and verifies every end.streams[].receiver.bits_per_second value in JSON is positive.
iperf3 -J end.streams[].sender RTT ordering min<=mean<=max Original / cjson / usage-iperf3-json-r10-end-streams-sender-rtt-ordering Passed
Runs a short iperf3 TCP loopback transfer and verifies end.streams[].sender RTT values in JSON satisfy min_rtt <= mean_rtt <= max_rtt for each stream.
iperf3 -J end.sum_received.bytes ~= end.sum_sent.bytes Original / cjson / usage-iperf3-json-r10-end-sum-recv-bytes-le-sent Passed
Runs a short iperf3 TCP loopback transfer and verifies end.sum_received.bytes and end.sum_sent.bytes are both serialized as positive numbers within a small relative tolerance — iperf3's end-of-test accounting captures a few in-flight bytes that can make recv slightly exceed sent, so the cjson serializer is checked via shape + magnitude rather than strict ordering.
iperf3 -J end.sum_sent.retransmits is non-negative Original / cjson / usage-iperf3-json-r10-end-sum-sent-retransmits-nonneg Passed
Runs a short iperf3 TCP loopback transfer and verifies end.sum_sent.retransmits in JSON is a non-negative integer.
iperf3 -J intervals[].streams[].bits_per_second positive Original / cjson / usage-iperf3-json-r10-intervals-streams-bps-positive Passed
Runs a short iperf3 TCP loopback transfer with -i 1 and verifies intervals[].streams[].bits_per_second values in JSON are all positive numbers.
iperf3 -J intervals[].sum.bits_per_second positive Original / cjson / usage-iperf3-json-r10-intervals-sum-bps-positive Passed
Runs a short iperf3 TCP loopback transfer with -i 1 and verifies intervals[].sum.bits_per_second values in JSON are all positive numbers.
iperf3 -J intervals[].sum.retransmits non-negative Original / cjson / usage-iperf3-json-r10-intervals-sum-retransmits-nonneg Passed
Runs a short iperf3 TCP loopback transfer with -i 1 and verifies intervals[].sum.retransmits values in JSON are all non-negative integers.
iperf3 -J --get-server-output server_output_text non-empty Original / cjson / usage-iperf3-json-r10-server-output-text-non-empty Passed
Runs iperf3 with --get-server-output and verifies the JSON server_output_text field is a non-empty string.
iperf3 -J start.connected length equals num_streams Original / cjson / usage-iperf3-json-r10-start-connected-length-eq-num-streams Passed
Runs iperf3 with -P 2 on TCP loopback and verifies the JSON start.connected array length equals start.test_start.num_streams.
iperf3 -J -u end.sum.lost_percent upper bound Original / cjson / usage-iperf3-json-r10-udp-end-sum-lost-percent-upper-bound Passed
Runs a short iperf3 UDP loopback transfer and verifies end.sum.lost_percent in JSON is at most 100.
iperf3 -J end.streams[0].sender.max_snd_cwnd is at least each interval snd_cwnd Original / cjson / usage-iperf3-json-r11-end-stream-sender-max-snd-cwnd-ge-snd-cwnd Passed
Runs a 2-second TCP loopback transfer and verifies end.streams[0].sender.max_snd_cwnd is greater than or equal to every per-interval streams[0].snd_cwnd value, exercising the running-maximum invariant the JSON summary maintains.
iperf3 -J end.sum_sent.bytes ~ end.sum_received.bytes on TCP loopback Original / cjson / usage-iperf3-json-r11-end-sum-sent-eq-sum-received-tcp-loopback Passed
Runs a fixed-byte TCP loopback transfer and verifies end.sum_sent.bytes and end.sum_received.bytes are both positive and within a small relative tolerance — iperf3's per-side accounting can differ by a few bytes still in-flight at end-of-test, so cjson serialization is validated via shape + closeness instead of strict equality.
iperf3 -J intervals[].streams[].pmtu is positive on every sample Original / cjson / usage-iperf3-json-r11-intervals-streams-pmtu-positive Passed
Runs a 2-second TCP loopback transfer and verifies every per-interval per-stream pmtu value in the JSON report is a positive integer (the loopback path MTU is reported on each interval).
iperf3 -J intervals[].streams[].sender is true on every sample by default Original / cjson / usage-iperf3-json-r11-intervals-streams-sender-true-default Passed
Runs a default forward-direction loopback transfer (no -R/--reverse) and verifies every per-interval per-stream sender boolean in JSON is true, since the client is the sending side.
iperf3 -J intervals[].streams[].snd_cwnd is positive on every sample Original / cjson / usage-iperf3-json-r11-intervals-streams-snd-cwnd-positive Passed
Runs a 2-second TCP loopback transfer and verifies every per-interval per-stream snd_cwnd value (the kernel TCP send congestion window) in JSON is positive.
iperf3 -J intervals[].sum.sender is true on every sample by default Original / cjson / usage-iperf3-json-r11-intervals-sum-sender-true-default Passed
Runs a default forward-direction loopback transfer (no -R) and verifies every intervals[].sum.sender flag in JSON is true, marking each sampled interval as the sender-side aggregate.
iperf3 -J start.fq_rate defaults to 0 (no fair-queue rate cap) Original / cjson / usage-iperf3-json-r11-start-fq-rate-zero-default Passed
Runs a default loopback transfer (no --fq-rate) and verifies start.fq_rate in JSON is the integer 0, indicating no kernel fair-queue pacing rate is configured.
iperf3 -J start.target_bitrate is 0 by default for TCP Original / cjson / usage-iperf3-json-r11-start-target-bitrate-zero-default Passed
Runs a default TCP loopback transfer (no -b/--bitrate) and verifies start.target_bitrate in JSON is the integer 0, indicating no rate cap is configured.
iperf3 -J start.test_start.blocks defaults to 0 when -k is not set Original / cjson / usage-iperf3-json-r11-test-start-blocks-zero-default Passed
Runs a default duration-based loopback transfer (no -k flag) and verifies start.test_start.blocks in the JSON report is the integer 0, indicating the test is bounded by time, not block count.
iperf3 -J start.test_start.protocol equals "TCP" by default Original / cjson / usage-iperf3-json-r11-test-start-protocol-tcp-default Passed
Runs a default loopback transfer (no -u) and verifies start.test_start.protocol in the JSON report is the literal string "TCP".
iperf3 -J end.streams[].sender.bytes is positive on every stream Original / cjson / usage-iperf3-json-r12-end-streams-sender-bytes-positive Passed
Runs a 1-second loopback TCP transfer with -P 2 and verifies the per-stream end.streams[].sender.bytes values in the JSON report are positive integers.
iperf3 -J end.streams[].sender.start equals 0 for every parallel stream Original / cjson / usage-iperf3-json-r12-end-streams-sender-start-zero-all Passed
Runs a -P 2 TCP loopback transfer and verifies every per-stream end.streams[].sender.start in the JSON report is exactly the number 0.
iperf3 -J end.sum_received.start is the literal number 0 Original / cjson / usage-iperf3-json-r12-end-sum-received-start-zero Passed
Runs a short TCP loopback transfer and verifies end.sum_received.start in the JSON report is exactly the number 0.
iperf3 -J end.sum_sent.start is the literal number 0 Original / cjson / usage-iperf3-json-r12-end-sum-sent-start-zero Passed
Runs a short TCP loopback transfer and verifies end.sum_sent.start in the JSON report is exactly the number 0 (the test always reports a window starting at zero seconds).
iperf3 -J intervals[].streams[].omitted is false by default Original / cjson / usage-iperf3-json-r12-intervals-streams-omitted-false-default Passed
Runs a 2-second TCP loopback transfer and verifies every per-interval per-stream omitted flag in the JSON report is the JSON false value when --omit is not used.
iperf3 -J intervals[].sum.bytes is positive on every sample Original / cjson / usage-iperf3-json-r12-intervals-sum-bytes-positive Passed
Runs a 2-second TCP loopback transfer and verifies every per-interval intervals[].sum.bytes value in the JSON report is a positive integer (each window must carry payload).
iperf3 -J intervals[].sum.seconds is positive on every sample Original / cjson / usage-iperf3-json-r12-intervals-sum-seconds-positive Passed
Runs a 2-second TCP loopback transfer and verifies every per-interval intervals[].sum.seconds value in the JSON report is a positive number (each window has a non-zero duration).
iperf3 -J start.tcp_mss_default is a positive integer on TCP loopback Original / cjson / usage-iperf3-json-r12-start-tcp-mss-default-positive Passed
Runs a default loopback TCP transfer and verifies start.tcp_mss_default in the JSON report is a positive integer reflecting the kernel default MSS.
iperf3 -J start.timestamp.time is a non-empty string alongside numeric timesecs Original / cjson / usage-iperf3-json-r12-start-timestamp-time-string-non-empty Passed
Runs a default loopback transfer and verifies start.timestamp.time in the JSON report is a non-empty string and start.timestamp.timesecs is a positive number, exercising both timestamp encodings.
iperf3 -J -u end.sum.bytes is a positive integer Original / cjson / usage-iperf3-json-r12-udp-end-sum-bytes-positive Passed
Runs a 1-second UDP loopback transfer with a small bitrate and verifies end.sum.bytes in the JSON report is a positive integer.
iperf3 -J end.cpu_utilization_percent.host_total is a non-negative number Original / cjson / usage-iperf3-json-r13-end-cpu-utilization-percent-host-total-bounded Passed
Runs a 1-second loopback TCP transfer and verifies the cjson-serialised end.cpu_utilization_percent.host_total field is a finite non-negative number. (iperf3 reports host_total as a sum across CPUs, so on multi-core runners the value can exceed 100; the documented invariant is non-negativity, not the [0,100] bound the original assertion assumed.)
iperf3 -J per-stream receiver.bytes is at most sender.bytes Original / cjson / usage-iperf3-json-r13-end-streams-receiver-bytes-le-sender-bytes Passed
Runs a fixed-byte loopback TCP transfer with -P 2 and verifies that for every stream the cjson-serialised end.streams[].receiver.bytes is positive and within a small relative tolerance of end.streams[].sender.bytes — the receiver tally can include a few in-flight bytes so cjson serialization is checked via shape + closeness instead of strict ordering.
iperf3 -J end.streams[].sender.bits_per_second is positive on every stream Original / cjson / usage-iperf3-json-r13-end-streams-sender-bps-positive-all Passed
Runs a 1-second loopback TCP transfer with -P 2 and verifies that the cjson-serialised end.streams[].sender.bits_per_second value is a positive number for every stream in the parallel set.
iperf3 -J end.streams sender.bytes sum equals end.sum_sent.bytes Original / cjson / usage-iperf3-json-r13-end-streams-sender-bytes-equals-sum-sent Passed
Runs a 1-second loopback TCP transfer with -P 2 and verifies the cjson-serialised per-stream end.streams[].sender.bytes values add up to exactly end.sum_sent.bytes, exercising the documented aggregation invariant.
iperf3 -J end.streams[].sender.end is positive on every parallel stream Original / cjson / usage-iperf3-json-r13-end-streams-sender-end-positive-all Passed
Runs a 1-second loopback TCP transfer with -P 2 and verifies that the cjson-serialised end.streams[].sender.end value is a positive number for every parallel stream, reflecting the test duration each stream completed.
iperf3 -J intervals[].sum.end values strictly increase across the run Original / cjson / usage-iperf3-json-r13-intervals-sum-end-monotonic-increasing Passed
Runs a 2-second loopback TCP transfer at the default 1-second cadence and verifies the cjson-serialised intervals[].sum.end timestamps form a strictly increasing sequence across the run.
iperf3 -J start.connecting_to.host equals 127.0.0.1 on loopback Original / cjson / usage-iperf3-json-r13-start-connecting-to-host-loopback Passed
Runs a default loopback transfer and verifies the cjson-serialised start.connecting_to.host field is the literal string "127.0.0.1", exposing the destination address recorded by the client.
iperf3 -J start.test_start.bytes defaults to zero with time-based -t Original / cjson / usage-iperf3-json-r13-start-test-start-bytes-zero-default Passed
Runs a 1-second loopback TCP transfer with no -n flag and verifies the cjson-serialised start.test_start.bytes field is the numeric zero, the documented default for time-based runs.
iperf3 -J start.test_start.tos defaults to zero without -S Original / cjson / usage-iperf3-json-r13-start-test-start-tos-zero-default Passed
Runs a default loopback transfer with no -S flag and verifies the cjson-serialised start.test_start.tos field is the numeric value zero, the documented default Type-of-Service.
iperf3 -J -u sets start.test_start.protocol to "UDP" Original / cjson / usage-iperf3-json-r13-udp-start-test-start-protocol-udp Passed
Runs a 1-second UDP loopback transfer with -u -b 200K and verifies the cjson-serialised start.test_start.protocol field is the literal string "UDP", confirming the protocol switch propagates into the JSON header.
iperf3 -J end.streams[].receiver.bits_per_second sum equals end.sum_received.bits_per_second Original / cjson / usage-iperf3-json-r14-end-streams-receiver-bps-equals-sum-received Passed
Runs a 1-second loopback TCP transfer with -P 2 and verifies the cjson-serialised per-stream end.streams[].receiver.bits_per_second values add up to exactly end.sum_received.bits_per_second, exercising the documented receiver aggregation invariant.
iperf3 -J end.streams[].receiver.end is positive and within duration tolerance Original / cjson / usage-iperf3-json-r14-end-streams-receiver-end-equals-duration Passed
Runs a 2-second loopback TCP transfer and verifies the cjson-serialised end.streams[0].receiver.end timestamp is a positive number within reasonable tolerance of the requested 2-second duration, confirming the documented receiver end timestamp emission.
iperf3 -J end.streams[].sender.socket is a positive integer for every stream Original / cjson / usage-iperf3-json-r14-end-streams-sender-socket-positive Passed
Runs a 1-second loopback TCP transfer with -P 2 and verifies the cjson-serialised end.streams[].sender.socket descriptor numbers are positive integers for every stream, exercising the per-stream socket identifier emission.
iperf3 -J end.sum_received.start equals zero on a default run Original / cjson / usage-iperf3-json-r14-end-sum-received-start-equals-zero Passed
Runs a 1-second loopback TCP transfer and verifies the cjson-serialised end.sum_received.start timestamp is the numeric zero, confirming the documented default starting point of the receiver aggregate window.
iperf3 -J end.sum_sent.end is a positive number for a time-based run Original / cjson / usage-iperf3-json-r14-end-sum-sent-end-positive Passed
Runs a 1-second loopback TCP transfer and verifies the cjson-serialised end.sum_sent.end timestamp is a positive number, exercising the documented aggregation timestamp on the sender summary record.
iperf3 -J intervals[].streams[0].bytes is positive in every interval of a 2-second run Original / cjson / usage-iperf3-json-r14-intervals-streams-bytes-positive-each Passed
Runs a 2-second loopback TCP transfer and verifies the cjson-serialised intervals[].streams[0].bytes value is positive in every interval, confirming each per-second sample carries non-empty payload accounting on a busy loopback.
iperf3 -J intervals[].streams[0].socket is identical across all intervals Original / cjson / usage-iperf3-json-r14-intervals-streams-socket-stable-across-intervals Passed
Runs a 2-second loopback TCP transfer with the default 1-second cadence and verifies the cjson-serialised intervals[].streams[0].socket value is the same positive integer in every interval, confirming the per-stream socket descriptor is stable for the lifetime of the test.
iperf3 -J start.connecting_to.port equals the -p argument Original / cjson / usage-iperf3-json-r14-start-connecting-to-port-matches-arg Passed
Runs a 1-second loopback TCP transfer and verifies the cjson-serialised start.connecting_to.port number equals the explicit -p argument passed to the client, confirming the requested port propagates into the JSON header.
iperf3 -J -P 3 start.test_start.num_streams equals 3 Original / cjson / usage-iperf3-json-r14-start-test-start-num-streams-matches-parallel Passed
Runs a 1-second loopback TCP transfer with -P 3 and verifies the cjson-serialised start.test_start.num_streams field equals exactly 3, confirming the parallel stream count propagates into the test_start record.
iperf3 -J start.version is a non-empty iperf-3.x string Original / cjson / usage-iperf3-json-r14-start-version-matches-cli-version Passed
Runs a 1-second loopback TCP transfer and verifies the cjson-serialised start.version field is a non-empty string beginning with the literal "iperf 3.", confirming the version banner is exposed through the JSON envelope.
iperf3 -J end.cpu_utilization_percent advertises both host_total and remote_total Original / cjson / usage-iperf3-json-r15-end-cpu-host-and-remote-total-distinct-keys Passed
Runs a 1-second loopback TCP transfer and verifies the cjson-serialised end.cpu_utilization_percent object has the keys host_total and remote_total, both numeric and within the documented [0, 100*N] CPU-percent envelope on a multicore host.
iperf3 -J end.streams[0] sender.bytes ~ receiver.bytes on lossless single-stream TCP Original / cjson / usage-iperf3-json-r15-end-streams-sender-bytes-equals-receiver-bytes-tcp Passed
Runs a fixed-byte single-stream loopback TCP transfer and verifies the cjson-serialised end.streams[0].sender.bytes and end.streams[0].receiver.bytes are both positive numbers within a small relative tolerance — iperf3's per-side accounting can differ by a few in-flight bytes at end-of-test, so cjson serialization is checked via shape + closeness rather than strict equality.
iperf3 -J end.streams[0].sender.seconds equals end.streams[0].sender.end Original / cjson / usage-iperf3-json-r15-end-streams-sender-seconds-equals-end Passed
Runs a 1-second single-stream loopback TCP transfer with sender.start at zero and verifies the cjson-serialised end.streams[0].sender.seconds equals end.streams[0].sender.end exactly, exercising the documented duration-equals-end invariant when start is zero.
iperf3 -J end.sum_sent.bytes ~ end.sum_received.bytes on a single-stream TCP loopback Original / cjson / usage-iperf3-json-r15-end-sum-sent-bytes-equals-sum-received-bytes-tcp Passed
Runs a fixed-byte single-stream loopback TCP transfer and verifies the cjson-serialised end.sum_sent.bytes and end.sum_received.bytes are both positive numbers within a small relative tolerance — iperf3's per-side accounting can differ by a few in-flight bytes at end-of-test, so cjson serialization is checked via shape + closeness rather than strict equality.
iperf3 -J intervals[].streams[].rttvar is non-negative for every interval Original / cjson / usage-iperf3-json-r15-intervals-streams-rttvar-nonneg-each Passed
Runs a 2-second single-stream loopback TCP transfer with a half-second interval and verifies every cjson-serialised intervals[].streams[].rttvar value is a non-negative number, exercising the documented per-interval RTT variance non-negativity invariant.
iperf3 -J intervals[0].sum.bytes equals the sum of intervals[0].streams[].bytes with -P 2 Original / cjson / usage-iperf3-json-r15-intervals-sum-bytes-equals-streams-sum Passed
Runs a 1-second loopback TCP transfer with -P 2 and verifies the cjson-serialised intervals[0].sum.bytes equals the addition of intervals[0].streams[].bytes across both streams, exercising the documented per-interval aggregation invariant.
iperf3 -J start.connected[0].remote_port equals the -p server port Original / cjson / usage-iperf3-json-r15-start-connected-remote-port-matches-server Passed
Runs a 1-second loopback TCP transfer with an explicit -p value and verifies the cjson-serialised start.connected[0].remote_port equals the numeric server port supplied on the command line, exercising the documented per-connection remote-port emission.
iperf3 -J start.connecting_to.port equals the -p server port Original / cjson / usage-iperf3-json-r15-start-connecting-to-port-equals-server-port Passed
Runs a 1-second loopback TCP transfer with an explicit -p value and verifies the cjson-serialised start.connecting_to.port field exactly matches the numeric server port supplied on the command line, exercising the documented destination-port emission.
iperf3 -J start.test_start.bidir defaults to zero without --bidir Original / cjson / usage-iperf3-json-r15-start-test-start-bidir-zero-default Passed
Runs a 1-second loopback TCP transfer without --bidir and verifies the cjson-serialised start.test_start.bidir field is the numeric zero, the documented default direction flag when bidirectional mode is not requested.
iperf3 -J start.test_start.omit defaults to zero with no -O flag Original / cjson / usage-iperf3-json-r15-start-test-start-omit-zero-default Passed
Runs a 1-second loopback TCP transfer with no -O flag and verifies the cjson-serialised start.test_start.omit field is the numeric zero, the documented default omit-seconds value when not requested.
iperf3 -J end.sender_tcp_congestion is a non-empty string Original / cjson / usage-iperf3-json-r16-end-sender-tcp-congestion-string Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised end.sender_tcp_congestion field exists, is of type string, and has length > 0 — exercising the per-end algorithm-name emission path.
iperf3 -J intervals[].streams[].omitted is a boolean across all rows Original / cjson / usage-iperf3-json-r16-intervals-streams-omitted-flag-boolean Passed
Runs a 2-second loopback TCP transfer and asserts every intervals[].streams[] entry exposes an "omitted" key of JSON-boolean type — exercising the cjson serialiser's boolean emission on the per-second interval stream rows.
iperf3 -J --logfile emits the same top-level JSON keys as stdout Original / cjson / usage-iperf3-json-r16-logfile-json-equals-stdout-shape Passed
Runs a 1-second loopback TCP transfer twice, once with -J writing to stdout and once with -J --logfile writing to a file, and asserts both JSON outputs share the same top-level cjson key set (start, intervals, end), confirming the logfile sink preserves the serialised top-level shape.
iperf3 -J start.system_info is a non-empty string containing "Linux" Original / cjson / usage-iperf3-json-r16-system-info-string-nonempty Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised start.system_info is a non-empty string and contains the substring "Linux", reflecting the uname banner shape on noble.
iperf3 -J start.timestamp exposes both time string and numeric timesecs Original / cjson / usage-iperf3-json-r16-timestamp-fields-shape Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised start.timestamp object has a string "time" field and a numeric "timesecs" field that is at least the Unix epoch base 1700000000 (mid-2023), confirming the dual time-representation present in the start banner.
iperf3 -J -Z (zerocopy) completes and emits a well-formed end.sum_sent object Original / cjson / usage-iperf3-json-r16-zerocopy-flag-passthrough Passed
Runs a 1-second loopback TCP transfer with -Z (zerocopy/sendfile send path) and asserts the cjson-serialised top-level JSON is well-formed and end.sum_sent has positive bytes and seconds, confirming the zerocopy flag does not perturb the JSON shape on noble.
iperf3 -J end.cpu_utilization_percent.host_total is numeric and non-negative Original / cjson / usage-iperf3-json-r17-end-cpu-host-total-type-number Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised end.cpu_utilization_percent.host_total field is of type number and not negative, without asserting any upper bound because multicore CI runners legitimately exceed 100.
iperf3 -J end.streams[].socket is a numeric file descriptor Original / cjson / usage-iperf3-json-r17-end-streams-socket-numeric Passed
Runs a 1-second loopback TCP transfer and asserts every entry in end.streams has either a top-level socket field of numeric type or a sender/receiver.socket of numeric type, exercising the file-descriptor emission per stream as serialised by cJSON without pinning the value.
iperf3 -J -i 0.5 -t 1.5 emits at least two interval entries Original / cjson / usage-iperf3-json-r17-interval-half-second-at-least-two-entries Passed
Runs a 1.5-second loopback TCP transfer with --interval 0.5 and asserts the cjson-serialised intervals array length is greater than or equal to 2, exercising sub-second interval reporting without pinning the exact count which can be jittery on CI.
iperf3 -J --omit 1 surfaces start.test_start.omit equal to 1 Original / cjson / usage-iperf3-json-r17-omit-one-start-test-start-omit-equals-one Passed
Runs a 2-second loopback TCP transfer with --omit 1 and asserts the cjson-serialised start.test_start.omit field is numeric and exactly equal to 1, distinguishing this case from the default-zero omit emission tests.
iperf3 -J -P 3 end.sum_received.bits_per_second is non-negative numeric Original / cjson / usage-iperf3-json-r17-parallel-three-end-sum-received-bps-nonneg Passed
Runs a 1-second loopback TCP transfer with -P 3 and asserts the cjson-serialised end.sum_received.bits_per_second field is of type number and not negative, exercising the aggregated receiver throughput emission under parallel-streams.
iperf3 -J -P 2 emits exactly two entries in end.streams Original / cjson / usage-iperf3-json-r17-parallel-two-end-streams-length-two Passed
Runs a 1-second loopback TCP transfer with -P 2 and asserts the cjson-serialised end.streams array has length exactly 2, exercising the per-stream report under parallel-streams configuration distinct from default and three-stream cases.
iperf3 -J --reverse end.streams[0].receiver.bytes is a positive number Original / cjson / usage-iperf3-json-r17-reverse-end-streams-receiver-bytes-positive Passed
Runs a 1-second loopback TCP --reverse transfer and asserts the cjson-serialised end.streams[0].receiver object exists with a numeric bytes field greater than zero, exercising the per-stream receiver report in the server-to-client direction.
iperf3 -J start.cookie is a string of length at least ten Original / cjson / usage-iperf3-json-r17-start-cookie-length-at-least-ten Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised start.cookie is of type string with at least 10 characters, exercising the per-test cookie identifier emission with a soft lower-bound rather than a strict fixed length.
iperf3 -J -u -b 1M end.sum.lost_packets is a non-negative number Original / cjson / usage-iperf3-json-r17-udp-1m-end-sum-lost-packets-numeric Passed
Runs a 1-second UDP loopback transfer at 1 Mbit/s and asserts the cjson-serialised end.sum.lost_packets field is present, of numeric type, and not negative, exercising the lost_packets emission on the UDP end-summary object.
iperf3 -J -u end.sum.jitter_ms is a non-negative numeric value Original / cjson / usage-iperf3-json-r17-udp-end-sum-jitter-ms-numeric Passed
Runs a 1-second UDP loopback transfer at 256 Kbit/s and asserts the cjson-serialised end.sum.jitter_ms key exists, is of type number, and is not negative, exercising the jitter_ms emission distinct from per-stream jitter fields.
iperf3 -J end.streams[0].receiver.end is a strictly positive number Original / cjson / usage-iperf3-json-r18-end-streams-receiver-end-positive Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised end.streams[0].receiver.end timestamp is of type number and strictly greater than zero, exercising the per-stream receiver end-time emission distinct from sender end-time tests.
iperf3 -J end.streams[0].sender.retransmits is a non-negative number Original / cjson / usage-iperf3-json-r18-end-streams-sender-retransmits-numeric Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised end.streams[0].sender.retransmits field is a numeric value greater than or equal to zero, exercising the per-stream retransmit counter without pinning an exact count which varies on loopback.
iperf3 -J end.sum_received.bytes is a positive number on a 1-second TCP transfer Original / cjson / usage-iperf3-json-r18-end-sum-received-bytes-positive Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised end.sum_received.bytes field is a number strictly greater than zero, exercising the aggregated receiver bytes summary distinct from sender-side counters.
iperf3 -J end.sum_sent.bytes is a positive number on a 1-second TCP transfer Original / cjson / usage-iperf3-json-r18-end-sum-sent-bytes-positive Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised end.sum_sent.bytes field is a number strictly greater than zero, exercising the aggregated sender bytes summary distinct from receiver-side or per-stream byte counters.
iperf3 -J intervals[0].streams length equals 1 for the default single-stream client Original / cjson / usage-iperf3-json-r18-intervals-first-streams-array-length-one Passed
Runs a 1-second single-stream loopback TCP transfer and asserts the cjson-serialised intervals[0].streams array has exactly one element, exercising the per-interval per-stream listing on the default-parallel path.
iperf3 -J start.connecting_to.port equals the server -p argument Original / cjson / usage-iperf3-json-r18-start-connecting-to-port-equals-server Passed
Spawns an iperf3 server on a chosen ephemeral port and runs the client with -p set to that same port, asserting the cjson-serialised start.connecting_to.port field is a number equal to the chosen port, exercising the connecting-to port reporting independent of host string.
iperf3 -J start.system_info is a non-empty string Original / cjson / usage-iperf3-json-r18-start-system-info-non-empty Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised start.system_info field is of type string with length greater than zero, exercising the system uname information emission which is filled from a uname call.
iperf3 -J start.test_start.protocol equals "TCP" for a TCP transfer Original / cjson / usage-iperf3-json-r18-start-test-start-protocol-tcp Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised start.test_start.protocol field is the string "TCP", exercising the protocol identifier emission distinct from UDP-protocol tests.
iperf3 -J start.timestamp.time is a non-empty string and timesecs is positive Original / cjson / usage-iperf3-json-r18-start-timestamp-time-non-empty Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised start.timestamp.time field is a non-empty string and start.timestamp.timesecs is a positive integer, exercising the run-start timestamp pair emission.
iperf3 -J -u start.test_start.protocol equals "UDP" for a UDP transfer Original / cjson / usage-iperf3-json-r18-udp-start-test-start-protocol-udp Passed
Runs a 1-second loopback UDP transfer at 128 Kbit/s and asserts the cjson-serialised start.test_start.protocol field is the string "UDP", exercising the protocol identifier emission on the UDP code path.
iperf3 -J end.cpu_utilization_percent host_total equals host_user plus host_system within tolerance Original / cjson / usage-iperf3-json-r19-end-cpu-host-total-equals-user-plus-system Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised end.cpu_utilization_percent.host_total is within 1e-6 of host_user + host_system, exercising the CPU utilization decomposition invariant emitted into the JSON tree.
iperf3 -J end.streams[0].receiver.bytes equals end.sum_received.bytes on single stream Original / cjson / usage-iperf3-json-r19-end-streams-receiver-bytes-equals-sum-received Passed
Runs a 1-second single-stream loopback TCP transfer and asserts the cjson-serialised end.streams[0].receiver.bytes equals end.sum_received.bytes since only one stream contributes to the receiver sum, exercising the per-stream receiver-bytes aggregation invariant.
iperf3 -J end.streams[0].sender.bits_per_second equals end.sum_sent.bits_per_second on single stream Original / cjson / usage-iperf3-json-r19-end-streams-sender-bps-equals-sum-sent Passed
Runs a 1-second single-stream loopback TCP transfer and asserts the cjson-serialised end.streams[0].sender.bits_per_second equals end.sum_sent.bits_per_second since only one stream contributes to the sum, exercising the per-stream-to-sum aggregation invariant.
iperf3 -J end.streams[0].sender.socket is a non-negative number Original / cjson / usage-iperf3-json-r19-end-streams-sender-socket-numeric Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised end.streams[0].sender.socket field is of type number and non-negative, exercising the per-stream socket descriptor emission inside the end summary distinct from the start.connected socket field.
iperf3 -J every intervals[*].streams[0].end is strictly greater than its start Original / cjson / usage-iperf3-json-r19-intervals-streams-end-greater-than-start Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised intervals array has every per-stream entry where streams[0].end is strictly greater than streams[0].start, exercising the per-interval per-stream time-window monotonicity invariant.
iperf3 -J start.connected[0].local_host equals 127.0.0.1 for a loopback transfer Original / cjson / usage-iperf3-json-r19-start-connected-local-host-loopback Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised start.connected[0].local_host string equals "127.0.0.1", exercising the per-connection local-host emission distinct from connecting_to.host tests.
iperf3 -J start.connected[0].remote_host equals 127.0.0.1 for a loopback transfer Original / cjson / usage-iperf3-json-r19-start-connected-remote-host-loopback Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised start.connected[0].remote_host string equals "127.0.0.1", exercising the per-connection remote-host emission as the counterpart of the local-host field.
iperf3 -J -t 2 start.test_start.duration equals the requested 2-second duration Original / cjson / usage-iperf3-json-r19-start-test-start-duration-matches-flag Passed
Runs a 2-second loopback TCP transfer using -t 2 and asserts the cjson-serialised start.test_start.duration integer equals 2, exercising the duration flag echo through the start section distinct from end-time tests.
iperf3 -J start.test_start.num_streams equals 1 for the default single-stream client Original / cjson / usage-iperf3-json-r19-start-test-start-num-streams-equals-one Passed
Runs a 1-second default-parallel loopback TCP transfer and asserts the cjson-serialised start.test_start.num_streams integer equals 1, exercising the per-test stream-count emission on the default-parallel code path.
iperf3 -J -u end.streams[0].udp.packets is a strictly positive number Original / cjson / usage-iperf3-json-r19-udp-end-streams-udp-packets-positive Passed
Runs a 1-second loopback UDP transfer at 128 Kbit/s and asserts the cjson-serialised end.streams[0].udp.packets integer is of type number and strictly greater than zero, exercising the per-stream UDP packet-count emission distinct from jitter and loss tests.
iperf3 -J end.cpu_utilization_percent.host_system is less than or equal to host_total Original / cjson / usage-iperf3-json-r20-end-cpu-host-system-le-host-total Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised end.cpu_utilization_percent.host_system value is less than or equal to host_total since user+system equals total, exercising the host CPU sub-field ordering invariant distinct from prior nonnegativity-only and bounds-only tests.
iperf3 -J -t 1 end.streams[0].receiver.seconds approximately equals the requested duration Original / cjson / usage-iperf3-json-r20-end-streams-receiver-seconds-equals-duration Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised end.streams[0].receiver.seconds value is a number close to the requested 1-second duration (within +/- 0.5s), exercising the per-stream receiver elapsed-time field distinct from prior bps and bytes assertions.
iperf3 -J end.streams[0].sender.mean_rtt is greater than or equal to min_rtt Original / cjson / usage-iperf3-json-r20-end-streams-sender-mean-rtt-ge-min-rtt Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised end.streams[0].sender.mean_rtt is at least end.streams[0].sender.min_rtt, exercising the per-stream RTT statistics ordering invariant distinct from prior min/mean/max-only nonnegativity tests.
iperf3 -J TCP end.sum_sent.bits_per_second matches 8 * bytes / seconds Original / cjson / usage-iperf3-json-r20-end-sum-sent-bytes-equals-sum-bytes-tcp Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised end.sum_sent.bits_per_second equals 8 * end.sum_sent.bytes / end.sum_sent.seconds within 0.1% relative tolerance, exercising the bytes-to-bps derivation invariant inside the sum_sent aggregate record.
iperf3 -J intervals[].streams[0].rtt is a positive number in every interval Original / cjson / usage-iperf3-json-r20-intervals-streams-rtt-positive-each Passed
Runs a 2-second loopback TCP transfer and asserts every cjson-serialised intervals[].streams[0].rtt is a positive number, exercising the per-interval per-stream RTT field for all intervals (not just the last) distinct from earlier non-negative-only or first-interval-only tests.
iperf3 -J start.cookie consists of printable ASCII characters only Original / cjson / usage-iperf3-json-r20-start-cookie-printable-ascii Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised start.cookie string matches the printable-ASCII pattern (no whitespace, no control characters, no extended bytes) with length at least 32, exercising the cookie character set distinct from prior length-only and shape-only tests.
iperf3 -J -l 4096 reports start.test_start.blksize equal to 4096 Original / cjson / usage-iperf3-json-r20-start-test-start-blksize-equals-flag Passed
Runs a 1-second loopback TCP transfer with -l 4096 and asserts the cjson-serialised start.test_start.blksize integer equals 4096, exercising propagation of the block-size flag into the start.test_start summary distinct from prior blksize tests that asserted only positivity or default values.
iperf3 -J without -O reports start.test_start.omit equal to integer 0 Original / cjson / usage-iperf3-json-r20-start-test-start-omit-equals-zero-default Passed
Runs a 1-second loopback TCP transfer without the -O flag and asserts the cjson-serialised start.test_start.omit field is exactly the integer 0, exercising the default-zero invariant of the omit field with strict equality distinct from prior default-zero tests that used >= 0.
iperf3 -J -b 500K reports start.test_start.target_bitrate equal to 500000 Original / cjson / usage-iperf3-json-r20-start-test-start-target-bitrate-equals-flag-tcp Passed
Runs a 1-second loopback TCP transfer at -b 500K and asserts the cjson-serialised start.test_start.target_bitrate integer equals 500000, exercising target_bitrate propagation from the -b flag distinct from prior tests which checked default-zero or UDP bitrate behavior.
iperf3 -J -u loopback end.sum.jitter_ms is bounded above by 100 ms Original / cjson / usage-iperf3-json-r20-udp-end-sum-jitter-ms-le-100 Passed
Runs a 1-second loopback UDP transfer at 128 Kbit/s and asserts the cjson-serialised end.sum.jitter_ms is a finite number less than or equal to 100 ms (a generous upper bound for loopback transport), exercising an upper-bound invariant on the UDP jitter aggregate distinct from prior nonnegativity-only tests.
iperf3 -J start.cookie differs between two consecutive loopback runs Original / cjson / usage-iperf3-json-r21-cookie-distinct-across-two-runs Passed
Runs two separate 1-second loopback TCP iperf3 tests back-to-back and asserts the cjson-serialised .start.cookie field is a non-empty string in each output and the two cookies are distinct (UUID/random per run), exercising the run-uniqueness property of the start.cookie field distinct from prior single-run shape/length tests.
iperf3 -J end.cpu_utilization_percent.remote_user is less than or equal to remote_total Original / cjson / usage-iperf3-json-r21-end-cpu-remote-user-le-remote-total Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised end.cpu_utilization_percent.remote_user is numeric and <= remote_total (since user+system equals total), exercising the remote-side CPU sub-field ordering invariant distinct from prior remote-user-nonnegative and remote-total-bounds tests.
iperf3 -J intervals[].streams[0].pmtu is identical across all intervals on loopback Original / cjson / usage-iperf3-json-r21-intervals-streams-pmtu-identical Passed
Runs a 2-second loopback TCP transfer with the default 1-second cadence and asserts every cjson-serialised intervals[].streams[0].pmtu value is identical (path MTU is stable on the lo interface for the lifetime of the test), distinct from prior per-interval pmtu positivity tests that did not check identity across intervals.
iperf3 -J sum of intervals[].sum.bytes is within 5% of end.sum_sent.bytes Original / cjson / usage-iperf3-json-r21-intervals-sum-bytes-close-to-end-sum-sent-bytes Passed
Runs a 2-second loopback TCP transfer and asserts the cjson-serialised sum of every intervals[].sum.bytes is positive and within 5% of the final end.sum_sent.bytes (the per-interval bytes partition the total sent bytes up to last-partial-interval rounding), exercising the additivity invariant between intervals and end summary distinct from prior intervals-vs-streams comparisons.
iperf3 -J start.connected[0].remote_port equals start.connecting_to.port Original / cjson / usage-iperf3-json-r21-start-connected-remote-port-equals-connecting-to-port Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised start.connected[0].remote_port equals start.connecting_to.port (the client-side socket remote port matches the dialed server port), exercising the connected-array remote_port consistency invariant distinct from prior remote_port-matches-server tests that only checked a fixed value.
iperf3 -J start.connected[0].socket equals end.streams[0].sender.socket Original / cjson / usage-iperf3-json-r21-start-connected-socket-equals-end-streams-socket Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised start.connected[0].socket equals end.streams[0].sender.socket (the file descriptor reported during connect is the same one reported in the per-stream sender end summary), exercising the cross-section socket-identity invariant distinct from prior socket-presence-only tests.
iperf3 -J start.rcvbuf_actual and start.sndbuf_actual are both positive and within an order of magnitude Original / cjson / usage-iperf3-json-r21-start-rcvbuf-actual-le-sndbuf-actual-times-four Passed
Runs a 1-second loopback TCP transfer with no -w override and asserts both cjson-serialised start.rcvbuf_actual and start.sndbuf_actual are positive numbers and that neither exceeds the other by more than a factor of eight (defaults are typically within 4x), exercising the joint emission of socket buffer fields distinct from prior individual positivity tests.
iperf3 -J start.sock_bufsize defaults to zero with no -w flag Original / cjson / usage-iperf3-json-r21-start-sock-bufsize-zero-default Passed
Runs a 1-second loopback TCP transfer with no -w/--window flag and asserts the cjson-serialised start.sock_bufsize is numeric and equals zero (no kernel-window override requested), distinct from the existing nonnegativity-only test and the 256K-window equality test.
iperf3 -J start.timestamp.timesecs is within 120 seconds of host wall-clock time Original / cjson / usage-iperf3-json-r21-start-timestamp-timesecs-near-current-time Passed
Captures the host wall-clock time before and after a 1-second loopback TCP run and asserts the cjson-serialised start.timestamp.timesecs lies in the inclusive window [before-1, after+1], exercising the timestamp emission against real clock distinct from prior positivity/shape tests that only checked the type or string presence.
iperf3 -J -l 1K sets start.test_start.blksize to exactly 1024 Original / cjson / usage-iperf3-json-r21-test-start-blksize-1024-with-l-flag Passed
Runs a loopback TCP transfer with -l 1K (one-kibibyte read/write block size) and asserts the cjson-serialised start.test_start.blksize equals 1024 exactly, exercising the SI-suffix block-size parsing through to the JSON tree distinct from default-blksize tests and the udp-length-1024 test that asserts length, not blksize.
iperf3 JSON receiver TCP congestion is string Original / cjson / usage-iperf3-json-receiver-tcp-congestion-string Passed
Validates that the cjson-emitted end.receiver_tcp_congestion is a non-empty string after a TCP loopback transfer.
iperf3 JSON remote host loopback Original / cjson / usage-iperf3-json-remote-host-loopback Passed
iperf3 JSON remote port field Original / cjson / usage-iperf3-json-remote-port-field Passed
iperf3 JSON repeating payload Original / cjson / usage-iperf3-json-repeating-payload Passed
Runs iperf3 with --repeating-payload so the cjson serializer must still emit a complete start/end JSON document with positive sent bytes.
iperf3 JSON reverse flag field Original / cjson / usage-iperf3-json-reverse-flag-field Passed
iperf3 JSON reverse received bytes Original / cjson / usage-iperf3-json-reverse-received-bytes Passed
Runs a reverse iperf3 test and verifies the received byte count reported in the JSON end section.
iperf3 JSON reverse sum_sent sender false Original / cjson / usage-iperf3-json-reverse-sum-sent-sender-false Passed
Runs an iperf3 reverse-mode (-R) transfer and verifies that end.sum_sent.sender is serialized as false because the local client is the receiver.
iperf3 JSON reverse TCP Original / cjson / usage-iperf3-json-reverse-tcp Passed
iperf3 reverse JSON throughput Original / cjson / usage-iperf3-json-reverse-throughput Passed
iperf3 JSON reverse two streams Original / cjson / usage-iperf3-json-reverse-two-streams-count Passed
Runs a reverse two-stream iperf3 transfer and verifies the reverse flag and stream count in the JSON metadata.
iperf3 JSON accepts -A client,server affinity pair Original / cjson / usage-iperf3-json-server-affinity-flag Passed
Confirms iperf3 client accepts -A n,m to pin both client and server affinities to CPU 0 and emits a parseable JSON report with a populated cookie.
iperf3 server JSON output Original / cjson / usage-iperf3-json-server-output Passed
Runs iperf3 with server-output capture and verifies the client JSON includes server-side results.
iperf3 JSON small fixed transfer Original / cjson / usage-iperf3-json-small-fixed Passed
iperf3 JSON accepts --snd-timeout Original / cjson / usage-iperf3-json-snd-timeout-flag Passed
Confirms iperf3 client accepts --snd-timeout 5000 and still emits well-formed JSON with the expected start block.
iperf3 JSON connected socket Original / cjson / usage-iperf3-json-start-connected-socket Passed
iperf3 JSON .start.cookie matches expected character shape Original / cjson / usage-iperf3-json-start-cookie-uuid-shape Passed
Validates the iperf3 cookie field contains only printable ASCII characters typical for the iperf3 cookie format and is at least 8 characters long.
iperf3 JSON start rcvbuf_actual Original / cjson / usage-iperf3-json-start-rcvbuf-actual-positive Passed
Reads start.rcvbuf_actual from the iperf3 JSON header so the cjson serializer must encode the kernel-reported receive buffer size.
iperf3 JSON start sndbuf_actual Original / cjson / usage-iperf3-json-start-sndbuf-actual-positive Passed
Reads start.sndbuf_actual from the iperf3 JSON header so the cjson serializer must encode the kernel-reported send buffer size.
iperf3 JSON start sock_bufsize Original / cjson / usage-iperf3-json-start-sock-bufsize-nonnegative Passed
Reads start.sock_bufsize from the iperf3 JSON header so the cjson serializer must encode the requested socket buffer size.
iperf3 JSON start timestamp time string Original / cjson / usage-iperf3-json-start-timestamp-time-string Passed
Reads start.timestamp.time as a populated human-readable string so the cjson serializer must encode the timestamp.time field alongside the numeric timesecs sibling.
iperf3 JSON received duration Original / cjson / usage-iperf3-json-sum-received-seconds-positive Passed
iperf3 JSON received sender flag Original / cjson / usage-iperf3-json-sum-received-sender-boolean Passed
iperf3 JSON sent duration Original / cjson / usage-iperf3-json-sum-sent-seconds-positive Passed
iperf3 JSON sent sender flag Original / cjson / usage-iperf3-json-sum-sent-sender-true Passed
iperf3 JSON system info field Original / cjson / usage-iperf3-json-system-info-field Passed
iperf3 JSON target bitrate 256K Original / cjson / usage-iperf3-json-target-bitrate-256k Passed
Runs a UDP iperf3 transfer with an explicit target bitrate and verifies the JSON metadata records a positive target bitrate.
iperf3 JSON sender TCP congestion cubic Original / cjson / usage-iperf3-json-tcp-congestion-cubic Passed
Selects the cubic congestion algorithm with -C and verifies the cjson serializer echoes "cubic" in end.sender_tcp_congestion.
iperf3 JSON tcp_mss_default Original / cjson / usage-iperf3-json-tcp-mss-default-positive Passed
Reads start.tcp_mss_default from the iperf3 JSON header so the cjson serializer must emit the kernel-reported default TCP MSS as a positive number.
iperf3 JSON TCP protocol field Original / cjson / usage-iperf3-json-tcp-protocol-field Passed
iperf3 TCP JSON throughput Original / cjson / usage-iperf3-json-tcp-throughput Passed
Runs an iperf3 loopback TCP test with JSON output and verifies throughput fields emitted by the client.
iperf3 JSON bidir flag echoed Original / cjson / usage-iperf3-json-test-start-bidir-flag-on Passed
Runs iperf3 with --bidir and verifies start.test_start.bidir is non-zero so the cjson serializer must echo the bidirectional mode flag.
iperf3 JSON test_start blksize 8K Original / cjson / usage-iperf3-json-test-start-blksize-8k Passed
Runs iperf3 with --length 8K and asserts start.test_start.blksize equals 8192 so cjson must echo the user-specified TCP block size in the test_start record.
iperf3 JSON test_start.duration reflects -t 3 Original / cjson / usage-iperf3-json-test-start-duration-three-seconds Passed
Confirms iperf3 records the requested three-second duration in .start.test_start.duration when invoked with -t 3.
iperf3 JSON test_start flowlabel field Original / cjson / usage-iperf3-json-test-start-flowlabel-field Passed
iperf3 JSON test_start fqrate 100K Original / cjson / usage-iperf3-json-test-start-fqrate-100k Passed
Runs iperf3 with --fq-rate 100K and asserts start.test_start.fqrate equals 100000 so the cjson serializer must echo the fair-queue pacing rate.
iperf3 JSON test_start IPv4 selection Original / cjson / usage-iperf3-json-test-start-ip-version-four Passed
iperf3 JSON default num_streams equals one Original / cjson / usage-iperf3-json-test-start-num-streams-default-one Passed
Runs a single-stream iperf3 transfer without -P and verifies start.test_start.num_streams equals 1 so the cjson serializer emits the default stream count.
iperf3 JSON test_start omit defaults to zero Original / cjson / usage-iperf3-json-test-start-omit-zero-default Passed
iperf3 JSON test_start parallel echoes two Original / cjson / usage-iperf3-json-test-start-parallel-two-echo Passed
iperf3 JSON default reverse zero Original / cjson / usage-iperf3-json-test-start-reverse-zero-default Passed
Runs a forward iperf3 transfer without -R and verifies start.test_start.reverse equals 0 so cjson encodes the default forward direction marker.
iperf3 JSON time based Original / cjson / usage-iperf3-json-time-based Passed
iperf3 JSON combined duration and omit Original / cjson / usage-iperf3-json-time-omit-combined Passed
Runs iperf3 with -t 1 and -O 1 together so the cjson serializer must emit both duration and omit values in start.test_start of the same JSON document.
iperf3 JSON timestamp field Original / cjson / usage-iperf3-json-timestamp-field Passed
iperf3 JSON timestamp seconds Original / cjson / usage-iperf3-json-timestamp-timesecs-positive Passed
iperf3 JSON title field Original / cjson / usage-iperf3-json-title-field Passed
Runs iperf3 JSON output with a test title and verifies the title field recorded in the JSON document.
iperf3 JSON TOS transfer Original / cjson / usage-iperf3-json-tos-field Passed
iperf3 JSON TOS flag field Original / cjson / usage-iperf3-json-tos-flag-field Passed
iperf3 JSON TOS 0x20 echo Original / cjson / usage-iperf3-json-tos-hex-32 Passed
Sets the IP TOS byte to 0x20 so the cjson serializer must echo the decimal value 32 in start.test_start.tos.
iperf3 JSON bound UDP client Original / cjson / usage-iperf3-json-udp-bind-loopback Passed
iperf3 JSON UDP blksize 1400 Original / cjson / usage-iperf3-json-udp-blksize-1400-field Passed
Runs a UDP iperf3 transfer with a 1400-byte block size and verifies the JSON test metadata records the block size.
iperf3 JSON UDP cport local port Original / cjson / usage-iperf3-json-udp-cport-local-port-25002 Passed
Runs a UDP iperf3 transfer with an explicit client port and verifies the JSON connection metadata records that local port.
iperf3 JSON UDP jitter Original / cjson / usage-iperf3-json-udp-end-jitter-nonnegative Passed
iperf3 JSON UDP end out_of_order zero Original / cjson / usage-iperf3-json-udp-end-out-of-order-zero Passed
Runs a short UDP loopback transfer and asserts end.streams[0].udp.out_of_order is zero so the cjson serializer must encode the per-stream out-of-order packet counter on a clean loopback path.
iperf3 JSON UDP packets Original / cjson / usage-iperf3-json-udp-end-packets-positive Passed
iperf3 JSON UDP end sum jitter_ms Original / cjson / usage-iperf3-json-udp-end-sum-jitter-ms-nonnegative Passed
Verifies a UDP iperf3 transfer reports a non-negative numeric jitter_ms on end.sum in JSON output.
iperf3 JSON UDP interval report Original / cjson / usage-iperf3-json-udp-interval-report Passed
Requests interval reporting during a short UDP iperf3 run and verifies the JSON output still contains summary data.
iperf3 JSON UDP jitter field Original / cjson / usage-iperf3-json-udp-jitter-field Passed
iperf3 JSON UDP datagram length 1024 Original / cjson / usage-iperf3-json-udp-length-1024 Passed
Runs UDP iperf3 with a 1024-byte datagram length so the cjson serializer must emit blksize 1024 alongside protocol UDP in start.test_start.
iperf3 JSON UDP packet length Original / cjson / usage-iperf3-json-udp-length Passed
iperf3 JSON UDP loss percent Original / cjson / usage-iperf3-json-udp-loss-percent Passed
Runs a short UDP iperf3 transfer and verifies the JSON summary exposes the packet loss percentage field.
iperf3 JSON UDP packet count consistency Original / cjson / usage-iperf3-json-udp-packet-count-consistency Passed
Runs a UDP iperf3 transfer and verifies end.sum.packets equals the sum of end.streams[].udp.packets so cjson encodes consistent aggregate and per-stream packet counters.
iperf3 JSON UDP parallel three streams Original / cjson / usage-iperf3-json-udp-parallel-three-count Passed
Runs a three-stream UDP iperf3 transfer and verifies the JSON metadata records both the UDP protocol and stream count.
iperf3 JSON parallel UDP Original / cjson / usage-iperf3-json-udp-parallel Passed
iperf3 JSON UDP protocol field Original / cjson / usage-iperf3-json-udp-protocol-field Passed
iperf3 JSON reverse UDP Original / cjson / usage-iperf3-json-udp-reverse Passed
iperf3 JSON per-stream UDP jitter Original / cjson / usage-iperf3-json-udp-streams-jitter-ms-nonnegative Passed
Reads end.streams[0].udp.jitter_ms from the iperf3 UDP JSON summary so the cjson serializer must encode the per-stream jitter measurement.
iperf3 JSON per-stream UDP lost packets Original / cjson / usage-iperf3-json-udp-streams-lost-nonnegative Passed
Reads end.streams[0].udp.lost_packets from the iperf3 UDP JSON summary so the cjson serializer must encode the per-stream lost-packet counter.
iperf3 JSON per-stream UDP packets Original / cjson / usage-iperf3-json-udp-streams-packets-positive Passed
Reads end.streams[0].udp.packets from the iperf3 UDP JSON summary so the cjson serializer must encode the per-stream UDP packet counter.
iperf3 JSON UDP target bitrate Original / cjson / usage-iperf3-json-udp-target-bitrate Passed
iperf3 JSON UDP test_start.bytes fixed Original / cjson / usage-iperf3-json-udp-test-start-bytes-fixed Passed
Runs a UDP iperf3 transfer with a fixed byte budget and verifies the JSON test_start.bytes echoes the requested value.
iperf3 JSON UDP .start.test_start.target_bitrate echoes 128K Original / cjson / usage-iperf3-json-udp-test-start-target-bitrate-128k Passed
Confirms iperf3 records the requested 128K UDP target bitrate (128000 bps; iperf3 treats K as decimal) in .start.test_start.target_bitrate.
iperf3 UDP JSON throughput Original / cjson / usage-iperf3-json-udp-throughput Passed
iperf3 JSON version field Original / cjson / usage-iperf3-json-version-field Passed
iperf3 JSON window 256K sock_bufsize Original / cjson / usage-iperf3-json-window-256k-sock-bufsize Passed
Runs iperf3 with --window 256K and asserts start.sock_bufsize equals 262144 so cjson must echo the requested TCP window size as the recorded socket buffer in the start header.
iperf3 JSON window sizing Original / cjson / usage-iperf3-json-window-size Passed
iperf3 zero-copy JSON transfer Original / cjson / usage-iperf3-json-zero-copy Passed
iperf3 JSON zero copy Original / cjson / usage-iperf3-json-zerocopy Passed
CVE-2023-26819 cjson regression Original / cjson / cve-2023-26819 Passed
Asserts that cJSON_Parse handles a crafted JSON document with a gigantic numeric literal in bounded time, as a regression check against the parse_number scratch-buffer DoS.
CVE-2025-57052 cjson regression Original / cjson / cve-2025-57052 Passed
Asserts that cJSONUtils JSON pointer rejects array-index tokens with non-digit suffixes after a leading digit, instead of accepting the malformed token and resolving to the wrong element.
Allocator hook edge behavior Port / cjson / allocator-hooks-edge Passed
Malformed number rejection Port / cjson / malformed-number-rejection Passed
Minify JSON whitespace behavior Port / cjson / minify-whitespace Passed
Parse and print JSON round trip Port / cjson / parse-print-roundtrip Passed
JSON pointer patch behavior Port / cjson / utils-patch-pointer Passed
iperf3 -J --bidir end.streams[*].receiver.bits_per_second nonneg Port / cjson / usage-iperf3-json-batch12-bidir-end-streams-receiver-bps Passed
Runs an iperf3 bidirectional loopback transfer and verifies all end.streams[*].receiver.bits_per_second values in JSON are nonnegative numbers.
iperf3 -J --bidir end.streams[*].sender.bits_per_second nonneg Port / cjson / usage-iperf3-json-batch12-bidir-end-streams-sender-bps Passed
Runs an iperf3 bidirectional transfer and verifies end.streams[*].sender.bits_per_second values are nonnegative numbers.
iperf3 -J end.cpu_utilization_percent has all four host/remote keys Port / cjson / usage-iperf3-json-batch12-end-cpu-utilization-percent-keys Passed
Runs an iperf3 transfer and verifies end.cpu_utilization_percent JSON object contains host_total, host_user, remote_total, remote_user.
iperf3 -J -P 2 end.streams length equals num_streams Port / cjson / usage-iperf3-json-batch12-end-streams-array-equals-num-streams Passed
Runs iperf3 with -P 2 and verifies end.streams JSON array length equals start.test_start.num_streams.
iperf3 -J -f g flag accepted and yields valid JSON Port / cjson / usage-iperf3-json-batch12-format-gigabits-flag Passed
Runs iperf3 with -f g to format throughput in gigabits and verifies the JSON parses and end.sum_sent.bits_per_second is a number.
iperf3 -J start.cookie is a non-empty string Port / cjson / usage-iperf3-json-batch12-start-cookie-string Passed
Runs an iperf3 transfer and verifies start.cookie in JSON is a non-empty string with a printable shape.
iperf3 -J start.test_start.tos defaults to zero Port / cjson / usage-iperf3-json-batch12-start-test-start-tos-zero-default Passed
Runs an iperf3 client without -S/--tos and verifies start.test_start.tos is reported as zero in the JSON.
iperf3 -J start.version begins with "iperf" Port / cjson / usage-iperf3-json-batch12-start-version-string-shape Passed
Runs an iperf3 transfer and verifies start.version JSON string starts with "iperf" and has length >= 6.
iperf3 -J intervals[].streams[].rcv_wnd positive Port / cjson / usage-iperf3-json-batch12-tcp-rcv-wnd-positive Passed
Runs a short iperf3 TCP loopback transfer and verifies intervals[].streams[].rcv_wnd values in JSON are all positive integers when present.
iperf3 -J -u -b 100K end.sum.bytes positive Port / cjson / usage-iperf3-json-batch12-udp-bitrate-100k-end-positive Passed
Runs a UDP iperf3 transfer at 100Kbps and verifies end.sum.bytes is greater than zero in JSON output.
iperf3 JSON bidir end streams mixed direction Port / cjson / usage-iperf3-json-bidir-end-streams-mixed-direction Passed
Runs iperf3 --bidir and verifies the cjson serializer emits two end.streams entries with one sender flag set true and the other false to reflect the bidirectional pair.
iperf3 JSON bidir reverse sum bytes Port / cjson / usage-iperf3-json-bidir-reverse-sum-bytes Passed
Runs --bidir and reads the reverse-direction sum bytes from the iperf3 JSON so the cjson serializer must emit the bidir reverse summary object.
iperf3 bidirectional JSON run Port / cjson / usage-iperf3-json-bidirectional Passed
iperf3 JSON bound client Port / cjson / usage-iperf3-json-bind-loopback Passed
iperf3 JSON block size field Port / cjson / usage-iperf3-json-blksize-field Passed
Sets a custom application block size in iperf3 and verifies the JSON metadata preserves that block size.
iperf3 JSON three block count Port / cjson / usage-iperf3-json-blockcount-three-blocks Passed
Runs an iperf3 transfer with -k 3 and verifies start.test_start.blockcount equals 3 so cjson serializes the requested block count.
iperf3 JSON block count Port / cjson / usage-iperf3-json-blockcount Passed
iperf3 JSON one megabyte fixed transfer Port / cjson / usage-iperf3-json-bytes-1m-fixed-field Passed
Runs a 1 MiB iperf3 transfer with -n 1M and verifies start.test_start.bytes equals 1048576 so cjson encodes the requested byte budget.
iperf3 JSON fixed 8K bytes Port / cjson / usage-iperf3-json-bytes-8k-fixed Passed
Runs a fixed-byte iperf3 test and verifies the requested byte count stored in the JSON metadata.
iperf3 JSON bytes field Port / cjson / usage-iperf3-json-bytes-field Passed
iperf3 JSON accepts -A client-side CPU affinity Port / cjson / usage-iperf3-json-client-affinity-flag Passed
Confirms iperf3 honours -A 0 (CPU affinity to CPU 0) and still produces a parseable JSON report with start metadata.
iperf3 JSON connected count Port / cjson / usage-iperf3-json-connected-count Passed
iperf3 JSON connecting_to host Port / cjson / usage-iperf3-json-connecting-to-host Passed
Verifies the cjson serializer encodes the connecting_to.host loopback target in the iperf3 JSON header.
iperf3 JSON connecting_to.port numeric Port / cjson / usage-iperf3-json-connecting-to-port-numeric Passed
Verifies iperf3 JSON start.connecting_to exposes a numeric port that matches the chosen server port.
iperf3 JSON cookie field Port / cjson / usage-iperf3-json-cookie-field Passed
iperf3 JSON cookie length Port / cjson / usage-iperf3-json-cookie-length-check Passed
iperf3 JSON cport local port Port / cjson / usage-iperf3-json-cport-local-port-25001 Passed
Runs iperf3 with an explicit client port and verifies the recorded local port in the JSON connection metadata.
iperf3 JSON paired ports range 32007 Port / cjson / usage-iperf3-json-cport-paired-range-32007 Passed
Runs iperf3 with a server port in the 32000-32099 range and a client port of 32007 so cjson must serialize both connected[0].remote_port and connected[0].local_port from a paired range distinct from any prior cport testcase.
iperf3 JSON paired ports range 33503 Port / cjson / usage-iperf3-json-cport-paired-range-33503 Passed
Runs iperf3 with a server port in the 33500-33599 range and a client port of 33503 so cjson must serialize both connected[0].remote_port and connected[0].local_port from a second paired range disjoint from earlier cport pairings.
iperf3 JSON duration field Port / cjson / usage-iperf3-json-duration-field Passed
iperf3 JSON duration two seconds Port / cjson / usage-iperf3-json-duration-two-seconds Passed
iperf3 JSON end host CPU system Port / cjson / usage-iperf3-json-end-cpu-host-system-nonnegative Passed
Reads end.cpu_utilization_percent.host_system from the iperf3 JSON summary so the cjson serializer must encode the host-side kernel CPU fraction distinct from the total.
iperf3 JSON end host CPU total Port / cjson / usage-iperf3-json-end-cpu-host-total-field Passed
Reads end.cpu_utilization_percent.host_total from the iperf3 JSON summary so the cjson serializer must encode the host CPU utilization metric.
iperf3 JSON end host_total percentage bounds Port / cjson / usage-iperf3-json-end-cpu-host-total-percentage-bounds Passed
Asserts end.cpu_utilization_percent.host_total falls within the inclusive 0..100 percentage range so cjson must serialize the host total CPU utilization as a real percentage rather than just a non-negative number.
iperf3 JSON end host CPU user Port / cjson / usage-iperf3-json-end-cpu-host-user-nonnegative Passed
Reads end.cpu_utilization_percent.host_user from the iperf3 JSON summary so the cjson serializer must encode the host-side user CPU fraction distinct from the total.
iperf3 JSON end cpu_utilization remote_system Port / cjson / usage-iperf3-json-end-cpu-remote-system-nonnegative Passed
Confirms iperf3 JSON end.cpu_utilization_percent.remote_system is a non-negative number on a loopback transfer.
iperf3 JSON end remote CPU total Port / cjson / usage-iperf3-json-end-cpu-remote-total-field Passed
Reads end.cpu_utilization_percent.remote_total from the iperf3 JSON summary so cjson must serialize the server-side CPU utilization metric.
iperf3 JSON end cpu_utilization remote_total bounds Port / cjson / usage-iperf3-json-end-cpu-remote-total-percentage-bounds Passed
Verifies iperf3 JSON end.cpu_utilization_percent.remote_total stays within a permissive [0, 400] bound on loopback.
iperf3 JSON end remote CPU user Port / cjson / usage-iperf3-json-end-cpu-remote-user-nonnegative Passed
Reads end.cpu_utilization_percent.remote_user from the iperf3 JSON summary so the cjson serializer must encode the server-side user CPU fraction distinct from the remote total.
iperf3 JSON end stream count Port / cjson / usage-iperf3-json-end-stream-count Passed
Runs a parallel iperf3 test and verifies the number of stream summaries in the JSON end section.
iperf3 JSON .end.streams[0].receiver.bits_per_second is a positive number Port / cjson / usage-iperf3-json-end-stream-receiver-bits-per-second-positive Passed
Confirms iperf3 reports a numeric, positive receiver throughput in .end.streams[0].receiver.bits_per_second after a short transfer.
iperf3 JSON end stream receiver end positive Port / cjson / usage-iperf3-json-end-stream-receiver-end-positive Passed
Confirms iperf3 reports a positive numeric end time on the receiver stream summary in JSON output.
iperf3 JSON end stream receiver start zero Port / cjson / usage-iperf3-json-end-stream-receiver-start-zero Passed
iperf3 JSON per-stream sender bits per second Port / cjson / usage-iperf3-json-end-stream-sender-bps-positive Passed
Reads end.streams[0].sender.bits_per_second from the iperf3 JSON summary so the cjson serializer must emit the per-stream sender throughput as a positive number.
iperf3 JSON sender end time Port / cjson / usage-iperf3-json-end-stream-sender-end-positive Passed
Reads end.streams[0].sender.end from the iperf3 JSON summary so the cjson serializer must emit the per-stream sender finish timestamp as a positive number.
iperf3 JSON end stream sender max_rtt Port / cjson / usage-iperf3-json-end-stream-sender-max-rtt-nonnegative Passed
Confirms iperf3 reports a non-negative numeric max_rtt for the sender stream summary in JSON output.
iperf3 JSON end stream sender max_snd_cwnd Port / cjson / usage-iperf3-json-end-stream-sender-max-snd-cwnd-positive Passed
iperf3 JSON end stream sender max_snd_wnd positive Port / cjson / usage-iperf3-json-end-stream-sender-max-snd-wnd-positive Passed
Verifies that end.streams[].sender.max_snd_wnd is a positive integer in the cjson-serialized summary of a TCP loopback transfer.
iperf3 JSON end stream sender mean_rtt Port / cjson / usage-iperf3-json-end-stream-sender-mean-rtt-nonnegative Passed
Confirms iperf3 reports a non-negative numeric mean_rtt for the sender stream summary in JSON output.
iperf3 JSON end stream sender min_rtt Port / cjson / usage-iperf3-json-end-stream-sender-min-rtt-nonnegative Passed
Confirms iperf3 reports a non-negative numeric min_rtt for the sender stream summary in JSON output.
iperf3 JSON sender start time Port / cjson / usage-iperf3-json-end-stream-sender-start-zero Passed
Reads end.streams[0].sender.start from the iperf3 JSON summary so the cjson serializer must emit the per-stream sender start offset as zero.
iperf3 JSON end streams receiver bytes Port / cjson / usage-iperf3-json-end-streams-receiver-bytes Passed
Reads end.streams[0].receiver.bytes from the iperf3 JSON summary so cjson must serialize the per-stream receiver byte counter.
iperf3 JSON per-stream receiver seconds Port / cjson / usage-iperf3-json-end-streams-receiver-seconds-positive Passed
Reads end.streams[0].receiver.seconds from the iperf3 JSON summary so the cjson serializer must encode the per-stream receiver duration.
iperf3 JSON end streams sender bytes Port / cjson / usage-iperf3-json-end-streams-sender-bytes Passed
Reads end.streams[0].sender.bytes from the iperf3 JSON summary so cjson must serialize the per-stream sender byte counter.
iperf3 JSON per-stream sender retransmits Port / cjson / usage-iperf3-json-end-streams-sender-retransmits Passed
Reads end.streams[0].sender.retransmits from the iperf3 JSON summary so the cjson serializer must encode the per-stream retransmit counter.
iperf3 JSON UDP loopback reports zero lost_packets Port / cjson / usage-iperf3-json-end-streams-udp-lost-packets-zero-default Passed
Confirms iperf3 over UDP loopback reports .end.streams[0].udp.lost_packets equal to zero for a low-rate transfer that should not drop packets.
iperf3 JSON end sum received throughput Port / cjson / usage-iperf3-json-end-sum-received-bps-positive Passed
Reads end.sum_received.bits_per_second from the iperf3 JSON summary so the cjson serializer must encode the aggregate receiver throughput as a positive number distinct from the sender throughput.
iperf3 JSON end sum received bytes Port / cjson / usage-iperf3-json-end-sum-received-bytes-positive Passed
Verifies end.sum_received.bytes in the iperf3 JSON summary is positive so cjson serializes the receiver-side byte accounting.
iperf3 JSON end sum sent throughput Port / cjson / usage-iperf3-json-end-sum-sent-bps-positive Passed
Reads end.sum_sent.bits_per_second from the iperf3 JSON summary so the cjson serializer must encode the aggregate sender throughput as a positive number distinct from per-stream values.
iperf3 JSON end sum sent bytes Port / cjson / usage-iperf3-json-end-sum-sent-bytes-positive Passed
Verifies end.sum_sent.bytes in the iperf3 JSON summary reports the requested 64K transfer so cjson serializes the sent byte total.
iperf3 JSON extra data field Port / cjson / usage-iperf3-json-extra-data-field Passed
iperf3 JSON fixed 48K bytes Port / cjson / usage-iperf3-json-fixed-48k-bytes Passed
Runs a fixed-byte iperf3 transfer and verifies the JSON test metadata stores the requested 48K byte count.
iperf3 JSON fixed bytes accounting Port / cjson / usage-iperf3-json-fixed-bytes-accounting Passed
Transfers a fixed byte count through iperf3 and verifies the JSON summary reports at least that many sent bytes.
iperf3 fixed-byte JSON run Port / cjson / usage-iperf3-json-fixed-bytes Passed
iperf3 JSON kbit format Port / cjson / usage-iperf3-json-format-kbits Passed
iperf3 JSON megabyte format flag Port / cjson / usage-iperf3-json-format-megabytes-flag Passed
Runs an iperf3 transfer with -f M and verifies the JSON summary still emits the TCP protocol field so cjson encodes the protocol under the alternate format.
iperf3 JSON half-second interval count Port / cjson / usage-iperf3-json-half-second-interval-count Passed
Runs iperf3 with -i 0.5 -t 2 and verifies that the cjson serializer emits at least four interval entries reflecting the sub-second reporting cadence.
iperf3 JSON half-second interval end monotonic Port / cjson / usage-iperf3-json-half-second-interval-end-monotonic Passed
Runs iperf3 with -i 0.5 -t 2 and verifies the cjson-serialized intervals[].sum.end timestamps are strictly increasing across the report cadence.
iperf3 interval JSON report Port / cjson / usage-iperf3-json-interval-report Passed
Runs an iperf3 loopback test with interval reporting and verifies interval objects in JSON output.
iperf3 JSON retransmits field Port / cjson / usage-iperf3-json-interval-retransmits-field Passed
iperf3 JSON interval stream pmtu positive Port / cjson / usage-iperf3-json-interval-stream-pmtu-positive Passed
Verifies that every intervals[].streams[].pmtu value emitted by the cjson serializer is positive for a TCP loopback transfer.
iperf3 JSON interval stream rttvar nonnegative Port / cjson / usage-iperf3-json-interval-stream-rttvar-nonnegative Passed
Verifies that every intervals[].streams[].rttvar value emitted by the cjson serializer is a nonnegative integer for a TCP loopback transfer.
iperf3 JSON interval stream snd_wnd positive Port / cjson / usage-iperf3-json-interval-stream-snd-wnd-positive Passed
Verifies that every intervals[].streams[].snd_wnd value emitted by the cjson serializer is positive for a TCP loopback transfer.
iperf3 JSON interval sum seconds Port / cjson / usage-iperf3-json-interval-sum-seconds Passed
Runs an interval-reporting iperf3 test and verifies the first interval sum records elapsed seconds.
iperf3 JSON intervals array Port / cjson / usage-iperf3-json-intervals-array Passed
Requests interval reporting from iperf3 and verifies the JSON output includes at least one interval record.
iperf3 JSON intervals stream bytes Port / cjson / usage-iperf3-json-intervals-stream-bytes-nonnegative Passed
Verifies the first interval per-stream entry exposes a non-negative numeric bytes counter in iperf3 JSON output.
iperf3 JSON intervals[0].streams[0].omitted false Port / cjson / usage-iperf3-json-intervals-stream-omitted-false-default Passed
Runs iperf3 without -O so the per-stream omitted flag inside intervals[0].streams[0] must serialize as false through cjson, confirming the per-stream omission marker (distinct from the sum-level marker).
iperf3 JSON intervals stream seconds positive Port / cjson / usage-iperf3-json-intervals-stream-seconds-positive Passed
Verifies the first interval per-stream entry exposes a positive numeric seconds value in iperf3 JSON output.
iperf3 JSON intervals streams rtt Port / cjson / usage-iperf3-json-intervals-streams-rtt-nonnegative Passed
Verifies the first interval's first stream record carries a non-negative numeric rtt in iperf3 JSON output.
iperf3 JSON .intervals[].sum.end is numeric and monotonic Port / cjson / usage-iperf3-json-intervals-sum-end-numeric Passed
Confirms every iperf3 interval entry exposes a numeric .sum.end greater than its .sum.start and that values are strictly positive.
iperf3 JSON intervals sum omitted false Port / cjson / usage-iperf3-json-intervals-sum-omitted-false-default Passed
Runs iperf3 without -O so every intervals[].sum.omitted boolean must serialize as false through cjson, demonstrating the default non-omitted interval marker.
iperf3 JSON intervals sum rtt Port / cjson / usage-iperf3-json-intervals-sum-rtt-nonnegative Passed
iperf3 JSON intervals sum snd_cwnd Port / cjson / usage-iperf3-json-intervals-sum-snd-cwnd-positive Passed
iperf3 JSON .intervals[].sum.start is numeric and ordered Port / cjson / usage-iperf3-json-intervals-sum-start-numeric Passed
Confirms every iperf3 interval entry exposes a numeric .sum.start that is non-negative and that the first interval starts at zero.
iperf3 JSON IPv4 client Port / cjson / usage-iperf3-json-ipv4-family Passed
iperf3 JSON two kilobyte blksize Port / cjson / usage-iperf3-json-length-2k-blksize Passed
Runs an iperf3 transfer with -l 2K and verifies start.test_start.blksize is 2048 so cjson serializes the user-specified block size.
iperf3 JSON buffer length Port / cjson / usage-iperf3-json-length-buffer Passed
iperf3 JSON local host loopback Port / cjson / usage-iperf3-json-local-host-loopback Passed
iperf3 JSON local port field Port / cjson / usage-iperf3-json-local-port-field Passed
iperf3 JSON logfile round-trip Port / cjson / usage-iperf3-json-logfile-roundtrip Passed
Runs iperf3 with --logfile so the cjson-serialized JSON report is written to disk, then parses the file with jq to confirm the round-trip is well formed.
iperf3 JSON MSS clamp Port / cjson / usage-iperf3-json-mss-clamp Passed
iperf3 JSON no-delay transfer Port / cjson / usage-iperf3-json-nodelay Passed
iperf3 JSON omit field Port / cjson / usage-iperf3-json-omit-field Passed
Uses iperf3 warmup omission and verifies the omit interval is recorded in the JSON test metadata.
iperf3 JSON omit one second Port / cjson / usage-iperf3-json-omit-one-second-flag Passed
Runs an iperf3 transfer with a one-second omitted warmup interval and verifies the JSON omit setting.
iperf3 JSON omitted warmup second Port / cjson / usage-iperf3-json-omit-second Passed
iperf3 omitted warmup JSON intervals Port / cjson / usage-iperf3-json-omit-warmup Passed
Runs an iperf3 loopback test with omitted warmup time and verifies JSON interval omission markers.
iperf3 JSON pacing-timer accepted Port / cjson / usage-iperf3-json-pacing-timer-microseconds Passed
Runs iperf3 with --pacing-timer 1000 (microseconds) so the cjson-using binary must accept the option and still emit a well-formed JSON document with positive sender bytes and a populated test_start record.
iperf3 JSON parallel stream count Port / cjson / usage-iperf3-json-parallel-stream-count Passed
Runs iperf3 with parallel client streams and verifies the JSON test metadata records the stream count.
iperf3 parallel JSON streams Port / cjson / usage-iperf3-json-parallel-streams Passed
iperf3 JSON parallel TCP Port / cjson / usage-iperf3-json-parallel-tcp Passed
iperf3 JSON parallel three streams Port / cjson / usage-iperf3-json-parallel-three-streams-count Passed
Runs a three-stream iperf3 transfer and verifies the JSON metadata records the requested stream count.
iperf3 JSON paired remote and local ports Port / cjson / usage-iperf3-json-port-cport-paired Passed
Runs iperf3 with explicit -p and --cport so the cjson serializer must echo both the remote server port and the local client port in start.connected[0].
iperf3 JSON connected port match Port / cjson / usage-iperf3-json-port-match Passed
Runs an iperf3 loopback test and verifies the connected remote port recorded in JSON matches the server port.
iperf3 -J end.streams[].receiver.bits_per_second per-stream positive Port / cjson / usage-iperf3-json-r10-end-streams-receiver-bps-each-positive Passed
Runs a short iperf3 -P 2 TCP loopback transfer and verifies every end.streams[].receiver.bits_per_second value in JSON is positive.
iperf3 -J end.streams[].sender RTT ordering min<=mean<=max Port / cjson / usage-iperf3-json-r10-end-streams-sender-rtt-ordering Passed
Runs a short iperf3 TCP loopback transfer and verifies end.streams[].sender RTT values in JSON satisfy min_rtt <= mean_rtt <= max_rtt for each stream.
iperf3 -J end.sum_received.bytes ~= end.sum_sent.bytes Port / cjson / usage-iperf3-json-r10-end-sum-recv-bytes-le-sent Passed
Runs a short iperf3 TCP loopback transfer and verifies end.sum_received.bytes and end.sum_sent.bytes are both serialized as positive numbers within a small relative tolerance — iperf3's end-of-test accounting captures a few in-flight bytes that can make recv slightly exceed sent, so the cjson serializer is checked via shape + magnitude rather than strict ordering.
iperf3 -J end.sum_sent.retransmits is non-negative Port / cjson / usage-iperf3-json-r10-end-sum-sent-retransmits-nonneg Passed
Runs a short iperf3 TCP loopback transfer and verifies end.sum_sent.retransmits in JSON is a non-negative integer.
iperf3 -J intervals[].streams[].bits_per_second positive Port / cjson / usage-iperf3-json-r10-intervals-streams-bps-positive Passed
Runs a short iperf3 TCP loopback transfer with -i 1 and verifies intervals[].streams[].bits_per_second values in JSON are all positive numbers.
iperf3 -J intervals[].sum.bits_per_second positive Port / cjson / usage-iperf3-json-r10-intervals-sum-bps-positive Passed
Runs a short iperf3 TCP loopback transfer with -i 1 and verifies intervals[].sum.bits_per_second values in JSON are all positive numbers.
iperf3 -J intervals[].sum.retransmits non-negative Port / cjson / usage-iperf3-json-r10-intervals-sum-retransmits-nonneg Passed
Runs a short iperf3 TCP loopback transfer with -i 1 and verifies intervals[].sum.retransmits values in JSON are all non-negative integers.
iperf3 -J --get-server-output server_output_text non-empty Port / cjson / usage-iperf3-json-r10-server-output-text-non-empty Passed
Runs iperf3 with --get-server-output and verifies the JSON server_output_text field is a non-empty string.
iperf3 -J start.connected length equals num_streams Port / cjson / usage-iperf3-json-r10-start-connected-length-eq-num-streams Passed
Runs iperf3 with -P 2 on TCP loopback and verifies the JSON start.connected array length equals start.test_start.num_streams.
iperf3 -J -u end.sum.lost_percent upper bound Port / cjson / usage-iperf3-json-r10-udp-end-sum-lost-percent-upper-bound Passed
Runs a short iperf3 UDP loopback transfer and verifies end.sum.lost_percent in JSON is at most 100.
iperf3 -J end.streams[0].sender.max_snd_cwnd is at least each interval snd_cwnd Port / cjson / usage-iperf3-json-r11-end-stream-sender-max-snd-cwnd-ge-snd-cwnd Passed
Runs a 2-second TCP loopback transfer and verifies end.streams[0].sender.max_snd_cwnd is greater than or equal to every per-interval streams[0].snd_cwnd value, exercising the running-maximum invariant the JSON summary maintains.
iperf3 -J end.sum_sent.bytes ~ end.sum_received.bytes on TCP loopback Port / cjson / usage-iperf3-json-r11-end-sum-sent-eq-sum-received-tcp-loopback Passed
Runs a fixed-byte TCP loopback transfer and verifies end.sum_sent.bytes and end.sum_received.bytes are both positive and within a small relative tolerance — iperf3's per-side accounting can differ by a few bytes still in-flight at end-of-test, so cjson serialization is validated via shape + closeness instead of strict equality.
iperf3 -J intervals[].streams[].pmtu is positive on every sample Port / cjson / usage-iperf3-json-r11-intervals-streams-pmtu-positive Passed
Runs a 2-second TCP loopback transfer and verifies every per-interval per-stream pmtu value in the JSON report is a positive integer (the loopback path MTU is reported on each interval).
iperf3 -J intervals[].streams[].sender is true on every sample by default Port / cjson / usage-iperf3-json-r11-intervals-streams-sender-true-default Passed
Runs a default forward-direction loopback transfer (no -R/--reverse) and verifies every per-interval per-stream sender boolean in JSON is true, since the client is the sending side.
iperf3 -J intervals[].streams[].snd_cwnd is positive on every sample Port / cjson / usage-iperf3-json-r11-intervals-streams-snd-cwnd-positive Passed
Runs a 2-second TCP loopback transfer and verifies every per-interval per-stream snd_cwnd value (the kernel TCP send congestion window) in JSON is positive.
iperf3 -J intervals[].sum.sender is true on every sample by default Port / cjson / usage-iperf3-json-r11-intervals-sum-sender-true-default Passed
Runs a default forward-direction loopback transfer (no -R) and verifies every intervals[].sum.sender flag in JSON is true, marking each sampled interval as the sender-side aggregate.
iperf3 -J start.fq_rate defaults to 0 (no fair-queue rate cap) Port / cjson / usage-iperf3-json-r11-start-fq-rate-zero-default Passed
Runs a default loopback transfer (no --fq-rate) and verifies start.fq_rate in JSON is the integer 0, indicating no kernel fair-queue pacing rate is configured.
iperf3 -J start.target_bitrate is 0 by default for TCP Port / cjson / usage-iperf3-json-r11-start-target-bitrate-zero-default Passed
Runs a default TCP loopback transfer (no -b/--bitrate) and verifies start.target_bitrate in JSON is the integer 0, indicating no rate cap is configured.
iperf3 -J start.test_start.blocks defaults to 0 when -k is not set Port / cjson / usage-iperf3-json-r11-test-start-blocks-zero-default Passed
Runs a default duration-based loopback transfer (no -k flag) and verifies start.test_start.blocks in the JSON report is the integer 0, indicating the test is bounded by time, not block count.
iperf3 -J start.test_start.protocol equals "TCP" by default Port / cjson / usage-iperf3-json-r11-test-start-protocol-tcp-default Passed
Runs a default loopback transfer (no -u) and verifies start.test_start.protocol in the JSON report is the literal string "TCP".
iperf3 -J end.streams[].sender.bytes is positive on every stream Port / cjson / usage-iperf3-json-r12-end-streams-sender-bytes-positive Passed
Runs a 1-second loopback TCP transfer with -P 2 and verifies the per-stream end.streams[].sender.bytes values in the JSON report are positive integers.
iperf3 -J end.streams[].sender.start equals 0 for every parallel stream Port / cjson / usage-iperf3-json-r12-end-streams-sender-start-zero-all Passed
Runs a -P 2 TCP loopback transfer and verifies every per-stream end.streams[].sender.start in the JSON report is exactly the number 0.
iperf3 -J end.sum_received.start is the literal number 0 Port / cjson / usage-iperf3-json-r12-end-sum-received-start-zero Passed
Runs a short TCP loopback transfer and verifies end.sum_received.start in the JSON report is exactly the number 0.
iperf3 -J end.sum_sent.start is the literal number 0 Port / cjson / usage-iperf3-json-r12-end-sum-sent-start-zero Passed
Runs a short TCP loopback transfer and verifies end.sum_sent.start in the JSON report is exactly the number 0 (the test always reports a window starting at zero seconds).
iperf3 -J intervals[].streams[].omitted is false by default Port / cjson / usage-iperf3-json-r12-intervals-streams-omitted-false-default Passed
Runs a 2-second TCP loopback transfer and verifies every per-interval per-stream omitted flag in the JSON report is the JSON false value when --omit is not used.
iperf3 -J intervals[].sum.bytes is positive on every sample Port / cjson / usage-iperf3-json-r12-intervals-sum-bytes-positive Passed
Runs a 2-second TCP loopback transfer and verifies every per-interval intervals[].sum.bytes value in the JSON report is a positive integer (each window must carry payload).
iperf3 -J intervals[].sum.seconds is positive on every sample Port / cjson / usage-iperf3-json-r12-intervals-sum-seconds-positive Passed
Runs a 2-second TCP loopback transfer and verifies every per-interval intervals[].sum.seconds value in the JSON report is a positive number (each window has a non-zero duration).
iperf3 -J start.tcp_mss_default is a positive integer on TCP loopback Port / cjson / usage-iperf3-json-r12-start-tcp-mss-default-positive Passed
Runs a default loopback TCP transfer and verifies start.tcp_mss_default in the JSON report is a positive integer reflecting the kernel default MSS.
iperf3 -J start.timestamp.time is a non-empty string alongside numeric timesecs Port / cjson / usage-iperf3-json-r12-start-timestamp-time-string-non-empty Passed
Runs a default loopback transfer and verifies start.timestamp.time in the JSON report is a non-empty string and start.timestamp.timesecs is a positive number, exercising both timestamp encodings.
iperf3 -J -u end.sum.bytes is a positive integer Port / cjson / usage-iperf3-json-r12-udp-end-sum-bytes-positive Passed
Runs a 1-second UDP loopback transfer with a small bitrate and verifies end.sum.bytes in the JSON report is a positive integer.
iperf3 -J end.cpu_utilization_percent.host_total is a non-negative number Port / cjson / usage-iperf3-json-r13-end-cpu-utilization-percent-host-total-bounded Passed
Runs a 1-second loopback TCP transfer and verifies the cjson-serialised end.cpu_utilization_percent.host_total field is a finite non-negative number. (iperf3 reports host_total as a sum across CPUs, so on multi-core runners the value can exceed 100; the documented invariant is non-negativity, not the [0,100] bound the original assertion assumed.)
iperf3 -J per-stream receiver.bytes is at most sender.bytes Port / cjson / usage-iperf3-json-r13-end-streams-receiver-bytes-le-sender-bytes Passed
Runs a fixed-byte loopback TCP transfer with -P 2 and verifies that for every stream the cjson-serialised end.streams[].receiver.bytes is positive and within a small relative tolerance of end.streams[].sender.bytes — the receiver tally can include a few in-flight bytes so cjson serialization is checked via shape + closeness instead of strict ordering.
iperf3 -J end.streams[].sender.bits_per_second is positive on every stream Port / cjson / usage-iperf3-json-r13-end-streams-sender-bps-positive-all Passed
Runs a 1-second loopback TCP transfer with -P 2 and verifies that the cjson-serialised end.streams[].sender.bits_per_second value is a positive number for every stream in the parallel set.
iperf3 -J end.streams sender.bytes sum equals end.sum_sent.bytes Port / cjson / usage-iperf3-json-r13-end-streams-sender-bytes-equals-sum-sent Passed
Runs a 1-second loopback TCP transfer with -P 2 and verifies the cjson-serialised per-stream end.streams[].sender.bytes values add up to exactly end.sum_sent.bytes, exercising the documented aggregation invariant.
iperf3 -J end.streams[].sender.end is positive on every parallel stream Port / cjson / usage-iperf3-json-r13-end-streams-sender-end-positive-all Passed
Runs a 1-second loopback TCP transfer with -P 2 and verifies that the cjson-serialised end.streams[].sender.end value is a positive number for every parallel stream, reflecting the test duration each stream completed.
iperf3 -J intervals[].sum.end values strictly increase across the run Port / cjson / usage-iperf3-json-r13-intervals-sum-end-monotonic-increasing Passed
Runs a 2-second loopback TCP transfer at the default 1-second cadence and verifies the cjson-serialised intervals[].sum.end timestamps form a strictly increasing sequence across the run.
iperf3 -J start.connecting_to.host equals 127.0.0.1 on loopback Port / cjson / usage-iperf3-json-r13-start-connecting-to-host-loopback Passed
Runs a default loopback transfer and verifies the cjson-serialised start.connecting_to.host field is the literal string "127.0.0.1", exposing the destination address recorded by the client.
iperf3 -J start.test_start.bytes defaults to zero with time-based -t Port / cjson / usage-iperf3-json-r13-start-test-start-bytes-zero-default Passed
Runs a 1-second loopback TCP transfer with no -n flag and verifies the cjson-serialised start.test_start.bytes field is the numeric zero, the documented default for time-based runs.
iperf3 -J start.test_start.tos defaults to zero without -S Port / cjson / usage-iperf3-json-r13-start-test-start-tos-zero-default Passed
Runs a default loopback transfer with no -S flag and verifies the cjson-serialised start.test_start.tos field is the numeric value zero, the documented default Type-of-Service.
iperf3 -J -u sets start.test_start.protocol to "UDP" Port / cjson / usage-iperf3-json-r13-udp-start-test-start-protocol-udp Passed
Runs a 1-second UDP loopback transfer with -u -b 200K and verifies the cjson-serialised start.test_start.protocol field is the literal string "UDP", confirming the protocol switch propagates into the JSON header.
iperf3 -J end.streams[].receiver.bits_per_second sum equals end.sum_received.bits_per_second Port / cjson / usage-iperf3-json-r14-end-streams-receiver-bps-equals-sum-received Passed
Runs a 1-second loopback TCP transfer with -P 2 and verifies the cjson-serialised per-stream end.streams[].receiver.bits_per_second values add up to exactly end.sum_received.bits_per_second, exercising the documented receiver aggregation invariant.
iperf3 -J end.streams[].receiver.end is positive and within duration tolerance Port / cjson / usage-iperf3-json-r14-end-streams-receiver-end-equals-duration Passed
Runs a 2-second loopback TCP transfer and verifies the cjson-serialised end.streams[0].receiver.end timestamp is a positive number within reasonable tolerance of the requested 2-second duration, confirming the documented receiver end timestamp emission.
iperf3 -J end.streams[].sender.socket is a positive integer for every stream Port / cjson / usage-iperf3-json-r14-end-streams-sender-socket-positive Passed
Runs a 1-second loopback TCP transfer with -P 2 and verifies the cjson-serialised end.streams[].sender.socket descriptor numbers are positive integers for every stream, exercising the per-stream socket identifier emission.
iperf3 -J end.sum_received.start equals zero on a default run Port / cjson / usage-iperf3-json-r14-end-sum-received-start-equals-zero Passed
Runs a 1-second loopback TCP transfer and verifies the cjson-serialised end.sum_received.start timestamp is the numeric zero, confirming the documented default starting point of the receiver aggregate window.
iperf3 -J end.sum_sent.end is a positive number for a time-based run Port / cjson / usage-iperf3-json-r14-end-sum-sent-end-positive Passed
Runs a 1-second loopback TCP transfer and verifies the cjson-serialised end.sum_sent.end timestamp is a positive number, exercising the documented aggregation timestamp on the sender summary record.
iperf3 -J intervals[].streams[0].bytes is positive in every interval of a 2-second run Port / cjson / usage-iperf3-json-r14-intervals-streams-bytes-positive-each Passed
Runs a 2-second loopback TCP transfer and verifies the cjson-serialised intervals[].streams[0].bytes value is positive in every interval, confirming each per-second sample carries non-empty payload accounting on a busy loopback.
iperf3 -J intervals[].streams[0].socket is identical across all intervals Port / cjson / usage-iperf3-json-r14-intervals-streams-socket-stable-across-intervals Passed
Runs a 2-second loopback TCP transfer with the default 1-second cadence and verifies the cjson-serialised intervals[].streams[0].socket value is the same positive integer in every interval, confirming the per-stream socket descriptor is stable for the lifetime of the test.
iperf3 -J start.connecting_to.port equals the -p argument Port / cjson / usage-iperf3-json-r14-start-connecting-to-port-matches-arg Passed
Runs a 1-second loopback TCP transfer and verifies the cjson-serialised start.connecting_to.port number equals the explicit -p argument passed to the client, confirming the requested port propagates into the JSON header.
iperf3 -J -P 3 start.test_start.num_streams equals 3 Port / cjson / usage-iperf3-json-r14-start-test-start-num-streams-matches-parallel Passed
Runs a 1-second loopback TCP transfer with -P 3 and verifies the cjson-serialised start.test_start.num_streams field equals exactly 3, confirming the parallel stream count propagates into the test_start record.
iperf3 -J start.version is a non-empty iperf-3.x string Port / cjson / usage-iperf3-json-r14-start-version-matches-cli-version Passed
Runs a 1-second loopback TCP transfer and verifies the cjson-serialised start.version field is a non-empty string beginning with the literal "iperf 3.", confirming the version banner is exposed through the JSON envelope.
iperf3 -J end.cpu_utilization_percent advertises both host_total and remote_total Port / cjson / usage-iperf3-json-r15-end-cpu-host-and-remote-total-distinct-keys Passed
Runs a 1-second loopback TCP transfer and verifies the cjson-serialised end.cpu_utilization_percent object has the keys host_total and remote_total, both numeric and within the documented [0, 100*N] CPU-percent envelope on a multicore host.
iperf3 -J end.streams[0] sender.bytes ~ receiver.bytes on lossless single-stream TCP Port / cjson / usage-iperf3-json-r15-end-streams-sender-bytes-equals-receiver-bytes-tcp Passed
Runs a fixed-byte single-stream loopback TCP transfer and verifies the cjson-serialised end.streams[0].sender.bytes and end.streams[0].receiver.bytes are both positive numbers within a small relative tolerance — iperf3's per-side accounting can differ by a few in-flight bytes at end-of-test, so cjson serialization is checked via shape + closeness rather than strict equality.
iperf3 -J end.streams[0].sender.seconds equals end.streams[0].sender.end Port / cjson / usage-iperf3-json-r15-end-streams-sender-seconds-equals-end Passed
Runs a 1-second single-stream loopback TCP transfer with sender.start at zero and verifies the cjson-serialised end.streams[0].sender.seconds equals end.streams[0].sender.end exactly, exercising the documented duration-equals-end invariant when start is zero.
iperf3 -J end.sum_sent.bytes ~ end.sum_received.bytes on a single-stream TCP loopback Port / cjson / usage-iperf3-json-r15-end-sum-sent-bytes-equals-sum-received-bytes-tcp Passed
Runs a fixed-byte single-stream loopback TCP transfer and verifies the cjson-serialised end.sum_sent.bytes and end.sum_received.bytes are both positive numbers within a small relative tolerance — iperf3's per-side accounting can differ by a few in-flight bytes at end-of-test, so cjson serialization is checked via shape + closeness rather than strict equality.
iperf3 -J intervals[].streams[].rttvar is non-negative for every interval Port / cjson / usage-iperf3-json-r15-intervals-streams-rttvar-nonneg-each Passed
Runs a 2-second single-stream loopback TCP transfer with a half-second interval and verifies every cjson-serialised intervals[].streams[].rttvar value is a non-negative number, exercising the documented per-interval RTT variance non-negativity invariant.
iperf3 -J intervals[0].sum.bytes equals the sum of intervals[0].streams[].bytes with -P 2 Port / cjson / usage-iperf3-json-r15-intervals-sum-bytes-equals-streams-sum Passed
Runs a 1-second loopback TCP transfer with -P 2 and verifies the cjson-serialised intervals[0].sum.bytes equals the addition of intervals[0].streams[].bytes across both streams, exercising the documented per-interval aggregation invariant.
iperf3 -J start.connected[0].remote_port equals the -p server port Port / cjson / usage-iperf3-json-r15-start-connected-remote-port-matches-server Passed
Runs a 1-second loopback TCP transfer with an explicit -p value and verifies the cjson-serialised start.connected[0].remote_port equals the numeric server port supplied on the command line, exercising the documented per-connection remote-port emission.
iperf3 -J start.connecting_to.port equals the -p server port Port / cjson / usage-iperf3-json-r15-start-connecting-to-port-equals-server-port Passed
Runs a 1-second loopback TCP transfer with an explicit -p value and verifies the cjson-serialised start.connecting_to.port field exactly matches the numeric server port supplied on the command line, exercising the documented destination-port emission.
iperf3 -J start.test_start.bidir defaults to zero without --bidir Port / cjson / usage-iperf3-json-r15-start-test-start-bidir-zero-default Passed
Runs a 1-second loopback TCP transfer without --bidir and verifies the cjson-serialised start.test_start.bidir field is the numeric zero, the documented default direction flag when bidirectional mode is not requested.
iperf3 -J start.test_start.omit defaults to zero with no -O flag Port / cjson / usage-iperf3-json-r15-start-test-start-omit-zero-default Passed
Runs a 1-second loopback TCP transfer with no -O flag and verifies the cjson-serialised start.test_start.omit field is the numeric zero, the documented default omit-seconds value when not requested.
iperf3 -J end.sender_tcp_congestion is a non-empty string Port / cjson / usage-iperf3-json-r16-end-sender-tcp-congestion-string Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised end.sender_tcp_congestion field exists, is of type string, and has length > 0 — exercising the per-end algorithm-name emission path.
iperf3 -J intervals[].streams[].omitted is a boolean across all rows Port / cjson / usage-iperf3-json-r16-intervals-streams-omitted-flag-boolean Passed
Runs a 2-second loopback TCP transfer and asserts every intervals[].streams[] entry exposes an "omitted" key of JSON-boolean type — exercising the cjson serialiser's boolean emission on the per-second interval stream rows.
iperf3 -J --logfile emits the same top-level JSON keys as stdout Port / cjson / usage-iperf3-json-r16-logfile-json-equals-stdout-shape Passed
Runs a 1-second loopback TCP transfer twice, once with -J writing to stdout and once with -J --logfile writing to a file, and asserts both JSON outputs share the same top-level cjson key set (start, intervals, end), confirming the logfile sink preserves the serialised top-level shape.
iperf3 -J start.system_info is a non-empty string containing "Linux" Port / cjson / usage-iperf3-json-r16-system-info-string-nonempty Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised start.system_info is a non-empty string and contains the substring "Linux", reflecting the uname banner shape on noble.
iperf3 -J start.timestamp exposes both time string and numeric timesecs Port / cjson / usage-iperf3-json-r16-timestamp-fields-shape Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised start.timestamp object has a string "time" field and a numeric "timesecs" field that is at least the Unix epoch base 1700000000 (mid-2023), confirming the dual time-representation present in the start banner.
iperf3 -J -Z (zerocopy) completes and emits a well-formed end.sum_sent object Port / cjson / usage-iperf3-json-r16-zerocopy-flag-passthrough Passed
Runs a 1-second loopback TCP transfer with -Z (zerocopy/sendfile send path) and asserts the cjson-serialised top-level JSON is well-formed and end.sum_sent has positive bytes and seconds, confirming the zerocopy flag does not perturb the JSON shape on noble.
iperf3 -J end.cpu_utilization_percent.host_total is numeric and non-negative Port / cjson / usage-iperf3-json-r17-end-cpu-host-total-type-number Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised end.cpu_utilization_percent.host_total field is of type number and not negative, without asserting any upper bound because multicore CI runners legitimately exceed 100.
iperf3 -J end.streams[].socket is a numeric file descriptor Port / cjson / usage-iperf3-json-r17-end-streams-socket-numeric Passed
Runs a 1-second loopback TCP transfer and asserts every entry in end.streams has either a top-level socket field of numeric type or a sender/receiver.socket of numeric type, exercising the file-descriptor emission per stream as serialised by cJSON without pinning the value.
iperf3 -J -i 0.5 -t 1.5 emits at least two interval entries Port / cjson / usage-iperf3-json-r17-interval-half-second-at-least-two-entries Passed
Runs a 1.5-second loopback TCP transfer with --interval 0.5 and asserts the cjson-serialised intervals array length is greater than or equal to 2, exercising sub-second interval reporting without pinning the exact count which can be jittery on CI.
iperf3 -J --omit 1 surfaces start.test_start.omit equal to 1 Port / cjson / usage-iperf3-json-r17-omit-one-start-test-start-omit-equals-one Passed
Runs a 2-second loopback TCP transfer with --omit 1 and asserts the cjson-serialised start.test_start.omit field is numeric and exactly equal to 1, distinguishing this case from the default-zero omit emission tests.
iperf3 -J -P 3 end.sum_received.bits_per_second is non-negative numeric Port / cjson / usage-iperf3-json-r17-parallel-three-end-sum-received-bps-nonneg Passed
Runs a 1-second loopback TCP transfer with -P 3 and asserts the cjson-serialised end.sum_received.bits_per_second field is of type number and not negative, exercising the aggregated receiver throughput emission under parallel-streams.
iperf3 -J -P 2 emits exactly two entries in end.streams Port / cjson / usage-iperf3-json-r17-parallel-two-end-streams-length-two Passed
Runs a 1-second loopback TCP transfer with -P 2 and asserts the cjson-serialised end.streams array has length exactly 2, exercising the per-stream report under parallel-streams configuration distinct from default and three-stream cases.
iperf3 -J --reverse end.streams[0].receiver.bytes is a positive number Port / cjson / usage-iperf3-json-r17-reverse-end-streams-receiver-bytes-positive Passed
Runs a 1-second loopback TCP --reverse transfer and asserts the cjson-serialised end.streams[0].receiver object exists with a numeric bytes field greater than zero, exercising the per-stream receiver report in the server-to-client direction.
iperf3 -J start.cookie is a string of length at least ten Port / cjson / usage-iperf3-json-r17-start-cookie-length-at-least-ten Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised start.cookie is of type string with at least 10 characters, exercising the per-test cookie identifier emission with a soft lower-bound rather than a strict fixed length.
iperf3 -J -u -b 1M end.sum.lost_packets is a non-negative number Port / cjson / usage-iperf3-json-r17-udp-1m-end-sum-lost-packets-numeric Passed
Runs a 1-second UDP loopback transfer at 1 Mbit/s and asserts the cjson-serialised end.sum.lost_packets field is present, of numeric type, and not negative, exercising the lost_packets emission on the UDP end-summary object.
iperf3 -J -u end.sum.jitter_ms is a non-negative numeric value Port / cjson / usage-iperf3-json-r17-udp-end-sum-jitter-ms-numeric Passed
Runs a 1-second UDP loopback transfer at 256 Kbit/s and asserts the cjson-serialised end.sum.jitter_ms key exists, is of type number, and is not negative, exercising the jitter_ms emission distinct from per-stream jitter fields.
iperf3 -J end.streams[0].receiver.end is a strictly positive number Port / cjson / usage-iperf3-json-r18-end-streams-receiver-end-positive Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised end.streams[0].receiver.end timestamp is of type number and strictly greater than zero, exercising the per-stream receiver end-time emission distinct from sender end-time tests.
iperf3 -J end.streams[0].sender.retransmits is a non-negative number Port / cjson / usage-iperf3-json-r18-end-streams-sender-retransmits-numeric Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised end.streams[0].sender.retransmits field is a numeric value greater than or equal to zero, exercising the per-stream retransmit counter without pinning an exact count which varies on loopback.
iperf3 -J end.sum_received.bytes is a positive number on a 1-second TCP transfer Port / cjson / usage-iperf3-json-r18-end-sum-received-bytes-positive Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised end.sum_received.bytes field is a number strictly greater than zero, exercising the aggregated receiver bytes summary distinct from sender-side counters.
iperf3 -J end.sum_sent.bytes is a positive number on a 1-second TCP transfer Port / cjson / usage-iperf3-json-r18-end-sum-sent-bytes-positive Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised end.sum_sent.bytes field is a number strictly greater than zero, exercising the aggregated sender bytes summary distinct from receiver-side or per-stream byte counters.
iperf3 -J intervals[0].streams length equals 1 for the default single-stream client Port / cjson / usage-iperf3-json-r18-intervals-first-streams-array-length-one Passed
Runs a 1-second single-stream loopback TCP transfer and asserts the cjson-serialised intervals[0].streams array has exactly one element, exercising the per-interval per-stream listing on the default-parallel path.
iperf3 -J start.connecting_to.port equals the server -p argument Port / cjson / usage-iperf3-json-r18-start-connecting-to-port-equals-server Passed
Spawns an iperf3 server on a chosen ephemeral port and runs the client with -p set to that same port, asserting the cjson-serialised start.connecting_to.port field is a number equal to the chosen port, exercising the connecting-to port reporting independent of host string.
iperf3 -J start.system_info is a non-empty string Port / cjson / usage-iperf3-json-r18-start-system-info-non-empty Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised start.system_info field is of type string with length greater than zero, exercising the system uname information emission which is filled from a uname call.
iperf3 -J start.test_start.protocol equals "TCP" for a TCP transfer Port / cjson / usage-iperf3-json-r18-start-test-start-protocol-tcp Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised start.test_start.protocol field is the string "TCP", exercising the protocol identifier emission distinct from UDP-protocol tests.
iperf3 -J start.timestamp.time is a non-empty string and timesecs is positive Port / cjson / usage-iperf3-json-r18-start-timestamp-time-non-empty Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised start.timestamp.time field is a non-empty string and start.timestamp.timesecs is a positive integer, exercising the run-start timestamp pair emission.
iperf3 -J -u start.test_start.protocol equals "UDP" for a UDP transfer Port / cjson / usage-iperf3-json-r18-udp-start-test-start-protocol-udp Passed
Runs a 1-second loopback UDP transfer at 128 Kbit/s and asserts the cjson-serialised start.test_start.protocol field is the string "UDP", exercising the protocol identifier emission on the UDP code path.
iperf3 -J end.cpu_utilization_percent host_total equals host_user plus host_system within tolerance Port / cjson / usage-iperf3-json-r19-end-cpu-host-total-equals-user-plus-system Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised end.cpu_utilization_percent.host_total is within 1e-6 of host_user + host_system, exercising the CPU utilization decomposition invariant emitted into the JSON tree.
iperf3 -J end.streams[0].receiver.bytes equals end.sum_received.bytes on single stream Port / cjson / usage-iperf3-json-r19-end-streams-receiver-bytes-equals-sum-received Passed
Runs a 1-second single-stream loopback TCP transfer and asserts the cjson-serialised end.streams[0].receiver.bytes equals end.sum_received.bytes since only one stream contributes to the receiver sum, exercising the per-stream receiver-bytes aggregation invariant.
iperf3 -J end.streams[0].sender.bits_per_second equals end.sum_sent.bits_per_second on single stream Port / cjson / usage-iperf3-json-r19-end-streams-sender-bps-equals-sum-sent Passed
Runs a 1-second single-stream loopback TCP transfer and asserts the cjson-serialised end.streams[0].sender.bits_per_second equals end.sum_sent.bits_per_second since only one stream contributes to the sum, exercising the per-stream-to-sum aggregation invariant.
iperf3 -J end.streams[0].sender.socket is a non-negative number Port / cjson / usage-iperf3-json-r19-end-streams-sender-socket-numeric Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised end.streams[0].sender.socket field is of type number and non-negative, exercising the per-stream socket descriptor emission inside the end summary distinct from the start.connected socket field.
iperf3 -J every intervals[*].streams[0].end is strictly greater than its start Port / cjson / usage-iperf3-json-r19-intervals-streams-end-greater-than-start Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised intervals array has every per-stream entry where streams[0].end is strictly greater than streams[0].start, exercising the per-interval per-stream time-window monotonicity invariant.
iperf3 -J start.connected[0].local_host equals 127.0.0.1 for a loopback transfer Port / cjson / usage-iperf3-json-r19-start-connected-local-host-loopback Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised start.connected[0].local_host string equals "127.0.0.1", exercising the per-connection local-host emission distinct from connecting_to.host tests.
iperf3 -J start.connected[0].remote_host equals 127.0.0.1 for a loopback transfer Port / cjson / usage-iperf3-json-r19-start-connected-remote-host-loopback Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised start.connected[0].remote_host string equals "127.0.0.1", exercising the per-connection remote-host emission as the counterpart of the local-host field.
iperf3 -J -t 2 start.test_start.duration equals the requested 2-second duration Port / cjson / usage-iperf3-json-r19-start-test-start-duration-matches-flag Passed
Runs a 2-second loopback TCP transfer using -t 2 and asserts the cjson-serialised start.test_start.duration integer equals 2, exercising the duration flag echo through the start section distinct from end-time tests.
iperf3 -J start.test_start.num_streams equals 1 for the default single-stream client Port / cjson / usage-iperf3-json-r19-start-test-start-num-streams-equals-one Passed
Runs a 1-second default-parallel loopback TCP transfer and asserts the cjson-serialised start.test_start.num_streams integer equals 1, exercising the per-test stream-count emission on the default-parallel code path.
iperf3 -J -u end.streams[0].udp.packets is a strictly positive number Port / cjson / usage-iperf3-json-r19-udp-end-streams-udp-packets-positive Passed
Runs a 1-second loopback UDP transfer at 128 Kbit/s and asserts the cjson-serialised end.streams[0].udp.packets integer is of type number and strictly greater than zero, exercising the per-stream UDP packet-count emission distinct from jitter and loss tests.
iperf3 -J end.cpu_utilization_percent.host_system is less than or equal to host_total Port / cjson / usage-iperf3-json-r20-end-cpu-host-system-le-host-total Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised end.cpu_utilization_percent.host_system value is less than or equal to host_total since user+system equals total, exercising the host CPU sub-field ordering invariant distinct from prior nonnegativity-only and bounds-only tests.
iperf3 -J -t 1 end.streams[0].receiver.seconds approximately equals the requested duration Port / cjson / usage-iperf3-json-r20-end-streams-receiver-seconds-equals-duration Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised end.streams[0].receiver.seconds value is a number close to the requested 1-second duration (within +/- 0.5s), exercising the per-stream receiver elapsed-time field distinct from prior bps and bytes assertions.
iperf3 -J end.streams[0].sender.mean_rtt is greater than or equal to min_rtt Port / cjson / usage-iperf3-json-r20-end-streams-sender-mean-rtt-ge-min-rtt Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised end.streams[0].sender.mean_rtt is at least end.streams[0].sender.min_rtt, exercising the per-stream RTT statistics ordering invariant distinct from prior min/mean/max-only nonnegativity tests.
iperf3 -J TCP end.sum_sent.bits_per_second matches 8 * bytes / seconds Port / cjson / usage-iperf3-json-r20-end-sum-sent-bytes-equals-sum-bytes-tcp Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised end.sum_sent.bits_per_second equals 8 * end.sum_sent.bytes / end.sum_sent.seconds within 0.1% relative tolerance, exercising the bytes-to-bps derivation invariant inside the sum_sent aggregate record.
iperf3 -J intervals[].streams[0].rtt is a positive number in every interval Port / cjson / usage-iperf3-json-r20-intervals-streams-rtt-positive-each Passed
Runs a 2-second loopback TCP transfer and asserts every cjson-serialised intervals[].streams[0].rtt is a positive number, exercising the per-interval per-stream RTT field for all intervals (not just the last) distinct from earlier non-negative-only or first-interval-only tests.
iperf3 -J start.cookie consists of printable ASCII characters only Port / cjson / usage-iperf3-json-r20-start-cookie-printable-ascii Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised start.cookie string matches the printable-ASCII pattern (no whitespace, no control characters, no extended bytes) with length at least 32, exercising the cookie character set distinct from prior length-only and shape-only tests.
iperf3 -J -l 4096 reports start.test_start.blksize equal to 4096 Port / cjson / usage-iperf3-json-r20-start-test-start-blksize-equals-flag Passed
Runs a 1-second loopback TCP transfer with -l 4096 and asserts the cjson-serialised start.test_start.blksize integer equals 4096, exercising propagation of the block-size flag into the start.test_start summary distinct from prior blksize tests that asserted only positivity or default values.
iperf3 -J without -O reports start.test_start.omit equal to integer 0 Port / cjson / usage-iperf3-json-r20-start-test-start-omit-equals-zero-default Passed
Runs a 1-second loopback TCP transfer without the -O flag and asserts the cjson-serialised start.test_start.omit field is exactly the integer 0, exercising the default-zero invariant of the omit field with strict equality distinct from prior default-zero tests that used >= 0.
iperf3 -J -b 500K reports start.test_start.target_bitrate equal to 500000 Port / cjson / usage-iperf3-json-r20-start-test-start-target-bitrate-equals-flag-tcp Passed
Runs a 1-second loopback TCP transfer at -b 500K and asserts the cjson-serialised start.test_start.target_bitrate integer equals 500000, exercising target_bitrate propagation from the -b flag distinct from prior tests which checked default-zero or UDP bitrate behavior.
iperf3 -J -u loopback end.sum.jitter_ms is bounded above by 100 ms Port / cjson / usage-iperf3-json-r20-udp-end-sum-jitter-ms-le-100 Passed
Runs a 1-second loopback UDP transfer at 128 Kbit/s and asserts the cjson-serialised end.sum.jitter_ms is a finite number less than or equal to 100 ms (a generous upper bound for loopback transport), exercising an upper-bound invariant on the UDP jitter aggregate distinct from prior nonnegativity-only tests.
iperf3 -J start.cookie differs between two consecutive loopback runs Port / cjson / usage-iperf3-json-r21-cookie-distinct-across-two-runs Passed
Runs two separate 1-second loopback TCP iperf3 tests back-to-back and asserts the cjson-serialised .start.cookie field is a non-empty string in each output and the two cookies are distinct (UUID/random per run), exercising the run-uniqueness property of the start.cookie field distinct from prior single-run shape/length tests.
iperf3 -J end.cpu_utilization_percent.remote_user is less than or equal to remote_total Port / cjson / usage-iperf3-json-r21-end-cpu-remote-user-le-remote-total Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised end.cpu_utilization_percent.remote_user is numeric and <= remote_total (since user+system equals total), exercising the remote-side CPU sub-field ordering invariant distinct from prior remote-user-nonnegative and remote-total-bounds tests.
iperf3 -J intervals[].streams[0].pmtu is identical across all intervals on loopback Port / cjson / usage-iperf3-json-r21-intervals-streams-pmtu-identical Passed
Runs a 2-second loopback TCP transfer with the default 1-second cadence and asserts every cjson-serialised intervals[].streams[0].pmtu value is identical (path MTU is stable on the lo interface for the lifetime of the test), distinct from prior per-interval pmtu positivity tests that did not check identity across intervals.
iperf3 -J sum of intervals[].sum.bytes is within 5% of end.sum_sent.bytes Port / cjson / usage-iperf3-json-r21-intervals-sum-bytes-close-to-end-sum-sent-bytes Passed
Runs a 2-second loopback TCP transfer and asserts the cjson-serialised sum of every intervals[].sum.bytes is positive and within 5% of the final end.sum_sent.bytes (the per-interval bytes partition the total sent bytes up to last-partial-interval rounding), exercising the additivity invariant between intervals and end summary distinct from prior intervals-vs-streams comparisons.
iperf3 -J start.connected[0].remote_port equals start.connecting_to.port Port / cjson / usage-iperf3-json-r21-start-connected-remote-port-equals-connecting-to-port Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised start.connected[0].remote_port equals start.connecting_to.port (the client-side socket remote port matches the dialed server port), exercising the connected-array remote_port consistency invariant distinct from prior remote_port-matches-server tests that only checked a fixed value.
iperf3 -J start.connected[0].socket equals end.streams[0].sender.socket Port / cjson / usage-iperf3-json-r21-start-connected-socket-equals-end-streams-socket Passed
Runs a 1-second loopback TCP transfer and asserts the cjson-serialised start.connected[0].socket equals end.streams[0].sender.socket (the file descriptor reported during connect is the same one reported in the per-stream sender end summary), exercising the cross-section socket-identity invariant distinct from prior socket-presence-only tests.
iperf3 -J start.rcvbuf_actual and start.sndbuf_actual are both positive and within an order of magnitude Port / cjson / usage-iperf3-json-r21-start-rcvbuf-actual-le-sndbuf-actual-times-four Passed
Runs a 1-second loopback TCP transfer with no -w override and asserts both cjson-serialised start.rcvbuf_actual and start.sndbuf_actual are positive numbers and that neither exceeds the other by more than a factor of eight (defaults are typically within 4x), exercising the joint emission of socket buffer fields distinct from prior individual positivity tests.
iperf3 -J start.sock_bufsize defaults to zero with no -w flag Port / cjson / usage-iperf3-json-r21-start-sock-bufsize-zero-default Passed
Runs a 1-second loopback TCP transfer with no -w/--window flag and asserts the cjson-serialised start.sock_bufsize is numeric and equals zero (no kernel-window override requested), distinct from the existing nonnegativity-only test and the 256K-window equality test.
iperf3 -J start.timestamp.timesecs is within 120 seconds of host wall-clock time Port / cjson / usage-iperf3-json-r21-start-timestamp-timesecs-near-current-time Passed
Captures the host wall-clock time before and after a 1-second loopback TCP run and asserts the cjson-serialised start.timestamp.timesecs lies in the inclusive window [before-1, after+1], exercising the timestamp emission against real clock distinct from prior positivity/shape tests that only checked the type or string presence.
iperf3 -J -l 1K sets start.test_start.blksize to exactly 1024 Port / cjson / usage-iperf3-json-r21-test-start-blksize-1024-with-l-flag Passed
Runs a loopback TCP transfer with -l 1K (one-kibibyte read/write block size) and asserts the cjson-serialised start.test_start.blksize equals 1024 exactly, exercising the SI-suffix block-size parsing through to the JSON tree distinct from default-blksize tests and the udp-length-1024 test that asserts length, not blksize.
iperf3 JSON receiver TCP congestion is string Port / cjson / usage-iperf3-json-receiver-tcp-congestion-string Passed
Validates that the cjson-emitted end.receiver_tcp_congestion is a non-empty string after a TCP loopback transfer.
iperf3 JSON remote host loopback Port / cjson / usage-iperf3-json-remote-host-loopback Passed
iperf3 JSON remote port field Port / cjson / usage-iperf3-json-remote-port-field Passed
iperf3 JSON repeating payload Port / cjson / usage-iperf3-json-repeating-payload Passed
Runs iperf3 with --repeating-payload so the cjson serializer must still emit a complete start/end JSON document with positive sent bytes.
iperf3 JSON reverse flag field Port / cjson / usage-iperf3-json-reverse-flag-field Passed
iperf3 JSON reverse received bytes Port / cjson / usage-iperf3-json-reverse-received-bytes Passed
Runs a reverse iperf3 test and verifies the received byte count reported in the JSON end section.
iperf3 JSON reverse sum_sent sender false Port / cjson / usage-iperf3-json-reverse-sum-sent-sender-false Passed
Runs an iperf3 reverse-mode (-R) transfer and verifies that end.sum_sent.sender is serialized as false because the local client is the receiver.
iperf3 JSON reverse TCP Port / cjson / usage-iperf3-json-reverse-tcp Passed
iperf3 reverse JSON throughput Port / cjson / usage-iperf3-json-reverse-throughput Passed
iperf3 JSON reverse two streams Port / cjson / usage-iperf3-json-reverse-two-streams-count Passed
Runs a reverse two-stream iperf3 transfer and verifies the reverse flag and stream count in the JSON metadata.
iperf3 JSON accepts -A client,server affinity pair Port / cjson / usage-iperf3-json-server-affinity-flag Passed
Confirms iperf3 client accepts -A n,m to pin both client and server affinities to CPU 0 and emits a parseable JSON report with a populated cookie.
iperf3 server JSON output Port / cjson / usage-iperf3-json-server-output Passed
Runs iperf3 with server-output capture and verifies the client JSON includes server-side results.
iperf3 JSON small fixed transfer Port / cjson / usage-iperf3-json-small-fixed Passed
iperf3 JSON accepts --snd-timeout Port / cjson / usage-iperf3-json-snd-timeout-flag Passed
Confirms iperf3 client accepts --snd-timeout 5000 and still emits well-formed JSON with the expected start block.
iperf3 JSON connected socket Port / cjson / usage-iperf3-json-start-connected-socket Passed
iperf3 JSON .start.cookie matches expected character shape Port / cjson / usage-iperf3-json-start-cookie-uuid-shape Passed
Validates the iperf3 cookie field contains only printable ASCII characters typical for the iperf3 cookie format and is at least 8 characters long.
iperf3 JSON start rcvbuf_actual Port / cjson / usage-iperf3-json-start-rcvbuf-actual-positive Passed
Reads start.rcvbuf_actual from the iperf3 JSON header so the cjson serializer must encode the kernel-reported receive buffer size.
iperf3 JSON start sndbuf_actual Port / cjson / usage-iperf3-json-start-sndbuf-actual-positive Passed
Reads start.sndbuf_actual from the iperf3 JSON header so the cjson serializer must encode the kernel-reported send buffer size.
iperf3 JSON start sock_bufsize Port / cjson / usage-iperf3-json-start-sock-bufsize-nonnegative Passed
Reads start.sock_bufsize from the iperf3 JSON header so the cjson serializer must encode the requested socket buffer size.
iperf3 JSON start timestamp time string Port / cjson / usage-iperf3-json-start-timestamp-time-string Passed
Reads start.timestamp.time as a populated human-readable string so the cjson serializer must encode the timestamp.time field alongside the numeric timesecs sibling.
iperf3 JSON received duration Port / cjson / usage-iperf3-json-sum-received-seconds-positive Passed
iperf3 JSON received sender flag Port / cjson / usage-iperf3-json-sum-received-sender-boolean Passed
iperf3 JSON sent duration Port / cjson / usage-iperf3-json-sum-sent-seconds-positive Passed
iperf3 JSON sent sender flag Port / cjson / usage-iperf3-json-sum-sent-sender-true Passed
iperf3 JSON system info field Port / cjson / usage-iperf3-json-system-info-field Passed
iperf3 JSON target bitrate 256K Port / cjson / usage-iperf3-json-target-bitrate-256k Passed
Runs a UDP iperf3 transfer with an explicit target bitrate and verifies the JSON metadata records a positive target bitrate.
iperf3 JSON sender TCP congestion cubic Port / cjson / usage-iperf3-json-tcp-congestion-cubic Passed
Selects the cubic congestion algorithm with -C and verifies the cjson serializer echoes "cubic" in end.sender_tcp_congestion.
iperf3 JSON tcp_mss_default Port / cjson / usage-iperf3-json-tcp-mss-default-positive Passed
Reads start.tcp_mss_default from the iperf3 JSON header so the cjson serializer must emit the kernel-reported default TCP MSS as a positive number.
iperf3 JSON TCP protocol field Port / cjson / usage-iperf3-json-tcp-protocol-field Passed
iperf3 TCP JSON throughput Port / cjson / usage-iperf3-json-tcp-throughput Passed
Runs an iperf3 loopback TCP test with JSON output and verifies throughput fields emitted by the client.
iperf3 JSON bidir flag echoed Port / cjson / usage-iperf3-json-test-start-bidir-flag-on Passed
Runs iperf3 with --bidir and verifies start.test_start.bidir is non-zero so the cjson serializer must echo the bidirectional mode flag.
iperf3 JSON test_start blksize 8K Port / cjson / usage-iperf3-json-test-start-blksize-8k Passed
Runs iperf3 with --length 8K and asserts start.test_start.blksize equals 8192 so cjson must echo the user-specified TCP block size in the test_start record.
iperf3 JSON test_start.duration reflects -t 3 Port / cjson / usage-iperf3-json-test-start-duration-three-seconds Passed
Confirms iperf3 records the requested three-second duration in .start.test_start.duration when invoked with -t 3.
iperf3 JSON test_start flowlabel field Port / cjson / usage-iperf3-json-test-start-flowlabel-field Passed
iperf3 JSON test_start fqrate 100K Port / cjson / usage-iperf3-json-test-start-fqrate-100k Passed
Runs iperf3 with --fq-rate 100K and asserts start.test_start.fqrate equals 100000 so the cjson serializer must echo the fair-queue pacing rate.
iperf3 JSON test_start IPv4 selection Port / cjson / usage-iperf3-json-test-start-ip-version-four Passed
iperf3 JSON default num_streams equals one Port / cjson / usage-iperf3-json-test-start-num-streams-default-one Passed
Runs a single-stream iperf3 transfer without -P and verifies start.test_start.num_streams equals 1 so the cjson serializer emits the default stream count.
iperf3 JSON test_start omit defaults to zero Port / cjson / usage-iperf3-json-test-start-omit-zero-default Passed
iperf3 JSON test_start parallel echoes two Port / cjson / usage-iperf3-json-test-start-parallel-two-echo Passed
iperf3 JSON default reverse zero Port / cjson / usage-iperf3-json-test-start-reverse-zero-default Passed
Runs a forward iperf3 transfer without -R and verifies start.test_start.reverse equals 0 so cjson encodes the default forward direction marker.
iperf3 JSON time based Port / cjson / usage-iperf3-json-time-based Passed
iperf3 JSON combined duration and omit Port / cjson / usage-iperf3-json-time-omit-combined Passed
Runs iperf3 with -t 1 and -O 1 together so the cjson serializer must emit both duration and omit values in start.test_start of the same JSON document.
iperf3 JSON timestamp field Port / cjson / usage-iperf3-json-timestamp-field Passed
iperf3 JSON timestamp seconds Port / cjson / usage-iperf3-json-timestamp-timesecs-positive Passed
iperf3 JSON title field Port / cjson / usage-iperf3-json-title-field Passed
Runs iperf3 JSON output with a test title and verifies the title field recorded in the JSON document.
iperf3 JSON TOS transfer Port / cjson / usage-iperf3-json-tos-field Passed
iperf3 JSON TOS flag field Port / cjson / usage-iperf3-json-tos-flag-field Passed
iperf3 JSON TOS 0x20 echo Port / cjson / usage-iperf3-json-tos-hex-32 Passed
Sets the IP TOS byte to 0x20 so the cjson serializer must echo the decimal value 32 in start.test_start.tos.
iperf3 JSON bound UDP client Port / cjson / usage-iperf3-json-udp-bind-loopback Passed
iperf3 JSON UDP blksize 1400 Port / cjson / usage-iperf3-json-udp-blksize-1400-field Passed
Runs a UDP iperf3 transfer with a 1400-byte block size and verifies the JSON test metadata records the block size.
iperf3 JSON UDP cport local port Port / cjson / usage-iperf3-json-udp-cport-local-port-25002 Passed
Runs a UDP iperf3 transfer with an explicit client port and verifies the JSON connection metadata records that local port.
iperf3 JSON UDP jitter Port / cjson / usage-iperf3-json-udp-end-jitter-nonnegative Passed
iperf3 JSON UDP end out_of_order zero Port / cjson / usage-iperf3-json-udp-end-out-of-order-zero Passed
Runs a short UDP loopback transfer and asserts end.streams[0].udp.out_of_order is zero so the cjson serializer must encode the per-stream out-of-order packet counter on a clean loopback path.
iperf3 JSON UDP packets Port / cjson / usage-iperf3-json-udp-end-packets-positive Passed
iperf3 JSON UDP end sum jitter_ms Port / cjson / usage-iperf3-json-udp-end-sum-jitter-ms-nonnegative Passed
Verifies a UDP iperf3 transfer reports a non-negative numeric jitter_ms on end.sum in JSON output.
iperf3 JSON UDP interval report Port / cjson / usage-iperf3-json-udp-interval-report Passed
Requests interval reporting during a short UDP iperf3 run and verifies the JSON output still contains summary data.
iperf3 JSON UDP jitter field Port / cjson / usage-iperf3-json-udp-jitter-field Passed
iperf3 JSON UDP datagram length 1024 Port / cjson / usage-iperf3-json-udp-length-1024 Passed
Runs UDP iperf3 with a 1024-byte datagram length so the cjson serializer must emit blksize 1024 alongside protocol UDP in start.test_start.
iperf3 JSON UDP packet length Port / cjson / usage-iperf3-json-udp-length Passed
iperf3 JSON UDP loss percent Port / cjson / usage-iperf3-json-udp-loss-percent Passed
Runs a short UDP iperf3 transfer and verifies the JSON summary exposes the packet loss percentage field.
iperf3 JSON UDP packet count consistency Port / cjson / usage-iperf3-json-udp-packet-count-consistency Passed
Runs a UDP iperf3 transfer and verifies end.sum.packets equals the sum of end.streams[].udp.packets so cjson encodes consistent aggregate and per-stream packet counters.
iperf3 JSON UDP parallel three streams Port / cjson / usage-iperf3-json-udp-parallel-three-count Passed
Runs a three-stream UDP iperf3 transfer and verifies the JSON metadata records both the UDP protocol and stream count.
iperf3 JSON parallel UDP Port / cjson / usage-iperf3-json-udp-parallel Passed
iperf3 JSON UDP protocol field Port / cjson / usage-iperf3-json-udp-protocol-field Passed
iperf3 JSON reverse UDP Port / cjson / usage-iperf3-json-udp-reverse Passed
iperf3 JSON per-stream UDP jitter Port / cjson / usage-iperf3-json-udp-streams-jitter-ms-nonnegative Passed
Reads end.streams[0].udp.jitter_ms from the iperf3 UDP JSON summary so the cjson serializer must encode the per-stream jitter measurement.
iperf3 JSON per-stream UDP lost packets Port / cjson / usage-iperf3-json-udp-streams-lost-nonnegative Passed
Reads end.streams[0].udp.lost_packets from the iperf3 UDP JSON summary so the cjson serializer must encode the per-stream lost-packet counter.
iperf3 JSON per-stream UDP packets Port / cjson / usage-iperf3-json-udp-streams-packets-positive Passed
Reads end.streams[0].udp.packets from the iperf3 UDP JSON summary so the cjson serializer must encode the per-stream UDP packet counter.
iperf3 JSON UDP target bitrate Port / cjson / usage-iperf3-json-udp-target-bitrate Passed
iperf3 JSON UDP test_start.bytes fixed Port / cjson / usage-iperf3-json-udp-test-start-bytes-fixed Passed
Runs a UDP iperf3 transfer with a fixed byte budget and verifies the JSON test_start.bytes echoes the requested value.
iperf3 JSON UDP .start.test_start.target_bitrate echoes 128K Port / cjson / usage-iperf3-json-udp-test-start-target-bitrate-128k Passed
Confirms iperf3 records the requested 128K UDP target bitrate (128000 bps; iperf3 treats K as decimal) in .start.test_start.target_bitrate.
iperf3 UDP JSON throughput Port / cjson / usage-iperf3-json-udp-throughput Passed
iperf3 JSON version field Port / cjson / usage-iperf3-json-version-field Passed
iperf3 JSON window 256K sock_bufsize Port / cjson / usage-iperf3-json-window-256k-sock-bufsize Passed
Runs iperf3 with --window 256K and asserts start.sock_bufsize equals 262144 so cjson must echo the requested TCP window size as the recorded socket buffer in the start header.
iperf3 JSON window sizing Port / cjson / usage-iperf3-json-window-size Passed
iperf3 zero-copy JSON transfer Port / cjson / usage-iperf3-json-zero-copy Passed
iperf3 JSON zero copy Port / cjson / usage-iperf3-json-zerocopy Passed
CVE-2023-26819 cjson regression Port / cjson / cve-2023-26819 Passed
Asserts that cJSON_Parse handles a crafted JSON document with a gigantic numeric literal in bounded time, as a regression check against the parse_number scratch-buffer DoS.
CVE-2025-57052 cjson regression Port / cjson / cve-2025-57052 Passed
Asserts that cJSONUtils JSON pointer rejects array-index tokens with non-digit suffixes after a leading digit, instead of accepting the malformed token and resolving to the wrong element.