summaryrefslogtreecommitdiff
path: root/libhurd-btree
diff options
context:
space:
mode:
authorneal <neal>2008-02-11 09:58:16 +0000
committerneal <neal>2008-02-11 09:58:16 +0000
commit9356d15df55f7870b9081e70797f9a23e3a687af (patch)
tree7f6c479f9b13d878603b1bdd1dc25c2ff7982575 /libhurd-btree
parent48b2b7f0722dd64ab6af18e55fa1ba324a920adf (diff)
2008-02-11 Neal H. Walfield <neal@gnu.org>
* t-stress.c: New file.
Diffstat (limited to 'libhurd-btree')
-rw-r--r--libhurd-btree/ChangeLog4
-rw-r--r--libhurd-btree/t-stress.c63
2 files changed, 67 insertions, 0 deletions
diff --git a/libhurd-btree/ChangeLog b/libhurd-btree/ChangeLog
index 262e7bb..66a80ae 100644
--- a/libhurd-btree/ChangeLog
+++ b/libhurd-btree/ChangeLog
@@ -1,5 +1,9 @@
2008-02-11 Neal H. Walfield <neal@gnu.org>
+ * t-stress.c: New file.
+
+2008-02-11 Neal H. Walfield <neal@gnu.org>
+
* btree.h (btree_prev): Correctly set NODE's left thread.
2008-02-11 Neal H. Walfield <neal@gnu.org>
diff --git a/libhurd-btree/t-stress.c b/libhurd-btree/t-stress.c
new file mode 100644
index 0000000..07b0b63
--- /dev/null
+++ b/libhurd-btree/t-stress.c
@@ -0,0 +1,63 @@
+#define _GNU_SOURCE
+
+#include <assert.h>
+#ifndef assertx
+#define assertx(__ax_expr, __ax_fmt, ...) \
+ do \
+ { \
+ if (! (__ax_expr)) \
+ printf (__ax_fmt, ##__VA_ARGS__); \
+ assert (__ax_expr); \
+ } \
+ while (0)
+#endif
+
+#include <stdlib.h>
+
+#include "btree.h"
+
+static int
+int_node_compare (const int *a, const int *b)
+{
+ return *a - *b;
+}
+
+struct int_node
+{
+ struct hurd_btree_node node;
+ int key;
+};
+
+BTREE_CLASS(int_node, struct int_node, int, key, node, int_node_compare, false)
+
+int
+main ()
+{
+ hurd_btree_int_node_t root;
+ hurd_btree_int_node_tree_init (&root);
+
+ int total = 0;
+ while (1)
+ {
+ if (total % 1000 == 0)
+ printf ("Added %d\n", total);
+ total ++;
+
+ struct int_node *node = node = malloc (sizeof (struct int_node));
+ assert (node);
+
+ node->key = rand ();
+
+ struct int_node *ret = hurd_btree_int_node_insert (&root, node);
+ if (ret)
+ {
+ hurd_btree_int_node_detach (&root, ret);
+ free (ret);
+
+ ret = hurd_btree_int_node_insert (&root, node);
+ assert (! ret);
+ }
+ }
+
+ return 0;
+}