[libvirt] [PATCH v3 1/8] tests: Add virfilewrapper -- the new super "mock"
Erik Skultety
eskultet at redhat.com
Fri Apr 28 12:19:45 UTC 2017
On Tue, Apr 25, 2017 at 01:10:25PM +0200, Martin Kletzander wrote:
> This mock (which is actually not mock at all, see later) can redirect
> all accesses to a path into another path. There is no need to
> create mocks for particular directories, you just create a directory
> with all the data a redirect the test there.
>
> In the future, this should also be able to register callbacks for
> calls/paths, e.g. when the test is going to write into anything under
> "/sys/devices", call function fce(); Then in the open() call we would
> add information about the fd into some structure and in write() we
> would call fce() with parameters like @path to write to, @data to
> be written and pointer to optional return value, so that fce() itself
> could stop the call from happening or change its behaviour. But
> that's an idea for a latter day.
>
> This is not a mock because it will not be preloaded, but compiled in
> the test itself. See future patches for usage.
>
> Signed-off-by: Martin Kletzander <mkletzan at redhat.com>
> ---
> cfg.mk | 4 +-
> tests/Makefile.am | 2 +-
> tests/virfilewrapper.c | 281 +++++++++++++++++++++++++++++++++++++++++++++++++
> tests/virfilewrapper.h | 31 ++++++
> 4 files changed, 315 insertions(+), 3 deletions(-)
> create mode 100644 tests/virfilewrapper.c
> create mode 100644 tests/virfilewrapper.h
>
> diff --git a/cfg.mk b/cfg.mk
> index c04a9911eb78..ed4129e418bc 100644
> --- a/cfg.mk
> +++ b/cfg.mk
> @@ -1129,7 +1129,7 @@ exclude_file_name_regexp--sc_copyright_usage = \
> ^COPYING(|\.LESSER)$$
>
> exclude_file_name_regexp--sc_flags_usage = \
> - ^(cfg\.mk|docs/|src/util/virnetdevtap\.c$$|tests/(vir(cgroup|pci|test|usb)|nss|qemuxml2argv)mock\.c$$)
> + ^(cfg\.mk|docs/|src/util/virnetdevtap\.c$$|tests/((vir(cgroup|pci|test|usb)|nss|qemuxml2argv)mock|virfilewrapper)\.c$$)
>
> exclude_file_name_regexp--sc_libvirt_unmarked_diagnostics = \
> ^(src/rpc/gendispatch\.pl$$|tests/)
> @@ -1258,7 +1258,7 @@ exclude_file_name_regexp--sc_prohibit_always-defined_macros = \
> ^tests/virtestmock.c$$
>
> exclude_file_name_regexp--sc_prohibit_readdir = \
> - ^tests/.*mock\.c$$
> + ^tests/(.*mock|virfilewrapper)\.c$$
>
> exclude_file_name_regexp--sc_prohibit_cross_inclusion = \
> ^(src/util/virclosecallbacks\.h|src/util/virhostdev\.h)$$
> diff --git a/tests/Makefile.am b/tests/Makefile.am
> index 279e9b7da866..2685098f4343 100644
> --- a/tests/Makefile.am
> +++ b/tests/Makefile.am
> @@ -1156,7 +1156,7 @@ virnumamock_la_CFLAGS = $(AM_CFLAGS)
> virnumamock_la_LDFLAGS = $(MOCKLIBS_LDFLAGS)
> virnumamock_la_LIBADD = $(MOCKLIBS_LIBS)
> else ! WITH_LINUX
> -EXTRA_DIST += vircaps2xmltest.c virnumamock.c
> +EXTRA_DIST += vircaps2xmltest.c virnumamock.c virfilewrapper.c virfilewrapper.h
> endif ! WITH_LINUX
>
> if WITH_NSS
> diff --git a/tests/virfilewrapper.c b/tests/virfilewrapper.c
> new file mode 100644
> index 000000000000..81537a6baf61
> --- /dev/null
> +++ b/tests/virfilewrapper.c
> @@ -0,0 +1,281 @@
> +/*
> + * virfilewrapper.c: Wrapper for universal file access
> + *
> + * This library is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2.1 of the License, or (at your option) any later version.
> + *
> + * This library is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library. If not, see
> + * <http://www.gnu.org/licenses/>.
> + */
> +
> +#include <config.h>
> +
> +#include "virmock.h"
> +#include "virfilewrapper.h"
Move ^these under the system ones.
> +
> +#include <stdio.h>
> +#include <stdlib.h>
> +#include <unistd.h>
You don't need ^this one.
> +#include <fcntl.h>
> +#include <sys/stat.h>
> +#include <sys/types.h>
Neither ^these two
> +#include <dirent.h>
And ^this one gets pulled in by virfile.h
> +
> +#include "viralloc.h"
> +#include "virstring.h"
> +#include "virfile.h"
> +
ACK with that.
Erik
More information about the libvir-list
mailing list