@Test public void testAll() { List<Message> messages = new LinkedList<>(); Message msg = new Message("1", "Hello World"); msg.setPriority(1); messages.add(msg); /** * Because my custom sharding strategy that depends on message id, and calculated hash (just Java's hashCode), * message will always ends on the same shard, so message never duplicates, in test case, I expect that * message will be received only once. */ shard1DynoQueue.push(messages); shard1DynoQueue.push(messages); shard1DynoQueue.push(messages); List<Message> popedFromShard1 = shard1DynoQueue.pop(1, 1, TimeUnit.SECONDS); List<Message> popedFromShard2 = shard2DynoQueue.pop(1, 1, TimeUnit.SECONDS); List<Message> popedFromShard3 = shard3DynoQueue.pop(1, 1, TimeUnit.SECONDS); assertEquals(0, popedFromShard1.size()); assertEquals(1, popedFromShard2.size()); assertEquals(0, popedFromShard3.size()); assertEquals(msg, popedFromShard2.get(0)); } }
@Test public void testAll() { List<Message> messages = new LinkedList<>(); Message msg = new Message("1", "Hello World"); msg.setPriority(1); messages.add(msg); /** * Because of sharding strategy works in round-robin manner, single client, for shard1, should * push message(even the same) to three different shards. */ shard1DynoQueue.push(messages); shard1DynoQueue.push(messages); shard1DynoQueue.push(messages); List<Message> popedFromShard1 = shard1DynoQueue.pop(1, 1, TimeUnit.SECONDS); List<Message> popedFromShard2 = shard2DynoQueue.pop(1, 1, TimeUnit.SECONDS); List<Message> popedFromShard3 = shard3DynoQueue.pop(1, 1, TimeUnit.SECONDS); assertEquals(1, popedFromShard1.size()); assertEquals(1, popedFromShard2.size()); assertEquals(1, popedFromShard3.size()); assertEquals(msg, popedFromShard1.get(0)); assertEquals(msg, popedFromShard2.get(0)); assertEquals(msg, popedFromShard3.get(0)); }
@Test public void testClearQueues() { rdq.clear(); int count = 10; List<Message> messages = new LinkedList<>(); for (int i = 0; i < count; i++) { Message msg = new Message("x" + i, "Hello World-" + i); msg.setPriority(count - i); messages.add(msg); } rdq.push(messages); assertEquals(count, rdq.size()); rdq.clear(); assertEquals(0, rdq.size()); }
messages.add(msg); rdq.push(messages);