mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2024-09-29 23:17:28 +02:00
parent
1c0fe8612f
commit
6dbf3ee3fa
@ -25,7 +25,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.djrapitops</groupId>
|
<groupId>com.djrapitops</groupId>
|
||||||
<artifactId>AbstractPluginFramework</artifactId>
|
<artifactId>AbstractPluginFramework</artifactId>
|
||||||
<version>3.0.1</version>
|
<version>3.1.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!-- SoftDepended Plugins -->
|
<!-- SoftDepended Plugins -->
|
||||||
<dependency>
|
<dependency>
|
||||||
|
@ -13,10 +13,12 @@ import com.djrapitops.plan.system.file.FileSystem;
|
|||||||
import com.djrapitops.plan.system.info.BukkitInfoSystem;
|
import com.djrapitops.plan.system.info.BukkitInfoSystem;
|
||||||
import com.djrapitops.plan.system.info.server.BukkitServerInfo;
|
import com.djrapitops.plan.system.info.server.BukkitServerInfo;
|
||||||
import com.djrapitops.plan.system.listeners.BukkitListenerSystem;
|
import com.djrapitops.plan.system.listeners.BukkitListenerSystem;
|
||||||
|
import com.djrapitops.plan.system.settings.PlanErrorManager;
|
||||||
import com.djrapitops.plan.system.settings.config.BukkitConfigSystem;
|
import com.djrapitops.plan.system.settings.config.BukkitConfigSystem;
|
||||||
import com.djrapitops.plan.system.tasks.BukkitTaskSystem;
|
import com.djrapitops.plan.system.tasks.BukkitTaskSystem;
|
||||||
import com.djrapitops.plan.system.update.VersionCheckSystem;
|
import com.djrapitops.plan.system.update.VersionCheckSystem;
|
||||||
import com.djrapitops.plugin.StaticHolder;
|
import com.djrapitops.plugin.StaticHolder;
|
||||||
|
import com.djrapitops.plugin.api.utility.log.Log;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents PlanSystem for Plan.
|
* Represents PlanSystem for Plan.
|
||||||
@ -28,6 +30,8 @@ public class BukkitSystem extends PlanSystem {
|
|||||||
public BukkitSystem(Plan plugin) {
|
public BukkitSystem(Plan plugin) {
|
||||||
testSystem = this;
|
testSystem = this;
|
||||||
|
|
||||||
|
Log.setErrorManager(new PlanErrorManager());
|
||||||
|
|
||||||
versionCheckSystem = new VersionCheckSystem(plugin.getVersion());
|
versionCheckSystem = new VersionCheckSystem(plugin.getVersion());
|
||||||
fileSystem = new FileSystem(plugin);
|
fileSystem = new FileSystem(plugin);
|
||||||
configSystem = new BukkitConfigSystem();
|
configSystem = new BukkitConfigSystem();
|
||||||
|
@ -13,9 +13,11 @@ import com.djrapitops.plan.system.file.FileSystem;
|
|||||||
import com.djrapitops.plan.system.info.BungeeInfoSystem;
|
import com.djrapitops.plan.system.info.BungeeInfoSystem;
|
||||||
import com.djrapitops.plan.system.info.server.BungeeServerInfo;
|
import com.djrapitops.plan.system.info.server.BungeeServerInfo;
|
||||||
import com.djrapitops.plan.system.listeners.BungeeListenerSystem;
|
import com.djrapitops.plan.system.listeners.BungeeListenerSystem;
|
||||||
|
import com.djrapitops.plan.system.settings.PlanErrorManager;
|
||||||
import com.djrapitops.plan.system.settings.config.BungeeConfigSystem;
|
import com.djrapitops.plan.system.settings.config.BungeeConfigSystem;
|
||||||
import com.djrapitops.plan.system.tasks.BungeeTaskSystem;
|
import com.djrapitops.plan.system.tasks.BungeeTaskSystem;
|
||||||
import com.djrapitops.plan.system.update.VersionCheckSystem;
|
import com.djrapitops.plan.system.update.VersionCheckSystem;
|
||||||
|
import com.djrapitops.plugin.api.utility.log.Log;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents PlanSystem for PlanBungee.
|
* Represents PlanSystem for PlanBungee.
|
||||||
@ -27,6 +29,8 @@ public class BungeeSystem extends PlanSystem {
|
|||||||
public BungeeSystem(PlanBungee plugin) {
|
public BungeeSystem(PlanBungee plugin) {
|
||||||
testSystem = this;
|
testSystem = this;
|
||||||
|
|
||||||
|
Log.setErrorManager(new PlanErrorManager());
|
||||||
|
|
||||||
versionCheckSystem = new VersionCheckSystem(plugin.getVersion());
|
versionCheckSystem = new VersionCheckSystem(plugin.getVersion());
|
||||||
fileSystem = new FileSystem(plugin);
|
fileSystem = new FileSystem(plugin);
|
||||||
configSystem = new BungeeConfigSystem();
|
configSystem = new BungeeConfigSystem();
|
||||||
|
@ -0,0 +1,52 @@
|
|||||||
|
/*
|
||||||
|
* Licence is provided in the jar as license.yml also here:
|
||||||
|
* https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml
|
||||||
|
*/
|
||||||
|
package com.djrapitops.plan.system.settings;
|
||||||
|
|
||||||
|
import com.djrapitops.plan.system.webserver.WebServer;
|
||||||
|
import com.djrapitops.plan.system.webserver.WebServerSystem;
|
||||||
|
import com.djrapitops.plugin.api.Check;
|
||||||
|
import com.djrapitops.plugin.api.utility.log.ErrorLogger;
|
||||||
|
import com.djrapitops.plugin.api.utility.log.Log;
|
||||||
|
import com.djrapitops.plugin.api.utility.log.errormanager.ErrorManager;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Abstract Plugin Framework ErrorManager for logging Errors properly instead of a vague message.
|
||||||
|
*
|
||||||
|
* @author Rsl1122
|
||||||
|
*/
|
||||||
|
public class PlanErrorManager extends ErrorManager {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void toLog(String source, Throwable e, Class callingPlugin) {
|
||||||
|
try {
|
||||||
|
File logsFolder = Log.getLogsFolder(callingPlugin);
|
||||||
|
Log.warn(source + " Caught: " + e, callingPlugin);
|
||||||
|
if (WebServerSystem.isWebServerEnabled()) {
|
||||||
|
Log.warn("Exception can be viewed at " + WebServer.getInstance().getAccessAddress() + "/debug");
|
||||||
|
} else {
|
||||||
|
Log.warn("It has been logged to ErrorLog.txt");
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
if ((Check.isBukkitAvailable() && Check.isBungeeAvailable()) || Settings.DEV_MODE.isTrue()) {
|
||||||
|
Logger.getGlobal().log(Level.WARNING, source, e);
|
||||||
|
}
|
||||||
|
} catch (IllegalStateException ignored) {
|
||||||
|
/* Config system not initialized */
|
||||||
|
}
|
||||||
|
ErrorLogger.logThrowable(e, logsFolder);
|
||||||
|
} catch (Exception exception) {
|
||||||
|
System.out.println("Failed to log error to file because of " + exception);
|
||||||
|
System.out.println("Error:");
|
||||||
|
// Fallback
|
||||||
|
Logger.getGlobal().log(Level.WARNING, source, e);
|
||||||
|
System.out.println("Fail Reason:");
|
||||||
|
exception.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -14,6 +14,7 @@ import org.junit.Test;
|
|||||||
import org.junit.rules.TemporaryFolder;
|
import org.junit.rules.TemporaryFolder;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.junit.MockitoJUnitRunner;
|
import org.mockito.junit.MockitoJUnitRunner;
|
||||||
|
import utilities.Teardown;
|
||||||
import utilities.mocks.BukkitMockUtil;
|
import utilities.mocks.BukkitMockUtil;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -45,6 +46,7 @@ public class BukkitSystemTest {
|
|||||||
if (bukkitSystem != null) {
|
if (bukkitSystem != null) {
|
||||||
bukkitSystem.disable();
|
bukkitSystem.disable();
|
||||||
}
|
}
|
||||||
|
Teardown.resetSettingsTempValues();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -0,0 +1,119 @@
|
|||||||
|
/*
|
||||||
|
* Licence is provided in the jar as license.yml also here:
|
||||||
|
* https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml
|
||||||
|
*/
|
||||||
|
package com.djrapitops.plan.system;
|
||||||
|
|
||||||
|
import com.djrapitops.plan.Plan;
|
||||||
|
import com.djrapitops.plan.PlanBungee;
|
||||||
|
import com.djrapitops.plan.api.exceptions.EnableException;
|
||||||
|
import com.djrapitops.plan.api.exceptions.connection.WebException;
|
||||||
|
import com.djrapitops.plan.system.database.BukkitDBSystem;
|
||||||
|
import com.djrapitops.plan.system.info.request.GenerateInspectPageRequest;
|
||||||
|
import com.djrapitops.plan.system.info.server.ServerInfo;
|
||||||
|
import com.djrapitops.plan.system.settings.Settings;
|
||||||
|
import org.junit.*;
|
||||||
|
import org.junit.rules.ExpectedException;
|
||||||
|
import org.junit.rules.TemporaryFolder;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.mockito.junit.MockitoJUnitRunner;
|
||||||
|
import utilities.Teardown;
|
||||||
|
import utilities.TestConstants;
|
||||||
|
import utilities.mocks.BukkitMockUtil;
|
||||||
|
import utilities.mocks.BungeeMockUtil;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Rsl1122
|
||||||
|
*/
|
||||||
|
@RunWith(MockitoJUnitRunner.class)
|
||||||
|
public class BungeeBukkitConnectionTest {
|
||||||
|
|
||||||
|
@ClassRule
|
||||||
|
public static TemporaryFolder temporaryFolder = new TemporaryFolder();
|
||||||
|
private static Plan bukkitMock;
|
||||||
|
private static PlanBungee bungeeMock;
|
||||||
|
|
||||||
|
@Rule
|
||||||
|
public ExpectedException thrown = ExpectedException.none();
|
||||||
|
|
||||||
|
private BukkitSystem bukkitSystem;
|
||||||
|
private BungeeSystem bungeeSystem;
|
||||||
|
|
||||||
|
private UUID bukkitUUID;
|
||||||
|
private UUID bungeeUUID;
|
||||||
|
|
||||||
|
@BeforeClass
|
||||||
|
public static void setUpClass() throws Exception {
|
||||||
|
BukkitMockUtil bukkitMockUtil = BukkitMockUtil.setUp()
|
||||||
|
.withDataFolder(temporaryFolder.getRoot())
|
||||||
|
.withLogging()
|
||||||
|
.withPluginDescription()
|
||||||
|
.withResourceFetchingFromJar()
|
||||||
|
.withServer();
|
||||||
|
bukkitMock = bukkitMockUtil.getPlanMock();
|
||||||
|
|
||||||
|
BungeeMockUtil bungeeMockUtil = BungeeMockUtil.setUp()
|
||||||
|
.withDataFolder(temporaryFolder.getRoot())
|
||||||
|
.withLogging()
|
||||||
|
.withPluginDescription()
|
||||||
|
.withResourceFetchingFromJar()
|
||||||
|
.withProxy();
|
||||||
|
bungeeMock = bungeeMockUtil.getPlanMock();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setUp() {
|
||||||
|
Settings.DEBUG.setTemporaryValue("console");
|
||||||
|
Settings.DEV_MODE.setTemporaryValue(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@After
|
||||||
|
public void tearDown() {
|
||||||
|
System.out.println("------------------------------");
|
||||||
|
System.out.println("Disable");
|
||||||
|
System.out.println("------------------------------");
|
||||||
|
if (bukkitSystem != null) {
|
||||||
|
bukkitSystem.disable();
|
||||||
|
}
|
||||||
|
if (bungeeSystem != null) {
|
||||||
|
bungeeSystem.disable();
|
||||||
|
}
|
||||||
|
Teardown.resetSettingsTempValues();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void enable() throws EnableException {
|
||||||
|
Settings.WEBSERVER_PORT.setTemporaryValue(9000);
|
||||||
|
|
||||||
|
bukkitSystem = new BukkitSystem(bukkitMock);
|
||||||
|
bukkitSystem.enable();
|
||||||
|
|
||||||
|
bukkitUUID = ServerInfo.getServerUUID();
|
||||||
|
|
||||||
|
bungeeSystem = new BungeeSystem(bungeeMock);
|
||||||
|
|
||||||
|
Settings.WEBSERVER_PORT.setTemporaryValue(9250);
|
||||||
|
Settings.BUNGEE_IP.setTemporaryValue("localhost");
|
||||||
|
Settings.DB_TYPE.setTemporaryValue("sqlite");
|
||||||
|
bungeeSystem.setDatabaseSystem(new BukkitDBSystem());
|
||||||
|
|
||||||
|
bungeeSystem.enable();
|
||||||
|
|
||||||
|
bungeeUUID = ServerInfo.getServerUUID();
|
||||||
|
|
||||||
|
System.out.println("------------------------------");
|
||||||
|
System.out.println("Enable Complete");
|
||||||
|
System.out.println("Bukkit: " + bukkitUUID);
|
||||||
|
System.out.println("Bungee: " + bungeeUUID);
|
||||||
|
System.out.println("------------------------------");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testRequest() throws EnableException, WebException {
|
||||||
|
enable();
|
||||||
|
|
||||||
|
System.out.println("Sending request");
|
||||||
|
bungeeSystem.getInfoSystem().getConnectionSystem().sendWideInfoRequest(new GenerateInspectPageRequest(TestConstants.PLAYER_ONE_UUID));
|
||||||
|
}
|
||||||
|
}
|
@ -13,6 +13,7 @@ import org.junit.rules.ExpectedException;
|
|||||||
import org.junit.rules.TemporaryFolder;
|
import org.junit.rules.TemporaryFolder;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.junit.MockitoJUnitRunner;
|
import org.mockito.junit.MockitoJUnitRunner;
|
||||||
|
import utilities.Teardown;
|
||||||
import utilities.mocks.BungeeMockUtil;
|
import utilities.mocks.BungeeMockUtil;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -30,8 +31,8 @@ public class BungeeSystemTest {
|
|||||||
public ExpectedException thrown = ExpectedException.none();
|
public ExpectedException thrown = ExpectedException.none();
|
||||||
private BungeeSystem bungeeSystem;
|
private BungeeSystem bungeeSystem;
|
||||||
|
|
||||||
@Before
|
@BeforeClass
|
||||||
public void setUp() throws Exception {
|
public static void setUpClass() throws Exception {
|
||||||
BungeeMockUtil mockUtil = BungeeMockUtil.setUp()
|
BungeeMockUtil mockUtil = BungeeMockUtil.setUp()
|
||||||
.withDataFolder(temporaryFolder.getRoot())
|
.withDataFolder(temporaryFolder.getRoot())
|
||||||
.withLogging()
|
.withLogging()
|
||||||
@ -46,6 +47,7 @@ public class BungeeSystemTest {
|
|||||||
if (bungeeSystem != null) {
|
if (bungeeSystem != null) {
|
||||||
bungeeSystem.disable();
|
bungeeSystem.disable();
|
||||||
}
|
}
|
||||||
|
Teardown.resetSettingsTempValues();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
21
Plan/src/test/java/utilities/Teardown.java
Normal file
21
Plan/src/test/java/utilities/Teardown.java
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
/*
|
||||||
|
* Licence is provided in the jar as license.yml also here:
|
||||||
|
* https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml
|
||||||
|
*/
|
||||||
|
package utilities;
|
||||||
|
|
||||||
|
import com.djrapitops.plan.system.settings.Settings;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test utility for {@code @Teardown} tags.
|
||||||
|
*
|
||||||
|
* @author Rsl1122
|
||||||
|
*/
|
||||||
|
public class Teardown {
|
||||||
|
|
||||||
|
public static void resetSettingsTempValues() {
|
||||||
|
for (Settings settings : Settings.values()) {
|
||||||
|
settings.setTemporaryValue(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -7,6 +7,7 @@ package utilities.mocks;
|
|||||||
import com.djrapitops.plan.Plan;
|
import com.djrapitops.plan.Plan;
|
||||||
import com.djrapitops.plugin.StaticHolder;
|
import com.djrapitops.plugin.StaticHolder;
|
||||||
import com.djrapitops.plugin.task.RunnableFactory;
|
import com.djrapitops.plugin.task.RunnableFactory;
|
||||||
|
import com.djrapitops.plugin.task.ThreadRunnable;
|
||||||
import org.bukkit.Server;
|
import org.bukkit.Server;
|
||||||
import org.bukkit.plugin.InvalidDescriptionException;
|
import org.bukkit.plugin.InvalidDescriptionException;
|
||||||
import org.bukkit.plugin.PluginDescriptionFile;
|
import org.bukkit.plugin.PluginDescriptionFile;
|
||||||
@ -47,6 +48,7 @@ public class BukkitMockUtil extends MockUtil {
|
|||||||
StaticHolder.register(planMock);
|
StaticHolder.register(planMock);
|
||||||
|
|
||||||
StaticHolder.saveInstance(MockitoJUnitRunner.class, Plan.class);
|
StaticHolder.saveInstance(MockitoJUnitRunner.class, Plan.class);
|
||||||
|
StaticHolder.saveInstance(ThreadRunnable.class, Plan.class);
|
||||||
|
|
||||||
doCallRealMethod().when(planMock).getVersion();
|
doCallRealMethod().when(planMock).getVersion();
|
||||||
doCallRealMethod().when(planMock).getColorScheme();
|
doCallRealMethod().when(planMock).getColorScheme();
|
||||||
|
@ -7,6 +7,7 @@ package utilities.mocks;
|
|||||||
import com.djrapitops.plan.PlanBungee;
|
import com.djrapitops.plan.PlanBungee;
|
||||||
import com.djrapitops.plugin.StaticHolder;
|
import com.djrapitops.plugin.StaticHolder;
|
||||||
import com.djrapitops.plugin.task.RunnableFactory;
|
import com.djrapitops.plugin.task.RunnableFactory;
|
||||||
|
import com.djrapitops.plugin.task.ThreadRunnable;
|
||||||
import net.md_5.bungee.api.CommandSender;
|
import net.md_5.bungee.api.CommandSender;
|
||||||
import net.md_5.bungee.api.ProxyConfig;
|
import net.md_5.bungee.api.ProxyConfig;
|
||||||
import net.md_5.bungee.api.ProxyServer;
|
import net.md_5.bungee.api.ProxyServer;
|
||||||
@ -48,6 +49,7 @@ public class BungeeMockUtil extends MockUtil {
|
|||||||
StaticHolder.register(planMock);
|
StaticHolder.register(planMock);
|
||||||
|
|
||||||
StaticHolder.saveInstance(MockitoJUnitRunner.class, PlanBungee.class);
|
StaticHolder.saveInstance(MockitoJUnitRunner.class, PlanBungee.class);
|
||||||
|
StaticHolder.saveInstance(ThreadRunnable.class, PlanBungee.class);
|
||||||
|
|
||||||
doCallRealMethod().when(planMock).getVersion();
|
doCallRealMethod().when(planMock).getVersion();
|
||||||
doCallRealMethod().when(planMock).getColorScheme();
|
doCallRealMethod().when(planMock).getColorScheme();
|
||||||
|
Loading…
Reference in New Issue
Block a user