| OLD | NEW |
| (Empty) |
| 1 #!/usr/bin/env python | |
| 2 # Copyright (c) 2012 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 import os | |
| 7 | |
| 8 import pyauto_functional # must be imported before pyauto | |
| 9 import pyauto | |
| 10 import test_utils | |
| 11 | |
| 12 | |
| 13 class CroshTest(pyauto.PyUITest): | |
| 14 """Tests for crosh.""" | |
| 15 | |
| 16 def setUp(self): | |
| 17 """Close all windows at startup.""" | |
| 18 pyauto.PyUITest.setUp(self) | |
| 19 for _ in range(self.GetBrowserWindowCount()): | |
| 20 self.CloseBrowserWindow(0) | |
| 21 | |
| 22 def testBasic(self): | |
| 23 """Verify crosh basic flow.""" | |
| 24 test_utils.OpenCroshVerification(self) | |
| 25 | |
| 26 # Verify crosh prompt. | |
| 27 self.WaitForHtermText(text='crosh> ', | |
| 28 msg='Could not find "crosh> " prompt') | |
| 29 self.assertTrue( | |
| 30 self.GetHtermRowsText(start=0, end=2).endswith('crosh> '), | |
| 31 msg='Could not find "crosh> " prompt') | |
| 32 | |
| 33 # Run a crosh command. | |
| 34 self.SendKeysToHterm('help\\n') | |
| 35 self.WaitForHtermText(text='help_advanced', | |
| 36 msg='Could not find "help_advanced" in help output.') | |
| 37 | |
| 38 # Exit crosh and close tab. | |
| 39 self.SendKeysToHterm('exit\\n') | |
| 40 self.WaitForHtermText(text='command crosh completed with exit code 0', | |
| 41 msg='Could not exit crosh.') | |
| 42 | |
| 43 def testAddBookmark(self): | |
| 44 """Test crosh URL can be bookmarked""" | |
| 45 test_utils.OpenCroshVerification(self) | |
| 46 | |
| 47 # Add bookmark. | |
| 48 bookmarks = self.GetBookmarkModel() | |
| 49 bar_id = bookmarks.BookmarkBar()['id'] | |
| 50 name = 'crosh' | |
| 51 url = self.GetActiveTabURL() | |
| 52 count = bookmarks.NodeCount() | |
| 53 self.AddBookmarkURL(bar_id, 0, name, url.spec()) | |
| 54 bookmarks = self.GetBookmarkModel() | |
| 55 node = bookmarks.BookmarkBar()['children'][0] | |
| 56 self.assertEqual(count + 1, bookmarks.NodeCount()) | |
| 57 self.assertEqual(node['type'], 'url') | |
| 58 self.assertEqual(node['name'], name) | |
| 59 self.assertEqual(url.spec(), node['url']) | |
| 60 | |
| 61 def testMultipleWindowCrosh(self): | |
| 62 """Test that crosh can be opened in multiple windows.""" | |
| 63 test_utils.OpenCroshVerification(self) | |
| 64 | |
| 65 for windex in range (1, 4): # 3 new windows | |
| 66 self.OpenNewBrowserWindow(True) | |
| 67 self.OpenCrosh() | |
| 68 self.assertEqual('crosh', self.GetActiveTabTitle()) | |
| 69 | |
| 70 # Verify crosh prompt. | |
| 71 self.WaitForHtermText(text='crosh> ', tab_index=1, windex=windex, | |
| 72 msg='Could not find "crosh> " prompt') | |
| 73 self.assertTrue( | |
| 74 self.GetHtermRowsText(start=0, end=2, tab_index=1, | |
| 75 windex=windex).endswith('crosh> '), | |
| 76 msg='Could not find "crosh> " prompt') | |
| 77 | |
| 78 # Exit crosh. | |
| 79 self.SendKeysToHterm('exit\\n', tab_index=1, windex=windex) | |
| 80 self.WaitForHtermText(text='command crosh completed with exit code 0', | |
| 81 tab_index=1, windex=windex, | |
| 82 msg='Could not exit crosh.') | |
| 83 | |
| 84 def testShell(self): | |
| 85 """Test shell can be opened in crosh.""" | |
| 86 test_utils.OpenCroshVerification(self) | |
| 87 | |
| 88 # Verify crosh prompt. | |
| 89 self.WaitForHtermText(text='crosh> ', | |
| 90 msg='Could not find "crosh> " prompt') | |
| 91 self.assertTrue( | |
| 92 self.GetHtermRowsText(start=0, end=2).endswith('crosh> '), | |
| 93 msg='Could not find "crosh> " prompt') | |
| 94 | |
| 95 # Run a shell command. | |
| 96 self.SendKeysToHterm(r'shell\n') | |
| 97 self.WaitForHtermText(text='chronos@localhost', | |
| 98 msg='Could not find "chronos@localhost" in shell output.') | |
| 99 | |
| 100 def testConnectToAnotherhost(self): | |
| 101 """Test ssh to another host.""" | |
| 102 test_utils.OpenCroshVerification(self) | |
| 103 | |
| 104 # Verify crosh prompt. | |
| 105 self.WaitForHtermText(text='crosh> ', | |
| 106 msg='Could not find "crosh> " prompt') | |
| 107 self.assertTrue( | |
| 108 self.GetHtermRowsText(start=0, end=2).endswith('crosh> '), | |
| 109 msg='Could not find "crosh> " prompt') | |
| 110 | |
| 111 # Ssh to another host: chronos@localhost. | |
| 112 self.SendKeysToHterm(r'ssh chronos@localhost\n') | |
| 113 self.WaitForHtermText(text='Password', | |
| 114 msg='Could not find "Password" in shell output.') | |
| 115 self.SendKeysToHterm(r'test0000\n') | |
| 116 self.WaitForHtermText(text='chronos@localhost', | |
| 117 msg='Could not find "chronos@localhost" in shell output.') | |
| 118 | |
| 119 def testTabSwitching(self): | |
| 120 """Test tab can be switched in crosh.""" | |
| 121 test_utils.OpenCroshVerification(self) | |
| 122 | |
| 123 # Open 6 tabs | |
| 124 for x in xrange(3): | |
| 125 self.AppendTab(self.GetHttpURLForDataPath('title2.html')) | |
| 126 self.assertEqual('Title Of Awesomeness', self.GetActiveTabTitle(), | |
| 127 msg='Unable to navigate to title2.html and ' | |
| 128 'verify tab title.') | |
| 129 self.OpenCrosh() | |
| 130 self.assertEqual(7, len(self.GetBrowserInfo()['windows'][0]['tabs'])) | |
| 131 | |
| 132 # Select tab 5 | |
| 133 self.ApplyAccelerator(pyauto.IDC_SELECT_TAB_4) | |
| 134 self.assertEqual('crosh', self.GetActiveTabTitle(), | |
| 135 msg='Unable to naviage to crosh.') | |
| 136 | |
| 137 # Run a crosh command. | |
| 138 self.SendKeysToHterm('help\\n', tab_index=4, windex=0) | |
| 139 self.WaitForHtermText(text='help_advanced', tab_index=4, windex=0, | |
| 140 msg='Could not find "help_advanced" in help output.') | |
| 141 | |
| 142 def testLargefileCrosh(self): | |
| 143 """Test large file is displayed in crosh.""" | |
| 144 test_utils.OpenCroshVerification(self) | |
| 145 | |
| 146 # Verify crosh prompt. | |
| 147 self.WaitForHtermText(text='crosh> ', | |
| 148 msg='Could not find "crosh> " prompt') | |
| 149 self.assertTrue( | |
| 150 self.GetHtermRowsText(start=0, end=2).endswith('crosh> '), | |
| 151 msg='Could not find "crosh> " prompt') | |
| 152 | |
| 153 # Login to localhost. | |
| 154 self.SendKeysToHterm(r'ssh chronos@localhost\n') | |
| 155 self.WaitForHtermText(text='Password', | |
| 156 msg='Could not find "Password" in shell output.') | |
| 157 self.SendKeysToHterm(r'test0000\n') | |
| 158 self.WaitForHtermText(text='chronos@localhost', | |
| 159 msg='Could not find "chronos@localhost" in shell output.') | |
| 160 | |
| 161 # Create a file with 140 characters per line, 50000 lines. | |
| 162 bigfn = '/tmp/bigfile.txt' | |
| 163 with open(bigfn, 'w') as file: | |
| 164 file.write(('0' * 140 + '\n') * 50000 + 'complete\n') | |
| 165 | |
| 166 # Cat a large file. | |
| 167 self.SendKeysToHterm(r'cat %s\n' % bigfn) | |
| 168 self.WaitForHtermText(text='complete', | |
| 169 msg='Could not find "complete" in shell output.') | |
| 170 os.remove(bigfn) | |
| 171 | |
| 172 | |
| 173 if __name__ == '__main__': | |
| 174 pyauto_functional.Main() | |
| OLD | NEW |