OLD | NEW |
1 #!/usr/bin/python | 1 #!/usr/bin/python |
2 | 2 |
3 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. | 3 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
4 # Use of this source code is governed by a BSD-style license that can be | 4 # Use of this source code is governed by a BSD-style license that can be |
5 # found in the LICENSE file. | 5 # found in the LICENSE file. |
6 | 6 |
7 """Unittests for cbuildbot. Needs to be run inside of chroot for mox.""" | 7 """Unittests for cbuildbot. Needs to be run inside of chroot for mox.""" |
8 | 8 |
9 import __builtin__ | 9 import __builtin__ |
10 import mox | 10 import mox |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
105 # self._test_dict).AndReturn( | 105 # self._test_dict).AndReturn( |
106 # self._test_parsed_string_array) | 106 # self._test_parsed_string_array) |
107 # cbuildbot._UprevFromRevisionList(self._buildroot, | 107 # cbuildbot._UprevFromRevisionList(self._buildroot, |
108 # self._test_parsed_string_array) | 108 # self._test_parsed_string_array) |
109 # self.mox.ReplayAll() | 109 # self.mox.ReplayAll() |
110 # cbuildbot._UprevPackages(self._buildroot, self._revision_file, | 110 # cbuildbot._UprevPackages(self._buildroot, self._revision_file, |
111 # self._test_board) | 111 # self._test_board) |
112 # self.mox.VerifyAll() | 112 # self.mox.VerifyAll() |
113 | 113 |
114 def testArchiveTestResults(self): | 114 def testArchiveTestResults(self): |
115 """Test if we can archive the latest results dir as well as clean up.""" | 115 """Test if we can archive the latest results dir to Google Storage.""" |
116 self.mox.StubOutWithMock(os.path, 'exists') | |
117 self.mox.StubOutWithMock(os, 'listdir') | |
118 self.mox.StubOutWithMock(os, 'stat') | |
119 self.mox.StubOutWithMock(shutil, 'rmtree') | |
120 self.mox.StubOutWithMock(shutil, 'copytree') | |
121 self.mox.StubOutWithMock(shutil, 'copyfile') | |
122 | |
123 # Create mock stats so that file2 is older than file1. | |
124 dir_listing = ['file1', 'file2'] | |
125 stat1 = self.mox.CreateMock(posix.stat_result) | |
126 stat2 = self.mox.CreateMock(posix.stat_result) | |
127 stat1.st_mtime = 99999 | |
128 stat2.st_mtime = 10000 | |
129 | |
130 # Set vars for call. | 116 # Set vars for call. |
131 buildroot = '/fake_dir' | 117 buildroot = '/fake_dir' |
| 118 board = 'fake-board' |
132 test_results_dir = 'fake_results_dir' | 119 test_results_dir = 'fake_results_dir' |
| 120 gsutil_path='/fake/gsutil/path' |
133 archive_dir = 1234 | 121 archive_dir = 1234 |
134 board = 'fake-board' | 122 acl = 'fake_acl' |
135 | 123 num_retries = 5 |
136 # Expected calls. | |
137 os.path.exists(cbuildbot.ARCHIVE_BASE).AndReturn(True) | |
138 os.listdir(os.path.join(cbuildbot.ARCHIVE_BASE)).AndReturn(dir_listing) | |
139 os.stat(os.path.join(cbuildbot.ARCHIVE_BASE, 'file1')).AndReturn(stat1) | |
140 os.stat(os.path.join(cbuildbot.ARCHIVE_BASE, 'file2')).AndReturn(stat2) | |
141 # Should remove the oldest path. | |
142 shutil.rmtree(os.path.join(cbuildbot.ARCHIVE_BASE, 'file2')) | |
143 | 124 |
144 # Convenience variables to make archive easier to understand. | 125 # Convenience variables to make archive easier to understand. |
145 path_to_results = os.path.join(buildroot, 'chroot', test_results_dir) | 126 path_to_results = os.path.join(buildroot, 'chroot', test_results_dir) |
146 path_to_archive_dir = os.path.join(cbuildbot.ARCHIVE_BASE, str(archive_dir)) | |
147 path_to_image = os.path.join(buildroot, 'src', 'build', 'images', board, | 127 path_to_image = os.path.join(buildroot, 'src', 'build', 'images', board, |
148 'latest', 'chromiumos_qemu_image.bin') | 128 'latest', 'chromiumos_qemu_image.bin') |
149 # Archive logic | 129 |
150 os.path.exists(path_to_archive_dir).AndReturn(False) | |
151 cbuildbot.RunCommand(['sudo', 'chmod', '-R', '+r', path_to_results]) | 130 cbuildbot.RunCommand(['sudo', 'chmod', '-R', '+r', path_to_results]) |
152 shutil.copytree(path_to_results, path_to_archive_dir) | 131 cbuildbot.RunCommand([gsutil_path, 'cp', '-R', path_to_results, |
| 132 archive_dir], num_retries=num_retries) |
| 133 cbuildbot.RunCommand([gsutil_path, 'setacl', acl, archive_dir]) |
153 cbuildbot.RunCommand(['gzip', '-f', '--fast', path_to_image]) | 134 cbuildbot.RunCommand(['gzip', '-f', '--fast', path_to_image]) |
154 shutil.copyfile(path_to_image + '.gz', os.path.join( | 135 cbuildbot.RunCommand([gsutil_path, 'cp', path_to_image + '.gz', |
155 path_to_archive_dir, 'chromiumos_qemu_image.bin.gz')) | 136 archive_dir], num_retries=num_retries) |
156 | 137 |
157 self.mox.ReplayAll() | 138 self.mox.ReplayAll() |
158 cbuildbot.ARCHIVE_COUNT = 2 # Set equal to list size so we force clean up. | 139 cbuildbot._ArchiveTestResults(buildroot, board, test_results_dir, |
159 cbuildbot._ArchiveTestResults(buildroot, board, archive_dir, | 140 gsutil_path, archive_dir, acl) |
160 test_results_dir) | |
161 self.mox.VerifyAll() | 141 self.mox.VerifyAll() |
162 | 142 |
163 # TODO(sosa): Remove once we un-comment above. | 143 # TODO(sosa): Remove once we un-comment above. |
164 def testUprevPackages(self): | 144 def testUprevPackages(self): |
165 """Test if we get actual revisions in revisions.pfq.""" | 145 """Test if we get actual revisions in revisions.pfq.""" |
166 self.mox.StubOutWithMock(__builtin__, 'open') | 146 self.mox.StubOutWithMock(__builtin__, 'open') |
167 | 147 |
168 # Mock out file interaction. | 148 # Mock out file interaction. |
169 m_file = self.mox.CreateMock(file) | 149 m_file = self.mox.CreateMock(file) |
170 __builtin__.open(self._revision_file).AndReturn(m_file) | 150 __builtin__.open(self._revision_file).AndReturn(m_file) |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
203 | 183 |
204 self.mox.ReplayAll() | 184 self.mox.ReplayAll() |
205 cbuildbot._UprevPackages(self._buildroot, self.tracking_branch, | 185 cbuildbot._UprevPackages(self._buildroot, self.tracking_branch, |
206 self._revision_file, self._test_board, | 186 self._revision_file, self._test_board, |
207 self._overlays) | 187 self._overlays) |
208 self.mox.VerifyAll() | 188 self.mox.VerifyAll() |
209 | 189 |
210 | 190 |
211 if __name__ == '__main__': | 191 if __name__ == '__main__': |
212 unittest.main() | 192 unittest.main() |
OLD | NEW |