Search in sources :

Example 1 with AssertNotPresentEntryProcessor

use of org.jsr107.tck.processor.AssertNotPresentEntryProcessor in project cache2k by cache2k.

the class CacheExpiryTest method invokeMultiSetValueShouldCallGetExpiry.

@Test
public void invokeMultiSetValueShouldCallGetExpiry() {
    CountingExpiryPolicy expiryPolicy = new CountingExpiryPolicy();
    expiryPolicyServer.setExpiryPolicy(expiryPolicy);
    MutableConfiguration<Integer, Integer> config = new MutableConfiguration<>();
    config.setExpiryPolicyFactory(FactoryBuilder.factoryOf(expiryPolicyClient));
    Cache<Integer, Integer> cache = getCacheManager().createCache(getTestCacheName(), config);
    final Integer key = 123;
    final Integer setValue = 456;
    final Integer modifySetValue = 789;
    // verify create
    EntryProcessor[] processors = new EntryProcessor[] { new AssertNotPresentEntryProcessor(null), new SetEntryProcessor<Integer, Integer>(111), new SetEntryProcessor<Integer, Integer>(setValue), new GetEntryProcessor<Integer, Integer>() };
    Object[] result = (Object[]) cache.invoke(key, new CombineEntryProcessor(processors));
    assertEquals(result[1], 111);
    assertEquals(result[2], setValue);
    assertEquals(result[3], setValue);
    // expiry called should be for create, not for the get or modify.
    // Operations get combined in entry processor and only net result should be expiryPolicy method called.
    assertThat(expiryPolicy.getCreationCount(), greaterThanOrEqualTo(1));
    assertThat(expiryPolicy.getAccessCount(), greaterThanOrEqualTo(0));
    assertThat(expiryPolicy.getUpdatedCount(), greaterThanOrEqualTo(0));
}
Also used : AssertNotPresentEntryProcessor(org.jsr107.tck.processor.AssertNotPresentEntryProcessor) CombineEntryProcessor(org.jsr107.tck.processor.CombineEntryProcessor) MutableConfiguration(javax.cache.configuration.MutableConfiguration) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) GetEntryProcessor(org.jsr107.tck.processor.GetEntryProcessor) SetEntryProcessor(org.jsr107.tck.processor.SetEntryProcessor) EntryProcessor(javax.cache.processor.EntryProcessor) CombineEntryProcessor(org.jsr107.tck.processor.CombineEntryProcessor) GetEntryProcessor(org.jsr107.tck.processor.GetEntryProcessor) AssertNotPresentEntryProcessor(org.jsr107.tck.processor.AssertNotPresentEntryProcessor) SetEntryProcessor(org.jsr107.tck.processor.SetEntryProcessor) Test(org.junit.Test)

Example 2 with AssertNotPresentEntryProcessor

use of org.jsr107.tck.processor.AssertNotPresentEntryProcessor in project cache2k by cache2k.

the class CacheExpiryTest method invokeSetValueShouldCallGetExpiry.

// skipping test for removeAll and removeAll specified keys for now. negative test of remove seems enough.
@Test
public void invokeSetValueShouldCallGetExpiry() {
    CountingExpiryPolicy expiryPolicy = new CountingExpiryPolicy();
    expiryPolicyServer.setExpiryPolicy(expiryPolicy);
    MutableConfiguration<Integer, Integer> config = new MutableConfiguration<>();
    config.setExpiryPolicyFactory(FactoryBuilder.factoryOf(expiryPolicyClient));
    Cache<Integer, Integer> cache = getCacheManager().createCache(getTestCacheName(), config);
    final Integer key = 123;
    final Integer setValue = 456;
    final Integer modifySetValue = 789;
    // verify create
    EntryProcessor[] processors = new EntryProcessor[] { new AssertNotPresentEntryProcessor(null), new SetEntryProcessor<Integer, Integer>(setValue), new GetEntryProcessor<Integer, Integer>() };
    Object[] result = (Object[]) cache.invoke(key, new CombineEntryProcessor(processors));
    assertEquals(result[1], setValue);
    assertEquals(result[2], setValue);
    // expiry called should be for create, not for the get or modify.
    // Operations get combined in entry processor and only net result should be expiryPolicy method called.
    assertThat(expiryPolicy.getCreationCount(), greaterThanOrEqualTo(1));
    assertThat(expiryPolicy.getAccessCount(), is(0));
    assertThat(expiryPolicy.getUpdatedCount(), is(0));
    expiryPolicy.resetCount();
    // verify modify
    Integer resultValue = cache.invoke(key, new SetEntryProcessor<Integer, Integer>(modifySetValue));
    assertEquals(modifySetValue, resultValue);
    assertThat(expiryPolicy.getCreationCount(), is(0));
    assertThat(expiryPolicy.getAccessCount(), is(0));
    assertThat(expiryPolicy.getUpdatedCount(), greaterThanOrEqualTo(1));
}
Also used : AssertNotPresentEntryProcessor(org.jsr107.tck.processor.AssertNotPresentEntryProcessor) CombineEntryProcessor(org.jsr107.tck.processor.CombineEntryProcessor) MutableConfiguration(javax.cache.configuration.MutableConfiguration) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) GetEntryProcessor(org.jsr107.tck.processor.GetEntryProcessor) SetEntryProcessor(org.jsr107.tck.processor.SetEntryProcessor) EntryProcessor(javax.cache.processor.EntryProcessor) CombineEntryProcessor(org.jsr107.tck.processor.CombineEntryProcessor) GetEntryProcessor(org.jsr107.tck.processor.GetEntryProcessor) AssertNotPresentEntryProcessor(org.jsr107.tck.processor.AssertNotPresentEntryProcessor) SetEntryProcessor(org.jsr107.tck.processor.SetEntryProcessor) Test(org.junit.Test)

Aggregations

AtomicInteger (java.util.concurrent.atomic.AtomicInteger)2 MutableConfiguration (javax.cache.configuration.MutableConfiguration)2 EntryProcessor (javax.cache.processor.EntryProcessor)2 AssertNotPresentEntryProcessor (org.jsr107.tck.processor.AssertNotPresentEntryProcessor)2 CombineEntryProcessor (org.jsr107.tck.processor.CombineEntryProcessor)2 GetEntryProcessor (org.jsr107.tck.processor.GetEntryProcessor)2 SetEntryProcessor (org.jsr107.tck.processor.SetEntryProcessor)2 Test (org.junit.Test)2