Esempio n. 1
0
    def test_safe_create(self):
        """Test safe create."""
        svc = presence_service.PresenceResourceService()

        # Node does not exist.
        self.assertTrue(
            svc._safe_create(12345, '/running/foo.bar#1234', 'h.hh.com'))
        treadmill.zkutils.create.assert_called_with(mock.ANY,
                                                    '/running/foo.bar#1234',
                                                    'h.hh.com',
                                                    acl=[mock.ANY],
                                                    ephemeral=True)

        # Node exists, session match.
        svc.zkclient.client_id = (12345, '')
        treadmill.zkutils.get_with_metadata.return_value = (
            'h.hh.com', collections.namedtuple('metadata',
                                               'owner_session_id')(12345))
        treadmill.zkutils.create.side_effect = kazoo.client.NodeExistsError
        self.assertTrue(
            svc._safe_create(12345, '/running/foo.bar#1234', 'h.hh.com'))

        # Node exists, session does not match
        svc.zkclient.client_id = (98765, '')
        treadmill.zkutils.get_with_metadata.return_value = (
            'h.hh.com', collections.namedtuple('metadata',
                                               'owner_session_id')(12345))
        treadmill.zkutils.create.side_effect = kazoo.client.NodeExistsError
        self.assertFalse(
            svc._safe_create(12345, '/running/foo.bar#1234', 'h.hh.com'))
Esempio n. 2
0
    def test_on_delete_request(self):
        """Test processing of a delete request.
        """
        svc = presence_service.PresenceResourceService()
        svc.zkclient.client_id = (12345, '')
        treadmill.zkutils.get_with_metadata.return_value = (
            'h.hh.com', mock.Mock(owner_session_id=12345))
        request = {
            'endpoints': [{
                'name': 'xxx',
                'port': 8000,
                'real_port': 32000
            }]
        }
        svc.on_create_request('foo.bar-12345-Uniq2', request)

        svc.on_delete_request('foo.bar-12345-Uniq1')
        self.assertIn('foo.bar#12345', svc.presence)
        treadmill.zkutils.ensure_deleted.assert_not_called()

        svc.on_delete_request('foo.bar-12345-Uniq2')
        self.assertNotIn('foo.bar#12345', svc.presence)
        treadmill.zkutils.ensure_deleted.assert_has_calls([
            mock.call(mock.ANY, '/running/foo.bar#12345'),
            mock.call(mock.ANY, '/endpoints/foo/bar#12345:tcp:xxx')
        ],
                                                          any_order=True)
 def test_on_create_request(self):
     """Test processing of a network create request.
     """
     svc = presence_service.PresenceResourceService()
     request = {
         'endpoints': [{'name': 'xxx',
                        'port': 8000,
                        'real_port': 32000}]
     }
     request_id = 'foo.bar#12345'
     svc.on_create_request(request_id, request)
     self.assertEqual(svc.state['foo.bar#12345'],
                      set(['/running/foo.bar#12345',
                           '/endpoints/foo/bar#12345:tcp:xxx']))
Esempio n. 4
0
    def test_safe_delete(self):
        """Tests safe node deletion."""
        svc = presence_service.PresenceResourceService()

        # Node exists, session match.
        svc.zkclient.client_id = (12345, '')
        treadmill.zkutils.get_with_metadata.return_value = (
            'h.hh.com', collections.namedtuple('metadata',
                                               'owner_session_id')(12345))

        svc._safe_delete('/running/foo.bar#1234')
        treadmill.zkutils.ensure_deleted.assert_called_with(
            mock.ANY, '/running/foo.bar#1234')

        treadmill.zkutils.ensure_deleted.reset_mock()
        svc.zkclient.client_id = (99999, '')
        svc._safe_delete('/running/foo.bar#1234')
        self.assertFalse(treadmill.zkutils.ensure_deleted.called)
Esempio n. 5
0
 def test_on_create_with_ident(self):
     """Test processing of a network create request.
     """
     svc = presence_service.PresenceResourceService()
     request = {
         'identity': 0,
         'identity_group': 'bla',
         'endpoints': [{
             'name': 'xxx',
             'port': 8000,
             'real_port': 32000
         }]
     }
     request_id = 'foo.bar-12345-Uniq1'
     svc.on_create_request(request_id, request)
     self.assertEqual(
         svc.presence['foo.bar#12345'], {
             '/running/foo.bar#12345': 'foo.bar-12345-Uniq1',
             '/identity-groups/bla/0': 'foo.bar-12345-Uniq1',
             '/endpoints/foo/bar#12345:tcp:xxx': 'foo.bar-12345-Uniq1'
         })
Esempio n. 6
0
 def test_on_delete_request(self):
     """Test processing of a delete request.
     """
     svc = presence_service.PresenceResourceService()
     request_id = 'myproid.test#12345'
     svc.on_delete_request(request_id)