'\" t .\" Title: yaz-ztest .\" Author: Index Data .\" Generator: DocBook XSL Stylesheets vsnapshot .\" Date: 05/20/2026 .\" Manual: System management commands .\" Source: YAZ 5.37.3 .\" Language: English .\" .TH "YAZ\-ZTEST" "8" "05/20/2026" "YAZ 5.37.3" "System management commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "نام (NAME)" yaz\-ztest \- سرور آزمایشی Z39.50/SRU .SH "خلاصه دستور (SYNOPSIS)" .HP \w'\fBapplication\fR\ 'u \fBapplication\fR [\fB\-install\fR] [\fB\-installa\fR] [\fB\-remove\fR] [\fB\-a\ \fR\fB\fIfile\fR\fR] [\fB\-v\ \fR\fB\fIlevel\fR\fR] [\fB\-l\ \fR\fB\fIfile\fR\fR] [\fB\-u\ \fR\fB\fIuid\fR\fR] [\fB\-c\ \fR\fB\fIconfig\fR\fR] [\fB\-f\ \fR\fB\fIvconfig\fR\fR] [\fB\-C\ \fR\fB\fIfname\fR\fR] [\fB\-t\ \fR\fB\fIminutes\fR\fR] [\fB\-k\ \fR\fB\fIkilobytes\fR\fR] [\fB\-K\fR] [\fB\-d\ \fR\fB\fIdaemon\fR\fR] [\fB\-w\ \fR\fB\fIdir\fR\fR] [\fB\-p\ \fR\fB\fIpidfile\fR\fR] [\fB\-r\ \fR\fB\fIkilobytes\fR\fR] [\fB\-ziDSTV1\fR] [listener\-spec...] .SH "توضیحات (DESCRIPTION)" .PP \fByaz\-ztest\fR یک سرور آزمایشی Z39\&.50/SRU است که از API سرور فرانت‌اند عمومی YAZ (GFS) استفاده می‌کند\&. این سرور مانند یک سرور واقعی Z39\&.50/SRU عمل می‌کند اما از پایگاه‌داده استفاده نمی‌کند\&. این برنامه تعداد نتایج تصادفی را برمی‌گرداند و زیرمجموعه‌ای از چند رکورد داخلی را ارائه می‌دهد\&. .PP مشخصه \fIlistener\-spec\fR شامل یک حالت انتقال به همراه دو‌نقطه و به دنبال آن یک نشانی شنونده است\&. حالت انتقال یکی از موارد tcp، unix یا ssl است\&. .PP برای TCP و SSL، یک نشانی به شکل زیر است: .sp .if n \{\ .RS 4 .\} .nf hostname | IP\-number [ : portnumber ] .fi .if n \{\ .RE .\} .PP برای سوکت محلی UNIX، نشانی نام پرونده سوکت محلی است\&. .SH "گزینه‌ها (OPTIONS)" .PP \-a \fIfile\fR .RS 4 مشخص کردن پرونده‌ای برای تخلیه (dump) واحدهای PDU (برای اهداف عیب‌یابی)\&. نام ویژه \- (خط تیره) خروجی را به خروجی خطای استاندارد (stderr) ارسال می‌کند\&. .RE .PP \-S .RS 4 عدم انشعاب فرآیند (fork) یا ایجاد ریسه‌ها در درخواست‌های اتصال\&. این گزینه برای اشکال‌زدایی مناسب است، اما برای عملیات واقعی توصیه نمی‌شود: اگرچه سرور ناهمگام و نامسدودکننده است، اما جلوگیری از این که نقص نرم‌افزاری (یا به عبارتی کرش) بر تمام کاربران فعلی تأثیر بگذارد مطلوب است\&. .RE .PP \-1 .RS 4 مشابه \-S است، اما سرور پس از یک نشست خارج می‌شود\&. این حالت \fIفقط\fR برای اشکال‌زدایی است\&. .RE .PP \-T .RS 4 اجرای سرور در حالت ریسه‌ای (threaded)\&. سرور به جای انشعاب یک فرآیند، برای هر اتصال یک ریسه ایجاد می‌کند\&. تنها در سیستم‌های یونیکس که ریسه‌های POSIX را ارائه می‌دهند در دسترس است\&. .RE .PP \-s .RS 4 استفاده از پروتکل SR (منسوخ‌شده)\&. .RE .PP \-z .RS 4 استفاده از پروتکل Z39\&.50 (پیش‌فرض)\&. این گزینه و \-s مکمل یکدیگرند\&. می‌توانید از هر دو چندین بار در یک خط فرمان، بین مشخصه‌های شنونده (در زیر ببینید) استفاده کنید\&. به این ترتیب، می‌توانید سرور را طوری تنظیم کنید که به طور همزمان برای اتصالات در هر دو پروتکل، روی درگاه‌های محلی مختلف گوش فرا دهد\&. .RE .PP \-l \fIfile\fR .RS 4 پرونده لاگ\&. .RE .PP \-c \fIconfig\fR .RS 4 یک گزینه کاربری که به عنوان مشخص‌کننده نوعی پیکربندی، معمولاً یک نام پرونده، عمل می‌کند\&. آرگومان این گزینه به عضو configname از statserv_options_block منتقل می‌شود\&. .RE .PP \-f \fIvconfig\fR .RS 4 یک پرونده XML را مشخص می‌کند که یک یا چند سرور مجازی فرانت‌اند YAZ را توصیف می‌کند\&. .RE .PP \-C \fIfname\fR .RS 4 تنظیم نام پرونده گواهی SSL برای سرور (PEM)\&. .RE .PP \-v \fIlevel\fR .RS 4 سطح لاگ\&. از یک فهرست جداشده با کاما از اعضای مجموعه {fatal,debug,warn,log,malloc,all,none} استفاده کنید\&. .RE .PP \-u \fIuid\fR .RS 4 تنظیم شناسه کاربر (UID)\&. شناسه کاربری واقعی فرآیند سرور را روی کاربر داده‌شده تنظیم می‌کند\&. این گزینه زمانی مفید است که مایل نیستید سرور به عنوان ریشه اجرا شود، اما برای اتصال به یک درگاه ممتاز باید آن را به عنوان ریشه راه‌اندازی کنید\&. .RE .PP \-w \fIdir\fR .RS 4 سرور قبل از گوش دادن به اتصالات ورودی به این دایرکتوری تغییر مسیر می‌دهد\&. این گزینه زمانی مفید است که سرور از دیمن inetd کار می‌کند (به \-i مراجعه کنید)\&. .RE .PP \-p \fIpidfile\fR .RS 4 مشخص می‌کند که سرور باید شناسه فرآیند (PID) خود را در پرونده داده‌شده توسط \fIpidfile\fR بنویسد\&. یک مکان معمول /var/run/yaz\-ztest\&.pid خواهد بود\&. .RE .PP \-i .RS 4 استفاده از این گزینه برای اجرای سرور از طریق سرور inetd (فقط یونیکس)\&. .RE .PP \-D .RS 4 استفاده از این گزینه برای اینکه سرور خود را در پس‌زمینه قرار داده و به عنوان دیمن اجرا شود\&. اگر هیچ‌یک از گزینه‌های \-i یا \-D داده نشوند، سرور در پیش‌زمینه شروع به کار می‌کند\&. .RE .PP \-install .RS 4 استفاده از این گزینه برای نصب سرور به عنوان یک سرویس NT (فقط در ویندوز NT/2000/XP)\&. با مراجعه به بخش Services در Control Panel سرور را کنترل کنید\&. .RE .PP \-installa .RS 4 استفاده از این گزینه برای نصب سرور به عنوان یک سرویس NT و علامت‌گذاری آن به عنوان "شروع خودکار" (auto-start)\&. با مراجعه به بخش Services در Control Panel سرور را کنترل کنید\&. .RE .PP \-remove .RS 4 استفاده از این گزینه برای حذف سرور از سرویس‌های NT (فقط در ویندوز NT/2000/XP)\&. .RE .PP \-t \fIminutes\fR .RS 4 مهلت زمانی عدم فعالیت نشست، بر حسب دقیقه\&. .RE .PP \-k \fIsize\fR .RS 4 حداکثر اندازه رکورد/اندازه پیام، بر حسب کیلوبایت\&. .RE .PP \-K .RS 4 اجبار به عدم استفاده از keepalive برای نشست‌های HTTP\&. به طور پیش‌فرض GFS نشست‌ها را برای نشست‌های HTTP 1\&.1 زنده نگه می‌دارد (همان‌طور که توسط استاندارد تعریف شده است)\&. استفاده از این گزینه، GFS را وادار می‌کند تا اتصال را برای هر عملیات ببندد\&. .RE .PP \-r \fIsize\fR .RS 4 حداکثر اندازه پرونده لاگ قبل از چرخش (rotation)، بر حسب کیلوبایت\&. اندازه پیش‌فرض 1048576 کیلوبایت (معادل 1 گیگابایت) است\&. .RE .PP \-d \fIdaemon\fR .RS 4 تنظیم نام دیمن برای استفاده در پرونده دسترسی میزبان‌ها\&. به \fBhosts_access\fR(5) و \fBtcpd\fR(8) مراجعه کنید\&. .RE .PP \-m \fItime\-format\fR .RS 4 تنظیم قالب برچسب‌های زمانی در پرونده لاگ\&. رشته‌ای را در قالب ورودی strftime() مشخص کنید\&. .RE .PP \-V .RS 4 نمایش نسخه YAZ و خروج\&. .RE .SH "آزمایش (TESTING)" .PP \fByaz\-ztest\fR به طور معمول یک تعداد نتیجه تصادفی بین 0 و 24 برمی‌گرداند\&. با این حال، اگر عبارت پرس‌وجو شامل ارقام پیشرو باشد، مقدار صحیح آن عبارت به عنوان تعداد نتایج استفاده می‌شود\&. این به آزمایش‌کنندگان اجازه می‌دهد هر تعداد نتیجه‌ای را دریافت کنند\&. \fByaz\-ztest\fR شامل 24 رکورد MARC برای آزمایش است\&. تعداد نتایج فراتر از 24 باعث می‌شود \fByaz\-ztest\fR همان دسته رکورد را بارها و بارها برگرداند\&. بنابراین رکورد در موقعیت 1، 25، 49 و غیره معادل یکدیگر هستند\&. .PP برای XML، اگر هیچ مجموعه عنصری داده نشود یا عنصر دارای مقدار "marcxml" باشد، MARCXML برگردانده می‌شود (هر یک از 24 رکورد ساختگی از ISO2709 به XML تبدیل می‌شوند)\&. برای مجموعه عنصر OP، در این صورت OPAC XML برگردانده می‌شود\&. .PP برنامه yaz\-ztest همچنین ممکن است رکوردهای XML از پیش تعریف‌شده را برگرداند (برای آزمایش)\&. این مورد در صورتی فعال می‌شود که متغیر محیطی YAZ_ZTEST_XML_FETCH تعریف شده باشد\&. یک رکورد از یک پرونده واکشی می‌شود (یک رکورد در هر پرونده)\&. مسیر نام پرونده به صورت \fIF\fR\fIE\fR\&.\fId\fR\&.xml است که در آن \fIF\fR مقدار YAZ_ZTEST_XML_FETCH (احتمالاً خالی)، \fIE\fR مجموعه عنصر، و \fId\fR موقعیت رکورد (با شروع از 1) است\&. .PP پایگاه‌های داده زیر توسط \fByaz\-ztest\fR پشتیبانی می‌شوند: Default، slow و db\&.* (تمام پایگاه‌های داده با پیشوند "db")\&. هر پایگاه‌داده دیگری باعث می‌شود \fByaz\-ztest\fR کد خطای تشخیصی 109 را با عنوان "Database unavailable" برگرداند\&. .PP گزینه‌های جستجو ممکن است به شکل آرگومان‌های get در URL به عنوان بخشی از نام پایگاه‌داده Z39\&.50 گنجانده شوند\&. گزینه‌های پایگاه‌داده زیر موجود هستند: search\-delay، present\-delay، fetch\-delay و seed\&. .PP گزینه‌های قبلی از نوع تأخیر، یک تأخیر ساختگی (sleep) را مشخص می‌کنند که \fByaz\-ztest\fR به ترتیب هنگام جستجو، ارائه و واکشی رکوردها انجام می‌دهد\&. مقدار تأخیر ممکن است یک مقدار ممیز شناور ثابت باشد که تأخیر را بر حسب ثانیه مشخص می‌کند\&. از طرف دیگر، مقدار می‌تواند به صورت دو عدد ممیز شناور جداشده با دونقطه داده شود که باعث می‌شود \fByaz\-ztest\fR یک وقفه تصادفی بین عدد اول و دوم انجام دهد\&. .PP پارامتر پایگاه‌داده seed یک عدد صحیح به عنوان مقدار می‌گیرد\&. این کار تابع srand را با این عدد صحیح فراخوانی می‌کند تا اطمینان حاصل شود که رفتار تصادفی قابل تکرار است\&. .PP فرض کنید می‌خواهیم جستجوها بین 0\&.1 و 0\&.5 ثانیه طول بکشند و یک واکشی 0\&.2 ثانیه طول بکشد\&. برای دسترسی به پایگاه‌داده آزمایشی Default از عبارت زیر استفاده می‌کنیم: Default?search\-delay=0\&.1:0\&.5&fetch\-delay=0\&.2\&. .SH "پیکربندی GFS و میزبان‌های مجازی (GFS CONFIGURATION AND VIRTUAL HOSTS)" .PP مکانیزم میزبان‌های مجازی (Virtual hosts) به سرور فرانت‌اند YAZ اجازه می‌دهد تا از چندین بک‌اند پشتیبانی کند\&. یک بک‌اند بر اساس اتصال TCP/IP (درگاه + نشانی شنونده) و/یا میزبان مجازی انتخاب می‌شود\&. .PP یک بک‌اند می‌تواند طوری پیکربندی شود که در یک دایرکتوری کاری خاص اجرا شود\&. یا فرانت‌اند YAZ ممکن است تبدیل CQL به RPN را انجام دهد، بنابراین اجازه می‌دهد بک‌اندهای سنتی Z39\&.50 به عنوان سرویس SRW/SRU ارائه شوند\&. اطلاعات SRW/SRU Explain برای یک بک‌اند خاص نیز می‌تواند مشخص شود\&. .PP برای پروتکل HTTP، میزبان مجازی در سرآیند Host مشخص می‌شود\&. برای پروتکل Z39\&.50، میزبان مجازی همانند Initialize Request در OtherInfo با شناسه OID 1\&.2\&.840\&.10003\&.10\&.1000\&.81\&.1 مشخص می‌گردد\&. .if n \{\ .sp .\} .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBنکته\fR .ps -1 .br .PP همه کلاینت‌های Z39\&.50 اجازه تنظیم اطلاعات VHOST را نمی‌دهند\&. برای آن‌ها، انتخاب بک‌اند باید تنها به اطلاعات TCP/IP (درگاه و نشانی) متکی باشد\&. .sp .5v .RE .PP سرور فرانت‌اند YAZ از XML برای توصیف پیکربندی‌های بک‌اند استفاده می‌کند\&. گزینه خط فرمان \-f نام پرونده پیکربندی XML را مشخص می‌کند\&. .PP این پیکربندی از عنصر ریشه yazgfs استفاده می‌کند\&. این عنصر شامل فهرستی از عناصر listen و به دنبال آن یک یا چند عنصر server است\&. .PP عنصر listen شنونده (نقطه پایانی انتقال) مانند TCP/IP، سوکت پرونده یونیکس یا سرور SSL را توصیف می‌کند\&. محتوای یک شنونده: .PP CDATA (الزامی) .RS 4 بخش CDATA برای عنصر listen رشته شنونده را در بر دارد، مانند tcp:@:210، tcp:server1:2100 و غیره\&. .RE .PP صفت id (اختیاری) .RS 4 شناسه برای این شنونده\&. ممکن است از بخش‌های سرور به آن ارجاع داده شود\&. .RE .if n \{\ .sp .\} .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBنکته\fR .ps -1 .br .PP ما انتظار داریم در نسخه آینده اطلاعات بیشتری به بخش listen اضافه شود، مانند پرونده CERT برای سرورهای SSL\&. .sp .5v .RE .PP عنصر server یک سرور و پارامترهای مربوط به این نوع سرور را توصیف می‌کند\&. محتوای یک سرور: .PP صفت id (اختیاری) .RS 4 شناسه برای این سرور\&. در حال حاضر برای هیچ کاری استفاده نمی‌شود، اما ممکن است برای اهداف ثبت لاگ به کار رود\&. .RE .PP صفت listenref (اختیاری) .RS 4 یک یا چند شنونده را برای این سرور مشخص می‌کند\&. هر شناسه سرور با کاما جدا می‌شود\&. اگر این صفت داده نشود، سرور از تمام شنوندگان قابل دسترسی است\&. با این حال برای استفاده واقعی از سرور، میزبان مجازی در صورت مشخص شدن در پیکربندی باید مطابقت داشته باشد\&. .RE .PP عنصر config (اختیاری) .RS 4 پیکربندی سرور را مشخص می‌کند\&. این معادل پیکربندی مشخص‌شده با استفاده از گزینه خط فرمان \-c است\&. .RE .PP عنصر directory (اختیاری) .RS 4 یک دایرکتوری کاری را برای این سرور بک‌اند مشخص می‌کند\&. در صورت تعیین، فرانت‌اند YAZ هر زمان که بک‌اندی از این نوع شروع شود (گرداننده بک‌اند bend_start)، متوقف شود (گرداننده بک‌اند hand_stop) و مقداردهی اولیه شود (bend_init)، دایرکتوری کاری جاری را به این دایرکتوری تغییر می‌دهد\&. .RE .PP عنصر host (اختیاری) .RS 4 میزبان مجازی را برای این سرور مشخص می‌کند\&. در صورت مشخص شدن، یک کلاینت \fIباید\fR این رشته میزبان را به منظور استفاده از این بک‌اند تعیین کند\&. .RE .PP عنصر cql2rpn (اختیاری) .RS 4 نام پرونده‌ای را مشخص می‌کند که شامل تبدیل CQL به RPN برای این سرور بک‌اند است\&. در صورت تعیین، سرور بک‌اند تنها یک پرس‌وجوی Type\-1/RPN را «خواهد دید»\&. .RE .PP عنصر ccl2rpn (اختیاری) .RS 4 نام پرونده‌ای را مشخص می‌کند که شامل تبدیل CCL به RPN برای این سرور بک‌اند است\&. در صورت تعیین، سرور بک‌اند تنها یک پرس‌وجوی Type\-1/RPN را «خواهد دید»\&. .RE .PP عنصر stylesheet (اختیاری) .RS 4 ارجاع شیوه‌نامه (stylesheet) را برای قرار گرفتن در پاسخ‌های HTTP SRU زمانی که کلاینت یکی را مشخص نمی‌کند، تعیین می‌نماید\&. اگر هیچ مقداری داده نشود و کلاینت هم مقداری تعیین نکند، هیچ ارجاع شیوه‌نامه‌ای بخشی از پاسخ HTTP SRU نخواهد بود\&. .RE .PP عنصر client_query_charset (اختیاری) .RS 4 در صورت تعیین، تبدیل از مجموعه نویسه داده‌شده به UTF\-8 توسط سرور فرانت‌اند عمومی انجام می‌شود\&. این کار فقط برای درخواست‌های جستجوی Z39\&.50 اجرا می‌شود (فرض می‌شود SRU/Solr از قبل با UTF\-8 کدگذاری شده‌اند)\&. .RE .PP عنصر docpath (اختیاری) .RS 4 مسیری را برای دسترسی محلی به پرونده با استفاده از HTTP مشخص می‌کند\&. تمام URLهایی با پیشوند پیشرو (به استثنای /) که با مقدار docpath مطابقت داشته باشند برای دسترسی به پرونده استفاده می‌شوند\&. برای مثال، اگر قرار است سرور دسترسی را در دایرکتوری xsl ارائه دهد، docpath برابر با xsl خواهد بود و تمام URLهای به شکل http://host/xsl منجر به دسترسی محلی به پرونده خواهند شد\&. .RE .PP عنصر explain (اختیاری) .RS 4 محتوای SRW/SRU ZeeRex را برای این سرور مشخص می‌کند\&. به صورت کلمه‌به‌کلمه برای کلاینت کپی می‌شود\&. در وضعیت کنونی، برخی از محتویات Explain زاید به نظر می‌رسند زیرا اطلاعات میزبان و غیره در جای دیگری نیز ذخیره می‌شوند\&. .RE .PP عنصر maximumrecordsize (اختیاری) .RS 4 حداکثر اندازه رکورد/اندازه پیام را بر حسب بایت مشخص می‌کند\&. این مقدار همچنین به عنوان حداکثر اندازه بسته‌های \fIورودی\fR (برای به‌روزرسانی‌های رکورد و غیره) عمل می‌کند\&. این همان مقداری است که توسط گزینه \-k داده می‌شود\&. .RE .PP عنصر retrievalinfo (اختیاری) .RS 4 امکان بازیابی را برای پشتیبانی از تبدیل‌ها و مشخصات قالب‌ها/انواع رکورد فعال می‌کند\&. .RE .PP کد XML زیر سروری را پیکربندی می‌کند که اتصالات را از دو درگاه می‌پذیرد: درگاه TCP/IP به شماره 9900 و یک سوکت پرونده محلی UNIX\&. ما سرور TCP/IP را public و سرور دیگر را internal می‌نامیم\&. .sp .if n \{\ .RS 4 .\} .nf 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 .fi .if n \{\ .RE .\} .PP سه سرور بک‌اند پیکربندی شده وجود دارد\&. دو سرور اول، "server1" و "server2"، می‌توانند توسط هر دو نشانی شنونده در دسترس قرار گیرند\&. "server1" توسط همه (هر دو) در دسترس است زیرا هیچ صفت listenref مشخص نشده است\&. "server2" توسط دو شنونده مشخص‌شده در دسترس است\&. به منظور تمایز بین این دو، یک میزبان مجازی برای هر سرور در عناصر host مشخص شده است\&. .PP برای "server2" عناصری برای تبدیل CQL به RPN پشتیبانی شده و اطلاعات explain اضافه شده است (در اینجا یک نمونه کوتاه برای کوچک نگه داشتن مثال آورده شده است)\&. .PP سرور سوم، "server3" تنها از طریق شنونده "internal" قابل دسترسی است\&. .SH "فایل‌ها (FILES)" .PP yaz\-/ztest/yaz\-ztest\&.c .PP yaz\-/include/yaz/backend\&.h .SH "همچنین ببینید (SEE ALSO)" .PP \fByaz\fR(7) \fByaz-log\fR(7) .SH "نویسندگان (AUTHORS)" .PP \fBIndex Data\fR