package com.nurkiewicz.reactor; import com.google.common.util.concurrent.ThreadFactoryBuilder; import org.junit.Ignore; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import reactor.core.publisher.Mono; import reactor.core.scheduler.Scheduler; import reactor.core.scheduler.Schedulers; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.atomic.AtomicReference; import static org.assertj.core.api.Assertions.assertThat; @Ignore public class R051_WhatIsAscheduler { private static final Logger log = LoggerFactory.getLogger(R051_WhatIsAscheduler.class); /** * TODO Implement {@link #customScheduler()} */ @Test public void createCustomScheduler() throws Exception { //given AtomicReference<String> seenThread = new AtomicReference<>(); final Mono<Void> mono = Mono.fromRunnable(() -> { seenThread.set(Thread.currentThread().getName()); }); //when mono .subscribeOn(customScheduler()) .block(); //then assertThat(seenThread.get()).matches("Custom-\\d+"); } /** * TODO Implement custom bound scheduler. * It must contain 10 threads named "Custom-" and a sequence number. * @see Executors#newFixedThreadPool(int) * @see ExecutorService * @see ThreadFactoryBuilder * @see Schedulers#fromExecutorService(ExecutorService) */ private Scheduler customScheduler() { return Schedulers.elastic(); } }