~lutostag/ubuntu/trusty/maas/1.5.2+packagefix

« back to all changes in this revision

Viewing changes to src/maasserver/tests/test_eventloop.py

  • Committer: Package Import Robot
  • Author(s): Andres Rodriguez
  • Date: 2014-03-28 10:43:53 UTC
  • mto: This revision was merged to the branch mainline in revision 57.
  • Revision ID: package-import@ubuntu.com-20140328104353-ekpolg0pm5xnvq2s
Tags: upstream-1.5+bzr2204
ImportĀ upstreamĀ versionĀ 1.5+bzr2204

Show diffs side-by-side

added added

removed removed

Lines of Context:
15
15
__all__ = []
16
16
 
17
17
from maasserver import eventloop
 
18
from maasserver.rpc import regionservice
18
19
from maastesting.testcase import MAASTestCase
 
20
from testtools.matchers import IsInstance
19
21
from twisted.application.service import (
20
22
    MultiService,
21
23
    Service,
30
32
        self.assertEqual("foo:pid=12345", eventloop.loop.name)
31
33
 
32
34
    def test_start_and_stop(self):
33
 
        # Replace RegionService with a non-functional dummy to avoid
34
 
        # bringing up real services here, and reset the service list.
35
 
        self.patch(eventloop, "RegionService").return_value = Service()
 
35
        # Replace the factories in RegionEventLoop with non-functional
 
36
        # dummies to avoid bringing up real services here.
 
37
        self.patch(eventloop.loop, "factories", tuple(
 
38
            (name, Service) for name, _ in eventloop.loop.factories))
 
39
        # Reset the services list.
36
40
        self.patch(eventloop.loop, "services", MultiService())
37
41
        # At the outset, the eventloop's services are dorment.
38
42
        self.assertFalse(eventloop.loop.services.running)
44
48
        eventloop.loop.start().wait(5)
45
49
        self.assertTrue(eventloop.loop.services.running)
46
50
        self.assertEqual(
47
 
            set(eventloop.loop.services),
48
 
            {eventloop.RegionService.return_value})
 
51
            {service.name for service in eventloop.loop.services},
 
52
            {name for name, _ in eventloop.loop.factories})
49
53
        # A shutdown hook is registered with the reactor.
50
54
        stopService = eventloop.loop.services.stopService
51
55
        self.assertEqual(
56
60
        eventloop.loop.stop().wait(5)
57
61
        self.assertFalse(eventloop.loop.services.running)
58
62
        self.assertEqual(
59
 
            set(eventloop.loop.services),
60
 
            {eventloop.RegionService.return_value})
 
63
            {service.name for service in eventloop.loop.services},
 
64
            {name for name, _ in eventloop.loop.factories})
61
65
        # The hook has been cleared.
62
66
        self.assertIsNone(eventloop.loop.handle)
63
67
 
67
71
        # Must compare by equality here; these methods are decorated.
68
72
        self.assertEqual(eventloop.start, eventloop.loop.start)
69
73
        self.assertEqual(eventloop.stop, eventloop.loop.stop)
 
74
 
 
75
 
 
76
class TestFactories(MAASTestCase):
 
77
 
 
78
    def test_make_RegionService(self):
 
79
        service = eventloop.make_RegionService()
 
80
        self.assertThat(service, IsInstance(regionservice.RegionService))
 
81
        # It is registered as a factory in RegionEventLoop.
 
82
        self.assertIn(
 
83
            eventloop.make_RegionService,
 
84
            {factory for _, factory in eventloop.loop.factories})
 
85
 
 
86
    def test_make_RegionAdvertisingService(self):
 
87
        service = eventloop.make_RegionAdvertisingService()
 
88
        self.assertThat(service, IsInstance(
 
89
            regionservice.RegionAdvertisingService))
 
90
        # It is registered as a factory in RegionEventLoop.
 
91
        self.assertIn(
 
92
            eventloop.make_RegionAdvertisingService,
 
93
            {factory for _, factory in eventloop.loop.factories})