Blazemeter / HLSPlugin

A repo to hold the OpenSource HLS JMeter Plugin code
Apache License 2.0
48 stars 17 forks source link

OvenMediaEngine HLS stream not working #30

Open xavis opened 1 year ago

xavis commented 1 year ago

Hello, I was trying to stress test a LLHLS video served by an OvenMediaEngine Origin server and while the master manifest is retrieved fine it doesnt download any video fragment.

The log viewer shows:

2023-06-08 10:15:57,035 ERROR o.a.j.t.JMeterThread: Error while processing sampler: 'bzm - Streaming Sampler'.
java.lang.NullPointerException: null
    at com.blazemeter.jmeter.videostreaming.hls.Playlist.getRenditionUri(Playlist.java:103) ~[jmeter-bzm-hls-3.1.jar:?]
    at com.blazemeter.jmeter.videostreaming.hls.Playlist.solveMediaStream(Playlist.java:72) ~[jmeter-bzm-hls-3.1.jar:?]
    at com.blazemeter.jmeter.videostreaming.hls.HlsSampler.sample(HlsSampler.java:43) ~[jmeter-bzm-hls-3.1.jar:?]
    at com.blazemeter.jmeter.videostreaming.core.VideoStreamingSampler.sample(VideoStreamingSampler.java:79) ~[jmeter-bzm-hls-3.1.jar:?]
    at com.blazemeter.jmeter.hls.logic.HlsSampler.sample(HlsSampler.java:212) ~[jmeter-bzm-hls-3.1.jar:?]
    at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1290) ~[ApacheJMeter_http.jar:5.5]
    at org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:651) ~[ApacheJMeter_core.jar:5.5]
    at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:570) ~[ApacheJMeter_core.jar:5.5]
    at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:501) ~[ApacheJMeter_core.jar:5.5]
    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:268) ~[ApacheJMeter_core.jar:5.5]
    at java.lang.Thread.run(Unknown Source) ~[?:1.8.0_371]
2023-06-08 10:15:57,036 INFO o.a.j.t.JMeterThread: Thread is done: Thread Group 1-1
2023-06-08 10:15:57,036 INFO o.a.j.t.JMeterThread: Thread finished: Thread Group 1-1
2023-06-08 10:15:57,037 INFO o.a.j.e.StandardJMeterEngine: Notifying test listeners of end of test
2023-06-08 10:15:57,037 INFO o.a.j.g.u.JMeterMenuBar: setRunning(false, *local*)

Maybe the manifest is using a not compatible manifest?

The .m3u8 manifest content is:

#EXTM3U
#EXT-X-VERSION:7
#EXT-X-INDEPENDENT-SEGMENTS
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="5",NAME="none",AUTOSELECT=YES,DEFAULT=YES,CHANNELS="2",URI="/app/test/chunklist_5_audio_0EBknybX_llhls.m3u8?session=38_6nX8CyUG"

#EXT-X-STREAM-INF:BANDWIDTH=7360000,RESOLUTION=1280x720,FRAME-RATE=30.0,CODECS="avc1.4d401f,mp4a.40.2",AUDIO="5"
/app/test/chunklist_0_video_0EBknybX_llhls.m3u8?session=38_6nX8CyUG
#EXT-X-STREAM-INF:BANDWIDTH=5184000,RESOLUTION=1920x1080,FRAME-RATE=30.0,CODECS="avc1.42c028,mp4a.40.2",AUDIO="5"
/app/test/chunklist_1_video_0EBknybX_llhls.m3u8?session=38_6nX8CyUG
#EXT-X-STREAM-INF:BANDWIDTH=2184000,RESOLUTION=1280x720,FRAME-RATE=30.0,CODECS="avc1.42c01f,mp4a.40.2",AUDIO="5"
/app/test/chunklist_2_video_0EBknybX_llhls.m3u8?session=38_6nX8CyUG
#EXT-X-STREAM-INF:BANDWIDTH=1184000,RESOLUTION=850x480,FRAME-RATE=30.0,CODECS="avc1.42c01f,mp4a.40.2",AUDIO="5"
/app/test/chunklist_3_video_0EBknybX_llhls.m3u8?session=38_6nX8CyUG
#EXT-X-STREAM-INF:BANDWIDTH=2184000,RESOLUTION=480x320,FRAME-RATE=30.0,CODECS="avc1.42c015,mp4a.40.2",AUDIO="5"
/app/test/chunklist_4_video_0EBknybX_llhls.m3u8?session=38_6nX8CyUG

Thank you

xavis commented 1 year ago

As additional information: I just tried to use as manifest URL one of the resolution manifest URIs of the main manifest like:

/app/test/chunklist_1_video_0EBknybX_llhls.m3u8?session=38_6nX8CyUG

The plugin is able to process that internal URL so the plugin is only having issues selecting a bitrate stream manifest from the main manifest.