@State(Scope.Thread)
@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.NANOSECONDS)
@Warmup(iterations = 10, time = 1, timeUnit = TimeUnit.SECONDS)
@Measurement(iterations = 10, time = 1, timeUnit = TimeUnit.SECONDS)
public class QueueOfferPoll {
  private static final int BURST_SIZE = Integer.getInteger("burst.size", 1);
  private static final Integer DUMMY_MESSAGE = 1;
  private final Queue<Integer> q = SPSCQueueFactory.createQueue();
  @GenerateMicroBenchmark
  public int offerAndPoll() {
    for (int i = 0; i < BURST_SIZE; i++) {
      q.offer(DUMMY_MESSAGE);
    }
    Integer result = null;
    for (int i = 0; i < BURST_SIZE; i++) {
      result = q.poll();
    }
    return result.intValue();
  }
}