Skip to content

Commit

Permalink
Adding unpadded atomic tests
Browse files Browse the repository at this point in the history
  • Loading branch information
franz1981 committed Feb 6, 2024
1 parent 8b9a2ba commit 8064d6c
Show file tree
Hide file tree
Showing 24 changed files with 109 additions and 0 deletions.
Expand Up @@ -28,6 +28,8 @@ public static Collection<Object[]> parameters()
list.add(makeAtomic(0, 0, SIZE, Ordering.FIFO));
list.add(makeUnpadded(0, 0, 2, Ordering.FIFO));
list.add(makeUnpadded(0, 0, SIZE, Ordering.FIFO));
list.add(makeUnpaddedAtomic(0, 0, 2, Ordering.FIFO));
list.add(makeUnpaddedAtomic(0, 0, SIZE, Ordering.FIFO));
return list;
}
}
Expand Up @@ -28,6 +28,8 @@ public static Collection<Object[]> parameters()
list.add(makeAtomic(0, 1, SIZE, Ordering.FIFO));// MPSC size SIZE
list.add(makeUnpadded(0, 1, 1, Ordering.FIFO));// MPSC size 1
list.add(makeUnpadded(0, 1, SIZE, Ordering.FIFO));// MPSC size SIZE
list.add(makeUnpaddedAtomic(0, 1, 1, Ordering.FIFO));// MPSC size 1
list.add(makeUnpaddedAtomic(0, 1, SIZE, Ordering.FIFO));// MPSC size SIZE
return list;
}
}
Expand Up @@ -4,6 +4,7 @@
import org.jctools.queues.spec.ConcurrentQueueSpec;
import org.jctools.queues.spec.Ordering;
import org.jctools.queues.unpadded.MpscGrowableUnpaddedArrayQueue;
import org.jctools.queues.unpadded.atomic.MpscGrowableUnpaddedAtomicArrayQueue;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;

Expand All @@ -30,6 +31,8 @@ public static Collection<Object[]> parameters()
list.add(makeParams(0, 1, SIZE, Ordering.FIFO, new MpscGrowableAtomicArrayQueue<>(8, SIZE)));// MPSC size SIZE
list.add(makeParams(0, 1, 4, Ordering.FIFO, new MpscGrowableUnpaddedArrayQueue<>(2, 4)));// MPSC size 1
list.add(makeParams(0, 1, SIZE, Ordering.FIFO, new MpscGrowableUnpaddedArrayQueue<>(8, SIZE)));// MPSC size SIZE
list.add(makeParams(0, 1, 4, Ordering.FIFO, new MpscGrowableUnpaddedAtomicArrayQueue<>(2, 4)));// MPSC size 1
list.add(makeParams(0, 1, SIZE, Ordering.FIFO, new MpscGrowableUnpaddedAtomicArrayQueue<>(8, SIZE)));// MPSC size SIZE
return list;
}
}
Expand Up @@ -25,6 +25,7 @@ public static Collection<Object[]> parameters()
list.add(makeMpq(0, 1, 0, Ordering.FIFO));// unbounded MPSC
list.add(makeAtomic(0, 1, 0, Ordering.FIFO));// unbounded MPSC
list.add(makeUnpadded(0, 1, 0, Ordering.FIFO));// unbounded MPSC
list.add(makeUnpaddedAtomic(0, 1, 0, Ordering.FIFO));// unbounded MPSC
return list;
}
}
Expand Up @@ -4,6 +4,7 @@
import org.jctools.queues.spec.ConcurrentQueueSpec;
import org.jctools.queues.spec.Ordering;
import org.jctools.queues.unpadded.MpscUnboundedUnpaddedArrayQueue;
import org.jctools.queues.unpadded.atomic.MpscUnboundedUnpaddedAtomicArrayQueue;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;

Expand All @@ -30,6 +31,8 @@ public static Collection<Object[]> parameters()
list.add(makeParams(0, 1, 0, Ordering.FIFO, new MpscUnboundedAtomicArrayQueue<>(64)));
list.add(makeParams(0, 1, 0, Ordering.FIFO, new MpscUnboundedUnpaddedArrayQueue<>(2)));
list.add(makeParams(0, 1, 0, Ordering.FIFO, new MpscUnboundedUnpaddedArrayQueue<>(64)));
list.add(makeParams(0, 1, 0, Ordering.FIFO, new MpscUnboundedUnpaddedAtomicArrayQueue<>(2)));
list.add(makeParams(0, 1, 0, Ordering.FIFO, new MpscUnboundedUnpaddedAtomicArrayQueue<>(64)));
return list;
}
}
Expand Up @@ -28,6 +28,8 @@ public static Collection<Object[]> parameters()
list.add(makeAtomic(1, 0, SIZE, Ordering.FIFO));// SPMC size SIZE
list.add(makeUnpadded(1, 0, 1, Ordering.FIFO));// SPMC size 1
list.add(makeUnpadded(1, 0, SIZE, Ordering.FIFO));// SPMC size SIZE
list.add(makeUnpaddedAtomic(1, 0, 1, Ordering.FIFO));// SPMC size 1
list.add(makeUnpaddedAtomic(1, 0, SIZE, Ordering.FIFO));// SPMC size SIZE
return list;
}
}
Expand Up @@ -28,6 +28,8 @@ public static Collection<Object[]> parameters()
list.add(makeAtomic(1, 1, SIZE, Ordering.FIFO));// SPSC size SIZE
list.add(makeUnpadded(1, 1, 4, Ordering.FIFO));// SPSC size 4
list.add(makeUnpadded(1, 1, SIZE, Ordering.FIFO));// SPSC size SIZE
list.add(makeUnpaddedAtomic(1, 1, 4, Ordering.FIFO));// SPSC size 4
list.add(makeUnpaddedAtomic(1, 1, SIZE, Ordering.FIFO));// SPSC size SIZE
return list;
}
}
Expand Up @@ -4,6 +4,7 @@
import org.jctools.queues.spec.ConcurrentQueueSpec;
import org.jctools.queues.spec.Ordering;
import org.jctools.queues.unpadded.SpscChunkedUnpaddedArrayQueue;
import org.jctools.queues.unpadded.atomic.SpscChunkedUnpaddedAtomicArrayQueue;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
Expand Down Expand Up @@ -31,6 +32,8 @@ public static Collection<Object[]> parameters()
list.add(makeParams(1, 1, SIZE, Ordering.FIFO, new SpscChunkedAtomicArrayQueue<>(8, SIZE)));// MPSC size SIZE
list.add(makeParams(1, 1, 16, Ordering.FIFO, new SpscChunkedUnpaddedArrayQueue<>(8, 16)));// MPSC size 1
list.add(makeParams(1, 1, SIZE, Ordering.FIFO, new SpscChunkedUnpaddedArrayQueue<>(8, SIZE)));// MPSC size SIZE
list.add(makeParams(1, 1, 16, Ordering.FIFO, new SpscChunkedUnpaddedAtomicArrayQueue<>(8, 16)));// MPSC size 1
list.add(makeParams(1, 1, SIZE, Ordering.FIFO, new SpscChunkedUnpaddedAtomicArrayQueue<>(8, SIZE)));// MPSC size SIZE
return list;
}

Expand Down
Expand Up @@ -4,6 +4,7 @@
import org.jctools.queues.spec.ConcurrentQueueSpec;
import org.jctools.queues.spec.Ordering;
import org.jctools.queues.unpadded.SpscGrowableUnpaddedArrayQueue;
import org.jctools.queues.unpadded.atomic.SpscGrowableUnpaddedAtomicArrayQueue;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;

Expand Down Expand Up @@ -31,6 +32,8 @@ public static Collection<Object[]> parameters()
list.add(makeParams(1, 1, SIZE, Ordering.FIFO, new SpscGrowableAtomicArrayQueue<>(8, SIZE)));
list.add(makeParams(1, 1, 16, Ordering.FIFO, new SpscGrowableUnpaddedArrayQueue<>(8, 16)));
list.add(makeParams(1, 1, SIZE, Ordering.FIFO, new SpscGrowableUnpaddedArrayQueue<>(8, SIZE)));
list.add(makeParams(1, 1, 16, Ordering.FIFO, new SpscGrowableUnpaddedAtomicArrayQueue<>(8, 16)));
list.add(makeParams(1, 1, SIZE, Ordering.FIFO, new SpscGrowableUnpaddedAtomicArrayQueue<>(8, SIZE)));
return list;
}
}
Expand Up @@ -25,6 +25,7 @@ public static Collection<Object[]> parameters()
list.add(makeMpq(1, 1, 0, Ordering.FIFO));// unbounded SPSC
list.add(makeAtomic(1, 1, 0, Ordering.FIFO));// unbounded SPSC
list.add(makeUnpadded(1, 1, 0, Ordering.FIFO));// unbounded SPSC
list.add(makeUnpaddedAtomic(1, 1, 0, Ordering.FIFO));// unbounded SPSC
return list;
}
}
Expand Up @@ -4,6 +4,7 @@
import org.jctools.queues.spec.ConcurrentQueueSpec;
import org.jctools.queues.spec.Ordering;
import org.jctools.queues.unpadded.SpscUnboundedUnpaddedArrayQueue;
import org.jctools.queues.unpadded.atomic.SpscUnboundedUnpaddedAtomicArrayQueue;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;

Expand Down Expand Up @@ -31,6 +32,8 @@ public static Collection<Object[]> parameters()
list.add(makeParams(1, 1, 0, Ordering.FIFO, new SpscUnboundedAtomicArrayQueue<>(64)));
list.add(makeParams(1, 1, 0, Ordering.FIFO, new SpscUnboundedUnpaddedArrayQueue<>(2)));
list.add(makeParams(1, 1, 0, Ordering.FIFO, new SpscUnboundedUnpaddedArrayQueue<>(64)));
list.add(makeParams(1, 1, 0, Ordering.FIFO, new SpscUnboundedUnpaddedAtomicArrayQueue<>(2)));
list.add(makeParams(1, 1, 0, Ordering.FIFO, new SpscUnboundedUnpaddedAtomicArrayQueue<>(64)));
return list;
}
}
Expand Up @@ -34,6 +34,8 @@ public static Collection<Object[]> parameters()
list.add(makeAtomic(0, 0, SIZE, Ordering.FIFO));
list.add(makeUnpadded(0, 0, 2, Ordering.FIFO));
list.add(makeUnpadded(0, 0, SIZE, Ordering.FIFO));
list.add(makeUnpaddedAtomic(0, 0, 2, Ordering.FIFO));
list.add(makeUnpaddedAtomic(0, 0, SIZE, Ordering.FIFO));
return list;
}

Expand Down
Expand Up @@ -38,6 +38,9 @@ public static Collection<Object[]> parameters()
list.add(makeUnpadded(0, 1, 1, Ordering.FIFO));
list.add(makeUnpadded(0, 1, 2, Ordering.FIFO));
list.add(makeUnpadded(0, 1, SIZE, Ordering.FIFO));
list.add(makeUnpaddedAtomic(0, 1, 1, Ordering.FIFO));
list.add(makeUnpaddedAtomic(0, 1, 2, Ordering.FIFO));
list.add(makeUnpaddedAtomic(0, 1, SIZE, Ordering.FIFO));

return list;
}
Expand Down
Expand Up @@ -4,6 +4,7 @@
import org.jctools.queues.spec.ConcurrentQueueSpec;
import org.jctools.queues.spec.Ordering;
import org.jctools.queues.unpadded.MpscChunkedUnpaddedArrayQueue;
import org.jctools.queues.unpadded.atomic.MpscChunkedUnpaddedAtomicArrayQueue;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;

Expand Down Expand Up @@ -34,6 +35,9 @@ public static Collection<Object[]> parameters()
list.add(makeParams(0, 1, 4, Ordering.FIFO, new MpscChunkedUnpaddedArrayQueue<>(2, 4)));// MPSC size 1
list.add(makeParams(0, 1, SIZE, Ordering.FIFO, new MpscChunkedUnpaddedArrayQueue<>(8, SIZE)));// MPSC size SIZE
list.add(makeParams(0, 1, 4096, Ordering.FIFO, new MpscChunkedUnpaddedArrayQueue<>(32, 4096)));// Netty recycler defaults
list.add(makeParams(0, 1, 4, Ordering.FIFO, new MpscChunkedUnpaddedAtomicArrayQueue<>(2, 4)));// MPSC size 1
list.add(makeParams(0, 1, SIZE, Ordering.FIFO, new MpscChunkedUnpaddedAtomicArrayQueue<>(8, SIZE)));// MPSC size SIZE
list.add(makeParams(0, 1, 4096, Ordering.FIFO, new MpscChunkedUnpaddedAtomicArrayQueue<>(32, 4096)));// Netty recycler defaults
return list;
}
}
Expand Up @@ -26,6 +26,7 @@ public static Collection<Object[]> parameters()
list.add(makeMpq(0, 1, 0, Ordering.FIFO));
list.add(makeAtomic(0, 1, 0, Ordering.FIFO));
list.add(makeUnpadded(0, 1, 0, Ordering.FIFO));
list.add(makeUnpaddedAtomic(0, 1, 0, Ordering.FIFO));
return list;
}
}
Expand Up @@ -4,6 +4,7 @@
import org.jctools.queues.spec.ConcurrentQueueSpec;
import org.jctools.queues.spec.Ordering;
import org.jctools.queues.unpadded.MpscUnboundedUnpaddedArrayQueue;
import org.jctools.queues.unpadded.atomic.MpscUnboundedUnpaddedAtomicArrayQueue;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;

Expand Down Expand Up @@ -31,6 +32,8 @@ public static Collection<Object[]> parameters()
list.add(makeParams(0, 1, 0, Ordering.FIFO, new MpscUnboundedAtomicArrayQueue<>(64)));// MPSC size SIZE
list.add(makeParams(0, 1, 0, Ordering.FIFO, new MpscUnboundedUnpaddedArrayQueue<>(2)));// MPSC size 1
list.add(makeParams(0, 1, 0, Ordering.FIFO, new MpscUnboundedUnpaddedArrayQueue<>(64)));// MPSC size SIZE
list.add(makeParams(0, 1, 0, Ordering.FIFO, new MpscUnboundedUnpaddedAtomicArrayQueue<>(2)));// MPSC size 1
list.add(makeParams(0, 1, 0, Ordering.FIFO, new MpscUnboundedUnpaddedAtomicArrayQueue<>(64)));// MPSC size SIZE
return list;
}
}
Expand Up @@ -30,6 +30,8 @@ public static Collection<Object[]> parameters()
list.add(makeAtomic(1, 0, SIZE, Ordering.FIFO));
list.add(makeUnpadded(1, 0, 1, Ordering.FIFO));
list.add(makeUnpadded(1, 0, SIZE, Ordering.FIFO));
list.add(makeUnpaddedAtomic(1, 0, 1, Ordering.FIFO));
list.add(makeUnpaddedAtomic(1, 0, SIZE, Ordering.FIFO));

return list;
}
Expand Down
Expand Up @@ -29,6 +29,8 @@ public static Collection<Object[]> parameters()
list.add(makeAtomic(1, 1, SIZE, Ordering.FIFO));
list.add(makeUnpadded(1, 1, 4, Ordering.FIFO));
list.add(makeUnpadded(1, 1, SIZE, Ordering.FIFO));
list.add(makeUnpaddedAtomic(1, 1, 4, Ordering.FIFO));
list.add(makeUnpaddedAtomic(1, 1, SIZE, Ordering.FIFO));
return list;
}
}
Expand Up @@ -4,6 +4,7 @@
import org.jctools.queues.spec.ConcurrentQueueSpec;
import org.jctools.queues.spec.Ordering;
import org.jctools.queues.unpadded.SpscChunkedUnpaddedArrayQueue;
import org.jctools.queues.unpadded.atomic.SpscChunkedUnpaddedAtomicArrayQueue;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;

Expand Down Expand Up @@ -31,6 +32,8 @@ public static Collection<Object[]> parameters()
list.add(makeParams(1, 1, SIZE, Ordering.FIFO, new SpscChunkedAtomicArrayQueue<>(8, SIZE)));// MPSC size SIZE
list.add(makeParams(1, 1, 16, Ordering.FIFO, new SpscChunkedUnpaddedArrayQueue<>(8, 16)));// MPSC size 1
list.add(makeParams(1, 1, SIZE, Ordering.FIFO, new SpscChunkedUnpaddedArrayQueue<>(8, SIZE)));// MPSC size SIZE
list.add(makeParams(1, 1, 16, Ordering.FIFO, new SpscChunkedUnpaddedAtomicArrayQueue<>(8, 16)));// MPSC size 1
list.add(makeParams(1, 1, SIZE, Ordering.FIFO, new SpscChunkedUnpaddedAtomicArrayQueue<>(8, SIZE)));// MPSC size SIZE
return list;
}
}
Expand Up @@ -4,6 +4,7 @@
import org.jctools.queues.spec.ConcurrentQueueSpec;
import org.jctools.queues.spec.Ordering;
import org.jctools.queues.unpadded.SpscGrowableUnpaddedArrayQueue;
import org.jctools.queues.unpadded.atomic.SpscGrowableUnpaddedAtomicArrayQueue;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
Expand Down Expand Up @@ -35,6 +36,8 @@ public static Collection<Object[]> parameters()
list.add(makeParams(1, 1, SIZE, Ordering.FIFO, new SpscGrowableAtomicArrayQueue<>(8, SIZE)));
list.add(makeParams(1, 1, 16, Ordering.FIFO, new SpscGrowableUnpaddedArrayQueue<>(8, 16)));
list.add(makeParams(1, 1, SIZE, Ordering.FIFO, new SpscGrowableUnpaddedArrayQueue<>(8, SIZE)));
list.add(makeParams(1, 1, 16, Ordering.FIFO, new SpscGrowableUnpaddedAtomicArrayQueue<>(8, 16)));
list.add(makeParams(1, 1, SIZE, Ordering.FIFO, new SpscGrowableUnpaddedAtomicArrayQueue<>(8, SIZE)));
return list;
}

Expand Down
Expand Up @@ -26,6 +26,7 @@ public static Collection<Object[]> parameters()
list.add(makeMpq(1, 1, 0, Ordering.FIFO));
list.add(makeAtomic(1, 1, 0, Ordering.FIFO));
list.add(makeUnpadded(1, 1, 0, Ordering.FIFO));
list.add(makeUnpaddedAtomic(1, 1, 0, Ordering.FIFO));
return list;
}
}
Expand Up @@ -4,6 +4,7 @@
import org.jctools.queues.spec.ConcurrentQueueSpec;
import org.jctools.queues.spec.Ordering;
import org.jctools.queues.unpadded.SpscUnboundedUnpaddedArrayQueue;
import org.jctools.queues.unpadded.atomic.SpscUnboundedUnpaddedAtomicArrayQueue;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;

Expand Down Expand Up @@ -32,6 +33,9 @@ public static Collection<Object[]> parameters()
list.add(makeParams(1, 1, 0, Ordering.FIFO, new SpscUnboundedAtomicArrayQueue<>(64)));
list.add(makeParams(1, 1, 0, Ordering.FIFO, new SpscUnboundedUnpaddedArrayQueue<>(2)));
list.add(makeParams(1, 1, 0, Ordering.FIFO, new SpscUnboundedUnpaddedArrayQueue<>(64)));
list.add(makeParams(1, 1, 0, Ordering.FIFO, new SpscUnboundedUnpaddedAtomicArrayQueue<>(2)));
list.add(makeParams(1, 1, 0, Ordering.FIFO, new SpscUnboundedUnpaddedAtomicArrayQueue<>(64)));

return list;
}
}
7 changes: 7 additions & 0 deletions jctools-core/src/test/java/org/jctools/util/TestUtil.java
Expand Up @@ -14,6 +14,7 @@

import static org.jctools.util.AtomicQueueFactory.newAtomicQueue;
import static org.jctools.util.QueueFactory.newQueue;
import static org.jctools.util.UnpaddedQueueFactory.newUnpaddedAtomicQueue;
import static org.jctools.util.UnpaddedQueueFactory.newUnpaddedQueue;

public class TestUtil {
Expand Down Expand Up @@ -81,6 +82,12 @@ public static Object[] makeUnpadded(int producers, int consumers, int capacity,
return new Object[] {spec, newUnpaddedQueue(spec)};
}

public static Object[] makeUnpaddedAtomic(int producers, int consumers, int capacity, Ordering ordering)
{
ConcurrentQueueSpec spec = makeSpec(producers, consumers, capacity, ordering);
return new Object[] {spec, newUnpaddedAtomicQueue(spec)};
}

static ConcurrentQueueSpec makeSpec(int producers, int consumers, int capacity, Ordering ordering)
{
return new ConcurrentQueueSpec(producers, consumers, capacity, ordering, Preference.NONE);
Expand Down
Expand Up @@ -15,6 +15,12 @@

import org.jctools.queues.spec.ConcurrentQueueSpec;
import org.jctools.queues.unpadded.*;
import org.jctools.queues.unpadded.atomic.MpmcUnpaddedAtomicArrayQueue;
import org.jctools.queues.unpadded.atomic.MpscLinkedUnpaddedAtomicQueue;
import org.jctools.queues.unpadded.atomic.MpscUnpaddedAtomicArrayQueue;
import org.jctools.queues.unpadded.atomic.SpmcUnpaddedAtomicArrayQueue;
import org.jctools.queues.unpadded.atomic.SpscLinkedUnpaddedAtomicQueue;
import org.jctools.queues.unpadded.atomic.SpscUnpaddedAtomicArrayQueue;

import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;
Expand All @@ -30,6 +36,49 @@
@Deprecated//(since = "4.0.0")
public class UnpaddedQueueFactory
{

public static <E> Queue<E> newUnpaddedAtomicQueue(ConcurrentQueueSpec qs)
{
if (qs.isBounded())
{
// SPSC
if (qs.isSpsc())
{
return new SpscUnpaddedAtomicArrayQueue<E>(qs.capacity);
}
// MPSC
else if (qs.isMpsc())
{
return new MpscUnpaddedAtomicArrayQueue<E>(qs.capacity);
}
// SPMC
else if (qs.isSpmc())
{
return new SpmcUnpaddedAtomicArrayQueue<E>(qs.capacity);
}
// MPMC
else
{
return new MpmcUnpaddedAtomicArrayQueue<E>(qs.capacity);
}
}
else
{
// SPSC
if (qs.isSpsc())
{
return new SpscLinkedUnpaddedAtomicQueue<E>();
}
// MPSC
else if (qs.isMpsc())
{
return new MpscLinkedUnpaddedAtomicQueue<E>();
}
}
return new ConcurrentLinkedQueue<E>();
}


public static <E> Queue<E> newUnpaddedQueue(ConcurrentQueueSpec qs)
{
if (qs.isBounded())
Expand Down

0 comments on commit 8064d6c

Please sign in to comment.