Example #1
0
    def test_service_check_create_race(self):
        self.manager_mock = self.mox.CreateMock(FakeManager)
        self.mox.StubOutWithMock(sys.modules[__name__], 'FakeManager',
                                 use_mock_anything=True)
        self.mox.StubOutWithMock(self.manager_mock, 'init_host')
        self.mox.StubOutWithMock(self.manager_mock, 'pre_start_hook')
        self.mox.StubOutWithMock(self.manager_mock, 'post_start_hook')

        FakeManager(host=self.host).AndReturn(self.manager_mock)

        # init_host is called before any service record is created
        self.manager_mock.init_host()

        db.service_get_by_args(mox.IgnoreArg(), self.host, self.binary
                               ).AndRaise(exception.NotFound)
        ex = exception.ServiceTopicExists(host='foo', topic='bar')
        db.service_create(mox.IgnoreArg(), mox.IgnoreArg()
                          ).AndRaise(ex)

        class TestException(Exception):
            pass

        db.service_get_by_args(mox.IgnoreArg(), self.host, self.binary
                               ).AndRaise(TestException)

        self.mox.ReplayAll()

        serv = service.Service(self.host,
                               self.binary,
                               self.topic,
                               'rack.tests.test_service.FakeManager')
        self.assertRaises(TestException, serv.start)
Example #2
0
    def _service_start_mocks(self):
        service_create = {'host': self.host,
                          'binary': self.binary,
                          'topic': self.topic,
                          'report_count': 0}
        service_ref = {'host': self.host,
                       'binary': self.binary,
                       'topic': self.topic,
                       'report_count': 0,
                       'id': 1}

        db.service_get_by_args(mox.IgnoreArg(),
                               self.host, self.binary)\
            .AndRaise(exception.NotFound())
        db.service_create(mox.IgnoreArg(),
                          service_create).AndReturn(service_ref)
        return service_ref
Example #3
0
 def _create_service_ref(self, context):
     svc_values = {
         'host': self.host,
         'binary': self.binary,
         'topic': self.topic,
         'report_count': 0
     }
     service = db.service_create(context, svc_values)
     self.service_id = service['id']
     return service
Example #4
0
 def test_service_topic_exists_exceptions(self):
     db.service_create(self.ctxt, self._get_base_values())
     values = self._get_base_values()
     values.update({'binary': 'bin1'})
     self.assertRaises(exception.ServiceTopicExists, db.service_create,
                       self.ctxt, values)
Example #5
0
 def test_service_binary_exists_exception(self):
     db.service_create(self.ctxt, self._get_base_values())
     values = self._get_base_values()
     values.update({'topic': 'top1'})
     self.assertRaises(exception.ServiceBinaryExists, db.service_create,
                       self.ctxt, values)
Example #6
0
 def _create_service(self, values):
     v = self._get_base_values()
     v.update(values)
     return db.service_create(self.ctxt, v)