Exemple #1
0
 def test_redis_entry_point(self):
     conf = {
         'board': 'redis',
     }
     p = impl_memory.MemoryBackend()
     with contextlib.closing(backends.fetch('test', conf,
                                            persistence=p)) as be:
         self.assertIsInstance(be, impl_redis.RedisJobBoard)
Exemple #2
0
 def test_zk_entry_point(self):
     p = impl_memory.MemoryBackend()
     conf = {
         'board': 'zookeeper',
     }
     with contextlib.closing(backends.fetch('test', conf,
                                            persistence=p)) as be:
         self.assertIsInstance(be, impl_zookeeper.ZookeeperJobBoard)
Exemple #3
0
 def setUp(self):
     super(TestClaimListener, self).setUp()
     self.client = fake_client.FakeClient()
     self.addCleanup(self.client.stop)
     self.board = jobs.fetch('test',
                             'zookeeper',
                             client=self.client,
                             persistence=impl_memory.MemoryBackend())
     self.addCleanup(self.board.close)
     self.board.connect()
Exemple #4
0
 def test_deregister(self):
     """Verify that register and deregister don't blow up"""
     with contextlib.closing(impl_memory.MemoryBackend()) as be:
         flow = lf.Flow("test")
         flow.add(SleepyTask("test-1", sleep_for=0.1))
         (lb, fd) = persistence_utils.temporary_flow_detail(be)
         e = self._make_engine(flow, fd, be)
         l = timing.DurationListener(e)
         l.register()
         l.deregister()
Exemple #5
0
 def create_board(self, persistence=None):
     if persistence is None:
         persistence = impl_memory.MemoryBackend()
     client = fake_client.FakeClient()
     board = impl_zookeeper.ZookeeperJobBoard('test-board', {},
                                              client=client,
                                              persistence=persistence)
     self.addCleanup(board.close)
     self.addCleanup(self.close_client, client)
     return (client, board)
Exemple #6
0
 def make_components(self):
     client = fake_client.FakeClient()
     persistence = impl_memory.MemoryBackend()
     board = impl_zookeeper.ZookeeperJobBoard('testing', {},
                                              client=client,
                                              persistence=persistence)
     conductor_kwargs = self.conductor_kwargs.copy()
     conductor_kwargs['persistence'] = persistence
     conductor = backends.fetch(self.kind, 'testing', board,
                                **conductor_kwargs)
     return ComponentBundle(board, client, persistence, conductor)
Exemple #7
0
 def test_flow_duration(self):
     with contextlib.closing(impl_memory.MemoryBackend()) as be:
         flow = lf.Flow("test")
         flow.add(SleepyTask("test-1", sleep_for=0.1))
         (lb, fd) = persistence_utils.temporary_flow_detail(be)
         e = self._make_engine(flow, fd, be)
         with timing.DurationListener(e):
             e.run()
         self.assertIsNotNone(fd)
         self.assertIsNotNone(fd.meta)
         self.assertIn('duration', fd.meta)
         self.assertGreaterEqual(0.1, fd.meta['duration'])
Exemple #8
0
 def test_zk_entry_point_existing_client(self):
     existing_client = fake_client.FakeClient()
     conf = {
         'board': 'zookeeper',
     }
     kwargs = {
         'client': existing_client,
         'persistence': impl_memory.MemoryBackend(),
     }
     with contextlib.closing(backends.fetch('test', conf, **kwargs)) as be:
         self.assertIsInstance(be, impl_zookeeper.ZookeeperJobBoard)
         self.assertIs(existing_client, be._client)
Exemple #9
0
 def test_bad_factory(self):
     persistence = impl_memory.MemoryBackend()
     client = fake_client.FakeClient()
     board = impl_zookeeper.ZookeeperJobBoard('testing', {},
                                              client=client,
                                              persistence=persistence)
     self.assertRaises(ValueError,
                       backends.fetch,
                       'nonblocking',
                       'testing',
                       board,
                       persistence=persistence,
                       executor_factory='testing')
Exemple #10
0
 def test_storage_progress(self):
     with contextlib.closing(impl_memory.MemoryBackend({})) as be:
         flo = lf.Flow("test")
         flo.add(ProgressTask("test", 3))
         b, fd = p_utils.temporary_flow_detail(be)
         e = self._make_engine(flo, flow_detail=fd, backend=be)
         e.run()
         end_progress = e.storage.get_task_progress("test")
         self.assertEqual(1.0, end_progress)
         task_uuid = e.storage.get_atom_uuid("test")
         td = fd.find(task_uuid)
         self.assertEqual(1.0, td.meta['progress'])
         self.assertFalse(td.meta['progress_details'])
Exemple #11
0
 def make_components(self, listener_factories):
     client = fake_client.FakeClient()
     persistence = impl_memory.MemoryBackend()
     board = impl_zookeeper.ZookeeperJobBoard('testing', {},
                                              client=client,
                                              persistence=persistence)
     conductor_kwargs = {
         'wait_timeout': 0.01,
         'listener_factories': listener_factories,
         'persistence': persistence,
     }
     conductor = backends.fetch('blocking', 'testing', board,
                                **conductor_kwargs)
     return ComponentBundle(board, client, persistence, conductor)
Exemple #12
0
 def create_board(self, persistence=None):
     if persistence is None:
         persistence = impl_memory.MemoryBackend()
     namespace = uuidutils.generate_uuid()
     client = ru.RedisClient()
     config = {
         'namespace': six.b("zag-%s" % namespace),
     }
     kwargs = {
         'client': client,
         'persistence': persistence,
     }
     board = impl_redis.RedisJobBoard('test-board', config, **kwargs)
     self.addCleanup(board.close)
     self.addCleanup(self.close_client, client)
     return (client, board)
Exemple #13
0
 def test_record_ending_exception(self, mocked_warning):
     with contextlib.closing(impl_memory.MemoryBackend()) as be:
         flow = lf.Flow("test")
         flow.add(test_utils.TaskNoRequiresNoReturns("test-1"))
         (lb, fd) = persistence_utils.temporary_flow_detail(be)
         e = self._make_engine(flow, fd, be)
         duration_listener = timing.DurationListener(e)
         with mock.patch.object(duration_listener._engine.storage,
                                'update_atom_metadata') as mocked_uam:
             mocked_uam.side_effect = exc.StorageFailure('Woot!')
             with duration_listener:
                 e.run()
     mocked_warning.assert_called_once_with(mock.ANY,
                                            mock.ANY,
                                            'task',
                                            'test-1',
                                            exc_info=True)
Exemple #14
0
    def test_dual_storage_progress(self):
        fired_events = []

        def notify_me(event_type, details):
            fired_events.append(details.pop('progress'))

        with contextlib.closing(impl_memory.MemoryBackend({})) as be:
            t = ProgressTask("test", 5)
            t.notifier.register(task.EVENT_UPDATE_PROGRESS, notify_me)
            flo = lf.Flow("test")
            flo.add(t)
            b, fd = p_utils.temporary_flow_detail(be)
            e = self._make_engine(flo, flow_detail=fd, backend=be)
            e.run()

            end_progress = e.storage.get_task_progress("test")
            self.assertEqual(1.0, end_progress)
            task_uuid = e.storage.get_atom_uuid("test")
            td = fd.find(task_uuid)
            self.assertEqual(1.0, td.meta['progress'])
            self.assertFalse(td.meta['progress_details'])
            self.assertEqual(6, len(fired_events))
Exemple #15
0
 def setUp(self):
     super(EngineTestBase, self).setUp()
     self.backend = impl_memory.MemoryBackend(conf={})
 def setUp(self):
     super(MemoryPersistenceTest, self).setUp()
     self._backend = impl_memory.MemoryBackend({})
Exemple #17
0
 def tearDown(self):
     super(TestProgress, self).tearDown()
     with contextlib.closing(impl_memory.MemoryBackend({})) as be:
         with contextlib.closing(be.get_connection()) as conn:
             conn.clear_all()