YAZ-ZTEST(8) System management commands YAZ-ZTEST(8)
نام (NAME)
yaz-ztest - سرور آزمایشی Z39.50/SRU
خلاصه دستور (SYNOPSIS)
application [-install] [-installa] [-remove] [-a file] [-v level]
[-l file] [-u uid] [-c config] [-f vconfig] [-C fname]
[-t minutes] [-k kilobytes] [-K] [-d daemon] [-w dir]
[-p pidfile] [-r kilobytes] [-ziDSTV1] [listener-spec...]
توضیحات (DESCRIPTION)
yaz-ztest یک سرور آزمایشی Z39.50/SRU است که از API سرور فرانتاند عمومی
YAZ (GFS) استفاده میکند. این سرور مانند یک سرور واقعی Z39.50/SRU عمل
میکند اما از پایگاهداده استفاده نمیکند. این برنامه تعداد نتایج تصادفی
را برمیگرداند و زیرمجموعهای از چند رکورد داخلی را ارائه میدهد.
مشخصه listener-spec شامل یک حالت انتقال به همراه دونقطه و به دنبال آن
یک نشانی شنونده است. حالت انتقال یکی از موارد tcp، unix یا ssl است.
برای TCP و SSL، یک نشانی به شکل زیر است:
hostname | IP-number [ : portnumber ]
برای سوکت محلی UNIX، نشانی نام پرونده سوکت محلی است.
گزینهها (OPTIONS)
-a file
مشخص کردن پروندهای برای تخلیه (dump) واحدهای PDU (برای اهداف
عیبیابی). نام ویژه - (خط تیره) خروجی را به خروجی خطای استاندارد
(stderr) ارسال میکند.
-S
عدم انشعاب فرآیند (fork) یا ایجاد ریسهها در درخواستهای اتصال. این
گزینه برای اشکالزدایی مناسب است، اما برای عملیات واقعی توصیه
نمیشود: اگرچه سرور ناهمگام و نامسدودکننده است، اما جلوگیری از این
که نقص نرمافزاری (یا به عبارتی کرش) بر تمام کاربران فعلی تأثیر
بگذارد مطلوب است.
-1
مشابه -S است، اما سرور پس از یک نشست خارج میشود. این حالت فقط برای
اشکالزدایی است.
-T
اجرای سرور در حالت ریسهای (threaded). سرور به جای انشعاب یک فرآیند،
برای هر اتصال یک ریسه ایجاد میکند. تنها در سیستمهای یونیکس که
ریسههای POSIX را ارائه میدهند در دسترس است.
-s
استفاده از پروتکل SR (منسوخشده).
-z
استفاده از پروتکل Z39.50 (پیشفرض). این گزینه و -s مکمل یکدیگرند.
میتوانید از هر دو چندین بار در یک خط فرمان، بین مشخصههای شنونده (در
زیر ببینید) استفاده کنید. به این ترتیب، میتوانید سرور را طوری تنظیم
کنید که به طور همزمان برای اتصالات در هر دو پروتکل، روی درگاههای
محلی مختلف گوش فرا دهد.
-l file
پرونده لاگ.
-c config
یک گزینه کاربری که به عنوان مشخصکننده نوعی پیکربندی، معمولاً یک نام
پرونده، عمل میکند. آرگومان این گزینه به عضو configname از
statserv_options_block منتقل میشود.
-f vconfig
یک پرونده XML را مشخص میکند که یک یا چند سرور مجازی فرانتاند YAZ را
توصیف میکند.
-C fname
تنظیم نام پرونده گواهی SSL برای سرور (PEM).
-v level
سطح لاگ. از یک فهرست جداشده با کاما از اعضای مجموعه
{fatal,debug,warn,log,malloc,all,none} استفاده کنید.
-u uid
تنظیم شناسه کاربر (UID). شناسه کاربری واقعی فرآیند سرور را روی
کاربر دادهشده تنظیم میکند. این گزینه زمانی مفید است که مایل نیستید
سرور به عنوان ریشه اجرا شود، اما برای اتصال به یک درگاه ممتاز باید
آن را به عنوان ریشه راهاندازی کنید.
-w dir
سرور قبل از گوش دادن به اتصالات ورودی به این دایرکتوری تغییر مسیر
میدهد. این گزینه زمانی مفید است که سرور از دیمن inetd کار میکند (به
-i مراجعه کنید).
-p pidfile
مشخص میکند که سرور باید شناسه فرآیند (PID) خود را در پرونده دادهشده
توسط pidfile بنویسد. یک مکان معمول /var/run/yaz-ztest.pid خواهد
بود.
-i
استفاده از این گزینه برای اجرای سرور از طریق سرور inetd (فقط
یونیکس).
-D
استفاده از این گزینه برای اینکه سرور خود را در پسزمینه قرار داده و
به عنوان دیمن اجرا شود. اگر هیچیک از گزینههای -i یا -D داده نشوند،
سرور در پیشزمینه شروع به کار میکند.
-install
استفاده از این گزینه برای نصب سرور به عنوان یک سرویس NT (فقط در
ویندوز NT/2000/XP). با مراجعه به بخش Services در Control Panel سرور
را کنترل کنید.
-installa
استفاده از این گزینه برای نصب سرور به عنوان یک سرویس NT و
علامتگذاری آن به عنوان "شروع خودکار" (auto-start). با مراجعه به بخش
Services در Control Panel سرور را کنترل کنید.
-remove
استفاده از این گزینه برای حذف سرور از سرویسهای NT (فقط در ویندوز
NT/2000/XP).
-t minutes
مهلت زمانی عدم فعالیت نشست، بر حسب دقیقه.
-k size
حداکثر اندازه رکورد/اندازه پیام، بر حسب کیلوبایت.
-K
اجبار به عدم استفاده از keepalive برای نشستهای HTTP. به طور پیشفرض
GFS نشستها را برای نشستهای HTTP 1.1 زنده نگه میدارد (همانطور که
توسط استاندارد تعریف شده است). استفاده از این گزینه، GFS را وادار
میکند تا اتصال را برای هر عملیات ببندد.
-r size
حداکثر اندازه پرونده لاگ قبل از چرخش (rotation)، بر حسب کیلوبایت.
اندازه پیشفرض 1048576 کیلوبایت (معادل 1 گیگابایت) است.
-d daemon
تنظیم نام دیمن برای استفاده در پرونده دسترسی میزبانها. به
hosts_access(5) و tcpd(8) مراجعه کنید.
-m time-format
تنظیم قالب برچسبهای زمانی در پرونده لاگ. رشتهای را در قالب ورودی
strftime() مشخص کنید.
-V
نمایش نسخه YAZ و خروج.
آزمایش (TESTING)
yaz-ztest به طور معمول یک تعداد نتیجه تصادفی بین 0 و 24 برمیگرداند. با
این حال، اگر عبارت پرسوجو شامل ارقام پیشرو باشد، مقدار صحیح آن عبارت به
عنوان تعداد نتایج استفاده میشود. این به آزمایشکنندگان اجازه میدهد هر
تعداد نتیجهای را دریافت کنند. yaz-ztest شامل 24 رکورد MARC برای آزمایش
است. تعداد نتایج فراتر از 24 باعث میشود yaz-ztest همان دسته رکورد را
بارها و بارها برگرداند. بنابراین رکورد در موقعیت 1، 25، 49 و غیره معادل
یکدیگر هستند.
برای XML، اگر هیچ مجموعه عنصری داده نشود یا عنصر دارای مقدار "marcxml"
باشد، MARCXML برگردانده میشود (هر یک از 24 رکورد ساختگی از ISO2709 به
XML تبدیل میشوند). برای مجموعه عنصر OP، در این صورت OPAC XML برگردانده
میشود.
برنامه yaz-ztest همچنین ممکن است رکوردهای XML از پیش تعریفشده را
برگرداند (برای آزمایش). این مورد در صورتی فعال میشود که متغیر محیطی
YAZ_ZTEST_XML_FETCH تعریف شده باشد. یک رکورد از یک پرونده واکشی میشود
(یک رکورد در هر پرونده). مسیر نام پرونده به صورت FE.d.xml است که در آن
F مقدار YAZ_ZTEST_XML_FETCH (احتمالاً خالی)، E مجموعه عنصر، و d موقعیت
رکورد (با شروع از 1) است.
پایگاههای داده زیر توسط yaz-ztest پشتیبانی میشوند: Default، slow و db.*
(تمام پایگاههای داده با پیشوند "db"). هر پایگاهداده دیگری باعث میشود
yaz-ztest کد خطای تشخیصی 109 را با عنوان "Database unavailable"
برگرداند.
گزینههای جستجو ممکن است به شکل آرگومانهای get در URL به عنوان بخشی از
نام پایگاهداده Z39.50 گنجانده شوند. گزینههای پایگاهداده زیر موجود
هستند: search-delay، present-delay، fetch-delay و seed.
گزینههای قبلی از نوع تأخیر، یک تأخیر ساختگی (sleep) را مشخص میکنند که
yaz-ztest به ترتیب هنگام جستجو، ارائه و واکشی رکوردها انجام میدهد.
مقدار تأخیر ممکن است یک مقدار ممیز شناور ثابت باشد که تأخیر را بر حسب
ثانیه مشخص میکند. از طرف دیگر، مقدار میتواند به صورت دو عدد ممیز شناور
جداشده با دونقطه داده شود که باعث میشود yaz-ztest یک وقفه تصادفی بین
عدد اول و دوم انجام دهد.
پارامتر پایگاهداده seed یک عدد صحیح به عنوان مقدار میگیرد. این کار تابع
srand را با این عدد صحیح فراخوانی میکند تا اطمینان حاصل شود که رفتار
تصادفی قابل تکرار است.
فرض کنید میخواهیم جستجوها بین 0.1 و 0.5 ثانیه طول بکشند و یک واکشی 0.2
ثانیه طول بکشد. برای دسترسی به پایگاهداده آزمایشی Default از عبارت زیر
استفاده میکنیم: Default?search-delay=0.1:0.5&fetch-delay=0.2.
پیکربندی GFS و میزبانهای مجازی (GFS CONFIGURATION AND VIRTUAL HOSTS)
مکانیزم میزبانهای مجازی (Virtual hosts) به سرور فرانتاند YAZ اجازه
میدهد تا از چندین بکاند پشتیبانی کند. یک بکاند بر اساس اتصال TCP/IP
(درگاه + نشانی شنونده) و/یا میزبان مجازی انتخاب میشود.
یک بکاند میتواند طوری پیکربندی شود که در یک دایرکتوری کاری خاص اجرا
شود. یا فرانتاند YAZ ممکن است تبدیل CQL به RPN را انجام دهد، بنابراین
اجازه میدهد بکاندهای سنتی Z39.50 به عنوان سرویس SRW/SRU ارائه شوند.
اطلاعات SRW/SRU Explain برای یک بکاند خاص نیز میتواند مشخص شود.
برای پروتکل HTTP، میزبان مجازی در سرآیند Host مشخص میشود. برای پروتکل
Z39.50، میزبان مجازی همانند Initialize Request در OtherInfo با شناسه
OID 1.2.840.10003.10.1000.81.1 مشخص میگردد.
نکته
همه کلاینتهای Z39.50 اجازه تنظیم اطلاعات VHOST را نمیدهند. برای
آنها، انتخاب بکاند باید تنها به اطلاعات TCP/IP (درگاه و نشانی) متکی
باشد.
سرور فرانتاند YAZ از XML برای توصیف پیکربندیهای بکاند استفاده میکند.
گزینه خط فرمان -f نام پرونده پیکربندی XML را مشخص میکند.
این پیکربندی از عنصر ریشه yazgfs استفاده میکند. این عنصر شامل فهرستی از
عناصر listen و به دنبال آن یک یا چند عنصر server است.
عنصر listen شنونده (نقطه پایانی انتقال) مانند TCP/IP، سوکت پرونده
یونیکس یا سرور SSL را توصیف میکند. محتوای یک شنونده:
CDATA (الزامی)
بخش CDATA برای عنصر listen رشته شنونده را در بر دارد، مانند
tcp:@:210، tcp:server1:2100 و غیره.
صفت id (اختیاری)
شناسه برای این شنونده. ممکن است از بخشهای سرور به آن ارجاع داده
شود.
نکته
ما انتظار داریم در نسخه آینده اطلاعات بیشتری به بخش listen اضافه
شود، مانند پرونده CERT برای سرورهای SSL.
عنصر server یک سرور و پارامترهای مربوط به این نوع سرور را توصیف میکند.
محتوای یک سرور:
صفت id (اختیاری)
شناسه برای این سرور. در حال حاضر برای هیچ کاری استفاده نمیشود، اما
ممکن است برای اهداف ثبت لاگ به کار رود.
صفت listenref (اختیاری)
یک یا چند شنونده را برای این سرور مشخص میکند. هر شناسه سرور با کاما
جدا میشود. اگر این صفت داده نشود، سرور از تمام شنوندگان قابل دسترسی
است. با این حال برای استفاده واقعی از سرور، میزبان مجازی در صورت
مشخص شدن در پیکربندی باید مطابقت داشته باشد.
عنصر config (اختیاری)
پیکربندی سرور را مشخص میکند. این معادل پیکربندی مشخصشده با استفاده
از گزینه خط فرمان -c است.
عنصر directory (اختیاری)
یک دایرکتوری کاری را برای این سرور بکاند مشخص میکند. در صورت تعیین،
فرانتاند YAZ هر زمان که بکاندی از این نوع شروع شود (گرداننده بکاند
bend_start)، متوقف شود (گرداننده بکاند hand_stop) و مقداردهی اولیه
شود (bend_init)، دایرکتوری کاری جاری را به این دایرکتوری تغییر
میدهد.
عنصر host (اختیاری)
میزبان مجازی را برای این سرور مشخص میکند. در صورت مشخص شدن، یک
کلاینت باید این رشته میزبان را به منظور استفاده از این بکاند تعیین
کند.
عنصر cql2rpn (اختیاری)
نام پروندهای را مشخص میکند که شامل تبدیل CQL به RPN برای این سرور
بکاند است. در صورت تعیین، سرور بکاند تنها یک پرسوجوی Type-1/RPN را
«خواهد دید».
عنصر ccl2rpn (اختیاری)
نام پروندهای را مشخص میکند که شامل تبدیل CCL به RPN برای این سرور
بکاند است. در صورت تعیین، سرور بکاند تنها یک پرسوجوی Type-1/RPN را
«خواهد دید».
عنصر stylesheet (اختیاری)
ارجاع شیوهنامه (stylesheet) را برای قرار گرفتن در پاسخهای HTTP SRU
زمانی که کلاینت یکی را مشخص نمیکند، تعیین مینماید. اگر هیچ مقداری
داده نشود و کلاینت هم مقداری تعیین نکند، هیچ ارجاع شیوهنامهای بخشی
از پاسخ HTTP SRU نخواهد بود.
عنصر client_query_charset (اختیاری)
در صورت تعیین، تبدیل از مجموعه نویسه دادهشده به UTF-8 توسط سرور
فرانتاند عمومی انجام میشود. این کار فقط برای درخواستهای جستجوی
Z39.50 اجرا میشود (فرض میشود SRU/Solr از قبل با UTF-8 کدگذاری
شدهاند).
عنصر docpath (اختیاری)
مسیری را برای دسترسی محلی به پرونده با استفاده از HTTP مشخص میکند.
تمام URLهایی با پیشوند پیشرو (به استثنای /) که با مقدار docpath
مطابقت داشته باشند برای دسترسی به پرونده استفاده میشوند. برای مثال،
اگر قرار است سرور دسترسی را در دایرکتوری xsl ارائه دهد، docpath
برابر با xsl خواهد بود و تمام URLهای به شکل http://host/xsl منجر به
دسترسی محلی به پرونده خواهند شد.
عنصر explain (اختیاری)
محتوای SRW/SRU ZeeRex را برای این سرور مشخص میکند. به صورت
کلمهبهکلمه برای کلاینت کپی میشود. در وضعیت کنونی، برخی از محتویات
Explain زاید به نظر میرسند زیرا اطلاعات میزبان و غیره در جای دیگری
نیز ذخیره میشوند.
عنصر maximumrecordsize (اختیاری)
حداکثر اندازه رکورد/اندازه پیام را بر حسب بایت مشخص میکند. این
مقدار همچنین به عنوان حداکثر اندازه بستههای ورودی (برای
بهروزرسانیهای رکورد و غیره) عمل میکند. این همان مقداری است که توسط
گزینه -k داده میشود.
عنصر retrievalinfo (اختیاری)
امکان بازیابی را برای پشتیبانی از تبدیلها و مشخصات قالبها/انواع
رکورد فعال میکند.
کد XML زیر سروری را پیکربندی میکند که اتصالات را از دو درگاه میپذیرد:
درگاه TCP/IP به شماره 9900 و یک سوکت پرونده محلی UNIX. ما سرور TCP/IP
را public و سرور دیگر را internal مینامیم.
tcp:@:9900
unix:/var/tmp/socket
server1.mydomain
/var/www/s1
config.cfg
server2.mydomain
/var/www/s2
config.cfg
../etc/pqf.properties
server2.mydomain
9900
a
/var/www/s3
config.cfg
سه سرور بکاند پیکربندی شده وجود دارد. دو سرور اول، "server1" و
"server2"، میتوانند توسط هر دو نشانی شنونده در دسترس قرار گیرند.
"server1" توسط همه (هر دو) در دسترس است زیرا هیچ صفت listenref مشخص
نشده است. "server2" توسط دو شنونده مشخصشده در دسترس است. به منظور
تمایز بین این دو، یک میزبان مجازی برای هر سرور در عناصر host مشخص شده
است.
برای "server2" عناصری برای تبدیل CQL به RPN پشتیبانی شده و اطلاعات
explain اضافه شده است (در اینجا یک نمونه کوتاه برای کوچک نگه داشتن مثال
آورده شده است).
سرور سوم، "server3" تنها از طریق شنونده "internal" قابل دسترسی است.
فایلها (FILES)
yaz-/ztest/yaz-ztest.c
yaz-/include/yaz/backend.h
همچنین ببینید (SEE ALSO)
yaz(7) yaz-log(7)
نویسندگان (AUTHORS)
Index Data
YAZ 5.37.3 05/20/2026 YAZ-ZTEST(8)