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

Side by Side Diff: chrome/test/functional/prefetch.py

Issue 222873002: Remove pyauto tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: sync Created 6 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 | Annotate | Revision Log
« no previous file with comments | « chrome/test/functional/perf_endure.py ('k') | chrome/test/functional/prefs.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 #!/usr/bin/env python
2 # Copyright (c) 2011 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
5
6 """This functional test spawns a web server, and runs chrome to point
7 at that web server.
8
9 The content served contains prefetch requests, and the tests assert that the
10 webserver logs reflect that.
11
12 Run like any functional test:
13 $ python chrome/test/functional/prefetch.py
14 in a repo with a built pyautolib
15
16 The import of multiprocessing implies python 2.6 is required
17 """
18
19 import os
20 import time
21 import multiprocessing
22 import Queue
23 import string
24 from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
25
26 import pyauto_functional # Must be imported before pyauto
27 import pyauto
28
29 # this class handles IPC retrieving server "logs" from our integral
30 # server. Each test should clear() the log, and then run asserts on
31 # the retrieval list.
32
33 # at startup, the server puts an int in the queue which is its port,
34 # we store that for subsequent tests
35
36 class ServerLog:
37 def clear(self):
38 self.log = {}
39
40 def __init__(self,queue):
41 self.clear()
42 self.port = None
43 self.queue = queue
44
45 def _readQueue(self):
46 try:
47 while True:
48 queueval = self.queue.get(False)
49 if isinstance(queueval,int):
50 self.port = queueval
51 else:
52 self.log[queueval] = True
53 except Queue.Empty:
54 return
55
56 def getPort(self):
57 if not self.port:
58 self._readQueue()
59 return self.port
60
61 def isRetrieved(self,path):
62 self._readQueue()
63 try:
64 return self.log[path]
65 except KeyError:
66 return None
67
68 #
69 # The next few classes run a simple web server that returns log information
70 # via a multiprocessing.Queue.
71 #
72 class AbstractPrefetchServerHandler(BaseHTTPRequestHandler):
73 content = {
74 "prefetch-origin.html":
75 (200, """<html><head>
76 <link rel="prefetch" href="static-prefetch-target.html">
77 <script type="text/javascript">
78 function changeParagraph()
79 {
80 var newPara = document.createElement("p");
81 newPara.innerHTML =
82 "<link rel=\\"prefetch\\" href=\\"dynamic-prefetch-target.html\\">" +
83 "<p>This paragraph contains a dynamic link prefetch. " +
84 "The target of this prefetch is " +
85 "<a href=\\"dynamic-prefetch-target.html\\">this document.</a>";
86 var para = document.getElementById("p1");
87 document.body.insertBefore(newPara,para);
88 }
89 </script>
90 </head>
91 <body onload="changeParagraph()">
92 <p id="p1">This is a document that contains a link prefetch. The target of
93 that prefetch is <a href="static-prefetch-target.html">this document.</a>
94 </body>"""),
95 "static-prefetch-target.html":
96 (200, "<html><head></head><body>empty</body>"),
97 "dynamic-prefetch-target.html":
98 (200, "<html><head></head><body>empty</body>")}
99
100 def do_GET(self):
101 self.queue.put(self.path[1:])
102 try:
103 response_code, response = self.content[self.path[1:]]
104 self.send_response(response_code)
105 self.end_headers()
106 self.wfile.write(response)
107 except KeyError:
108 self.send_response(404)
109 self.end_headers()
110
111 def run_web_server(queue_arg):
112 class PrefetchServerHandler(AbstractPrefetchServerHandler):
113 queue = queue_arg
114 server = HTTPServer(('',0), PrefetchServerHandler)
115 queue.put(server.server_port)
116 server.serve_forever()
117
118 #
119 # Here's the test itself
120 #
121 queue = multiprocessing.Queue()
122 server_log = ServerLog(queue)
123
124 class PrefetchTest(pyauto.PyUITest):
125 """Testcase for Prefetching"""
126 def testBasic(self):
127 server_log.clear()
128 url = "http://localhost:%d/prefetch-origin.html" % server_log.getPort()
129 self.NavigateToURL(url)
130 self.assertEqual(True, server_log.isRetrieved("prefetch-origin.html"))
131 time.sleep(0.1) # required since prefetches occur after onload
132 self.assertEqual(True, server_log.isRetrieved(
133 "static-prefetch-target.html"))
134 self.assertEqual(True, server_log.isRetrieved(
135 "dynamic-prefetch-target.html"))
136
137 if __name__ == '__main__':
138 web_server = multiprocessing.Process(target=run_web_server,args=(queue,))
139 web_server.daemon = True
140 web_server.start()
141 pyauto_functional.Main()
OLDNEW
« no previous file with comments | « chrome/test/functional/perf_endure.py ('k') | chrome/test/functional/prefs.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698