Test(logthrdestdrv, throttle_is_applied_to_delivery_and_causes_flush_to_be_called_more_often) { /* 3 messages per second, we need to set this explicitly on the queue as it has already been initialized */ log_queue_set_throttle(dd->super.worker.instance.queue, 3); dd->super.worker.insert = _insert_batched_message_success; dd->super.worker.flush = _flush_batched_message_success; dd->super.batch_lines = 5; start_stopwatch(); _generate_messages_and_wait_for_processing(dd, 20, dd->super.written_messages); guint64 time_msec = stop_stopwatch_and_get_result(); /* NOTE: initially we send a bucket worth of messages, and then pace out * the remaining 6 buckets 1sec apart */ cr_assert(time_msec > 5000000); cr_assert(dd->insert_counter == 20); cr_assert(dd->flush_size == 20); cr_assert(dd->flush_counter > 3); cr_assert(stats_counter_get(dd->super.processed_messages) == 20); cr_assert(stats_counter_get(dd->super.written_messages) == 20); cr_assert(stats_counter_get(dd->super.dropped_messages) == 0); cr_assert(stats_counter_get(dd->super.worker.instance.queue->memory_usage) == 0); cr_assert(dd->super.shared_seq_num == 21, "%d", dd->super.shared_seq_num); }
/* returns a reference */ static LogQueue * log_dest_driver_acquire_queue_method(LogDestDriver *self, gchar *persist_name, gpointer user_data) { GlobalConfig *cfg = log_pipe_get_config(&self->super.super); LogQueue *queue = NULL; g_assert(user_data == NULL); if (persist_name) queue = cfg_persist_config_fetch(cfg, persist_name); if (!queue) { queue = log_queue_fifo_new(self->log_fifo_size < 0 ? cfg->log_fifo_size : self->log_fifo_size, persist_name); log_queue_set_throttle(queue, self->throttle); } return queue; }