Index: tools/android/loading/request_dependencies_lens_unittest.py |
diff --git a/tools/android/loading/request_dependencies_lens_unittest.py b/tools/android/loading/request_dependencies_lens_unittest.py |
index 1429a0ee296dd175f0070d05a3f4d7b37ea640d8..773af44c54b37c6160aaf3281d28816fa1e52698 100644 |
--- a/tools/android/loading/request_dependencies_lens_unittest.py |
+++ b/tools/android/loading/request_dependencies_lens_unittest.py |
@@ -11,77 +11,122 @@ from request_track import (Request, TimingFromDict) |
import test_utils |
-class RequestDependencyLensTestCase(unittest.TestCase): |
- _REDIRECT_REQUEST = Request.FromJsonDict( |
+class TestRequests(object): |
+ FIRST_REDIRECT_REQUEST = Request.FromJsonDict( |
{'url': 'http://bla.com', 'request_id': '1234.redirect.1', |
'initiator': {'type': 'other'}, |
+ 'timestamp': 0.5, 'timing': TimingFromDict({})}) |
+ SECOND_REDIRECT_REQUEST = Request.FromJsonDict( |
+ {'url': 'http://bla.com/redirect1', 'request_id': '1234.redirect.2', |
+ 'initiator': {'type': 'redirect', |
+ 'initiating_request': '1234.redirect.1'}, |
'timestamp': 1, 'timing': TimingFromDict({})}) |
- _REDIRECTED_REQUEST = Request.FromJsonDict({ |
- 'url': 'http://bla.com', |
+ REDIRECTED_REQUEST = Request.FromJsonDict({ |
+ 'url': 'http://bla.com/index.html', |
'request_id': '1234.1', |
'frame_id': '123.1', |
'initiator': {'type': 'redirect', |
- 'initiating_request': '1234.redirect.1'}, |
+ 'initiating_request': '1234.redirect.2'}, |
'timestamp': 2, |
'timing': TimingFromDict({})}) |
- _REQUEST = Request.FromJsonDict({'url': 'http://bla.com', |
- 'request_id': '1234.1', |
- 'frame_id': '123.1', |
- 'initiator': {'type': 'other'}, |
- 'timestamp': 2, |
- 'timing': TimingFromDict({})}) |
- _JS_REQUEST = Request.FromJsonDict({'url': 'http://bla.com/nyancat.js', |
- 'request_id': '1234.12', |
- 'frame_id': '123.1', |
- 'initiator': {'type': 'parser', |
- 'url': 'http://bla.com'}, |
- 'timestamp': 3, |
- 'timing': TimingFromDict({})}) |
- _JS_REQUEST_OTHER_FRAME = Request.FromJsonDict( |
+ REQUEST = Request.FromJsonDict({'url': 'http://bla.com/index.html', |
+ 'request_id': '1234.1', |
+ 'frame_id': '123.1', |
+ 'initiator': {'type': 'other'}, |
+ 'timestamp': 2, |
+ 'timing': TimingFromDict({})}) |
+ JS_REQUEST = Request.FromJsonDict({'url': 'http://bla.com/nyancat.js', |
+ 'request_id': '1234.12', |
+ 'frame_id': '123.123', |
+ 'initiator': { |
+ 'type': 'parser', |
+ 'url': 'http://bla.com/index.html'}, |
+ 'timestamp': 3, |
+ 'timing': TimingFromDict({})}) |
+ JS_REQUEST_OTHER_FRAME = Request.FromJsonDict( |
{'url': 'http://bla.com/nyancat.js', |
'request_id': '1234.42', |
'frame_id': '123.13', |
'initiator': {'type': 'parser', |
- 'url': 'http://bla.com'}, |
+ 'url': 'http://bla.com/index.html'}, |
'timestamp': 4, 'timing': TimingFromDict({})}) |
- _JS_REQUEST_UNRELATED_FRAME = Request.FromJsonDict( |
+ JS_REQUEST_UNRELATED_FRAME = Request.FromJsonDict( |
{'url': 'http://bla.com/nyancat.js', |
- 'request_id': '1234.42', |
+ 'request_id': '1234.56', |
'frame_id': '123.99', |
'initiator': {'type': 'parser', |
- 'url': 'http://bla.com'}, |
+ 'url': 'http://bla.com/index.html'}, |
'timestamp': 5, 'timing': TimingFromDict({})}) |
- _JS_REQUEST_2 = Request.FromJsonDict( |
+ JS_REQUEST_2 = Request.FromJsonDict( |
{'url': 'http://bla.com/cat.js', 'request_id': '1234.13', |
- 'frame_id': '123.1', |
+ 'frame_id': '123.123', |
'initiator': {'type': 'script', |
'stack': {'callFrames': [ |
{'url': 'unknown'}, |
{'url': 'http://bla.com/nyancat.js'}]}}, |
'timestamp': 10, 'timing': TimingFromDict({})}) |
- _PAGE_EVENTS = [{'method': 'Page.frameAttached', |
- 'frame_id': '123.13', 'parent_frame_id': '123.1'}] |
+ PAGE_EVENTS = [{'method': 'Page.frameAttached', |
+ 'frame_id': '123.13', 'parent_frame_id': '123.1'}, |
+ {'method': 'Page.frameAttached', |
+ 'frame_id': '123.123', 'parent_frame_id': '123.1'}] |
+ |
+ @classmethod |
+ def CreateLoadingTrace(cls, trace_events=None): |
+ return test_utils.LoadingTraceFromEvents( |
+ [cls.FIRST_REDIRECT_REQUEST, cls.SECOND_REDIRECT_REQUEST, |
+ cls.REDIRECTED_REQUEST, cls.REQUEST, cls.JS_REQUEST, cls.JS_REQUEST_2, |
+ cls.JS_REQUEST_OTHER_FRAME, cls.JS_REQUEST_UNRELATED_FRAME], |
+ cls.PAGE_EVENTS, trace_events) |
+ |
+class RequestDependencyLensTestCase(unittest.TestCase): |
def testRedirectDependency(self): |
loading_trace = test_utils.LoadingTraceFromEvents( |
- [self._REDIRECT_REQUEST, self._REDIRECTED_REQUEST]) |
+ [TestRequests.FIRST_REDIRECT_REQUEST, |
+ TestRequests.SECOND_REDIRECT_REQUEST, TestRequests.REDIRECTED_REQUEST]) |
request_dependencies_lens = RequestDependencyLens(loading_trace) |
deps = request_dependencies_lens.GetRequestDependencies() |
- self.assertEquals(1, len(deps)) |
+ self.assertEquals(2, len(deps)) |
(first, second, reason) = deps[0] |
self.assertEquals('redirect', reason) |
- self.assertEquals(self._REDIRECT_REQUEST.request_id, first.request_id) |
- self.assertEquals(self._REQUEST.request_id, second.request_id) |
+ self.assertEquals(TestRequests.FIRST_REDIRECT_REQUEST.request_id, |
+ first.request_id) |
+ self.assertEquals(TestRequests.SECOND_REDIRECT_REQUEST.request_id, |
+ second.request_id) |
+ (first, second, reason) = deps[1] |
+ self.assertEquals('redirect', reason) |
+ self.assertEquals(TestRequests.SECOND_REDIRECT_REQUEST.request_id, |
+ first.request_id) |
+ self.assertEquals(TestRequests.REQUEST.request_id, second.request_id) |
+ |
+ def testGetRedirectChain(self): |
+ loading_trace = test_utils.LoadingTraceFromEvents( |
+ [TestRequests.FIRST_REDIRECT_REQUEST, |
+ TestRequests.SECOND_REDIRECT_REQUEST, TestRequests.REDIRECTED_REQUEST]) |
+ request_dependencies_lens = RequestDependencyLens(loading_trace) |
+ whole_chain = [TestRequests.FIRST_REDIRECT_REQUEST, |
+ TestRequests.SECOND_REDIRECT_REQUEST, |
+ TestRequests.REDIRECTED_REQUEST] |
+ chain = request_dependencies_lens.GetRedirectChain( |
+ TestRequests.FIRST_REDIRECT_REQUEST) |
+ self.assertListEqual(whole_chain, chain) |
+ chain = request_dependencies_lens.GetRedirectChain( |
+ TestRequests.SECOND_REDIRECT_REQUEST) |
+ self.assertListEqual(whole_chain[1:], chain) |
+ chain = request_dependencies_lens.GetRedirectChain( |
+ TestRequests.REDIRECTED_REQUEST) |
+ self.assertEquals(whole_chain[2:], chain) |
def testScriptDependency(self): |
loading_trace = test_utils.LoadingTraceFromEvents( |
- [self._JS_REQUEST, self._JS_REQUEST_2]) |
+ [TestRequests.JS_REQUEST, TestRequests.JS_REQUEST_2]) |
request_dependencies_lens = RequestDependencyLens(loading_trace) |
deps = request_dependencies_lens.GetRequestDependencies() |
self.assertEquals(1, len(deps)) |
self._AssertDependencyIs( |
deps[0], |
- self._JS_REQUEST.request_id, self._JS_REQUEST_2.request_id, 'script') |
+ TestRequests.JS_REQUEST.request_id, |
+ TestRequests.JS_REQUEST_2.request_id, 'script') |
def testAsyncScriptDependency(self): |
JS_REQUEST_WITH_ASYNC_STACK = Request.FromJsonDict( |
@@ -93,65 +138,76 @@ class RequestDependencyLensTestCase(unittest.TestCase): |
{'url': 'http://bla.com/nyancat.js'}]}}}, |
'timestamp': 10, 'timing': TimingFromDict({})}) |
loading_trace = test_utils.LoadingTraceFromEvents( |
- [self._JS_REQUEST, JS_REQUEST_WITH_ASYNC_STACK]) |
+ [TestRequests.JS_REQUEST, JS_REQUEST_WITH_ASYNC_STACK]) |
request_dependencies_lens = RequestDependencyLens(loading_trace) |
deps = request_dependencies_lens.GetRequestDependencies() |
self.assertEquals(1, len(deps)) |
self._AssertDependencyIs( |
- deps[0], self._JS_REQUEST.request_id, |
+ deps[0], TestRequests.JS_REQUEST.request_id, |
JS_REQUEST_WITH_ASYNC_STACK.request_id, 'script') |
def testParserDependency(self): |
loading_trace = test_utils.LoadingTraceFromEvents( |
- [self._REQUEST, self._JS_REQUEST]) |
+ [TestRequests.REQUEST, TestRequests.JS_REQUEST]) |
request_dependencies_lens = RequestDependencyLens(loading_trace) |
deps = request_dependencies_lens.GetRequestDependencies() |
self.assertEquals(1, len(deps)) |
self._AssertDependencyIs( |
deps[0], |
- self._REQUEST.request_id, self._JS_REQUEST.request_id, 'parser') |
+ TestRequests.REQUEST.request_id, TestRequests.JS_REQUEST.request_id, |
+ 'parser') |
def testSeveralDependencies(self): |
loading_trace = test_utils.LoadingTraceFromEvents( |
- [self._REDIRECT_REQUEST, self._REDIRECTED_REQUEST, self._JS_REQUEST, |
- self._JS_REQUEST_2]) |
+ [TestRequests.FIRST_REDIRECT_REQUEST, |
+ TestRequests.SECOND_REDIRECT_REQUEST, |
+ TestRequests.REDIRECTED_REQUEST, |
+ TestRequests.JS_REQUEST, TestRequests.JS_REQUEST_2]) |
request_dependencies_lens = RequestDependencyLens(loading_trace) |
deps = request_dependencies_lens.GetRequestDependencies() |
- self.assertEquals(3, len(deps)) |
+ self.assertEquals(4, len(deps)) |
self._AssertDependencyIs( |
- deps[0], self._REDIRECT_REQUEST.request_id, self._REQUEST.request_id, |
- 'redirect') |
+ deps[0], TestRequests.FIRST_REDIRECT_REQUEST.request_id, |
+ TestRequests.SECOND_REDIRECT_REQUEST.request_id, 'redirect') |
self._AssertDependencyIs( |
- deps[1], |
- self._REQUEST.request_id, self._JS_REQUEST.request_id, 'parser') |
+ deps[1], TestRequests.SECOND_REDIRECT_REQUEST.request_id, |
+ TestRequests.REQUEST.request_id, 'redirect') |
self._AssertDependencyIs( |
deps[2], |
- self._JS_REQUEST.request_id, self._JS_REQUEST_2.request_id, 'script') |
+ TestRequests.REQUEST.request_id, TestRequests.JS_REQUEST.request_id, |
+ 'parser') |
+ self._AssertDependencyIs( |
+ deps[3], |
+ TestRequests.JS_REQUEST.request_id, |
+ TestRequests.JS_REQUEST_2.request_id, 'script') |
def testDependencyDifferentFrame(self): |
"""Checks that a more recent request from another frame is ignored.""" |
loading_trace = test_utils.LoadingTraceFromEvents( |
- [self._JS_REQUEST, self._JS_REQUEST_OTHER_FRAME, self._JS_REQUEST_2]) |
+ [TestRequests.JS_REQUEST, TestRequests.JS_REQUEST_OTHER_FRAME, |
+ TestRequests.JS_REQUEST_2]) |
request_dependencies_lens = RequestDependencyLens(loading_trace) |
deps = request_dependencies_lens.GetRequestDependencies() |
self.assertEquals(1, len(deps)) |
self._AssertDependencyIs( |
deps[0], |
- self._JS_REQUEST.request_id, self._JS_REQUEST_2.request_id, 'script') |
+ TestRequests.JS_REQUEST.request_id, |
+ TestRequests.JS_REQUEST_2.request_id, 'script') |
def testDependencySameParentFrame(self): |
"""Checks that a more recent request from an unrelated frame is ignored |
if there is one from a related frame.""" |
loading_trace = test_utils.LoadingTraceFromEvents( |
- [self._JS_REQUEST_OTHER_FRAME, self._JS_REQUEST_UNRELATED_FRAME, |
- self._JS_REQUEST_2], self._PAGE_EVENTS) |
+ [TestRequests.JS_REQUEST_OTHER_FRAME, |
+ TestRequests.JS_REQUEST_UNRELATED_FRAME, TestRequests.JS_REQUEST_2], |
+ TestRequests.PAGE_EVENTS) |
request_dependencies_lens = RequestDependencyLens(loading_trace) |
deps = request_dependencies_lens.GetRequestDependencies() |
self.assertEquals(1, len(deps)) |
self._AssertDependencyIs( |
deps[0], |
- self._JS_REQUEST_OTHER_FRAME.request_id, |
- self._JS_REQUEST_2.request_id, 'script') |
+ TestRequests.JS_REQUEST_OTHER_FRAME.request_id, |
+ TestRequests.JS_REQUEST_2.request_id, 'script') |
def _AssertDependencyIs( |
self, dep, first_request_id, second_request_id, reason): |