def test_multiple_fonts(self):
        self.session.page_view({
            "Roboto-Regular.ttf": u([1, 2, 3]),
            "NotoSansJP-Regular.otf": u([3, 4]),
        })
        self.session.page_view({
            "Roboto-Regular.ttf": u([3, 4, 5]),
        })
        self.session.page_view({
            "NotoSansJP-Regular.otf": u([1]),
        })

        graphs = self.session.get_request_graphs()
        self.assertEqual(len(graphs), 3)
        self.assertTrue(
            request_graph.graph_has_independent_requests(
                graphs[0], [
                    (0, 3000),
                    (0, 2000),
                ]))
        self.assertTrue(
            request_graph.graph_has_independent_requests(
                graphs[1], [
                    (0, 2000),
                ]))
        self.assertTrue(
            request_graph.graph_has_independent_requests(
                graphs[2], [
                    (0, 1000),
                ]))
    def test_multiple_pageviews(self):
        self.session.page_view({"Roboto-Regular.ttf": u([1, 2, 3])})
        self.session.page_view({"Roboto-Regular.ttf": u([4, 5])})
        self.session.page_view({"Roboto-Regular.ttf": u([1, 2, 3])})
        self.session.page_view({"Roboto-Regular.ttf": u([1, 8])})

        graphs = self.session.get_request_graphs()
        self.assertEqual(len(graphs), 4)
        self.assertTrue(
            request_graph.graph_has_independent_requests(
                graphs[0], [
                    (0, 3000),
                ]))
        self.assertTrue(
            request_graph.graph_has_independent_requests(
                graphs[1], [
                    (0, 2000),
                ]))
        self.assertTrue(
            request_graph.graph_has_independent_requests(graphs[2], []))
        self.assertTrue(
            request_graph.graph_has_independent_requests(
                graphs[3], [
                    (0, 1000),
                ]))
Esempio n. 3
0
    def test_multiple_fonts_caches_subsets(self):
        self.session.page_view({
            "Roboto-Regular.ttf": u([0x61, 0x62]),
        })
        self.session.page_view({
            "NotoSansJP-Regular.otf": u([0x61, 0x62]),
        })
        self.session.page_view({
            "Roboto-Regular.ttf": u([0x63]),
            "NotoSansJP-Regular.otf": u([0x63]),
        })

        graphs = self.session.get_request_graphs()
        self.assertEqual(len(graphs), 3)
        self.assertTrue(
            request_graph.graph_has_independent_requests(
                graphs[0], [
                    (35, 1035),
                ]))
        self.assertTrue(
            request_graph.graph_has_independent_requests(
                graphs[1], [
                    (35, 1035),
                ]))
        self.assertTrue(
            request_graph.graph_has_independent_requests(graphs[2], []))
  def test_single_file_loads_only_once(self):
    self.session.page_view({"Roboto-Regular.ttf": u([0x61, 0x62])})
    self.session.page_view({"Roboto-Regular.ttf": u([0x63, 0x64])})

    graphs = self.session.get_request_graphs()
    self.assertEqual(len(graphs), 2)
    self.assertTrue(
        request_graph.graph_has_independent_requests(graphs[0], [
            (35, 35 + ROBOTO_REGULAR_WOFF2_SIZE),
        ]))
    self.assertTrue(request_graph.graph_has_independent_requests(graphs[1], []))
  def test_graph_has_independent_requests(self):
    r_1 = request_graph.Request(1, 2)
    r_2 = request_graph.Request(3, 4)
    r_3 = request_graph.Request(5, 6)
    graph = request_graph.RequestGraph({r_1, r_2, r_3})

    self.assertTrue(
        request_graph.graph_has_independent_requests(graph, [(3, 4), (1, 2),
                                                             (5, 6)]))
    self.assertFalse(
        request_graph.graph_has_independent_requests(graph, [(3, 5), (1, 2),
                                                             (5, 6)]))
    def test_no_requests(self):
        page_view = page_view_sequence_pb2.PageViewProto()
        page_view.contents.add()

        self.session.page_view_proto(page_view)
        self.session.page_view_proto(page_view)

        graphs = self.session.get_request_graphs()
        self.assertEqual(len(graphs), 2)

        self.assertTrue(
            request_graph.graph_has_independent_requests(graphs[0], []))
        self.assertTrue(
            request_graph.graph_has_independent_requests(graphs[1], []))
Esempio n. 7
0
  def test_subsequent_subset_smaller(self):
    session = optimal_pfe_method.start_session(
        None, font_loader.FontLoader("./patch_subset/testdata/"),
        InverseMockSubsetSizer())
    session.page_view({"Roboto-Regular.ttf": u([1, 2, 3])})
    session.page_view({"Roboto-Regular.ttf": u([4, 5])})

    graphs = session.get_request_graphs()
    self.assertEqual(len(graphs), 2)
    self.assertTrue(
        request_graph.graph_has_independent_requests(graphs[0], [
            (0, 1000),
        ]))
    self.assertTrue(request_graph.graph_has_independent_requests(graphs[1], []))
Esempio n. 8
0
    def test_single_font_no_subsets(self):
        self.session.page_view({"Roboto-Regular.ttf": u([12345])})

        graphs = self.session.get_request_graphs()
        self.assertEqual(len(graphs), 1)
        self.assertTrue(
            request_graph.graph_has_independent_requests(graphs[0], []))
    def test_ignores_no_codepoint_font(self):
        self.session.page_view({"Roboto-Regular.ttf": u([])})

        graphs = self.session.get_request_graphs()
        self.assertEqual(len(graphs), 1)
        self.assertTrue(
            request_graph.graph_has_independent_requests(graphs[0], []))
Esempio n. 10
0
  def test_single_font_caches_subsets(self):
    self.session.page_view({"Roboto-Regular.ttf": u([0x61, 0x62, 0x0474])})
    self.session.page_view({"Roboto-Regular.ttf": u([0x63, 0x0475])})
    self.session.page_view({"Roboto-Regular.ttf": u([0x040E])})

    graphs = self.session.get_request_graphs()
    self.assertEqual(len(graphs), 3)
    self.assertTrue(
        request_graph.graph_has_independent_requests(graphs[0], [
            (35, 1035),
            (35, 1035),
        ]))
    self.assertTrue(request_graph.graph_has_independent_requests(graphs[1], []))
    self.assertTrue(
        request_graph.graph_has_independent_requests(graphs[2], [
            (35, 1035),
        ]))
  def test_one_page_view(self):
    self.session.page_view({"Roboto-Regular.ttf": u([1, 2, 3])})

    graphs = self.session.get_request_graphs()
    self.assertEqual(len(graphs), 1)
    self.assertTrue(
        request_graph.graph_has_independent_requests(graphs[0], [
            (0, 3000),
        ]))
Esempio n. 12
0
  def test_single_font_one_subset(self):
    self.session.page_view({"Roboto-Regular.ttf": u([0x61, 0x62])})

    graphs = self.session.get_request_graphs()
    self.assertEqual(len(graphs), 1)
    self.assertTrue(
        request_graph.graph_has_independent_requests(graphs[0], [
            (35, 1035),
        ]))
    def test_single_requests(self):
        page_view = page_view_sequence_pb2.PageViewProto()
        content = page_view.contents.add()
        logged_request = content.logged_requests.add()
        logged_request.request_size = 123
        logged_request.response_size = 456

        self.session.page_view_proto(page_view)
        self.session.page_view_proto(page_view)

        graphs = self.session.get_request_graphs()
        self.assertEqual(len(graphs), 2)

        self.assertTrue(
            request_graph.graph_has_independent_requests(
                graphs[0], [(123, 456)]))
        self.assertTrue(
            request_graph.graph_has_independent_requests(
                graphs[1], [(123, 456)]))
  def test_parallel_file_loads(self):
    self.session.page_view({
        "Roboto-Regular.ttf": u([0x61, 0x62]),
        "Roboto-Thin.ttf": u([0x61, 0x62]),
    })

    graphs = self.session.get_request_graphs()
    self.assertEqual(len(graphs), 1)
    self.assertTrue(
        request_graph.graph_has_independent_requests(graphs[0], [
            (35, 35 + ROBOTO_REGULAR_WOFF2_SIZE),
            (35, 35 + ROBOTO_THIN_WOFF2_SIZE),
        ]))
  def test_cached_file_load(self):
    session = whole_font_pfe_method.start_session(
        None, font_loader.FontLoader("./patch_subset/testdata/"))
    session.page_view({"Roboto-Regular.ttf": u([0x61, 0x62])})
    session = whole_font_pfe_method.start_session(
        None, font_loader.FontLoader("./patch_subset/testdata/"))
    session.page_view({"Roboto-Regular.ttf": u([0x63, 0x64])})

    graphs = session.get_request_graphs()
    self.assertEqual(len(graphs), 1)
    self.assertTrue(
        request_graph.graph_has_independent_requests(graphs[0], [
            (35, 35 + ROBOTO_REGULAR_WOFF2_SIZE),
        ]))
    def test_multiple_chained_requests(self):
        page_view = page_view_sequence_pb2.PageViewProto()
        content = page_view.contents.add()
        logged_request = content.logged_requests.add()
        logged_request.request_size = 12
        logged_request.response_size = 34
        content = page_view.contents.add()
        logged_request = content.logged_requests.add()
        logged_request.request_size = 56
        logged_request.response_size = 78

        self.session.page_view_proto(page_view)

        graphs = self.session.get_request_graphs()
        self.assertEqual(len(graphs), 1)
        self.assertTrue(
            request_graph.graph_has_independent_requests(
                graphs[0], [(12, 34), (56, 78)]))
  def test_graph_has_independent_requests_empty(self):
    graph = request_graph.RequestGraph(set())

    self.assertTrue(request_graph.graph_has_independent_requests(graph, []))
    self.assertFalse(
        request_graph.graph_has_independent_requests(graph, [(1, 2)]))