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

Side by Side Diff: bin/cbuildbot_unittest.py

Issue 6286040: Remove buildbot code that has been added to chromite. (Closed) Base URL: http://git.chromium.org/git/crosutils.git@master
Patch Set: Verify Created 9 years, 10 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_config.py ('k') | bin/cros_mark_chrome_as_stable » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 #!/usr/bin/python
2
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
5 # found in the LICENSE file.
6
7 """Unittests for cbuildbot. Needs to be run inside of chroot for mox."""
8
9 import __builtin__
10 import mox
11 import os
12 import posix
13 import shutil
14 import tempfile
15 import unittest
16
17 # Fixes circular dependency error.
18 import cbuildbot_comm
19 import cbuildbot
20 from cros_build_lib import ReinterpretPathForChroot
21
22
23 class CBuildBotTest(mox.MoxTestBase):
24
25 def setUp(self):
26 mox.MoxTestBase.setUp(self)
27 # Always stub RunCommmand out as we use it in every method.
28 self.mox.StubOutWithMock(cbuildbot, 'RunCommand')
29 self.tracking_branch = 'cros/master'
30 self._test_repos = [['kernel', 'third_party/kernel/files'],
31 ['login_manager', 'platform/login_manager']
32 ]
33 self._test_cros_workon_packages = \
34 'chromeos-base/kernel\nchromeos-base/chromeos-login\n'
35 self._test_board = 'test-board'
36 self._buildroot = '.'
37 self._test_dict = {'kernel' : ['chromos-base/kernel', 'dev-util/perf'],
38 'cros' : ['chromos-base/libcros']
39 }
40 self._test_string = "kernel.git@12345test cros.git@12333test"
41 self._test_string += " crosutils.git@blahblah"
42 self._revision_file = 'test-revisions.pfq'
43 self._test_parsed_string_array = [
44 ['chromeos-base/kernel', '12345test'],
45 ['dev-util/perf', '12345test'],
46 ['chromos-base/libcros', '12345test']
47 ]
48 self._overlays = ['%s/src/third_party/chromiumos-overlay' % self._buildroot]
49 self._chroot_overlays = [
50 ReinterpretPathForChroot(p) for p in self._overlays
51 ]
52
53 def testParseRevisionString(self):
54 """Test whether _ParseRevisionString parses string correctly."""
55 return_array = cbuildbot._ParseRevisionString(self._test_string,
56 self._test_dict)
57 self.assertEqual(len(return_array), 3)
58 self.assertTrue(
59 'chromeos-base/kernel', '12345test' in return_array)
60 self.assertTrue(
61 'dev-util/perf', '12345test' in return_array)
62 self.assertTrue(
63 'chromos-base/libcros', '12345test' in return_array)
64
65 def testCreateDictionary(self):
66 self.mox.StubOutWithMock(cbuildbot, '_GetAllGitRepos')
67 self.mox.StubOutWithMock(cbuildbot, '_GetCrosWorkOnSrcPath')
68 cbuildbot._GetAllGitRepos(mox.IgnoreArg()).AndReturn(self._test_repos)
69 cbuildbot.RunCommand(mox.IgnoreArg(),
70 cwd='%s/src/scripts' % self._buildroot,
71 redirect_stdout=True,
72 redirect_stderr=True,
73 enter_chroot=True,
74 print_cmd=False).AndReturn(
75 self._test_cros_workon_packages)
76 cbuildbot._GetCrosWorkOnSrcPath(self._buildroot, self._test_board,
77 'chromeos-base/kernel').AndReturn(
78 '/home/test/third_party/kernel/files')
79 cbuildbot._GetCrosWorkOnSrcPath(self._buildroot, self._test_board,
80 'chromeos-base/chromeos-login').AndReturn(
81 '/home/test/platform/login_manager')
82 self.mox.ReplayAll()
83 repo_dict = cbuildbot._CreateRepoDictionary(self._buildroot,
84 self._test_board)
85 self.assertEqual(repo_dict['kernel'], ['chromeos-base/kernel'])
86 self.assertEqual(repo_dict['login_manager'],
87 ['chromeos-base/chromeos-login'])
88 self.mox.VerifyAll()
89
90 # TODO(sosa): Re-add once we use cros_mark vs. cros_mark_all.
91 #def testUprevPackages(self):
92 # """Test if we get actual revisions in revisions.pfq."""
93 # self.mox.StubOutWithMock(cbuildbot, '_CreateRepoDictionary')
94 # self.mox.StubOutWithMock(cbuildbot, '_ParseRevisionString')
95 # self.mox.StubOutWithMock(cbuildbot, '_UprevFromRevisionList')
96 # self.mox.StubOutWithMock(__builtin__, 'open')
97
98 # # Mock out file interaction.
99 # m_file = self.mox.CreateMock(file)
100 # __builtin__.open(self._revision_file).AndReturn(m_file)
101 # m_file.read().AndReturn(self._test_string)
102 # m_file.close()
103
104 # cbuildbot._CreateRepoDictionary(self._buildroot,
105 # self._test_board).AndReturn(self._test_dict )
106 # cbuildbot._ParseRevisionString(self._test_string,
107 # self._test_dict).AndReturn(
108 # self._test_parsed_string_array)
109 # cbuildbot._UprevFromRevisionList(self._buildroot,
110 # self._test_parsed_string_array)
111 # self.mox.ReplayAll()
112 # cbuildbot._UprevPackages(self._buildroot, self._revision_file,
113 # self._test_board)
114 # self.mox.VerifyAll()
115
116 def testArchiveTestResults(self):
117 """Test if we can archive the latest results dir to Google Storage."""
118 # Set vars for call.
119 buildroot = '/fake_dir'
120 board = 'fake-board'
121 test_results_dir = 'fake_results_dir'
122 gsutil_path = '/fake/gsutil/path'
123 archive_dir = 1234
124 acl = 'fake_acl'
125 num_retries = 5
126
127 # Convenience variables to make archive easier to understand.
128 path_to_results = os.path.join(buildroot, 'chroot', test_results_dir)
129 path_to_image = os.path.join(buildroot, 'src', 'build', 'images', board,
130 'latest', 'chromiumos_qemu_image.bin')
131
132 cbuildbot.RunCommand(['sudo', 'chmod', '-R', '+r', path_to_results])
133 cbuildbot.RunCommand([gsutil_path, 'cp', '-R', path_to_results,
134 archive_dir], num_retries=num_retries)
135 cbuildbot.RunCommand([gsutil_path, 'setacl', acl, archive_dir])
136 cbuildbot.RunCommand(['gzip', '-f', '--fast', path_to_image])
137 cbuildbot.RunCommand([gsutil_path, 'cp', path_to_image + '.gz',
138 archive_dir], num_retries=num_retries)
139
140 self.mox.ReplayAll()
141 cbuildbot._ArchiveTestResults(buildroot, board, test_results_dir,
142 gsutil_path, archive_dir, acl)
143 self.mox.VerifyAll()
144
145 # TODO(sosa): Remove once we un-comment above.
146 def testUprevPackages(self):
147 """Test if we get actual revisions in revisions.pfq."""
148 self.mox.StubOutWithMock(__builtin__, 'open')
149
150 # Mock out file interaction.
151 m_file = self.mox.CreateMock(file)
152 __builtin__.open(self._revision_file).AndReturn(m_file)
153 m_file.read().AndReturn(self._test_string)
154 m_file.close()
155
156 drop_file = cbuildbot._PACKAGE_FILE % {'buildroot': self._buildroot}
157 cbuildbot.RunCommand(['./cros_mark_as_stable', '--all',
158 '--board=%s' % self._test_board,
159 '--overlays=%s' % ':'.join(self._chroot_overlays),
160 '--tracking_branch=cros/master',
161 '--drop_file=%s' % ReinterpretPathForChroot(drop_file),
162 'commit'],
163 cwd='%s/src/scripts' % self._buildroot,
164 enter_chroot=True)
165
166 self.mox.ReplayAll()
167 cbuildbot._UprevPackages(self._buildroot, self.tracking_branch,
168 self._revision_file, self._test_board,
169 self._overlays)
170 self.mox.VerifyAll()
171
172 def testUprevAllPackages(self):
173 """Test if we get None in revisions.pfq indicating Full Builds."""
174 self.mox.StubOutWithMock(__builtin__, 'open')
175
176 # Mock out file interaction.
177 m_file = self.mox.CreateMock(file)
178 __builtin__.open(self._revision_file).AndReturn(m_file)
179 m_file.read().AndReturn('None')
180 m_file.close()
181
182 drop_file = cbuildbot._PACKAGE_FILE % {'buildroot': self._buildroot}
183 cbuildbot.RunCommand(['./cros_mark_as_stable', '--all',
184 '--board=%s' % self._test_board,
185 '--overlays=%s' % ':'.join(self._chroot_overlays),
186 '--tracking_branch=cros/master',
187 '--drop_file=%s' % ReinterpretPathForChroot(drop_file),
188 'commit'],
189 cwd='%s/src/scripts' % self._buildroot,
190 enter_chroot=True)
191
192 self.mox.ReplayAll()
193 cbuildbot._UprevPackages(self._buildroot, self.tracking_branch,
194 self._revision_file, self._test_board,
195 self._overlays)
196 self.mox.VerifyAll()
197
198 def testGetPortageEnvVar(self):
199 """Basic test case for _GetPortageEnvVar function."""
200 envvar = 'EXAMPLE'
201 cbuildbot.RunCommand(mox.And(mox.IsA(list), mox.In(envvar)),
202 cwd='%s/src/scripts' % self._buildroot,
203 redirect_stdout=True, enter_chroot=True,
204 error_ok=True).AndReturn('RESULT\n')
205 self.mox.ReplayAll()
206 result = cbuildbot._GetPortageEnvVar(self._buildroot, self._test_board,
207 envvar)
208 self.mox.VerifyAll()
209 self.assertEqual(result, 'RESULT')
210
211 def testUploadPublicPrebuilts(self):
212 """Test _UploadPrebuilts with a public location."""
213 binhost = 'http://www.example.com'
214 binhosts = [binhost, None]
215 check = mox.And(mox.IsA(list), mox.In(binhost), mox.Not(mox.In(None)),
216 mox.In('gs://chromeos-prebuilt'))
217 cbuildbot.RunCommand(check, cwd='%s/src/scripts' % self._buildroot)
218 self.mox.ReplayAll()
219 cbuildbot._UploadPrebuilts(self._buildroot, self._test_board, 'public',
220 binhosts)
221 self.mox.VerifyAll()
222
223 def testUploadPrivatePrebuilts(self):
224 """Test _UploadPrebuilts with a private location."""
225 binhost = 'http://www.example.com'
226 binhosts = [binhost, None]
227 check = mox.And(mox.IsA(list), mox.In(binhost), mox.Not(mox.In(None)),
228 mox.In('chromeos-images:/var/www/prebuilt/'))
229 cbuildbot.RunCommand(check, cwd='%s/src/scripts' % self._buildroot)
230 self.mox.ReplayAll()
231 cbuildbot._UploadPrebuilts(self._buildroot, self._test_board, 'private',
232 binhosts)
233 self.mox.VerifyAll()
234
235
236 if __name__ == '__main__':
237 unittest.main()
OLDNEW
« no previous file with comments | « bin/cbuildbot_config.py ('k') | bin/cros_mark_chrome_as_stable » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698