Results 1 to 8 of 8

Thread: Getting 0 in bytes out while load testing a streaming link

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Join Date
    Jan 2015
    Posts
    5

    Default Getting 0 in bytes out while load testing a streaming link

    HI,
    i need help regarding an issue, while i'm doing load testing using Jmeter for a live streaming link, when ever i start the test requests are coming from user, bytes In are coming, but the bytes out are 0. can you tel me what is the issue and where ? what i'm doing wrong?

  2. #2
    Join Date
    Jun 2012
    Posts
    722

    Default

    Hi,

    What kind of streaming protocol are you testing with Jmeter? Did you configure it properly to request a live/vod stream ans keep the streaming session alive?
    Please note that streaming is not download. I know that using Jmeter you ca do lots of download tests.
    Can you describe how you have configured your Jmeter tool for doing streaming tests?

    Zoran

  3. #3
    Join Date
    Jan 2015
    Posts
    5

    Default

    Quote Originally Posted by zoran_u View Post
    Hi,

    What kind of streaming protocol are you testing with Jmeter? Did you configure it properly to request a live/vod stream ans keep the streaming session alive?
    Please note that streaming is not download. I know that using Jmeter you ca do lots of download tests.
    Can you describe how you have configured your Jmeter tool for doing streaming tests?

    Zoran
    i have a video at wowza streaming link setup properly, i made a test using http://blazemeter.com/blog/how-load-...ing-hls-jmeter, when i'm checking it on wowza stats for my streaming link, requests are landing successfully, bytes in are fine, but bytes out are 0, if you want i can share the screen shot with you so you can have a better and the jmeter .jmx file.

    thanks

  4. #4
    Join Date
    Jun 2012
    Posts
    722

    Default

    It would be nice if you could share your .jmx file so I can test it out as well.

    Zoran

  5. #5
    Join Date
    Jan 2015
    Posts
    5

    Default

    Quote Originally Posted by zoran_u View Post
    It would be nice if you could share your .jmx file so I can test it out as well.

    Zoran
    <?xml version="1.0" encoding="UTF-8"?><jmeterTestPlan version="1.2" properties="2.7" jmeter="2.12 r1636949">
      <hashTree>
        <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Test Plan" enabled="true">
          <stringProp name="TestPlan.comments"></stringProp>
          <boolProp name="TestPlan.functional_mode">false</boolProp>
          <boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
          <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
            <collectionProp name="Arguments.arguments"/>
          </elementProp>
          <stringProp name="TestPlan.user_define_classpath"></stringProp>
        </TestPlan>
        <hashTree>
          <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true">
            <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
            <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
              <boolProp name="LoopController.continue_forever">false</boolProp>
              <stringProp name="LoopController.loops">5</stringProp>
            </elementProp>
            <stringProp name="ThreadGroup.num_threads">3</stringProp>
            <stringProp name="ThreadGroup.ramp_time">5</stringProp>
            <longProp name="ThreadGroup.start_time">1421734754000</longProp>
            <longProp name="ThreadGroup.end_time">1421734754000</longProp>
            <boolProp name="ThreadGroup.scheduler">false</boolProp>
            <stringProp name="ThreadGroup.duration"></stringProp>
            <stringProp name="ThreadGroup.delay"></stringProp>
          </ThreadGroup>
          <hashTree>
            <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="HTTP Request" enabled="true">
              <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
                <collectionProp name="Arguments.arguments"/>
              </elementProp>
              <stringProp name="HTTPSampler.domain">http://221.120.236.50</stringProp>
              <stringProp name="HTTPSampler.port">1935</stringProp>
              <stringProp name="HTTPSampler.connect_timeout"></stringProp>
              <stringProp name="HTTPSampler.response_timeout"></stringProp>
              <stringProp name="HTTPSampler.protocol"></stringProp>
              <stringProp name="HTTPSampler.contentEncoding"></stringProp>
              <stringProp name="HTTPSampler.path">http://221.120.236.50:1935/criclive/criclive/playlist.m3u8</stringProp>
              <stringProp name="HTTPSampler.method">GET</stringProp>
              <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
              <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
              <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
              <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
              <boolProp name="HTTPSampler.monitor">false</boolProp>
              <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
            </HTTPSamplerProxy>
            <hashTree>
              <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="chunks_regex" enabled="true">
                <stringProp name="RegexExtractor.useHeaders">false</stringProp>
                <stringProp name="RegexExtractor.refname">chunks</stringProp>
                <stringProp name="RegexExtractor.regex">chunklist_(.*?)\.m3u8</stringProp>
                <stringProp name="RegexExtractor.template">$1$</stringProp>
                <stringProp name="RegexExtractor.default"></stringProp>
                <stringProp name="RegexExtractor.match_number">1</stringProp>
                <stringProp name="Sample.scope">all</stringProp>
              </RegexExtractor>
              <hashTree/>
            </hashTree>
            <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="chunks_loop" enabled="true">
              <stringProp name="ForeachController.inputVal">chunks</stringProp>
              <stringProp name="ForeachController.returnVal">chunk</stringProp>
              <boolProp name="ForeachController.useSeparator">true</boolProp>
            </ForeachController>
            <hashTree>
              <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="chunk" enabled="true">
                <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
                  <collectionProp name="Arguments.arguments"/>
                </elementProp>
                <stringProp name="HTTPSampler.domain">chunks.221.120.236.50</stringProp>
                <stringProp name="HTTPSampler.port">1935</stringProp>
                <stringProp name="HTTPSampler.connect_timeout"></stringProp>
                <stringProp name="HTTPSampler.response_timeout"></stringProp>
                <stringProp name="HTTPSampler.protocol"></stringProp>
                <stringProp name="HTTPSampler.contentEncoding"></stringProp>
                <stringProp name="HTTPSampler.path">/chunklist_${chunk}.m3u8</stringProp>
                <stringProp name="HTTPSampler.method">GET</stringProp>
                <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
                <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
                <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
                <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
                <boolProp name="HTTPSampler.monitor">false</boolProp>
                <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
              </HTTPSamplerProxy>
              <hashTree>
                <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="streams" enabled="true">
                  <stringProp name="RegexExtractor.useHeaders">false</stringProp>
                  <stringProp name="RegexExtractor.refname">stream</stringProp>
                  <stringProp name="RegexExtractor.regex">media_(.*?)\.ts</stringProp>
                  <stringProp name="RegexExtractor.template">$1$</stringProp>
                  <stringProp name="RegexExtractor.default"></stringProp>
                  <stringProp name="RegexExtractor.match_number">1</stringProp>
                  <stringProp name="Sample.scope">all</stringProp>
                </RegexExtractor>
                <hashTree/>
              </hashTree>
              <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="streams_loop" enabled="true">
                <stringProp name="ForeachController.inputVal">streams</stringProp>
                <stringProp name="ForeachController.returnVal">stream</stringProp>
                <boolProp name="ForeachController.useSeparator">true</boolProp>
              </ForeachController>
              <hashTree>
                <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="stream" enabled="true">
                  <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
                    <collectionProp name="Arguments.arguments"/>
                  </elementProp>
                  <stringProp name="HTTPSampler.domain">streams.221.120.236.50</stringProp>
                  <stringProp name="HTTPSampler.port">1935</stringProp>
                  <stringProp name="HTTPSampler.connect_timeout"></stringProp>
                  <stringProp name="HTTPSampler.response_timeout"></stringProp>
                  <stringProp name="HTTPSampler.protocol"></stringProp>
                  <stringProp name="HTTPSampler.contentEncoding"></stringProp>
                  <stringProp name="HTTPSampler.path">/media_${stream}.ts</stringProp>
                  <stringProp name="HTTPSampler.method">GET</stringProp>
                  <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
                  <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
                  <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
                  <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
                  <boolProp name="HTTPSampler.monitor">false</boolProp>
                  <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
                </HTTPSamplerProxy>
                <hashTree/>
              </hashTree>
            </hashTree>
            <ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="HTTP Request Defaults" enabled="true">
              <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
                <collectionProp name="Arguments.arguments"/>
              </elementProp>
              <stringProp name="HTTPSampler.domain">http://221.120.236.50</stringProp>
              <stringProp name="HTTPSampler.port">1935</stringProp>
              <stringProp name="HTTPSampler.connect_timeout"></stringProp>
              <stringProp name="HTTPSampler.response_timeout"></stringProp>
              <stringProp name="HTTPSampler.protocol"></stringProp>
              <stringProp name="HTTPSampler.contentEncoding"></stringProp>
              <stringProp name="HTTPSampler.path"></stringProp>
              <stringProp name="HTTPSampler.concurrentPool">4</stringProp>
            </ConfigTestElement>
            <hashTree/>
            <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
              <collectionProp name="Asserion.test_strings">
                <stringProp name="49586">200</stringProp>
              </collectionProp>
              <stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
              <boolProp name="Assertion.assume_success">false</boolProp>
              <intProp name="Assertion.test_type">2</intProp>
              <stringProp name="Assertion.scope">all</stringProp>
            </ResponseAssertion>
            <hashTree/>
            <ResultCollector guiclass="GraphVisualizer" testclass="ResultCollector" testname="Graph Results" enabled="true">
              <boolProp name="ResultCollector.error_logging">false</boolProp>
              <objProp>
                <name>saveConfig</name>
                <value class="SampleSaveConfiguration">
                  <time>true</time>
                  <latency>true</latency>
                  <timestamp>true</timestamp>
                  <success>true</success>
                  <label>true</label>
                  <code>true</code>
                  <message>true</message>
                  <threadName>true</threadName>
                  <dataType>true</dataType>
                  <encoding>false</encoding>
                  <assertions>true</assertions>
                  <subresults>true</subresults>
                  <responseData>false</responseData>
                  <samplerData>false</samplerData>
                  <xml>false</xml>
                  <fieldNames>false</fieldNames>
                  <responseHeaders>false</responseHeaders>
                  <requestHeaders>false</requestHeaders>
                  <responseDataOnError>false</responseDataOnError>
                  <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
                  <assertionsResultsToSave>0</assertionsResultsToSave>
                  <bytes>true</bytes>
                  <threadCounts>true</threadCounts>
                </value>
              </objProp>
              <stringProp name="filename"></stringProp>
            </ResultCollector>
            <hashTree/>
            <ResultCollector guiclass="AssertionVisualizer" testclass="ResultCollector" testname="Assertion Results" enabled="true">
              <boolProp name="ResultCollector.error_logging">false</boolProp>
              <objProp>
                <name>saveConfig</name>
                <value class="SampleSaveConfiguration">
                  <time>true</time>
                  <latency>true</latency>
                  <timestamp>true</timestamp>
                  <success>true</success>
                  <label>true</label>
                  <code>true</code>
                  <message>true</message>
                  <threadName>true</threadName>
                  <dataType>true</dataType>
                  <encoding>false</encoding>
                  <assertions>true</assertions>
                  <subresults>true</subresults>
                  <responseData>false</responseData>
                  <samplerData>false</samplerData>
                  <xml>false</xml>
                  <fieldNames>false</fieldNames>
                  <responseHeaders>false</responseHeaders>
                  <requestHeaders>false</requestHeaders>
                  <responseDataOnError>false</responseDataOnError>
                  <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
                  <assertionsResultsToSave>0</assertionsResultsToSave>
                  <bytes>true</bytes>
                  <threadCounts>true</threadCounts>
                </value>
              </objProp>
              <stringProp name="filename"></stringProp>
            </ResultCollector>
            <hashTree/>
            <ResultCollector guiclass="TableVisualizer" testclass="ResultCollector" testname="View Results in Table" enabled="true">
              <boolProp name="ResultCollector.error_logging">false</boolProp>
              <objProp>
                <name>saveConfig</name>
                <value class="SampleSaveConfiguration">
                  <time>true</time>
                  <latency>true</latency>
                  <timestamp>true</timestamp>
                  <success>true</success>
                  <label>true</label>
                  <code>true</code>
                  <message>true</message>
                  <threadName>true</threadName>
                  <dataType>true</dataType>
                  <encoding>false</encoding>
                  <assertions>true</assertions>
                  <subresults>true</subresults>
                  <responseData>false</responseData>
                  <samplerData>false</samplerData>
                  <xml>false</xml>
                  <fieldNames>false</fieldNames>
                  <responseHeaders>false</responseHeaders>
                  <requestHeaders>false</requestHeaders>
                  <responseDataOnError>false</responseDataOnError>
                  <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
                  <assertionsResultsToSave>0</assertionsResultsToSave>
                  <bytes>true</bytes>
                  <threadCounts>true</threadCounts>
                </value>
              </objProp>
              <stringProp name="filename"></stringProp>
            </ResultCollector>
            <hashTree/>
            <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
              <boolProp name="ResultCollector.error_logging">false</boolProp>
              <objProp>
                <name>saveConfig</name>
                <value class="SampleSaveConfiguration">
                  <time>true</time>
                  <latency>true</latency>
                  <timestamp>true</timestamp>
                  <success>true</success>
                  <label>true</label>
                  <code>true</code>
                  <message>true</message>
                  <threadName>true</threadName>
                  <dataType>true</dataType>
                  <encoding>false</encoding>
                  <assertions>true</assertions>
                  <subresults>true</subresults>
                  <responseData>false</responseData>
                  <samplerData>false</samplerData>
                  <xml>false</xml>
                  <fieldNames>false</fieldNames>
                  <responseHeaders>false</responseHeaders>
                  <requestHeaders>false</requestHeaders>
                  <responseDataOnError>false</responseDataOnError>
                  <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
                  <assertionsResultsToSave>0</assertionsResultsToSave>
                  <bytes>true</bytes>
                  <threadCounts>true</threadCounts>
                </value>
              </objProp>
              <stringProp name="filename"></stringProp>
            </ResultCollector>
            <hashTree/>
          </hashTree>
        </hashTree>
      </hashTree>
    </jmeterTestPlan>

  6. #6
    Join Date
    Jan 2015
    Posts
    5

    Default

    Quote Originally Posted by zoran_u View Post
    It would be nice if you could share your .jmx file so I can test it out as well.

    Zoran
    any update ???

  7. #7
    Join Date
    Jun 2012
    Posts
    722

    Default

    Hi,


    I have tried your JMX file with my Wowza server and it looks like JMeter is requesting the playlist from Wowza.
    Wowza is responding with the playlist descriptor file containing the chunklist name. It seems that the JMeter does not followup with the chunklist request and with the media TS files requests.
    You should investigate in the JMeter side, why it doesn't continue with the HLS requests and stops after receiving the playlist.m3u8 descriptor.

    Zoran

Similar Threads

  1. Load testing tool for one to one streaming
    By derrick217 in forum General Forum
    Replies: 3
    Last Post: 12-12-2011, 06:03 AM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •