コード例 #1
0
 def testThatTimeSegmentIsSameAsNumber(self):
     urlParts = [
         'livesim', 'segtimeline_1', 'testpic', 'A1',
         't%d.m4s' % self.seg_time
     ]
     dp = dash_proxy.DashProvider("server.org",
                                  urlParts,
                                  None,
                                  VOD_CONFIG_DIR,
                                  CONTENT_ROOT,
                                  now=self.now)
     time_seg = dash_proxy.get_media(dp)
     urlParts = [
         'livesim', 'segtimeline_1', 'testpic', 'A1',
         '%d.m4s' % self.seg_nr
     ]
     dp = dash_proxy.DashProvider("server.org",
                                  urlParts,
                                  None,
                                  VOD_CONFIG_DIR,
                                  CONTENT_ROOT,
                                  now=self.now)
     nr_seg = dash_proxy.get_media(dp)
     self.assertEqual(len(time_seg), len(nr_seg))
     self.assertEqual(time_seg, nr_seg)
コード例 #2
0
 def get_segment(nr, now):
     urlParts = [
         'pdash', 'start_3540', 'stop_3660', 'timeoffset_0', 'testpic',
         'A1',
         '%d.m4s' % nr
     ]
     dp = dash_proxy.DashProvider("127.0.0.1", urlParts, None,
                                  VOD_CONFIG_DIR, CONTENT_ROOT, now)
     return dash_proxy.get_media(dp)
コード例 #3
0
 def testCheckDowAndUpDependingOnTime(self):
     urlParts = [
         'livesim', 'ato_inf', 'baseurl_d40_u20', 'testpic', 'A1', '0.m4s'
     ]
     dp = dash_proxy.DashProvider("streamtest.eu",
                                  urlParts,
                                  None,
                                  VOD_CONFIG_DIR,
                                  CONTENT_ROOT,
                                  now=68)
     self.assertFalse(isMediaSegment(dash_proxy.get_media(dp)))
     dp = dash_proxy.DashProvider("streamtest.eu",
                                  urlParts,
                                  None,
                                  VOD_CONFIG_DIR,
                                  CONTENT_ROOT,
                                  now=108)
     self.assertTrue(isMediaSegment(dash_proxy.get_media(dp)))
 def testCheckAvailabilityTimeFractional(self):
     "Check if timing with fractional seconds is correct with availabilityTimeOffset."
     urlParts = ['livesim', 'start_60', 'ato_1.5', 'testpic', 'A1', '0.m4s']
     expected_results = [False, True, True]  # should be available from 60+6-1.5=64.5s (segment duration is 6s)
     times = [64.3, 64.6, 64.9]
     for (exp, now) in zip(expected_results, times):
         dp = dash_proxy.DashProvider("streamtest.eu", urlParts, None, VOD_CONFIG_DIR, CONTENT_ROOT, now=now)
         d = dash_proxy.get_media(dp)
         self.assertEqual(isMediaSegment(d), exp, "Did not match for time %s" % now)
コード例 #5
0
 def testMediaSegmentTooEarlyWithAST(self):
     urlParts = ['pdash', 'start_6', 'testpic', 'A1',
                 '0.m4s']  # Should be available after 12s
     dp = dash_proxy.DashProvider("127.0.0.1",
                                  urlParts,
                                  None,
                                  VOD_CONFIG_DIR,
                                  CONTENT_ROOT,
                                  now=10)
     d = dash_proxy.get_media(dp)
     self.assertEqual(d['ok'], False)
     dp = dash_proxy.DashProvider("127.0.0.1",
                                  urlParts,
                                  None,
                                  VOD_CONFIG_DIR,
                                  CONTENT_ROOT,
                                  now=14)
     d = dash_proxy.get_media(dp)
     self.assertEqual(len(d), 40346)  # A full media segment
 def testCheckAvailabilityTimeErrorMsg(self):
     "Check if error message is correct with availabilityTimeOffset."
     testelem = ['ato_30', 'ato_1.5', 'ato_inf']
     expected_results = ['1.0s', '29.5s', '25.0s']
     for (exp, elem) in zip(expected_results, testelem):
         urlParts = ['livesim', 'start_60', elem, 'testpic', 'A1', '0.m4s']
         dp = dash_proxy.DashProvider("streamtest.eu", urlParts, None, VOD_CONFIG_DIR, CONTENT_ROOT, now=35)
         d = dash_proxy.get_media(dp)
         self.assertEqual(str(d), "{'ok': False, 'pl': 'Request 0.m4s before first seg AST. " +
                          exp + " too early\\n'}")
コード例 #7
0
 def testMediaSegmentTooEarly(self):
     urlParts = ['pdash', 'testpic', 'A1',
                 '5.m4s']  # Should be available after 36s
     dp = dash_proxy.DashProvider("127.0.0.1",
                                  urlParts,
                                  None,
                                  VOD_CONFIG_DIR,
                                  CONTENT_ROOT,
                                  now=34)
     d = dash_proxy.get_media(dp)
     self.assertEqual(d['ok'], False)
コード例 #8
0
 def testOtherOrderOfOptions(self):
     urlParts = [
         'livesim', 'baseurl_u20_d10', 'ato_inf', 'testpic', 'A1', '0.m4s'
     ]
     dp = dash_proxy.DashProvider("streamtest.eu",
                                  urlParts,
                                  None,
                                  VOD_CONFIG_DIR,
                                  CONTENT_ROOT,
                                  now=10)
     d = dash_proxy.get_media(dp)
     self.assertTrue(isMediaSegment(d), "Not a media segment, but %r" % d)
     dp = dash_proxy.DashProvider("streamtest.eu",
                                  urlParts,
                                  None,
                                  VOD_CONFIG_DIR,
                                  CONTENT_ROOT,
                                  now=25)
     self.assertFalse(isMediaSegment(dash_proxy.get_media(dp)),
                      "Is a media segment, but should not be")
コード例 #9
0
 def testMediaSegmentBeforeTimeShiftBufferDepth(self):
     now = 1356999060
     segment = "%d.m4s" % ((now - 330) / 6)
     urlParts = ['pdash', 'testpic', 'A1', segment]
     dp = dash_proxy.DashProvider("127.0.0.1",
                                  urlParts,
                                  None,
                                  VOD_CONFIG_DIR,
                                  CONTENT_ROOT,
                                  now=now)
     d = dash_proxy.get_media(dp)
     self.assertEqual(d['ok'], False)
コード例 #10
0
 def testMediaSegmentInIntervalWithoutOffset(self):
     "Check that segment 5 is available after an hour."
     urlParts = [
         'pdash', 'start_3600', 'stop_3660', 'testpic', 'A1', '5.m4s'
     ]
     dp = dash_proxy.DashProvider("127.0.0.1",
                                  urlParts,
                                  None,
                                  VOD_CONFIG_DIR,
                                  CONTENT_ROOT,
                                  now=3650)
     d = dash_proxy.get_media(dp)
     self.assertEqual(d[4:8], b'styp')
 def testEmsgInSegment(self):
     urlParts = [
         'livesim', 'baseurl_u10_d20', 'segtimeline_1', 'segtimelineloss_1',
         'testpic', 'A1', '0.m4s'
     ]
     dp = dash_proxy.DashProvider("streamtest.eu",
                                  urlParts,
                                  None,
                                  VOD_CONFIG_DIR,
                                  CONTENT_ROOT,
                                  now=10)
     d = dash_proxy.get_media(dp)
     self.assertTrue(isEmsgPresentInSegment(d))
コード例 #12
0
 def testThatTimeLookupWorks(self):
     urlParts = [
         'livesim', 'segtimeline_1', 'testpic', 'A1',
         't%d.m4s' % self.seg_time
     ]
     dp = dash_proxy.DashProvider("server.org",
                                  urlParts,
                                  None,
                                  VOD_CONFIG_DIR,
                                  CONTENT_ROOT,
                                  now=self.now)
     d = dash_proxy.get_media(dp)
     self.assertTrue(isinstance(d, bytes), "A segment is returned")
コード例 #13
0
 def testNoScte35Event(self):
     segDur = 6
     segNr = 1800001
     now = segNr * segDur + 50
     segment = "%d.m4s" % segNr
     urlParts = ['pdash', 'scte35_1', 'testpic', 'V1', segment]
     dp = dash_proxy.DashProvider("127.0.0.1",
                                  urlParts,
                                  None,
                                  VOD_CONFIG_DIR,
                                  CONTENT_ROOT,
                                  now=now)
     d = dash_proxy.get_media(dp)
     self.assertEqual(d.find(b'emsg'), -1)
コード例 #14
0
 def testMediaMux(self):
     testOutputFile = "test_mux.m4s"
     rm_outfile(testOutputFile)
     now = 1356998460
     segment = "%d.m4s" % ((now - 60) // 6)
     urlParts = ['pdash', 'testpic', 'V1__A1', segment]
     dp = dash_proxy.DashProvider("127.0.0.1",
                                  urlParts,
                                  None,
                                  VOD_CONFIG_DIR,
                                  CONTENT_ROOT,
                                  now=now)
     d = dash_proxy.get_media(dp)
     write_data_to_outfile(d, testOutputFile)
コード例 #15
0
 def testMediaSegmentWithSidx(self):
     testOutputFile = "t1_sidx.m4s"
     rm_outfile(testOutputFile)
     now = 2101  # 1s after start of segment 350
     segment = "349.m4s"
     urlParts = ['pdash', 'sidx_1', 'testpic', 'A1', segment]
     dp = dash_proxy.DashProvider("127.0.0.1",
                                  urlParts,
                                  None,
                                  VOD_CONFIG_DIR,
                                  CONTENT_ROOT,
                                  now=now)
     d = dash_proxy.get_media(dp)
     write_data_to_outfile(d, testOutputFile)
コード例 #16
0
 def testMediaSegmentForTfdt32(self):
     testOutputFile = "t1.m4s"
     rm_outfile(testOutputFile)
     now = 2101  # 1s after start of segment 350
     segment = "349.m4s"
     urlParts = ['pdash', 'tfdt_32', 'testpic', 'A1', segment]
     dp = dash_proxy.DashProvider("127.0.0.1",
                                  urlParts,
                                  None,
                                  VOD_CONFIG_DIR,
                                  CONTENT_ROOT,
                                  now=now)
     d = dash_proxy.get_media(dp)
     write_data_to_outfile(d, testOutputFile)
     self.assertEqual(len(d), 39517)
コード例 #17
0
 def testCheckUpAndDownDependingOnTime30sPeriod(self):
     urlParts = [
         'livesim', 'ato_inf', 'baseurl_u20_d10', 'testpic', 'A1', '0.m4s'
     ]
     expected_results = [True, True, False, True, True, False]
     times = [7, 17, 27, 37, 47, 57]
     for (exp, now) in zip(expected_results, times):
         dp = dash_proxy.DashProvider("streamtest.eu",
                                      urlParts,
                                      None,
                                      VOD_CONFIG_DIR,
                                      CONTENT_ROOT,
                                      now=now)
         self.assertEqual(isMediaSegment(dash_proxy.get_media(dp)), exp,
                          "Did not match for time %s" % now)
コード例 #18
0
 def testLastMediaSegment(self):
     """With total duration of 2100, the last segment shall be 349
     (independent of start) and available at 4101 start+dur_1800+dur_300."""
     urlParts = [
         'pdash', 'start_2000', 'dur_1800', 'dur_300', 'testpic', 'A1',
         '349.m4s'
     ]
     dp = dash_proxy.DashProvider("streamtest.eu",
                                  urlParts,
                                  None,
                                  VOD_CONFIG_DIR,
                                  CONTENT_ROOT,
                                  now=4101)
     d = dash_proxy.get_media(dp)
     # print "LMSG at %d" % d.find("lmsg")
     self.assertEqual(d.find(b"lmsg"), 24)
コード例 #19
0
 def testTtmlSegment(self):
     testOutputFile = "sub.m4s"
     rm_outfile(testOutputFile)
     segmentNr = 718263000
     segment = "%d.m4s" % segmentNr
     now = segmentNr * 2 + 10
     urlParts = ['livsim', 'ato_inf', 'testpic_stpp', 'S1', segment]
     dp = dash_proxy.DashProvider("127.0.0.1",
                                  urlParts,
                                  None,
                                  VOD_CONFIG_DIR,
                                  CONTENT_ROOT,
                                  now=now)
     d = dash_proxy.get_media(dp)
     write_data_to_outfile(d, testOutputFile)
     self.assertTrue(d.find(b'begin="399035:00:00.000"') > 0)
     self.assertTrue(d.find(b'eng : UTC = 2015-07-10T11:00:00Z') > 0)
コード例 #20
0
 def testScte35Event(self):
     testOutputFile = "seg_scte35.m4s"
     rm_outfile(testOutputFile)
     segDur = 6
     segNr = 1800000
     now = segNr * segDur + 50
     segment = "%d.m4s" % segNr
     urlParts = ['pdash', 'scte35_3', 'testpic', 'V1', segment]
     dp = dash_proxy.DashProvider("127.0.0.1",
                                  urlParts,
                                  None,
                                  VOD_CONFIG_DIR,
                                  CONTENT_ROOT,
                                  now=now)
     d = dash_proxy.get_media(dp)
     self.assertEqual(d.find(b'emsg'), 28)
     write_data_to_outfile(d, testOutputFile)
コード例 #21
0
 def testTfdtValueFromZero(self):
     "Tfdt value = mediaPresentationTime which corresponds to segmentNr*duration"
     now = 1393936560
     segNr = 232322749
     segment = "%d.m4s" % segNr
     urlParts = ['pdash', 'testpic', 'V1', segment]
     dp = dash_proxy.DashProvider("127.0.0.1",
                                  urlParts,
                                  None,
                                  VOD_CONFIG_DIR,
                                  CONTENT_ROOT,
                                  now=now)
     d = dash_proxy.get_media(dp)
     rm_outfile('tmp.m4s')
     tmp_name = join(OUT_DIR, 'tmp.m4s')
     with open(tmp_name, 'wb') as ofh:
         ofh.write(d)
     mf = MediaSegmentFilter(tmp_name)
     mf.filter()
     rm_outfile('tmp.m4s')
     tfdtValue = mf.tfdt_value
     presentationTime = tfdtValue // 90000
     segmentTime = segNr * 6
     self.assertEqual(presentationTime, segmentTime)