diff --git a/hls/pom.xml b/hls/pom.xml index a2ba01b..5b7dcea 100644 --- a/hls/pom.xml +++ b/hls/pom.xml @@ -5,7 +5,7 @@ com.blazemeter.jmeter jmeter-hls - 1.1 + 1.0.2 diff --git a/hls/src/main/java/com/blazemeter/jmeter/hls/logic/HlsSampler.java b/hls/src/main/java/com/blazemeter/jmeter/hls/logic/HlsSampler.java index 9379697..a28dd7a 100644 --- a/hls/src/main/java/com/blazemeter/jmeter/hls/logic/HlsSampler.java +++ b/hls/src/main/java/com/blazemeter/jmeter/hls/logic/HlsSampler.java @@ -20,6 +20,7 @@ import java.util.ArrayList; import java.util.List; + public class HlsSampler extends AbstractSampler { private static final Logger log = LoggingManager.getLoggerForClass(); private String playlistUri; @@ -77,9 +78,11 @@ private DataRequest getMasterList(SampleResult masterResult, Parser parser) thro private String getPlaylistPath(DataRequest respond, Parser parser) throws MalformedURLException { URL masterURL = new URL(getURLData()); playlistUri = parser.extractUriMaster(respond.getResponse(), this.getRESDATA(), this.getNetwordData(), - this.getBandwidthType(), this.getResolutionType(), this.getUrlVideoType()); + this.getBandwidthType(), this.getResolutionType()); String auxPath = masterURL.getPath().substring(0, masterURL.getPath().lastIndexOf('/') + 1); + if(playlistUri.trim().equals("")) + playlistUri = getURLData(); if (playlistUri.startsWith("http")) { playlist = playlistUri; } else if (playlistUri.indexOf('/') == 0) { @@ -96,12 +99,13 @@ private String getPlaylistPath(DataRequest respond, Parser parser) throws Malfor private DataRequest getPlayList(SampleResult playListResult, Parser parser) throws IOException { + String lastPath = ""; playListResult.sampleStart(); DataRequest subRespond = parser.getBaseUrl(new URL(playlist), playListResult, true); playListResult.sampleEnd(); String[] urlArray = playlist.split("/"); - String lastPath = urlArray[urlArray.length - 1]; + lastPath = urlArray[urlArray.length - 1]; playListResult.setRequestHeaders(subRespond.getRequestHeaders() + "\n\n" + getCookieHeader(playlist) + "\n\n" + getRequestHeader(this.getHeaderManager())); @@ -136,6 +140,8 @@ public SampleResult sample(Entry e) { boolean isVod = getHlsVideoType().equals("vod"); boolean out = false; boolean firstTime = true; + List list = new ArrayList<>(); + try { DataRequest respond = getMasterList(masterResult, parser); @@ -148,6 +154,7 @@ public SampleResult sample(Entry e) { while ((playSeconds >= currenTimeseconds) && !out) { SampleResult playListResult = new SampleResult(); DataRequest subRespond = getPlayList(playListResult, parser); + List videoUri = parser.extractVideoUrl(subRespond.getResponse()); List fragmentToDownload = new ArrayList<>(); @@ -168,13 +175,16 @@ public SampleResult sample(Entry e) { boolean isPresent = false; int length = fragmentsDownloaded.size(); - if (length != 0) - isPresent = fragmentsDownloaded.contains(frag.getTsUri()); + if (length != 0) { + isPresent = fragmentsDownloaded.contains(frag.getTsUri().trim()); + } if (!isPresent) { fragmentToDownload.add(frag); fragmentsDownloaded.add(frag.getTsUri().trim()); - currenTimeseconds += Float.parseFloat(frag.getDuration()); + if(getVideoDuration()) { + currenTimeseconds += Float.parseFloat(frag.getDuration()); + } } } @@ -182,10 +192,13 @@ public SampleResult sample(Entry e) { for (SampleResult sam : videoFragment) { playListResult.addSubResult(sam); } - masterResult.addSubResult(playListResult); + if(!list.contains(playListResult.getSampleLabel())) + { + masterResult.addSubResult(playListResult); + list.add(playListResult.getSampleLabel()); + } } - // } } catch (IOException e1) { e1.printStackTrace(); @@ -196,6 +209,7 @@ public SampleResult sample(Entry e) { return masterResult; } + public String getURLData() { return this.getPropertyAsString("HLS.URL_DATA"); } @@ -224,10 +238,6 @@ public String getResolutionType() { return this.getPropertyAsString("HLS.RESOLUTION_TYPE"); } - public String getUrlVideoType() { - return this.getPropertyAsString("HLS.URLVIDEOTYPE"); - } - public String getBandwidthType() { return this.getPropertyAsString("HLS.BANDWIDTH_TYPE"); } @@ -342,7 +352,8 @@ public List getFragments(Parser parser, List uris, S uris.remove(0); List aux = getFragments(parser, uris, url); for (SampleResult s : aux) { - res.add(s); + if(!res.contains(s)) + res.add(s); } } return res; diff --git a/hls/src/main/java/com/blazemeter/jmeter/hls/logic/Parser.java b/hls/src/main/java/com/blazemeter/jmeter/hls/logic/Parser.java index e068c4d..0fb7a4d 100755 --- a/hls/src/main/java/com/blazemeter/jmeter/hls/logic/Parser.java +++ b/hls/src/main/java/com/blazemeter/jmeter/hls/logic/Parser.java @@ -1,10 +1,6 @@ package com.blazemeter.jmeter.hls.logic; -//import org.apache.http.protocol.BasicHttpContext; -//import org.apache.http.protocol.HttpContext; import org.apache.jmeter.samplers.SampleResult; -import org.apache.jorphan.logging.LoggingManager; -import org.apache.log.Logger; import java.io.BufferedReader; import java.io.IOException; @@ -13,28 +9,19 @@ import java.net.HttpURLConnection; import java.net.URL; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; import static org.apache.http.protocol.HTTP.USER_AGENT; public class Parser implements Serializable { - private float duration = -1; - private float actualDuration = 0; - private static final Pattern PORT_PATTERN = Pattern.compile("\\d+"); - private static final String USER_TOKEN = "__jmeter.USER_TOKEN__"; //$NON-NLS-1$ - private static final Logger log = LoggingManager.getLoggerForClass(); - private static final String PROXY_CONNECTION = "proxy-connection"; // $NON-NLS-1$ - private final Map headers = new HashMap<>(); - public Parser() { } + // HTTP GET request public DataRequest getBaseUrl(URL url, SampleResult sampleResult, boolean setRequest) throws IOException { @@ -86,7 +73,7 @@ public DataRequest getBaseUrl(URL url, SampleResult sampleResult, boolean setReq result.setResponseMessage(con.getResponseMessage()); result.setContentType(con.getContentType()); result.setSuccess(isSuccessCode(responseCode)); - result.setSentBytes(sentBytes);// TODO consultar + result.setSentBytes(sentBytes); result.setContentEncoding(getEncoding(con)); return result; @@ -109,39 +96,13 @@ public String getEncoding(HttpURLConnection connection) { return charset; } - public String extractUriMaster(String res, String resolution, String bandwidth, String bandSelected, - String resolSelected, String urlVideoType) { + + public String extractUriMaster(String res, String resolution, String bandwidth, String bandSelected, String resolSelected) { String pattern = "(EXT-X-STREAM-INF.*)\\n(.*\\.m3u8.*)"; String bandwidthPattern = "[:|,]BANDWIDTH=(\\d*)"; String resolutionPattern = "[:|,]RESOLUTION=(\\d*x\\d*)"; - String urlCandidates = ""; - String secResolution = " "; - String secBandwidth = " "; - - String bandwidthMax = "100000000"; - String bandwidthMin = "0"; - String resolutionMin = "100x100"; - String resolutionMax = "5000x5000"; - String uri = ""; - - Pattern r = Pattern.compile(pattern); - Pattern b = Pattern.compile(bandwidthPattern); - Pattern reso = Pattern.compile(resolutionPattern); - - Matcher m = r.matcher(res); - - boolean out = false; - - if (urlVideoType.equalsIgnoreCase("Bandwidth")) { - uri = getBandwidthUrl(pattern, bandwidthPattern, resolutionPattern, res, bandwidth, bandSelected); - } else { - uri = getResolutionUrl(pattern, bandwidthPattern, resolutionPattern, res, resolution, bandwidth, - bandSelected, resolSelected); - } - - return uri; - + return getResolutionUrl(pattern, bandwidthPattern, resolutionPattern, res, resolution, bandwidth, bandSelected, resolSelected); } public List extractVideoUrl(String playlistUrl) { @@ -155,55 +116,8 @@ public List extractVideoUrl(String playlistUrl) { mediaList.add(data); } return mediaList; - } - public String getBandwidthUrl(String pattern, String bandwidthPattern, String resolutionPattern, String res, - String bandwidth, String bandSelected) { - String bandwidthMax = "100000000"; - String secBandwidth = " "; - String urlCandidate = ""; - Pattern r = Pattern.compile(pattern); - Pattern b = Pattern.compile(bandwidthPattern); - Pattern reso = Pattern.compile(resolutionPattern); - Matcher m = r.matcher(res); - - while (m.find()) { - Matcher mb = b.matcher(m.group(1)); - // Matcher mBandwidth = b.matcher(m.toString()); - Matcher mResolution = reso.matcher(m.toString()); - - mb.find(); - if ((bandSelected.equalsIgnoreCase("customBandwidth")) && (Integer.parseInt(mb.group(1)) <= Integer.parseInt(bandwidth)) && mResolution.find()) { - if ((Integer.parseInt(mb.group(1)) == Integer.parseInt(bandwidth))) - { - urlCandidate = m.group(2); - break; - } - else if(selectBandwidth(bandwidth, mb.group(1))) - { - urlCandidate = m.group(2); - } - - - } else if ((bandSelected.equalsIgnoreCase("minBandwidth")) && mResolution.find()) { - if (secBandwidth.equals(" ") && selectBandwidth(mb.group(1), bandwidthMax) - || (!secBandwidth.equals(" ") && selectBandwidth(mb.group(1), secBandwidth))) { - secBandwidth = mb.group(1); - urlCandidate = m.group(2); - } - } else if ((bandSelected.equalsIgnoreCase("maxBandwidth"))) { - if (secBandwidth.equals(" ") && !selectBandwidth(bandwidthMax, mb.group(1)) - || (!secBandwidth.equals(" ") && selectBandwidth(secBandwidth, mb.group(1)))) { - secBandwidth = mb.group(1); - urlCandidate = m.group(2); - } - } - - } - return urlCandidate; - - } public String getResolutionUrl(String pattern, String bandwidthPattern, String resolutionPattern, String res, String resolution, String bandwidth, String bandSelected, String resolSelected) { @@ -231,7 +145,6 @@ public String getResolutionUrl(String pattern, String bandwidthPattern, String r if (resolSelected.equalsIgnoreCase("customResolution") && mResolution.find()) { if (bandSelected.equalsIgnoreCase("customBandwidth")) { - if (mreso.group(1).equals(resolution)) { uri = m.group(2); break; @@ -367,8 +280,6 @@ public boolean isLive(String playlistUrl) { return !m1.find(); } - // Checks if the resolution of the video (candidate2) is closer to the - // resolution custom (target) than the one already saved (candidate1) public boolean findResolution(String target, String candidate1, String candidate2) { boolean ret = false; diff --git a/hls/src/test/java/com/blazemeter/jmeter/hls/logic/HlsSamplerTest.java b/hls/src/test/java/com/blazemeter/jmeter/hls/logic/HlsSamplerTest.java index 5e66c8b..9533dfc 100644 --- a/hls/src/test/java/com/blazemeter/jmeter/hls/logic/HlsSamplerTest.java +++ b/hls/src/test/java/com/blazemeter/jmeter/hls/logic/HlsSamplerTest.java @@ -40,13 +40,14 @@ public void setup() sampler.setUrlVideoType("Bandwidth"); sampler.setPRotocol("https"); sampler.setPlaySecondsData("20"); + sampler.setVideoDuration(true); sampler.setParser(parserMock); sampler.setName("Test"); } @Test public void testSample() throws Exception { - + DataRequest respond1 = new DataRequest(); DataRequest respond2 = new DataRequest(); DataRequest respond3 = new DataRequest(); @@ -59,7 +60,7 @@ public void testSample() throws Exception { fragments.add(f1); fragments.add(f2); fragments.add(f3); - + String payload1 = "#EXTM3U\n#EXT-X-VERSION:4\n#EXT-X-STREAM-INF:AUDIO=\"600k\",BANDWIDTH=1395723,PROGRAM-ID=1,CODECS=\"avc1.42c01e,mp4a.40.2\",RESOLUTION=640x360,SUBTITLES=\"subs\"\n/videos/DianaLaufenberg_2010X/video/600k.m3u8?preroll=Thousands&uniqueId=4df94b1d\n#EXT-X-STREAM-INF:AUDIO=\"600k\",BANDWIDTH=170129,PROGRAM-ID=1,CODECS=\"avc1.42c00c,mp4a.40.2\",RESOLUTION=320x180,SUBTITLES=\"subs\"\n/videos/DianaLaufenberg_2010X/video/64k.m3u8?preroll=Thousands&uniqueId=4df94b1d\n#EXT-X-STREAM-INF:AUDIO=\"600k\",BANDWIDTH=425858,PROGRAM-ID=1,CODECS=\"avc1.42c015,mp4a.40.2\",RESOLUTION=512x288,SUBTITLES=\"subs\"\n/videos/DianaLaufenberg_2010X/video/180k.m3u8?preroll=Thousands&uniqueId=4df94b1d\n#EXT-X-STREAM-INF:AUDIO=\"600k\",BANDWIDTH=718158,PROGRAM-ID=1,CODECS=\"avc1.42c015,mp4a.40.2\",RESOLUTION=512x288,SUBTITLES=\"subs\"\n/videos/DianaLaufenberg_2010X/video/320k.m3u8?preroll=Thousands&uniqueId=4df94b1d"; String payload2 = "#EXTM3U\n#EXT-X-TARGETDURATION:10\n#EXT-X-VERSION:4\n#EXT-X-MEDIA-SEQUENCE:0\n#EXT-X-PLAYLIST-TYPE:VOD\n#EXTINF:5.0000,\n#EXT-X-BYTERANGE:440672@0\nhttps://pb.tedcdn.com/bumpers/hls/video/in/Thousands-320k.ts\n#EXTINF:5.0000,\n#EXT-X-BYTERANGE:94000@440672\nhttps://pb.tedcdn.com/bumpers/hls/video/in/Thousands-320k.ts\n#EXTINF:1.9583,\n#EXT-X-BYTERANGE:22748@534672\nhttps://pb.tedcdn.com/bumpers/hls/video/in/Thousands-320k.ts\n#EXT-X-DISCONTINUITY"; Map> headers = new HashMap>(); @@ -76,7 +77,7 @@ public void testSample() throws Exception { headers.put("headerKey1", header1); headers.put("headerKey2", header2); headers.put("headerKey3", header3); - + respond1.setRequestHeaders("GET http://www.mock.com/path\n"); respond1.setHeaders(headers); respond1.setResponse(payload1); @@ -86,7 +87,7 @@ public void testSample() throws Exception { respond1.setSuccess(true); respond1.setSentBytes(payload1.length()); respond1.setContentEncoding("UTF-8"); - + respond2.setRequestHeaders("GET http://www.mock.com/path/videos/DianaLaufenberg_2010X/video/600k.m3u8?preroll=Thousands&uniqueId=4df94b1d\n"); respond2.setHeaders(headers); respond2.setResponse(payload2); @@ -96,7 +97,7 @@ public void testSample() throws Exception { respond2.setSuccess(true); respond2.setSentBytes(payload2.length()); respond2.setContentEncoding("UTF-8"); - + respond3.setRequestHeaders("GET https://pb.tedcdn.com/bumpers/hls/video/in/Thousands-320k_1.ts\n"); respond3.setHeaders(headers); respond3.setResponse("chunck"); @@ -106,7 +107,7 @@ public void testSample() throws Exception { respond3.setSuccess(true); respond3.setSentBytes("chunck".length()); respond3.setContentEncoding("UTF-8"); - + respond4.setRequestHeaders("GET https://pb.tedcdn.com/bumpers/hls/video/in/Thousands-320k_2.ts\n"); respond4.setHeaders(headers); respond4.setResponse("chunck"); @@ -116,7 +117,7 @@ public void testSample() throws Exception { respond4.setSuccess(true); respond4.setSentBytes("chunck".length()); respond4.setContentEncoding("UTF-8"); - + respond5.setRequestHeaders("GET https://pb.tedcdn.com/bumpers/hls/video/in/Thousands-320k_3.ts\n"); respond5.setHeaders(headers); respond5.setResponse("chunck"); @@ -126,24 +127,24 @@ public void testSample() throws Exception { respond5.setSuccess(true); respond5.setSentBytes("chunck".length()); respond5.setContentEncoding("UTF-8"); - + Mockito.when(parserMock.getBaseUrl(Mockito.any(URL.class),Mockito.any(SampleResult.class),Mockito.anyBoolean())) .thenReturn(respond1) .thenReturn(respond2) .thenReturn(respond3) .thenReturn(respond4) .thenReturn(respond5); - - Mockito.when(parserMock.extractUriMaster(Mockito.any(String.class),Mockito.any(String.class),Mockito.any(String.class),Mockito.any(String.class),Mockito.any(String.class),Mockito.any(String.class))) + + Mockito.when(parserMock.extractUriMaster(Mockito.any(String.class),Mockito.any(String.class),Mockito.any(String.class),Mockito.any(String.class),Mockito.any(String.class))) .thenReturn("/videos/DianaLaufenberg_2010X/video/600k.m3u8?preroll=Thousands&uniqueId=4df94b1d"); Mockito.when(parserMock.extractVideoUrl(Mockito.any())) .thenReturn(fragments); Mockito.when(parserMock.isLive(Mockito.any(String.class))) .thenReturn(false); - - + + SampleResult result = sampler.sample(null); - + assertEquals("GET http://www.mock.com/path\n\n\n\n\n", result.getRequestHeaders()); assertEquals(true, result.isSuccessful()); assertEquals("OK", result.getResponseMessage()); @@ -153,7 +154,7 @@ public void testSample() throws Exception { assertEquals("200", result.getResponseCode()); assertEquals("application/json;charset=UTF-8", result.getContentType()); assertEquals("UTF-8", result.getDataEncodingNoDefault()); - + SampleResult[] subresults = result.getSubResults(); assertEquals("GET http://www.mock.com/path/videos/DianaLaufenberg_2010X/video/600k.m3u8?preroll=Thousands&uniqueId=4df94b1d\n\n\n\n\n", subresults[0].getRequestHeaders()); assertEquals(true, subresults[0].isSuccessful()); @@ -164,9 +165,9 @@ public void testSample() throws Exception { assertEquals("200", subresults[0].getResponseCode()); assertEquals("application/json;charset=UTF-8", subresults[0].getContentType()); assertEquals("UTF-8", subresults[0].getDataEncodingNoDefault()); - + SampleResult[] subsubresults = subresults[0].getSubResults(); - + assertEquals("GET https://pb.tedcdn.com/bumpers/hls/video/in/Thousands-320k_1.ts\n\n\n\n\n", subsubresults[0].getRequestHeaders()); assertEquals(true, subsubresults[0].isSuccessful()); assertEquals("OK", subsubresults[0].getResponseMessage()); @@ -175,7 +176,7 @@ public void testSample() throws Exception { assertEquals("200", subsubresults[0].getResponseCode()); assertEquals("application/json;charset=UTF-8", subsubresults[0].getContentType()); assertEquals("UTF-8", subsubresults[0].getDataEncodingNoDefault()); - + assertEquals("GET https://pb.tedcdn.com/bumpers/hls/video/in/Thousands-320k_2.ts\n\n\n\n\n", subsubresults[1].getRequestHeaders()); assertEquals(true, subsubresults[1].isSuccessful()); assertEquals("OK", subsubresults[1].getResponseMessage()); @@ -184,7 +185,7 @@ public void testSample() throws Exception { assertEquals("200", subsubresults[1].getResponseCode()); assertEquals("application/json;charset=UTF-8", subsubresults[1].getContentType()); assertEquals("UTF-8", subsubresults[1].getDataEncodingNoDefault()); - + assertEquals("GET https://pb.tedcdn.com/bumpers/hls/video/in/Thousands-320k_3.ts\n\n\n\n\n", subsubresults[2].getRequestHeaders()); assertEquals(true, subsubresults[2].isSuccessful()); assertEquals("OK", subsubresults[2].getResponseMessage()); @@ -193,14 +194,14 @@ public void testSample() throws Exception { assertEquals("200", subsubresults[2].getResponseCode()); assertEquals("application/json;charset=UTF-8", subsubresults[2].getContentType()); assertEquals("UTF-8", subsubresults[2].getDataEncodingNoDefault()); - - - - - - - + + + + + + + } } diff --git a/hls/src/test/java/com/blazemeter/jmeter/hls/logic/ParserTest.java b/hls/src/test/java/com/blazemeter/jmeter/hls/logic/ParserTest.java index 07edb3e..331e271 100644 --- a/hls/src/test/java/com/blazemeter/jmeter/hls/logic/ParserTest.java +++ b/hls/src/test/java/com/blazemeter/jmeter/hls/logic/ParserTest.java @@ -106,105 +106,116 @@ public void testExtractUriMaster() throws Exception{ /videos/DianaLaufenberg_2010X/video/320k.m3u8?preroll=Thousands&uniqueId=4df94b1d */ - - String result = p.extractUriMaster(res, "640x360", "1395723", "customBandwidth", "customResolution", "Bandwidth"); + + String result = p.extractUriMaster(res, "640x360", "1395723", "customBandwidth", "customResolution"); String expected = "/videos/DianaLaufenberg_2010X/video/600k.m3u8?preroll=Thousands&uniqueId=4df94b1d"; - + System.out.println(res); System.out.println("***********************"); - + System.out.println(result); System.out.println(expected); System.out.println("*********"); assertEquals(expected, result); - - result = p.extractUriMaster(res, "640x360", "", "minBandwidth", "customResolution", "Bandwidth"); + + result = p.extractUriMaster(res, "720x480", "1395723", "customBandwidth", "customResolution"); + expected = "/videos/DianaLaufenberg_2010X/video/600k.m3u8?preroll=Thousands&uniqueId=4df94b1d"; + + System.out.println(res); + System.out.println("***********************"); + + System.out.println(result); + System.out.println(expected); + System.out.println("*********"); + assertEquals(expected, result); + + result = p.extractUriMaster(res, "640x360", "", "minBandwidth", "customResolution"); expected = "/videos/DianaLaufenberg_2010X/video/64k.m3u8?preroll=Thousands&uniqueId=4df94b1d"; - + System.out.println(result); System.out.println(expected); System.out.println("*********"); assertEquals(expected, result); - - result = p.extractUriMaster(res, "640x360", "", "maxBandwidth", "customResolution", "Bandwidth"); + + result = p.extractUriMaster(res, "640x360", "", "maxBandwidth", "customResolution"); expected = "/videos/DianaLaufenberg_2010X/video/600k.m3u8?preroll=Thousands&uniqueId=4df94b1d"; - + System.out.println(result); System.out.println(expected); System.out.println("*********"); // assertEquals(expected, result); - - result = p.extractUriMaster(res, "640x360", "1395723", "customBandwidth", "customResolution", ""); + + result = p.extractUriMaster(res, "640x360", "1395723", "customBandwidth", "customResolution"); expected = "/videos/DianaLaufenberg_2010X/video/600k.m3u8?preroll=Thousands&uniqueId=4df94b1d"; - + System.out.println(result); System.out.println(expected); System.out.println("*********"); assertEquals(expected, result); - - result = p.extractUriMaster(res, "640x360", "", "minBandwidth", "customResolution", ""); + + result = p.extractUriMaster(res, "640x360", "", "minBandwidth", "customResolution"); expected = "/videos/DianaLaufenberg_2010X/video/64k.m3u8?preroll=Thousands&uniqueId=4df94b1d"; - + System.out.println(result); System.out.println(expected); System.out.println("*********"); assertEquals(expected, result); - - result = p.extractUriMaster(res, "640x360", "", "maxBandwidth", "customResolution", ""); + + result = p.extractUriMaster(res, "640x360", "", "maxBandwidth", "customResolution"); expected = "/videos/DianaLaufenberg_2010X/video/600k.m3u8?preroll=Thousands&uniqueId=4df94b1d"; - + System.out.println(result); System.out.println(expected); System.out.println("*********"); assertEquals(expected, result); - - result = p.extractUriMaster(res, "", "1395723", "customBandwidth", "maxResolution", ""); + + result = p.extractUriMaster(res, "", "1395723", "customBandwidth", "maxResolution"); expected = "/videos/DianaLaufenberg_2010X/video/600k.m3u8?preroll=Thousands&uniqueId=4df94b1d"; - + System.out.println(result); System.out.println(expected); System.out.println("*********"); assertEquals(expected, result); - - result = p.extractUriMaster(res, "", "", "minBandwidth", "maxResolution", ""); + + result = p.extractUriMaster(res, "", "", "minBandwidth", "maxResolution"); expected = "/videos/DianaLaufenberg_2010X/video/64k.m3u8?preroll=Thousands&uniqueId=4df94b1d"; - + System.out.println(result); System.out.println(expected); System.out.println("*********"); assertEquals(expected, result); - - result = p.extractUriMaster(res, "", "", "maxBandwidth", "maxResolution", ""); + + result = p.extractUriMaster(res, "", "", "maxBandwidth", "maxResolution"); expected = "/videos/DianaLaufenberg_2010X/video/600k.m3u8?preroll=Thousands&uniqueId=4df94b1d"; - + System.out.println(result); System.out.println(expected); System.out.println("*********"); assertEquals(expected, result); - - result = p.extractUriMaster(res, "", "1395723", "customBandwidth", "minResolution", ""); + + result = p.extractUriMaster(res, "", "1395723", "customBandwidth", "minResolution"); expected = "/videos/DianaLaufenberg_2010X/video/64k.m3u8?preroll=Thousands&uniqueId=4df94b1d"; - + System.out.println(result); System.out.println(expected); System.out.println("*********"); assertEquals(expected, result); - - result = p.extractUriMaster(res, "", "", "minBandwidth", "minResolution", ""); + + result = p.extractUriMaster(res, "", "", "minBandwidth", "minResolution"); expected = "/videos/DianaLaufenberg_2010X/video/64k.m3u8?preroll=Thousands&uniqueId=4df94b1d"; - + System.out.println(result); System.out.println(expected); System.out.println("*********"); assertEquals(expected, result); - - result = p.extractUriMaster(res, "", "", "maxBandwidth", "minResolution", ""); + + result = p.extractUriMaster(res, "", "", "maxBandwidth", "minResolution"); expected = "/videos/DianaLaufenberg_2010X/video/600k.m3u8?preroll=Thousands&uniqueId=4df94b1d"; - + System.out.println(result); System.out.println(expected); System.out.println("*********"); assertEquals(expected, result); - } + } }