From 5cbf74097b08507fe33bb09cef346237d8199374 Mon Sep 17 00:00:00 2001 From: Charles Manning Date: Fri, 9 Dec 2022 10:25:20 +1300 Subject: [PATCH] Add test for reldev functions Used to test we don't get NULL dereferences and as a test case for the next commit. Signed-off-by: Charles Manning --- direct/test-framework/basic-tests/Makefile | 10 +- .../test-framework/basic-tests/reldevtest.c | 95 +++++++++++++++++++ 2 files changed, 102 insertions(+), 3 deletions(-) create mode 100644 direct/test-framework/basic-tests/reldevtest.c diff --git a/direct/test-framework/basic-tests/Makefile b/direct/test-framework/basic-tests/Makefile index 3535381..7d219ef 100644 --- a/direct/test-framework/basic-tests/Makefile +++ b/direct/test-framework/basic-tests/Makefile @@ -21,16 +21,20 @@ 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 index 0000000..0661be6 --- /dev/null +++ b/direct/test-framework/basic-tests/reldevtest.c @@ -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 + * + * 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 +#include +#include +#include +#include +#include + + +#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; +} -- 2.30.2