Whamcloud - gitweb
LU-6245 tests: remove libcfs.h from test applications
[fs/lustre-release.git] / lustre / tests / it_test.c
index dae233b..a31e0b3 100644 (file)
@@ -1,12 +1,50 @@
-/* vi:set ts=8 sw=8 expandtab: */
-/* Unit test tool for interval tree.
- * Written by jay <jxiong@clusterfs.com> 
+/*
+ * GPL HEADER START
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 only,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License version 2 for more details (a copy is included
+ * in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License
+ * version 2 along with this program; If not, see
+ * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ *
+ * GPL HEADER END
  */
+/*
+ * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Use is subject to license terms.
+ */
+/*
+ * This file is part of Lustre, http://www.lustre.org/
+ * Lustre is a trademark of Sun Microsystems, Inc.
+ *
+ * lustre/tests/it_test.c
+ *
+ * Unit test tool for interval tree.
+ *
+ * Author: jay <jxiong@clusterfs.com>
+ */
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <time.h>
 #include <sys/time.h>
 
+#define EXPORT_SYMBOL(s)
+
 #include <../ldlm/interval_tree.c>
 
 #define dprintf(fmt, args...) //printf(fmt, ##args)
 } while(0)
 
 #define __F(ext)         (ext)->start, (ext)->end
-#define __S              "[%llx:%llx]"
+#define __S              "["LPX64":"LPX64"]"
 
 #define ALIGN_SIZE       4096
 #define ALIGN_MASK       (~(ALIGN_SIZE - 1))
 
 static struct it_node {
         struct interval_node node;
-        struct list_head list;
+       struct list_head list;
         int hit, valid;
 } *it_array;
 static int it_count;
@@ -45,13 +83,11 @@ static enum interval_iter cb(struct interval_node *n, void *args)
         static int count = 1;
 
         if (node->hit == 1) {
-                dprintf("NODE "__S" has ever been accessed\n",
-                        __F(&n->in_extent));
+                error("A duplicate node "__S" access found\n",
+                       __F(&n->in_extent));
                 return INTERVAL_ITER_CONT;
-                error("duplicate node accessing found\n");
-                return INTERVAL_ITER_STOP;
         }
-        
+
         if (node->valid == 0) {
                 error("A deleted node "__S" being accessed\n",
                        __F(&n->in_extent));
@@ -89,23 +125,23 @@ static int it_test_search(struct interval_node *root)
                 interval_search(root, &ext, cb, NULL);
 
                 dprintf("\nverifing ...");
-        
+
                 /* verify */
                 for (i = 0; i < it_count; i++) {
                         n = &it_array[i];
                         if (n->valid == 0)
                                 continue;
 
-                        if (extent_overlapped(&ext, &n->node.in_extent) && 
+                        if (extent_overlapped(&ext, &n->node.in_extent) &&
                             n->hit == 0)
                                 error("node "__S" overlaps" __S","
-                                      "but never to be hit.\n", 
+                                      "but never to be hit.\n",
                                       __F(&n->node.in_extent),
                                       __F(&ext));
 
-                        if (!extent_overlapped(&ext, &n->node.in_extent) && 
+                        if (!extent_overlapped(&ext, &n->node.in_extent) &&
                             n->hit)
-                                error("node "__S" overlaps" __S", but hit.\n", 
+                                error("node "__S" overlaps" __S", but hit.\n",
                                       __F(&n->node.in_extent),
                                       __F(&ext));
                 }
@@ -206,8 +242,9 @@ static enum interval_iter sanity_cb(struct interval_node *node, void *args)
         }
 
         if (!has) {
-                int count = 1;
+                int count;
 err:
+                count = 1;
                 dprintf("node"__S":%llu Child list:\n",
                         node->in_extent.start,
                         node->in_extent.end,
@@ -245,7 +282,7 @@ err:
         }
         if (nr)
                 error("wrong tree, unbalanced!\n");
-        
+
         return 0;
 }
 
@@ -301,7 +338,7 @@ static int it_test_search_hole(struct interval_node *root)
         return 0;
 }
 
-static int contended_count = 0; 
+static int contended_count = 0;
 #define LOOP_COUNT 1000
 static enum interval_iter perf_cb(struct interval_node *n, void *args)
 {
@@ -316,7 +353,7 @@ static inline long tv_delta(struct timeval *s, struct timeval *e)
         long c = e->tv_sec - s->tv_sec;
         c *= 1000;
         c += (long int)(e->tv_usec - s->tv_usec) / 1000;
-        dprintf("\tStart: %lu:%lu -> End: %lu:%lu\n", 
+        dprintf("\tStart: %lu:%lu -> End: %lu:%lu\n",
                 s->tv_sec, s->tv_usec, e->tv_sec, e->tv_usec);
         return c;
 }
@@ -328,7 +365,7 @@ static int it_test_performance(struct interval_node *root, unsigned long len)
         struct it_node *n;
         struct timeval start, end;
         unsigned long count;
-        
+
         ext.start = (random() % (max_count - len)) & ALIGN_MASK;
         ext.end = (ext.start + len) & ALIGN_MASK;
         if (have_wide_lock) {
@@ -341,7 +378,7 @@ static int it_test_performance(struct interval_node *root, unsigned long len)
         /* list */
         contended_count = 0;
         gettimeofday(&start, NULL);
-        list_for_each_entry(n, &header, list) {
+       list_for_each_entry(n, &header, list) {
                 if (extent_overlapped(&ext, &n->node.in_extent)) {
                         count = LOOP_COUNT;
                         while (count--);
@@ -382,11 +419,11 @@ static struct interval_node *it_test_helper(struct interval_node *root)
                 if (n->valid) {
                         if (!interval_find(root, &n->node.in_extent))
                                 error("Cannot find an existent node\n");
-                        dprintf("Erasing a node "__S"\n", 
+                        dprintf("Erasing a node "__S"\n",
                                 __F(&n->node.in_extent));
                         interval_erase(&n->node, &root);
                         n->valid = 0;
-                        list_del_init(&n->list);
+                       list_del_init(&n->list);
                 } else {
                         __u64 low, high;
                         low = (random() % max_count) & ALIGN_MASK;
@@ -396,10 +433,10 @@ static struct interval_node *it_test_helper(struct interval_node *root)
                         interval_set(&n->node, low, high);
                         while (interval_insert(&n->node, &root))
                                 interval_set(&n->node, low, ++high);
-                        dprintf("Adding a node "__S"\n", 
+                        dprintf("Adding a node "__S"\n",
                                 __F(&n->node.in_extent));
                         n->valid = 1;
-                        list_add(&n->list, &header);
+                       list_add(&n->list, &header);
                 }
         }
 
@@ -436,9 +473,9 @@ static struct interval_node *it_test_init(int count)
                 n->hit = 0;
                 n->valid = 1;
                 if (i == 0)
-                        list_add_tail(&n->list, &header);
+                       list_add_tail(&n->list, &header);
                 else
-                        list_add_tail(&n->list, &it_array[rand()%i].list);
+                       list_add_tail(&n->list, &it_array[rand()%i].list);
         }
 
         return root;