Spdk/test/app/fuzz/iscsi_fuzz
Jim Harris d132ee3531 build: use DEPDIRS variables to build SPDK_LIB_LIST
All of our Makefiles duplicate huge lists of libraries
in SPDK_LIB_LIST.  We have a very precise and accurate
accounting of the library dependencies in
mk/spdk.lib_deps.mk which can be used to generate
the full list if the app specifies the modules and
subsystem libraries it wishes to link.

I did a first pass through all of the existing
Makefiles to take advantage of this new functionality.
There may be more optimizations we can make later but
don't want to hold up this patch for all of them.

Signed-off-by: Jim Harris <james.r.harris@intel.com>
Change-Id: Icdaf6f749a6908df2c2ce2db22631a4af4ff3a9e
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/5553
Community-CI: Broadcom CI
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
2020-12-18 09:40:01 +00:00
..
.gitignore test/iscsi: add application for target fuzz testing. 2020-03-13 08:53:46 +00:00
iscsi_fuzz.c lib/event: support ABI compatibility for spdk_app_opts. 2020-12-16 08:40:14 +00:00
Makefile build: use DEPDIRS variables to build SPDK_LIB_LIST 2020-12-18 09:40:01 +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.