From 1331656f8520bb5db5ad00209a78ed7b00fbae5f Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Fri, 26 Apr 2013 17:52:55 -0700 Subject: [PATCH] TESTS: ORWRITE is optional, lack os support should skip the test not fail it --- test-tool/iscsi-support.c | 30 ++++++++++++++++++++++++++++- test-tool/test_orwrite_0blocks.c | 5 +++-- test-tool/test_orwrite_beyond_eol.c | 5 +++-- test-tool/test_orwrite_simple.c | 10 +++++----- test-tool/test_orwrite_verify.c | 12 ++++++++---- test-tool/test_orwrite_wrprotect.c | 5 +++-- test-tool/test_readonly_sbc.c | 1 - 7 files changed, 51 insertions(+), 17 deletions(-) diff --git a/test-tool/iscsi-support.c b/test-tool/iscsi-support.c index f2658cb..331b6e4 100644 --- a/test-tool/iscsi-support.c +++ b/test-tool/iscsi-support.c @@ -213,6 +213,13 @@ orwrite(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] ORWRITE is not implemented."); + return -2; + } if (task->status != SCSI_STATUS_GOOD) { logging(LOG_NORMAL, "[FAILED] ORWRITE command: " "failed with sense. %s", iscsi_get_error(iscsi)); @@ -251,6 +258,13 @@ orwrite_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] ORWRITE is not implemented."); + return -2; + } if (task->status == SCSI_STATUS_GOOD) { logging(LOG_NORMAL, "[FAILED] ORWRITE successful but should " "have failed with ILLEGAL_REQUEST/INVALID_FIELD_IN_CDB"); @@ -299,6 +313,13 @@ orwrite_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] ORWRITE is not implemented."); + return -2; + } if (task->status == SCSI_STATUS_GOOD) { logging(LOG_NORMAL, "[FAILED] ORWRITE successful but should " "have failed with ILLEGAL_REQUEST/LBA_OUT_OF_RANGE"); @@ -346,6 +367,13 @@ orwrite_writeprotected(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] ORWRITE is not implemented."); + return -2; + } if (task->status == SCSI_STATUS_GOOD) { logging(LOG_NORMAL, "[FAILED] ORWRITE successful but should " "have failed with DATA_PROTECTION/WRITE_PROTECTED"); @@ -397,8 +425,8 @@ orwrite_nomedium(struct iscsi_context *iscsi, int lun, uint64_t lba, 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] ORWRITE is not implemented on target"); scsi_free_scsi_task(task); + logging(LOG_NORMAL, "[SKIPPED] ORWRITE is not implemented."); return -2; } if (task->status == SCSI_STATUS_GOOD) { diff --git a/test-tool/test_orwrite_0blocks.c b/test-tool/test_orwrite_0blocks.c index 9401093..5e4d118 100644 --- a/test-tool/test_orwrite_0blocks.c +++ b/test-tool/test_orwrite_0blocks.c @@ -37,9 +37,10 @@ test_orwrite_0blocks(void) 0, block_size, 0, 0, 0, 0, 0, NULL); if (ret == -2) { - CU_PASS("[SKIPPED] Target does not support ORWRITE. Skipping test"); + logging(LOG_NORMAL, "[SKIPPED] ORWRITE is not implemented."); + CU_PASS("ORWRITE is not implemented."); return; - } + } CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test ORWRITE 0-blocks one block past end-of-LUN"); diff --git a/test-tool/test_orwrite_beyond_eol.c b/test-tool/test_orwrite_beyond_eol.c index d6847f2..0d73bde 100644 --- a/test-tool/test_orwrite_beyond_eol.c +++ b/test-tool/test_orwrite_beyond_eol.c @@ -43,9 +43,10 @@ test_orwrite_beyond_eol(void) 0, 0, 0, 0, 0, buf); free(buf); if (ret == -2) { - CU_PASS("[SKIPPED] Target does not support ORWRITE. Skipping test"); + logging(LOG_NORMAL, "[SKIPPED] ORWRITE is not implemented."); + CU_PASS("ORWRITE is not implemented."); return; - } + } CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_orwrite_simple.c b/test-tool/test_orwrite_simple.c index 5139f59..7336de0 100644 --- a/test-tool/test_orwrite_simple.c +++ b/test-tool/test_orwrite_simple.c @@ -41,12 +41,12 @@ test_orwrite_simple(void) ret = orwrite(iscsic, tgt_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf); - if (ret == -2) { - CU_PASS("[SKIPPED] Target does not support ORWRITE. Skipping test"); - free(buf); - return; - } free(buf); + if (ret == -2) { + logging(LOG_NORMAL, "[SKIPPED] ORWRITE is not implemented."); + CU_PASS("ORWRITE is not implemented."); + return; + } CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_orwrite_verify.c b/test-tool/test_orwrite_verify.c index 8cca69d..ed7fd02 100644 --- a/test-tool/test_orwrite_verify.c +++ b/test-tool/test_orwrite_verify.c @@ -44,6 +44,11 @@ test_orwrite_verify(void) memset(buf, 0, block_size * i); ret = write16(iscsic, tgt_lun, 0, i * block_size, block_size, 0, 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); logging(LOG_VERBOSE, "OrWrite %d blocks with 0xa5", i); @@ -51,11 +56,10 @@ test_orwrite_verify(void) ret = orwrite(iscsic, tgt_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf); if (ret == -2) { - CU_PASS("[SKIPPED] Target does not support ORWRITE. Skipping test"); - free(buf); - free(readbuf); + logging(LOG_NORMAL, "[SKIPPED] ORWRITE is not implemented."); + CU_PASS("ORWRITE is not implemented."); return; - } + } CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Read %d blocks back", i); diff --git a/test-tool/test_orwrite_wrprotect.c b/test-tool/test_orwrite_wrprotect.c index fc47516..5354c1c 100644 --- a/test-tool/test_orwrite_wrprotect.c +++ b/test-tool/test_orwrite_wrprotect.c @@ -46,10 +46,11 @@ test_orwrite_wrprotect(void) block_size, block_size, i, 0, 0, 0, 0, buf); if (ret == -2) { - CU_PASS("[SKIPPED] Target does not support ORWRITE. Skipping test"); free(buf); + logging(LOG_NORMAL, "[SKIPPED] ORWRITE is not implemented."); + CU_PASS("ORWRITE is not implemented."); return; - } + } CU_ASSERT_EQUAL(ret, 0); } free(buf); diff --git a/test-tool/test_readonly_sbc.c b/test-tool/test_readonly_sbc.c index 2bbc088..7de9320 100644 --- a/test-tool/test_readonly_sbc.c +++ b/test-tool/test_readonly_sbc.c @@ -63,7 +63,6 @@ test_readonly_sbc(void) } CU_ASSERT_NOT_EQUAL(ret, -1); - logging(LOG_VERBOSE, "Test WRITE_SAME16 fails with WRITE_PROTECTED"); ret = writesame16_writeprotected(iscsic, tgt_lun, 0, block_size, 1, 0, 0, 0, 0, buf);