X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=test%2Fapi%2Ftestlib.c;h=2be29208c543d1105893f40b88c6835d0e7abc55;hb=3731bdaf94aeba2550fc553aebe34831c203dc36;hp=ad878d617663231359a586fe47a57d0a063619ac;hpb=89d3a004b7c651fd5673abfc192e1472dc4d4197;p=idzebra-moved-to-github.git diff --git a/test/api/testlib.c b/test/api/testlib.c index ad878d6..2be2920 100644 --- a/test/api/testlib.c +++ b/test/api/testlib.c @@ -1,4 +1,4 @@ -/* $Id: testlib.c,v 1.42 2007-01-15 15:10:20 adam Exp $ +/* $Id: testlib.c,v 1.47 2007-11-30 12:19:09 adam Exp $ Copyright (C) 1995-2007 Index Data ApS @@ -35,6 +35,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #include #include #include +#include #include #include "testlib.h" @@ -42,7 +43,6 @@ int log_level = YLOG_LOG; /* * tl_start_up : do common start things, and a zebra_start - * - nmem_init * - build the name of logfile from argv[0], and open it * if no argv passed, do not open a log * - read zebra.cfg from env var srcdir if it exists; otherwise current dir @@ -58,7 +58,6 @@ ZebraService tl_start_up(char *cfgname, int argc, char **argv) setrlimit(RLIMIT_CPU, &rlim); #endif #endif - nmem_init(); return tl_zebra_start(cfgname); } @@ -93,7 +92,6 @@ int tl_close_down(ZebraHandle zh, ZebraService zs) if (zs) zebra_stop(zs); - nmem_exit(); xmalloc_trav("x"); return 1; } @@ -323,7 +321,7 @@ int tl_ranking_query(ZebraHandle zh, char *query, odr_output = odr_createmem(ODR_ENCODE); rc = zebra_records_retrieve(zh, odr_output, setname, 0, - VAL_TEXT_XML, exphits, retrievalRecord); + yaz_oid_recsyn_xml, exphits, retrievalRecord); if (rc != ZEBRA_OK) ret = 0; else if (!strstr(retrievalRecord[0].buf, firstrec)) @@ -452,8 +450,60 @@ void tl_check_filter(ZebraService zs, const char *name) } } +ZEBRA_RES tl_fetch(ZebraHandle zh, int position, const char *element_set, + const Odr_oid * format, ODR odr, + const char **rec_buf, size_t *rec_len) +{ + ZebraRetrievalRecord retrievalRecord[1]; + Z_RecordComposition *comp; + ZEBRA_RES res; + retrievalRecord[0].position = position; + + yaz_set_esn(&comp, element_set, odr->mem); + + res = zebra_records_retrieve(zh, odr, "rsetname", comp, format, 1, + retrievalRecord); + if (res != ZEBRA_OK) + { + int code = zebra_errCode(zh); + yaz_log(YLOG_FATAL, "zebra_records_retrieve returned error %d", + code); + } + else + { + *rec_buf = retrievalRecord[0].buf; + *rec_len = retrievalRecord[0].len; + } + return res; +} +ZEBRA_RES tl_fetch_compare(ZebraHandle zh, + int position, const char *element_set, + const Odr_oid *format, const char *cmp_rec) +{ + const char *rec_buf = 0; + size_t rec_len = 0; + ODR odr = odr_createmem(ODR_ENCODE); + ZEBRA_RES res = tl_fetch(zh, position, element_set, format, odr, + &rec_buf, &rec_len); + if (res == ZEBRA_OK) + { + if (strlen(cmp_rec) != rec_len) + res = ZEBRA_FAIL; + else if (memcmp(cmp_rec, rec_buf, rec_len)) + res = ZEBRA_FAIL; + } + odr_destroy(odr); + return res; +} + +ZEBRA_RES tl_fetch_first_compare(ZebraHandle zh, + const char *element_set, + const Odr_oid *format, const char *cmp_rec) +{ + return tl_fetch_compare(zh, 1, element_set, format, cmp_rec); +} /* * Local variables: