yaffs Moving timothy_tests and updating the makefiles to work with the new test-framework
[yaffs2.git] / direct / test-framework / timothy_tests / handle_tests / handle_test.c
diff --git a/direct/test-framework/timothy_tests/handle_tests/handle_test.c b/direct/test-framework/timothy_tests/handle_tests/handle_test.c
new file mode 100644 (file)
index 0000000..4d6e33d
--- /dev/null
@@ -0,0 +1,120 @@
+/*
+ * YAFFS: Yet another FFS. A NAND-flash specific file system.
+ *
+ * Copyright (C) 2002-2011 Aleph One Ltd.
+ *   for Toby Churchill Ltd and Brightstar Engineering
+ *
+ * Created by Timothy Manning <timothy@yaffs.net>
+ *
+ * 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 "handle_test.h"
+
+int random_seed;
+int simulate_power_failure = 0;
+
+int main()
+{
+       
+       int test_batch = 1000000;
+       int output =0;
+       unsigned int total_number_of_tests_run=0;
+       yaffs_start_up();
+       yaffs_mount("yaffs2");
+
+       printf("running tests\n");
+
+       output=dup_test();
+       printf("dup test: %d\n ",output);
+
+       while (1){
+               output = open_close_handle_test(test_batch);
+               if (output>=0){
+                       total_number_of_tests_run ++;
+               } else {
+                       get_error();
+                       return -1;
+               }
+               printf("total number of tests = %d\n",(total_number_of_tests_run*test_batch));
+       }
+
+
+       return 0;
+}
+int dup_test(void){
+       int handle = -1;
+       int handle2 = -1;
+       int output =-1;
+
+       handle =open_handle();
+       if (handle<0){
+               printf("error: failed to open handle\n");
+               return -1;
+       }
+       handle2=yaffs_dup(handle);
+       if (handle2<0){
+               printf("error: failed to open handle2\n");
+               return -1;
+       }
+       
+       output=yaffs_lseek(handle,20,SEEK_SET);
+       if (output >= 0) {
+               output = yaffs_lseek(handle,0,SEEK_CUR);
+               if (output = 20){
+                       printf("dup is working\n");
+                       return 1;
+               } else if (output <0){
+                       printf("failed to lseek the second time\n");
+                       return -1;
+               } else {
+                       printf("lseek position is diffrent than expected\n");
+                       return -1;
+               }
+       } else {
+               printf("failed to lseek the first time\n");
+               return -1;
+       }
+
+}
+
+int open_close_handle_test(int num_of_tests)
+{
+       int handle_number=open_handle();
+       int handle=0;
+       int x =0;
+       int output=0;
+       yaffs_close(handle_number);
+       for (x=0;x<num_of_tests;x++){
+               handle=open_handle();
+               if (handle != handle_number){
+                       printf("handle number changed\n");
+                       printf("test number= %d\n",x);
+                       printf("expected number = %d\n",handle_number);
+                       printf("handle_number = %d\n",handle);
+                       return -1;
+               }
+               output=yaffs_close(handle);
+               if (output <0){
+                       printf("failed to close file\n");
+                       return -1;
+               }
+       }
+       return 1;
+}
+
+void get_error(void)
+{
+       int error_code=0;
+       error_code=yaffs_get_error();
+       printf("yaffs_error code %d\n",error_code);
+       printf("error is : %s\n",yaffs_error_to_str(error_code));
+}
+
+int open_handle(void)
+{
+       return yaffs_open(FILE_PATH,O_CREAT | O_RDWR,S_IREAD | S_IWRITE);
+}
+