summaryrefslogtreecommitdiffstats
path: root/testing/mozharness/test/test_mozilla_blob_upload.py
diff options
context:
space:
mode:
Diffstat (limited to 'testing/mozharness/test/test_mozilla_blob_upload.py')
-rw-r--r--testing/mozharness/test/test_mozilla_blob_upload.py103
1 files changed, 103 insertions, 0 deletions
diff --git a/testing/mozharness/test/test_mozilla_blob_upload.py b/testing/mozharness/test/test_mozilla_blob_upload.py
new file mode 100644
index 000000000..4918d6c73
--- /dev/null
+++ b/testing/mozharness/test/test_mozilla_blob_upload.py
@@ -0,0 +1,103 @@
+import os
+import gc
+import unittest
+import copy
+import mock
+
+import mozharness.base.log as log
+from mozharness.base.log import ERROR
+import mozharness.base.script as script
+from mozharness.mozilla.blob_upload import BlobUploadMixin, \
+ blobupload_config_options
+
+class CleanupObj(script.ScriptMixin, log.LogMixin):
+ def __init__(self):
+ super(CleanupObj, self).__init__()
+ self.log_obj = None
+ self.config = {'log_level': ERROR}
+
+
+def cleanup():
+ gc.collect()
+ c = CleanupObj()
+ for f in ('test_logs', 'test_dir', 'tmpfile_stdout', 'tmpfile_stderr'):
+ c.rmtree(f)
+
+
+class BlobUploadScript(BlobUploadMixin, script.BaseScript):
+ config_options = copy.deepcopy(blobupload_config_options)
+ def __init__(self, **kwargs):
+ self.abs_dirs = None
+ self.set_buildbot_property = mock.Mock()
+ super(BlobUploadScript, self).__init__(
+ config_options=self.config_options,
+ **kwargs
+ )
+
+ def query_python_path(self, binary="python"):
+ if binary == "blobberc.py":
+ return mock.Mock(return_value='/path/to/blobberc').return_value
+ elif binary == "python":
+ return mock.Mock(return_value='/path/to/python').return_value
+
+ def query_abs_dirs(self):
+ if self.abs_dirs:
+ return self.abs_dirs
+ abs_dirs = super(BlobUploadScript, self).query_abs_dirs()
+ dirs = {}
+ dirs['abs_blob_upload_dir'] = os.path.join(abs_dirs['abs_work_dir'],
+ 'blobber_upload_dir')
+ abs_dirs.update(dirs)
+ self.abs_dirs = abs_dirs
+
+ return self.abs_dirs
+
+ def run_command(self, command):
+ self.command = command
+
+# TestBlobUploadMechanism {{{1
+class TestBlobUploadMechanism(unittest.TestCase):
+ # I need a log watcher helper function, here and in test_log.
+ def setUp(self):
+ cleanup()
+ self.s = None
+
+ def tearDown(self):
+ # Close the logfile handles, or windows can't remove the logs
+ if hasattr(self, 's') and isinstance(self.s, object):
+ del(self.s)
+ cleanup()
+
+ def test_blob_upload_mechanism(self):
+ self.s = BlobUploadScript(config={'log_type': 'multi',
+ 'blob_upload_branch': 'test-branch',
+ 'default_blob_upload_servers':
+ ['http://blob_server.me'],
+ 'blob_uploader_auth_file':
+ os.path.abspath(__file__)},
+ initial_config_file='test/test.json')
+
+ content = "Hello world!"
+ parent_dir = self.s.query_abs_dirs()['abs_blob_upload_dir']
+ if not os.path.isdir(parent_dir):
+ self.s.mkdir_p(parent_dir)
+
+ file_name = os.path.join(parent_dir, 'test_mock_blob_file')
+ self.s.write_to_file(file_name, content)
+ self.s.upload_blobber_files()
+ self.assertTrue(self.s.set_buildbot_property.called)
+
+ expected_result = ['/path/to/python', '/path/to/blobberc', '-u',
+ 'http://blob_server.me', '-a',
+ os.path.abspath(__file__), '-b', 'test-branch', '-d']
+ expected_result.append(self.s.query_abs_dirs()['abs_blob_upload_dir'])
+ expected_result += [
+ '--output-manifest',
+ os.path.join(self.s.query_abs_dirs()['abs_work_dir'], "uploaded_files.json")
+ ]
+ self.assertEqual(expected_result, self.s.command)
+
+
+# main {{{1
+if __name__ == '__main__':
+ unittest.main()