* [ndctl PATCH] test/rescan-partitions.sh: refine search for created partition
@ 2024-08-28 19:26 alison.schofield
2024-09-04 0:25 ` Verma, Vishal L
0 siblings, 1 reply; 2+ messages in thread
From: alison.schofield @ 2024-08-28 19:26 UTC (permalink / raw)
To: nvdimm; +Cc: Alison Schofield, Ira Weiny
From: Alison Schofield <alison.schofield@intel.com>
Unit test rescan-partitions.sh can fail because the grep test looking
for the expected partition is overly broad and can match multiple
pmem devices.
/root/ndctl/build/meson-logs/testlog.txt reports this failure:
test/rescan-partitions.sh: failed at line 50
An example of an improper grep is:
'pmem10 pmem12 pmem1p1' when only 'pmem1p1' was expected
Replace the faulty grep with a query of the lsblk JSON output that
examines the children of this blockdev only and matches on size.
This type of pesky issue is probably arising as the unit tests are
being run in more complex environments and may also be due to other
unit tests not properly cleaning up after themselves. No matter the
cause this change makes this test more robust and that's a good thing!
Reported-by: Ira Weiny <ira.weiny@intel.com>
Signed-off-by: Alison Schofield <alison.schofield@intel.com>
---
test/rescan-partitions.sh | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/test/rescan-partitions.sh b/test/rescan-partitions.sh
index 51bbd731fb55..ccb542cb2f68 100755
--- a/test/rescan-partitions.sh
+++ b/test/rescan-partitions.sh
@@ -24,6 +24,7 @@ check_min_kver "4.16" || do_skip "may not contain fixes for partition rescanning
check_prereq "parted"
check_prereq "blockdev"
+check_prereq "jq"
test_mode()
{
@@ -46,7 +47,10 @@ test_mode()
sleep 1
blockdev --rereadpt /dev/$blockdev
sleep 1
- partdev="$(grep -Eo "${blockdev}.+" /proc/partitions)"
+ partdev=$(lsblk -J -o NAME,SIZE /dev/$blockdev |
+ jq -r '.blockdevices[] | .children[] |
+ select(.size == "9M") | .name')
+
test -b /dev/$partdev
# cycle the namespace, and verify the partition is read
--
2.37.3
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [ndctl PATCH] test/rescan-partitions.sh: refine search for created partition
2024-08-28 19:26 [ndctl PATCH] test/rescan-partitions.sh: refine search for created partition alison.schofield
@ 2024-09-04 0:25 ` Verma, Vishal L
0 siblings, 0 replies; 2+ messages in thread
From: Verma, Vishal L @ 2024-09-04 0:25 UTC (permalink / raw)
To: Schofield, Alison, nvdimm@lists.linux.dev; +Cc: Weiny, Ira
On Wed, 2024-08-28 at 12:26 -0700, alison.schofield@intel.com wrote:
> From: Alison Schofield <alison.schofield@intel.com>
>
> Unit test rescan-partitions.sh can fail because the grep test looking
> for the expected partition is overly broad and can match multiple
> pmem devices.
>
> /root/ndctl/build/meson-logs/testlog.txt reports this failure:
> test/rescan-partitions.sh: failed at line 50
>
> An example of an improper grep is:
> 'pmem10 pmem12 pmem1p1' when only 'pmem1p1' was expected
>
> Replace the faulty grep with a query of the lsblk JSON output that
> examines the children of this blockdev only and matches on size.
>
> This type of pesky issue is probably arising as the unit tests are
> being run in more complex environments and may also be due to other
> unit tests not properly cleaning up after themselves. No matter the
> cause this change makes this test more robust and that's a good
> thing!
>
> Reported-by: Ira Weiny <ira.weiny@intel.com>
> Signed-off-by: Alison Schofield <alison.schofield@intel.com>
> ---
> test/rescan-partitions.sh | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/test/rescan-partitions.sh b/test/rescan-partitions.sh
> index 51bbd731fb55..ccb542cb2f68 100755
> --- a/test/rescan-partitions.sh
> +++ b/test/rescan-partitions.sh
> @@ -24,6 +24,7 @@ check_min_kver "4.16" || do_skip "may not contain
> fixes for partition rescanning
>
> check_prereq "parted"
> check_prereq "blockdev"
> +check_prereq "jq"
>
> test_mode()
> {
> @@ -46,7 +47,10 @@ test_mode()
> sleep 1
> blockdev --rereadpt /dev/$blockdev
> sleep 1
> - partdev="$(grep -Eo "${blockdev}.+" /proc/partitions)"
> + partdev=$(lsblk -J -o NAME,SIZE /dev/$blockdev |
> + jq -r '.blockdevices[] | .children[] |
> + select(.size == "9M") | .name')
Hm slight reaction to the size == 9M check that wasn't there before.
Would it be better to just use .children[0].name instead of looking for
a specific 9M sized partition? May be more robust if the size ever
changes for some reason.
Otherwise looks good,
Reviewed-by: Vishal Verma <vishal.l.verma@intel.com>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2024-09-04 0:25 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-08-28 19:26 [ndctl PATCH] test/rescan-partitions.sh: refine search for created partition alison.schofield
2024-09-04 0:25 ` Verma, Vishal L
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox