Merge lp:~chad.smith/landscape-client/mocker-to-mock-package-reporter into lp:~landscape/landscape-client/trunk

Proposed by Chad Smith
Status: Merged
Approved by: Chad Smith
Approved revision: 885
Merged at revision: 896
Proposed branch: lp:~chad.smith/landscape-client/mocker-to-mock-package-reporter
Merge into: lp:~landscape/landscape-client/trunk
Diff against target: 214 lines (+37/-54)
1 file modified
landscape/package/tests/test_reporter.py (+37/-54)
To merge this branch: bzr merge lp:~chad.smith/landscape-client/mocker-to-mock-package-reporter
Reviewer Review Type Date Requested Status
🤖 Landscape Builder test results Approve
Chris Glass (community) Approve
Adam Collard (community) Approve
Review via email: mp+297647@code.launchpad.net

Commit message

Phase 1, replace basic logging mocker w/ mock patches.

This file has significant mocker use. It is separated into parts to aid reviews.

Description of the change

Phase 1, replace basic logging mocker w/ mock patches.

This file has significant mocker use. It is separated into parts to aid reviews.

Testing instructions:
trial landscape.package.tests.test_reporter

To post a comment you must log in.
Revision history for this message
Adam Collard (adam-collard) wrote :

some nits, +1

review: Approve
Revision history for this message
🤖 Landscape Builder (landscape-builder) :
review: Abstain (executing tests)
Revision history for this message
🤖 Landscape Builder (landscape-builder) wrote :

Command: TRIAL_ARGS=-j4 make check
Result: Fail
Revno: 884
Branch: lp:~chad.smith/landscape-client/mocker-to-mock-package-reporter
Jenkins: https://ci.lscape.net/job/latch-test/5092/

review: Needs Fixing (test results)
885. By Chad Smith

address sparkiegeek's review: isn't it ironic ...

Revision history for this message
Chad Smith (chad.smith) :
Revision history for this message
🤖 Landscape Builder (landscape-builder) :
review: Abstain (executing tests)
Revision history for this message
Chris Glass (tribaal) wrote :

+1

review: Approve
Revision history for this message
🤖 Landscape Builder (landscape-builder) wrote :

Command: TRIAL_ARGS=-j4 make check
Result: Success
Revno: 885
Branch: lp:~chad.smith/landscape-client/mocker-to-mock-package-reporter
Jenkins: https://ci.lscape.net/job/latch-test/5098/

review: Approve (test results)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'landscape/package/tests/test_reporter.py'
2--- landscape/package/tests/test_reporter.py 2015-01-12 13:18:15 +0000
3+++ landscape/package/tests/test_reporter.py 2016-06-16 16:26:14 +0000
4@@ -23,6 +23,7 @@
5 from landscape.tests.helpers import (
6 LandscapeTest, BrokerServiceHelper, EnvironSaverHelper)
7 from landscape.tests.mocker import ANY
8+from mock import patch, call
9 from landscape.reactor import FakeReactor
10
11 SAMPLE_LSB_RELEASE = "DISTRIB_CODENAME=codename\n"
12@@ -265,7 +266,8 @@
13 deferred = self.reporter.handle_tasks()
14 return deferred.addCallback(got_result)
15
16- def test_fetch_hash_id_db(self):
17+ @patch("logging.info", return_value=None)
18+ def test_fetch_hash_id_db(self, logging_mock):
19
20 # Assume package_hash_id_url is set
21 self.config.data_path = self.makeDir()
22@@ -289,11 +291,6 @@
23 fetch_async_result.callback("hash-ids")
24 self.mocker.result(fetch_async_result)
25
26- # The download should be properly logged
27- logging_mock = self.mocker.replace("logging.info")
28- logging_mock("Downloaded hash=>id database from %s" % hash_id_db_url)
29- self.mocker.result(None)
30-
31 # We don't have our hash=>id database yet
32 self.assertFalse(os.path.exists(hash_id_db_filename))
33
34@@ -307,6 +304,8 @@
35 self.assertEqual(open(hash_id_db_filename).read(), "hash-ids")
36 result.addCallback(callback)
37
38+ logging_mock.assert_called_once_with(
39+ "Downloaded hash=>id database from %s" % hash_id_db_url)
40 return result
41
42 def test_fetch_hash_id_db_does_not_download_twice(self):
43@@ -346,7 +345,8 @@
44
45 return result
46
47- def test_fetch_hash_id_db_undetermined_server_uuid(self):
48+ @patch("logging.warning", return_value=None)
49+ def test_fetch_hash_id_db_undetermined_server_uuid(self, logging_mock):
50 """
51 If the server-uuid can't be determined for some reason, no download
52 should be attempted and the failure should be properly logged.
53@@ -354,16 +354,14 @@
54 message_store = self.broker_service.message_store
55 message_store.set_server_uuid(None)
56
57- logging_mock = self.mocker.replace("logging.warning")
58- logging_mock("Couldn't determine which hash=>id database to use: "
59- "server UUID not available")
60- self.mocker.result(None)
61- self.mocker.replay()
62-
63 result = self.reporter.fetch_hash_id_db()
64+ logging_mock.assert_called_once_with(
65+ "Couldn't determine which hash=>id database to use: "
66+ "server UUID not available")
67 return result
68
69- def test_fetch_hash_id_db_undetermined_codename(self):
70+ @patch("logging.warning", return_value=None)
71+ def test_fetch_hash_id_db_undetermined_codename(self, logging_mock):
72
73 # Fake uuid
74 message_store = self.broker_service.message_store
75@@ -372,20 +370,15 @@
76 # Undetermined codename
77 self.reporter.lsb_release_filename = self.makeFile("Foo=bar")
78
79- # The failure should be properly logged
80- logging_mock = self.mocker.replace("logging.warning")
81- logging_mock("Couldn't determine which hash=>id database to use: "
82- "missing code-name key in %s" %
83- self.reporter.lsb_release_filename)
84- self.mocker.result(None)
85-
86- # Go!
87- self.mocker.replay()
88 result = self.reporter.fetch_hash_id_db()
89
90+ logging_mock.assert_called_once_with(
91+ "Couldn't determine which hash=>id database to use: "
92+ "missing code-name key in %s" % self.reporter.lsb_release_filename)
93 return result
94
95- def test_fetch_hash_id_db_undetermined_arch(self):
96+ @patch("logging.warning", return_value=None)
97+ def test_fetch_hash_id_db_undetermined_arch(self, logging_mock):
98
99 # Fake uuid and codename
100 message_store = self.broker_service.message_store
101@@ -395,16 +388,10 @@
102 # Undetermined arch
103 self.facade.set_arch("")
104
105- # The failure should be properly logged
106- logging_mock = self.mocker.replace("logging.warning")
107- logging_mock("Couldn't determine which hash=>id database to use: "
108- "unknown dpkg architecture")
109- self.mocker.result(None)
110-
111- # Go!
112- self.mocker.replay()
113 result = self.reporter.fetch_hash_id_db()
114-
115+ logging_mock.assert_called_once_with(
116+ "Couldn't determine which hash=>id database to use: "
117+ "unknown dpkg architecture")
118 return result
119
120 def test_fetch_hash_id_db_with_default_url(self):
121@@ -444,7 +431,8 @@
122 result.addCallback(callback)
123 return result
124
125- def test_fetch_hash_id_db_with_download_error(self):
126+ @patch("logging.warning", return_value=None)
127+ def test_fetch_hash_id_db_with_download_error(self, logging_mock):
128
129 # Assume package_hash_id_url is set
130 self.config.data_path = self.makeDir()
131@@ -465,11 +453,6 @@
132 fetch_async_result.errback(FetchError("fetch error"))
133 self.mocker.result(fetch_async_result)
134
135- # The failure should be properly logged
136- logging_mock = self.mocker.replace("logging.warning")
137- logging_mock("Couldn't download hash=>id database: fetch error")
138- self.mocker.result(None)
139-
140 # Now go!
141 self.mocker.replay()
142 result = self.reporter.fetch_hash_id_db()
143@@ -482,9 +465,13 @@
144 self.assertEqual(os.path.exists(hash_id_db_filename), False)
145 result.addCallback(callback)
146
147+ logging_mock.assert_called_once_with(
148+ "Couldn't download hash=>id database: fetch error")
149+
150 return result
151
152- def test_fetch_hash_id_db_with_undetermined_url(self):
153+ @patch("logging.warning", return_value=None)
154+ def test_fetch_hash_id_db_with_undetermined_url(self, logging_mock):
155
156 # We don't know where to fetch the hash=>id database from
157 self.config.url = None
158@@ -496,14 +483,6 @@
159 self.reporter.lsb_release_filename = self.makeFile(SAMPLE_LSB_RELEASE)
160 self.facade.set_arch("arch")
161
162- # The failure should be properly logged
163- logging_mock = self.mocker.replace("logging.warning")
164- logging_mock("Can't determine the hash=>id database url")
165- self.mocker.result(None)
166-
167- # Let's go
168- self.mocker.replay()
169-
170 result = self.reporter.fetch_hash_id_db()
171
172 # We shouldn't have any hash=>id database
173@@ -514,6 +493,8 @@
174 self.assertEqual(os.path.exists(hash_id_db_filename), False)
175 result.addCallback(callback)
176
177+ logging_mock.assert_called_once_with(
178+ "Can't determine the hash=>id database url")
179 return result
180
181 def test_fetch_hash_id_db_with_custom_certificate(self):
182@@ -1234,17 +1215,13 @@
183 self.reactor.advance(0)
184 return result
185
186- def test_run_apt_update_warns_about_lock_failure(self):
187+ @patch("logging.warning", return_value=None)
188+ def test_run_apt_update_warns_about_lock_failure(self, logging_mock):
189 """
190 The L{PackageReporter.run_apt_update} method logs a warnings when
191 apt-update fails acquiring the lock.
192 """
193 self._make_fake_apt_update(code=100)
194- logging_mock = self.mocker.replace("logging.warning")
195- logging_mock("Could not acquire the apt lock. Retrying in 20 seconds.")
196- logging_mock("Could not acquire the apt lock. Retrying in 40 seconds.")
197- logging_mock("'%s' exited with status 100 ()" %
198- self.reporter.apt_update_filename)
199
200 spawn_mock = self.mocker.replace(
201 "landscape.lib.twisted_util.spawn_process")
202@@ -1269,6 +1246,12 @@
203
204 result.addCallback(callback)
205 self.reactor.advance(60)
206+ message = "Could not acquire the apt lock. Retrying in {} seconds."
207+ calls = [call(message.format(20)),
208+ call(message.format(40)),
209+ call("'{}' exited with status 1000 ()".format(
210+ self.reporter.apt_update_filename))]
211+ logging_mock.has_calls(calls)
212 return result
213
214 def test_run_apt_update_stops_retrying_after_lock_acquired(self):

Subscribers

People subscribed via source and target branches

to all changes: