---
tests/Makefile.am | 4 +++
tests/test-block-size-constraints.sh | 50 ++++++++++++++++++++++++++++
2 files changed, 54 insertions(+)
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 16f76eb8..e888b1a0 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -562,6 +562,10 @@ EXTRA_DIST += test-eflags.sh
TESTS += test-export-name.sh test-export-info.sh
EXTRA_DIST += test-export-name.sh test-export-info.sh
+# Test block size constraints.
+TESTS += test-block-size-constraints.sh
+EXTRA_DIST += test-block-size-constraints.sh
+
# cdi plugin test.
TESTS += test-cdi.sh
EXTRA_DIST += test-cdi.sh
diff --git a/tests/test-block-size-constraints.sh b/tests/test-block-size-constraints.sh
new file mode 100755
index 00000000..658445cd
--- /dev/null
+++ b/tests/test-block-size-constraints.sh
@@ -0,0 +1,50 @@
+#!/usr/bin/env bash
+# nbdkit
+# Copyright (C) 2019-2022 Red Hat Inc.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# * Neither the name of Red Hat nor the names of its contributors may be
+# used to endorse or promote products derived from this software without
+# specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY RED HAT AND CONTRIBUTORS ''AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+
+source ./functions.sh
+set -e
+set -x
+
+requires_plugin eval
+requires nbdsh -c 'print(h.get_block_size)'
+
+# Create an nbdkit eval plugin which presents block size constraints.
+# Check the advertised block size constraints can be read.
+nbdkit -U - eval \
+ block_size="echo 64K 128K 32M" \
+ get_size="echo 0" \
+ --run 'nbdsh \
+ -u "$uri" \
+ -c "assert h.get_block_size(nbd.SIZE_MINIMUM) == 64 * 1024" \
+ -c "assert h.get_block_size(nbd.SIZE_PREFERRED) == 128 * 1024" \
+ -c "assert h.get_block_size(nbd.SIZE_MAXIMUM) == 32 * 1024 * 1024"
\
+ '
--
2.35.1