Chromium Code Reviews

Side by Side Diff: rlz_test/rlztest.py

Issue 10910145: Added rlz testcases. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/chrome/test/
Patch Set: Created 8 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 import subprocess
2 import sys
3 import selenium.selenium
4 import re
5 import unittest
6 import commands
7 import time
8 import _winreg
9 import logging
10 import optparse
11 import logging
12 import selenium.webdriver.common.keys
13 import os
Roger Tawa OOO till Jul 10th 2012/09/14 19:43:36 please put all these imports in alpha order. pleas
prachij 2012/09/19 19:30:16 Done.
14
15 from selenium import webdriver
16 #from rlz_tester import RlzTester
17 from chromium_proxy_server_version2 import Main
18 from chromium_proxy_server_version3 import ChromiumProxyServer
Roger Tawa OOO till Jul 10th 2012/09/14 19:43:36 you can remove the imports at lines 16-18
prachij 2012/09/19 19:30:16 Done.
19 from subprocess import Popen, PIPE, STDOUT
Roger Tawa OOO till Jul 10th 2012/09/14 19:43:36 remove line 19, not needed since you do it at line
prachij 2012/09/19 19:30:16 Done.
20 from selenium.webdriver.common.keys import Keys as Keys
Roger Tawa OOO till Jul 10th 2012/09/14 19:43:36 why do you need the "as Keys" part?
prachij 2012/09/19 19:30:16 I am using native events like ctrl, enter in line
Roger Tawa OOO till Jul 10th 2012/09/20 19:13:19 Can you tell me what exceptions you are getting?
21
22
23 class RlzTest(unittest.TestCase):
24
25 def setUp(self):
26 """Performs necessary setup work before running each test in this class."""
27 # Delete RLZ key Folder
28 self.deleteRegistryKey()
29 proxy_server = raw_input("Enter Proxy Server File Name: ")
30 chrome_driver = raw_input("Enter chrome driver path in"+
31 "your system(c:\\chrome\\..):")
Roger Tawa OOO till Jul 10th 2012/09/14 19:43:36 Is this script meant to be use interactively? Thi
prachij 2012/09/19 19:30:16 My intent was to ask only once. I was planning to
Roger Tawa OOO till Jul 10th 2012/09/20 19:13:19 Looks good. Better to stick with 2.6 since that i
32 # Launch Proxy Server
33 print ('Serving clients: 127.0.0.1')
34 self.proxy_server = subprocess.Popen([
35 'python',
36 proxy_server,
37 '--client=127.0.0.1',
38 '--port=8080',
39 '--urls=http://clients1.google.com/tools/pso/ping,www.google.com'])
Roger Tawa OOO till Jul 10th 2012/09/14 19:43:36 lines 35-39 should be indented only 4 spaces from
40
41 print('\nLaunching Chrome...')
42 # Launch chrome and set proxy.
43 service = webdriver.chrome.service.Service(chrome_driver)
44 service.start()
45 self.driver = webdriver.Remote(
46 service.service_url, {
47 'proxy': {'proxyType': 'manual', 'httpProxy': 'localhost:8080'},
48 'chrome.switches': ['disable-extensions'],
49 'chrome.nativeEvents': True})
50
51 def tearDown(self):
52 """Kills the chrome driver after after the test method has been called."""
53 # Terminate the chrome driver.
54 print '\nTerminating Chrome Driver...'
55 self.driver.quit()
56 # Kill proxy server.
57 print '\nKilling Proxy Server...'
58 subprocess.Popen.kill(self.proxy_server)
59
60 def deleteRegistryKey(self):
61 """Delete RLZ key Folder from win registry."""
62 try:
63 hkey = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER,
64 'Software\Google\Common\Rlz')
65 except _winreg.error, err:
66 return True
67 if(hkey):
68 _winreg.DeleteKey(_winreg.HKEY_CURRENT_USER,
69 'Software\Google\Common\Rlz\Events\C')
70 _winreg.DeleteKey(_winreg.HKEY_CURRENT_USER,
71 'Software\Google\Common\Rlz\StatefulEvents\C')
72 _winreg.DeleteKey(_winreg.HKEY_CURRENT_USER,
73 'Software\Google\Common\Rlz\Events')
74 _winreg.DeleteKey(_winreg.HKEY_CURRENT_USER,
75 'Software\Google\Common\Rlz\StatefulEvents')
76 _winreg.DeleteKey(_winreg.HKEY_CURRENT_USER,
77 'Software\Google\Common\Rlz\PTimes')
78 _winreg.DeleteKey(_winreg.HKEY_CURRENT_USER,
79 'Software\Google\Common\Rlz\RLZs')
80 _winreg.DeleteKey(_winreg.HKEY_CURRENT_USER,
81 'Software\Google\Common\Rlz')
82
83 def GetKeyValueNames(self, key, subkey):
84 """Get the values for particular subkey"""
Roger Tawa OOO till Jul 10th 2012/09/14 19:43:36 plese document args and return.
prachij 2012/09/19 19:30:16 Done.
85 list_names = []
86 counter = 0
87 try:
88 hkey = _winreg.OpenKey(key, subkey)
89 except _winreg.error, err:
90 return -1
91 while True:
92 try:
93 value = _winreg.EnumValue(hkey, counter)
94 list_names.append(value[0])
95 counter+=1
96 except _winreg.error:
97 break
98 hkey.Close()
99 return list_names
100
101 def testRlzPingAtFirstChromeLaunch(self):
102 """Test rlz ping when chrome is lauched for first time."""
103 # Check the ping in Events folder in registry.
104 list_key=[]
105 list_key=self.GetKeyValueNames(_winreg.HKEY_CURRENT_USER,
106 'Software\Google\Common\Rlz\Events\C')
Roger Tawa OOO till Jul 10th 2012/09/14 19:43:36 spaces around = in two lines above. Please also f
prachij 2012/09/19 19:30:16 This was working fine with single \, but just to b
Roger Tawa OOO till Jul 10th 2012/09/20 19:13:19 Single \ works when the following letter happens t
107 print ('\nList of event reported to registry-'
108 'Software\Google\Common\Rlz\Events :\n', list_key)
Roger Tawa OOO till Jul 10th 2012/09/14 19:43:36 line up the two starting single quotes.
prachij 2012/09/19 19:30:16 Done.
109 #self.assertEqual('C1S', list_key[0])
110 #self.assertEqual('C2I', list_key[1])
Roger Tawa OOO till Jul 10th 2012/09/14 19:43:36 should these be commented out?
prachij 2012/09/19 19:30:16 This should not be commented out, but for some rea
111
112 # Wait for 90 sec till chrome sends ping to server.
113 time.sleep(90)
114 self.driver.get('http://www.google.com')
115
116 # Open log file and validate events chrome launch(C1I,C2I,C1S)
117 # are appended in ping.
118 contents = open(os.getcwd()+'\ServerXXX.log', 'r', 1).read()
119 event_start = contents.find('events=')
120 event_end = contents.find('&rep', event_start)
121 events=contents[event_start+7 : event_end]
122 events_List=events.split(',')
123 self.assertTrue('C1S' in events_List)
124 self.assertTrue('C1I' in events_List)
125 self.assertTrue('C2I' in events_List)
126
127 # Validate brand code in url ping.
128 self.assertTrue(re.search('CHMZ', contents))
129
130 # Print first chrome launch ping on Console.
131 start = contents.find('http://clients1.google.com/tools/'+
132 'pso/ping?as=chrome&brand=CHMZ')
133 end = contents.find('http://www', start)
134 print '\nChrome Launch ping send :\n', contents[start:end]
Roger Tawa OOO till Jul 10th 2012/09/14 19:43:36 send -> sent ?
prachij 2012/09/19 19:30:16 Done.
135
136 # Validate events in win registry.
137 list_key=[]
138 list_key=self.GetKeyValueNames(_winreg.HKEY_CURRENT_USER,
139 'Software\Google\Common\Rlz\StatefulEvents\C')
140 print ('\nList of event reported to registry-'
141 'Software\Google\Common\Rlz\StatefulEvents:', list_key)
Roger Tawa OOO till Jul 10th 2012/09/14 19:43:36 line up single quotes.
prachij 2012/09/19 19:30:16 Done.
142 self.assertEqual('C1I', list_key[0])
143 self.assertEqual('C2I', list_key[1])
144
145 def testRlzPingForFirstSearch(self):
146 """Test rlz ping when first search is performed in chrome."""
147 # Type search string in omnibox.
148 self.driver.switch_to_active_element().send_keys(Keys.CONTROL + 'l')
149 self.driver.switch_to_active_element().send_keys('java')
150 self.driver.switch_to_active_element().send_keys(Keys.ENTER)
151 print '\nCurrent Url before chrome ping sent:\n', self.driver.current_url
152
153 # Assert brand code 'CHMZ' is not appended in search string.
154 self.assertFalse(re.search('CHMZ', self.driver.current_url))
155
156 # Wait for 90 sec till chrome sends ping to server.
157 time.sleep(100)
Roger Tawa OOO till Jul 10th 2012/09/14 19:43:36 comment says 90
prachij 2012/09/19 19:30:16 Done.
158
159 # Open log file and validate events chrome launch(C1I,C2I,C1S)
160 # and first search(C1F) are appended in ping.
161 contents = open(os.getcwd()+'\ServerXXX.log', 'r', 1).read()
162 event_start = contents.find('events=')
163 event_end = contents.find('&rep', event_start)
164 events=contents[event_start+7 : event_end]
165 events_List=events.split(',')
166 self.assertTrue('C1S' in events_List)
167 self.assertTrue('C1I' in events_List)
168 self.assertTrue('C2I' in events_List)
169 self.assertTrue('C1F' in events_List)
170
171 # Print first chrome launch /default first search pso ping on Console.
172 start = contents.find('http://clients1.google.com/tools/pso/'+
173 'ping?as=chrome&brand=CHMZ')
174 end = contents.find('http://www', start)
175 print '\nChrome Launch ping send\n', contents[start:end]
176
177 # Type search string in omnibox after ping is sent to server.
178 self.driver.switch_to_active_element().send_keys(Keys.CONTROL + 'l')
179 self.driver.switch_to_active_element().send_keys('java')
180 self.driver.switch_to_active_element().send_keys(Keys.ENTER)
181 time.sleep(2)
182 print '\nCurrent Url after chrome ping sent:\n', self.driver.current_url
183
184 # Assert brand code 'CHMZ' is appended in search string.
185 self.assertTrue(re.search('CHMZ', self.driver.current_url))
186
187 # Validate events in win registry.
188 list_key=[]
189 list_key=self.GetKeyValueNames(_winreg.HKEY_CURRENT_USER,
190 'Software\Google\Common\Rlz\StatefulEvents\C')
191 print('\nList of event reported to registry-'
192 'Software\Google\Common\Rlz\StatefulEvents:\n', list_key)
193 self.assertTrue('C1I' in list_key)
194 self.assertTrue('C2I' in list_key)
195 self.assertTrue('C1F' in list_key)
196
197
198 if __name__ == '__main__':
199 unittest.main()
200
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine