Example #1
0
    def test_hls_segment_rule_match_vplaylist(self):
        v_playlists_desc = httpls_client.get_variant_playlist_urls(self.master_playlist)
       
        p4000k = next( v_playlists_desc["4000000"].itervalues())
        self.assertTrue( shaper.hls_segment_rule_match(shaper.parse_hls_rules("4000k~e404"), p4000k, p4000k) != None )
        self.assertTrue( shaper.hls_segment_rule_match(shaper.parse_hls_rules("650k~e404"), p4000k, p4000k) == None )

        master_cdn_playlist = open(self.test_path + "/wt_suite/basic/wt_master_cdn_fallback.m3u8","r").read()
        v_playlists_cdn_desc = httpls_client.get_variant_playlist_urls(master_cdn_playlist)
    
        p4000k_a =  v_playlists_cdn_desc["4000000"]["a"]
        self.assertTrue( shaper.hls_segment_rule_match(shaper.parse_hls_rules("b.4000k~e404"), p4000k_a, p4000k_a) == None )
        self.assertTrue( shaper.hls_segment_rule_match(shaper.parse_hls_rules("a.4000k~e404"), p4000k_a, p4000k_a) != None )
        self.assertTrue( shaper.hls_segment_rule_match(shaper.parse_hls_rules("4000k~e404"), p4000k_a, p4000k_a) != None )
        self.assertTrue( shaper.hls_segment_rule_match(shaper.parse_hls_rules("*~e404"), p4000k_a, p4000k_a) != None )
        
        self.assertTrue( shaper.hls_segment_rule_match(shaper.parse_hls_rules("1000k.s0~e404,1000k~e500"), self.v_playlist_1000k, self.v_playlist_1000k) != None )
Example #2
0
    def test_hls_segment_rule_match_vplaylist(self):
        v_playlists_desc = httpls_client.get_variant_playlist_urls(
            self.master_playlist)

        p4000k = next(v_playlists_desc["4000000"].itervalues())
        self.assertTrue(
            shaper.hls_segment_rule_match(shaper.parse_hls_rules("4000k~e404"),
                                          p4000k, p4000k) != None)
        self.assertTrue(
            shaper.hls_segment_rule_match(shaper.parse_hls_rules("650k~e404"),
                                          p4000k, p4000k) == None)

        master_cdn_playlist = open(
            self.test_path + "/wt_suite/basic/wt_master_cdn_fallback.m3u8",
            "r").read()
        v_playlists_cdn_desc = httpls_client.get_variant_playlist_urls(
            master_cdn_playlist)

        p4000k_a = v_playlists_cdn_desc["4000000"]["a"]
        self.assertTrue(
            shaper.hls_segment_rule_match(
                shaper.parse_hls_rules("b.4000k~e404"), p4000k_a, p4000k_a) ==
            None)
        self.assertTrue(
            shaper.hls_segment_rule_match(
                shaper.parse_hls_rules("a.4000k~e404"), p4000k_a, p4000k_a) !=
            None)
        self.assertTrue(
            shaper.hls_segment_rule_match(shaper.parse_hls_rules("4000k~e404"),
                                          p4000k_a, p4000k_a) != None)
        self.assertTrue(
            shaper.hls_segment_rule_match(shaper.parse_hls_rules("*~e404"),
                                          p4000k_a, p4000k_a) != None)

        self.assertTrue(
            shaper.hls_segment_rule_match(
                shaper.parse_hls_rules("1000k.s0~e404,1000k~e500"),
                self.v_playlist_1000k, self.v_playlist_1000k) != None)
Example #3
0
    def test_hls_segment_rule_match_segment(self):
        # test rule matching with regular segments
        self.assertTrue(
            shaper.hls_segment_rule_match(shaper.parse_hls_rules(
                "1000k~e404"), self.v_playlist_1000k, self.s0_1000k) == None)
        self.assertTrue(
            shaper.hls_segment_rule_match(
                shaper.parse_hls_rules("1000k.s1~e404"), self.v_playlist_1000k,
                self.s0_1000k) == None)
        self.assertTrue(
            shaper.hls_segment_rule_match(
                shaper.parse_hls_rules("1000k.s0~e404"), self.v_playlist_1000k,
                self.s0_1000k) == "e404")

        # test rule matching with content segments
        self.assertTrue(
            shaper.hls_segment_rule_match(
                shaper.parse_hls_rules("1000k.c0~e404"), self.v_playlist_1000k,
                self.c0_1000k) == "e404")
        self.assertTrue(
            shaper.hls_segment_rule_match(
                shaper.parse_hls_rules("1000k.*~e404"), self.v_playlist_1000k,
                self.c0_1000k) == "e404")
        self.assertTrue(
            shaper.hls_segment_rule_match(
                shaper.parse_hls_rules("1000k.c0~e404"), self.v_playlist_1000k,
                self.s0_1000k) == None)

        # test rule matching with cdn and segments
        self.assertTrue(
            shaper.hls_segment_rule_match(
                shaper.parse_hls_rules("a.*.c0~e404"), self.v_playlist_1000k,
                self.c0_1000k) == "e404")
        self.assertTrue(
            shaper.hls_segment_rule_match(
                shaper.parse_hls_rules("b.*.c0~e404"), self.v_playlist_1000k,
                self.c0_1000k) == None)
        self.assertTrue(
            shaper.hls_segment_rule_match(shaper.parse_hls_rules(
                "a.*.*~e404"), self.v_playlist_1000k, self.c0_1000k) == "e404")

        self.assertTrue(
            shaper.hls_segment_rule_match(
                shaper.parse_hls_rules("a.*.*~net100.loss10"),
                self.v_playlist_1000k, self.c0_1000k) == "net100.loss10")

        # specific rule takes precedencee
        self.assertTrue(
            shaper.hls_segment_rule_match(
                shaper.parse_hls_rules("a.*.*~net100.loss10,1000k.c0~e404"),
                self.v_playlist_1000k, self.c0_1000k) == "e404")
        self.assertTrue(
            shaper.hls_segment_rule_match(
                shaper.parse_hls_rules("a.*.*~net100.loss10,1000k.s0~net100"),
                self.v_playlist_1000k, self.s0_1000k) == "net100")
Example #4
0
    def test_hls_segment_rule_match_segment(self):
        # test rule matching with regular segments      
        self.assertTrue( shaper.hls_segment_rule_match(shaper.parse_hls_rules("1000k~e404"), self.v_playlist_1000k, self.s0_1000k) == None )
        self.assertTrue( shaper.hls_segment_rule_match(shaper.parse_hls_rules("1000k.s1~e404"), self.v_playlist_1000k, self.s0_1000k) == None )
        self.assertTrue( shaper.hls_segment_rule_match(shaper.parse_hls_rules("1000k.s0~e404"), self.v_playlist_1000k, self.s0_1000k) == "e404" )

        # test rule matching with content segments
        self.assertTrue( shaper.hls_segment_rule_match(shaper.parse_hls_rules("1000k.c0~e404"), self.v_playlist_1000k, self.c0_1000k) == "e404" )
        self.assertTrue( shaper.hls_segment_rule_match(shaper.parse_hls_rules("1000k.*~e404"), self.v_playlist_1000k, self.c0_1000k) == "e404" )
        self.assertTrue( shaper.hls_segment_rule_match(shaper.parse_hls_rules("1000k.c0~e404"), self.v_playlist_1000k, self.s0_1000k) == None )

        # test rule matching with cdn and segments
        self.assertTrue( shaper.hls_segment_rule_match(shaper.parse_hls_rules("a.*.c0~e404"), self.v_playlist_1000k, self.c0_1000k) == "e404" )
        self.assertTrue( shaper.hls_segment_rule_match(shaper.parse_hls_rules("b.*.c0~e404"), self.v_playlist_1000k, self.c0_1000k) == None )
        self.assertTrue( shaper.hls_segment_rule_match(shaper.parse_hls_rules("a.*.*~e404"), self.v_playlist_1000k, self.c0_1000k) == "e404" )

        self.assertTrue( shaper.hls_segment_rule_match(shaper.parse_hls_rules("a.*.*~net100.loss10"), self.v_playlist_1000k, self.c0_1000k) == "net100.loss10")

        # specific rule takes precedencee
        self.assertTrue( shaper.hls_segment_rule_match(shaper.parse_hls_rules("a.*.*~net100.loss10,1000k.c0~e404"), self.v_playlist_1000k, self.c0_1000k) == "e404")
        self.assertTrue( shaper.hls_segment_rule_match(shaper.parse_hls_rules("a.*.*~net100.loss10,1000k.s0~net100"), self.v_playlist_1000k, self.s0_1000k) == "net100")