X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;ds=sidebyside;f=test%2Fapi%2Ftestlib.c;h=0791d45ad01bf8befadc6eab984f448c380df85f;hb=fb791f9a754adf7b26695fdb1ddd0fdee9bf28f9;hp=52c7ca753dfd5b2ca76976642c98295973a12f2f;hpb=1872e3fc60b482771bbd1cb4b0290b8d6a9ef5d0;p=idzebra-moved-to-github.git diff --git a/test/api/testlib.c b/test/api/testlib.c index 52c7ca7..0791d45 100644 --- a/test/api/testlib.c +++ b/test/api/testlib.c @@ -1,8 +1,5 @@ -/* $Id: testlib.c,v 1.43 2007-04-16 08:44:32 adam Exp $ - Copyright (C) 1995-2007 - Index Data ApS - -This file is part of the Zebra server. +/* This file is part of the Zebra server. + Copyright (C) 1994-2009 Index Data Zebra is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free @@ -43,7 +40,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 @@ -59,7 +55,6 @@ ZebraService tl_start_up(char *cfgname, int argc, char **argv) setrlimit(RLIMIT_CPU, &rlim); #endif #endif - nmem_init(); return tl_zebra_start(cfgname); } @@ -94,7 +89,6 @@ int tl_close_down(ZebraHandle zh, ZebraService zs) if (zs) zebra_stop(zs); - nmem_exit(); xmalloc_trav("x"); return 1; } @@ -324,7 +318,7 @@ int tl_ranking_query(ZebraHandle zh, char *query, odr_output = odr_createmem(ODR_ENCODE); rc = zebra_records_retrieve(zh, odr_output, setname, 0, - yaz_oid_xml(), exphits, retrievalRecord); + yaz_oid_recsyn_xml, exphits, retrievalRecord); if (rc != ZEBRA_OK) ret = 0; else if (!strstr(retrievalRecord[0].buf, firstrec)) @@ -453,12 +447,71 @@ 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; + if (res == ZEBRA_FAIL) + { + int l = rec_len; + yaz_log(YLOG_LOG, "Expected: %s", cmp_rec); + yaz_log(YLOG_LOG, "Got: %.*s", l, rec_buf); + } + } + 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: * c-basic-offset: 4 + * c-file-style: "Stroustrup" * indent-tabs-mode: nil * End: * vim: shiftwidth=4 tabstop=8 expandtab