use of javax.cache.spi.CachingProvider in project hazelcast by hazelcast.
the class CacheThroughHazelcastInstanceTest method whenThereIsCacheConfigAndCreatedByCacheManager_thenReturnsSameCache.
private void whenThereIsCacheConfigAndCreatedByCacheManager_thenReturnsSameCache(boolean getCache) {
HazelcastInstance instance = createInstance();
CachingProvider cachingProvider = createCachingProvider(instance);
CacheManager cacheManager = cachingProvider.getCacheManager();
Cache cache1 = cacheManager.createCache(CACHE_NAME, createCacheConfig(CACHE_NAME));
assertNotNull(cache1);
Cache cache2 = retrieveCache(instance, getCache);
assertNotNull(cache2);
// verify that they are same cache instance
assertTrue(cache1 == cache2);
}
use of javax.cache.spi.CachingProvider in project hazelcast by hazelcast.
the class CacheStatsTest method doTestForOwnedEntryCount.
private void doTestForOwnedEntryCount(boolean useBackups, boolean triggerMigration) {
final String cacheName = randomName();
ICache<Integer, String> cache;
CacheStatistics[] allStats;
HazelcastInstance instance2 = null;
if (useBackups) {
// Create the second instance to store data as backup.
instance2 = getHazelcastInstance();
CachingProvider cp = getCachingProvider(instance2);
CacheManager cm = cp.getCacheManager();
cache = createCache(cacheName);
ICache<Integer, String> c = cm.getCache(cacheName).unwrap(ICache.class);
allStats = new CacheStatistics[] { cache.getLocalCacheStatistics(), c.getLocalCacheStatistics() };
} else {
cache = createCache(cacheName);
allStats = new CacheStatistics[] { cache.getLocalCacheStatistics() };
}
final int ENTRY_COUNT = 100;
for (int i = 0; i < ENTRY_COUNT; i++) {
cache.put(i, "Value-" + i);
}
assertOwnedEntryCount(ENTRY_COUNT, allStats);
if (triggerMigration && instance2 != null) {
// Shutdown the second instance to trigger migration so first instance will be owner of all partitions.
instance2.shutdown();
allStats = new CacheStatistics[] { cache.getLocalCacheStatistics() };
assertOwnedEntryCount(ENTRY_COUNT, allStats);
}
for (int i = 0; i < 10; i++) {
cache.remove(i);
}
assertOwnedEntryCount(ENTRY_COUNT - 10, allStats);
for (int i = 10; i < ENTRY_COUNT; i++) {
cache.remove(i);
}
assertOwnedEntryCount(0, allStats);
for (int i = 0; i < ENTRY_COUNT; i++) {
cache.put(i, "Value-" + i);
}
assertOwnedEntryCount(ENTRY_COUNT, allStats);
if (triggerMigration) {
// Create the second instance to trigger migration
// so the second instance will be owner of some partitions
// and the first instance will lose ownership of some instances.
instance2 = getHazelcastInstance();
CachingProvider cp = getCachingProvider(instance2);
CacheManager cm = cp.getCacheManager();
ICache<Integer, String> c = cm.getCache(cacheName).unwrap(ICache.class);
allStats = new CacheStatistics[] { cache.getLocalCacheStatistics(), c.getLocalCacheStatistics() };
assertOwnedEntryCount(ENTRY_COUNT, allStats);
}
cache.clear();
assertOwnedEntryCount(0, allStats);
for (int i = 0; i < ENTRY_COUNT; i++) {
cache.put(i, "Value-" + i);
}
assertOwnedEntryCount(ENTRY_COUNT, allStats);
cache.destroy();
assertOwnedEntryCount(0, allStats);
}
use of javax.cache.spi.CachingProvider in project hazelcast by hazelcast.
the class ClientCacheMetaDataFetcherTest method getRepairingTask.
private RepairingTask getRepairingTask(String cacheName, int partition, long givenSequence, UUID givenUuid) {
HazelcastInstance member = factory.newHazelcastInstance();
distortRandomPartitionSequence(getPrefixedName(cacheName), partition, givenSequence, member);
distortRandomPartitionUuid(partition, givenUuid, member);
ClientConfig clientConfig = new ClientConfig().addNearCacheConfig(new NearCacheConfig(cacheName));
HazelcastClientProxy client = (HazelcastClientProxy) factory.newHazelcastClient(clientConfig);
CachingProvider clientCachingProvider = HazelcastClientCachingProvider.createCachingProvider(client);
Cache<Integer, Integer> clientCache = clientCachingProvider.getCacheManager().createCache(cacheName, newCacheConfig());
ClientContext clientContext = ((ClientCacheProxy) clientCache).getClientContext();
return clientContext.getRepairingTask(SERVICE_NAME);
}
use of javax.cache.spi.CachingProvider in project hazelcast by hazelcast.
the class ClientCacheNearCacheConfigTest method native_backed_nearCache_throws_illegalArgumentException_whenNoNativeConfigAvailable.
@Test(expected = IllegalArgumentException.class)
public void native_backed_nearCache_throws_illegalArgumentException_whenNoNativeConfigAvailable() throws Exception {
String xml = "<hazelcast-client xmlns=\"http://www.hazelcast.com/schema/client-config\">" + "<near-cache name=\"test\">" + "<in-memory-format>NATIVE</in-memory-format>" + "</near-cache></hazelcast-client>";
ClientConfig clientConfig = buildConfig(xml);
HazelcastClientProxy client = (HazelcastClientProxy) factory.newHazelcastClient(clientConfig);
CachingProvider clientCachingProvider = HazelcastClientCachingProvider.createCachingProvider(client);
CacheManager cacheManager = clientCachingProvider.getCacheManager();
cacheManager.createCache("test", newCacheConfig());
}
use of javax.cache.spi.CachingProvider in project hazelcast by hazelcast.
the class InvalidationMemberAddRemoveTest method ensure_nearCachedClient_and_member_data_sync_eventually.
@Test
public void ensure_nearCachedClient_and_member_data_sync_eventually() throws Exception {
final AtomicBoolean stopTest = new AtomicBoolean();
final Config config = createConfig();
hazelcastFactory.newHazelcastInstance(config);
CachingProvider provider = HazelcastServerCachingProvider.createCachingProvider(serverInstance);
final CacheManager serverCacheManager = provider.getCacheManager();
// populated from member.
final Cache<Integer, Integer> memberCache = serverCacheManager.createCache(DEFAULT_CACHE_NAME, createCacheConfig(BINARY));
for (int i = 0; i < KEY_COUNT; i++) {
memberCache.put(i, i);
}
ClientConfig clientConfig = createClientConfig();
clientConfig.addNearCacheConfig(createNearCacheConfig(BINARY));
HazelcastClientProxy client = (HazelcastClientProxy) hazelcastFactory.newHazelcastClient(clientConfig);
CachingProvider clientCachingProvider = HazelcastClientCachingProvider.createCachingProvider(client);
final Cache<Integer, Integer> clientCache = clientCachingProvider.getCacheManager().createCache(DEFAULT_CACHE_NAME, createCacheConfig(BINARY));
ArrayList<Thread> threads = new ArrayList<Thread>();
// continuously adds and removes member
Thread shadowMember = new Thread(new Runnable() {
@Override
public void run() {
while (!stopTest.get()) {
HazelcastInstance member = hazelcastFactory.newHazelcastInstance(config);
sleepSeconds(5);
member.getLifecycleService().terminate();
}
}
});
threads.add(shadowMember);
for (int i = 0; i < NEAR_CACHE_POPULATOR_THREAD_COUNT; i++) {
// populates client near-cache
Thread populateClientNearCache = new Thread(new Runnable() {
public void run() {
while (!stopTest.get()) {
for (int i = 0; i < KEY_COUNT; i++) {
clientCache.get(i);
}
}
}
});
threads.add(populateClientNearCache);
}
// updates data from member.
Thread putFromMember = new Thread(new Runnable() {
public void run() {
while (!stopTest.get()) {
int key = getInt(KEY_COUNT);
int value = getInt(Integer.MAX_VALUE);
memberCache.put(key, value);
sleepAtLeastMillis(2);
}
}
});
threads.add(putFromMember);
Thread clearFromMember = new Thread(new Runnable() {
public void run() {
while (!stopTest.get()) {
memberCache.clear();
sleepSeconds(3);
}
}
});
threads.add(clearFromMember);
// start threads
for (Thread thread : threads) {
thread.start();
}
// stress system some seconds
sleepSeconds(TEST_RUN_SECONDS);
//stop threads
stopTest.set(true);
for (Thread thread : threads) {
thread.join();
}
assertTrueEventually(new AssertTask() {
@Override
public void run() throws Exception {
for (int i = 0; i < KEY_COUNT; i++) {
Integer valueSeenFromMember = memberCache.get(i);
Integer valueSeenFromClient = clientCache.get(i);
String msg = createFailureMessage(i);
assertEquals(msg, valueSeenFromMember, valueSeenFromClient);
}
}
private String createFailureMessage(int i) {
InternalPartitionService partitionService = getPartitionService(serverInstance);
Data keyData = getSerializationService(serverInstance).toData(i);
int partitionId = partitionService.getPartitionId(keyData);
AbstractNearCacheRecordStore nearCacheRecordStore = getAbstractNearCacheRecordStore();
NearCacheRecord record = nearCacheRecordStore.getRecord(keyData);
long recordSequence = record == null ? NO_SEQUENCE : record.getInvalidationSequence();
MetaDataGenerator metaDataGenerator = getMetaDataGenerator();
long memberSequence = metaDataGenerator.currentSequence("/hz/" + DEFAULT_CACHE_NAME, partitionId);
MetaDataContainer metaDataContainer = nearCacheRecordStore.getStaleReadDetector().getMetaDataContainer(keyData);
return String.format("partition=%d, onRecordSequence=%d, latestSequence=%d, staleSequence=%d, memberSequence=%d", partitionService.getPartitionId(keyData), recordSequence, metaDataContainer.getSequence(), metaDataContainer.getStaleSequence(), memberSequence);
}
private MetaDataGenerator getMetaDataGenerator() {
CacheEventHandler cacheEventHandler = ((CacheService) ((CacheProxy) memberCache).getService()).getCacheEventHandler();
return cacheEventHandler.getMetaDataGenerator();
}
private AbstractNearCacheRecordStore getAbstractNearCacheRecordStore() {
DefaultNearCache defaultNearCache = (DefaultNearCache) ((ClientCacheProxy) clientCache).getNearCache().unwrap(DefaultNearCache.class);
return (AbstractNearCacheRecordStore) defaultNearCache.getNearCacheRecordStore();
}
});
}
Aggregations