Author: tridge
Date: 2007-05-20 10:21:14 +0000 (Sun, 20 May 2007)
New Revision: 23021

WebSVN: 
http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=23021

Log:

test some boundary conditions for idtree, after I saw some suspicious
behaviour

Modified:
   branches/SAMBA_4_0/source/lib/util/tests/idtree.c


Changeset:
Modified: branches/SAMBA_4_0/source/lib/util/tests/idtree.c
===================================================================
--- branches/SAMBA_4_0/source/lib/util/tests/idtree.c   2007-05-20 09:44:03 UTC 
(rev 23020)
+++ branches/SAMBA_4_0/source/lib/util/tests/idtree.c   2007-05-20 10:21:14 UTC 
(rev 23021)
@@ -26,7 +26,7 @@
 static bool torture_local_idtree_simple(struct torture_context *tctx)
 {
        struct idr_context *idr;
-       int i;
+       int i, ret;
        int *ids;
        int *present;
        extern int torture_numops;
@@ -92,6 +92,23 @@
                }
        }
 
+       /* now test some limits */
+       for (i=0;i<25000;i++) {
+               ret = idr_get_new_above(idr, &ids[0], random() % 25000, 
0x10000-3);
+               torture_assert(tctx, ret != -1, "idr_get_new_above failed");
+       }
+
+       ret = idr_get_new_above(idr, &ids[0], 0x10000-2, 0x10000);
+       torture_assert_int_equal(tctx, ret, 0x10000-2, "idr_get_new_above 
failed");
+       ret = idr_get_new_above(idr, &ids[0], 0x10000-1, 0x10000);
+       torture_assert_int_equal(tctx, ret, 0x10000-1, "idr_get_new_above 
failed");
+       ret = idr_get_new_above(idr, &ids[0], 0x10000, 0x10000);
+       torture_assert_int_equal(tctx, ret, 0x10000, "idr_get_new_above 
failed");
+       ret = idr_get_new_above(idr, &ids[0], 0x10000+1, 0x10000);
+       torture_assert_int_equal(tctx, ret, -1, "idr_get_new_above succeeded 
above limit");
+       ret = idr_get_new_above(idr, &ids[0], 0x10000+2, 0x10000);
+       torture_assert_int_equal(tctx, ret, -1, "idr_get_new_above succeeded 
above limit");
+
        torture_comment(tctx, "cleaned up\n");
        return true;
 }

Reply via email to