ctdb-protocol: Fix marshalling for ctdb_script_list
[vlendec/samba-autobuild/.git] / ctdb / tests / src / protocol_types_test.c
index 876502fb9f4c38651f68c7b6013a1601364b7358..19f167e41a90196c1f7a7716003f7adc2e013bb8 100644 (file)
 */
 
 #include "replace.h"
-#include "system/network.h"
 #include "system/filesys.h"
 
 #include <assert.h>
 
 #include "protocol/protocol_basic.c"
 #include "protocol/protocol_types.c"
-#include "protocol/protocol_header.c"
-#include "protocol/protocol_call.c"
-#include "protocol/protocol_control.c"
-#include "protocol/protocol_event.c"
-#include "protocol/protocol_message.c"
-#include "protocol/protocol_packet.c"
 
-uint8_t BUFFER[1024*1024];
+#include "tests/src/protocol_common.h"
 
-/*
- * Functions to generation random data
- */
-
-static int rand_int(int max)
-{
-       return random() % max;
-}
-
-static uint8_t rand8(void)
-{
-       uint8_t val = rand_int(256) & 0xff;
-       return val;
-}
-
-static int32_t rand32i(void)
-{
-       return INT_MIN + random();
-}
-
-static uint32_t rand32(void)
-{
-       return random();
-}
-
-static uint64_t rand64(void)
-{
-       uint64_t t = random();
-       t = (t << 32) | random();
-       return t;
-}
-
-static double rand_double(void)
-{
-       return 1.0 / rand64();
-}
-
-static void fill_buffer(void *p, size_t len)
-{
-       int i;
-       uint8_t *ptr = p;
-
-       for (i=0; i<len; i++) {
-               ptr[i] = rand8();
-       }
-}
-
-static void verify_buffer(void *p1, void *p2, size_t len)
-{
-       if (len > 0) {
-               assert(memcmp(p1, p2, len) == 0);
-       }
-}
-
-/*
- * Functions to fill and verify data types
- */
-
-static void fill_tdb_data_nonnull(TALLOC_CTX *mem_ctx, TDB_DATA *p)
-{
-       p->dsize = rand_int(1024) + 1;
-       p->dptr = talloc_array(mem_ctx, uint8_t, p->dsize);
-       assert(p->dptr != NULL);
-       fill_buffer(p->dptr, p->dsize);
-}
-
-static void fill_tdb_data(TALLOC_CTX *mem_ctx, TDB_DATA *p)
-{
-       if (rand_int(5) == 0) {
-               p->dsize = 0;
-               p->dptr = NULL;
-       } else {
-               fill_tdb_data_nonnull(mem_ctx, p);
-       }
-}
-
-static void verify_tdb_data(TDB_DATA *p1, TDB_DATA *p2)
-{
-       assert(p1->dsize == p2->dsize);
-       verify_buffer(p1->dptr, p2->dptr, p1->dsize);
-}
-
-static void fill_ctdb_statistics(TALLOC_CTX *mem_ctx, struct ctdb_statistics *p)
-{
-       fill_buffer((uint8_t *)p, sizeof(struct ctdb_statistics));
-}
-
-static void verify_ctdb_statistics(struct ctdb_statistics *p1,
-                                  struct ctdb_statistics *p2)
-{
-       verify_buffer(p1, p2, sizeof(struct ctdb_statistics));
-}
-
-static void fill_ctdb_vnn_map(TALLOC_CTX *mem_ctx, struct ctdb_vnn_map *p)
-{
-       int i;
-
-       p->generation = rand32();
-       p->size = rand_int(20);
-       if (p->size > 0) {
-               p->map = talloc_array(mem_ctx, uint32_t, p->size);
-               assert(p->map != NULL);
-
-               for (i=0; i<p->size; i++) {
-                       p->map[i] = rand32();
-               }
-       } else {
-               p->map = NULL;
-       }
-}
-
-static void verify_ctdb_vnn_map(struct ctdb_vnn_map *p1,
-                               struct ctdb_vnn_map *p2)
-{
-       int i;
-
-       assert(p1->generation == p2->generation);
-       assert(p1->size == p2->size);
-       for (i=0; i<p1->size; i++) {
-               assert(p1->map[i] == p2->map[i]);
-       }
-}
-
-static void fill_ctdb_dbid(TALLOC_CTX *mem_ctx, struct ctdb_dbid *p)
-{
-       p->db_id = rand32();
-       p->flags = rand8();
-}
-
-static void verify_ctdb_dbid(struct ctdb_dbid *p1, struct ctdb_dbid *p2)
-{
-       assert(p1->db_id == p2->db_id);
-       assert(p1->flags == p2->flags);
-}
-
-static void fill_ctdb_dbid_map(TALLOC_CTX *mem_ctx, struct ctdb_dbid_map *p)
-{
-       int i;
-
-       p->num = rand_int(40);
-       if (p->num > 0) {
-               p->dbs = talloc_array(mem_ctx, struct ctdb_dbid, p->num);
-               assert(p->dbs != NULL);
-               for (i=0; i<p->num; i++) {
-                       fill_ctdb_dbid(mem_ctx, &p->dbs[i]);
-               }
-       } else {
-               p->dbs = NULL;
-       }
-}
-
-static void verify_ctdb_dbid_map(struct ctdb_dbid_map *p1,
-                                struct ctdb_dbid_map *p2)
-{
-       int i;
-
-       assert(p1->num == p2->num);
-       for (i=0; i<p1->num; i++) {
-               verify_ctdb_dbid(&p1->dbs[i], &p2->dbs[i]);
-       }
-}
-
-static void fill_ctdb_pulldb(TALLOC_CTX *mem_ctx, struct ctdb_pulldb *p)
-{
-       p->db_id = rand32();
-       p->lmaster = rand32();
-}
-
-static void verify_ctdb_pulldb(struct ctdb_pulldb *p1, struct ctdb_pulldb *p2)
-{
-       assert(p1->db_id == p2->db_id);
-       assert(p1->lmaster == p2->lmaster);
-}
-
-static void fill_ctdb_pulldb_ext(TALLOC_CTX *mem_ctx,
-                                struct ctdb_pulldb_ext *p)
-{
-       p->db_id = rand32();
-       p->lmaster = rand32();
-       p->srvid = rand64();
-}
-
-static void verify_ctdb_pulldb_ext(struct ctdb_pulldb_ext *p1,
-                                  struct ctdb_pulldb_ext *p2)
-{
-       assert(p1->db_id == p2->db_id);
-       assert(p1->lmaster == p2->lmaster);
-       assert(p1->srvid == p2->srvid);
-}
-
-static void fill_ctdb_ltdb_header(TALLOC_CTX *mem_ctx,
-                                 struct ctdb_ltdb_header *p)
-{
-       p->rsn = rand64();
-       p->dmaster = rand32();
-       p->flags = rand32();
-}
-
-static void verify_ctdb_ltdb_header(struct ctdb_ltdb_header *p1,
-                                   struct ctdb_ltdb_header *p2)
-{
-       assert(p1->rsn == p2->rsn);
-       assert(p1->dmaster == p2->dmaster);
-       assert(p1->flags == p2->flags);
-}
-
-static void fill_ctdb_rec_data(TALLOC_CTX *mem_ctx, struct ctdb_rec_data *p)
-{
-       p->reqid = rand32();
-       if (p->reqid % 5 == 0) {
-               p->header = talloc(mem_ctx, struct ctdb_ltdb_header);
-               assert(p->header != NULL);
-               fill_ctdb_ltdb_header(mem_ctx, p->header);
-       } else {
-               p->header = NULL;
-       }
-       fill_tdb_data_nonnull(mem_ctx, &p->key);
-       fill_tdb_data(mem_ctx, &p->data);
-}
-
-static void verify_ctdb_rec_data(struct ctdb_rec_data *p1,
-                                struct ctdb_rec_data *p2)
-{
-       struct ctdb_ltdb_header header;
-
-       assert(p1->reqid == p2->reqid);
-       if (p1->header != NULL) {
-               assert(ctdb_ltdb_header_extract(&p2->data, &header) == 0);
-               verify_ctdb_ltdb_header(p1->header, &header);
-       }
-       verify_tdb_data(&p1->key, &p2->key);
-       verify_tdb_data(&p1->data, &p2->data);
-}
-
-static void fill_ctdb_rec_buffer(TALLOC_CTX *mem_ctx, struct ctdb_rec_buffer *p)
-{
-       struct ctdb_rec_data rec;
-       int ret, i;
-       int count;
-
-       p->db_id = rand32();
-       p->count = 0;
-       p->buf = NULL;
-       p->buflen = 0;
-
-       count = rand_int(100);
-       if (count > 0) {
-               for (i=0; i<count; i++) {
-                       fill_ctdb_rec_data(mem_ctx, &rec);
-                       ret = ctdb_rec_buffer_add(mem_ctx, p, rec.reqid,
-                                                 rec.header,
-                                                 rec.key, rec.data);
-                       assert(ret == 0);
-               }
-       }
-}
-
-static void verify_ctdb_rec_buffer(struct ctdb_rec_buffer *p1,
-                                  struct ctdb_rec_buffer *p2)
-{
-       assert(p1->db_id == p2->db_id);
-       assert(p1->count == p2->count);
-       assert(p1->buflen == p2->buflen);
-       verify_buffer(p1->buf, p2->buf, p1->buflen);
-}
-
-static void fill_ctdb_traverse_start(TALLOC_CTX *mem_ctx,
-                                    struct ctdb_traverse_start *p)
-{
-       p->db_id = rand32();
-       p->reqid = rand32();
-       p->srvid = rand64();
-}
-
-static void verify_ctdb_traverse_start(struct ctdb_traverse_start *p1,
-                                      struct ctdb_traverse_start *p2)
-{
-       assert(p1->db_id == p2->db_id);
-       assert(p1->reqid == p2->reqid);
-       assert(p1->srvid == p2->srvid);
-}
-
-static void fill_ctdb_traverse_all(TALLOC_CTX *mem_ctx,
-                                  struct ctdb_traverse_all *p)
-{
-       p->db_id = rand32();
-       p->reqid = rand32();
-       p->pnn = rand32();
-       p->client_reqid = rand32();
-       p->srvid = rand64();
-}
-
-static void verify_ctdb_traverse_all(struct ctdb_traverse_all *p1,
-                                    struct ctdb_traverse_all *p2)
-{
-       assert(p1->db_id == p2->db_id);
-       assert(p1->reqid == p2->reqid);
-       assert(p1->pnn == p2->pnn);
-       assert(p1->client_reqid == p2->client_reqid);
-       assert(p1->srvid == p2->srvid);
-}
-
-static void fill_ctdb_traverse_start_ext(TALLOC_CTX *mem_ctx,
-                                        struct ctdb_traverse_start_ext *p)
-{
-       p->db_id = rand32();
-       p->reqid = rand32();
-       p->srvid = rand64();
-       p->withemptyrecords = rand_int(2);
-}
-
-static void verify_ctdb_traverse_start_ext(struct ctdb_traverse_start_ext *p1,
-                                          struct ctdb_traverse_start_ext *p2)
-{
-       assert(p1->db_id == p2->db_id);
-       assert(p1->reqid == p2->reqid);
-       assert(p1->srvid == p2->srvid);
-       assert(p1->withemptyrecords == p2->withemptyrecords);
-}
-
-static void fill_ctdb_traverse_all_ext(TALLOC_CTX *mem_ctx,
-                                      struct ctdb_traverse_all_ext *p)
-{
-       p->db_id = rand32();
-       p->reqid = rand32();
-       p->pnn = rand32();
-       p->client_reqid = rand32();
-       p->srvid = rand64();
-       p->withemptyrecords = rand_int(2);
-}
-
-static void verify_ctdb_traverse_all_ext(struct ctdb_traverse_all_ext *p1,
-                                        struct ctdb_traverse_all_ext *p2)
-{
-       assert(p1->db_id == p2->db_id);
-       assert(p1->reqid == p2->reqid);
-       assert(p1->pnn == p2->pnn);
-       assert(p1->client_reqid == p2->client_reqid);
-       assert(p1->srvid == p2->srvid);
-       assert(p1->withemptyrecords == p2->withemptyrecords);
-}
-
-static void fill_ctdb_sock_addr(TALLOC_CTX *mem_ctx, ctdb_sock_addr *p)
-{
-       if (rand_int(2) == 0) {
-               p->ip.sin_family = AF_INET;
-               p->ip.sin_port = rand_int(65535);
-               fill_buffer(&p->ip.sin_addr, sizeof(struct in_addr));
-       } else {
-               p->ip6.sin6_family = AF_INET6;
-               p->ip6.sin6_port = rand_int(65535);
-               fill_buffer(&p->ip6.sin6_addr, sizeof(struct in6_addr));
-       }
-}
-
-static void verify_ctdb_sock_addr(ctdb_sock_addr *p1, ctdb_sock_addr *p2)
-{
-       assert(p1->sa.sa_family == p2->sa.sa_family);
-       if (p1->sa.sa_family == AF_INET) {
-               assert(p1->ip.sin_port == p2->ip.sin_port);
-               verify_buffer(&p1->ip.sin_addr, &p2->ip.sin_addr,
-                                  sizeof(struct in_addr));
-       } else {
-               assert(p1->ip6.sin6_port == p2->ip6.sin6_port);
-               verify_buffer(&p1->ip6.sin6_addr, &p2->ip6.sin6_addr,
-                                  sizeof(struct in6_addr));
-       }
-}
-
-static void fill_ctdb_connection(TALLOC_CTX *mem_ctx,
-                                struct ctdb_connection *p)
-{
-       fill_ctdb_sock_addr(mem_ctx, &p->src);
-       fill_ctdb_sock_addr(mem_ctx, &p->dst);
-}
-
-static void verify_ctdb_connection(struct ctdb_connection *p1,
-                                  struct ctdb_connection *p2)
-{
-       verify_ctdb_sock_addr(&p1->src, &p2->src);
-       verify_ctdb_sock_addr(&p1->dst, &p2->dst);
-}
-
-static void fill_ctdb_string(TALLOC_CTX *mem_ctx, const char **out)
-{
-       char *p;
-       int len, i;
-
-       len = rand_int(1024) + 1;
-       p = talloc_size(mem_ctx, len+1);
-       assert(p != NULL);
-
-       for (i=0; i<len; i++) {
-               p[i] = 'A' + rand_int(26);
-       }
-       p[len] = '\0';
-       *out = p;
-}
-
-static void verify_ctdb_string(const char *p1, const char *p2)
-{
-       if (p1 == NULL || p2 == NULL) {
-               assert(p1 == p2);
-       } else {
-               assert(strlen(p1) == strlen(p2));
-               assert(strcmp(p1, p2) == 0);
-       }
-}
-
-static void fill_ctdb_tunable(TALLOC_CTX *mem_ctx, struct ctdb_tunable *p)
-{
-       fill_ctdb_string(mem_ctx, discard_const(&p->name));
-       p->value = rand32();
-}
-
-static void verify_ctdb_tunable(struct ctdb_tunable *p1,
-                               struct ctdb_tunable *p2)
-{
-       verify_ctdb_string(discard_const(p1->name), discard_const(p2->name));
-       assert(p1->value == p2->value);
-}
-
-static void fill_ctdb_node_flag_change(TALLOC_CTX *mem_ctx,
-                                      struct ctdb_node_flag_change *p)
-{
-       p->pnn = rand32();
-       p->new_flags = rand32();
-       p->old_flags = rand32();
-}
-
-static void verify_ctdb_node_flag_change(struct ctdb_node_flag_change *p1,
-                                        struct ctdb_node_flag_change *p2)
-{
-       assert(p1->pnn == p2->pnn);
-       assert(p1->new_flags == p2->new_flags);
-       assert(p1->old_flags == p2->old_flags);
-}
-
-static void fill_ctdb_var_list(TALLOC_CTX *mem_ctx,
-                              struct ctdb_var_list *p)
-{
-       int i;
-
-       p->count = rand_int(100) + 1;
-       p->var = talloc_array(mem_ctx, const char *, p->count);
-       for (i=0; i<p->count; i++) {
-               fill_ctdb_string(p->var, discard_const(&p->var[i]));
-       }
-}
-
-static void verify_ctdb_var_list(struct ctdb_var_list *p1,
-                                struct ctdb_var_list *p2)
-{
-       int i;
-
-       assert(p1->count == p2->count);
-       for (i=0; i<p1->count; i++) {
-               verify_ctdb_string(discard_const(p1->var[i]),
-                                  discard_const(p2->var[i]));
-       }
-}
-
-static void fill_ctdb_tunable_list(TALLOC_CTX *mem_ctx,
-                                  struct ctdb_tunable_list *p)
-{
-       fill_buffer(p, sizeof(struct ctdb_tunable_list));
-}
-
-static void verify_ctdb_tunable_list(struct ctdb_tunable_list *p1,
-                                    struct ctdb_tunable_list *p2)
-{
-       verify_buffer(p1, p2, sizeof(struct ctdb_tunable_list));
-}
-
-static void fill_ctdb_tickle_list(TALLOC_CTX *mem_ctx,
-                                 struct ctdb_tickle_list *p)
-{
-       int i;
-
-       fill_ctdb_sock_addr(mem_ctx, &p->addr);
-       p->num = rand_int(1000);
-       if (p->num > 0) {
-               p->conn = talloc_array(mem_ctx, struct ctdb_connection, p->num);
-               assert(p->conn != NULL);
-               for (i=0; i<p->num; i++) {
-                       fill_ctdb_connection(mem_ctx, &p->conn[i]);
-               }
-       } else {
-               p->conn = NULL;
-       }
-}
-
-static void verify_ctdb_tickle_list(struct ctdb_tickle_list *p1,
-                                   struct ctdb_tickle_list *p2)
-{
-       int i;
-
-       verify_ctdb_sock_addr(&p1->addr, &p2->addr);
-       assert(p1->num == p2->num);
-       for (i=0; i<p1->num; i++) {
-               verify_ctdb_connection(&p1->conn[i], &p2->conn[i]);
-       }
-}
-
-static void fill_ctdb_addr_info(TALLOC_CTX *mem_ctx, struct ctdb_addr_info *p)
-{
-       fill_ctdb_sock_addr(mem_ctx, &p->addr);
-       p->mask = rand_int(33);
-       if (rand_int(2) == 0) {
-               p->iface = NULL;
-       } else {
-               fill_ctdb_string(mem_ctx, &p->iface);
-       }
-}
-
-static void verify_ctdb_addr_info(struct ctdb_addr_info *p1,
-                                 struct ctdb_addr_info *p2)
-{
-       verify_ctdb_sock_addr(&p1->addr, &p2->addr);
-       assert(p1->mask == p2->mask);
-       verify_ctdb_string(p1->iface, p2->iface);
-}
-
-static void fill_ctdb_transdb(TALLOC_CTX *mem_ctx, struct ctdb_transdb *p)
-{
-       p->db_id = rand32();
-       p->tid = rand32();
-}
-
-static void verify_ctdb_transdb(struct ctdb_transdb *p1, struct ctdb_transdb *p2)
-{
-       assert(p1->db_id == p2->db_id);
-       assert(p1->tid == p2->tid);
-}
-
-static void fill_ctdb_uptime(TALLOC_CTX *mem_ctx, struct ctdb_uptime *p)
-{
-       fill_buffer(p, sizeof(struct ctdb_uptime));
-}
-
-static void verify_ctdb_uptime(struct ctdb_uptime *p1, struct ctdb_uptime *p2)
-{
-       verify_buffer(p1, p2, sizeof(struct ctdb_uptime));
-}
-
-static void fill_ctdb_public_ip(TALLOC_CTX *mem_ctx, struct ctdb_public_ip *p)
-{
-       p->pnn = rand32();
-       fill_ctdb_sock_addr(mem_ctx, &p->addr);
-}
-
-static void verify_ctdb_public_ip(struct ctdb_public_ip *p1,
-                                 struct ctdb_public_ip *p2)
-{
-       assert(p1->pnn == p2->pnn);
-       verify_ctdb_sock_addr(&p1->addr, &p2->addr);
-}
-
-static void fill_ctdb_public_ip_list(TALLOC_CTX *mem_ctx,
-                                    struct ctdb_public_ip_list *p)
-{
-       int i;
-
-       p->num = rand_int(32);
-       if (p->num > 0) {
-               p->ip = talloc_array(mem_ctx, struct ctdb_public_ip, p->num);
-               assert(p->ip != NULL);
-               for (i=0; i<p->num; i++) {
-                       fill_ctdb_public_ip(mem_ctx, &p->ip[i]);
-               }
-       } else {
-               p->ip = NULL;
-       }
-}
-
-static void verify_ctdb_public_ip_list(struct ctdb_public_ip_list *p1,
-                                      struct ctdb_public_ip_list *p2)
-{
-       int i;
-
-       assert(p1->num == p2->num);
-       for (i=0; i<p1->num; i++) {
-               verify_ctdb_public_ip(&p1->ip[i], &p2->ip[i]);
-       }
-}
-
-static void fill_ctdb_node_and_flags(TALLOC_CTX *mem_ctx,
-                                    struct ctdb_node_and_flags *p)
-{
-       p->pnn = rand32();
-       p->flags = rand32();
-       fill_ctdb_sock_addr(mem_ctx, &p->addr);
-}
-
-static void verify_ctdb_node_and_flags(struct ctdb_node_and_flags *p1,
-                                      struct ctdb_node_and_flags *p2)
-{
-       assert(p1->pnn == p2->pnn);
-       assert(p1->flags == p2->flags);
-       verify_ctdb_sock_addr(&p1->addr, &p2->addr);
-}
-
-static void fill_ctdb_node_map(TALLOC_CTX *mem_ctx, struct ctdb_node_map *p)
-{
-       int i;
-
-       p->num = rand_int(32);
-       if (p->num > 0) {
-               p->node = talloc_array(mem_ctx, struct ctdb_node_and_flags,
-                                      p->num);
-               assert(p->node != NULL);
-               for (i=0; i<p->num; i++) {
-                       fill_ctdb_node_and_flags(mem_ctx, &p->node[i]);
-               }
-       } else {
-               p->node = NULL;
-       }
-}
-
-static void verify_ctdb_node_map(struct ctdb_node_map *p1,
-                                struct ctdb_node_map *p2)
-{
-       int i;
-
-       assert(p1->num == p2->num);
-       for (i=0; i<p1->num; i++) {
-               verify_ctdb_node_and_flags(&p1->node[i], &p2->node[i]);
-       }
-}
-
-static void fill_ctdb_script(TALLOC_CTX *mem_ctx, struct ctdb_script *p)
-{
-       fill_buffer(p, sizeof(struct ctdb_script));
-}
-
-static void verify_ctdb_script(struct ctdb_script *p1, struct ctdb_script *p2)
-{
-       verify_buffer(p1, p2, sizeof(struct ctdb_script));
-}
-
-static void fill_ctdb_script_list(TALLOC_CTX *mem_ctx,
-                                 struct ctdb_script_list *p)
-{
-       int i;
-
-       p->num_scripts = rand_int(32);
-       if (p->num_scripts > 0) {
-               p->script = talloc_array(mem_ctx, struct ctdb_script,
-                                        p->num_scripts);
-               assert(p->script != NULL);
-               for (i=0; i<p->num_scripts; i++) {
-                       fill_ctdb_script(mem_ctx, &p->script[i]);
-               }
-       } else {
-               p->script = NULL;
-       }
-}
-
-static void verify_ctdb_script_list(struct ctdb_script_list *p1,
-                                   struct ctdb_script_list *p2)
-{
-       int i;
-
-       assert(p1->num_scripts == p2->num_scripts);
-       for (i=0; i<p1->num_scripts; i++) {
-               verify_ctdb_script(&p1->script[i], &p2->script[i]);
-       }
-}
-
-static void fill_ctdb_ban_state(TALLOC_CTX *mem_ctx, struct ctdb_ban_state *p)
-{
-       p->pnn = rand32();
-       p->time = rand32();
-}
-
-static void verify_ctdb_ban_state(struct ctdb_ban_state *p1,
-                                 struct ctdb_ban_state *p2)
-{
-       assert(p1->pnn == p2->pnn);
-       assert(p1->time == p2->time);
-}
-
-static void fill_ctdb_notify_data(TALLOC_CTX *mem_ctx,
-                                 struct ctdb_notify_data *p)
-{
-       p->srvid = rand64();
-       fill_tdb_data(mem_ctx, &p->data);
-}
-
-static void verify_ctdb_notify_data(struct ctdb_notify_data *p1,
-                                   struct ctdb_notify_data *p2)
-{
-       assert(p1->srvid == p2->srvid);
-       verify_tdb_data(&p1->data, &p2->data);
-}
-
-static void fill_ctdb_iface(TALLOC_CTX *mem_ctx, struct ctdb_iface *p)
-{
-       fill_buffer(p, sizeof(struct ctdb_iface));
-}
-
-static void verify_ctdb_iface(struct ctdb_iface *p1, struct ctdb_iface *p2)
-{
-       verify_buffer(p1, p2, sizeof(struct ctdb_iface));
-}
-
-static void fill_ctdb_iface_list(TALLOC_CTX *mem_ctx,
-                                struct ctdb_iface_list *p)
-{
-       int i;
-
-       p->num = rand_int(32);
-       if (p->num > 0) {
-               p->iface = talloc_array(mem_ctx, struct ctdb_iface, p->num);
-               assert(p->iface != NULL);
-               for (i=0; i<p->num; i++) {
-                       fill_ctdb_iface(mem_ctx, &p->iface[i]);
-               }
-       } else {
-               p->iface = NULL;
-       }
-}
-
-static void verify_ctdb_iface_list(struct ctdb_iface_list *p1,
-                                  struct ctdb_iface_list *p2)
-{
-       int i;
-
-       assert(p1->num == p2->num);
-       for (i=0; i<p1->num; i++) {
-               verify_ctdb_iface(&p1->iface[i], &p2->iface[i]);
-       }
-}
-
-static void fill_ctdb_public_ip_info(TALLOC_CTX *mem_ctx,
-                                    struct ctdb_public_ip_info *p)
-{
-       fill_ctdb_public_ip(mem_ctx, &p->ip);
-       p->active_idx = rand_int(32) + 1;
-       p->ifaces = talloc(mem_ctx, struct ctdb_iface_list);
-       assert(p->ifaces != NULL);
-       fill_ctdb_iface_list(mem_ctx, p->ifaces);
-}
-
-static void verify_ctdb_public_ip_info(struct ctdb_public_ip_info *p1,
-                                      struct ctdb_public_ip_info *p2)
-{
-       verify_ctdb_public_ip(&p1->ip, &p2->ip);
-       assert(p1->active_idx == p2->active_idx);
-       verify_ctdb_iface_list(p1->ifaces, p2->ifaces);
-}
-
-static void fill_ctdb_statistics_list(TALLOC_CTX *mem_ctx,
-                                     struct ctdb_statistics_list *p)
-{
-       int i;
-
-       p->num = rand_int(10);
-       if (p->num > 0) {
-               p->stats = talloc_array(mem_ctx, struct ctdb_statistics,
-                                       p->num);
-               assert(p->stats != NULL);
-
-               for (i=0; i<p->num; i++) {
-                       fill_ctdb_statistics(mem_ctx, &p->stats[i]);
-               }
-       } else {
-               p->stats = NULL;
-       }
-}
-
-static void verify_ctdb_statistics_list(struct ctdb_statistics_list *p1,
-                                       struct ctdb_statistics_list *p2)
-{
-       int i;
-
-       assert(p1->num == p2->num);
-       for (i=0; i<p1->num; i++) {
-               verify_ctdb_statistics(&p1->stats[i], &p2->stats[i]);
-       }
-}
-
-static void fill_ctdb_key_data(TALLOC_CTX *mem_ctx, struct ctdb_key_data *p)
-{
-       p->db_id = rand32();
-       fill_ctdb_ltdb_header(mem_ctx, &p->header);
-       fill_tdb_data_nonnull(mem_ctx, &p->key);
-}
-
-static void verify_ctdb_key_data(struct ctdb_key_data *p1,
-                                struct ctdb_key_data *p2)
-{
-       assert(p1->db_id == p2->db_id);
-       verify_ctdb_ltdb_header(&p1->header, &p2->header);
-       verify_tdb_data(&p1->key, &p2->key);
-}
-
-static void fill_ctdb_db_statistics(TALLOC_CTX *mem_ctx,
-                                   struct ctdb_db_statistics *p)
-{
-       int i;
-
-       fill_buffer(p, offsetof(struct ctdb_db_statistics, num_hot_keys));
-       p->num_hot_keys = 10;
-       for (i=0; i<p->num_hot_keys; i++) {
-               p->hot_keys[i].count = rand32();
-               fill_tdb_data(mem_ctx, &p->hot_keys[i].key);
-       }
-}
-
-static void verify_ctdb_db_statistics(struct ctdb_db_statistics *p1,
-                                     struct ctdb_db_statistics *p2)
-{
-       int i;
-
-       verify_buffer(p1, p2, offsetof(struct ctdb_db_statistics,
-                                           num_hot_keys));
-       assert(p1->num_hot_keys == p2->num_hot_keys);
-       for (i=0; i<p1->num_hot_keys; i++) {
-               assert(p1->hot_keys[i].count == p2->hot_keys[i].count);
-               verify_tdb_data(&p1->hot_keys[i].key, &p2->hot_keys[i].key);
-       }
-}
-
-static void fill_ctdb_event_request_run(TALLOC_CTX *mem_ctx,
-                                       struct ctdb_event_request_run *p)
-{
-       p->event = rand_int(CTDB_EVENT_MAX);
-       p->timeout = rand();
-       fill_ctdb_string(mem_ctx, &p->arg_str);
-}
-
-static void verify_ctdb_event_request_run(struct ctdb_event_request_run *p1,
-                                         struct ctdb_event_request_run *p2)
-{
-       assert(p1->event == p2->event);
-       assert(p1->timeout == p2->timeout);
-       verify_ctdb_string(p1->arg_str, p2->arg_str);
-}
-
-static void fill_ctdb_event_request_status(TALLOC_CTX *mem_ctx,
-                                          struct ctdb_event_request_status *p)
-{
-       p->event = rand_int(CTDB_EVENT_MAX);
-       p->state = rand_int(3) + 1;
-}
-
-static void verify_ctdb_event_request_status(
-                                       struct ctdb_event_request_status *p1,
-                                       struct ctdb_event_request_status *p2)
-{
-       assert(p1->event == p2->event);
-       assert(p1->state == p2->state);
-}
-
-static void fill_ctdb_event_request_script_enable(
-                               TALLOC_CTX *mem_ctx,
-                               struct ctdb_event_request_script_enable *p)
-{
-       fill_ctdb_string(mem_ctx, &p->script_name);
-}
-
-static void verify_ctdb_event_request_script_enable(
-                               struct ctdb_event_request_script_enable *p1,
-                               struct ctdb_event_request_script_enable *p2)
-{
-       verify_ctdb_string(p1->script_name, p2->script_name);
-}
-
-static void fill_ctdb_event_request_script_disable(
-                               TALLOC_CTX *mem_ctx,
-                               struct ctdb_event_request_script_disable *p)
-{
-       fill_ctdb_string(mem_ctx, &p->script_name);
-}
-
-static void verify_ctdb_event_request_script_disable(
-                               struct ctdb_event_request_script_disable *p1,
-                               struct ctdb_event_request_script_disable *p2)
-{
-       verify_ctdb_string(p1->script_name, p2->script_name);
-}
-
-static void fill_ctdb_event_reply_status(TALLOC_CTX *mem_ctx,
-                                        struct ctdb_event_reply_status *p)
-{
-       if (rand_int(2) == 0) {
-               p->status = 0;
-               p->script_list = talloc(mem_ctx, struct ctdb_script_list);
-               assert(p->script_list != NULL);
-               fill_ctdb_script_list(mem_ctx, p->script_list);
-       } else {
-               p->status = rand32i();
-               p->script_list = NULL;
-       }
-}
-
-static void verify_ctdb_event_reply_status(struct ctdb_event_reply_status *p1,
-                                          struct ctdb_event_reply_status *p2)
-{
-       assert(p1->status == p2->status);
-       if (p1->script_list == NULL) {
-               assert(p1->script_list == p2->script_list);
-       } else {
-               verify_ctdb_script_list(p1->script_list, p2->script_list);
-       }
-}
-
-static void fill_ctdb_event_reply_script_list(
-                               TALLOC_CTX *mem_ctx,
-                               struct ctdb_event_reply_script_list *p)
-{
-       p->script_list = talloc(mem_ctx, struct ctdb_script_list);
-       assert(p->script_list != NULL);
-
-       fill_ctdb_script_list(mem_ctx, p->script_list);
-}
-
-static void verify_ctdb_event_reply_script_list(
-                               struct ctdb_event_reply_script_list *p1,
-                               struct ctdb_event_reply_script_list *p2)
-{
-       verify_ctdb_script_list(p1->script_list, p2->script_list);
-}
-
-#ifndef PROTOCOL_TEST
-
-static void fill_ctdb_election_message(TALLOC_CTX *mem_ctx,
-                                      struct ctdb_election_message *p)
-{
-       p->num_connected = rand_int(32);
-       fill_buffer(&p->priority_time, sizeof(struct timeval));
-       p->pnn = rand_int(32);
-       p->node_flags = rand32();
-}
-
-static void verify_ctdb_election_message(struct ctdb_election_message *p1,
-                                        struct ctdb_election_message *p2)
-{
-       assert(p1->num_connected == p2->num_connected);
-       verify_buffer(p1, p2, sizeof(struct timeval));
-       assert(p1->pnn == p2->pnn);
-       assert(p1->node_flags == p2->node_flags);
-}
-
-static void fill_ctdb_srvid_message(TALLOC_CTX *mem_ctx,
-                                   struct ctdb_srvid_message *p)
-{
-       p->pnn = rand_int(32);
-       p->srvid = rand64();
-}
-
-static void verify_ctdb_srvid_message(struct ctdb_srvid_message *p1,
-                                     struct ctdb_srvid_message *p2)
-{
-       assert(p1->pnn == p2->pnn);
-       assert(p1->srvid == p2->srvid);
-}
-
-static void fill_ctdb_disable_message(TALLOC_CTX *mem_ctx,
-                                     struct ctdb_disable_message *p)
-{
-       p->pnn = rand_int(32);
-       p->srvid = rand64();
-       p->timeout = rand32();
-}
-
-static void verify_ctdb_disable_message(struct ctdb_disable_message *p1,
-                                       struct ctdb_disable_message *p2)
-{
-       assert(p1->pnn == p2->pnn);
-       assert(p1->srvid == p2->srvid);
-       assert(p1->timeout == p2->timeout);
-}
-
-static void fill_ctdb_server_id(TALLOC_CTX *mem_ctx,
-                               struct ctdb_server_id *p)
-{
-       p->pid = rand64();
-       p->task_id = rand32();
-       p->vnn = rand_int(32);
-       p->unique_id = rand64();
-}
-
-static void verify_ctdb_server_id(struct ctdb_server_id *p1,
-                                 struct ctdb_server_id *p2)
-{
-       assert(p1->pid == p2->pid);
-       assert(p1->task_id == p2->task_id);
-       assert(p1->vnn == p2->vnn);
-       assert(p1->unique_id == p2->unique_id);
-}
-
-static void fill_ctdb_g_lock(TALLOC_CTX *mem_ctx, struct ctdb_g_lock *p)
-{
-       p->type = rand_int(2);
-       fill_ctdb_server_id(mem_ctx, &p->sid);
-}
-
-static void verify_ctdb_g_lock(struct ctdb_g_lock *p1, struct ctdb_g_lock *p2)
-{
-       assert(p1->type == p2->type);
-       verify_ctdb_server_id(&p1->sid, &p2->sid);
-}
-
-static void fill_ctdb_g_lock_list(TALLOC_CTX *mem_ctx,
-                                 struct ctdb_g_lock_list *p)
-{
-       int i;
-
-       p->num = rand_int(20) + 1;
-       p->lock = talloc_array(mem_ctx, struct ctdb_g_lock, p->num);
-       assert(p->lock != NULL);
-       for (i=0; i<p->num; i++) {
-               fill_ctdb_g_lock(mem_ctx, &p->lock[i]);
-       }
-}
-
-static void verify_ctdb_g_lock_list(struct ctdb_g_lock_list *p1,
-                                   struct ctdb_g_lock_list *p2)
-{
-       int i;
-
-       assert(p1->num == p2->num);
-       for (i=0; i<p1->num; i++) {
-               verify_ctdb_g_lock(&p1->lock[i], &p2->lock[i]);
-       }
-}
-
-/*
- * Functions to test marshalling routines
- */
-
-static void test_ctdb_int32(void)
-{
-       int32_t p1, p2;
-       size_t buflen;
-       int ret;
-
-       p1 = rand32i();
-       buflen = ctdb_int32_len(p1);
-       ctdb_int32_push(p1, BUFFER);
-       ret = ctdb_int32_pull(BUFFER, buflen, NULL, &p2);
-       assert(ret == 0);
-       assert(p1 == p2);
-}
-
-static void test_ctdb_uint32(void)
-{
-       uint32_t p1, p2;
-       size_t buflen;
-       int ret;
-
-       p1 = rand32();
-       buflen = ctdb_uint32_len(p1);
-       ctdb_uint32_push(p1, BUFFER);
-       ret = ctdb_uint32_pull(BUFFER, buflen, NULL, &p2);
-       assert(ret == 0);
-       assert(p1 == p2);
-}
-
-static void test_ctdb_uint64(void)
-{
-       uint64_t p1, p2;
-       size_t buflen;
-       int ret;
-
-       p1 = rand64();
-       buflen = ctdb_uint64_len(p1);
-       ctdb_uint64_push(p1, BUFFER);
-       ret = ctdb_uint64_pull(BUFFER, buflen, NULL, &p2);
-       assert(ret == 0);
-       assert(p1 == p2);
-}
-
-static void test_ctdb_double(void)
-{
-       double p1, p2;
-       size_t buflen;
-       int ret;
-
-       p1 = rand_double();
-       buflen = ctdb_double_len(p1);
-       ctdb_double_push(p1, BUFFER);
-       ret = ctdb_double_pull(BUFFER, buflen, NULL, &p2);
-       assert(ret == 0);
-       assert(p1 == p2);
-}
-
-static void test_ctdb_pid(void)
-{
-       pid_t p1, p2;
-       size_t buflen;
-       int ret;
-
-       p1 = rand32();
-       buflen = ctdb_pid_len(p1);
-       ctdb_pid_push(p1, BUFFER);
-       ret = ctdb_pid_pull(BUFFER, buflen, NULL, &p2);
-       assert(ret == 0);
-       assert(p1 == p2);
-}
-
-#define TEST_FUNC(NAME)                test_ ##NAME
-#define FILL_FUNC(NAME)                fill_ ##NAME
-#define VERIFY_FUNC(NAME)      verify_ ##NAME
-#define LEN_FUNC(NAME)         NAME## _len
-#define PUSH_FUNC(NAME)                NAME## _push
-#define PULL_FUNC(NAME)                NAME## _pull
-
-#define DEFINE_TEST(TYPE, NAME)        \
-static void TEST_FUNC(NAME)(void) \
-{ \
-       TALLOC_CTX *mem_ctx = talloc_new(NULL); \
-       TYPE *p1, *p2; \
-       size_t buflen; \
-       int ret; \
-\
-       p1 = talloc_zero(mem_ctx, TYPE); \
-       assert(p1 != NULL); \
-       FILL_FUNC(NAME)(p1, p1); \
-       buflen = LEN_FUNC(NAME)(p1); \
-       PUSH_FUNC(NAME)(p1, BUFFER); \
-       ret = PULL_FUNC(NAME)(BUFFER, buflen, mem_ctx, &p2); \
-       assert(ret == 0); \
-       VERIFY_FUNC(NAME)(p1, p2); \
-       talloc_free(mem_ctx); \
-}
-
-
-static void test_ctdb_string(void)
-{
-       TALLOC_CTX *mem_ctx = talloc_new(NULL);
-       const char *p1, *p2;
-       size_t buflen;
-       int ret;
-
-       fill_ctdb_string(mem_ctx, &p1);
-       buflen = ctdb_string_len(p1);
-       ctdb_string_push(p1, BUFFER);
-       ret = ctdb_string_pull(BUFFER, buflen, mem_ctx, &p2);
-       assert(ret == 0);
-       verify_ctdb_string(p1, p2);
-       talloc_free(mem_ctx);
-}
-
-static void test_ctdb_stringn(void)
-{
-       TALLOC_CTX *mem_ctx = talloc_new(NULL);
-       const char *p1, *p2;
-       size_t buflen;
-       int ret;
-
-       fill_ctdb_string(mem_ctx, &p1);
-       buflen = ctdb_stringn_len(p1);
-       ctdb_stringn_push(p1, BUFFER);
-       ret = ctdb_stringn_pull(BUFFER, buflen, mem_ctx, &p2);
-       assert(ret == 0);
-       verify_ctdb_string(p1, p2);
-       talloc_free(mem_ctx);
-}
-
-static void test_ctdb_ltdb_header(void)
-{
-       TALLOC_CTX *mem_ctx = talloc_new(NULL);
-       struct ctdb_ltdb_header p1, p2;
-       size_t buflen;
-       int ret;
-
-       fill_ctdb_ltdb_header(mem_ctx, &p1);
-       buflen = ctdb_ltdb_header_len(&p1);
-       ctdb_ltdb_header_push(&p1, BUFFER);
-       ret = ctdb_ltdb_header_pull(BUFFER, buflen, &p2);
-       assert(ret == 0);
-       verify_ctdb_ltdb_header(&p1, &p2);
-       talloc_free(mem_ctx);
-}
+PROTOCOL_TYPE2_TEST(TDB_DATA, ctdb_tdb_data);
+PROTOCOL_TYPE2_TEST(TDB_DATA, ctdb_tdb_datan);
+PROTOCOL_TYPE1_TEST(struct ctdb_latency_counter, ctdb_latency_counter);
 
 static void test_ctdb_g_lock(void)
 {
@@ -1228,33 +47,35 @@ static void test_ctdb_g_lock(void)
        talloc_free(mem_ctx);
 }
 
-DEFINE_TEST(struct ctdb_statistics, ctdb_statistics);
-DEFINE_TEST(struct ctdb_vnn_map, ctdb_vnn_map);
-DEFINE_TEST(struct ctdb_dbid_map, ctdb_dbid_map);
-DEFINE_TEST(struct ctdb_pulldb, ctdb_pulldb);
-DEFINE_TEST(struct ctdb_pulldb_ext, ctdb_pulldb_ext);
-DEFINE_TEST(struct ctdb_rec_data, ctdb_rec_data);
-DEFINE_TEST(struct ctdb_rec_buffer, ctdb_rec_buffer);
-DEFINE_TEST(struct ctdb_traverse_start, ctdb_traverse_start);
-DEFINE_TEST(struct ctdb_traverse_all, ctdb_traverse_all);
-DEFINE_TEST(struct ctdb_traverse_start_ext, ctdb_traverse_start_ext);
-DEFINE_TEST(struct ctdb_traverse_all_ext, ctdb_traverse_all_ext);
-DEFINE_TEST(ctdb_sock_addr, ctdb_sock_addr);
-DEFINE_TEST(struct ctdb_connection, ctdb_connection);
-DEFINE_TEST(struct ctdb_tunable, ctdb_tunable);
-DEFINE_TEST(struct ctdb_node_flag_change, ctdb_node_flag_change);
-DEFINE_TEST(struct ctdb_var_list, ctdb_var_list);
-DEFINE_TEST(struct ctdb_tunable_list, ctdb_tunable_list);
-DEFINE_TEST(struct ctdb_tickle_list, ctdb_tickle_list);
-DEFINE_TEST(struct ctdb_addr_info, ctdb_addr_info);
-DEFINE_TEST(struct ctdb_transdb, ctdb_transdb);
-DEFINE_TEST(struct ctdb_uptime, ctdb_uptime);
-DEFINE_TEST(struct ctdb_public_ip, ctdb_public_ip);
-DEFINE_TEST(struct ctdb_public_ip_list, ctdb_public_ip_list);
-DEFINE_TEST(struct ctdb_node_and_flags, ctdb_node_and_flags);
-DEFINE_TEST(struct ctdb_node_map, ctdb_node_map);
-DEFINE_TEST(struct ctdb_script, ctdb_script);
-DEFINE_TEST(struct ctdb_script_list, ctdb_script_list);
+PROTOCOL_TYPE3_TEST(struct ctdb_statistics, ctdb_statistics);
+PROTOCOL_TYPE3_TEST(struct ctdb_vnn_map, ctdb_vnn_map);
+PROTOCOL_TYPE3_TEST(struct ctdb_dbid, ctdb_dbid);
+PROTOCOL_TYPE3_TEST(struct ctdb_dbid_map, ctdb_dbid_map);
+PROTOCOL_TYPE3_TEST(struct ctdb_pulldb, ctdb_pulldb);
+PROTOCOL_TYPE3_TEST(struct ctdb_pulldb_ext, ctdb_pulldb_ext);
+PROTOCOL_TYPE1_TEST(struct ctdb_ltdb_header, ctdb_ltdb_header);
+PROTOCOL_TYPE3_TEST(struct ctdb_rec_data, ctdb_rec_data);
+PROTOCOL_TYPE3_TEST(struct ctdb_rec_buffer, ctdb_rec_buffer);
+PROTOCOL_TYPE3_TEST(struct ctdb_traverse_start, ctdb_traverse_start);
+PROTOCOL_TYPE3_TEST(struct ctdb_traverse_all, ctdb_traverse_all);
+PROTOCOL_TYPE3_TEST(struct ctdb_traverse_start_ext, ctdb_traverse_start_ext);
+PROTOCOL_TYPE3_TEST(struct ctdb_traverse_all_ext, ctdb_traverse_all_ext);
+PROTOCOL_TYPE3_TEST(ctdb_sock_addr, ctdb_sock_addr);
+PROTOCOL_TYPE3_TEST(struct ctdb_connection, ctdb_connection);
+PROTOCOL_TYPE3_TEST(struct ctdb_tunable, ctdb_tunable);
+PROTOCOL_TYPE3_TEST(struct ctdb_node_flag_change, ctdb_node_flag_change);
+PROTOCOL_TYPE3_TEST(struct ctdb_var_list, ctdb_var_list);
+PROTOCOL_TYPE3_TEST(struct ctdb_tunable_list, ctdb_tunable_list);
+PROTOCOL_TYPE3_TEST(struct ctdb_tickle_list, ctdb_tickle_list);
+PROTOCOL_TYPE3_TEST(struct ctdb_addr_info, ctdb_addr_info);
+PROTOCOL_TYPE3_TEST(struct ctdb_transdb, ctdb_transdb);
+PROTOCOL_TYPE3_TEST(struct ctdb_uptime, ctdb_uptime);
+PROTOCOL_TYPE3_TEST(struct ctdb_public_ip, ctdb_public_ip);
+PROTOCOL_TYPE3_TEST(struct ctdb_public_ip_list, ctdb_public_ip_list);
+PROTOCOL_TYPE3_TEST(struct ctdb_node_and_flags, ctdb_node_and_flags);
+PROTOCOL_TYPE3_TEST(struct ctdb_node_map, ctdb_node_map);
+PROTOCOL_TYPE3_TEST(struct ctdb_script, ctdb_script);
+PROTOCOL_TYPE3_TEST(struct ctdb_script_list, ctdb_script_list);
 DEFINE_TEST(struct ctdb_ban_state, ctdb_ban_state);
 DEFINE_TEST(struct ctdb_notify_data, ctdb_notify_data);
 DEFINE_TEST(struct ctdb_iface, ctdb_iface);
@@ -1268,15 +89,6 @@ DEFINE_TEST(struct ctdb_srvid_message, ctdb_srvid_message);
 DEFINE_TEST(struct ctdb_disable_message, ctdb_disable_message);
 DEFINE_TEST(struct ctdb_g_lock_list, ctdb_g_lock_list);
 
-DEFINE_TEST(struct ctdb_event_request_run, ctdb_event_request_run);
-DEFINE_TEST(struct ctdb_event_request_status, ctdb_event_request_status);
-DEFINE_TEST(struct ctdb_event_request_script_enable,
-                               ctdb_event_request_script_enable);
-DEFINE_TEST(struct ctdb_event_request_script_disable,
-                               ctdb_event_request_script_disable);
-DEFINE_TEST(struct ctdb_event_reply_status, ctdb_event_reply_status);
-DEFINE_TEST(struct ctdb_event_reply_script_list, ctdb_event_reply_script_list);
-
 static void test_ctdb_rec_buffer_read_write(void)
 {
        TALLOC_CTX *mem_ctx = talloc_new(NULL);
@@ -1330,23 +142,18 @@ int main(int argc, char *argv[])
                srandom(seed);
        }
 
-       test_ctdb_int32();
-       test_ctdb_uint32();
-       test_ctdb_uint64();
-       test_ctdb_double();
-       test_ctdb_pid();
-
-       test_ctdb_string();
-       test_ctdb_stringn();
-
-       test_ctdb_ltdb_header();
+       TEST_FUNC(ctdb_tdb_data)();
+       TEST_FUNC(ctdb_tdb_datan)();
+       TEST_FUNC(ctdb_latency_counter)();
        test_ctdb_g_lock();
 
        TEST_FUNC(ctdb_statistics)();
        TEST_FUNC(ctdb_vnn_map)();
+       TEST_FUNC(ctdb_dbid)();
        TEST_FUNC(ctdb_dbid_map)();
        TEST_FUNC(ctdb_pulldb)();
        TEST_FUNC(ctdb_pulldb_ext)();
+       TEST_FUNC(ctdb_ltdb_header)();
        TEST_FUNC(ctdb_rec_data)();
        TEST_FUNC(ctdb_rec_buffer)();
        TEST_FUNC(ctdb_traverse_start)();
@@ -1382,16 +189,7 @@ int main(int argc, char *argv[])
        TEST_FUNC(ctdb_disable_message)();
        TEST_FUNC(ctdb_g_lock_list)();
 
-       TEST_FUNC(ctdb_event_request_run)();
-       TEST_FUNC(ctdb_event_request_status)();
-       TEST_FUNC(ctdb_event_request_script_enable)();
-       TEST_FUNC(ctdb_event_request_script_disable)();
-       TEST_FUNC(ctdb_event_reply_status)();
-       TEST_FUNC(ctdb_event_reply_script_list)();
-
        test_ctdb_rec_buffer_read_write();
 
        return 0;
 }
-
-#endif