diff --git a/Makefile.am b/Makefile.am index a28fde3..c112c20 100644 --- a/Makefile.am +++ b/Makefile.am @@ -269,6 +269,7 @@ bin_iscsi_test_cu_SOURCES = test-tool/iscsi-test-cu.c \ test-tool/test_sanitize_simple.c \ test-tool/test_sanitize_overwrite.c \ test-tool/test_sanitize_paramlen.c \ + test-tool/test_sanitize_invalid_serviceaction.c \ test-tool/test_startstopunit_simple.c \ test-tool/test_startstopunit_pwrcnd.c \ test-tool/test_startstopunit_noloej.c \ diff --git a/test-tool/iscsi-test-cu.c b/test-tool/iscsi-test-cu.c index 1f92c2e..a099b6c 100644 --- a/test-tool/iscsi-test-cu.c +++ b/test-tool/iscsi-test-cu.c @@ -225,6 +225,7 @@ static CU_TestInfo tests_sanitize[] = { { (char *)"Sanitize", test_sanitize_simple }, { (char *)"Overwrite", test_sanitize_overwrite }, { (char *)"ParamLen", test_sanitize_paramlen }, + { (char *)"InvalidServiceAction", test_sanitize_invalid_serviceaction }, CU_TEST_INFO_NULL }; diff --git a/test-tool/iscsi-test-cu.h b/test-tool/iscsi-test-cu.h index 72180d0..da74f8b 100644 --- a/test-tool/iscsi-test-cu.h +++ b/test-tool/iscsi-test-cu.h @@ -154,6 +154,7 @@ void test_reserve6_lun_reset(void); void test_sanitize_simple(void); void test_sanitize_overwrite(void); void test_sanitize_paramlen(void); +void test_sanitize_invalid_serviceaction(void); void test_startstopunit_simple(void); void test_startstopunit_pwrcnd(void); diff --git a/test-tool/test_sanitize_invalid_serviceaction.c b/test-tool/test_sanitize_invalid_serviceaction.c new file mode 100644 index 0000000..abd34b5 --- /dev/null +++ b/test-tool/test_sanitize_invalid_serviceaction.c @@ -0,0 +1,65 @@ +/* + Copyright (C) 2013 Ronnie Sahlberg + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, see . +*/ + +#include +#include +#include +#include + +#include + +#include "iscsi.h" +#include "scsi-lowlevel.h" +#include "iscsi-test-cu.h" + +void +test_sanitize_invalid_serviceaction(void) +{ + int i, ret; + + logging(LOG_VERBOSE, LOG_BLANK_LINE); + logging(LOG_VERBOSE, "Test SANITIZE for invalid serviceactions"); + + CHECK_FOR_SANITIZE; + + + logging(LOG_VERBOSE, "Test all invalid service actions and make sure " + "they fail with an error"); + for (i = 0; i <= 0x1f; i++) { + switch (i) { + case 1: + case 2: + case 3: + case 0x1f: + continue; + } + + logging(LOG_VERBOSE, "Verify that ServiceAction:0x%02d is " + "an error.", i); + + ret = sanitize_invalidfieldincdb(iscsic, tgt_lun, + 0, 0, i, 0, NULL); + if (ret == -2) { + logging(LOG_NORMAL, "[SKIPPED] SANITIZE is not " + "implemented."); + CU_PASS("SANITIZE is not implemented."); + return; + } else { + CU_ASSERT_EQUAL(ret, 0); + } + } +}