OLD | NEW |
1 #!/usr/bin/python | 1 #!/usr/bin/python |
2 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. | 2 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 | 5 |
6 import copy | 6 import copy |
7 import mox | 7 import mox |
8 import os | 8 import os |
| 9 import multiprocessing |
9 import shutil | 10 import shutil |
10 import sys | 11 import sys |
11 import tempfile | 12 import tempfile |
12 import unittest | 13 import unittest |
13 import urllib | 14 import urllib |
14 | 15 |
15 import constants | 16 import constants |
16 sys.path.append(constants.SOURCE_ROOT) | 17 sys.path.append(constants.SOURCE_ROOT) |
17 import prebuilt | 18 import prebuilt |
18 from chromite.lib import cros_build_lib | 19 from chromite.lib import cros_build_lib |
(...skipping 428 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
447 | 448 |
448 def tearDown(self): | 449 def tearDown(self): |
449 self.mox.UnsetStubs() | 450 self.mox.UnsetStubs() |
450 self.mox.VerifyAll() | 451 self.mox.VerifyAll() |
451 | 452 |
452 def testSyncHostPrebuilts(self): | 453 def testSyncHostPrebuilts(self): |
453 package_path = os.path.join(self.build_path, | 454 package_path = os.path.join(self.build_path, |
454 prebuilt._HOST_PACKAGES_PATH) | 455 prebuilt._HOST_PACKAGES_PATH) |
455 url_suffix = prebuilt._REL_HOST_PATH % {'version': self.version, | 456 url_suffix = prebuilt._REL_HOST_PATH % {'version': self.version, |
456 'target': prebuilt._HOST_TARGET } | 457 'target': prebuilt._HOST_TARGET } |
457 self.uploader._UploadPrebuilt(package_path, url_suffix) | 458 packages_url_suffix = '%s/packages' % url_suffix.rstrip('/') |
| 459 self.uploader._UploadPrebuilt(package_path, packages_url_suffix) |
458 url_value = '%s/%s/' % (self.binhost.rstrip('/'), url_suffix.rstrip('/')) | 460 url_value = '%s/%s/' % (self.binhost.rstrip('/'), url_suffix.rstrip('/')) |
459 prebuilt.RevGitFile(mox.IgnoreArg(), url_value, key=self.key) | 461 prebuilt.RevGitFile(mox.IgnoreArg(), url_value, key=self.key) |
460 prebuilt.UpdateBinhostConfFile(mox.IgnoreArg(), self.key, url_value) | 462 prebuilt.UpdateBinhostConfFile(mox.IgnoreArg(), self.key, url_value) |
461 self.mox.ReplayAll() | 463 self.mox.ReplayAll() |
462 self.uploader._SyncHostPrebuilts(self.build_path, self.version, self.key, | 464 self.uploader._SyncHostPrebuilts(self.build_path, self.version, self.key, |
463 True, True) | 465 True, True) |
464 | 466 |
465 def testSyncBoardPrebuilts(self): | 467 def testSyncBoardPrebuilts(self): |
466 board = 'x86-generic' | 468 board = 'x86-generic' |
467 board_path = os.path.join(self.build_path, | 469 board_path = os.path.join(self.build_path, |
468 prebuilt._BOARD_PATH % {'board': board}) | 470 prebuilt._BOARD_PATH % {'board': board}) |
469 package_path = os.path.join(board_path, 'packages') | 471 package_path = os.path.join(board_path, 'packages') |
470 url_suffix = prebuilt._REL_BOARD_PATH % {'version': self.version, | 472 url_suffix = prebuilt._REL_BOARD_PATH % {'version': self.version, |
471 'board': board } | 473 'board': board } |
472 self.uploader._UploadPrebuilt(package_path, url_suffix) | 474 packages_url_suffix = '%s/packages' % url_suffix.rstrip('/') |
| 475 process = None |
| 476 self.mox.StubOutWithMock(multiprocessing.Process, '__init__') |
| 477 self.mox.StubOutWithMock(multiprocessing.Process, 'start') |
| 478 self.mox.StubOutWithMock(multiprocessing.Process, 'join') |
| 479 multiprocessing.Process.__init__(target=self.uploader._UploadBoardTarball, |
| 480 args=(board_path, url_suffix)) |
| 481 multiprocessing.Process.start() |
| 482 self.uploader._UploadPrebuilt(package_path, packages_url_suffix) |
| 483 multiprocessing.Process.join() |
473 url_value = '%s/%s/' % (self.binhost.rstrip('/'), url_suffix.rstrip('/')) | 484 url_value = '%s/%s/' % (self.binhost.rstrip('/'), url_suffix.rstrip('/')) |
474 prebuilt.DeterminePrebuiltConfFile(self.build_path, board).AndReturn('foo') | 485 prebuilt.DeterminePrebuiltConfFile(self.build_path, board).AndReturn('foo') |
475 prebuilt.RevGitFile('foo', url_value, key=self.key) | 486 prebuilt.RevGitFile('foo', url_value, key=self.key) |
476 prebuilt.UpdateBinhostConfFile(mox.IgnoreArg(), self.key, url_value) | 487 prebuilt.UpdateBinhostConfFile(mox.IgnoreArg(), self.key, url_value) |
477 self.mox.ReplayAll() | 488 self.mox.ReplayAll() |
478 self.uploader._SyncBoardPrebuilts(board, self.build_path, self.version, | 489 self.uploader._SyncBoardPrebuilts(board, self.build_path, self.version, |
479 self.key, True, True) | 490 self.key, True, True, True) |
480 | 491 |
481 | 492 |
482 class TestMain(unittest.TestCase): | 493 class TestMain(unittest.TestCase): |
483 | 494 |
484 def setUp(self): | 495 def setUp(self): |
485 self.mox = mox.Mox() | 496 self.mox = mox.Mox() |
486 | 497 |
487 def tearDown(self): | 498 def tearDown(self): |
488 self.mox.UnsetStubs() | 499 self.mox.UnsetStubs() |
489 self.mox.VerifyAll() | 500 self.mox.VerifyAll() |
490 | 501 |
491 def testMain(self): | 502 def testMain(self): |
492 """Test that the main function works.""" | 503 """Test that the main function works.""" |
493 options = mox.MockObject(object) | 504 options = mox.MockObject(object) |
494 old_binhost = 'http://prebuilt/1' | 505 old_binhost = 'http://prebuilt/1' |
495 options.previous_binhost_url = [old_binhost] | 506 options.previous_binhost_url = [old_binhost] |
496 options.board = 'x86-generic' | 507 options.board = 'x86-generic' |
497 options.build_path = '/trunk' | 508 options.build_path = '/trunk' |
498 options.private = True | 509 options.private = True |
499 options.sync_host = True | 510 options.sync_host = True |
500 options.git_sync = True | 511 options.git_sync = True |
| 512 options.upload_board_tarball = True |
501 options.upload = 'gs://upload/' | 513 options.upload = 'gs://upload/' |
502 options.binhost_base_url = options.upload | 514 options.binhost_base_url = options.upload |
503 options.prepend_version = True | 515 options.prepend_version = True |
504 options.filters = True | 516 options.filters = True |
505 options.key = 'PORTAGE_BINHOST' | 517 options.key = 'PORTAGE_BINHOST' |
506 options.sync_binhost_conf = True | 518 options.sync_binhost_conf = True |
507 self.mox.StubOutWithMock(prebuilt, 'ParseOptions') | 519 self.mox.StubOutWithMock(prebuilt, 'ParseOptions') |
508 prebuilt.ParseOptions().AndReturn(options) | 520 prebuilt.ParseOptions().AndReturn(options) |
509 self.mox.StubOutWithMock(prebuilt, 'LoadPrivateFilters') | 521 self.mox.StubOutWithMock(prebuilt, 'LoadPrivateFilters') |
510 prebuilt.LoadPrivateFilters(options.build_path) | 522 prebuilt.LoadPrivateFilters(options.build_path) |
511 self.mox.StubOutWithMock(prebuilt, 'GrabRemotePackageIndex') | 523 self.mox.StubOutWithMock(prebuilt, 'GrabRemotePackageIndex') |
512 prebuilt.GrabRemotePackageIndex(old_binhost).AndReturn(True) | 524 prebuilt.GrabRemotePackageIndex(old_binhost).AndReturn(True) |
513 self.mox.StubOutWithMock(prebuilt.PrebuiltUploader, '__init__') | 525 self.mox.StubOutWithMock(prebuilt.PrebuiltUploader, '__init__') |
514 self.mox.StubOutWithMock(prebuilt, 'GetBoardPathFromCrosOverlayList') | 526 self.mox.StubOutWithMock(prebuilt, 'GetBoardPathFromCrosOverlayList') |
515 fake_overlay_path = '/fake_path' | 527 fake_overlay_path = '/fake_path' |
516 acl_path = prebuilt.GetBoardPathFromCrosOverlayList( | 528 acl_path = prebuilt.GetBoardPathFromCrosOverlayList( |
517 options.build_path, options.board).AndReturn(fake_overlay_path) | 529 options.build_path, options.board).AndReturn(fake_overlay_path) |
518 expected_gs_acl_path = os.path.join(fake_overlay_path, | 530 expected_gs_acl_path = os.path.join(fake_overlay_path, |
519 prebuilt._GOOGLESTORAGE_ACL_FILE) | 531 prebuilt._GOOGLESTORAGE_ACL_FILE) |
520 prebuilt.PrebuiltUploader.__init__(options.upload, expected_gs_acl_path, | 532 prebuilt.PrebuiltUploader.__init__(options.upload, expected_gs_acl_path, |
521 options.upload, mox.IgnoreArg()) | 533 options.upload, mox.IgnoreArg()) |
522 self.mox.StubOutWithMock(prebuilt.PrebuiltUploader, '_SyncHostPrebuilts') | 534 self.mox.StubOutWithMock(prebuilt.PrebuiltUploader, '_SyncHostPrebuilts') |
523 prebuilt.PrebuiltUploader._SyncHostPrebuilts(options.build_path, | 535 prebuilt.PrebuiltUploader._SyncHostPrebuilts(options.build_path, |
524 mox.IgnoreArg(), options.key, options.git_sync, | 536 mox.IgnoreArg(), options.key, options.git_sync, |
525 options.sync_binhost_conf) | 537 options.sync_binhost_conf) |
526 self.mox.StubOutWithMock(prebuilt.PrebuiltUploader, '_SyncBoardPrebuilts') | 538 self.mox.StubOutWithMock(prebuilt.PrebuiltUploader, '_SyncBoardPrebuilts') |
527 prebuilt.PrebuiltUploader._SyncBoardPrebuilts(options.board, | 539 prebuilt.PrebuiltUploader._SyncBoardPrebuilts(options.board, |
528 options.build_path, mox.IgnoreArg(), options.key, options.git_sync, | 540 options.build_path, mox.IgnoreArg(), options.key, options.git_sync, |
529 options.sync_binhost_conf) | 541 options.sync_binhost_conf, options.upload_board_tarball) |
530 self.mox.ReplayAll() | 542 self.mox.ReplayAll() |
531 prebuilt.main() | 543 prebuilt.main() |
532 | 544 |
533 if __name__ == '__main__': | 545 if __name__ == '__main__': |
534 unittest.main() | 546 unittest.main() |
OLD | NEW |