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
1=== modified file 'landscape/package/reporter.py'
2--- landscape/package/reporter.py 2011-11-08 10:54:08 +0000
3+++ landscape/package/reporter.py 2011-11-17 08:50:28 +0000
4@@ -725,9 +725,7 @@
5 elif "FAKE_PACKAGE_STORE" in os.environ:
6 return run_task_handler(FakeReporter, args)
7 else:
8- use_apt_facade = os.environ.get("USE_APT_FACADE", False)
9- return run_task_handler(
10- PackageReporter, args, use_apt_facade=use_apt_facade)
11+ return run_task_handler(PackageReporter, args)
12
13
14 def find_reporter_command():
15
16=== modified file 'landscape/package/taskhandler.py'
17--- landscape/package/taskhandler.py 2011-11-04 11:13:58 +0000
18+++ landscape/package/taskhandler.py 2011-11-17 08:50:28 +0000
19@@ -232,7 +232,7 @@
20 return result
21
22
23-def run_task_handler(cls, args, reactor=None, use_apt_facade=False):
24+def run_task_handler(cls, args, reactor=None):
25 # please only pass reactor when you have totally mangled everything with
26 # mocker. Otherwise bad things will happen.
27 if reactor is None:
28@@ -266,7 +266,7 @@
29 package_store = cls.package_store_class(config.store_filename)
30 # Delay importing of the facades so that we don't
31 # import Smart unless we need to.
32- if use_apt_facade:
33+ if os.environ.get("USE_APT_FACADE"):
34 from landscape.package.facade import AptFacade
35 package_facade = AptFacade()
36 else:
37
38=== modified file 'landscape/package/tests/test_reporter.py'
39--- landscape/package/tests/test_reporter.py 2011-11-09 09:36:24 +0000
40+++ landscape/package/tests/test_reporter.py 2011-11-17 08:50:28 +0000
41@@ -1267,7 +1267,7 @@
42 run_task_handler = self.mocker.replace("landscape.package.taskhandler"
43 ".run_task_handler",
44 passthrough=False)
45- run_task_handler(PackageReporter, ["ARGS"], use_apt_facade=False)
46+ run_task_handler(PackageReporter, ["ARGS"])
47 self.mocker.result("RESULT")
48 self.mocker.replay()
49
50
51=== modified file 'landscape/package/tests/test_taskhandler.py'
52--- landscape/package/tests/test_taskhandler.py 2011-11-04 11:13:58 +0000
53+++ landscape/package/tests/test_taskhandler.py 2011-11-17 08:50:28 +0000
54@@ -9,10 +9,11 @@
55 from landscape.package.taskhandler import (
56 PackageTaskHandlerConfiguration, PackageTaskHandler, run_task_handler,
57 LazyRemoteBroker)
58-from landscape.package.facade import SmartFacade
59+from landscape.package.facade import AptFacade, SmartFacade
60 from landscape.package.store import HashIdStore, PackageStore
61-from landscape.package.tests.helpers import SmartFacadeHelper
62-from landscape.tests.helpers import LandscapeTest, BrokerServiceHelper
63+from landscape.package.tests.helpers import AptFacadeHelper, SmartFacadeHelper
64+from landscape.tests.helpers import (
65+ LandscapeTest, BrokerServiceHelper, EnvironSaverHelper)
66 from landscape.tests.mocker import ANY, ARGS, MATCH
67
68
69@@ -48,7 +49,7 @@
70
71 class PackageTaskHandlerTest(LandscapeTest):
72
73- helpers = [SmartFacadeHelper, BrokerServiceHelper]
74+ helpers = [SmartFacadeHelper, EnvironSaverHelper, BrokerServiceHelper]
75
76 def setUp(self):
77
78@@ -326,10 +327,11 @@
79 self.assertTrue(isinstance(result, Deferred))
80 self.assertTrue(result.called)
81
82- def test_run_task_handler(self):
83+ def _mock_run_task_handler(self):
84 """
85- The L{run_task_handler} function creates and runs the given task
86- handler with the proper arguments.
87+ Mock the different parts of run_task_handler(), to ensure it
88+ does what it's supposed to do, without actually creating files
89+ and starting processes.
90 """
91 # This is a slightly lengthy one, so bear with me.
92
93@@ -379,6 +381,15 @@
94 # Okay, the whole playground is set.
95 self.mocker.replay()
96
97+ return HandlerMock, handler_args
98+
99+ def test_run_task_handler(self):
100+ """
101+ The L{run_task_handler} function creates and runs the given task
102+ handler with the proper arguments.
103+ """
104+ HandlerMock, handler_args = self._mock_run_task_handler()
105+
106 def assert_task_handler(ignored):
107
108 store, facade, broker, config = handler_args
109@@ -408,6 +419,34 @@
110 result = run_task_handler(HandlerMock, ["-c", self.config_filename])
111 return result.addCallback(assert_task_handler)
112
113+ def test_run_task_handler_use_apt_facade(self):
114+ """
115+ The L{run_task_handler} creates an AptFacade instead of
116+ SmartFacade, if the USE_APT_FACADE environment variable is set.
117+ """
118+
119+ HandlerMock, handler_args = self._mock_run_task_handler()
120+ os.environ["USE_APT_FACADE"] = "1"
121+
122+ def assert_task_handler(ignored):
123+
124+ store, facade, broker, config = handler_args
125+
126+ try:
127+ self.assertEqual(type(facade), AptFacade)
128+ finally:
129+ # Put reactor back in place before returning.
130+ self.mocker.reset()
131+
132+ # Set up using AptFacadeHelper, to get a clean root dir, so
133+ # creating an AptFacade with a clean dir is much faster than
134+ # using / as root. This also prevents test failures due to tests
135+ # using AptFacadeHelper not resetting the apt config, which
136+ # isn't trivial to do.
137+ AptFacadeHelper().set_up(self)
138+ result = run_task_handler(HandlerMock, ["-c", self.config_filename])
139+ return result.addCallback(assert_task_handler)
140+
141 def test_run_task_handler_when_already_locked(self):
142
143 lock_path(os.path.join(self.data_path, "package", "default.lock"))

Subscribers

People subscribed via source and target branches

to all changes: