def test_init(): """Establish that a monitor thread is usually created on init.""" client = create_client() # Do not actually create a thread, but do verify that one was created; # it should be running the batch's "monitor" method (which commits the # batch once time elapses). with mock.patch.object(threading, 'Thread', autospec=True) as Thread: batch = Batch(client, 'topic_name', types.BatchSettings()) Thread.assert_called_once_with(target=batch.monitor) # New batches start able to accept messages by default. assert batch.status == BatchStatus.ACCEPTING_MESSAGES
def create_batch(autocommit=False, **batch_settings): """Return a batch object suitable for testing. Args: autocommit (bool): Whether the batch should commit after ``max_latency`` seconds. By default, this is ``False`` for unit testing. kwargs (dict): Arguments passed on to the :class:``~.pubsub_v1.types.BatchSettings`` constructor. Returns: ~.pubsub_v1.publisher.batch.thread.Batch: A batch object. """ client = create_client() settings = types.BatchSettings(**batch_settings) return Batch(client, 'topic_name', settings, autocommit=autocommit)
def create_batch(status=None, settings=types.BatchSettings()): """Create a batch object, which does not commit. Args: status (str): If provided, the batch's internal status will be set to the provided status. Returns: ~.pubsub_v1.publisher.batch.thread.Batch: The batch object """ creds = mock.Mock(spec=credentials.Credentials) client = publisher.Client(credentials=creds) batch = Batch(client, 'topic_name', settings, autocommit=False) if status: batch._status = status return batch
def test_client(): client = create_client() settings = types.BatchSettings() batch = Batch(client, 'topic_name', settings, autocommit=False) assert batch.client is client