From ee666ae4513b020cb855ca80ac6dfccb1e91d61c Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Tue, 23 Apr 2013 21:15:28 -0700 Subject: [PATCH] TESTS: WRITE16 is optional so update the tests to allow WRITE16 to be missing and just make the test be [SKIPPED] --- test-tool/iscsi-support.c | 35 +++++++++++++++++++++++++++++ test-tool/test_write16_0blocks.c | 5 +++++ test-tool/test_write16_beyond_eol.c | 5 +++++ test-tool/test_write16_flags.c | 5 +++++ test-tool/test_write16_residuals.c | 7 ++++++ test-tool/test_write16_simple.c | 5 +++++ test-tool/test_write16_wrprotect.c | 5 +++++ 7 files changed, 67 insertions(+) diff --git a/test-tool/iscsi-support.c b/test-tool/iscsi-support.c index ccc6ac8..7689b24 100644 --- a/test-tool/iscsi-support.c +++ b/test-tool/iscsi-support.c @@ -3854,6 +3854,13 @@ write16(struct iscsi_context *iscsi, int lun, uint64_t lba, iscsi_get_error(iscsi)); return -1; } + if (task->status == SCSI_STATUS_CHECK_CONDITION + && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST + && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + scsi_free_scsi_task(task); + logging(LOG_NORMAL, "[SKIPPED] WRITE16 is not implemented."); + return -2; + } if (task->status != SCSI_STATUS_GOOD) { logging(LOG_NORMAL, "[FAILED] WRITE16 command: " "failed with sense. %s", iscsi_get_error(iscsi)); @@ -3892,6 +3899,13 @@ write16_invalidfieldincdb(struct iscsi_context *iscsi, int lun, uint64_t lba, iscsi_get_error(iscsi)); return -1; } + if (task->status == SCSI_STATUS_CHECK_CONDITION + && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST + && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + scsi_free_scsi_task(task); + logging(LOG_NORMAL, "[SKIPPED] WRITE16 is not implemented."); + return -2; + } if (task->status == SCSI_STATUS_GOOD) { logging(LOG_NORMAL, "[FAILED] WRITE16 successful but should " "have failed with ILLEGAL_REQUEST/INVALID_FIELD_IN_CDB"); @@ -3940,6 +3954,13 @@ write16_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint64_t lba, iscsi_get_error(iscsi)); return -1; } + if (task->status == SCSI_STATUS_CHECK_CONDITION + && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST + && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + scsi_free_scsi_task(task); + logging(LOG_NORMAL, "[SKIPPED] WRITE16 is not implemented."); + return -2; + } if (task->status == SCSI_STATUS_GOOD) { logging(LOG_NORMAL, "[FAILED] WRITE16 successful but should " "have failed with ILLEGAL_REQUEST/LBA_OUT_OF_RANGE"); @@ -3993,6 +4014,13 @@ write16_writeprotected(struct iscsi_context *iscsi, int lun, uint64_t lba, scsi_free_scsi_task(task); return -1; } + if (task->status == SCSI_STATUS_CHECK_CONDITION + && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST + && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + scsi_free_scsi_task(task); + logging(LOG_NORMAL, "[SKIPPED] WRITE16 is not implemented."); + return -2; + } if (task->status != SCSI_STATUS_CHECK_CONDITION || task->sense.key != SCSI_SENSE_DATA_PROTECTION || task->sense.ascq != SCSI_SENSE_ASCQ_WRITE_PROTECTED) { @@ -4041,6 +4069,13 @@ write16_nomedium(struct iscsi_context *iscsi, int lun, uint64_t lba, scsi_free_scsi_task(task); return -1; } + if (task->status == SCSI_STATUS_CHECK_CONDITION + && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST + && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + scsi_free_scsi_task(task); + logging(LOG_NORMAL, "[SKIPPED] WRITE16 is not implemented."); + return -2; + } if (task->status != SCSI_STATUS_CHECK_CONDITION || task->sense.key != SCSI_SENSE_NOT_READY || (task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT diff --git a/test-tool/test_write16_0blocks.c b/test-tool/test_write16_0blocks.c index 6b182d1..4a07cc0 100644 --- a/test-tool/test_write16_0blocks.c +++ b/test-tool/test_write16_0blocks.c @@ -35,6 +35,11 @@ test_write16_0blocks(void) logging(LOG_VERBOSE, "Test WRITE16 0-blocks at LBA==0"); ret = write16(iscsic, tgt_lun, 0, 0, block_size, 0, 0, 0, 0, 0, NULL); + if (ret == -2) { + logging(LOG_NORMAL, "[SKIPPED] WRITE16 is not implemented."); + CU_PASS("WRITE16 is not implemented."); + return; + } CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE16 0-blocks one block past end-of-LUN"); diff --git a/test-tool/test_write16_beyond_eol.c b/test-tool/test_write16_beyond_eol.c index b075de0..210963a 100644 --- a/test-tool/test_write16_beyond_eol.c +++ b/test-tool/test_write16_beyond_eol.c @@ -41,6 +41,11 @@ test_write16_beyond_eol(void) i * block_size, block_size, 0, 0, 0, 0, 0, buf); free(buf); + if (ret == -2) { + logging(LOG_NORMAL, "[SKIPPED] WRITE16 is not implemented."); + CU_PASS("WRITE16 is not implemented."); + return; + } CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_write16_flags.c b/test-tool/test_write16_flags.c index 121c6fe..69bfec4 100644 --- a/test-tool/test_write16_flags.c +++ b/test-tool/test_write16_flags.c @@ -42,6 +42,11 @@ test_write16_flags(void) ret = write16(iscsic, tgt_lun, 0, block_size, block_size, 0, 1, 0, 0, 0, buf); + if (ret == -2) { + logging(LOG_NORMAL, "[SKIPPED] WRITE16 is not implemented."); + CU_PASS("WRITE16 is not implemented."); + return; + } CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_write16_residuals.c b/test-tool/test_write16_residuals.c index 33033a3..3a81c58 100644 --- a/test-tool/test_write16_residuals.c +++ b/test-tool/test_write16_residuals.c @@ -66,6 +66,13 @@ test_write16_residuals(void) CU_ASSERT_PTR_NOT_NULL(task_ret); CU_ASSERT_NOT_EQUAL(task->status, SCSI_STATUS_CANCELLED); /* XXX redundant? */ + if (task->status == SCSI_STATUS_CHECK_CONDITION + && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST + && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + logging(LOG_NORMAL, "[SKIPPED] WRITE16 is not implemented."); + CU_PASS("WRITE16 is not implemented."); + return; + } logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", diff --git a/test-tool/test_write16_simple.c b/test-tool/test_write16_simple.c index 2cacf35..42c9a39 100644 --- a/test-tool/test_write16_simple.c +++ b/test-tool/test_write16_simple.c @@ -42,6 +42,11 @@ test_write16_simple(void) ret = write16(iscsic, tgt_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf); free(buf); + if (ret == -2) { + logging(LOG_NORMAL, "[SKIPPED] WRITE16 is not implemented."); + CU_PASS("WRITE16 is not implemented."); + return; + } CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_write16_wrprotect.c b/test-tool/test_write16_wrprotect.c index 09f07e0..c839bfa 100644 --- a/test-tool/test_write16_wrprotect.c +++ b/test-tool/test_write16_wrprotect.c @@ -45,6 +45,11 @@ test_write16_wrprotect(void) ret = write16_invalidfieldincdb(iscsic, tgt_lun, 0, block_size, block_size, i, 0, 0, 0, 0, buf); + if (ret == -2) { + logging(LOG_NORMAL, "[SKIPPED] WRITE16 is not implemented."); + CU_PASS("WRITE16 is not implemented."); + return; + } CU_ASSERT_EQUAL(ret, 0); } free(buf);