Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Add nofilter filter.
This is a filter that does nothing, approximately the filter
equivalent of the null plugin.  It is used for two purposes:

(1) Testing, where we need a filter that does nothing except pass
through requests.

(2) Checking that internally nbdkit can handle a filter that has no
callbacks.
  • Loading branch information
rwmjones committed Dec 12, 2019
1 parent a0715ed commit a1dee1c
Show file tree
Hide file tree
Showing 6 changed files with 194 additions and 0 deletions.
2 changes: 2 additions & 0 deletions configure.ac
Expand Up @@ -902,6 +902,7 @@ filters="\
log \
nocache \
noextents \
nofilter \
noparallel \
nozero \
offset \
Expand Down Expand Up @@ -987,6 +988,7 @@ AC_CONFIG_FILES([Makefile
filters/log/Makefile
filters/nocache/Makefile
filters/noextents/Makefile
filters/nofilter/Makefile
filters/noparallel/Makefile
filters/nozero/Makefile
filters/offset/Makefile
Expand Down
63 changes: 63 additions & 0 deletions filters/nofilter/Makefile.am
@@ -0,0 +1,63 @@
# nbdkit
# Copyright (C) 2018 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.

include $(top_srcdir)/common-rules.mk

EXTRA_DIST = nbdkit-nofilter-filter.pod

filter_LTLIBRARIES = nbdkit-nofilter-filter.la

nbdkit_nofilter_filter_la_SOURCES = \
nofilter.c \
$(top_srcdir)/include/nbdkit-filter.h \
$(NULL)

nbdkit_nofilter_filter_la_CPPFLAGS = \
-I$(top_srcdir)/include \
-I$(top_srcdir)/common/include \
$(NULL)
nbdkit_nofilter_filter_la_CFLAGS = $(WARNINGS_CFLAGS)
nbdkit_nofilter_filter_la_LDFLAGS = \
-module -avoid-version -shared \
-Wl,--version-script=$(top_srcdir)/filters/filters.syms \
$(NULL)

if HAVE_POD

man_MANS = nbdkit-nofilter-filter.1
CLEANFILES += $(man_MANS)

nbdkit-nofilter-filter.1: nbdkit-nofilter-filter.pod
$(PODWRAPPER) --section=1 --man $@ \
--html $(top_builddir)/html/$@.html \
$<

endif HAVE_POD
41 changes: 41 additions & 0 deletions filters/nofilter/nbdkit-nofilter-filter.pod
@@ -0,0 +1,41 @@
=head1 NAME

nbdkit-nofilter-filter - nbdkit passthrough filter

=head1 SYNOPSIS

nbdkit --filter=nofilter plugin [plugin-args...]

=head1 DESCRIPTION

C<nbdkit-nofilter-filter> passes through requests unchanged.
It is mostly used for testing nbdkit.

=head1 FILES

=over 4

=item F<$filterdir/nbdkit-nofilter-filter.so>

The filter.

Use C<nbdkit --dump-config> to find the location of C<$filterdir>.

=back

=head1 VERSION

C<nbdkit-nofilter-filter> first appeared in nbdkit 1.18.

=head1 SEE ALSO

L<nbdkit(1)>,
L<nbdkit-filter(3)>.

=head1 AUTHORS

Richard W.M. Jones

=head1 COPYRIGHT

Copyright (C) 2019 Red Hat Inc.
42 changes: 42 additions & 0 deletions filters/nofilter/nofilter.c
@@ -0,0 +1,42 @@
/* nbdkit
* Copyright (C) 2018-2019 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.
*/

#include <config.h>

#include <nbdkit-filter.h>

static struct nbdkit_filter filter = {
.name = "nofilter",
.longname = "nbdkit nofilter filter",
};

NBDKIT_REGISTER_FILTER(filter)
4 changes: 4 additions & 0 deletions tests/Makefile.am
Expand Up @@ -138,6 +138,7 @@ EXTRA_DIST = \
test-nbd-extents.sh \
test-nbd-tls.sh \
test-nbd-tls-psk.sh \
test-nofilter.sh \
test-nozero.sh \
test-null-extents.sh \
test_ocaml_plugin.ml \
Expand Down Expand Up @@ -1014,6 +1015,9 @@ TESTS += test-ip-filter.sh
# log filter test.
TESTS += test-log.sh

# nofilter test.
TESTS += test-nofilter.sh

if HAVE_NBD_PLUGIN
# nozero filter test.
TESTS += test-nozero.sh
Expand Down
42 changes: 42 additions & 0 deletions tests/test-nofilter.sh
@@ -0,0 +1,42 @@
#!/usr/bin/env bash
# nbdkit
# Copyright (C) 2018-2019 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

files="nofilter.img"
rm -f $files
cleanup_fn rm -f $files

nbdkit -U - -v --filter=nofilter memory 10M \
--run 'qemu-img convert $nbd nofilter.img'

0 comments on commit a1dee1c

Please sign in to comment.