Upstream version 7.35.144.0
[platform/framework/web/crosswalk.git] / src / chrome / test / functional / chromeos_crosh.py
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()