• Bob Van Landuyt's avatar
    Clear Redis-queues on Sidekiq::Testing.inline! · 0de568d9
    Bob Van Landuyt authored
    Since in specs we run though all the middleware for Sidekiq jobs, and
    that Sidekiq middleware writes to Redis for job deduplication we
    should clear that Redis before and after each spec to make sure that
    the idempotency keys don't bleed into other specs.
    
    The client middleware for job-deduplication writes a key to redis. The
    server middleware removes it again before running the job. If the
    spec were to get interrupted between these 2 steps, then the key could
    remain in Redis causing failures on the next run in development.
    0de568d9
sidekiq.rb 782 Bytes
# frozen_string_literal: true

RSpec.configure do |config|
  def gitlab_sidekiq_inline(&block)
    # We need to cleanup the queues before running jobs in specs because the
    # middleware might have written to redis
    redis_queues_cleanup!
    Sidekiq::Testing.inline!(&block)
  ensure
    redis_queues_cleanup!
  end

  # As we'll review the examples with this tag, we should either:
  # - fix the example to not require Sidekiq inline mode (and remove this tag)
  # - explicitly keep the inline mode and change the tag for `:sidekiq_inline` instead
  config.around(:example, :sidekiq_might_not_need_inline) do |example|
    gitlab_sidekiq_inline { example.run }
  end

  config.around(:example, :sidekiq_inline) do |example|
    gitlab_sidekiq_inline { example.run }
  end
end