|
23 | 23 | import parameterized
|
24 | 24 | from pyfakefs import fake_filesystem_unittest
|
25 | 25 |
|
26 |
| -from clusterfuzz._internal.config import local_config |
27 | 26 | from clusterfuzz._internal.datastore import data_handler
|
28 | 27 | from clusterfuzz._internal.datastore import data_types
|
29 | 28 | from clusterfuzz._internal.google_cloud_utils import blobs
|
@@ -73,14 +72,27 @@ class DataHandlerTest(unittest.TestCase):
|
73 | 72 |
|
74 | 73 | def setUp(self):
|
75 | 74 | helpers.patch_environ(self)
|
76 |
| - project_config_get = local_config.ProjectConfig.get |
77 | 75 | helpers.patch(self, [
|
78 | 76 | 'clusterfuzz._internal.base.utils.default_project_name',
|
79 | 77 | 'clusterfuzz._internal.config.db_config.get',
|
80 |
| - ('project_config_get', |
81 |
| - 'clusterfuzz._internal.config.local_config.ProjectConfig.get'), |
| 78 | + 'clusterfuzz._internal.config.local_config.ProjectConfig', |
| 79 | + ('get_storage_provider', |
| 80 | + 'clusterfuzz._internal.google_cloud_utils.storage._provider'), |
| 81 | + 'clusterfuzz._internal.google_cloud_utils.storage.create_discovery_storage_client', |
| 82 | + 'clusterfuzz._internal.google_cloud_utils.storage.get_bucket_iam_policy', |
82 | 83 | ])
|
83 | 84 |
|
| 85 | + self.mock.default_project_name.return_value = 'project' |
| 86 | + |
| 87 | + self.storage_provider = mock.Mock() |
| 88 | + self.mock.get_storage_provider.return_value = self.storage_provider |
| 89 | + |
| 90 | + self.project_config = {} |
| 91 | + self.mock.ProjectConfig.return_value = self.project_config |
| 92 | + |
| 93 | + # Disable artificial delay when creating buckets. |
| 94 | + storage.CREATE_BUCKET_DELAY = 0 |
| 95 | + |
84 | 96 | self.job = data_types.Job(
|
85 | 97 | name='linux_asan_chrome',
|
86 | 98 | environment_string=('SUMMARY_PREFIX = project\n'
|
@@ -175,8 +187,6 @@ def setUp(self):
|
175 | 187 |
|
176 | 188 | environment.set_value('FUZZ_DATA', '/tmp/inputs/fuzzer-common-data-bundles')
|
177 | 189 | environment.set_value('FUZZERS_DIR', '/tmp/inputs/fuzzers')
|
178 |
| - self.mock.default_project_name.return_value = 'project' |
179 |
| - self.mock.project_config_get.side_effect = project_config_get |
180 | 190 |
|
181 | 191 | def test_find_testcase(self):
|
182 | 192 | """Ensure that find_testcase behaves as expected."""
|
@@ -449,15 +459,34 @@ def test_get_issue_summary_bad_cast_without_crash_function(self):
|
449 | 459 | summary, 'project: Bad-cast to blink::LayoutBlock from '
|
450 | 460 | 'blink::LayoutTableSection')
|
451 | 461 |
|
| 462 | + def test_create_data_bundle_bucket_and_iams(self): |
| 463 | + self.storage_provider.get_bucket.return_value = None |
| 464 | + self.storage_provider.create_bucket.return_value = True |
| 465 | + |
| 466 | + self.assertTrue(data_handler.create_data_bundle_bucket_and_iams('test', [])) |
| 467 | + |
| 468 | + self.storage_provider.create_bucket.assert_called_with( |
| 469 | + 'test-corpus.test-clusterfuzz.appspot.com', None, None, None) |
| 470 | + |
| 471 | + def test_create_data_bundle_bucket_and_iams_with_location(self): |
| 472 | + self.storage_provider.get_bucket.return_value = None |
| 473 | + self.storage_provider.create_bucket.return_value = True |
| 474 | + |
| 475 | + self.project_config['data_bundle_bucket_location'] = 'NORTH-POLE' |
| 476 | + |
| 477 | + self.assertTrue(data_handler.create_data_bundle_bucket_and_iams('test', [])) |
| 478 | + |
| 479 | + self.storage_provider.create_bucket.assert_called_with( |
| 480 | + 'test-corpus.test-clusterfuzz.appspot.com', None, None, 'NORTH-POLE') |
| 481 | + |
452 | 482 | def test_get_data_bundle_name_default(self):
|
453 | 483 | """Test getting the default data bundle bucket name."""
|
454 | 484 | self.assertEqual('test-corpus.test-clusterfuzz.appspot.com',
|
455 | 485 | data_handler.get_data_bundle_bucket_name('test'))
|
456 | 486 |
|
457 | 487 | def test_get_data_bundle_name_custom_suffix(self):
|
458 | 488 | """Test getting the data bundle bucket name with custom suffix."""
|
459 |
| - self.mock.project_config_get.side_effect = None |
460 |
| - self.mock.project_config_get.return_value = 'custom.suffix.com' |
| 489 | + self.project_config['bucket_domain_suffix'] = 'custom.suffix.com' |
461 | 490 | self.assertEqual('test-corpus.custom.suffix.com',
|
462 | 491 | data_handler.get_data_bundle_bucket_name('test'))
|
463 | 492 |
|
@@ -485,7 +514,7 @@ def test_filter_stack_trace_upload(self):
|
485 | 514 | exceeds limit and an upload_url is provided."""
|
486 | 515 | blob_name = blobs.generate_new_blob_name()
|
487 | 516 | blobs_bucket = 'blobs_bucket'
|
488 |
| - storage._provider().create_bucket(blobs_bucket, None, None) # pylint: disable=protected-access |
| 517 | + storage._provider().create_bucket(blobs_bucket, None, None, None) # pylint: disable=protected-access |
489 | 518 |
|
490 | 519 | gcs_path = storage.get_cloud_storage_file_path(blobs_bucket, blob_name)
|
491 | 520 | signed_upload_url = storage.get_signed_upload_url(gcs_path)
|
|
0 commit comments