Friday, March 13, 2009

Setup JMeter JMS Publisher Sampler

Even though there are documentations on how to setup and use JMeter JMS publisher sampler, it seems all of them are either inaccurate or out of date. After pulling my hair for almost two hours, I finally made it work. To avoid headache for anybody who want to set up JMeter JMS publisher sampler, I recorded the procedure as following.

We choose ActiveMQ as our JMS provider.
  1. Copy activemq-core-5.2.0.jar, jms-1.1.jar, and geronimo-j2ee-management_1.0_spec-1.0.jar into JMeter's lib directory.
  2. Create a jndi.properties file and jar it into a jar file, put the jar file into JMeter's lib directory.
  3. Confiture the JMS publisher sampler with the following settings in the JMeter GUI.
  • Check use jndi.properties
  • Connection Factory: ConnectionFactory
  • Topic: MyTopic
  • Number of messages to aggregate: 1
Here is the content of the jndi.properties file:
java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory
java.naming.provider.url=tcp://hostname:61616
topic.MyTopic=topic

There are a few catches during the setting up process:
* The ActiveMQInitialContextFactory package name must have the apache.
* ConnectionFactory can not contain any trailing space.
* The Topic JNDI name must be prefixed with topic in the jndi file.
* You must put in the Number Of messages to aggregate, otherwise there will be no messages published.

Monday, December 8, 2008

TeamCity checkout rules

In team city Version Control Settings you can include/exclude the path for checkout.
Here are a few examples:
  • I want to checkout only the directories:/project1/testing/watirtests, and /project1/ant, but not anything else under project1:
-:project1
+:project1/testing/watirtests
+:project1/ant

  • I want to checkout everything but derectories:/project1/testing/watirtests, and /project1/ant:
+:project1
-:project1/testing/watirtests
-:project1/ant

Monday, December 1, 2008

Python recursive generator to find all the files in a directory

Just for exercise, I programed the following transverse_directory function in python to find out all the files in a directory tree in python, while trying the google treasure hunt - zip:

def transverse_directory(path):
if os.path.isdir(path):
for item in os.listdir(path):
item_path = os.path.abspath(path) + os.sep + item
for file in tranverse_directory(item_path):
yield file
else:
yield path

Wednesday, November 26, 2008

Recursive lambda implementation factorial function in Python

It is easy to implement factorial function use recursive in Python, but how do you implement it by using recursive lambda in Python? Here is my try:
 
fact = lambda n: (n and n-1) and n*fact(n-1) or 1

Tuesday, November 25, 2008

What are the Secrets of the Furious Five?

Did you get the secrets of the Furious Five?

Patience(耐心), Courage(勇气), Confidence(信心), Control your strength(自制力) , Compassion(同情心)

Thursday, October 23, 2008

W3C XML Schema design

Recently, I am involved in a project to design some XML Schema for our partners. While working on it, I referred to some resources on the internet, most of them are listed in this Google search result page. I list a few that caught my eyes and I felt helpful:

Thursday, October 9, 2008

Oracle BEA Weblogic Server 10 "invalid pad byte" error

First of first, BEA has the worst error message ever, it just does not make any sense, maybe just for me!

When switch to a new weblogic domain, we like to copy the configuration files to the new domain in order to reserve some configurations works, such as JMS, JDBC settings.

However, you may get weblogic.management.ManagementRuntimeException: com.rsa.jsafe.JSAFE_PaddingException: Could not perform unpadding: invalid pad byte.

Does this give you any hint that your password-encrypt is incorrect?

You may need to re-encrypt your password in the new domain by using the BEA supplied weblogic.security.Encrypt tool to archive this goal.
java -cp ./weblogic/server/lib/weblogic.jar -Dweblogic.RootDirectory={your domain} weblogic.security.Encrypt {your plain text password}