一个项目进行到了QA阶段, 要大规模测试程序与JMS(Sonic MQ)交互的性能. 经"上面"研究决定, 要用到传说中性能测试很牛叉的JMeter. 由于我是TRG(Technical Research Group) Jmeter小组的组长(其实也就是混事,没什么事情写个report吹嘘一下研究结果,如此而已), 所以被临时调过来充当QA. 不测不知道,一测吓一跳,虽说JMeter的官方网站上鼓吹JMeter支持对于JMS的性能测试, 但我们发现根本不是那么回事, 消息能被发出也可以被接接收,但GUI上没有丝毫数据显示(包括发送接收时间,发送接收内容等信息), 没有这些数据让我怎么写报告? 难不成让我的项目经理过来,我拿秒表记录每条信息发送和接收的时间? 开源的东西就是这点害人,遇到问题了,跟本没人搭理你. 我跑到JMeter的bugzilla上去察看, 我k, 一堆bug post在上面,没有一个有response的, 我赶快闪开了~~
   和项目经理汇报了这个情况后, 他的指示是"不管怎么样,JMeter作为测试工具是美国那边指定的,不论采取什么办法,一定得给我整出来!" 我点头答应,但心里不断嘀咕"我k,怎么整出来啊~" 幸好项目经理还比较有人性, 给我也配了个两个"小弟"(准确的说是一男一女), 刚进来实习的所以比较听话, 恩, 我喜欢. 我给他们的指示是"不管怎么样,JMeter作为测试工具是美国那边指定的,不论采取什么办法,一定得给我整出来!" 他们纷纷点头, 我心里那叫一爽. 花了三天的时间, 我们通读了一遍JMeter(version 1.10) JMS 部分的代码: org.apache.jmeter.protocol.jms. 又经过两天痛苦的煎熬,终于发现问题出现在逻辑层(PulisherSampler.java SubsriberSampler.java)在向表现层(ResultSample.java)中set message时居然没有指定数据的类型, ResultSample得不到message的具体类型, 自然什么东西的显示不出来. 一直拖到今天, 重新编译了代码, 重新运行, 结果正确的显示到了GUI上, 我长出了一口气, 问题终于解决了. 被我压榨了若干天的两个小弟, 更是长出了一口气, 终于可以从我的魔爪中挣脱了~~~
   问题解决当然免不了写个报告, 邀一下功了, 记得在报告中我写道:"We feel the strong sense of freedom which open softwares bring with us." 这种freedom对于我们这些凡夫俗子从某种程度上讲,实在是件遭罪的事. 但反过来想想,我感觉莫名的兴奋,因为不知不觉间我为开源软件做出了自己的一点微薄的贡献, 可能就是千千万万的这样的微薄的贡献才成就了现在的开源软件. 成也开源, 败也开源. 把原代码暴露在所有开发者的面前, 会造成两种局面: 其一, 代码被滥用, 软件的质量越来越差; 其二, 所有关心开源软件的程序员都贡献出自己的力量,不断提高软件的质量. 使我欣喜的是,大多数程序员都是完美主义者,不约而同的选择了后者, 在他们的眼中, "建设带来的乐趣远远大于破坏".
   唠唠叨叨了这么大一砣,回头再看,真是不知所云~~~ 天一, 求求你, 不要删我的贴
   最后希望所有的程序员,都来支持开源软件,虽然有时他很不成熟, 但正是这种不成熟才给了我们发挥自己创造力的机会. 毕竟"软件就像性交, 不要钱的更好!"