Spdk/test/app/fuzz/iscsi_fuzz
Nick Connolly 5c5a44f008 test: Use PRId64 for portability
POSIX defines PRId64/PRIu64/PRIx64 for printing 64-bit values in a
portable way. Replace a few references to %ld to remove the assumption
about the size of a long. Similarly, use %z with size_t arguments.

Where the value being printed is an unsigned 64-bit value, use PRIu64
instead of %ld.

Add a cast when comparing an enum to an integer value.

Add an explicit uint64_t cast to the definition of BLOCK_CNT to prevent
value truncation.

Signed-off-by: Nick Connolly <nick.connolly@mayadata.io>
Change-Id: I093cffe7e79bc04eba012f4ffaf33062a642d062
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/5137
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
2020-11-19 09:53:05 +00:00
..
.gitignore test/iscsi: add application for target fuzz testing. 2020-03-13 08:53:46 +00:00
iscsi_fuzz.c test: Use PRId64 for portability 2020-11-19 09:53:05 +00:00
Makefile test/iscsi: add application for target fuzz testing. 2020-03-13 08:53:46 +00:00
README.md test/iscsi: add README.md for iscsi fuzz testing 2020-04-06 07:56:07 +00:00

Overview

This application is intended to fuzz test the iSCSI target by submitting randomized PDU commands through a simulated iSCSI initiator.

Input

  1. iSCSI initiator send a login request PDU to iSCSI Target. Once a session is connected,
  2. iSCSI initiator send huge amount and random PDUs continuously to iSCSI Target.
  3. iSCSI initiator send a logout request PDU to iSCSI Target in the end. Especially, iSCSI initiator need to build different bhs according to different bhs opcode. Then iSCSI initiator will receive all kinds of responsed opcodes from iSCSI Target. The application will terminate when run time expires (see the -t flag).

Output

By default, the fuzzer will print commands that:

  1. Complete successfully back from the target, or
  2. Are outstanding at the time of a connection error occurs. Commands are dumped as named objects in json format which can then be supplied back to the script for targeted debugging on a subsequent run.

At the end of each test run, a summary is printed in the following format:

device 0x11c3b90 stats: Sent 1543 valid opcode PDUs, 16215 invalid opcode PDUs.