[PATCH blktests] nvme/053: do not use awk

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Luis observed that the test case nvme/053 fails in his environment [1]
due to the following awk error message:

 awk: ...rescan.awk:2: warning: The time extension is obsolete.
 Use the timex extension from gawkextlib

To avoid the failure and reduce dependencies, do not use awk in the test
case. Instead, introduce the bash function get_sleep_time() to calculate
the sleep time. Also implement the controller rescan loop in bash,
following Martin's original patch [2].

[1] https://lore.kernel.org/linux-block/20241218111340.3912034-1-mcgrof@xxxxxxxxxx/
[2] https://lore.kernel.org/linux-nvme/20240822193814.106111-3-mwilck@xxxxxxxx/

Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@xxxxxxx>
---
 tests/nvme/053 | 34 ++++++++++++++--------------------
 1 file changed, 14 insertions(+), 20 deletions(-)

diff --git a/tests/nvme/053 b/tests/nvme/053
index 3ade8d3..99dbd38 100755
--- a/tests/nvme/053
+++ b/tests/nvme/053
@@ -12,8 +12,15 @@ DESCRIPTION="test controller rescan under I/O load"
 TIMED=1
 : "${TIMEOUT:=60}"
 
+get_sleep_time() {
+	local duration=$((RANDOM % 50 + 1))
+
+	echo "$((duration / 10)).$((duration % 10))"
+}
+
 rescan_controller() {
-	local path
+	local path finish
+
 	path="$1/rescan_controller"
 
 	[[ -f "$path" ]] || {
@@ -21,24 +28,12 @@ rescan_controller() {
 		return 1
 	}
 
-	awk -f "$TMPDIR/rescan.awk" \
-	    -v path="$path" -v timeout="$TIMEOUT" -v seed="$2" &
-}
-
-create_rescan_script() {
-	cat >"$TMPDIR/rescan.awk" <<EOF
-@load "time"
-
-BEGIN {
-    srand(seed);
-    finish = gettimeofday() + strtonum(timeout);
-    while (gettimeofday() < finish) {
-	sleep(0.1 + 5 * rand());
-	printf("1\n") > path;
-	close(path);
-    }
-}
-EOF
+	finish=$(($(date +%s) + TIMEOUT))
+	while [[ $(date +%s) -le $finish ]]; do
+		# sleep interval between 0.1 and 5s
+		sleep "$(get_sleep_time)"
+		echo 1 >"$path"
+	done
 }
 
 test_device() {
@@ -46,7 +41,6 @@ test_device() {
 	local i st line
 
 	echo "Running ${TEST_NAME}"
-	create_rescan_script
 
 	while IFS= read -r line; do
 		ctrls+=("$line")
-- 
2.47.0





[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux