From e2f2ff07637ef6ad7f0a7cdb55dab034f6a8a5f0 Mon Sep 17 00:00:00 2001 From: ljacqu Date: Sun, 11 Aug 2019 11:36:28 +0200 Subject: [PATCH] #1874 Output number of loggers in /authme debug stats --- .../executable/authme/debug/DataStatistics.java | 2 ++ .../authme/output/ConsoleLoggerFactory.java | 4 ++++ .../authme/debug/DataStatisticsTest.java | 16 +++++++++------- .../authme/output/ConsoleLoggerFactoryTest.java | 3 +-- 4 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/main/java/fr/xephi/authme/command/executable/authme/debug/DataStatistics.java b/src/main/java/fr/xephi/authme/command/executable/authme/debug/DataStatistics.java index f90883b8..406ee17d 100644 --- a/src/main/java/fr/xephi/authme/command/executable/authme/debug/DataStatistics.java +++ b/src/main/java/fr/xephi/authme/command/executable/authme/debug/DataStatistics.java @@ -8,6 +8,7 @@ import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.initialization.HasCleanup; import fr.xephi.authme.initialization.Reloadable; import fr.xephi.authme.initialization.SettingsDependent; +import fr.xephi.authme.output.ConsoleLoggerFactory; import fr.xephi.authme.permission.DebugSectionPermissions; import fr.xephi.authme.permission.PermissionNode; import org.bukkit.ChatColor; @@ -54,6 +55,7 @@ class DataStatistics implements DebugSection { outputDatabaseStats(sender); outputInjectorStats(sender); + sender.sendMessage("Total logger instances: " + ConsoleLoggerFactory.getTotalLoggers()); } @Override diff --git a/src/main/java/fr/xephi/authme/output/ConsoleLoggerFactory.java b/src/main/java/fr/xephi/authme/output/ConsoleLoggerFactory.java index 5fee9273..fb51043d 100644 --- a/src/main/java/fr/xephi/authme/output/ConsoleLoggerFactory.java +++ b/src/main/java/fr/xephi/authme/output/ConsoleLoggerFactory.java @@ -41,6 +41,10 @@ public final class ConsoleLoggerFactory { .forEach(logger -> logger.initializeSettings(settings)); } + public static int getTotalLoggers() { + return consoleLoggers.size(); + } + private static ConsoleLogger createLogger(String name) { ConsoleLogger logger = new ConsoleLogger(name); if (settings != null) { diff --git a/src/test/java/fr/xephi/authme/command/executable/authme/debug/DataStatisticsTest.java b/src/test/java/fr/xephi/authme/command/executable/authme/debug/DataStatisticsTest.java index 52b13b0e..fe50d837 100644 --- a/src/test/java/fr/xephi/authme/command/executable/authme/debug/DataStatisticsTest.java +++ b/src/test/java/fr/xephi/authme/command/executable/authme/debug/DataStatisticsTest.java @@ -12,6 +12,7 @@ import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.initialization.HasCleanup; import fr.xephi.authme.initialization.Reloadable; import fr.xephi.authme.initialization.SettingsDependent; +import fr.xephi.authme.output.ConsoleLoggerFactory; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; import org.junit.Before; @@ -22,7 +23,6 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; -import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; @@ -73,6 +73,11 @@ public class DataStatisticsTest { given(dataSource.getAccountsRegistered()).willReturn(219); given(playerCache.getLogged()).willReturn(12); + // Clear any loggers that might exist and trigger the generation of two loggers + Map loggers = ReflectionTestUtils.getFieldValue(ConsoleLoggerFactory.class, null, "consoleLoggers"); + loggers.clear(); + ConsoleLoggerFactory.get(String.class); + ConsoleLoggerFactory.get(Integer.class); // when dataStatistics.execute(sender, Collections.emptyList()); @@ -86,7 +91,8 @@ public class DataStatisticsTest { "(Reloadable: 4 / SettingsDependent: 3 / HasCleanup: 2)", "LimboPlayers in memory: 1", "Total players in DB: 219", - "PlayerCache size: 12 (= logged in players)")); + "PlayerCache size: 12 (= logged in players)", + "Total logger instances: 2")); } @Test @@ -110,10 +116,6 @@ public class DataStatisticsTest { private static List mockListOfSize(Class mockClass, int size) { T mock = mock(mockClass); - List mocks = new ArrayList<>(size); - for (int i = 0; i < size; ++i) { - mocks.add(mock); - } - return mocks; + return Collections.nCopies(size, mock); } } diff --git a/src/test/java/fr/xephi/authme/output/ConsoleLoggerFactoryTest.java b/src/test/java/fr/xephi/authme/output/ConsoleLoggerFactoryTest.java index c1042ae9..fe53383b 100644 --- a/src/test/java/fr/xephi/authme/output/ConsoleLoggerFactoryTest.java +++ b/src/test/java/fr/xephi/authme/output/ConsoleLoggerFactoryTest.java @@ -14,7 +14,6 @@ import org.junit.Test; import java.util.Map; import static org.hamcrest.Matchers.contains; -import static org.hamcrest.Matchers.containsInAnyOrder; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.not; import static org.hamcrest.Matchers.sameInstance; @@ -62,7 +61,7 @@ public class ConsoleLoggerFactoryTest { ConsoleLogger logger3 = ConsoleLoggerFactory.get(String.class); // then - assertThat(getConsoleLoggerMap().keySet(), containsInAnyOrder("java.lang.String", "java.lang.Number")); + assertThat(ConsoleLoggerFactory.getTotalLoggers(), equalTo(2)); assertThat(logger3, sameInstance(logger1)); assertThat(logger2, not(sameInstance(logger1))); }