Search in sources :

Example 86 with Config

use of org.redisson.config.Config in project redisson by redisson.

the class RedissonScheduledExecutorServiceTest method before.

@BeforeEach
@Override
public void before() throws IOException, InterruptedException {
    super.before();
    Config config = createConfig();
    RedissonNodeConfig nodeConfig = new RedissonNodeConfig(config);
    nodeConfig.setExecutorServiceWorkers(Collections.singletonMap("test", 5));
    node = RedissonNode.create(nodeConfig);
    node.start();
}
Also used : Config(org.redisson.config.Config) RedissonNodeConfig(org.redisson.config.RedissonNodeConfig) RedissonNodeConfig(org.redisson.config.RedissonNodeConfig) BeforeEach(org.junit.jupiter.api.BeforeEach)

Example 87 with Config

use of org.redisson.config.Config in project redisson by redisson.

the class RedissonScheduledExecutorServiceTest method testLoad.

@Test
public void testLoad() throws InterruptedException {
    Config config = createConfig();
    RedissonNodeConfig nodeConfig = new RedissonNodeConfig(config);
    nodeConfig.setExecutorServiceWorkers(Collections.singletonMap("test2", Runtime.getRuntime().availableProcessors() * 2));
    RedissonNode node = RedissonNode.create(nodeConfig);
    node.start();
    List<RScheduledFuture<?>> futures = new ArrayList<>();
    for (int i = 0; i < 10000; i++) {
        RScheduledFuture<?> future = redisson.getExecutorService("test2").scheduleAsync(new RunnableTask(), 5, TimeUnit.SECONDS);
        futures.add(future);
    }
    for (RScheduledFuture<?> future : futures) {
        try {
            future.toCompletableFuture().get(5100, TimeUnit.MILLISECONDS);
        } catch (TimeoutException e) {
            Assertions.fail(e);
        } catch (ExecutionException e) {
        // skip
        }
    }
    node.shutdown();
}
Also used : Config(org.redisson.config.Config) RedissonNodeConfig(org.redisson.config.RedissonNodeConfig) RedissonNodeConfig(org.redisson.config.RedissonNodeConfig) ArrayList(java.util.ArrayList) RedissonNode(org.redisson.RedissonNode) BaseTest(org.redisson.BaseTest) Test(org.junit.jupiter.api.Test)

Example 88 with Config

use of org.redisson.config.Config in project redisson by redisson.

the class RedissonExecutorServiceTest method testNodeFailover.

@Test
public void testNodeFailover() throws Exception {
    AtomicInteger counter = new AtomicInteger();
    new MockUp<TasksRunnerService>() {

        @Mock
        void finish(Invocation invocation, String requestId, boolean removeTask) {
            if (counter.incrementAndGet() > 1) {
                invocation.proceed();
            } else {
                try {
                    Thread.sleep(5000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    };
    Config config = createConfig();
    RedissonNodeConfig nodeConfig = new RedissonNodeConfig(config);
    nodeConfig.setExecutorServiceWorkers(Collections.singletonMap("test2", 1));
    node.shutdown();
    node = RedissonNode.create(nodeConfig);
    node.start();
    RExecutorService executor = redisson.getExecutorService("test2", ExecutorOptions.defaults().taskRetryInterval(10, TimeUnit.SECONDS));
    RExecutorFuture<?> f = executor.submit(new IncrementRunnableTask("counter"));
    assertThat(executor.getTaskCount()).isEqualTo(1);
    Thread.sleep(1000);
    assertThat(redisson.getAtomicLong("counter").get()).isEqualTo(1);
    Thread.sleep(1000);
    System.out.println("shutdown");
    node.shutdown();
    assertThat(executor.getTaskCount()).isEqualTo(1);
    node = RedissonNode.create(nodeConfig);
    node.start();
    assertThat(executor.getTaskCount()).isEqualTo(1);
    Thread.sleep(8500);
    assertThat(executor.getTaskCount()).isEqualTo(0);
    assertThat(redisson.getAtomicLong("counter").get()).isEqualTo(2);
    Thread.sleep(16000);
    assertThat(executor.getTaskCount()).isEqualTo(0);
    assertThat(redisson.getAtomicLong("counter").get()).isEqualTo(2);
    redisson.getKeys().delete("counter");
    f.get();
    assertThat(redisson.getKeys().count()).isEqualTo(1);
}
Also used : Invocation(mockit.Invocation) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Config(org.redisson.config.Config) RedissonNodeConfig(org.redisson.config.RedissonNodeConfig) RedissonNodeConfig(org.redisson.config.RedissonNodeConfig) MockUp(mockit.MockUp) Test(org.junit.jupiter.api.Test)

Example 89 with Config

use of org.redisson.config.Config in project redisson by redisson.

the class RedissonExecutorServiceTest method testTaskFinishing.

// @Test
public void testTaskFinishing() throws Exception {
    AtomicInteger counter = new AtomicInteger();
    new MockUp<TasksRunnerService>() {

        @Mock
        private void finish(Invocation invocation, String requestId) {
            if (counter.incrementAndGet() > 1) {
                invocation.proceed();
            }
        }
    };
    Config config = createConfig();
    RedissonNodeConfig nodeConfig = new RedissonNodeConfig(config);
    nodeConfig.setExecutorServiceWorkers(Collections.singletonMap("test2", 1));
    node.shutdown();
    node = RedissonNode.create(nodeConfig);
    node.start();
    RExecutorService executor = redisson.getExecutorService("test2");
    RExecutorFuture<?> f = executor.submit(new FailoverTask("finished"));
    Thread.sleep(2000);
    node.shutdown();
    f.get();
    assertThat(redisson.<Boolean>getBucket("finished").get()).isTrue();
}
Also used : Invocation(mockit.Invocation) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Config(org.redisson.config.Config) RedissonNodeConfig(org.redisson.config.RedissonNodeConfig) RedissonNodeConfig(org.redisson.config.RedissonNodeConfig) MockUp(mockit.MockUp)

Example 90 with Config

use of org.redisson.config.Config in project redisson by redisson.

the class RedissonClientProducer method create.

@Produces
@Singleton
@DefaultBean
public RedissonClient create() throws IOException {
    InputStream configStream;
    Optional<String> configFile = ConfigProvider.getConfig().getOptionalValue("quarkus.redisson.file", String.class);
    if (configFile.isPresent()) {
        configStream = getClass().getResourceAsStream(configFile.get());
    } else {
        configStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("redisson.yaml");
    }
    String config;
    if (configStream != null) {
        byte[] array = new byte[configStream.available()];
        configStream.read(array);
        config = new String(array, StandardCharsets.UTF_8);
    } else {
        String yaml = PropertiesConvertor.toYaml("quarkus.redisson.", ConfigProvider.getConfig().getPropertyNames(), prop -> {
            return ConfigProvider.getConfig().getValue(prop, String.class);
        });
        config = yaml;
    }
    ConfigSupport support = new ConfigSupport() {

        {
            yamlMapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);
        }
    };
    Config c = support.fromYAML(config, Config.class);
    redisson = Redisson.create(c);
    return redisson;
}
Also used : ConfigSupport(org.redisson.config.ConfigSupport) InputStream(java.io.InputStream) Config(org.redisson.config.Config) DefaultBean(io.quarkus.arc.DefaultBean) Produces(javax.enterprise.inject.Produces) Singleton(javax.inject.Singleton)

Aggregations

Config (org.redisson.config.Config)182 Test (org.junit.jupiter.api.Test)109 RedissonClient (org.redisson.api.RedissonClient)69 RedisProcess (org.redisson.RedisRunner.RedisProcess)52 RandomLoadBalancer (org.redisson.connection.balancer.RandomLoadBalancer)33 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)30 ClusterProcesses (org.redisson.ClusterRunner.ClusterProcesses)23 IOException (java.io.IOException)22 AtomicBoolean (java.util.concurrent.atomic.AtomicBoolean)17 RedisRunner (org.redisson.RedisRunner)17 ParameterizedTest (org.junit.jupiter.params.ParameterizedTest)16 MethodSource (org.junit.jupiter.params.provider.MethodSource)15 BaseTest (org.redisson.BaseTest)15 RandomString (net.bytebuddy.utility.RandomString)14 URL (java.net.URL)12 RedisClientConfig (org.redisson.client.RedisClientConfig)12 Test (org.junit.Test)11 RLock (org.redisson.api.RLock)10 RedissonNodeConfig (org.redisson.config.RedissonNodeConfig)10 CountDownLatch (java.util.concurrent.CountDownLatch)9