Merge lp:~bjornt/landscape-client/apt-facade-changer-optional into lp:~landscape/landscape-client/trunk

Proposed by Björn Tillenius
Status: Merged
Approved by: Free Ekanayaka
Approved revision: 407
Merged at revision: 404
Proposed branch: lp:~bjornt/landscape-client/apt-facade-changer-optional
Merge into: lp:~landscape/landscape-client/trunk
Diff against target: 143 lines (+50/-13)
4 files modified
landscape/package/reporter.py (+1/-3)
landscape/package/taskhandler.py (+2/-2)
landscape/package/tests/test_reporter.py (+1/-1)
landscape/package/tests/test_taskhandler.py (+46/-7)
To merge this branch: bzr merge lp:~bjornt/landscape-client/apt-facade-changer-optional
Reviewer Review Type Date Requested Status
Free Ekanayaka (community) Approve
Thomas Herve (community) Approve
Review via email: mp+82262@code.launchpad.net

Description of the change

Use AptFacade in PackageChanger, if USE_APT_FACADE=1 is set.

I've removed the use_apt_facade parameter to run_task_handler() and
moved the check to inside that method. Everything that uses
run_task_handler() should be compatible with AptFacade.

To post a comment you must log in.
Revision history for this message
Thomas Herve (therve) wrote :

[1] You may want to use EnvironSaverHelper to make your os.environ changes safer.

+1!

review: Approve
Revision history for this message
Free Ekanayaka (free.ekanayaka) wrote :

Great, +1!

review: Approve
408. By Björn Tillenius

Use EnvironSaverHelper.

Revision history for this message
Björn Tillenius (bjornt) wrote :

On Tue, Nov 15, 2011 at 01:05:26PM -0000, Thomas Herve wrote:
> Review: Approve
>
> [1] You may want to use EnvironSaverHelper to make your os.environ
> changes safer.

Didn't know about EnvironSaverHelper, thanks for pointing it out. I've
change the code to use it, instead of restoring the environment manually.

--
Björn Tillenius | https://launchpad.net/~bjornt

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'landscape/package/reporter.py'
--- landscape/package/reporter.py 2011-11-08 10:54:08 +0000
+++ landscape/package/reporter.py 2011-11-17 08:50:28 +0000
@@ -725,9 +725,7 @@
725 elif "FAKE_PACKAGE_STORE" in os.environ:725 elif "FAKE_PACKAGE_STORE" in os.environ:
726 return run_task_handler(FakeReporter, args)726 return run_task_handler(FakeReporter, args)
727 else:727 else:
728 use_apt_facade = os.environ.get("USE_APT_FACADE", False)728 return run_task_handler(PackageReporter, args)
729 return run_task_handler(
730 PackageReporter, args, use_apt_facade=use_apt_facade)
731729
732730
733def find_reporter_command():731def find_reporter_command():
734732
=== modified file 'landscape/package/taskhandler.py'
--- landscape/package/taskhandler.py 2011-11-04 11:13:58 +0000
+++ landscape/package/taskhandler.py 2011-11-17 08:50:28 +0000
@@ -232,7 +232,7 @@
232 return result232 return result
233233
234234
235def run_task_handler(cls, args, reactor=None, use_apt_facade=False):235def run_task_handler(cls, args, reactor=None):
236 # please only pass reactor when you have totally mangled everything with236 # please only pass reactor when you have totally mangled everything with
237 # mocker. Otherwise bad things will happen.237 # mocker. Otherwise bad things will happen.
238 if reactor is None:238 if reactor is None:
@@ -266,7 +266,7 @@
266 package_store = cls.package_store_class(config.store_filename)266 package_store = cls.package_store_class(config.store_filename)
267 # Delay importing of the facades so that we don't267 # Delay importing of the facades so that we don't
268 # import Smart unless we need to.268 # import Smart unless we need to.
269 if use_apt_facade:269 if os.environ.get("USE_APT_FACADE"):
270 from landscape.package.facade import AptFacade270 from landscape.package.facade import AptFacade
271 package_facade = AptFacade()271 package_facade = AptFacade()
272 else:272 else:
273273
=== modified file 'landscape/package/tests/test_reporter.py'
--- landscape/package/tests/test_reporter.py 2011-11-09 09:36:24 +0000
+++ landscape/package/tests/test_reporter.py 2011-11-17 08:50:28 +0000
@@ -1267,7 +1267,7 @@
1267 run_task_handler = self.mocker.replace("landscape.package.taskhandler"1267 run_task_handler = self.mocker.replace("landscape.package.taskhandler"
1268 ".run_task_handler",1268 ".run_task_handler",
1269 passthrough=False)1269 passthrough=False)
1270 run_task_handler(PackageReporter, ["ARGS"], use_apt_facade=False)1270 run_task_handler(PackageReporter, ["ARGS"])
1271 self.mocker.result("RESULT")1271 self.mocker.result("RESULT")
1272 self.mocker.replay()1272 self.mocker.replay()
12731273
12741274
=== modified file 'landscape/package/tests/test_taskhandler.py'
--- landscape/package/tests/test_taskhandler.py 2011-11-04 11:13:58 +0000
+++ landscape/package/tests/test_taskhandler.py 2011-11-17 08:50:28 +0000
@@ -9,10 +9,11 @@
9from landscape.package.taskhandler import (9from landscape.package.taskhandler import (
10 PackageTaskHandlerConfiguration, PackageTaskHandler, run_task_handler,10 PackageTaskHandlerConfiguration, PackageTaskHandler, run_task_handler,
11 LazyRemoteBroker)11 LazyRemoteBroker)
12from landscape.package.facade import SmartFacade12from landscape.package.facade import AptFacade, SmartFacade
13from landscape.package.store import HashIdStore, PackageStore13from landscape.package.store import HashIdStore, PackageStore
14from landscape.package.tests.helpers import SmartFacadeHelper14from landscape.package.tests.helpers import AptFacadeHelper, SmartFacadeHelper
15from landscape.tests.helpers import LandscapeTest, BrokerServiceHelper15from landscape.tests.helpers import (
16 LandscapeTest, BrokerServiceHelper, EnvironSaverHelper)
16from landscape.tests.mocker import ANY, ARGS, MATCH17from landscape.tests.mocker import ANY, ARGS, MATCH
1718
1819
@@ -48,7 +49,7 @@
4849
49class PackageTaskHandlerTest(LandscapeTest):50class PackageTaskHandlerTest(LandscapeTest):
5051
51 helpers = [SmartFacadeHelper, BrokerServiceHelper]52 helpers = [SmartFacadeHelper, EnvironSaverHelper, BrokerServiceHelper]
5253
53 def setUp(self):54 def setUp(self):
5455
@@ -326,10 +327,11 @@
326 self.assertTrue(isinstance(result, Deferred))327 self.assertTrue(isinstance(result, Deferred))
327 self.assertTrue(result.called)328 self.assertTrue(result.called)
328329
329 def test_run_task_handler(self):330 def _mock_run_task_handler(self):
330 """331 """
331 The L{run_task_handler} function creates and runs the given task332 Mock the different parts of run_task_handler(), to ensure it
332 handler with the proper arguments.333 does what it's supposed to do, without actually creating files
334 and starting processes.
333 """335 """
334 # This is a slightly lengthy one, so bear with me.336 # This is a slightly lengthy one, so bear with me.
335337
@@ -379,6 +381,15 @@
379 # Okay, the whole playground is set.381 # Okay, the whole playground is set.
380 self.mocker.replay()382 self.mocker.replay()
381383
384 return HandlerMock, handler_args
385
386 def test_run_task_handler(self):
387 """
388 The L{run_task_handler} function creates and runs the given task
389 handler with the proper arguments.
390 """
391 HandlerMock, handler_args = self._mock_run_task_handler()
392
382 def assert_task_handler(ignored):393 def assert_task_handler(ignored):
383394
384 store, facade, broker, config = handler_args395 store, facade, broker, config = handler_args
@@ -408,6 +419,34 @@
408 result = run_task_handler(HandlerMock, ["-c", self.config_filename])419 result = run_task_handler(HandlerMock, ["-c", self.config_filename])
409 return result.addCallback(assert_task_handler)420 return result.addCallback(assert_task_handler)
410421
422 def test_run_task_handler_use_apt_facade(self):
423 """
424 The L{run_task_handler} creates an AptFacade instead of
425 SmartFacade, if the USE_APT_FACADE environment variable is set.
426 """
427
428 HandlerMock, handler_args = self._mock_run_task_handler()
429 os.environ["USE_APT_FACADE"] = "1"
430
431 def assert_task_handler(ignored):
432
433 store, facade, broker, config = handler_args
434
435 try:
436 self.assertEqual(type(facade), AptFacade)
437 finally:
438 # Put reactor back in place before returning.
439 self.mocker.reset()
440
441 # Set up using AptFacadeHelper, to get a clean root dir, so
442 # creating an AptFacade with a clean dir is much faster than
443 # using / as root. This also prevents test failures due to tests
444 # using AptFacadeHelper not resetting the apt config, which
445 # isn't trivial to do.
446 AptFacadeHelper().set_up(self)
447 result = run_task_handler(HandlerMock, ["-c", self.config_filename])
448 return result.addCallback(assert_task_handler)
449
411 def test_run_task_handler_when_already_locked(self):450 def test_run_task_handler_when_already_locked(self):
412451
413 lock_path(os.path.join(self.data_path, "package", "default.lock"))452 lock_path(os.path.join(self.data_path, "package", "default.lock"))

Subscribers

People subscribed via source and target branches

to all changes: