Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(340)

Side by Side Diff: tools/android/loading/resource_sack_unittest.py

Issue 1837193002: Clovis: update resource sack to use new dependency graph. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: comments Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 # Copyright 2016 The Chromium Authors. All rights reserved. 1 # Copyright 2016 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import unittest 5 import unittest
6 6
7 import resource_sack 7 import resource_sack
8 from test_utils import (MakeRequest, 8 from test_utils import (MakeRequest,
9 TestResourceGraph) 9 TestDependencyGraph)
10 10
11 11
12 class ResourceSackTestCase(unittest.TestCase): 12 class ResourceSackTestCase(unittest.TestCase):
13 def SimpleGraph(self, node_names): 13 def SimpleGraph(self, node_names):
14 """Create a simple graph from a list of nodes.""" 14 """Create a simple graph from a list of nodes."""
15 requests = [MakeRequest(node_names[0], 'null')] 15 requests = [MakeRequest(node_names[0], 'null')]
16 for n in node_names[1:]: 16 for n in node_names[1:]:
17 requests.append(MakeRequest(n, node_names[0])) 17 requests.append(MakeRequest(n, node_names[0]))
18 return TestResourceGraph.FromRequestList(requests) 18 return TestDependencyGraph(requests)
19 19
20 def test_NodeMerge(self): 20 def test_NodeMerge(self):
21 g1 = TestResourceGraph.FromRequestList([ 21 g1 = TestDependencyGraph([
22 MakeRequest(0, 'null'), 22 MakeRequest(0, 'null'),
23 MakeRequest(1, 0), 23 MakeRequest(1, 0),
24 MakeRequest(2, 0), 24 MakeRequest(2, 0),
25 MakeRequest(3, 1)]) 25 MakeRequest(3, 1)])
26 g2 = TestResourceGraph.FromRequestList([ 26 g2 = TestDependencyGraph([
27 MakeRequest(0, 'null'), 27 MakeRequest(0, 'null'),
28 MakeRequest(1, 0), 28 MakeRequest(1, 0),
29 MakeRequest(2, 0), 29 MakeRequest(2, 0),
30 MakeRequest(4, 2)]) 30 MakeRequest(4, 2)])
31 sack = resource_sack.GraphSack() 31 sack = resource_sack.GraphSack()
32 sack.ConsumeGraph(g1) 32 sack.ConsumeGraph(g1)
33 sack.ConsumeGraph(g2) 33 sack.ConsumeGraph(g2)
34 self.assertEqual(5, len(sack.bags)) 34 self.assertEqual(5, len(sack.bags))
35 for bag in sack.bags: 35 for bag in sack.bags:
36 if bag.label not in ('3/', '4/'): 36 if bag.label not in ('3/', '4/'):
37 self.assertEqual(2, bag.num_nodes) 37 self.assertEqual(2, bag.num_nodes)
38 else: 38 else:
39 self.assertEqual(1, bag.num_nodes) 39 self.assertEqual(1, bag.num_nodes)
40 40
41 def test_MultiParents(self): 41 def test_MultiParents(self):
42 g1 = TestResourceGraph.FromRequestList([ 42 g1 = TestDependencyGraph([
43 MakeRequest(0, 'null'), 43 MakeRequest(0, 'null'),
44 MakeRequest(2, 0)]) 44 MakeRequest(2, 0)])
45 g2 = TestResourceGraph.FromRequestList([ 45 g2 = TestDependencyGraph([
46 MakeRequest(1, 'null'), 46 MakeRequest(1, 'null'),
47 MakeRequest(2, 1)]) 47 MakeRequest(2, 1)])
48 sack = resource_sack.GraphSack() 48 sack = resource_sack.GraphSack()
49 sack.ConsumeGraph(g1) 49 sack.ConsumeGraph(g1)
50 sack.ConsumeGraph(g2) 50 sack.ConsumeGraph(g2)
51 self.assertEqual(3, len(sack.bags)) 51 self.assertEqual(3, len(sack.bags))
52 labels = {bag.label: bag for bag in sack.bags} 52 labels = {bag.label: bag for bag in sack.bags}
53 def Predecessors(label):
54 bag = labels['%s/' % label]
55 return [e.from_node
56 for e in bag._sack._graph.InEdges(bag)]
53 self.assertEqual( 57 self.assertEqual(
54 set(['0/', '1/']), 58 set(['0/', '1/']),
55 set([bag.label for bag in labels['2/'].Predecessors()])) 59 set([bag.label for bag in Predecessors(2)]))
56 self.assertFalse(labels['0/'].Predecessors()) 60 self.assertFalse(Predecessors(0))
57 self.assertFalse(labels['1/'].Predecessors()) 61 self.assertFalse(Predecessors(1))
58 62
59 def test_Shortname(self): 63 def test_Shortname(self):
60 root = MakeRequest(0, 'null') 64 root = MakeRequest(0, 'null')
61 shortname = MakeRequest(1, 0) 65 shortname = MakeRequest(1, 0)
62 shortname.url = 'data:fake/content;' + 'lotsand' * 50 + 'lotsofdata' 66 shortname.url = 'data:fake/content;' + 'lotsand' * 50 + 'lotsofdata'
63 g1 = TestResourceGraph.FromRequestList([root, shortname]) 67 g1 = TestDependencyGraph([root, shortname])
64 sack = resource_sack.GraphSack() 68 sack = resource_sack.GraphSack()
65 sack.ConsumeGraph(g1) 69 sack.ConsumeGraph(g1)
66 self.assertEqual(set(['0/', 'data:fake/content']), 70 self.assertEqual(set(['0/', 'data:fake/content']),
67 set([bag.label for bag in sack.bags])) 71 set([bag.label for bag in sack.bags]))
68 72
69 def test_Core(self): 73 def test_Core(self):
70 # We will use a core threshold of 0.5 to make it easier to define 74 # We will use a core threshold of 0.5 to make it easier to define
71 # graphs. Resources 0 and 1 are core and others are not. 75 # graphs. Resources 0 and 1 are core and others are not.
72 graphs = [self.SimpleGraph([0, 1, 2]), 76 graphs = [self.SimpleGraph([0, 1, 2]),
73 self.SimpleGraph([0, 1, 3]), 77 self.SimpleGraph([0, 1, 3]),
(...skipping 28 matching lines...) Expand all
102 self.assertAlmostEqual( 106 self.assertAlmostEqual(
103 0.5, 107 0.5,
104 resource_sack.GraphSack.CoreSimilarity( 108 resource_sack.GraphSack.CoreSimilarity(
105 set([1, 2, 3]), set([1, 3, 4]))) 109 set([1, 2, 3]), set([1, 3, 4])))
106 self.assertEqual( 110 self.assertEqual(
107 0, resource_sack.GraphSack.CoreSimilarity(set(), set())) 111 0, resource_sack.GraphSack.CoreSimilarity(set(), set()))
108 112
109 113
110 if __name__ == '__main__': 114 if __name__ == '__main__':
111 unittest.main() 115 unittest.main()
OLDNEW
« no previous file with comments | « tools/android/loading/resource_sack_display_unittest.py ('k') | tools/android/loading/test_utils.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698