Giter Site home page Giter Site logo

rtmppluginforjmeter's Introduction

RtmpPluginForJmeter

概要

JMeterによるRtmpサーバーへの接続動作を確認するためのプラグイン

使い方(利用編)

  1. jakartaプロジェクトのjmeterをダウンロードして適当なところに解凍します。
  2. Red5をダウンロードして適当なところに解凍します。
  3. jmeterのディレクトリ/lib/extの中にこのプロジェクトのライブラリrtmpSampler.jarを設置します。
  4. Red5由来のライブラリも設定します。
    red5.jar
     bcprov-jdk16-145.jar
     com.springsource.slf4j.api-1.6.1.jar
     commons-beanutil-1..2.jar
     ehcache-2.2.0.jar
     log4j-over-slf4j-1.6.1.jar
     logback-classic-0.9.26.jar
     logback-core-0.9.26.jar
     mina-core-2.0.3.jar
     org.springframework.beans-3.0.5.RELEASE.jar
     org.springframework.context-3.0.5.RELEASE.jar
     org.springframework.core-3.0.5.RELEASE.jar
     
  5. jmeterを起動する。
  6. 設定エレメントのRtmpConnectConfigを追加(ほかのSamplerとデータを共有するためのVariableNameとrtmpサーバー接続先を書き込む)
  7. サンプラーのRtmpConnectSampler(接続)RtmpDisconnectSampler(切断)RtmpOnInvokeSampler(命令の受け取り)RtmpInvokeSampler(命令実行)のサンプラーを適当に設置しておく。

あとは適当な試行回数を設置して、サーバーの動作がどんな具合が確認すればOKです。

使い方(開発編)

  • ライブラリを準備します。必要なものは以下
    • red5由来(同じものをjmeterのlib/extに設置が必須)
      red5.jar 1.0.0 (RC2dev推奨)
        bcprov-jdk16-145.jar
        com.springsource.slf4j.api-1.6.1.jar
        commons-beanutil-1..2.jar
        ehcache-2.2.0.jar
        log4j-over-slf4j-1.6.1.jar
        logback-classic-0.9.26.jar
        logback-core-0.9.26.jar
        mina-core-2.0.3.jar
        org.springframework.beans-3.0.5.RELEASE.jar
        org.springframework.context-3.0.5.RELEASE.jar
        org.springframework.core-3.0.5.RELEASE.jar
        
    • jmeter由来
      ApacheJMeter_core.jar (lib/extより)
        logkit-2.0.jar (junit動作に必要)
        jorphan.jar (junit動作に必要)
        oro-2.0.8.jar (junit動作に必要)
        avalon-framework-4.1.4.jar (junit動作に必要)
        
    • junitTest由来
      jnit4 (eclipseのシステムライブラリ)
        junitTest.jar (僕の別プロジェクト)
        

ライセンス

一応LGPLということにしておきます。なにか問題がでた場合は適宜変更する予定

履歴

  • 2011/09/04 いろいろ手直ししてとりあえずな動作するようにした。バージョン0.1αとしたいと思います。
  • 2011/08/27 プログラムをリポジトリに登録してみた。
  • 2011/08/21 プログラム作成開始

やることメモ

  • 試行スレッドグループを複数にして実行すると、どうやらRtmpDataCacheまわりが暴走するっぽい。まったく関係ないサーバーに接続しにいっているのに、動作がおかしくなる。(Jmeterの値の取り扱いがまだおかしいところがあるっぽい。)
  • 試行頻度があがりすぎると、動作がおかしくなる。20スレッド以上たてると不具合が発生する?(Red5のバグと思われ)
  • Red5サーバーが相手だとこの状態でサーバー側の動作もおかしくなる。(Red5のバグと思われ)
  • 保持データが蒸発する不具合があるっぽいので(RtmpClientが次の動作に反映されない。)対処しておく。
  • どうやら動作途中に成功も失敗もしないエラーが発生しておわるっぽい。
      19:47:47.255 [?X???b?h?O???[?v 1-18] WARN  o.a.m.util.DefaultExceptionMonitor - Unexpected exception.
    

java.lang.NullPointerException: null at org.apache.mina.transport.socket.nio.NioSocketConnector.close(NioSocketConnector.java:218) ~[mina-core-2.0.3.jar:na] at org.apache.mina.transport.socket.nio.NioSocketConnector.close(NioSocketConnector.java:48) ~[mina-core-2.0.3.jar:na] at org.apache.mina.core.polling.AbstractPollingIoConnector.connect0(AbstractPollingIoConnector.java:335) ~[mina-core-2.0.3.jar:na] at org.apache.mina.core.service.AbstractIoConnector.connect(AbstractIoConnector.java:262) [mina-core-2.0.3.jar:na] at org.apache.mina.core.service.AbstractIoConnector.connect(AbstractIoConnector.java:172) [mina-core-2.0.3.jar:na] at com.ttProject.jmeter.rtmp.library.RtmpClientEx.startConnector(RtmpClientEx.java:221) [rtmpSampler.jar:na] at org.red5.server.net.rtmp.BaseRTMPClientHandler.connect(BaseRTMPClientHandler.java:242) [red5.jar:na] at com.ttProject.jmeter.rtmp.library.RtmpClientEx.connect(RtmpClientEx.java:195) [rtmpSampler.jar:na] at com.ttProject.jmeter.rtmp.library.RtmpClientEx.connect(RtmpClientEx.java:165) [rtmpSampler.jar:na] at com.ttProject.jmeter.rtmp.sampler.RtmpConnectSampler.doConnect(RtmpConnectSampler.java:95) [rtmpSampler.jar:na] at com.ttProject.jmeter.rtmp.sampler.RtmpConnectSampler.sample(RtmpConnectSampler.java:50) [rtmpSampler.jar:na] at org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:381) [ApacheJMeter_core.jar:2.5 r1158837] at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:274) [ApacheJMeter_core.jar:2.5 r1158837] at java.lang.Thread.run(Thread.java:680) [na:1.6.0_26] org.apache.mina.core.RuntimeIoException: Failed to get the session. at org.apache.mina.core.future.DefaultConnectFuture.getSession(DefaultConnectFuture.java:60) at com.ttProject.jmeter.rtmp.library.RtmpClientEx$1.operationComplete(RtmpClientEx.java:225) at org.apache.mina.core.future.DefaultIoFuture.notifyListener(DefaultIoFuture.java:377) at org.apache.mina.core.future.DefaultIoFuture.addListener(DefaultIoFuture.java:327) at org.apache.mina.core.future.DefaultConnectFuture.addListener(DefaultConnectFuture.java:116) at com.ttProject.jmeter.rtmp.library.RtmpClientEx.startConnector(RtmpClientEx.java:222) at org.red5.server.net.rtmp.BaseRTMPClientHandler.connect(BaseRTMPClientHandler.java:242) at com.ttProject.jmeter.rtmp.library.RtmpClientEx.connect(RtmpClientEx.java:195) at com.ttProject.jmeter.rtmp.library.RtmpClientEx.connect(RtmpClientEx.java:165) at com.ttProject.jmeter.rtmp.sampler.RtmpConnectSampler.doConnect(RtmpConnectSampler.java:95) at com.ttProject.jmeter.rtmp.sampler.RtmpConnectSampler.sample(RtmpConnectSampler.java:50) at org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:381) at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:274) at java.lang.Thread.run(Thread.java:680) Caused by: java.nio.channels.ClosedByInterruptException at java.nio.channels.spi.AbstractInterruptibleChannel.end(AbstractInterruptibleChannel.java:184) at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:511) at org.apache.mina.transport.socket.nio.NioSocketConnector.connect(NioSocketConnector.java:190) at org.apache.mina.transport.socket.nio.NioSocketConnector.connect(NioSocketConnector.java:48) at org.apache.mina.core.polling.AbstractPollingIoConnector.connect0(AbstractPollingIoConnector.java:319) at org.apache.mina.core.service.AbstractIoConnector.connect(AbstractIoConnector.java:262) at org.apache.mina.core.service.AbstractIoConnector.connect(AbstractIoConnector.java:172) at com.ttProject.jmeter.rtmp.library.RtmpClientEx.startConnector(RtmpClientEx.java:221) ... 8 more org.apache.mina.core.RuntimeIoException: Failed to get the session. at org.apache.mina.core.future.DefaultConnectFuture.getSession(DefaultConnectFuture.java:60) at org.red5.server.net.rtmp.RTMPClient.disconnect(RTMPClient.java:103) at com.ttProject.jmeter.rtmp.sampler.RtmpConnectSampler.doConnect(RtmpConnectSampler.java:114) at com.ttProject.jmeter.rtmp.sampler.RtmpConnectSampler.sample(RtmpConnectSampler.java:50) at org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:381) at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:274) at java.lang.Thread.run(Thread.java:680) Caused by: java.nio.channels.ClosedByInterruptException at java.nio.channels.spi.AbstractInterruptibleChannel.end(AbstractInterruptibleChannel.java:184) at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:511) at org.apache.mina.transport.socket.nio.NioSocketConnector.connect(NioSocketConnector.java:190) at org.apache.mina.transport.socket.nio.NioSocketConnector.connect(NioSocketConnector.java:48) at org.apache.mina.core.polling.AbstractPollingIoConnector.connect0(AbstractPollingIoConnector.java:319) at org.apache.mina.core.service.AbstractIoConnector.connect(AbstractIoConnector.java:262) at org.apache.mina.core.service.AbstractIoConnector.connect(AbstractIoConnector.java:172) at com.ttProject.jmeter.rtmp.library.RtmpClientEx.startConnector(RtmpClientEx.java:221) at org.red5.server.net.rtmp.BaseRTMPClientHandler.connect(BaseRTMPClientHandler.java:242) at com.ttProject.jmeter.rtmp.library.RtmpClientEx.connect(RtmpClientEx.java:195) at com.ttProject.jmeter.rtmp.library.RtmpClientEx.connect(RtmpClientEx.java:165) at com.ttProject.jmeter.rtmp.sampler.RtmpConnectSampler.doConnect(RtmpConnectSampler.java:95) ... 4 more

  • GUIをなんとかする。

rtmppluginforjmeter's People

Contributors

taktod avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.