Add test for reldev functions
authorCharles Manning <cdhmanning@gmail.com>
Thu, 8 Dec 2022 21:25:20 +0000 (10:25 +1300)
committerCharles Manning <cdhmanning@gmail.com>
Thu, 8 Dec 2022 21:25:20 +0000 (10:25 +1300)
Used to test we don't get NULL dereferences and as a test case for the next commit.

Signed-off-by: Charles Manning <cdhmanning@gmail.com>
direct/test-framework/basic-tests/Makefile
direct/test-framework/basic-tests/reldevtest.c [new file with mode: 0644]

index 35353811a4a61583caddc4b0ffbf40400a722e7e..7d219ef5a319c53ab385baf26906b1e75f3c697a 100644 (file)
 YDI_DIR = ../../
 YDI_FRAMEWORK_DIR = ../
 
-TARGETS = directtest2k
+TARGETS = directtest2k reldevtest
 
 all: $(TARGETS)
 
 DIRECTTESTOBJS = $(COMMONTESTOBJS) dtest.o
+RELDEVOBJS =  $(COMMONTESTOBJS) reldevtest.o
 
-ALL_UNSORTED_OBJS += $(DIRECTTESTOBJS)
+ALL_UNSORTED_OBJS += $(DIRECTTESTOBJS) $(RELDEVOBJS)
 
 include ../FrameworkRules.mk
 
-directtest2k: $(FRAMEWORK_SOURCES) $(DIRECTTESTOBJS)
+directtest2k: $(FRAMEWORK_SOURCES) $(DIRECTTESTOBJS) Makefile
        gcc -o $@ $(DIRECTTESTOBJS) -lpthread
 
+reldevtest: $(FRAMEWORK_SOURCES) $(RELDEVOBJS) Makefile
+       gcc -o $@ $(RELDEVOBJS) -lpthread
+
diff --git a/direct/test-framework/basic-tests/reldevtest.c b/direct/test-framework/basic-tests/reldevtest.c
new file mode 100644 (file)
index 0000000..0661be6
--- /dev/null
@@ -0,0 +1,95 @@
+/*
+ * YAFFS: Yet another FFS. A NAND-flash specific file system.
+ *
+ * Copyright (C) 2002-2018 Aleph One Ltd.
+ *
+ * Created by Charles Manning <charles@aleph1.co.uk>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <time.h>
+#include <ctype.h>
+
+
+#include "yaffsfs.h"
+
+#include "yaffs_guts.h" /* Only for dumping device innards */
+#include "yaffs_endian.h" /*For testing the swap_u64 macro */
+
+extern int yaffs_trace_mask;
+
+
+
+int call_all_reldev(struct yaffs_dev *dev)
+{
+       struct yaffs_stat buf;
+       struct yaffs_utimbuf utime;
+       unsigned char xbuffer[20];
+       char cbuffer[20];
+
+       yaffs_mount_reldev(dev);
+       yaffs_open_sharing_reldev(dev, "foo", 0, 0, 0);
+       yaffs_open_reldev(dev, "foo", 0, 0);
+       yaffs_truncate_reldev(dev, "foo", 99);
+       yaffs_unlink_reldev(dev, "foo");
+       yaffs_rename_reldev(dev, "foo", "foo_new");
+       yaffs_stat_reldev(dev, "foo", &buf);
+       yaffs_lstat_reldev(dev, "foo", &buf);
+       yaffs_utime_reldev(dev, "foo", &utime);
+       yaffs_setxattr_reldev(dev, "foo", "name", xbuffer, 20, 0);
+       yaffs_lsetxattr_reldev(dev, "foo", "name", xbuffer, 20, 0);
+       yaffs_getxattr_reldev(dev, "foo", "name", xbuffer, 20);
+       yaffs_lgetxattr_reldev(dev, "foo", "name", xbuffer, 20);
+
+       yaffs_listxattr_reldev(dev, "foo", cbuffer, 20);
+       yaffs_llistxattr_reldev(dev, "foo", cbuffer, 20);
+       yaffs_removexattr_reldev(dev, "foo", "name");
+       yaffs_lremovexattr_reldev(dev, "foo", "name");
+
+       yaffs_access_reldev(dev, "foo", 0);
+       yaffs_chmod_reldev(dev, "foo", 0);
+       yaffs_mkdir_reldev(dev, "foo", 0);
+       yaffs_rmdir_reldev(dev, "foo");
+
+
+       yaffs_opendir_reldev(dev, "foo");
+
+       //yaffs_symlink_reldev(dev, "foo", "foolink");
+       //yaffs_readlink_reldev(dev, "foo", cbuffer, 20);
+       //yaffs_link_reldev(dev, "foo", "foo_new");
+
+       yaffs_mknod_reldev(dev, "foo", 0, 0);
+       yaffs_freespace_reldev(dev);
+       yaffs_totalspace_reldev(dev);
+
+       yaffs_sync_reldev(dev);
+       yaffs_sync_files_reldev(dev);
+
+       yaffs_unmount_reldev(dev);
+       yaffs_unmount2_reldev(dev, 1);
+       yaffs_remount_reldev(dev, 1, 1);
+
+       return 0;
+}
+
+
+int random_seed;
+int simulate_power_failure;
+
+int main(int argc, char *argv[])
+{
+       (void) argc;
+       (void) argv;
+
+       call_all_reldev(NULL);
+
+       return 0;
+}