From 4df15254151122215e19fa1bcac2437835f08f03 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Fri, 31 Aug 2012 11:42:44 -0700 Subject: [PATCH] TESTS: Additional checks for missing opcodes and skipping tests --- test-tool/0131_verify10_mismatch.c | 2 +- test-tool/0132_verify10_mismatch_no_cmp.c | 2 +- test-tool/0133_verify10_beyondeol.c | 2 +- test-tool/0180_writesame10_unmap.c | 8 ++++++++ test-tool/0181_writesame10_unmap_unaligned.c | 12 +++++++++++- test-tool/0182_writesame10_beyondeol.c | 8 ++++++++ test-tool/0183_writesame10_wrprotect.c | 8 ++++++++ test-tool/0184_writesame10_0blocks.c | 8 ++++++++ test-tool/0190_writesame16_unmap.c | 8 ++++++++ test-tool/0191_writesame16_unmap_unaligned.c | 8 ++++++++ test-tool/0192_writesame16_beyondeol.c | 8 ++++++++ test-tool/0193_writesame16_wrprotect.c | 8 ++++++++ test-tool/0194_writesame16_0blocks.c | 8 ++++++++ 13 files changed, 86 insertions(+), 4 deletions(-) diff --git a/test-tool/0131_verify10_mismatch.c b/test-tool/0131_verify10_mismatch.c index fdd1105..cd3b325 100644 --- a/test-tool/0131_verify10_mismatch.c +++ b/test-tool/0131_verify10_mismatch.c @@ -131,7 +131,7 @@ int T0131_verify10_mismatch(const char *initiator, const char *url, int data_los if (vtask->sense.key != SCSI_SENSE_MISCOMPARE) { printf("[FAILED]\n"); - printf("Verify10 command returned wrong sense key. MISCOMPARE 0x%x expected but got key 0x%x\n", SCSI_SENSE_MISCOMPARE, vtask->sense.key); + printf("Verify10 command returned wrong sense key. MISCOMPARE 0x%x expected but got key 0x%x. Sense:%s\n", SCSI_SENSE_MISCOMPARE, vtask->sense.key, iscsi_get_error(iscsi)); ret = -1; scsi_free_scsi_task(task); scsi_free_scsi_task(vtask); diff --git a/test-tool/0132_verify10_mismatch_no_cmp.c b/test-tool/0132_verify10_mismatch_no_cmp.c index 2f272a1..78873f0 100644 --- a/test-tool/0132_verify10_mismatch_no_cmp.c +++ b/test-tool/0132_verify10_mismatch_no_cmp.c @@ -125,7 +125,7 @@ int T0132_verify10_mismatch_no_cmp(const char *initiator, const char *url, int d } if (vtask->status != SCSI_STATUS_GOOD) { printf("[FAILED]\n"); - printf("Verify10 returned sense but BYTCHK==1 means it should not check/compare the data.\n"); + printf("Verify10 returned sense but BYTCHK==1 means it should not check/compare the data. Sense:%s\n", iscsi_get_error(iscsi)); ret = -1; scsi_free_scsi_task(task); scsi_free_scsi_task(vtask); diff --git a/test-tool/0133_verify10_beyondeol.c b/test-tool/0133_verify10_beyondeol.c index d4a3218..f47295e 100644 --- a/test-tool/0133_verify10_beyondeol.c +++ b/test-tool/0133_verify10_beyondeol.c @@ -102,7 +102,7 @@ int T0133_verify10_beyondeol(const char *initiator, const char *url, int data_lo || task->sense.key != SCSI_SENSE_ILLEGAL_REQUEST || task->sense.ascq != SCSI_SENSE_ASCQ_LBA_OUT_OF_RANGE) { printf("[FAILED]\n"); - printf("VERIFY10 failed but with the wrong sense code. It should have failed with ILLEGAL_REQUEST/LBA_OUT_OF_RANGE.\n"); + printf("VERIFY10 failed but with the wrong sense code. It should have failed with ILLEGAL_REQUEST/LBA_OUT_OF_RANGE. Sense:%s\n", iscsi_get_error(iscsi)); ret = -1; scsi_free_scsi_task(task); goto test2; diff --git a/test-tool/0180_writesame10_unmap.c b/test-tool/0180_writesame10_unmap.c index fdf9ce3..08af9e9 100644 --- a/test-tool/0180_writesame10_unmap.c +++ b/test-tool/0180_writesame10_unmap.c @@ -166,6 +166,14 @@ test2: ret = -1; goto test3; } + if (task->status == SCSI_STATUS_CHECK_CONDITION + && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST + && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + printf("[SKIPPED]\n"); + printf("Opcode is not implemented on target\n"); + scsi_free_scsi_task(task); + goto finished; + } if (lbpws10) { if (task->status != SCSI_STATUS_GOOD) { printf("[FAILED]\n"); diff --git a/test-tool/0181_writesame10_unmap_unaligned.c b/test-tool/0181_writesame10_unmap_unaligned.c index 60c1404..e9385c5 100644 --- a/test-tool/0181_writesame10_unmap_unaligned.c +++ b/test-tool/0181_writesame10_unmap_unaligned.c @@ -102,6 +102,14 @@ int T0181_writesame10_unmap_unaligned(const char *initiator, const char *url, in printf("[FAILED]\n"); printf("Failed to send WRITESAME10 command: %s\n", iscsi_get_error(iscsi)); ret = -1; + goto test2; + } + if (task->status == SCSI_STATUS_CHECK_CONDITION + && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST + && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + printf("[SKIPPED]\n"); + printf("Opcode is not implemented on target\n"); + scsi_free_scsi_task(task); goto finished; } if (task->status == SCSI_STATUS_GOOD) { @@ -109,12 +117,14 @@ int T0181_writesame10_unmap_unaligned(const char *initiator, const char *url, in printf("WRITESAME10 command to unmap a fractional physical block should fail\n"); ret = -1; scsi_free_scsi_task(task); - goto finished; + goto test2; } scsi_free_scsi_task(task); } printf("[OK]\n"); +test2: + finished: iscsi_logout_sync(iscsi); iscsi_destroy_context(iscsi); diff --git a/test-tool/0182_writesame10_beyondeol.c b/test-tool/0182_writesame10_beyondeol.c index 26cc774..9bcf021 100644 --- a/test-tool/0182_writesame10_beyondeol.c +++ b/test-tool/0182_writesame10_beyondeol.c @@ -92,6 +92,14 @@ int T0182_writesame10_beyondeol(const char *initiator, const char *url, int data ret = -1; goto test2; } + if (task->status == SCSI_STATUS_CHECK_CONDITION + && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST + && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + printf("[SKIPPED]\n"); + printf("Opcode is not implemented on target\n"); + scsi_free_scsi_task(task); + goto finished; + } if (task->status == SCSI_STATUS_GOOD) { printf("[FAILED]\n"); printf("WRITESAME10 command should fail when writing beyond end of device\n"); diff --git a/test-tool/0183_writesame10_wrprotect.c b/test-tool/0183_writesame10_wrprotect.c index 29c5c80..b39bb6e 100644 --- a/test-tool/0183_writesame10_wrprotect.c +++ b/test-tool/0183_writesame10_wrprotect.c @@ -90,6 +90,14 @@ int T0183_writesame10_wrprotect(const char *initiator, const char *url, int data ret = -1; goto test2; } + if (task->status == SCSI_STATUS_CHECK_CONDITION + && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST + && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + printf("[SKIPPED]\n"); + printf("Opcode is not implemented on target\n"); + scsi_free_scsi_task(task); + goto finished; + } if (task->status == SCSI_STATUS_GOOD) { printf("[FAILED]\n"); printf("WRITESAME10 command should fail when WRPROTECT is set\n"); diff --git a/test-tool/0184_writesame10_0blocks.c b/test-tool/0184_writesame10_0blocks.c index d6d0f88..1763734 100644 --- a/test-tool/0184_writesame10_0blocks.c +++ b/test-tool/0184_writesame10_0blocks.c @@ -91,6 +91,14 @@ int T0184_writesame10_0blocks(const char *initiator, const char *url, int data_l ret = -1; goto test2; } + if (task->status == SCSI_STATUS_CHECK_CONDITION + && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST + && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + printf("[SKIPPED]\n"); + printf("Opcode is not implemented on target\n"); + scsi_free_scsi_task(task); + goto finished; + } if (task->status != SCSI_STATUS_GOOD) { printf("[FAILED]\n"); printf("WRITESAME10 command: failed with sense. %s\n", iscsi_get_error(iscsi)); diff --git a/test-tool/0190_writesame16_unmap.c b/test-tool/0190_writesame16_unmap.c index eaca287..6bdca3b 100644 --- a/test-tool/0190_writesame16_unmap.c +++ b/test-tool/0190_writesame16_unmap.c @@ -166,6 +166,14 @@ test2: ret = -1; goto test3; } + if (task->status == SCSI_STATUS_CHECK_CONDITION + && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST + && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + printf("[SKIPPED]\n"); + printf("Opcode is not implemented on target\n"); + scsi_free_scsi_task(task); + goto finished; + } if (lbpws) { if (task->status != SCSI_STATUS_GOOD) { printf("[FAILED]\n"); diff --git a/test-tool/0191_writesame16_unmap_unaligned.c b/test-tool/0191_writesame16_unmap_unaligned.c index cea2e6b..cbc3c3b 100644 --- a/test-tool/0191_writesame16_unmap_unaligned.c +++ b/test-tool/0191_writesame16_unmap_unaligned.c @@ -104,6 +104,14 @@ int T0191_writesame16_unmap_unaligned(const char *initiator, const char *url, in ret = -1; goto finished; } + if (task->status == SCSI_STATUS_CHECK_CONDITION + && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST + && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + printf("[SKIPPED]\n"); + printf("Opcode is not implemented on target\n"); + scsi_free_scsi_task(task); + goto finished; + } if (task->status == SCSI_STATUS_GOOD) { printf("[FAILED]\n"); printf("WRITESAME16 command to unmap a fractional physical block should fail\n"); diff --git a/test-tool/0192_writesame16_beyondeol.c b/test-tool/0192_writesame16_beyondeol.c index 52a8b71..8fdc985 100644 --- a/test-tool/0192_writesame16_beyondeol.c +++ b/test-tool/0192_writesame16_beyondeol.c @@ -91,6 +91,14 @@ int T0192_writesame16_beyondeol(const char *initiator, const char *url, int data ret = -1; goto test2; } + if (task->status == SCSI_STATUS_CHECK_CONDITION + && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST + && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + printf("[SKIPPED]\n"); + printf("Opcode is not implemented on target\n"); + scsi_free_scsi_task(task); + goto finished; + } if (task->status == SCSI_STATUS_GOOD) { printf("[FAILED]\n"); printf("WRITESAME16 command should fail when writing beyond end of device\n"); diff --git a/test-tool/0193_writesame16_wrprotect.c b/test-tool/0193_writesame16_wrprotect.c index 7db4f1d..7bc36b5 100644 --- a/test-tool/0193_writesame16_wrprotect.c +++ b/test-tool/0193_writesame16_wrprotect.c @@ -90,6 +90,14 @@ int T0193_writesame16_wrprotect(const char *initiator, const char *url, int data ret = -1; goto test2; } + if (task->status == SCSI_STATUS_CHECK_CONDITION + && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST + && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + printf("[SKIPPED]\n"); + printf("Opcode is not implemented on target\n"); + scsi_free_scsi_task(task); + goto finished; + } if (task->status == SCSI_STATUS_GOOD) { printf("[FAILED]\n"); printf("WRITESAME16 command should fail when WRPROTECT is set\n"); diff --git a/test-tool/0194_writesame16_0blocks.c b/test-tool/0194_writesame16_0blocks.c index ddfbf62..ab350d3 100644 --- a/test-tool/0194_writesame16_0blocks.c +++ b/test-tool/0194_writesame16_0blocks.c @@ -91,6 +91,14 @@ int T0194_writesame16_0blocks(const char *initiator, const char *url, int data_l ret = -1; goto test2; } + if (task->status == SCSI_STATUS_CHECK_CONDITION + && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST + && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + printf("[SKIPPED]\n"); + printf("Opcode is not implemented on target\n"); + scsi_free_scsi_task(task); + goto finished; + } if (task->status != SCSI_STATUS_GOOD) { printf("[FAILED]\n"); printf("WRITESAME16 command: failed with sense. %s\n", iscsi_get_error(iscsi));