Port thread safety/performance optimizations from #1992

This commit is contained in:
Gabriele C
2020-06-26 22:23:50 +02:00
parent 5544fd047d
commit 06be8ea6f4
13 changed files with 146 additions and 91 deletions
@@ -11,6 +11,7 @@ import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import static fr.xephi.authme.service.BukkitServiceTestHelper.setBukkitServiceToRunTaskAsynchronously;
import static fr.xephi.authme.service.BukkitServiceTestHelper.setBukkitServiceToRunTaskOptionallyAsync;
import static java.util.Arrays.asList;
import static java.util.Collections.singletonList;
@@ -45,7 +46,7 @@ public class PurgePlayerCommandTest {
String name = "Bobby";
given(dataSource.isAuthAvailable(name)).willReturn(true);
CommandSender sender = mock(CommandSender.class);
setBukkitServiceToRunTaskOptionallyAsync(bukkitService);
setBukkitServiceToRunTaskAsynchronously(bukkitService);
// when
command.executeCommand(sender, singletonList(name));
@@ -63,7 +64,7 @@ public class PurgePlayerCommandTest {
OfflinePlayer player = mock(OfflinePlayer.class);
given(bukkitService.getOfflinePlayer(name)).willReturn(player);
CommandSender sender = mock(CommandSender.class);
setBukkitServiceToRunTaskOptionallyAsync(bukkitService);
setBukkitServiceToRunTaskAsynchronously(bukkitService);
// when
command.executeCommand(sender, singletonList(name));
@@ -80,7 +81,7 @@ public class PurgePlayerCommandTest {
OfflinePlayer player = mock(OfflinePlayer.class);
given(bukkitService.getOfflinePlayer(name)).willReturn(player);
CommandSender sender = mock(CommandSender.class);
setBukkitServiceToRunTaskOptionallyAsync(bukkitService);
setBukkitServiceToRunTaskAsynchronously(bukkitService);
// when
command.executeCommand(sender, asList(name, "force"));
@@ -646,7 +646,7 @@ public class PlayerListenerTest {
}
@Test
public void shouldNotInterfereWithUnrestrictedUser() {
public void shouldNotInterfereWithUnrestrictedUser() throws FailedVerificationException {
// given
String name = "Player01";
Player player = mockPlayerWithName(name);
@@ -658,12 +658,13 @@ public class PlayerListenerTest {
// then
verify(validationService).isUnrestricted(name);
verify(onJoinVerifier).checkSingleSession(name);
verifyNoModifyingCalls(event);
verifyNoInteractions(onJoinVerifier);
verifyNoMoreInteractions(onJoinVerifier);
}
@Test
public void shouldStopHandlingForFullServer() {
public void shouldStopHandlingForFullServer() throws FailedVerificationException {
// given
String name = "someone";
Player player = mockPlayerWithName(name);
@@ -676,12 +677,14 @@ public class PlayerListenerTest {
// then
verify(validationService).isUnrestricted(name);
verify(onJoinVerifier, only()).refusePlayerForFullServer(event);
verify(onJoinVerifier).checkSingleSession(name);
verify(onJoinVerifier).refusePlayerForFullServer(event);
verifyNoMoreInteractions(onJoinVerifier);
verifyNoModifyingCalls(event);
}
@Test
public void shouldStopHandlingEventForBadResult() {
public void shouldStopHandlingEventForBadResult() throws FailedVerificationException {
// given
String name = "someone";
Player player = mockPlayerWithName(name);
@@ -696,7 +699,8 @@ public class PlayerListenerTest {
// then
verify(validationService).isUnrestricted(name);
verify(onJoinVerifier, only()).refusePlayerForFullServer(event);
verify(onJoinVerifier).checkSingleSession(name);
verify(onJoinVerifier).refusePlayerForFullServer(event);
verifyNoModifyingCalls(event);
}
@@ -715,14 +719,13 @@ public class PlayerListenerTest {
// then
verify(validationService).isUnrestricted(name);
verify(onJoinVerifier).checkSingleSession(name);
verify(onJoinVerifier).checkIsValidName(name);
verifyNoInteractions(dataSource);
verifyNoModifyingCalls(preLoginEvent);
}
@Test
public void shouldKickPreLoginLowestUnresolvedHostname() throws FailedVerificationException {
public void shouldKickPreLoginLowestUnresolvedHostname() {
// given
String name = "someone";
UUID uniqueId = UUID.fromString("753493c9-33ba-4a4a-bf61-1bce9d3c9a71");
@@ -20,6 +20,7 @@ import java.util.Arrays;
import java.util.List;
import static fr.xephi.authme.service.BukkitServiceTestHelper.setBukkitServiceToScheduleSyncDelayedTaskWithDelay;
import static fr.xephi.authme.service.BukkitServiceTestHelper.setBukkitServiceToScheduleSyncTaskFromOptionallyAsyncTask;
import static org.hamcrest.Matchers.equalTo;
import static org.junit.Assert.assertThat;
import static org.mockito.ArgumentMatchers.any;
@@ -160,6 +161,7 @@ public class AntiBotServiceTest {
given(bukkitService.getOnlinePlayers()).willReturn(players);
given(permissionsManager.hasPermission(players.get(0), AdminPermission.ANTIBOT_MESSAGES)).willReturn(false);
given(permissionsManager.hasPermission(players.get(1), AdminPermission.ANTIBOT_MESSAGES)).willReturn(true);
setBukkitServiceToScheduleSyncTaskFromOptionallyAsyncTask(bukkitService);
// when
antiBotService.overrideAntiBotStatus(true);
@@ -189,7 +189,7 @@ public class PurgeServiceTest {
private void verifyScheduledPurgeTask(UUID senderUuid, Set<String> names) {
ArgumentCaptor<PurgeTask> captor = ArgumentCaptor.forClass(PurgeTask.class);
verify(bukkitService).runTaskTimer(captor.capture(), eq(0L), eq(1L));
verify(bukkitService).runTaskTimerAsynchronously(captor.capture(), eq(0L), eq(1L));
PurgeTask task = captor.getValue();
Object senderInTask = ReflectionTestUtils.getFieldValue(PurgeTask.class, task, "sender");