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; }