Merge lp:~therve/landscape-client/hardware-info-register into lp:~landscape/landscape-client/trunk

Proposed by Thomas Herve
Status: Merged
Approved by: Thomas Herve
Approved revision: 579
Merged at revision: 579
Proposed branch: lp:~therve/landscape-client/hardware-info-register
Merge into: lp:~landscape/landscape-client/trunk
Diff against target: 45 lines (+23/-2)
2 files modified
landscape/manager/hardwareinfo.py (+5/-2)
landscape/manager/tests/test_hardwareinfo.py (+18/-0)
To merge this branch: bzr merge lp:~therve/landscape-client/hardware-info-register
Reviewer Review Type Date Requested Status
Chris Glass (community) Approve
Björn Tillenius (community) Approve
Review via email: mp+125424@code.launchpad.net

Description of the change

The fix is fairly simple. Previously the code was accumulating callbacks to "message-type-acceptance-changed", and firing them all at once when the server triggered it. So moving that call to register means that it only happens once, instead of once for every day of uptime.

To post a comment you must log in.
Revision history for this message
Björn Tillenius (bjornt) wrote :

Looks good, +1

review: Approve
Revision history for this message
Chris Glass (tribaal) wrote :

Looks good! +1

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'landscape/manager/hardwareinfo.py'
2--- landscape/manager/hardwareinfo.py 2012-03-15 11:13:13 +0000
3+++ landscape/manager/hardwareinfo.py 2012-09-20 07:07:21 +0000
4@@ -13,10 +13,13 @@
5 run_immediately = True
6 command = "/usr/bin/lshw"
7
8+ def register(self, registry):
9+ super(HardwareInfo, self).register(registry)
10+ self.call_on_accepted(self.message_type, self.send_message)
11+
12 def run(self):
13- self.call_on_accepted(self.message_type, self.send_message)
14 return self.registry.broker.call_if_accepted(
15- self.message_type, self.send_message)
16+ self.message_type, self.send_message)
17
18 def send_message(self):
19 result = getProcessOutput(
20
21=== modified file 'landscape/manager/tests/test_hardwareinfo.py'
22--- landscape/manager/tests/test_hardwareinfo.py 2012-03-15 11:13:13 +0000
23+++ landscape/manager/tests/test_hardwareinfo.py 2012-09-20 07:07:21 +0000
24@@ -43,3 +43,21 @@
25 [{"data": u"-xml -quiet\n", "type": "hardware-info"}])
26
27 return deferred.addCallback(check)
28+
29+ def test_only_on_register(self):
30+ """
31+ C{call_on_accepted} is only called at register time, to not accumulate
32+ callbacks to the "message-type-acceptance-changed" event.
33+ """
34+ calls = []
35+ self.info.call_on_accepted = lambda x, y: calls.append((x, y))
36+
37+ deferred = self.info.run()
38+
39+ def check(ignored):
40+ self.assertMessages(
41+ self.broker_service.message_store.get_pending_messages(),
42+ [{"data": u"-xml -quiet\n", "type": "hardware-info"}])
43+ self.assertEqual([], calls)
44+
45+ return deferred.addCallback(check)

Subscribers

People subscribed via source and target branches

to all changes: