24 #include <sys/select.h>
71 for (; set; set = set->
next)
112 if (oct->
len > 0 && oct->
buf[0] >=
'0' && oct->
buf[0] <=
'9')
122 for (i = 0; i < oct->
len; i++)
123 *hash = *hash * 65509 + oct->
buf[i];
163 for (i = 0; cql[i]; i++)
164 hash = hash * 65509 + cql[i];
182 if (strncmp(basename,
"Slow", 4) == 0)
187 sscanf(basename+4,
"%d", &w);
189 for (i = 0; i < w; i++)
206 size_t l = strlen(p);
207 if (strlen(s) >= l && !memcmp(s, p, l))
214 delayp->
d1 = delayp->
d2 = 0.0;
219 if (sscanf(value,
"%lf:%lf", &delayp->
d1, &delayp->
d2) == 2)
221 else if (sscanf(value,
"%lf", &delayp->
d1) == 1)
231 Sleep( (DWORD) (d * 1000));
235 tv.tv_usec = (d - (long) d) * 1000000;
236 select(0, 0, 0, 0, &tv);
242 double d = delayp->
d1;
247 d += (rand()) * (delayp->
d2 - d) / RAND_MAX;
256 int length = strlen(facet_name) + 10;
259 for (index = 0; index < facet_field->
num_terms; index++)
262 sprintf(key,
"%s%d", facet_name, index);
272 int index, new_index = 0;
275 for (index = 0; index < facet_list->
num; index++) {
278 attrvalues.
limit = 10;
298 new_list->
num = new_index;
326 for (a = extra_args; a; a = a->
next)
350 const char *
db, *db_sep;
388 new_set =
xmalloc(
sizeof(*new_set));
399 db_sep = strchr(
db,
'?');
406 for (i = 0; i < no_parms; i++)
408 const char *
name = names[i];
409 const char *value = values[i];
410 if (!strcmp(
name,
"seed"))
412 else if (!strcmp(
name,
"search-delay"))
414 else if (!strcmp(
name,
"present-delay"))
416 else if (!strcmp(
name,
"fetch-delay"))
470 const char *xml_in_response = 0;
501 const char *oid_name =
503 &oclass, oid_name_str);
513 xml_in_response =
"<dummy>x</dummy>";
528 "Couldn't decode ItemRequest %s near %ld",
551 "Couldn't decode ILL APDU %s near %ld",
574 *item_req->protocol_version_num);
619 strlen(xml_in_response));
639 rr->
errstring=
"xxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyy";
761 for (i = 0; i < notToKeep->
num; i++)
898 sprintf(buf,
"This is dummy SUTRS record number %d\n", r->
number);
900 r->
len = strlen(buf);
921 sprintf(fname,
"part.%d.ps", r->
number);
922 f = fopen(fname,
"rb");
929 fseek(f, 0L, SEEK_END);
931 if (size <= 0 || size >= 5000000)
936 fseek(f, 0L, SEEK_SET);
939 if (fread(r->
record, size, 1, f) != 1)
952 r->
schema =
"info:srw/schema/1/marcxml-1.1";
967 r->
schema =
"info:srw/schema/1/marcxml-1.1";
994 static char entries[200][80];
1017 if (!f && !(f = fopen(
"dummy-words",
"r")))
1019 perror(
"dummy-words");
1041 if (len >= (
int )
sizeof(
term))
1042 len =
sizeof(
term)-1;
1054 for (p =
term; *p; p++)
1058 fseek(f, 0, SEEK_SET);
1061 for (i = 0, pos = 0; fscanf(f,
" %79[^:]:%d", entries[pos], &hits[pos]) == 2;
1062 i++, pos < 199 ? pos++ : (pos = 0))
1115 "\t\t<host>localhost</host>\n"
1116 "\t\t<port>210</port>\n"
void yaz_enable_panic_backtrace(const char *progname)
enables backtrace when SIGSEGV/SIGABRT/.. signal is received
Diagnostics: Generated by csvtodiag.tcl from ./bib1.csv.
#define YAZ_BIB1_DATABASE_UNAVAILABLE
#define YAZ_BIB1_RESOURCES_EXHAUSTED_NO_RESULTS_AVAILABLE
#define YAZ_BIB1_PRESENT_REQUEST_OUT_OF_RANGE
#define YAZ_BIB1_RESULT_SET_EXISTS_AND_REPLACE_INDICATOR_OFF
#define YAZ_BIB1_SYSTEM_ERROR_IN_PRESENTING_RECORDS
#define YAZ_BIB1_TERM_TYPE_UNSUPP
#define YAZ_BIB1_COMBI_OF_SPECIFIED_DATABASES_UNSUPP
#define YAZ_BIB1_ONLY_ZERO_STEP_SIZE_SUPPORTED_FOR_SCAN
#define YAZ_BIB1_RECORD_SYNTAX_UNSUPP
#define YAZ_BIB1_SCAN_UNSUPP_VALUE_OF_POSITION_IN_RESPONSE
#define YAZ_BIB1_SPECIFIED_RESULT_SET_DOES_NOT_EXIST
#define YAZ_BIB1_SERVICE_UNSUPP_FOR_THIS_DATABASE
Z_OPACRecord * dummy_opac(int num, ODR odr, const char *marc_input)
int odr_dumpBER(FILE *f, const char *buf, int len)
const char * yaz_get_esn(Z_RecordComposition *comp)
get element set name from RecordComposition
Z_FacetField * facet_field_create(ODR odr, Z_AttributeList *attributes, int num_terms)
Z_FacetTerm * facet_term_create_cstr(ODR odr, const char *cstr, Odr_int freq)
Z_FacetList * facet_list_create(ODR odr, int num_facets)
void facet_field_term_set(ODR odr, Z_FacetField *field, Z_FacetTerm *facet_term, int index)
Z_FacetList * yaz_oi_get_facetlist(Z_OtherInformation **otherInformation)
void yaz_facet_attr_init(struct yaz_facet_attr *attr_values)
void yaz_facet_attr_get_z_attributes(const Z_AttributeList *attributes, struct yaz_facet_attr *av)
Header for the facet utilities.
int ill_APDU(ODR o, ILL_APDU **p, int opt, const char *name)
int ill_ItemRequest(ODR o, ILL_ItemRequest **p, int opt, const char *name)
FILE * yaz_log_file(void)
returns FILE handle for log or NULL if no file is in use
void yaz_log(int level, const char *fmt,...)
Writes log message.
int yaz_log_module_level(const char *name)
returns level for module
#define YLOG_DEBUG
log level: debugging
#define YLOG_LOG
log level: log (regular)
int yaz_matchstr(const char *s1, const char *s2)
match strings - independent of case and '-'
void odr_setbuf(ODR o, char *buf, int len, int can_grow)
Odr_null * odr_nullval(void)
#define ODR_EXTERNAL_single
Odr_int odr_atoi(const char *s)
char * odr_strdup(ODR o, const char *str)
Odr_int * odr_intdup(ODR o, Odr_int v)
void * odr_malloc(ODR o, size_t size)
Odr_oct * odr_create_Odr_oct(ODR o, const char *buf, int sz)
Odr_oid * odr_oiddup(ODR odr, const Odr_oid *o)
int yaz_oid_is_iso2709(const Odr_oid *oid)
checks if OID refers to MARC transfer syntax
const char * yaz_oid_to_string_buf(const Odr_oid *oid, oid_class *oclass, char *buf)
maps any OID to string (named or dot-notation)
const Odr_oid yaz_oid_recsyn_sutrs[]
const Odr_oid yaz_oid_recsyn_grs_1[]
const Odr_oid yaz_oid_recsyn_xml[]
const Odr_oid yaz_oid_recsyn_postscript[]
const Odr_oid yaz_oid_userinfo_facet_1[]
const Odr_oid yaz_oid_recsyn_json[]
const Odr_oid yaz_oid_general_isoill_1[]
const Odr_oid yaz_oid_recsyn_opac[]
const Odr_oid yaz_oid_recsyn_usmarc[]
int oid_oidcmp(const Odr_oid *o1, const Odr_oid *o2)
compares OIDs
char * oid_oid_to_dotstring(const Odr_oid *oid, char *oidbuf)
converts OID to string (dot notation)
Header for Z39.50 OtherInfo utilities.
Z_External * z_ext_record_sutrs(ODR o, const char *buf, int len)
encodes EXTERNAL SUTRS record
Z_External * z_ext_record_xml(ODR o, const char *buf, int len)
encodes EXTERNAL XML record
#define Z_External_update0
#define Z_External_userFacets
#define Z_External_update
#define Z_External_itemOrder
Z_GenericRecord * dummy_grs_record(int num, ODR o)
char * dummy_json_record(int num, ODR odr, const char *esn)
char * dummy_marc_record(int num, ODR odr)
char * dummy_xml_record(int num, ODR odr, const char *esn)
int bend_assoc_is_alive(bend_association assoc)
int statserv_main(int argc, char **argv, bend_initresult *(*bend_init)(bend_initrequest *r), void(*bend_close)(void *handle))
Z_InternationalString * packageName
Z_External * taskSpecificParameters
structure for all known EXTERNALs
Odr_int * indirect_reference
Z_InternationalString * cql
Odr_oid * direct_reference
Odr_any * single_ASN1_type
Z_AttributeList * attributes
union Z_IOItemOrder::@115 u
Z_IOTaskPackage * taskPackage
Z_IOResultSetItem * resultSetItem
Z_IOBilling * addlBilling
Z_IOOriginPartToKeep * toKeep
Z_IOOriginPartNotToKeep * notToKeep
Z_InternationalString * resultSetId
Odr_int * auxiliaryStatus
Z_External * statusOrErrorReport
Z_IOTargetPart * targetPart
Z_IOOriginPartToKeep * originPart
Z_IU0OriginPartToKeep * toKeep
Z_IU0UpdateEsRequest * esRequest
union Z_IU0Update::@128 u
Z_InternationalString * databaseName
Z_External * actionQualifier
Z_InternationalString * elementSetName
Z_IUSuppliedRecords_elem ** elements
Z_DiagRec ** globalDiagnostics
Z_IUTaskPackageRecordStructure ** taskPackageRecords
int num_globalDiagnostics
int num_taskPackageRecords
Z_IUCorrelationInfo * correlationInfo
int num_supplementalDiagnostics
Z_DiagRec ** supplementalDiagnostics
union Z_IUTaskPackageRecordStructure::@127 u
Z_IUOriginPartToKeep * toKeep
Z_IUOriginPartNotToKeep * notToKeep
Z_IUTargetPart * targetPart
Z_IUOriginPartToKeep * originPart
Z_IUUpdateEsRequest * esRequest
Z_IUUpdateTaskPackage * taskPackage
Z_AttributesPlusTerm * attributesPlusTerm
Z_RPNStructure * RPNStructure
union Z_RPNStructure::@46 u
Odr_oct * targetReference
Z_Permissions * permissions
Z_IntUnit * retentionTime
Z_InternationalString * description
Z_External * taskSpecificParameters
Z_InternationalString * packageName
Z_DiagRec ** packageDiagnostics
Z_InternationalString * userId
Information for Z39.50 delete result set handler.
Information for Z39.50 extended services handler.
Z_ExtendedServicesRequest * esr
Z_TaskPackage * taskPackage
Information for SRU Explain handler.
Information for fetch record handler.
Z_RecordComposition * comp
Information for the Init handler.
int(* bend_scan)(void *handle, bend_scan_rr *rr)
Z39.50 scan handler.
int records_in_same_charset
whether query_charset also applies to records
int(* bend_search)(void *handle, bend_search_rr *rr)
SRU/Z39.50 search handler.
int(* bend_fetch)(void *handle, bend_fetch_rr *rr)
SRU/Z39.50 fetch handler.
int named_result_sets
whether named result sets are supported (0=disable, 1=enable)
int(* bend_srw_scan)(void *handle, bend_scan_rr *rr)
SRU scan handler.
int(* bend_srw_update)(void *handle, bend_update_rr *rr)
SRU record update handler.
int(* bend_explain)(void *handle, bend_explain_rr *rr)
SRU explain handler.
int(* bend_sort)(void *handle, bend_sort_rr *rr)
Z39.50 sort handler.
ODR stream
encoding stream (for results)
char * query_charset
character set (encoding) for query terms
int(* bend_esrequest)(void *handle, bend_esrequest_rr *rr)
Z39.50 extended services handler.
int(* bend_present)(void *handle, bend_present_rr *rr)
SRU/Z39.50 present handler.
int(* bend_delete)(void *handle, bend_delete_rr *rr)
Z39.50 delete result set handler.
result for init handler (must be filled by handler)
Information for present handler. Does not replace bend_fetch.
Information for SRU / Z39.50 scan handler.
Z_SRW_extra_arg * extra_args
Z_AttributesPlusTerm * term
struct scan_entry * entries
char * extra_response_data
Information for Z39.50/SRU search handler.
Z_OtherInformation * search_input
Z_SRW_extra_arg * extra_args
Z_OtherInformation * search_info
char * extra_response_data
bend_association association
Information for Z39.50 sort handler.
Information for SRU record update handler.
struct delay search_delay
struct delay present_delay
Information for scan entry.
struct result_set * result_sets
int yaz_uri_to_array(const char *path, ODR o, char ***name, char ***val)
void wrbuf_destroy(WRBUF b)
destroy WRBUF and its buffer
WRBUF wrbuf_alloc(void)
construct WRBUF
void wrbuf_xmlputs(WRBUF b, const char *cp)
writes C-String to WRBUF and XML encode (as CDATA)
const char * wrbuf_cstr(WRBUF b)
returns WRBUF content as C-string
void wrbuf_puts(WRBUF b, const char *buf)
appends C-string to WRBUF
void wrbuf_write(WRBUF b, const char *buf, size_t size)
append constant size buffer to WRBUF
#define xstrdup(s)
utility macro which calls xstrdup_f
#define xfree(x)
utility macro which calls xfree_f
#define xmalloc(x)
utility macro which calls malloc_f
#define Z_SortResponse_success
#define Z_DeleteStatus_success
#define Z_OtherInfo_externallyDefinedInfo
#define Z_DeleteStatus_resultSetDidNotExist
#define Z_RPNStructure_complex
#define Z_RPNStructure_simple
#define Z_IOItemOrder_taskPackage
#define Z_IOItemOrder_esRequest
#define Z_IUOriginPartToKeep_recordInsert
#define Z_IUOriginPartToKeep_recordReplace
#define Z_IUUpdate_esRequest
#define Z_IUTaskPackageRecordStructure_record
#define Z_IUOriginPartToKeep_recordDelete
#define Z_IUOriginPartToKeep_elementUpdate
#define Z_IUTaskPackageRecordStructure_success
#define Z_IUOriginPartToKeep_specialUpdate
#define Z_IUUpdate_taskPackage
static void echo_extra_args(ODR stream, Z_SRW_extra_arg *extra_args, char **extra_response)
int ztest_present(void *handle, bend_present_rr *rr)
int ztest_fetch(void *handle, bend_fetch_rr *r)
int ztest_sort(void *handle, bend_sort_rr *rr)
void bend_close(void *handle)
int main(int argc, char **argv)
static Odr_int get_hit_count(Z_Query *q)
gets hit count for numeric terms in RPN queries
bend_initresult * bend_init(bend_initrequest *q)
Z_OtherInformation * build_facet_response(ODR odr, Z_FacetList *facet_list)
static void addterms(ODR odr, Z_FacetField *facet_field, const char *facet_name)
static Odr_int get_term_hit(Z_RPNStructure *s, unsigned *hash)
use term value as hit count
int ztest_scan(void *handle, bend_scan_rr *q)
static void init_delay(struct delay *delayp)
static int parse_delay(struct delay *delayp, const char *value)
int ztest_explain(void *handle, bend_explain_rr *rr)
static int strcmp_prefix(const char *s, const char *p)
int ztest_search(void *handle, bend_search_rr *rr)
static void do_delay(const struct delay *delayp)
int ztest_update(void *handle, bend_update_rr *rr)
static void ztest_sleep(double d)
int ztest_esrequest(void *handle, bend_esrequest_rr *rr)
int ztest_delete(void *handle, bend_delete_rr *rr)
static struct result_set * get_set(struct session_handle *sh, const char *name)
static int check_slow(const char *basename, bend_association association)
checks if it's a dummy Slow database
static void remove_sets(struct session_handle *sh)
Internal header for yaz-ztest.