private void createImplementation(ThreadParams threads) { if ("ConcurrentHashSet".equalsIgnoreCase(implementation)) { set = Collections.newSetFromMap(new ConcurrentHashMap<String, Boolean>()); } else if ("NonBlockingHashSet".equalsIgnoreCase(implementation)) { set = new NonBlockingHashSet<String>(); } else if ("SingleWriterHashSet".equalsIgnoreCase(implementation)) { if (threads.getGroupIndex() == 0 && threads.getSubgroupIndex() == 0 && threads.getSubgroupThreadCount() != 1) { throw new IllegalArgumentException("Trying to benchmark SingleWriterHashSet with multiple writer threads"); } set = new SingleWriterHashSet<String>(16); } else { throw new IllegalArgumentException("Unsupported map: " + implementation); } }
@Test public void testIteration() { assertTrue(_nbhs.isEmpty()); assertTrue(_nbhs.add("k1")); assertTrue(_nbhs.add("k2")); StringBuilder buf = new StringBuilder(); for (String val : _nbhs) { buf.append(val); } assertThat("found all vals", buf.toString(), anyOf(is("k1k2"), is("k2k1"))); assertThat("toString works", _nbhs.toString(), anyOf(is("[k1, k2]"), is("[k2, k1]"))); _nbhs.clear(); }
@Test public void testBasic() { assertTrue(_nbhs.isEmpty()); assertTrue(_nbhs.add("k1")); checkSizes(1); assertTrue(_nbhs.add("k2")); checkSizes(2); assertFalse(_nbhs.add("k1")); assertFalse(_nbhs.add("k2")); checkSizes(2); assertThat(_nbhs.remove("k1"), is(true)); checkSizes(1); assertThat(_nbhs.remove("k1"), is(false)); assertTrue(_nbhs.remove("k2")); checkSizes(0); assertFalse(_nbhs.remove("k2")); assertFalse(_nbhs.remove("k3")); assertTrue(_nbhs.isEmpty()); }
@BeforeClass public static void setUp() { _nbhs = new NonBlockingHashSet<String>(); }
break; case 2: AS = new NonBlockingHashSet<Integer>(); break; case 3: