private List<String> isNamesAvailable(Collection<String> reducedNames) { if (reducedNames.size() == 0) return new ArrayList<>(); List<String> unavailableNamesCache = nameCache.lockNameList(reducedNames); if (unavailableNamesCache.size() > 0) { return unavailableNamesCache; } List<String> unavailableNamesLedger = ledger.isAllNameRecordsAvailable(reducedNames); if (unavailableNamesLedger.size() > 0) { nameCache.unlockNameList(reducedNames); return unavailableNamesLedger; } return new ArrayList<>(); }
@Test public void busyTest() throws Exception { NameCache nameCache = new NameCache(Duration.ofMillis(10)); String testName = "testName"; assertEquals(true, nameCache.lockNameList(Arrays.asList(testName)).isEmpty()); assertEquals(false, nameCache.lockNameList(Arrays.asList(testName)).isEmpty()); Thread.sleep(15); nameCache.cleanUp(); assertEquals(true, nameCache.lockNameList(Arrays.asList(testName)).isEmpty()); nameCache.unlockNameList(Arrays.asList(testName)); assertEquals(true, nameCache.lockNameList(Arrays.asList(testName)).isEmpty()); }
valuesEx.addAll(values2); assertTrue(nameCache.lockNameList(values1).isEmpty()); assertFalse(nameCache.lockNameList(valuesEx).isEmpty()); assertTrue(nameCache.lockNameList(values2).isEmpty()); nameCache.unlockAddressList(values1); assertFalse(nameCache.lockNameList(valuesEx).isEmpty()); assertFalse(nameCache.lockOriginList(valuesExhashes).isEmpty()); assertFalse(nameCache.lockAddressList(valuesEx).isEmpty()); nameCache.unlockAddressList(values2); assertTrue(nameCache.lockNameList(valuesEx).isEmpty()); assertTrue(nameCache.lockOriginList(valuesExhashes).isEmpty()); assertTrue(nameCache.lockAddressList(valuesEx).isEmpty()); assertFalse(nameCache.lockNameList(valuesEx).isEmpty()); assertFalse(nameCache.lockOriginList(valuesExhashes).isEmpty()); assertFalse(nameCache.lockAddressList(valuesEx).isEmpty()); nameCache.cleanUp(); assertTrue(nameCache.lockNameList(valuesEx).isEmpty()); assertTrue(nameCache.lockOriginList(valuesExhashes).isEmpty()); assertTrue(nameCache.lockAddressList(valuesEx).isEmpty());