diff options
author | Michael Adam <obnox@samba.org> | 2010-12-21 15:29:46 +0100 |
---|---|---|
committer | Michael Adam <obnox@samba.org> | 2011-03-14 13:35:50 +0100 |
commit | 670330b331366e533f187f4947a71f2985b1ca91 (patch) | |
tree | 408392d2b589321f37380f592a39f1f5bcb299c0 /ctdb/tests/src | |
parent | a6b13b21c1e52ad49b2629d2610bef59858b9fd9 (diff) | |
download | samba-670330b331366e533f187f4947a71f2985b1ca91.tar.gz samba-670330b331366e533f187f4947a71f2985b1ca91.tar.xz samba-670330b331366e533f187f4947a71f2985b1ca91.zip |
test: send SCHEDULE_FOR_DELETION control from randrec test.
(This used to be ctdb commit 30aa55b3efc6fbd4078f93da386b6aeb337c1a0c)
Diffstat (limited to 'ctdb/tests/src')
-rw-r--r-- | ctdb/tests/src/ctdb_randrec.c | 43 |
1 files changed, 42 insertions, 1 deletions
diff --git a/ctdb/tests/src/ctdb_randrec.c b/ctdb/tests/src/ctdb_randrec.c index 3a2622b4d8..5b7eef83d2 100644 --- a/ctdb/tests/src/ctdb_randrec.c +++ b/ctdb/tests/src/ctdb_randrec.c @@ -23,6 +23,7 @@ #include "system/filesys.h" #include "popt.h" #include "cmdline.h" +#include "ctdb_private.h" #include <sys/time.h> #include <time.h> @@ -83,10 +84,50 @@ static void store_records(struct ctdb_context *ctdb, struct event_context *ev) } ret = ctdb_record_store(h, data); - talloc_free(h); if (ret != 0) { printf("Failed to store record\n"); } + + if (data.dptr == NULL && data.dsize == 0) { + struct ctdb_control_schedule_for_deletion *dd; + TDB_DATA indata; + int32_t status; + + indata.dsize = offsetof(struct ctdb_control_schedule_for_deletion, key) + key.dsize; + indata.dptr = talloc_zero_array(ctdb, uint8_t, indata.dsize); + if (indata.dptr == NULL) { + printf("out of memory\n"); + exit(1); + } + dd = (struct ctdb_control_schedule_for_deletion *)(void *)indata.dptr; + dd->db_id = ctdb_db->db_id; + dd->hdr = *ctdb_header_from_record_handle(h); + dd->keylen = key.dsize; + memcpy(dd->key, key.dptr, key.dsize); + + ret = ctdb_control(ctdb, + CTDB_CURRENT_NODE, + ctdb_db->db_id, + CTDB_CONTROL_SCHEDULE_FOR_DELETION, + 0, /* flags */ + indata, + NULL, /* mem_ctx */ + NULL, /* outdata */ + &status, + NULL, /* timeout : NULL == wait forever */ + NULL); /* error message */ + + talloc_free(indata.dptr); + + if (ret != 0 || status != 0) { + DEBUG(DEBUG_ERR, (__location__ " Error sending " + "SCHEDULE_FOR_DELETION " + "control.\n")); + } + } + + talloc_free(h); + if (i % 1000 == 0) { printf("%7.0f recs/second %u total\r", 1000.0 / end_timer(), i); fflush(stdout); |