Files
Gleb Chesnokov e69138598e tests: Verify local and iSCSI I/O with fio
Run one fio profile with concurrent 4K, 64K and 128K jobs in disjoint
regions. Cover buffered fileio with 512-byte sectors and direct blockio
with 4K sectors. Verify CRC32C data and completed byte counts, and follow
buffered I/O with direct verification to bypass the initiator page cache.

Reuse the SCSI fixtures and exported-device checks for both transports.
Require an explicit target block device and check its use and signatures
before exporting it. Configure the per-job region size and I/O timeout,
and retain rendered job files, JSON reports and stderr.

Cover job rendering and report validation with framework tests. Document
fio prerequisites, destructive scope and label selection through the
common Make targets.
2026-10-13 12:42:36 +03:00

1.9 KiB

SCST Component Tests

Use README.md for setup, configuration, commands and recovery. suite/ owns local tests, iscsi/ owns target/SSH-initiator tests, and internal/ owns shared configuration, execution, fixtures and data checks.

Interfaces and lifecycle

  • Management operations and assertions use scstadmin, never direct sysfs or Perl-library calls. A rejection covers the whole management chain, not necessarily a kernel check. Check operation errors even with exit status 0.
  • Initiator management uses iscsiadm over SSH; sg3_utils and fio use only fixture-owned exports. Preserve device identity and geometry checks before writes, explicit block-backend selection and disjoint fio regions.
  • Use shared command runners with contexts, timeouts, logs and failure handling. Execution failures must not satisfy assertions for expected rejections; SCSI rejection tests must check status and sense.
  • Keep ownership and cleanup explicit for configuration, backing files, sessions, node/iface records, the daemon and modules. Restore changed global settings; never use global initiator logout, deletion or service restarts as cleanup. Global SCST clearing belongs only to explicit clear-config tests.
  • Failed cleanup or uncertain command completion must stop subsequent specs. Uncertain initiator state must prevent target teardown. Preserve artifacts and residual resources for inspection instead of forcing cleanup.
  • Prepare only selected transport groups; complete local teardown before iSCSI setup. Module loading and unloading belong to the suite lifecycle.

Validation

make ginkgo-check checks the framework; ginkgo-list and ginkgo-config check selection and configuration without SCST or remote-host access. Live targets load or replace modules and mutate storage on selected hosts; the root authorization rules apply. Dry runs do not validate SCST behavior. Keep generated results/ and local profiles out of commits.