Skip to content

Commit

Permalink
Refactor SharedTimerTest with import and wait time, add error string …
Browse files Browse the repository at this point in the history
…to TestResource
  • Loading branch information
Codegass committed Apr 17, 2024
1 parent 0dc5b61 commit acd75d8
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 25 deletions.
56 changes: 31 additions & 25 deletions src/test/java/com/microsoft/sqlserver/jdbc/SharedTimerTest.java
Original file line number Diff line number Diff line change
@@ -1,34 +1,40 @@
package com.microsoft.sqlserver.jdbc;

import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertFalse;

import java.util.ArrayList;
import java.util.concurrent.*;

import static org.junit.jupiter.api.Assertions.assertFalse;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

import org.junit.jupiter.api.Test;

class SharedTimerTest {

@Test
void getTimer() throws InterruptedException, ExecutionException, TimeoutException {
final int iterations = 500;
ExecutorService executor = Executors.newFixedThreadPool(2);

try {
ArrayList<CompletableFuture<?>> futures = new ArrayList<>(iterations);
for (int i = 0; i < iterations; i++) {
futures.add(CompletableFuture.runAsync(() -> SharedTimer.getTimer().removeRef(), executor));
}

CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).get(2, TimeUnit.MINUTES);
} finally {
executor.shutdown();
if (!executor.awaitTermination(800, TimeUnit.MILLISECONDS)) {
executor.shutdownNow();
}
}

assertFalse(SharedTimer.isRunning(), "SharedTimer should be stopped after all references are removed.");
}
@Test
void getTimer() throws InterruptedException, ExecutionException, TimeoutException {
final int iterations = 500;
ExecutorService executor = Executors.newFixedThreadPool(2);

try {
ArrayList<CompletableFuture<?>> futures = new ArrayList<>(iterations);
for (int i = 0; i < iterations; i++) {
futures.add(CompletableFuture.runAsync(() -> SharedTimer.getTimer().removeRef(), executor));
}

CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).get(2, TimeUnit.MINUTES);
} finally {
executor.shutdown();
// 5000ms wait time for the AzureDB connection to close, need full test in the
// test lab for the exact time
if (!executor.awaitTermination(5000, TimeUnit.MILLISECONDS)) {
executor.shutdownNow();
}
}

assertFalse(SharedTimer.isRunning(), TestResource.getResource("R_sharedTimerStopOnNoRef"));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -213,6 +213,7 @@ protected Object[][] getContents() {
{"R_objectNullOrEmpty", "The {0} is null or empty."},
{"R_cekDecryptionFailed", "Failed to decrypt a column encryption key using key store provider: {0}."},
{"R_connectTimedOut", "connect timed out"},
{"R_sharedTimerStopOnNoRef","SharedTimer should be stopped after all references are removed."},
{"R_sessionKilled", "Cannot continue the execution because the session is in the kill state"},
{"R_failedFedauth", "Failed to acquire fedauth token: "},
{"R_noLoginModulesConfiguredForJdbcDriver",
Expand Down

0 comments on commit acd75d8

Please sign in to comment.