com.gemstone.gemfire.internal.offheap.ConcurrentBagJUnitTest Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of gemfire-junit Show documentation
Show all versions of gemfire-junit Show documentation
SnappyData store based off Pivotal GemFireXD
/*
* Copyright (c) 2010-2015 Pivotal Software, Inc. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you
* may not use this file except in compliance with the License. You
* may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
* implied. See the License for the specific language governing
* permissions and limitations under the License. See accompanying
* LICENSE file.
*/
package com.gemstone.gemfire.internal.offheap;
import java.util.Iterator;
import java.util.NoSuchElementException;
import com.gemstone.gemfire.internal.offheap.SimpleMemoryAllocatorImpl.ConcurrentBag.Node;
import junit.framework.TestCase;
public class ConcurrentBagJUnitTest extends TestCase {
public static class IntNode implements SimpleMemoryAllocatorImpl.ConcurrentBag.Node {
private final int data;
public IntNode(int i) {
this.data = i;
}
public Integer getData() {
return this.data;
}
private Node next;
@Override
public void setNextCBNode(Node next) {
this.next = next;
}
@Override
public Node getNextCBNode() {
return this.next;
}
}
public void testBasicFreeList() {
SimpleMemoryAllocatorImpl.ConcurrentBag l = new SimpleMemoryAllocatorImpl.ConcurrentBag(5000);
assertEquals(false, l.iterator().hasNext());
try {
l.iterator().next();
fail("expected NoSuchElementException");
} catch (NoSuchElementException expected) {
}
assertEquals(null, l.poll());
l.offer(new IntNode(1));
assertEquals(true, l.iterator().hasNext());
assertEquals(Integer.valueOf(1), l.iterator().next().getData());
assertEquals(Integer.valueOf(1), l.poll().getData());
assertEquals(false, l.iterator().hasNext());
assertEquals(null, l.poll());
try {
l.iterator().remove();
fail("expected UnsupportedOperationException");
} catch (UnsupportedOperationException expected) {
}
// {
// l.offer(new IntNode(1));
// l.offer(new IntNode(2));
// Iterator it = l.iterator();
// assertEquals(true, it.hasNext());
// assertEquals(Integer.valueOf(1), it.next().getData());
// assertEquals(true, it.hasNext());
// assertEquals(Integer.valueOf(2), it.next().getData());
// assertEquals(false, it.hasNext());
//
// it = l.iterator();
// try {
// it.remove();
// fail("expected IllegalStateException");
// } catch (IllegalStateException expected) {
// }
// it.next();
// it.remove();
// try {
// it.remove();
// fail("expected IllegalStateException");
// } catch (IllegalStateException expected) {
// }
// assertEquals(Integer.valueOf(2), it.next());
// assertEquals(false, it.hasNext());
//
// assertEquals(Integer.valueOf(2), l.poll());
// assertEquals(null, l.poll());
// }
for (int i=1; i <= 3999; i++) {
l.offer(new IntNode(i));
}
{
Iterator it = l.iterator();
// for (int i=1; i <= 3999; i++) {
for (int i=3999; i >= 1; i--) {
assertEquals(true, it.hasNext());
assertEquals(Integer.valueOf(i), it.next().getData());
}
assertEquals(false, it.hasNext());
}
// for (int i=1; i <= 3999; i++) {
for (int i=3999; i >= 1; i--) {
assertEquals(Integer.valueOf(i), l.poll().getData());
}
assertEquals(null, l.poll());
}
}