Java源码示例:net.spy.memcached.MemcachedClientIF

示例1
@Override
public void run() {
    Cache cache = getCache(CacheConstants.QUERY_CACHE);
    MemcachedClientIF cacheClient = (MemcachedClientIF) cache.getNativeCache();
    Collection<SocketAddress> liveServers = cacheClient.getAvailableServers();
    Collection<SocketAddress> deadServers = cacheClient.getUnavailableServers();
    if (liveServers.isEmpty()) {
        clusterHealth.set(false);
        logger.error("All the servers in MemcachedCluster is down, UnavailableServers: " + deadServers);
    } else {
        clusterHealth.set(true);
        if (deadServers.size() > liveServers.size()) {
            logger.warn("Half of the servers in MemcachedCluster is down, LiveServers: " + liveServers
                    + ", UnavailableServers: " + deadServers);
        }
    }
}
 
示例2
@Override
public void run() {
    Cache cache = getCache(CacheConstants.QUERY_CACHE);
    MemcachedClientIF cacheClient = (MemcachedClientIF) cache.getNativeCache();
    Collection<SocketAddress> liveServers = cacheClient.getAvailableServers();
    Collection<SocketAddress> deadServers = cacheClient.getUnavailableServers();
    if (liveServers.isEmpty()) {
        clusterHealth.set(false);
        logger.error("All the servers in MemcachedCluster is down, UnavailableServers: " + deadServers);
    } else {
        clusterHealth.set(true);
        if (deadServers.size() > liveServers.size()) {
            logger.warn("Half of the servers in MemcachedCluster is down, LiveServers: " + liveServers
                    + ", UnavailableServers: " + deadServers);
        }
    }
}
 
示例3
@Test
void get_witValueLoaderAndNonExistingValue_createsValueFromValueLoaderAndStoresItInCache()
		throws Exception {

	// Arrange
	MemcachedClientIF client = mock(MemcachedClientIF.class);
	SimpleSpringMemcached cache = new SimpleSpringMemcached(client, "test");
	cache.setExpiration(42);

	when(client.set("myKey", 42, "createdValue")).thenReturn(new AsyncResult<>(true));

	// Act
	String value = cache.get("myKey", () -> "createdValue");

	// Assert
	assertThat(value).isEqualTo("createdValue");
}
 
示例4
@Test
void get_witValueLoaderAndExistingValue_doesNotCallValueLoader() throws Exception {

	// Arrange
	MemcachedClientIF client = mock(MemcachedClientIF.class);
	SimpleSpringMemcached cache = new SimpleSpringMemcached(client, "test");

	when(client.get("myKey")).thenReturn("existingValue");

	// Act
	String value = cache.get("myKey", () -> {
		throw new UnsupportedOperationException("Should not be called");
	});

	// Assert
	assertThat(value).isEqualTo("existingValue");
}
 
示例5
public MemcachedCache(final MemcachedClientIF client, final MemcachedCacheConfig config,
        final String memcachedPrefix, int timeToLiveSeconds) {
    Preconditions.checkArgument(memcachedPrefix.length() <= MAX_PREFIX_LENGTH,
            "memcachedPrefix length [%d] exceeds maximum length [%d]", memcachedPrefix.length(), MAX_PREFIX_LENGTH);
    this.memcachedPrefix = memcachedPrefix;
    this.client = client;
    this.config = config;
    this.compressThreshold = config.getMaxObjectSize() / 2;
    this.timeToLiveSeconds = timeToLiveSeconds;
}
 
示例6
/**
 * @return Memcache client.
 * @throws Exception If start failed.
 */
private MemcachedClientIF startClient() throws Exception {
    int port = customPort != null ? customPort : IgniteConfiguration.DFLT_TCP_PORT;

    return new MemcachedClient(new BinaryConnectionFactory(),
        F.asList(new InetSocketAddress(LOC_HOST, port)));
}
 
示例7
public MemcachedCache(final MemcachedClientIF client, final MemcachedCacheConfig config,
        final String memcachedPrefix, int timeToLiveSeconds) {
    Preconditions.checkArgument(memcachedPrefix.length() <= MAX_PREFIX_LENGTH,
            "memcachedPrefix length [%d] exceeds maximum length [%d]", memcachedPrefix.length(), MAX_PREFIX_LENGTH);
    this.memcachedPrefix = memcachedPrefix;
    this.client = client;
    this.config = config;
    this.compressThreshold = config.getMaxObjectSize() / 2;
    this.timeToLiveSeconds = timeToLiveSeconds;
}
 
示例8
@Test
void getName_configuredName_configuredNameReturned() throws Exception {
	// Arrange
	MemcachedClientIF client = mock(MemcachedClientIF.class);
	SimpleSpringMemcached cache = new SimpleSpringMemcached(client, "test");

	// Act
	String cacheName = cache.getName();

	// Assert
	assertThat(cacheName).isEqualTo("test");
}
 
示例9
@Test
void simpleSpringMemcached_withoutName_reportsError() throws Exception {
	// Arrange
	MemcachedClientIF client = mock(MemcachedClientIF.class);

	// Assert
	assertThatThrownBy(() -> new SimpleSpringMemcached(client, null))
			.isInstanceOf(IllegalArgumentException.class)
			.hasMessage("cacheName is mandatory");

}
 
示例10
@Test
void getNativeCache_withConfiguredMemcachedClient_returnsConfiguredMemcachedClient()
		throws Exception {
	// Arrange
	MemcachedClientIF client = mock(MemcachedClientIF.class);
	SimpleSpringMemcached cache = new SimpleSpringMemcached(client, "test");

	// Act
	Object nativeCache = cache.getNativeCache();

	// Assert
	assertThat(nativeCache).isSameAs(client);
}
 
示例11
@Test
void get_withoutTypeParameterAndFoundInstance_returnsValueWrapperWithInstance()
		throws Exception {
	// Arrange
	MemcachedClientIF client = mock(MemcachedClientIF.class);
	SimpleSpringMemcached cache = new SimpleSpringMemcached(client, "test");

	when(client.get("test")).thenReturn("cachedValue");

	// Act
	Cache.ValueWrapper valueWrapper = cache.get("test");

	// Assert
	assertThat(valueWrapper.get()).isSameAs("cachedValue");
}
 
示例12
@Test
void get_withoutTypeParameterAndNonFoundInstance_returnsValue() throws Exception {
	// Arrange
	MemcachedClientIF client = mock(MemcachedClientIF.class);
	SimpleSpringMemcached cache = new SimpleSpringMemcached(client, "test");

	// Act
	Cache.ValueWrapper valueWrapper = cache.get("test");

	// Assert
	assertThat(valueWrapper).isNull();
}
 
示例13
@Test
void get_withTypeParameterAndFoundInstance_returnsConvertedValue() throws Exception {
	// Arrange
	MemcachedClientIF client = mock(MemcachedClientIF.class);
	SimpleSpringMemcached cache = new SimpleSpringMemcached(client, "test");

	when(client.get("test")).thenReturn("cachedValue");

	// Act
	String cachedElement = cache.get("test", String.class);

	// Assert
	assertThat(cachedElement).isEqualTo("cachedValue");
}
 
示例14
@Test
void get_withTypeParameterAndNonFoundInstance_returnsValue() throws Exception {
	// Arrange
	MemcachedClientIF client = mock(MemcachedClientIF.class);
	SimpleSpringMemcached cache = new SimpleSpringMemcached(client, "test");

	// Act
	String cachedElement = cache.get("test", String.class);

	// Assert
	assertThat(cachedElement).isNull();
}
 
示例15
@Test
void get_withTypeParameterAndNonCompatibleInstance_reportsIllegalArgumentException()
		throws Exception {

	// Arrange
	MemcachedClientIF client = mock(MemcachedClientIF.class);
	SimpleSpringMemcached cache = new SimpleSpringMemcached(client, "test");

	when(client.get("test")).thenReturn(23L);

	// Assert
	assertThatThrownBy(() -> cache.get("test", String.class))
			.isInstanceOf(IllegalArgumentException.class).hasMessageContaining(
					"java.lang.Long is not assignable to class java.lang.String");
}
 
示例16
@Test
void get_withoutTypeParameterAndNonCompatibleCacheKey_reportsIllegalArgumentException()
		throws Exception {

	// Arrange
	MemcachedClientIF client = mock(MemcachedClientIF.class);
	SimpleSpringMemcached cache = new SimpleSpringMemcached(client, "test");

	// Assert
	assertThatThrownBy(() -> cache.get(23L))
			.isInstanceOf(IllegalArgumentException.class).hasMessageContaining(
					"java.lang.Long is not assignable to class java.lang.String");
}
 
示例17
@Test
void get_withTypeParameterAndNonCompatibleCacheKey_reportsIllegalArgumentException()
		throws Exception {

	// Arrange
	MemcachedClientIF client = mock(MemcachedClientIF.class);
	SimpleSpringMemcached cache = new SimpleSpringMemcached(client, "test");

	// Assert
	assertThatThrownBy(() -> cache.get(23L, Object.class))
			.isInstanceOf(IllegalArgumentException.class).hasMessageContaining(
					"java.lang.Long is not assignable to class java.lang.String");
}
 
示例18
@Test
void get_withoutTypeParameterAndNullCacheKey_reportsIllegalArgumentException()
		throws Exception {

	// Arrange
	MemcachedClientIF client = mock(MemcachedClientIF.class);
	SimpleSpringMemcached cache = new SimpleSpringMemcached(client, "test");

	// Assert
	assertThatThrownBy(() -> cache.get(null))
			.isInstanceOf(IllegalArgumentException.class)
			.hasMessage("key parameter is mandatory");
}
 
示例19
@Test
void get_withTypeParameterAndNullCacheKey_reportsIllegalArgumentException()
		throws Exception {

	// Arrange
	MemcachedClientIF client = mock(MemcachedClientIF.class);
	SimpleSpringMemcached cache = new SimpleSpringMemcached(client, "test");

	// Assert
	assertThatThrownBy(() -> cache.get(null, Object.class))
			.isInstanceOf(IllegalArgumentException.class)
			.hasMessage("key parameter is mandatory");
}
 
示例20
@Test
void put_nullCacheKey_reportsIllegalArgumentException() throws Exception {

	// Arrange
	MemcachedClientIF client = mock(MemcachedClientIF.class);
	SimpleSpringMemcached cache = new SimpleSpringMemcached(client, "test");

	// Assert
	assertThatThrownBy(() -> cache.put(null, "test"))
			.isInstanceOf(IllegalArgumentException.class)
			.hasMessage("key parameter is mandatory");
}
 
示例21
@Test
void put_longCacheKey_reportsIllegalArgumentException() throws Exception {

	// Arrange
	MemcachedClientIF client = mock(MemcachedClientIF.class);
	SimpleSpringMemcached cache = new SimpleSpringMemcached(client, "test");

	// Assert
	assertThatThrownBy(() -> cache.put(23L, "test"))
			.isInstanceOf(IllegalArgumentException.class).hasMessageContaining(
					"java.lang.Long is not assignable to class java.lang.String");
}
 
示例22
@Test
void put_nullCacheValueWithDefaultExpiration_keyStoredInCache() throws Exception {

	// Arrange
	MemcachedClientIF client = mock(MemcachedClientIF.class);
	SimpleSpringMemcached cache = new SimpleSpringMemcached(client, "test");
	when(client.set("test", 0, null)).thenReturn(new AsyncResult<>(true));

	// Act
	cache.put("test", null);

	// Assert
	verify(client, times(1)).set("test", 0, null);
}
 
示例23
@Test
void put_withDefaultExpiration_keyStoredInCache() throws Exception {

	// Arrange
	MemcachedClientIF client = mock(MemcachedClientIF.class);
	SimpleSpringMemcached cache = new SimpleSpringMemcached(client, "test");
	when(client.set("test", 0, "cachedElement")).thenReturn(new AsyncResult<>(true));

	// Act
	cache.put("test", "cachedElement");

	// Assert
	verify(client, times(1)).set("test", 0, "cachedElement");
}
 
示例24
@Test
void put_withCustomExpiration_keyStoredInCache() throws Exception {

	// Arrange
	MemcachedClientIF client = mock(MemcachedClientIF.class);
	SimpleSpringMemcached cache = new SimpleSpringMemcached(client, "test");
	cache.setExpiration(42);
	when(client.set("test", 42, "cachedElement")).thenReturn(new AsyncResult<>(true));

	// Act
	cache.put("test", "cachedElement");

	// Assert
	verify(client, times(1)).set("test", 42, "cachedElement");
}
 
示例25
@Test
void evict_nullCacheKey_reportsIllegalArgumentException() throws Exception {

	// Arrange
	MemcachedClientIF client = mock(MemcachedClientIF.class);
	SimpleSpringMemcached cache = new SimpleSpringMemcached(client, "test");

	// Assert
	assertThatThrownBy(() -> cache.evict(null))
			.isInstanceOf(IllegalArgumentException.class)
			.hasMessage("key parameter is mandatory");
}
 
示例26
@Test
void evict_longCacheKey_reportsIllegalArgumentException() throws Exception {

	// Arrange
	MemcachedClientIF client = mock(MemcachedClientIF.class);
	SimpleSpringMemcached cache = new SimpleSpringMemcached(client, "test");

	// Assert
	assertThatThrownBy(() -> cache.evict(23L))
			.isInstanceOf(IllegalArgumentException.class).hasMessageContaining(
					"java.lang.Long is not assignable to class java.lang.String");

}
 
示例27
@Test
void evict_withCacheKey_deletedObjectInCache() throws Exception {

	// Arrange
	MemcachedClientIF client = mock(MemcachedClientIF.class);
	SimpleSpringMemcached cache = new SimpleSpringMemcached(client, "test");
	when(client.delete("test")).thenReturn(new AsyncResult<>(true));

	// Act
	cache.evict("test");

	// Assert
	verify(client, times(1)).delete("test");
}
 
示例28
@Test
void clear_withDefaultSettings_flushesCache() throws Exception {

	// Arrange
	MemcachedClientIF client = mock(MemcachedClientIF.class);
	SimpleSpringMemcached cache = new SimpleSpringMemcached(client, "test");

	// Act
	cache.clear();

	// Assert
	verify(client, times(1)).flush();
}
 
示例29
@Test
void putIfAbsent_withNewValue_shouldPutTheNewValueAndReturnNull() throws Exception {
	// Arrange
	MemcachedClientIF client = mock(MemcachedClientIF.class);
	SimpleSpringMemcached cache = new SimpleSpringMemcached(client, "test");
	when(client.add("key", 0, "value")).thenReturn(new AsyncResult<>(true));

	// Act
	Cache.ValueWrapper valueWrapper = cache.putIfAbsent("key", "value");

	// Assert
	assertThat(valueWrapper).isNull();
}
 
示例30
@Test
void putIfAbsent_withExistingValue_shouldNotPutTheValueAndReturnTheExistingOne()
		throws Exception {
	// Arrange
	MemcachedClientIF client = mock(MemcachedClientIF.class);
	SimpleSpringMemcached cache = new SimpleSpringMemcached(client, "test");
	when(client.get("key")).thenReturn("value");

	// Act
	Cache.ValueWrapper valueWrapper = cache.putIfAbsent("key", "value");

	// Assert
	assertThat(valueWrapper.get()).isEqualTo("value");
}