mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2025-03-14 23:59:03 +01:00
parent
6a8f93be89
commit
b5c29a1c0d
@ -33,7 +33,7 @@ import javax.inject.Singleton;
|
|||||||
SpongeServerPropertiesModule.class,
|
SpongeServerPropertiesModule.class,
|
||||||
PluginBridgeModule.Sponge.class
|
PluginBridgeModule.Sponge.class
|
||||||
})
|
})
|
||||||
interface PlanSpongeComponent {
|
public interface PlanSpongeComponent {
|
||||||
|
|
||||||
PlanCommand planCommand();
|
PlanCommand planCommand();
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ import javax.inject.Singleton;
|
|||||||
VelocityServerPropertiesModule.class,
|
VelocityServerPropertiesModule.class,
|
||||||
PluginBridgeModule.Velocity.class
|
PluginBridgeModule.Velocity.class
|
||||||
})
|
})
|
||||||
interface PlanVelocityComponent {
|
public interface PlanVelocityComponent {
|
||||||
|
|
||||||
PlanVelocityCommand planCommand();
|
PlanVelocityCommand planCommand();
|
||||||
|
|
||||||
|
@ -7,7 +7,11 @@ package com.djrapitops.plan.system.tasks;
|
|||||||
import com.djrapitops.plan.Plan;
|
import com.djrapitops.plan.Plan;
|
||||||
import com.djrapitops.plan.system.settings.Settings;
|
import com.djrapitops.plan.system.settings.Settings;
|
||||||
import com.djrapitops.plan.system.settings.config.PlanConfig;
|
import com.djrapitops.plan.system.settings.config.PlanConfig;
|
||||||
import com.djrapitops.plan.system.tasks.server.*;
|
import com.djrapitops.plan.system.tasks.server.BootAnalysisTask;
|
||||||
|
import com.djrapitops.plan.system.tasks.server.PeriodicAnalysisTask;
|
||||||
|
import com.djrapitops.plan.system.tasks.server.bukkit.BukkitTPSCountTimer;
|
||||||
|
import com.djrapitops.plan.system.tasks.server.bukkit.PaperTPSCountTimer;
|
||||||
|
import com.djrapitops.plan.system.tasks.server.bukkit.PingCountTimerBukkit;
|
||||||
import com.djrapitops.plugin.api.Check;
|
import com.djrapitops.plugin.api.Check;
|
||||||
import com.djrapitops.plugin.api.TimeAmount;
|
import com.djrapitops.plugin.api.TimeAmount;
|
||||||
import com.djrapitops.plugin.task.RunnableFactory;
|
import com.djrapitops.plugin.task.RunnableFactory;
|
||||||
|
@ -7,9 +7,9 @@ package com.djrapitops.plan.system.tasks;
|
|||||||
import com.djrapitops.plan.PlanBungee;
|
import com.djrapitops.plan.PlanBungee;
|
||||||
import com.djrapitops.plan.system.settings.Settings;
|
import com.djrapitops.plan.system.settings.Settings;
|
||||||
import com.djrapitops.plan.system.settings.config.PlanConfig;
|
import com.djrapitops.plan.system.settings.config.PlanConfig;
|
||||||
import com.djrapitops.plan.system.tasks.bungee.BungeeTPSCountTimer;
|
import com.djrapitops.plan.system.tasks.proxy.NetworkPageRefreshTask;
|
||||||
import com.djrapitops.plan.system.tasks.server.NetworkPageRefreshTask;
|
import com.djrapitops.plan.system.tasks.proxy.bungee.BungeeTPSCountTimer;
|
||||||
import com.djrapitops.plan.system.tasks.server.PingCountTimerBungee;
|
import com.djrapitops.plan.system.tasks.proxy.bungee.PingCountTimerBungee;
|
||||||
import com.djrapitops.plugin.api.TimeAmount;
|
import com.djrapitops.plugin.api.TimeAmount;
|
||||||
import com.djrapitops.plugin.task.AbsRunnable;
|
import com.djrapitops.plugin.task.AbsRunnable;
|
||||||
import com.djrapitops.plugin.task.RunnableFactory;
|
import com.djrapitops.plugin.task.RunnableFactory;
|
||||||
|
@ -5,8 +5,8 @@ import com.djrapitops.plan.system.settings.Settings;
|
|||||||
import com.djrapitops.plan.system.settings.config.PlanConfig;
|
import com.djrapitops.plan.system.settings.config.PlanConfig;
|
||||||
import com.djrapitops.plan.system.tasks.server.BootAnalysisTask;
|
import com.djrapitops.plan.system.tasks.server.BootAnalysisTask;
|
||||||
import com.djrapitops.plan.system.tasks.server.PeriodicAnalysisTask;
|
import com.djrapitops.plan.system.tasks.server.PeriodicAnalysisTask;
|
||||||
import com.djrapitops.plan.system.tasks.server.PingCountTimerSponge;
|
import com.djrapitops.plan.system.tasks.server.sponge.PingCountTimerSponge;
|
||||||
import com.djrapitops.plan.system.tasks.server.SpongeTPSCountTimer;
|
import com.djrapitops.plan.system.tasks.server.sponge.SpongeTPSCountTimer;
|
||||||
import com.djrapitops.plugin.api.TimeAmount;
|
import com.djrapitops.plugin.api.TimeAmount;
|
||||||
import com.djrapitops.plugin.task.RunnableFactory;
|
import com.djrapitops.plugin.task.RunnableFactory;
|
||||||
import org.spongepowered.api.Sponge;
|
import org.spongepowered.api.Sponge;
|
||||||
|
@ -7,10 +7,10 @@ package com.djrapitops.plan.system.tasks;
|
|||||||
import com.djrapitops.plan.PlanVelocity;
|
import com.djrapitops.plan.PlanVelocity;
|
||||||
import com.djrapitops.plan.system.settings.Settings;
|
import com.djrapitops.plan.system.settings.Settings;
|
||||||
import com.djrapitops.plan.system.settings.config.PlanConfig;
|
import com.djrapitops.plan.system.settings.config.PlanConfig;
|
||||||
import com.djrapitops.plan.system.tasks.server.NetworkPageRefreshTask;
|
import com.djrapitops.plan.system.tasks.proxy.NetworkPageRefreshTask;
|
||||||
import com.djrapitops.plan.system.tasks.server.PingCountTimerBungee;
|
import com.djrapitops.plan.system.tasks.proxy.bungee.PingCountTimerBungee;
|
||||||
import com.djrapitops.plan.system.tasks.server.PingCountTimerVelocity;
|
import com.djrapitops.plan.system.tasks.proxy.velocity.PingCountTimerVelocity;
|
||||||
import com.djrapitops.plan.system.tasks.velocity.VelocityTPSCountTimer;
|
import com.djrapitops.plan.system.tasks.proxy.velocity.VelocityTPSCountTimer;
|
||||||
import com.djrapitops.plugin.api.TimeAmount;
|
import com.djrapitops.plugin.api.TimeAmount;
|
||||||
import com.djrapitops.plugin.task.AbsRunnable;
|
import com.djrapitops.plugin.task.AbsRunnable;
|
||||||
import com.djrapitops.plugin.task.RunnableFactory;
|
import com.djrapitops.plugin.task.RunnableFactory;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package com.djrapitops.plan.system.tasks.server;
|
package com.djrapitops.plan.system.tasks.proxy;
|
||||||
|
|
||||||
import com.djrapitops.plan.system.info.server.ServerInfo;
|
import com.djrapitops.plan.system.info.server.ServerInfo;
|
||||||
import com.djrapitops.plan.system.webserver.cache.PageId;
|
import com.djrapitops.plan.system.webserver.cache.PageId;
|
@ -1,4 +1,4 @@
|
|||||||
package com.djrapitops.plan.system.tasks.bungee;
|
package com.djrapitops.plan.system.tasks.proxy.bungee;
|
||||||
|
|
||||||
import com.djrapitops.plan.data.container.TPS;
|
import com.djrapitops.plan.data.container.TPS;
|
||||||
import com.djrapitops.plan.data.container.builders.TPSBuilder;
|
import com.djrapitops.plan.data.container.builders.TPSBuilder;
|
@ -21,7 +21,7 @@
|
|||||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
* SOFTWARE.
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
package com.djrapitops.plan.system.tasks.server;
|
package com.djrapitops.plan.system.tasks.proxy.bungee;
|
||||||
|
|
||||||
import com.djrapitops.plan.data.store.objects.DateObj;
|
import com.djrapitops.plan.data.store.objects.DateObj;
|
||||||
import com.djrapitops.plan.system.processing.Processing;
|
import com.djrapitops.plan.system.processing.Processing;
|
||||||
@ -78,15 +78,19 @@ public class PingCountTimerBungee extends AbsRunnable implements Listener {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
List<UUID> loggedOut = new ArrayList<>();
|
|
||||||
long time = System.currentTimeMillis();
|
long time = System.currentTimeMillis();
|
||||||
playerHistory.forEach((uuid, history) -> {
|
Iterator<Map.Entry<UUID, List<DateObj<Integer>>>> iterator = playerHistory.entrySet().iterator();
|
||||||
|
|
||||||
|
while (iterator.hasNext()) {
|
||||||
|
Map.Entry<UUID, List<DateObj<Integer>>> entry = iterator.next();
|
||||||
|
UUID uuid = entry.getKey();
|
||||||
|
List<DateObj<Integer>> history = entry.getValue();
|
||||||
ProxiedPlayer player = ProxyServer.getInstance().getPlayer(uuid);
|
ProxiedPlayer player = ProxyServer.getInstance().getPlayer(uuid);
|
||||||
if (player != null) {
|
if (player != null) {
|
||||||
int ping = getPing(player);
|
int ping = getPing(player);
|
||||||
if (ping < -1 || ping > TimeUnit.SECONDS.toMillis(8L)) {
|
if (ping < -1 || ping > TimeUnit.SECONDS.toMillis(8L)) {
|
||||||
// Don't accept bad values
|
// Don't accept bad values
|
||||||
return;
|
continue;
|
||||||
}
|
}
|
||||||
history.add(new DateObj<>(time, ping));
|
history.add(new DateObj<>(time, ping));
|
||||||
if (history.size() >= 30) {
|
if (history.size() >= 30) {
|
||||||
@ -94,10 +98,9 @@ public class PingCountTimerBungee extends AbsRunnable implements Listener {
|
|||||||
history.clear();
|
history.clear();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
loggedOut.add(uuid);
|
iterator.remove();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
|
||||||
loggedOut.forEach(playerHistory::remove);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addPlayer(ProxiedPlayer player) {
|
public void addPlayer(ProxiedPlayer player) {
|
@ -21,7 +21,7 @@
|
|||||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
* SOFTWARE.
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
package com.djrapitops.plan.system.tasks.server;
|
package com.djrapitops.plan.system.tasks.proxy.velocity;
|
||||||
|
|
||||||
import com.djrapitops.plan.PlanVelocity;
|
import com.djrapitops.plan.PlanVelocity;
|
||||||
import com.djrapitops.plan.data.store.objects.DateObj;
|
import com.djrapitops.plan.data.store.objects.DateObj;
|
||||||
@ -56,7 +56,7 @@ public class PingCountTimerVelocity extends AbsRunnable {
|
|||||||
//https://github.com/bergerkiller/CraftSource/blob/master/net.minecraft.server/PlayerConnection.java#L178
|
//https://github.com/bergerkiller/CraftSource/blob/master/net.minecraft.server/PlayerConnection.java#L178
|
||||||
public static final int PING_INTERVAL = 2 * 20;
|
public static final int PING_INTERVAL = 2 * 20;
|
||||||
|
|
||||||
private final Map<UUID, List<DateObj<Integer>>> playerHistory;
|
final Map<UUID, List<DateObj<Integer>>> playerHistory;
|
||||||
|
|
||||||
private final PlanVelocity plugin;
|
private final PlanVelocity plugin;
|
||||||
private final PlanConfig config;
|
private final PlanConfig config;
|
||||||
@ -82,15 +82,19 @@ public class PingCountTimerVelocity extends AbsRunnable {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
List<UUID> loggedOut = new ArrayList<>();
|
|
||||||
long time = System.currentTimeMillis();
|
long time = System.currentTimeMillis();
|
||||||
playerHistory.forEach((uuid, history) -> {
|
Iterator<Map.Entry<UUID, List<DateObj<Integer>>>> iterator = playerHistory.entrySet().iterator();
|
||||||
|
|
||||||
|
while (iterator.hasNext()) {
|
||||||
|
Map.Entry<UUID, List<DateObj<Integer>>> entry = iterator.next();
|
||||||
|
UUID uuid = entry.getKey();
|
||||||
|
List<DateObj<Integer>> history = entry.getValue();
|
||||||
Player player = plugin.getProxy().getPlayer(uuid).orElse(null);
|
Player player = plugin.getProxy().getPlayer(uuid).orElse(null);
|
||||||
if (player != null) {
|
if (player != null) {
|
||||||
int ping = getPing(player);
|
int ping = getPing(player);
|
||||||
if (ping < -1 || ping > TimeUnit.SECONDS.toMillis(8L)) {
|
if (ping < -1 || ping > TimeUnit.SECONDS.toMillis(8L)) {
|
||||||
// Don't accept bad values
|
// Don't accept bad values
|
||||||
return;
|
continue;
|
||||||
}
|
}
|
||||||
history.add(new DateObj<>(time, ping));
|
history.add(new DateObj<>(time, ping));
|
||||||
if (history.size() >= 30) {
|
if (history.size() >= 30) {
|
||||||
@ -98,13 +102,12 @@ public class PingCountTimerVelocity extends AbsRunnable {
|
|||||||
history.clear();
|
history.clear();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
loggedOut.add(uuid);
|
iterator.remove();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
|
||||||
loggedOut.forEach(playerHistory::remove);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addPlayer(Player player) {
|
void addPlayer(Player player) {
|
||||||
playerHistory.put(player.getUniqueId(), new ArrayList<>());
|
playerHistory.put(player.getUniqueId(), new ArrayList<>());
|
||||||
}
|
}
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package com.djrapitops.plan.system.tasks.velocity;
|
package com.djrapitops.plan.system.tasks.proxy.velocity;
|
||||||
|
|
||||||
import com.djrapitops.plan.data.container.TPS;
|
import com.djrapitops.plan.data.container.TPS;
|
||||||
import com.djrapitops.plan.data.container.builders.TPSBuilder;
|
import com.djrapitops.plan.data.container.builders.TPSBuilder;
|
@ -1,4 +1,4 @@
|
|||||||
package com.djrapitops.plan.system.tasks.server;
|
package com.djrapitops.plan.system.tasks.server.bukkit;
|
||||||
|
|
||||||
import com.djrapitops.plan.Plan;
|
import com.djrapitops.plan.Plan;
|
||||||
import com.djrapitops.plan.data.container.TPS;
|
import com.djrapitops.plan.data.container.TPS;
|
@ -1,4 +1,4 @@
|
|||||||
package com.djrapitops.plan.system.tasks.server;
|
package com.djrapitops.plan.system.tasks.server.bukkit;
|
||||||
|
|
||||||
import com.djrapitops.plan.Plan;
|
import com.djrapitops.plan.Plan;
|
||||||
import com.djrapitops.plan.data.container.TPS;
|
import com.djrapitops.plan.data.container.TPS;
|
@ -21,7 +21,7 @@
|
|||||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
* SOFTWARE.
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
package com.djrapitops.plan.system.tasks.server;
|
package com.djrapitops.plan.system.tasks.server.bukkit;
|
||||||
|
|
||||||
import com.djrapitops.plan.data.store.objects.DateObj;
|
import com.djrapitops.plan.data.store.objects.DateObj;
|
||||||
import com.djrapitops.plan.system.processing.Processing;
|
import com.djrapitops.plan.system.processing.Processing;
|
||||||
@ -131,15 +131,19 @@ public class PingCountTimerBukkit extends AbsRunnable implements Listener {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
List<UUID> loggedOut = new ArrayList<>();
|
|
||||||
long time = System.currentTimeMillis();
|
long time = System.currentTimeMillis();
|
||||||
playerHistory.forEach((uuid, history) -> {
|
Iterator<Map.Entry<UUID, List<DateObj<Integer>>>> iterator = playerHistory.entrySet().iterator();
|
||||||
|
|
||||||
|
while (iterator.hasNext()) {
|
||||||
|
Map.Entry<UUID, List<DateObj<Integer>>> entry = iterator.next();
|
||||||
|
UUID uuid = entry.getKey();
|
||||||
|
List<DateObj<Integer>> history = entry.getValue();
|
||||||
Player player = Bukkit.getPlayer(uuid);
|
Player player = Bukkit.getPlayer(uuid);
|
||||||
if (player != null) {
|
if (player != null) {
|
||||||
int ping = getPing(player);
|
int ping = getPing(player);
|
||||||
if (ping < -1 || ping > TimeUnit.SECONDS.toMillis(8L)) {
|
if (ping < -1 || ping > TimeUnit.SECONDS.toMillis(8L)) {
|
||||||
// Don't accept bad values
|
// Don't accept bad values
|
||||||
return;
|
continue;
|
||||||
}
|
}
|
||||||
history.add(new DateObj<>(time, ping));
|
history.add(new DateObj<>(time, ping));
|
||||||
if (history.size() >= 30) {
|
if (history.size() >= 30) {
|
||||||
@ -147,10 +151,9 @@ public class PingCountTimerBukkit extends AbsRunnable implements Listener {
|
|||||||
history.clear();
|
history.clear();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
loggedOut.add(uuid);
|
iterator.remove();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
|
||||||
loggedOut.forEach(playerHistory::remove);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addPlayer(Player player) {
|
public void addPlayer(Player player) {
|
@ -21,7 +21,7 @@
|
|||||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
* SOFTWARE.
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
package com.djrapitops.plan.system.tasks.server;
|
package com.djrapitops.plan.system.tasks.server.sponge;
|
||||||
|
|
||||||
import com.djrapitops.plan.data.store.objects.DateObj;
|
import com.djrapitops.plan.data.store.objects.DateObj;
|
||||||
import com.djrapitops.plan.system.processing.Processing;
|
import com.djrapitops.plan.system.processing.Processing;
|
||||||
@ -74,15 +74,19 @@ public class PingCountTimerSponge extends AbsRunnable {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
List<UUID> loggedOut = new ArrayList<>();
|
|
||||||
long time = System.currentTimeMillis();
|
long time = System.currentTimeMillis();
|
||||||
playerHistory.forEach((uuid, history) -> {
|
Iterator<Map.Entry<UUID, List<DateObj<Integer>>>> iterator = playerHistory.entrySet().iterator();
|
||||||
|
|
||||||
|
while (iterator.hasNext()) {
|
||||||
|
Map.Entry<UUID, List<DateObj<Integer>>> entry = iterator.next();
|
||||||
|
UUID uuid = entry.getKey();
|
||||||
|
List<DateObj<Integer>> history = entry.getValue();
|
||||||
Optional<Player> player = Sponge.getServer().getPlayer(uuid);
|
Optional<Player> player = Sponge.getServer().getPlayer(uuid);
|
||||||
if (player.isPresent()) {
|
if (player.isPresent()) {
|
||||||
int ping = getPing(player.get());
|
int ping = getPing(player.get());
|
||||||
if (ping < -1 || ping > TimeUnit.SECONDS.toMillis(8L)) {
|
if (ping < -1 || ping > TimeUnit.SECONDS.toMillis(8L)) {
|
||||||
// Don't accept bad values
|
// Don't accept bad values
|
||||||
return;
|
continue;
|
||||||
}
|
}
|
||||||
history.add(new DateObj<>(time, ping));
|
history.add(new DateObj<>(time, ping));
|
||||||
if (history.size() >= 30) {
|
if (history.size() >= 30) {
|
||||||
@ -90,10 +94,9 @@ public class PingCountTimerSponge extends AbsRunnable {
|
|||||||
history.clear();
|
history.clear();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
loggedOut.add(uuid);
|
iterator.remove();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
|
||||||
loggedOut.forEach(playerHistory::remove);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addPlayer(Player player) {
|
public void addPlayer(Player player) {
|
@ -1,4 +1,4 @@
|
|||||||
package com.djrapitops.plan.system.tasks.server;
|
package com.djrapitops.plan.system.tasks.server.sponge;
|
||||||
|
|
||||||
import com.djrapitops.plan.PlanSponge;
|
import com.djrapitops.plan.PlanSponge;
|
||||||
import com.djrapitops.plan.data.container.TPS;
|
import com.djrapitops.plan.data.container.TPS;
|
@ -0,0 +1,54 @@
|
|||||||
|
package com.djrapitops.plan.system.tasks.proxy.velocity;
|
||||||
|
|
||||||
|
import com.djrapitops.plan.PlanVelocity;
|
||||||
|
import com.velocitypowered.api.proxy.Player;
|
||||||
|
import com.velocitypowered.api.proxy.ProxyServer;
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.mockito.Mockito;
|
||||||
|
import utilities.TestConstants;
|
||||||
|
import utilities.mocks.PlanVelocityMocker;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertFalse;
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests for {@link PingCountTimerVelocity}.
|
||||||
|
*
|
||||||
|
* @author Rsl1122
|
||||||
|
*/
|
||||||
|
public class PingCountTimerVelocityTest {
|
||||||
|
|
||||||
|
private PlanVelocity plugin;
|
||||||
|
private Player player;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setUp() {
|
||||||
|
PlanVelocityMocker mocker = PlanVelocityMocker.setUp()
|
||||||
|
.withProxy();
|
||||||
|
plugin = mocker.getPlanMock();
|
||||||
|
|
||||||
|
player = Mockito.mock(Player.class);
|
||||||
|
when(player.getPing()).thenReturn(5L);
|
||||||
|
when(player.getUniqueId()).thenReturn(TestConstants.PLAYER_ONE_UUID);
|
||||||
|
|
||||||
|
ProxyServer proxy = plugin.getProxy();
|
||||||
|
when(proxy.getPlayer(TestConstants.PLAYER_ONE_UUID)).thenReturn(Optional.empty());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void offlinePlayerIsRemovedFromPlayerHistory() {
|
||||||
|
PingCountTimerVelocity counter = new PingCountTimerVelocity(plugin, null, null, null, null);
|
||||||
|
|
||||||
|
assertTrue(counter.playerHistory.isEmpty());
|
||||||
|
counter.addPlayer(player);
|
||||||
|
assertFalse(counter.playerHistory.isEmpty());
|
||||||
|
|
||||||
|
counter.run();
|
||||||
|
assertTrue(counter.playerHistory.isEmpty());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user