
تفاوت در Login: شیوههای جدید در مقابل سیوه قدیمی
همانطور که JMeter با استفاده از SLF4J به عنوان Logging API و Apache Log4j 2 به عنوان یک Logging Framework از ۳٫۲ استفاده میکند، هیچ یک از Log Levelهای استفاده شده قبل از ۳٫۲ نمیتوانند کاملا با یکی از Log Levelهای موجود و ارائه شده توسط SLF4J/Log4j2 تطابق یابند. بنابراین اگر میخواهید به هر یک از پیکربندیهای Logging موجود و Logging Code مهاجرت(Migration) کنید، لطفا تفاوتهای زیر و شیوههای پیشنهادی جدید را در ذهن داشته باشید.
Category | شیوههای قدیمی قبل از 3.2 | شیوههای جدید بعد از 3.2 |
---|---|---|
منبع Logger | Logger Reference از طریق LoggingManager | از SLF4J API با category Class یا explicit Class استفاده کنید: |
LoggingManager.getLoggerFor(String category); | LoggerFactory.getLogger(String category); |
|
Log Levelها در آرگومانهای Command Line یا Configuration | Log Level قدیمی: | نگاشت به Levelهای جدید از طریق SLF4J/Log4j2: |
توجه داشته باشید: JMeter به طور کلی از Pop-up Dialog Box برای Errorها استفاده نمیکند، زیرا این جعبههای محاورهای با تستهای در حال اجرا تداخل دارند. همچنین هیچ خطایی برای متغیر یا تابع اشتباه نوشته شده گزارش نمیشود؛ در عوض برای آن فقط یک Refrence استفاده میشود. برای اطلاعات بیشتر به توابع و متغیرها مراجعه کنید.
اگر JMeter در حین آزمون یک Error را تشخیص دهد، یک پیام در فایل Log ثبت میشود. نام Log File در فایل log4j2.xml(و یا با استفاده از گزینه j-، زیر را ببینید) تعریف شده است. پیشفرض آن jmeter.log است و در دایرکتوری که JMeter از آن راهاندازی شده است، یافته خواهد شد.
منوی Options → Log Viewer فایل log را در قسمت پایین پنجره اصلی JMeter نمایش میدهد.
در GUI Mode، تعداد پیامهای Error/Fatal Message در Log File لاگ شده است که در بالا سمت راست قابل رویت است.

Command-Line Option که به صورت j jmeterlogfile- شناخته میشود، اجازه میدهد پس از خواندن فایل Initial Propertyها، و قبل از اینکه هر Property دیگری پردازش شود، پردازش صورت پذیرد. بنابراین اجازه میدهد تا پیش فرض jmeter.log لغو(Override) شود. اسکریپتهای jmeter که یک Test Plan name را به عنوان یک پارامتر(مثلا jmeter-n.cmd) دریافت میکنند، به منظور تعریف Log File با استفاده از Test Plan name به روز میشوند، به عنوان نمونه برای Test Plan به نام Test27.jmx فایل لاگ به Test27.log سِت میشود.
هنگام اجرای ویندوز، این فایل ممکن است به عنوان فقط jmeter ظاهر شود مگر اینکه شما ویندوز را به شکلی تنظیم کرده باشید که تا پسوندهای فایل را نمایش دهد.[به هر حال شما باید هر کاری را انجام دهید تا بتوانید ویروسها و سایر بدافزارها را که متظاهر به فایل متنی هستند را تشخیص دهید…]
علاوه بر Errorهای Recording، فایل jmeter.log برخی از اطلاعات در مورد اجرای تست را رکورد میکند. مثلا:
۲۰۱۷-۰۳-۰۱ ۱۲:۱۹:۲۰,۳۱۴ INFO o.a.j.JMeter: Version 3.2.20170301
۲۰۱۷-۰۳-۰۱ ۱۲:۱۹:۴۵,۳۱۴ INFO o.a.j.g.a.Load: Loading file: c:\mytestfiles\BSH.jmx
۲۰۱۷-۰۳-۰۱ ۱۲:۱۹:۵۲,۳۲۸ INFO o.a.j.e.StandardJMeterEngine: Running the test!
۲۰۱۷-۰۳-۰۱ ۱۲:۱۹:۵۲,۳۸۴ INFO o.a.j.e.StandardJMeterEngine: Starting 1 threads for group BSH. Ramp up = 1.
۲۰۱۷-۰۳-۰۱ ۱۲:۱۹:۵۲,۴۸۵ INFO o.a.j.e.StandardJMeterEngine: Continue on error
۲۰۱۷-۰۳-۰۱ ۱۲:۱۹:۵۲,۵۸۹ INFO o.a.j.t.JMeterThread: Thread BSH1-1 started
۲۰۱۷-۰۳-۰۱ ۱۲:۱۹:۵۲,۵۹۰ INFO o.a.j.t.JMeterThread: Thread BSH1-1 is done
۲۰۱۷-۰۳-۰۱ ۱۲:۱۹:۵۲,۶۹۱ INFO o.a.j.e.StandardJMeterEngine: Test has ended
Log File میتواند در تعیین علت یک Error مفید باشد، زیرا JMeter یک تست را برای نمایش یک دایلوگ مربوط به Error متوقف نمیکند.
یک لیست کامل از گزینههای Command Line
با استفاده از JMeter به صورت “?- jmeter” فهرستی از تمام Command Line Optionها را نمایش میدهد. این مورد در زیر نشان داده شده است.
–?
print command line options and exit
-h, –help
print usage information and exit
-v, –version
print the version information and exit
-p, –propfile <argument>
the jmeter property file to use
-q, –addprop <argument>
additional JMeter property file(s)
-t, –testfile <argument>
the jmeter test(.jmx) file to run
-l, –logfile <argument>
the file to log samples to
-i, –jmeterlogconf <argument>
jmeter logging configuration file (log4j2.xml)
-j, –jmeterlogfile <argument>
jmeter run log file (jmeter.log)
-n, –nongui
run JMeter in nongui mode
-s, –server
run the JMeter server
-H, –proxyHost <argument>
Set a proxy server for JMeter to use
-P, –proxyPort <argument>
Set proxy server port for JMeter to use
-N, –nonProxyHosts <argument>
Set nonproxy host list (e.g. *.apache.org|localhost)
-u, –username <argument>
Set username for proxy server that JMeter is to use
-a, –password <argument>
Set password for proxy server that JMeter is to use
-J, –jmeterproperty <argument>=<value>
Define additional JMeter properties
-G, –globalproperty <argument>=<value>
Define Global properties (sent to servers)
e.g. -Gport=123
or -Gglobal.properties
-D, –systemproperty <argument>=<value>
Define additional system properties
-S, –systemPropertyFile <argument>
additional system property file(s)
-f, –forceDeleteResultFile
force delete existing results files and web report folder if present before starting the test
-L, –loglevel <argument>=<value>
[category=]level e.g. jorphan=INFO, jmeter.util=DEBUG or com.example.foo=WARN
-r, –runremote
Start remote servers (as defined in remote_hosts)
-R, –remotestart <argument>
Start these remote servers (overrides remote_hosts)
-d, –homedir <argument>
the jmeter home directory to use
-X, –remoteexit
Exit the remote servers at end of test (non-GUI)
-g, –reportonly <argument>
generate report dashboard only, from a test results file
-e, –reportatendofloadtests
generate report dashboard after load test
-o, –reportoutputfolder <argument>
output folder for report dashboard
نکته: نام JMeter Log File اگر حاوی یک جفت” ‘ ” باشد، به صورت یک SimpleDateFormat(که برای تاریخ فعلی اعمال می شود) قالبریزی میشود. مثلا ‘jmeter_’yyyyMMddHHmmss’.log‘
اگر نام ویژه LAST برای Flagهای j- و t- و l- استفاده شود، آنگاه JMeter این معنی را برداشت میکند که این آخرین Test Planایست که به صورت تعاملی(Interactively) اجرا میشود.
Non-GUI Shutdown
قبل از نسخه ۲٫۵٫۱ JMeter، هنگامی که یک تست Non-GUI تکمیل میشد، JMeter تابع ()System.exit را فراخوانی میکرد. این باعث بروز مشکلاتی برای اپلیکیشنهایی میشد که مستقیما JMeter را فراهوانی میکردند. بنابراین JMeter دیگر ()System.exit را برای تکمیل تست فراخوانی نمیکند. [برخی از Fatal Errorها هنوز هم میتوانند ()System.exit را فراخوانی کنند] JMeter همه Threadهای Non-Daemonای را که شروع کرده است Exit خواهد کرد، اما ممکن است بعضی از Threadهای Non-Daemon همچنان باقی بمانند. اینها از خروج JVM جلوگیری خواهند کرد. برای تشخیص این وضعیت، JMeter یک Daemon Thread جدید را قبل از Exit آغاز میکند. این Daemon Thread برای یک مدت کوتاه منتظر میماند؛ اگر از این Wait و انتظار Return کند، آنگاه JVM قادر به Exit نخواهد بود، و Thread یک Message مبنی بر چرایی این موضوع ارائه میکند.
Property با عنوان jmeter.exit.check.pause را میتوان برای لغو مکث پیشفرض یعنی (۲۰۰۰ms(2secs استفاده کرد. اگر مقدار ۰ باشد، JMeter نیز Daemon Thread را شروع نمیکند.
قسمتهای بعدی به محض آماده شدن علاوه بر اینکه در صفحه Home وبسایت اطلاعرسانی خواهد شد، به صورت دستهبندی شده از اینجا نیز در دسترس است.