เนื่องจากเจ้า Jmeter ที่เป็น tool ที่ใช้ประจำในการ load test ทุกๆอย่างของผมนั้น มันมี BUG ไม่สามารถส่ง message เข้า Queue JMS ที่เปิด security (user/password) ไว้ได้ จึงต้องดิ้นรนหา Tool ตัวอื่นมาช่วยทำงานนี้ให้สำเร็จ เจ้า Tool ตัวนี้ก็มีชื่อว่า The Grinder 3

ลักษณะการทำงานของ Grinder นั้นจะประกอบไปด้วย

  • Worker Process ทำหน้าที่อ่าน Test script แล้วนำมาทำงาน
  • Agent Process ทำหน้าทีเริ่มหรือหยุด worker process
  • Console แสดงข้อมูลผลการทดสอบ ศูนย์กลางการเชื่อมต่อระหว่าง process ต่างๆ

โดยก่อนที่ Grinder จะทำงานได้นั้น เราจำเป็นจะต้องสร้าง Script ที่เขียนขึ้นด้วย Jython (Python ในแบบของ Java) โดย Script ตัวนี้จะทำงานอะไรก็ได้ หมายความว่าเราสามารถทดสอบโค้ดใดๆ ก็ได้ด้วย Grinder ตัวนี้ แต่ในที่นี้ผมจะสนใจแค่การทดสอบ JMS queue เท่านั้น

ก่อนจะรัน Grinder ขึ้นมาได้นั้นเราจะต้องสร้าง script สำหรับรันเจ้า Grinder ขึ้นมาเสียก่อน โดยสามารถเข้าไปดูได้ที่นี่ http://grinder.sourceforge.net/g3/getting-started.html#howtostart

และสำหรับคนที่ต้องการจะส่ง message เข้า queue weblogic เราก็จำเป็นที่จะต้องเพิ่ม weblogic client (wlfullclient.jar) เข้าไปใน classpath ด้วย

ตัวอย่าง

CLASSPATH=%GRINDERPATH%\lib\grinder.jar;%GRINDERPATH%\lib\wlfullclient.jar;%CLASSPATH%

หลังจากนั้นให้ทำการ start console และ agent ขึ้นมาด้วย startConsole.cmd และ startAgent.cmd ตามลำดับ

ถ้าเราดู log ที่ agent จะเห็นว่า agent จะทำการเชื่อมต่อเข้าไปที่ port (6372) ที่ถูกกำหนดไว้ใน grinder.properties

แปลว่าเราสามารถรัน agent ไว้ตามเครื่องคอมพิวเตอร์เครื่องอื่นๆ เพื่อทำ distributed load test ได้อีกด้วย

หลังจากที่เราเปิดหน้า console ขึ้นมาได้แล้ว ให้เราลองรัน load test แรกของเราด้วยการกด action -> start process ซึ่งมันจะไปเรียก test script helloworld.py ที่ถูกกำหนดไว้ใน grinder.properties เช่นกัน ซึ่งต่อไปเราจะต้องทำการเปลี่ยนค่า grinder.script ให้เป็น test script อื่นๆ

กลับมาที่ test script ของเรากันบ้าง โดยในส่วนนี้เราจะแก้ test script ที่มีอยู่แล้วใน examples โดยมันมีชื่อว่า jmssender.py สิ่งที่เราจำเป็นจะต้องเพื่มเข้าไปสำหรับ jms queue ที่มีการเปิด security ไว้ก็คือ Context.SECURITY_PRINCIPAL และ Context.SECURITY_CREDENTIALS ส่วนอื่นที่จะต้องแก้ไขก็จะมี Context.INITIAL_CONTEXT_FACTORY = “weblogic.jndi.WLInitialContextFactory”

Context.PROVIDER_URL = “ t3://localhost:8888”

และชื่อ Queue ที่เราจะทำการส่ง message เข้าไป

ตัวอย่าง Script ที่ทำเสร็จแล้ว

….