TESTS: ORWRITE is optional, lack os support should skip the test not fail it
This commit is contained in:
@@ -213,6 +213,13 @@ orwrite(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] ORWRITE is not implemented.");
|
||||||
|
return -2;
|
||||||
|
}
|
||||||
if (task->status != SCSI_STATUS_GOOD) {
|
if (task->status != SCSI_STATUS_GOOD) {
|
||||||
logging(LOG_NORMAL, "[FAILED] ORWRITE command: "
|
logging(LOG_NORMAL, "[FAILED] ORWRITE command: "
|
||||||
"failed with sense. %s", iscsi_get_error(iscsi));
|
"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));
|
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] ORWRITE is not implemented.");
|
||||||
|
return -2;
|
||||||
|
}
|
||||||
if (task->status == SCSI_STATUS_GOOD) {
|
if (task->status == SCSI_STATUS_GOOD) {
|
||||||
logging(LOG_NORMAL, "[FAILED] ORWRITE successful but should "
|
logging(LOG_NORMAL, "[FAILED] ORWRITE successful but should "
|
||||||
"have failed with ILLEGAL_REQUEST/INVALID_FIELD_IN_CDB");
|
"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));
|
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] ORWRITE is not implemented.");
|
||||||
|
return -2;
|
||||||
|
}
|
||||||
if (task->status == SCSI_STATUS_GOOD) {
|
if (task->status == SCSI_STATUS_GOOD) {
|
||||||
logging(LOG_NORMAL, "[FAILED] ORWRITE successful but should "
|
logging(LOG_NORMAL, "[FAILED] ORWRITE successful but should "
|
||||||
"have failed with ILLEGAL_REQUEST/LBA_OUT_OF_RANGE");
|
"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));
|
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] ORWRITE is not implemented.");
|
||||||
|
return -2;
|
||||||
|
}
|
||||||
if (task->status == SCSI_STATUS_GOOD) {
|
if (task->status == SCSI_STATUS_GOOD) {
|
||||||
logging(LOG_NORMAL, "[FAILED] ORWRITE successful but should "
|
logging(LOG_NORMAL, "[FAILED] ORWRITE successful but should "
|
||||||
"have failed with DATA_PROTECTION/WRITE_PROTECTED");
|
"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
|
if (task->status == SCSI_STATUS_CHECK_CONDITION
|
||||||
&& task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST
|
&& task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST
|
||||||
&& task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) {
|
&& task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) {
|
||||||
logging(LOG_NORMAL, "[SKIPPED] ORWRITE is not implemented on target");
|
|
||||||
scsi_free_scsi_task(task);
|
scsi_free_scsi_task(task);
|
||||||
|
logging(LOG_NORMAL, "[SKIPPED] ORWRITE is not implemented.");
|
||||||
return -2;
|
return -2;
|
||||||
}
|
}
|
||||||
if (task->status == SCSI_STATUS_GOOD) {
|
if (task->status == SCSI_STATUS_GOOD) {
|
||||||
|
|||||||
@@ -37,7 +37,8 @@ test_orwrite_0blocks(void)
|
|||||||
0, block_size,
|
0, block_size,
|
||||||
0, 0, 0, 0, 0, NULL);
|
0, 0, 0, 0, 0, NULL);
|
||||||
if (ret == -2) {
|
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;
|
return;
|
||||||
}
|
}
|
||||||
CU_ASSERT_EQUAL(ret, 0);
|
CU_ASSERT_EQUAL(ret, 0);
|
||||||
|
|||||||
@@ -43,7 +43,8 @@ test_orwrite_beyond_eol(void)
|
|||||||
0, 0, 0, 0, 0, buf);
|
0, 0, 0, 0, 0, buf);
|
||||||
free(buf);
|
free(buf);
|
||||||
if (ret == -2) {
|
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;
|
return;
|
||||||
}
|
}
|
||||||
CU_ASSERT_EQUAL(ret, 0);
|
CU_ASSERT_EQUAL(ret, 0);
|
||||||
|
|||||||
@@ -41,12 +41,12 @@ test_orwrite_simple(void)
|
|||||||
|
|
||||||
ret = orwrite(iscsic, tgt_lun, 0, i * block_size,
|
ret = orwrite(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);
|
||||||
if (ret == -2) {
|
if (ret == -2) {
|
||||||
CU_PASS("[SKIPPED] Target does not support ORWRITE. Skipping test");
|
logging(LOG_NORMAL, "[SKIPPED] ORWRITE is not implemented.");
|
||||||
free(buf);
|
CU_PASS("ORWRITE is not implemented.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
free(buf);
|
|
||||||
CU_ASSERT_EQUAL(ret, 0);
|
CU_ASSERT_EQUAL(ret, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -44,6 +44,11 @@ test_orwrite_verify(void)
|
|||||||
memset(buf, 0, block_size * i);
|
memset(buf, 0, block_size * i);
|
||||||
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);
|
||||||
|
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, "OrWrite %d blocks with 0xa5", i);
|
logging(LOG_VERBOSE, "OrWrite %d blocks with 0xa5", i);
|
||||||
@@ -51,9 +56,8 @@ test_orwrite_verify(void)
|
|||||||
ret = orwrite(iscsic, tgt_lun, 0, i * block_size,
|
ret = orwrite(iscsic, tgt_lun, 0, i * block_size,
|
||||||
block_size, 0, 0, 0, 0, 0, buf);
|
block_size, 0, 0, 0, 0, 0, buf);
|
||||||
if (ret == -2) {
|
if (ret == -2) {
|
||||||
CU_PASS("[SKIPPED] Target does not support ORWRITE. Skipping test");
|
logging(LOG_NORMAL, "[SKIPPED] ORWRITE is not implemented.");
|
||||||
free(buf);
|
CU_PASS("ORWRITE is not implemented.");
|
||||||
free(readbuf);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
CU_ASSERT_EQUAL(ret, 0);
|
CU_ASSERT_EQUAL(ret, 0);
|
||||||
|
|||||||
@@ -46,8 +46,9 @@ test_orwrite_wrprotect(void)
|
|||||||
block_size, block_size,
|
block_size, block_size,
|
||||||
i, 0, 0, 0, 0, buf);
|
i, 0, 0, 0, 0, buf);
|
||||||
if (ret == -2) {
|
if (ret == -2) {
|
||||||
CU_PASS("[SKIPPED] Target does not support ORWRITE. Skipping test");
|
|
||||||
free(buf);
|
free(buf);
|
||||||
|
logging(LOG_NORMAL, "[SKIPPED] ORWRITE is not implemented.");
|
||||||
|
CU_PASS("ORWRITE is not implemented.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
CU_ASSERT_EQUAL(ret, 0);
|
CU_ASSERT_EQUAL(ret, 0);
|
||||||
|
|||||||
@@ -63,7 +63,6 @@ test_readonly_sbc(void)
|
|||||||
}
|
}
|
||||||
CU_ASSERT_NOT_EQUAL(ret, -1);
|
CU_ASSERT_NOT_EQUAL(ret, -1);
|
||||||
|
|
||||||
|
|
||||||
logging(LOG_VERBOSE, "Test WRITE_SAME16 fails with WRITE_PROTECTED");
|
logging(LOG_VERBOSE, "Test WRITE_SAME16 fails with WRITE_PROTECTED");
|
||||||
ret = writesame16_writeprotected(iscsic, tgt_lun, 0, block_size, 1,
|
ret = writesame16_writeprotected(iscsic, tgt_lun, 0, block_size, 1,
|
||||||
0, 0, 0, 0, buf);
|
0, 0, 0, 0, buf);
|
||||||
|
|||||||
Reference in New Issue
Block a user