TESTS: WRITE16 is optional so update the tests to allow WRITE16 to be missing and just make the test be [SKIPPED]
This commit is contained in:
@@ -3854,6 +3854,13 @@ write16(struct iscsi_context *iscsi, int lun, uint64_t lba,
|
|||||||
iscsi_get_error(iscsi));
|
iscsi_get_error(iscsi));
|
||||||
return -1;
|
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) {
|
if (task->status != SCSI_STATUS_GOOD) {
|
||||||
logging(LOG_NORMAL, "[FAILED] WRITE16 command: "
|
logging(LOG_NORMAL, "[FAILED] WRITE16 command: "
|
||||||
"failed with sense. %s", iscsi_get_error(iscsi));
|
"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));
|
iscsi_get_error(iscsi));
|
||||||
return -1;
|
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) {
|
if (task->status == SCSI_STATUS_GOOD) {
|
||||||
logging(LOG_NORMAL, "[FAILED] WRITE16 successful but should "
|
logging(LOG_NORMAL, "[FAILED] WRITE16 successful but should "
|
||||||
"have failed with ILLEGAL_REQUEST/INVALID_FIELD_IN_CDB");
|
"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));
|
iscsi_get_error(iscsi));
|
||||||
return -1;
|
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) {
|
if (task->status == SCSI_STATUS_GOOD) {
|
||||||
logging(LOG_NORMAL, "[FAILED] WRITE16 successful but should "
|
logging(LOG_NORMAL, "[FAILED] WRITE16 successful but should "
|
||||||
"have failed with ILLEGAL_REQUEST/LBA_OUT_OF_RANGE");
|
"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);
|
scsi_free_scsi_task(task);
|
||||||
return -1;
|
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
|
if (task->status != SCSI_STATUS_CHECK_CONDITION
|
||||||
|| task->sense.key != SCSI_SENSE_DATA_PROTECTION
|
|| task->sense.key != SCSI_SENSE_DATA_PROTECTION
|
||||||
|| task->sense.ascq != SCSI_SENSE_ASCQ_WRITE_PROTECTED) {
|
|| 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);
|
scsi_free_scsi_task(task);
|
||||||
return -1;
|
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
|
if (task->status != SCSI_STATUS_CHECK_CONDITION
|
||||||
|| task->sense.key != SCSI_SENSE_NOT_READY
|
|| task->sense.key != SCSI_SENSE_NOT_READY
|
||||||
|| (task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT
|
|| (task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT
|
||||||
|
|||||||
@@ -35,6 +35,11 @@ test_write16_0blocks(void)
|
|||||||
logging(LOG_VERBOSE, "Test WRITE16 0-blocks at LBA==0");
|
logging(LOG_VERBOSE, "Test WRITE16 0-blocks at LBA==0");
|
||||||
ret = write16(iscsic, tgt_lun, 0, 0, block_size,
|
ret = write16(iscsic, tgt_lun, 0, 0, block_size,
|
||||||
0, 0, 0, 0, 0, NULL);
|
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);
|
CU_ASSERT_EQUAL(ret, 0);
|
||||||
|
|
||||||
logging(LOG_VERBOSE, "Test WRITE16 0-blocks one block past end-of-LUN");
|
logging(LOG_VERBOSE, "Test WRITE16 0-blocks one block past end-of-LUN");
|
||||||
|
|||||||
@@ -41,6 +41,11 @@ test_write16_beyond_eol(void)
|
|||||||
i * block_size, block_size,
|
i * block_size, block_size,
|
||||||
0, 0, 0, 0, 0, buf);
|
0, 0, 0, 0, 0, buf);
|
||||||
free(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);
|
CU_ASSERT_EQUAL(ret, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -42,6 +42,11 @@ test_write16_flags(void)
|
|||||||
ret = write16(iscsic, tgt_lun, 0,
|
ret = write16(iscsic, tgt_lun, 0,
|
||||||
block_size, block_size,
|
block_size, block_size,
|
||||||
0, 1, 0, 0, 0, buf);
|
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);
|
CU_ASSERT_EQUAL(ret, 0);
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -66,6 +66,13 @@ test_write16_residuals(void)
|
|||||||
CU_ASSERT_PTR_NOT_NULL(task_ret);
|
CU_ASSERT_PTR_NOT_NULL(task_ret);
|
||||||
CU_ASSERT_NOT_EQUAL(task->status, SCSI_STATUS_CANCELLED); /* XXX redundant? */
|
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");
|
logging(LOG_VERBOSE, "Verify that the target returned SUCCESS");
|
||||||
if (task->status != SCSI_STATUS_GOOD) {
|
if (task->status != SCSI_STATUS_GOOD) {
|
||||||
logging(LOG_VERBOSE, "[FAILED] Target returned error %s",
|
logging(LOG_VERBOSE, "[FAILED] Target returned error %s",
|
||||||
|
|||||||
@@ -42,6 +42,11 @@ test_write16_simple(void)
|
|||||||
ret = write16(iscsic, tgt_lun, 0, i * block_size,
|
ret = write16(iscsic, tgt_lun, 0, i * block_size,
|
||||||
block_size, 0, 0, 0, 0, 0, buf);
|
block_size, 0, 0, 0, 0, 0, buf);
|
||||||
free(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);
|
CU_ASSERT_EQUAL(ret, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -45,6 +45,11 @@ test_write16_wrprotect(void)
|
|||||||
ret = write16_invalidfieldincdb(iscsic, tgt_lun, 0,
|
ret = write16_invalidfieldincdb(iscsic, tgt_lun, 0,
|
||||||
block_size, block_size,
|
block_size, block_size,
|
||||||
i, 0, 0, 0, 0, buf);
|
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);
|
CU_ASSERT_EQUAL(ret, 0);
|
||||||
}
|
}
|
||||||
free(buf);
|
free(buf);
|
||||||
|
|||||||
Reference in New Issue
Block a user