VINYLTEST(1) General Commands Manual VINYLTEST(1)

vinyltest - برنامه آزمایش برای Vinyl Cache

vinyltest [-hikLlqv] [-b size] [-D name=val] [-j jobs] [-n iter] [-t duration] file [file ...]

برنامه vinyltest یک برنامه اسکریپت‌محور است که برای آزمایش Vinyl Cache به کار می‌رود.

هنگامی که برنامه vinyltest اجرا شده و یک یا چند فایل اسکریپت به آن داده می‌شود، می‌تواند تعدادی ریسه (thread) به عنوان سرورهای پشتیبان (backends)، تعدادی ریسه به عنوان کارخواه‌ها (clients) و یک فرایند vinyld ایجاد کند. سپس از این ساختار برای شبیه‌سازی یک تراکنش جهت برانگیختن رفتاری خاص استفاده می‌شود.

گزینه‌های زیر در دسترس هستند:

تنظیم اندازه بافر داخلی (پیش‌فرض: 1M)

-D name=val تعریف ماکرو برای استفاده در اسکریپت‌ها

نمایش راهنما
تنظیم PATH و vmod_path جهت یافتن باینری‌های Vinyl Cache در درخت ساخت (build tree)
اجرای این تعداد آزمون به‌صورت موازی
ادامه دادن در صورت شکست آزمون
نگه‌داشتن همیشگی دایرکتوری‌های موقت vtc.*
نگه‌داشتن دایرکتوری‌های موقت vtc.* در صورت شکست آزمون
اجرای آزمون‌ها به این تعداد دفعات

-p name=val ارسال پارامترها به تمام خطوط فرمان vinyld

حالت بی‌صدا: گزارش تنها در صورت شکست
اتمام مهلت زمانی (timeout) آزمون‌ها پس از این مدت (پیش‌فرض: 60s)
حالت پرگو: گزارش همیشگی وقایع آزمون

file فایلی که به عنوان اسکریپت استفاده می‌شود

اگر TMPDIR در متغیرهای محیطی مقداردهی شده باشد، vinyltest برای هر آزمون دایرکتوری‌های موقت vtc.* را در $TMPDIR ایجاد می‌کند، در غیر این صورت آن‌ها را در /tmp می‌سازد.

سینتکس vtc به‌طور مفصل در vtc(7) مستند شده است. اگر نمونه‌های بیشتری نسبت به مثال زیر می‌خواهید، می‌توانید به مخزن کد منبع Vinyl Cache در مسیر bin/vinyltest/tests/ نگاهی بیندازید، جایی که تمام آزمون‌های رگرسیون (regression tests) برای Vinyl Cache نگهداری می‌شوند.

یک مثال:

vinyltest "#1029"
server s1 {
        rxreq
        expect req.url == "/bar"
        txresp -gzipbody {[bar]}
        rxreq
        expect req.url == "/foo"
        txresp -body {<h1>FOO<esi:include src="/bar"/>BARF</h1>}
} -start
vinyl v1 -vcl+backend {
        sub vcl_backend_response {
                set beresp.do_esi = true;
                if (bereq.url == "/foo") {
                        set beresp.ttl = 0s;
                } else {
                        set beresp.ttl = 10m;
                }
        }
} -start
client c1 {
        txreq -url "/bar" -hdr "Accept-Encoding: gzip"
        rxresp
        gunzip
        expect resp.bodylen == 5
        txreq -url "/foo" -hdr "Accept-Encoding: gzip"
        rxresp
        expect resp.bodylen == 21
} -run

اسکریپت بالا هنگام اجرا، یک سرور (s1) را شبیه‌سازی می‌کند که منتظر دو درخواست متفاوت است. این اسکریپت یک vinyld (v1) را راه‌اندازی کرده و تعریف سرور پشتیبان را به VCL مشخص‌شده اضافه می‌کند (-vcl+backend). در پایان، کلاینت c1 را راه‌اندازی می‌کند که یک کارخواه تکی است و دو درخواست ارسال می‌نماید.

چه در حال ساخت یک VMOD باشید و چه در حال استفاده از موردی که به‌تازگی ساخته‌اید، می‌توانید به vinyltest بگویید که یک vmod_path را به نمونه‌های vinyld که با دستور vinyl -start در مورد آزمون (test case) شما آغاز شده‌اند، ارسال کند:

vinyltest -p vmod_path=... /path/to/*.vtc

به این ترتیب می‌توانید از موارد آزمون یکسان برای هر دو حالت VMODهای نصب‌شده و ساخته‌شده استفاده کنید:

server s1 {...} -start
vinyl v1 -vcl+backend {
    import wossname;
    ...
} -start
...

شما به vmod_path محدود نیستید و می‌توانید هر پارامتری را ارسال کنید؛ این امر به شما امکان می‌دهد یک ماتریس ساخت (build matrix) را بدون تغییر در مجموعه آزمون (test suite) اجرا کنید. با استفاده از ماکروها نیز می‌توانید به همین نتیجه برسید، اما در آن صورت باید در هر بار اجرا تعریف شوند.

می‌توانید خطوط فرمان واقعی vinyld را در خروجی‌های آزمون مشاهده کنید که تقریباً به این صورت هستند:

exec vinyld [vinyltest -p params] [testing params] [vtc -arg params]

پارامترهایی که با vinyltest -p تعریف می‌کنید ممکن است توسط پارامترهایی که vinyltest برای اجرای صحیح نیاز دارد بازنویسی (override) شوند، و آن‌ها نیز ممکن است به نوبه خود توسط پارامترهای تنظیم‌شده در اسکریپت‌های آزمون بازنویسی گردند.

همچنین یک حالت ویژه وجود دارد که در آن vinyltest برای یافتن باینری‌های Vinyl Cache (برنامه‌ها و VMODها) در درخت ساخت اطراف باینری vinyltest، مقادیر PATH و vmod_path را خود ایجاد می‌کند. این حالت برای آزمایش Vinyl Cache در حال توسعه در نظر گرفته شده است و در صورت تنظیم vmod_path توسط شما، آن را نادیده خواهد گرفت.

اگر نیاز دارید VMOD خود را در برابر درخت ساخت Vinyl Cache آزمایش کنید، ابتدا باید آن را نصب کنید؛ برای مثال در یک دایرکتوری موقت. با اطلاعات ارائه‌شده توسط pkg-config(1) آن نصب، می‌توانید یک PATH مناسب برای دسترسی به برنامه‌های Vinyl و یک vmod_path برای دسترسی به VMOD خود و همچنین VMODهای توکار ایجاد کنید:

export PKG_CONFIG_PATH=/path/to/install/lib/pkgconfig
BINDIR="$(pkg-config --variable=bindir vinylapi)"
SBINDIR="$(pkg-config --variable=sbindir vinylapi)"
PATH="SBINDIR:BINDIR:$PATH"
VMODDIR="$(pkg-config --variable=vmoddir vinylapi)"
VMOD_PATH="/path/to/your/vmod/build/dir:$VMODDIR"
vinyltest -p vmod_path="$VMOD_PATH" ...

برنامه vinyltest توسط Poul-Henning Kamp < <phk@phk.freebsd.dk> > با همکاری Redpill-Linpro توسعه داده شد. این صفحه راهنما در ابتدا توسط Stig Sandbeck Mathisen < <ssm@linpro.no> > نوشته شده و سپس توسط Kristian Lyngstøl < <kristian@varnish-cache.org> > به‌روزرسانی شده است.

این سند تحت همان مجوز خود Vinyl Cache مجوزدهی شده است. برای جزئیات به LICENCE مراجعه کنید.

•
حق نشر (c) 2007-2016 متعلق به Varnish Software AS