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

Side by Side Diff: bin/cbuildbot_unittest.py

Issue 4062003: Archive test results and image after running vm suite. (Closed) Base URL: http://git.chromium.org/git/crosutils.git
Patch Set: Remove pass Created 10 years, 2 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 | « bin/cbuildbot.py ('k') | bin/cros_run_vm_test » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
11 import os
12 import posix
13 import shutil
11 import unittest 14 import unittest
12 15
13 # Fixes circular dependency error. 16 # Fixes circular dependency error.
14 import cbuildbot_comm 17 import cbuildbot_comm
15 import cbuildbot 18 import cbuildbot
16 19
17 class CBuildBotTest(mox.MoxTestBase): 20 class CBuildBotTest(mox.MoxTestBase):
18 21
19 def setUp(self): 22 def setUp(self):
20 mox.MoxTestBase.setUp(self) 23 mox.MoxTestBase.setUp(self)
21 # Always stub RunCommmand out as we use it in every method. 24 # Always stub RunCommmand out as we use it in every method.
22 self.mox.StubOutWithMock(cbuildbot, 'RunCommand') 25 self.mox.StubOutWithMock(cbuildbot, 'RunCommand')
26 self.tracking_branch = 'cros/master'
23 self._test_repos = [['kernel', 'third_party/kernel/files'], 27 self._test_repos = [['kernel', 'third_party/kernel/files'],
24 ['login_manager', 'platform/login_manager'] 28 ['login_manager', 'platform/login_manager']
25 ] 29 ]
26 self._test_cros_workon_packages = \ 30 self._test_cros_workon_packages = \
27 'chromeos-base/kernel\nchromeos-base/chromeos-login\n' 31 'chromeos-base/kernel\nchromeos-base/chromeos-login\n'
28 self._test_board = 'test-board' 32 self._test_board = 'test-board'
29 self._buildroot = '.' 33 self._buildroot = '.'
30 self._test_dict = {'kernel' : ['chromos-base/kernel', 'dev-util/perf'], 34 self._test_dict = {'kernel' : ['chromos-base/kernel', 'dev-util/perf'],
31 'cros' : ['chromos-base/libcros'] 35 'cros' : ['chromos-base/libcros']
32 } 36 }
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
95 # cbuildbot._ParseRevisionString(self._test_string, 99 # cbuildbot._ParseRevisionString(self._test_string,
96 # self._test_dict).AndReturn( 100 # self._test_dict).AndReturn(
97 # self._test_parsed_string_array) 101 # self._test_parsed_string_array)
98 # cbuildbot._UprevFromRevisionList(self._buildroot, 102 # cbuildbot._UprevFromRevisionList(self._buildroot,
99 # self._test_parsed_string_array) 103 # self._test_parsed_string_array)
100 # self.mox.ReplayAll() 104 # self.mox.ReplayAll()
101 # cbuildbot._UprevPackages(self._buildroot, self._revision_file, 105 # cbuildbot._UprevPackages(self._buildroot, self._revision_file,
102 # self._test_board) 106 # self._test_board)
103 # self.mox.VerifyAll() 107 # self.mox.VerifyAll()
104 108
109 def testArchiveTestResults(self):
110 """Test if we can archive the latest results dir as well as clean up."""
111 self.mox.StubOutWithMock(os.path, 'exists')
112 self.mox.StubOutWithMock(os, 'listdir')
113 self.mox.StubOutWithMock(os, 'stat')
114 self.mox.StubOutWithMock(shutil, 'rmtree')
115 self.mox.StubOutWithMock(shutil, 'copytree')
116 self.mox.StubOutWithMock(shutil, 'copyfile')
117
118 # Create mock stats so that file2 is older than file1.
119 dir_listing = ['file1', 'file2']
120 stat1 = self.mox.CreateMock(posix.stat_result)
121 stat2 = self.mox.CreateMock(posix.stat_result)
122 stat1.st_mtime = 99999
123 stat2.st_mtime = 10000
124
125 # Set vars for call.
126 buildroot = '/fake_dir'
127 test_results_dir = 'fake_results_dir'
128 archive_dir = 1234
129 board = 'fake-board'
130
131 # Expected calls.
132 os.path.exists(cbuildbot.ARCHIVE_BASE).AndReturn(True)
133 os.listdir(os.path.join(cbuildbot.ARCHIVE_BASE)).AndReturn(dir_listing)
134 os.stat('file1').AndReturn(stat1)
135 os.stat('file2').AndReturn(stat2)
136 # Should remove the oldest path.
137 shutil.rmtree(os.path.join(cbuildbot.ARCHIVE_BASE, 'file2'))
138
139 # Convenience variables to make archive easier to understand.
140 path_to_results = os.path.join(buildroot, 'chroot', test_results_dir)
141 path_to_archive_dir = os.path.join(cbuildbot.ARCHIVE_BASE, str(archive_dir))
142 path_to_image = os.path.join(buildroot, 'src', 'build', 'images', board,
143 'latest', 'chromiumos_qemu_image.bin')
144 # Archive logic
145 os.path.exists(path_to_archive_dir).AndReturn(False)
146 cbuildbot.RunCommand(['sudo', 'chmod', '-R', '+r', path_to_results])
147 shutil.copytree(path_to_results, path_to_archive_dir)
148 cbuildbot.RunCommand(['gzip', '-f', path_to_image])
149 shutil.copyfile(path_to_image + '.gz', os.path.join(
150 path_to_archive_dir, 'chromiumos_qemu_image.bin.gz'))
151
152 self.mox.ReplayAll()
153 cbuildbot.ARCHIVE_COUNT = 2 # Set equal to list size so we force clean up.
154 cbuildbot._ArchiveTestResults(buildroot, board, archive_dir,
155 test_results_dir)
156 self.mox.VerifyAll()
157
105 # TODO(sosa): Remove once we un-comment above. 158 # TODO(sosa): Remove once we un-comment above.
106 def testUprevPackages(self): 159 def testUprevPackages(self):
107 """Test if we get actual revisions in revisions.pfq.""" 160 """Test if we get actual revisions in revisions.pfq."""
108 self.mox.StubOutWithMock(__builtin__, 'open') 161 self.mox.StubOutWithMock(__builtin__, 'open')
109 162
110 # Mock out file interaction. 163 # Mock out file interaction.
111 m_file = self.mox.CreateMock(file) 164 m_file = self.mox.CreateMock(file)
112 __builtin__.open(self._revision_file).AndReturn(m_file) 165 __builtin__.open(self._revision_file).AndReturn(m_file)
113 m_file.read().AndReturn(self._test_string) 166 m_file.read().AndReturn(self._test_string)
114 m_file.close() 167 m_file.close()
115 168
116 cbuildbot.RunCommand(['./cros_mark_as_stable', '--all', 169 cbuildbot.RunCommand(['./cros_mark_as_stable', '--all',
170 '--board=%s' % self._test_board,
117 '--tracking_branch="cros/master"', 'commit'], 171 '--tracking_branch="cros/master"', 'commit'],
118 cwd='%s/src/scripts' % self._buildroot, 172 cwd='%s/src/scripts' % self._buildroot,
119 enter_chroot=True) 173 enter_chroot=True)
120 174
121 self.mox.ReplayAll() 175 self.mox.ReplayAll()
122 cbuildbot._UprevPackages(self._buildroot, self._revision_file, 176 cbuildbot._UprevPackages(self._buildroot, self.tracking_branch,
123 self._test_board) 177 self._revision_file, self._test_board)
124 self.mox.VerifyAll() 178 self.mox.VerifyAll()
125 179
126 def testUprevAllPackages(self): 180 def testUprevAllPackages(self):
127 """Test if we get None in revisions.pfq indicating Full Builds.""" 181 """Test if we get None in revisions.pfq indicating Full Builds."""
128 self.mox.StubOutWithMock(__builtin__, 'open') 182 self.mox.StubOutWithMock(__builtin__, 'open')
129 183
130 # Mock out file interaction. 184 # Mock out file interaction.
131 m_file = self.mox.CreateMock(file) 185 m_file = self.mox.CreateMock(file)
132 __builtin__.open(self._revision_file).AndReturn(m_file) 186 __builtin__.open(self._revision_file).AndReturn(m_file)
133 m_file.read().AndReturn('None') 187 m_file.read().AndReturn('None')
134 m_file.close() 188 m_file.close()
135 189
136 cbuildbot.RunCommand(['./cros_mark_as_stable', '--all', 190 cbuildbot.RunCommand(['./cros_mark_as_stable', '--all',
191 '--board=%s' % self._test_board,
137 '--tracking_branch="cros/master"', 'commit'], 192 '--tracking_branch="cros/master"', 'commit'],
138 cwd='%s/src/scripts' % self._buildroot, 193 cwd='%s/src/scripts' % self._buildroot,
139 enter_chroot=True) 194 enter_chroot=True)
140 195
141 self.mox.ReplayAll() 196 self.mox.ReplayAll()
142 cbuildbot._UprevPackages(self._buildroot, self._revision_file, 197 cbuildbot._UprevPackages(self._buildroot, self.tracking_branch,
143 self._test_board) 198 self._revision_file, self._test_board)
144 self.mox.VerifyAll() 199 self.mox.VerifyAll()
145 200
146 201
147 if __name__ == '__main__': 202 if __name__ == '__main__':
148 unittest.main() 203 unittest.main()
OLDNEW
« no previous file with comments | « bin/cbuildbot.py ('k') | bin/cros_run_vm_test » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698