summaryrefslogtreecommitdiffstats
path: root/test/sysfs
diff options
context:
space:
mode:
Diffstat (limited to 'test/sysfs')
-rw-r--r--test/sysfs/data/nvme-sysfs-tw-carbon-6.8.0-rc1+.out32
-rw-r--r--test/sysfs/data/nvme-sysfs-tw-carbon-6.8.0-rc1+.tar.xzbin0 -> 19712 bytes
-rw-r--r--test/sysfs/meson.build36
-rw-r--r--test/sysfs/sysfs-tree-diff.sh22
-rw-r--r--test/sysfs/sysfs.c24
5 files changed, 114 insertions, 0 deletions
diff --git a/test/sysfs/data/nvme-sysfs-tw-carbon-6.8.0-rc1+.out b/test/sysfs/data/nvme-sysfs-tw-carbon-6.8.0-rc1+.out
new file mode 100644
index 0000000..1cb6de4
--- /dev/null
+++ b/test/sysfs/data/nvme-sysfs-tw-carbon-6.8.0-rc1+.out
@@ -0,0 +1,32 @@
+{
+ "hosts":[
+ {
+ "hostnqn":"nqn.2014-08.org.nvmexpress:uuid:ce4fee3e-c02c-11ee-8442-830d068a36c6",
+ "hostid":"ce4fee3e-c02c-11ee-8442-830d068a36c6",
+ "subsystems":[
+ {
+ "name":"nvme-subsys1",
+ "nqn":"nqn.2019-08.org.qemu:nvme-0",
+ "controllers":[
+ {
+ "name":"nvme1",
+ "transport":"pcie",
+ "traddr":"0000:00:05.0"
+ }
+ ]
+ },
+ {
+ "name":"nvme-subsys0",
+ "nqn":"nqn.2019-08.org.qemu:subsys1",
+ "controllers":[
+ {
+ "name":"nvme0",
+ "transport":"pcie",
+ "traddr":"0000:0f:00.0"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/test/sysfs/data/nvme-sysfs-tw-carbon-6.8.0-rc1+.tar.xz b/test/sysfs/data/nvme-sysfs-tw-carbon-6.8.0-rc1+.tar.xz
new file mode 100644
index 0000000..ee11fde
--- /dev/null
+++ b/test/sysfs/data/nvme-sysfs-tw-carbon-6.8.0-rc1+.tar.xz
Binary files differ
diff --git a/test/sysfs/meson.build b/test/sysfs/meson.build
new file mode 100644
index 0000000..119fa97
--- /dev/null
+++ b/test/sysfs/meson.build
@@ -0,0 +1,36 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+#
+# This file is part of libnvme.
+# Copyright (c) 2024 SUSE LLC.
+#
+# Authors: Daniel Wagner <dwagner@suse.de>
+
+diff = find_program('diff', required : false)
+if diff.found()
+ sysfs_tree_print = executable(
+ 'sysfs-tree-print',
+ ['sysfs.c'],
+ dependencies: libnvme_dep,
+ include_directories: [incdir],
+ )
+
+ sysfs_files= [
+ 'nvme-sysfs-tw-carbon-6.8.0-rc1+'
+ ]
+
+ sysfs_tree_diff = find_program('sysfs-tree-diff.sh')
+
+ foreach t_file : sysfs_files
+ test(
+ 'sysfs',
+ sysfs_tree_diff,
+ args : [
+ meson.current_build_dir(),
+ sysfs_tree_print.full_path(),
+ files('data'/t_file + '.tar.xz'),
+ files('data'/t_file + '.out'),
+ ],
+ depends : sysfs_tree_print,
+ )
+ endforeach
+endif
diff --git a/test/sysfs/sysfs-tree-diff.sh b/test/sysfs/sysfs-tree-diff.sh
new file mode 100644
index 0000000..dfe3cb3
--- /dev/null
+++ b/test/sysfs/sysfs-tree-diff.sh
@@ -0,0 +1,22 @@
+#!/bin/bash -e
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+BUILD_DIR=$1
+SYSFS_TREE_PRINT=$2
+INPUT=$3
+EXPECTED_OUTPUT=$4
+
+TEST_NAME="$(basename -s .tar.xz $INPUT)"
+TEST_DIR="$BUILD_DIR/$TEST_NAME"
+ACTUAL_OUTPUT="$TEST_DIR.out"
+
+rm -rf "$TEST_DIR"
+mkdir "$TEST_DIR"
+tar -x -f "$INPUT" -C "$TEST_DIR"
+
+LIBNVME_SYSFS_PATH="$TEST_DIR" \
+LIBNVME_HOSTNQN=nqn.2014-08.org.nvmexpress:uuid:ce4fee3e-c02c-11ee-8442-830d068a36c6 \
+LIBNVME_HOSTID=ce4fee3e-c02c-11ee-8442-830d068a36c6 \
+"$SYSFS_TREE_PRINT" > "$ACTUAL_OUTPUT"
+
+diff -u "$EXPECTED_OUTPUT" "$ACTUAL_OUTPUT"
diff --git a/test/sysfs/sysfs.c b/test/sysfs/sysfs.c
new file mode 100644
index 0000000..06d0035
--- /dev/null
+++ b/test/sysfs/sysfs.c
@@ -0,0 +1,24 @@
+// SPDX-License-Identifier: LGPL-2.1-or-later
+/**
+ * This file is part of libnvme.
+ * Copyright (c) 2024 Daniel Wagner, SUSE LLC
+ */
+
+#include <assert.h>
+
+#include <libnvme.h>
+
+int main(int argc, char *argv[])
+{
+ nvme_root_t r;
+
+ r = nvme_create_root(stdout, LOG_ERR);
+ assert(r);
+
+ assert(nvme_scan_topology(r, NULL, NULL) == 0);
+
+ assert(nvme_dump_tree(r) == 0);
+ printf("\n");
+
+ nvme_free_tree(r);
+}