From d4b31aa992397bd2f6c58d9d417c1375f6faa95d Mon Sep 17 00:00:00 2001
From: "Lucas A. M. Magalhaes" <lamm@linux.ibm.com>
Date: Thu, 16 Jul 2020 10:22:58 -0300
Subject: [PATCH] test: skip pmempool_feature if SDS cannot be enabled

Signed-off-by: Lucas A. M. Magalhaes <lamm@linux.ibm.com>
---
 src/test/libpmempool_feature/TEST1.PS1  |  8 ++++++++
 src/test/libpmempool_feature/TEST2w.PS1 |  8 ++++++++
 src/test/libpmempool_feature/common.PS1 | 10 ++++++++++
 src/test/pmempool_feature/TEST1.PS1     |  8 ++++++++
 src/test/pmempool_feature/TEST15.PS1    |  8 ++++++++
 src/test/pmempool_feature/TEST2.PS1     |  8 ++++++++
 src/test/pmempool_feature/common.PS1    |  9 +++++++++
 src/test/pmempool_feature/common.sh     | 23 +++++++++++++++++++++++
 8 files changed, 82 insertions(+)

diff --git a/src/test/libpmempool_feature/TEST1.PS1 b/src/test/libpmempool_feature/TEST1.PS1
index 4aef39bfe..41accdf32 100644
--- a/src/test/libpmempool_feature/TEST1.PS1
+++ b/src/test/libpmempool_feature/TEST1.PS1
@@ -22,6 +22,14 @@ expect_normal_exit $PMEMPOOL create obj $POOL
 # PMEMPOOL_FEAT_CHCKSUM_2K is enabled by default
 libpmempool_feature_query "CKSUM_2K"
 
+# If SDS is not enabled at this point is because SDS is not available for
+# this device
+$ret = pmempool_feature_query_return "SHUTDOWN_STATE"
+if ( $ret -eq "0" ) {
+	msg "${Env:UNITTEST_NAME}: SKIP: SDS is not available"
+	exit 0
+}
+
 # disable PMEMPOOL_FEAT_SHUTDOWN_STATE prior to success
 $exit_func="expect_abnormal_exit"
 libpmempool_feature_disable "CKSUM_2K" # should fail
diff --git a/src/test/libpmempool_feature/TEST2w.PS1 b/src/test/libpmempool_feature/TEST2w.PS1
index 247a64db8..fc66cd36d 100644
--- a/src/test/libpmempool_feature/TEST2w.PS1
+++ b/src/test/libpmempool_feature/TEST2w.PS1
@@ -19,6 +19,14 @@ expect_normal_exit $PMEMPOOL create obj $POOL
 # PMEMPOOL_FEAT_SHUTDOWN_STATE is enabled by default
 libpmempool_feature_query "SHUTDOWN_STATE"
 
+# If SDS is not enabled at this point is because SDS is not available for
+# this device
+$ret = pmempool_feature_query_return "SHUTDOWN_STATE"
+if ( $ret -eq "0" ) {
+	msg "${Env:UNITTEST_NAME}: SKIP: SDS is not available"
+	exit 0
+}
+
 libpmempool_feature_disable "SHUTDOWN_STATE"
 
 # PMEMPOOL_FEAT_SHUTDOWN_STATE requires PMEMPOOL_FEAT_CHCKSUM_2K
diff --git a/src/test/libpmempool_feature/common.PS1 b/src/test/libpmempool_feature/common.PS1
index 917f43971..7c22e0e1c 100644
--- a/src/test/libpmempool_feature/common.PS1
+++ b/src/test/libpmempool_feature/common.PS1
@@ -16,6 +16,16 @@ $ERROR_PATTERN="<1> \[feature.c:.*\]"
 
 $exit_func="expect_normal_exit"
 
+# pmempool_feature_query_return -- query a feature and return
+# the value.
+#
+# usage: pmempool_feature_query_return <feature>
+function pmempool_feature_query_return($arg1) {
+	# verify query by pmempool info
+	$count=(expect_normal_exit $PMEMPOOL info $POOL | Select-String "$arg1").length
+	return $count
+}
+
 # libpmempool_feature_query_abnormal -- query feature with expected
 #	abnormal result
 #
diff --git a/src/test/pmempool_feature/TEST1.PS1 b/src/test/pmempool_feature/TEST1.PS1
index 33973d443..5bf1a9aca 100755
--- a/src/test/pmempool_feature/TEST1.PS1
+++ b/src/test/pmempool_feature/TEST1.PS1
@@ -19,6 +19,14 @@ expect_normal_exit $PMEMPOOL create obj $POOLSET
 # PMEMPOOL_FEAT_CHCKSUM_2K is enabled by default
 pmempool_feature_query "CKSUM_2K"
 
+# If SDS is not enabled at this point is because SDS is not available for
+# this device
+$ret = pmempool_feature_query_return "SHUTDOWN_STATE"
+if ( $ret -eq "0" ) {
+	msg "${Env:UNITTEST_NAME}: SKIP: SDS is not available"
+	exit 0
+}
+
 # disable PMEMPOOL_FEAT_SHUTDOWN_STATE prior to success
 $exit_func="expect_abnormal_exit"
 pmempool_feature_disable "CKSUM_2K" # should fail
diff --git a/src/test/pmempool_feature/TEST15.PS1 b/src/test/pmempool_feature/TEST15.PS1
index e601cb155..2d520a4d8 100755
--- a/src/test/pmempool_feature/TEST15.PS1
+++ b/src/test/pmempool_feature/TEST15.PS1
@@ -17,6 +17,14 @@ setup
 $Env:PMEMOBJ_CONF += "sds.at_create=1"
 expect_normal_exit $PMEMPOOL create obj $POOLSET
 
+# If SDS is not enabled at this point is because SDS is not available for
+# this device
+$ret = pmempool_feature_query_return "SHUTDOWN_STATE"
+if ( $ret -eq "0" ) {
+	msg "${Env:UNITTEST_NAME}: SKIP: SDS is not available"
+	exit 0
+}
+
 pmempool_feature_query "SHUTDOWN_STATE"
 
 check
diff --git a/src/test/pmempool_feature/TEST2.PS1 b/src/test/pmempool_feature/TEST2.PS1
index 78acdd6e2..019fcc614 100755
--- a/src/test/pmempool_feature/TEST2.PS1
+++ b/src/test/pmempool_feature/TEST2.PS1
@@ -19,6 +19,14 @@ expect_normal_exit $PMEMPOOL create obj $POOLSET
 # PMEMPOOL_FEAT_SHUTDOWN_STATE is enabled by default
 pmempool_feature_query "SHUTDOWN_STATE"
 
+# If SDS is not enabled at this point is because SDS is not available for
+# this device
+$ret = pmempool_feature_query_return "SHUTDOWN_STATE"
+if ( $ret -eq "0" ) {
+	msg "${Env:UNITTEST_NAME}: SKIP: SDS is not available"
+	exit 0
+}
+
 pmempool_feature_disable "SHUTDOWN_STATE"
 
 # PMEMPOOL_FEAT_SHUTDOWN_STATE requires PMEMPOOL_FEAT_CHCKSUM_2K
diff --git a/src/test/pmempool_feature/common.PS1 b/src/test/pmempool_feature/common.PS1
index 7c64fb255..77ac52639 100644
--- a/src/test/pmempool_feature/common.PS1
+++ b/src/test/pmempool_feature/common.PS1
@@ -20,6 +20,15 @@ remove_files $LOG
 
 $exit_func="expect_normal_exit"
 
+# pmempool_feature_query_return -- query a feature and return
+# the value.
+#
+# usage: pmempool_feature_query_return <feature>
+function pmempool_feature_query_return($arg1) {
+	$count=$(expect_normal_exit $PMEMPOOL feature -q $arg1 $POOLSET)
+	return $count
+}
+
 # pmempool_feature_query -- query feature
 #
 # usage: pmempool_feature_query <feature>
diff --git a/src/test/pmempool_feature/common.sh b/src/test/pmempool_feature/common.sh
index 6ad2045f8..a7a2a651e 100644
--- a/src/test/pmempool_feature/common.sh
+++ b/src/test/pmempool_feature/common.sh
@@ -21,6 +21,14 @@ pmempool_exe=$PMEMPOOL$EXESUFFIX
 exit_func=expect_normal_exit
 sds_enabled=$(is_ndctl_enabled $pmempool_exe; echo $?)
 
+# pmempool_feature_query_return -- query a feature and return
+# the value.
+#
+# usage: pmempool_feature_query_return <feature>
+function pmempool_feature_query_return() {
+       return $($pmempool_exe feature -q $1 $POOLSET 2>> $LOG)
+}
+
 # pmempool_feature_query -- query feature
 #
 # usage: pmempool_feature_query <feature> [<query-exit-type>]
@@ -122,6 +130,14 @@ function pmempool_feature_test_CKSUM_2K() {
 		pmempool_feature_enable SHUTDOWN_STATE "no-query"
 	fi
 
+	# If SDS is not enabled at this point is because SDS is not available for
+	# this device
+	pmempool_feature_query_return "SHUTDOWN_STATE"
+	if [[ $? -eq 0 ]]; then
+		msg "$UNITTEST_NAME: SKIP: SDS is not available"
+		exit 0
+	fi
+
 	# disable PMEMPOOL_FEAT_SHUTDOWN_STATE prior to success
 	exit_func=expect_abnormal_exit
 	pmempool_feature_disable "CKSUM_2K" # should fail
@@ -136,6 +152,13 @@ function pmempool_feature_test_CKSUM_2K() {
 function pmempool_feature_test_SHUTDOWN_STATE() {
 	pmempool_feature_query "SHUTDOWN_STATE"
 
+	# If SDS is not enabled at this point is because SDS is not available for
+	# this device
+	pmempool_feature_query_return "SHUTDOWN_STATE"
+	if [[ $? -eq 0 ]]; then
+		msg "$UNITTEST_NAME: SKIP: SDS is not available"
+		exit 0
+	fi
 	if [ $sds_enabled -eq 0 ]; then
 		pmempool_feature_disable SHUTDOWN_STATE
 	fi
-- 
GitLab