JAVA-1522 Split core-java-modules/core-java module

This commit is contained in:
mikr
2020-06-07 16:52:25 +02:00
parent 4cb07819f3
commit aece4e5216
28 changed files with 10 additions and 86 deletions

View File

@@ -0,0 +1,19 @@
package com.baeldung.timer;
import java.util.List;
import java.util.TimerTask;
public class DatabaseMigrationTask extends TimerTask {
private List<String> oldDatabase;
private List<String> newDatabase;
public DatabaseMigrationTask(List<String> oldDatabase, List<String> newDatabase) {
this.oldDatabase = oldDatabase;
this.newDatabase = newDatabase;
}
@Override
public void run() {
newDatabase.addAll(oldDatabase);
}
}

View File

@@ -0,0 +1,14 @@
package com.baeldung.timer;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.TimerTask;
public class NewsletterTask extends TimerTask {
@Override
public void run() {
System.out.println("Email sent at: "
+ LocalDateTime.ofInstant(Instant.ofEpochMilli(scheduledExecutionTime()), ZoneId.systemDefault()));
}
}

View File

@@ -1,4 +1,4 @@
package com.baeldung.java.clock;
package com.baeldung.clock;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;

View File

@@ -0,0 +1,44 @@
package com.baeldung.timer;
import org.junit.jupiter.api.Test;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.*;
import static org.assertj.core.api.Assertions.assertThat;
class DatabaseMigrationTaskUnitTest {
@Test
void givenDatabaseMigrationTask_whenTimerScheduledForNowPlusTwoSeconds_thenDataMigratedAfterTwoSeconds() throws Exception {
List<String> oldDatabase = Arrays.asList("Harrison Ford", "Carrie Fisher", "Mark Hamill");
List<String> newDatabase = new ArrayList<>();
LocalDateTime twoSecondsLater = LocalDateTime.now().plusSeconds(2);
Date twoSecondsLaterAsDate = Date.from(twoSecondsLater.atZone(ZoneId.systemDefault()).toInstant());
new Timer().schedule(new DatabaseMigrationTask(oldDatabase, newDatabase), twoSecondsLaterAsDate);
while (LocalDateTime.now().isBefore(twoSecondsLater)) {
assertThat(newDatabase).isEmpty();
Thread.sleep(500);
}
assertThat(newDatabase).containsExactlyElementsOf(oldDatabase);
}
@Test
void givenDatabaseMigrationTask_whenTimerScheduledInTwoSeconds_thenDataMigratedAfterTwoSeconds() throws Exception {
List<String> oldDatabase = Arrays.asList("Harrison Ford", "Carrie Fisher", "Mark Hamill");
List<String> newDatabase = new ArrayList<>();
new Timer().schedule(new DatabaseMigrationTask(oldDatabase, newDatabase), 2000);
LocalDateTime twoSecondsLater = LocalDateTime.now().plusSeconds(2);
while (LocalDateTime.now().isBefore(twoSecondsLater)) {
assertThat(newDatabase).isEmpty();
Thread.sleep(500);
}
assertThat(newDatabase).containsExactlyElementsOf(oldDatabase);
}
}

View File

@@ -0,0 +1,139 @@
package com.baeldung.timer;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class JavaTimerLongRunningUnitTest {
private static final Logger LOG = LoggerFactory.getLogger(JavaTimerLongRunningUnitTest.class);
// tests
@Test
public void givenUsingTimer_whenSchedulingTaskOnce_thenCorrect() throws InterruptedException {
final TimerTask timerTask = new TimerTask() {
@Override
public void run() {
LOG.debug("Task performed on: " + new Date() + "\n" + "Thread's name: " + Thread.currentThread()
.getName());
}
};
final Timer timer = new Timer("Timer");
final long delay = 1000L;
timer.schedule(timerTask, delay);
Thread.sleep(delay * 2);
timer.cancel();
}
@Test
public void givenUsingTimer_whenSchedulingRepeatedTask_thenCorrect() throws InterruptedException {
final TimerTask repeatedTask = new TimerTask() {
@Override
public void run() {
LOG.debug("Task performed on " + new Date());
}
};
final Timer timer = new Timer("Timer");
final long delay = 1000L;
final long period = 1000L;
timer.scheduleAtFixedRate(repeatedTask, delay, period);
Thread.sleep(delay * 2);
timer.cancel();
}
@Test
public void givenUsingTimer_whenSchedulingDailyTask_thenCorrect() throws InterruptedException {
final TimerTask repeatedTask = new TimerTask() {
@Override
public void run() {
LOG.debug("Task performed on " + new Date());
}
};
final Timer timer = new Timer("Timer");
final long delay = 1000L;
final long period = 1000L * 60L * 60L * 24L;
timer.scheduleAtFixedRate(repeatedTask, delay, period);
Thread.sleep(delay * 2);
timer.cancel();
}
@Test
public void givenUsingTimer_whenCancelingTimerTask_thenCorrect() throws InterruptedException {
final TimerTask task = new TimerTask() {
@Override
public void run() {
LOG.debug("Task performed on " + new Date());
cancel();
}
};
final Timer timer = new Timer("Timer");
final long delay = 1000L;
final long period = 1000L;
timer.scheduleAtFixedRate(task, delay, period);
Thread.sleep(delay * 3);
}
@Test
public void givenUsingTimer_whenStoppingThread_thenTimerTaskIsCancelled() throws InterruptedException {
final TimerTask task = new TimerTask() {
@Override
public void run() {
LOG.debug("Task performed on " + new Date());
}
};
final Timer timer = new Timer("Timer");
timer.scheduleAtFixedRate(task, 1000L, 1000L);
Thread.sleep(1000L * 10);
}
@Test
public void givenUsingTimer_whenCancelingTimer_thenCorrect() throws InterruptedException {
final TimerTask task = new TimerTask() {
@Override
public void run() {
LOG.debug("Task performed on " + new Date());
}
};
final Timer timer = new Timer("Timer");
timer.scheduleAtFixedRate(task, 1000L, 1000L);
Thread.sleep(1000L * 2);
timer.cancel();
}
@Test
public void givenUsingExecutorService_whenSchedulingRepeatedTask_thenCorrect() throws InterruptedException {
final TimerTask repeatedTask = new TimerTask() {
@Override
public void run() {
LOG.debug("Task performed on " + new Date());
}
};
final ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
final long delay = 1000L;
final long period = 1000L;
executor.scheduleAtFixedRate(repeatedTask, delay, period, TimeUnit.MILLISECONDS);
Thread.sleep(delay + period * 3);
executor.shutdown();
}
}

View File

@@ -0,0 +1,33 @@
package com.baeldung.timer;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;
import java.util.Timer;
class NewsletterTaskUnitTest {
private final Timer timer = new Timer();
@AfterEach
void afterEach() {
timer.cancel();
}
@Test
void givenNewsletterTask_whenTimerScheduledEachSecondFixedDelay_thenNewsletterSentEachSecond() throws Exception {
timer.schedule(new NewsletterTask(), 0, 1000);
for (int i = 0; i < 3; i++) {
Thread.sleep(1000);
}
}
@Test
void givenNewsletterTask_whenTimerScheduledEachSecondFixedRate_thenNewsletterSentEachSecond() throws Exception {
timer.scheduleAtFixedRate(new NewsletterTask(), 0, 1000);
for (int i = 0; i < 3; i++) {
Thread.sleep(1000);
}
}
}