[lvm-devel] master - lvm2api: Make the vg_list_* functions work with lvmetad (+ test).
Petr Rockai
mornfall at fedoraproject.org
Thu Jul 11 07:48:30 UTC 2013
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=8e4a3dd9cb73e71df5f782f844da4cf461d76de6
Commit: 8e4a3dd9cb73e71df5f782f844da4cf461d76de6
Parent: 618d13705c233b8ab7290653228b17ee111479f4
Author: Petr Rockai <prockai at redhat.com>
AuthorDate: Thu Jul 11 08:01:04 2013 +0200
Committer: Petr Rockai <prockai at redhat.com>
CommitterDate: Thu Jul 11 09:38:46 2013 +0200
lvm2api: Make the vg_list_* functions work with lvmetad (+ test).
---
liblvm/lvm_vg.c | 3 ++
test/api/Makefile.in | 2 +
test/api/vglist.c | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++
test/api/vglist.sh | 15 ++++++++++
4 files changed, 94 insertions(+), 0 deletions(-)
diff --git a/liblvm/lvm_vg.c b/liblvm/lvm_vg.c
index 4a5fdf5..35c7eea 100644
--- a/liblvm/lvm_vg.c
+++ b/liblvm/lvm_vg.c
@@ -18,6 +18,7 @@
#include "archiver.h"
#include "locking.h"
#include "lvmcache.h"
+#include "lvmetad.h"
#include "lvm_misc.h"
#include "lvm2app.h"
@@ -361,11 +362,13 @@ int lvm_vg_set_property(const vg_t vg, const char *name,
struct dm_list *lvm_list_vg_names(lvm_t libh)
{
+ lvmetad_vg_list_to_lvmcache((struct cmd_context *)libh);
return get_vgnames((struct cmd_context *)libh, 0);
}
struct dm_list *lvm_list_vg_uuids(lvm_t libh)
{
+ lvmetad_vg_list_to_lvmcache((struct cmd_context *)libh);
return get_vgids((struct cmd_context *)libh, 0);
}
diff --git a/test/api/Makefile.in b/test/api/Makefile.in
index 7ad6743..9a43548 100644
--- a/test/api/Makefile.in
+++ b/test/api/Makefile.in
@@ -22,6 +22,7 @@ SOURCES = test.c
TARGETS += \
lvtest.t \
+ vglist.t \
percent.t \
pe_start.t \
thin_percent.t \
@@ -29,6 +30,7 @@ TARGETS += \
SOURCES2 = \
lvtest.c \
+ vglist.c \
percent.c \
pe_start.c \
thin_percent.c \
diff --git a/test/api/vglist.c b/test/api/vglist.c
new file mode 100644
index 0000000..5939340
--- /dev/null
+++ b/test/api/vglist.c
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2009 Red Hat, Inc. All rights reserved.
+ *
+ * This file is part of LVM2.
+ *
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License v.2.1.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include <stdio.h>
+#include <unistd.h>
+#include <inttypes.h>
+#include <assert.h>
+
+#include "lvm2app.h"
+
+lvm_t handle;
+vg_t vg;
+
+static void start() {
+ handle = lvm_init(NULL);
+ if (!handle) {
+ fprintf(stderr, "Unable to lvm_init\n");
+ abort();
+ }
+}
+
+static void done(int ok) {
+ if (handle && lvm_errno(handle)) {
+ fprintf(stderr, "LVM Error: %s\n", lvm_errmsg(handle));
+ ok = 0;
+ }
+ if (handle)
+ lvm_quit(handle);
+ if (!ok)
+ abort();
+}
+
+int main(int argc, char *argv[])
+{
+ int status;
+
+ if (argc != 3)
+ abort();
+
+ lvm_str_list_t *str;
+
+ int i = 0;
+
+ start();
+ struct dm_list *vgnames = lvm_list_vg_names(handle);
+ dm_list_iterate_items(str, vgnames) {
+ assert(++i <= 1);
+ assert(!strcmp(str->str, argv[1]));
+ }
+ assert(i == 1);
+ done(1);
+
+ i = 0;
+ start();
+ struct dm_list *vgids = lvm_list_vg_uuids(handle);
+ dm_list_iterate_items(str, vgids) {
+ assert(++i <= 1);
+ assert(!strcmp(str->str, argv[2]));
+ }
+ assert(i == 1);
+ done(1);
+ return 0;
+}
diff --git a/test/api/vglist.sh b/test/api/vglist.sh
new file mode 100644
index 0000000..275c9d2
--- /dev/null
+++ b/test/api/vglist.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+# Copyright (C) 2013 Red Hat, Inc. All rights reserved.
+#
+# This copyrighted material is made available to anyone wishing to use,
+# modify, copy, or redistribute it subject to the terms and conditions
+# of the GNU General Public License v.2.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+. lib/test
+
+aux prepare_vg 2
+aux apitest vglist $vg `get vg_field $vg vg_uuid | sed -e s,-,,g`
More information about the lvm-devel
mailing list