Kick count, tests for the added Keys, equals methods, test fixes

This commit is contained in:
Rsl1122 2018-06-02 08:37:24 +03:00
parent efda292a37
commit efb1e33673
9 changed files with 128 additions and 36 deletions

View File

@ -66,11 +66,22 @@ public class GeoInfo {
if (o == null || getClass() != o.getClass()) return false;
GeoInfo geoInfo = (GeoInfo) o;
return Objects.equal(ip, geoInfo.ip) &&
Objects.equal(geolocation, geoInfo.geolocation);
Objects.equal(geolocation, geoInfo.geolocation) &&
Objects.equal(ipHash, geoInfo.ipHash);
}
@Override
public int hashCode() {
return Objects.hashCode(ip, geolocation);
return Objects.hashCode(ip, geolocation, ipHash);
}
@Override
public String toString() {
return "GeoInfo{" +
"ip='" + ip + '\'' +
", geolocation='" + geolocation + '\'' +
", ipHash='" + ipHash + '\'' +
", lastUsed=" + lastUsed +
'}';
}
}

View File

@ -22,6 +22,6 @@ public class PlayerKeys {
public static final Key<Long> REGISTERED = new Key<>(Long.class, "registered");
public static final Key<DateMap<UUID>> KICKS = new Key<>(new Type<DateMap<UUID>>() {}, "kicks");
public static final Key<Integer> KICK_COUNT = new Key<>(Integer.class, "kick_count");
public static final Key<DateMap<GeoInfo>> GEO_INFO = new Key<>(new Type<DateMap<GeoInfo>>() {}, "geo_info");
}

View File

@ -1,5 +1,6 @@
package com.djrapitops.plan.data.store.objects;
import java.util.Objects;
import java.util.UUID;
/**
@ -30,4 +31,29 @@ public class Nickname {
public UUID getServerUUID() {
return serverUUID;
}
@Override
public String toString() {
return "Nickname{" +
"name='" + name + '\'' +
", lastUsed=" + lastUsed +
", serverUUID=" + serverUUID +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Nickname)) return false;
Nickname nickname = (Nickname) o;
return lastUsed == nickname.lastUsed &&
Objects.equals(name, nickname.name) &&
Objects.equals(serverUUID, nickname.serverUUID);
}
@Override
public int hashCode() {
return Objects.hash(name, lastUsed, serverUUID);
}
}

View File

@ -475,9 +475,11 @@ public class UsersTable extends UserIDTable {
if (set.next()) {
long registered = set.getLong(Col.REGISTERED.get());
String name = set.getString(Col.USER_NAME.get());
int timesKicked = set.getInt(Col.TIMES_KICKED.get());
container.putRawData(PlayerKeys.REGISTERED, registered);
container.putRawData(PlayerKeys.NAME, name);
container.putRawData(PlayerKeys.KICK_COUNT, timesKicked);
}
return container;
@ -489,6 +491,7 @@ public class UsersTable extends UserIDTable {
returnValue.putRawData(PlayerKeys.UUID, uuid);
returnValue.putSupplier(PlayerKeys.REGISTERED, () -> returnValue.getUnsafe(key).getUnsafe(PlayerKeys.REGISTERED));
returnValue.putSupplier(PlayerKeys.NAME, () -> returnValue.getUnsafe(key).getUnsafe(PlayerKeys.NAME));
returnValue.putSupplier(PlayerKeys.KICK_COUNT, () -> returnValue.getUnsafe(key).getUnsafe(PlayerKeys.KICK_COUNT));
return returnValue;
}

View File

@ -6,7 +6,7 @@ package com.djrapitops.plan.system.info.server;
import com.djrapitops.plan.PlanBungee;
import com.djrapitops.plan.api.exceptions.EnableException;
import com.djrapitops.plan.api.exceptions.database.DBException;
import com.djrapitops.plan.api.exceptions.database.DBOpException;
import com.djrapitops.plan.system.database.databases.Database;
import com.djrapitops.plan.system.webserver.WebServerSystem;
import com.djrapitops.plugin.api.utility.log.Log;
@ -38,7 +38,7 @@ public class BungeeServerInfo extends ServerInfo {
} else {
server = registerBungeeInfo(db);
}
} catch (DBException e) {
} catch (DBOpException e) {
throw new EnableException("Failed to read Server information from Database.");
}
return server;

View File

@ -16,8 +16,6 @@ import java.util.TimeZone;
*/
public class FormatUtils {
private static final DecimalFormat df = new DecimalFormat(Settings.FORMAT_DECIMALS.toString());
/**
* Constructor used to hide the public constructor
*/
@ -210,7 +208,7 @@ public class FormatUtils {
* @return String format of the double.
*/
public static String cutDecimals(double d) {
return df.format(d);
return new DecimalFormat(Settings.FORMAT_DECIMALS.toString()).format(d);
}
public static String formatIP(String ip) {

View File

@ -0,0 +1,26 @@
package com.djrapitops.plan.data.container;
import org.junit.Test;
import java.io.UnsupportedEncodingException;
import java.security.NoSuchAlgorithmException;
import static org.junit.Assert.assertEquals;
/**
* Test for functionality of GeoInfo object.
*
* @author Rsl1122
*/
public class GeoInfoTest {
@Test
public void automaticallyHidesLast16Bits() throws UnsupportedEncodingException, NoSuchAlgorithmException {
String test = "1.2.3.4";
String expected = "1.2.xx.xx";
String result = new GeoInfo(test, "Irrelevant", 3).getIp();
assertEquals(expected, result);
}
}

View File

@ -3,11 +3,14 @@ package com.djrapitops.plan.system.cache;
import com.djrapitops.plan.Plan;
import com.djrapitops.plan.api.exceptions.EnableException;
import com.djrapitops.plan.system.BukkitSystem;
import com.djrapitops.plan.system.settings.Settings;
import com.djrapitops.plugin.StaticHolder;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.ClassRule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import utilities.Teardown;
import utilities.mocks.BukkitMockUtil;
import static org.junit.Assert.assertEquals;
@ -25,6 +28,7 @@ public class GeolocationCacheTest {
@BeforeClass
public static void setUpClass() throws Exception {
Teardown.resetSettingsTempValues();
BukkitMockUtil mockUtil = BukkitMockUtil.setUp()
.withDataFolder(temporaryFolder.getRoot())
.withLogging()
@ -35,14 +39,24 @@ public class GeolocationCacheTest {
StaticHolder.saveInstance(GeolocationCacheTest.class, planMock.getClass());
}
@AfterClass
public static void tearDownClass() {
Teardown.resetSettingsTempValues();
}
@Test
public void testGeolocationCache() throws EnableException {
Settings.WEBSERVER_PORT.setTemporaryValue(9005);
BukkitSystem system = new BukkitSystem(planMock);
system.enable();
try {
system.enable();
String expected = "Germany";
String result = GeolocationCache.getCountry("141.52.255.1");
assertEquals(expected, result);
String expected = "Germany";
String result = GeolocationCache.getCountry("141.52.255.1");
assertEquals(expected, result);
} finally {
system.disable();
}
}
}

View File

@ -13,6 +13,8 @@ import com.djrapitops.plan.data.WebUser;
import com.djrapitops.plan.data.container.*;
import com.djrapitops.plan.data.store.containers.PlayerContainer;
import com.djrapitops.plan.data.store.keys.PlayerKeys;
import com.djrapitops.plan.data.store.objects.DateMap;
import com.djrapitops.plan.data.store.objects.Nickname;
import com.djrapitops.plan.data.time.GMTimes;
import com.djrapitops.plan.data.time.WorldTimes;
import com.djrapitops.plan.system.database.databases.sql.SQLDB;
@ -39,7 +41,6 @@ import java.io.UnsupportedEncodingException;
import java.lang.management.ManagementFactory;
import java.lang.management.OperatingSystemMXBean;
import java.security.NoSuchAlgorithmException;
import java.sql.SQLException;
import java.util.*;
import static org.junit.Assert.*;
@ -226,6 +227,7 @@ public class SQLiteTest {
private void saveUserOne(SQLDB database) {
database.getUsersTable().registerUser(playerUUID, 123456789L, "Test");
database.getUsersTable().kicked(playerUUID);
}
private void saveUserTwo() {
@ -237,7 +239,7 @@ public class SQLiteTest {
}
@Test
public void testActionsTable() throws SQLException {
public void testActionsTable() {
saveUserOne();
ActionsTable actionsTable = db.getActionsTable();
@ -251,7 +253,7 @@ public class SQLiteTest {
}
@Test
public void testIPTable() throws SQLException, DBInitException {
public void testIPTable() throws DBInitException {
saveUserOne();
GeoInfoTable geoInfoTable = db.getGeoInfoTable();
@ -276,7 +278,7 @@ public class SQLiteTest {
}
@Test
public void testNicknamesTable() throws SQLException, DBInitException {
public void testNicknamesTable() throws DBInitException {
saveUserOne();
NicknamesTable nickTable = db.getNicknamesTable();
@ -357,7 +359,7 @@ public class SQLiteTest {
}
@Test
public void testSessionPlaytimeSaving() throws SQLException, DBInitException {
public void testSessionPlaytimeSaving() throws DBInitException {
saveTwoWorlds();
saveUserOne();
saveUserTwo();
@ -388,7 +390,7 @@ public class SQLiteTest {
}
@Test
public void testSessionSaving() throws SQLException, DBInitException {
public void testSessionSaving() throws DBInitException {
saveUserOne();
saveUserTwo();
@ -453,7 +455,7 @@ public class SQLiteTest {
}
@Test
public void testUserInfoTableRegisterRegistered() throws SQLException, DBInitException {
public void testUserInfoTableRegisterRegistered() throws DBInitException {
saveUserOne();
UsersTable usersTable = db.getUsersTable();
assertTrue(usersTable.isRegistered(playerUUID));
@ -512,7 +514,7 @@ public class SQLiteTest {
}
@Test
public void testUsersTableUpdateName() throws SQLException, DBInitException {
public void testUsersTableUpdateName() throws DBInitException {
saveUserOne();
UsersTable usersTable = db.getUsersTable();
@ -529,10 +531,10 @@ public class SQLiteTest {
}
@Test
public void testUsersTableKickSaving() throws SQLException, DBInitException {
public void testUsersTableKickSaving() throws DBInitException {
saveUserOne();
UsersTable usersTable = db.getUsersTable();
assertEquals(0, usersTable.getTimesKicked(playerUUID));
assertEquals(1, usersTable.getTimesKicked(playerUUID));
int random = new Random().nextInt(20);
@ -540,11 +542,11 @@ public class SQLiteTest {
usersTable.kicked(playerUUID);
}
commitTest();
assertEquals(random + 1, usersTable.getTimesKicked(playerUUID));
assertEquals(random + 2, usersTable.getTimesKicked(playerUUID));
}
@Test
public void testRemovalSingleUser() throws SQLException {
public void testRemovalSingleUser() {
saveUserTwo();
UserInfoTable userInfoTable = db.getUserInfoTable();
@ -580,7 +582,7 @@ public class SQLiteTest {
}
@Test
public void testRemovalEverything() throws SQLException, UnsupportedEncodingException, NoSuchAlgorithmException {
public void testRemovalEverything() throws UnsupportedEncodingException, NoSuchAlgorithmException {
UserInfoTable userInfoTable = db.getUserInfoTable();
UsersTable usersTable = db.getUsersTable();
SessionsTable sessionsTable = db.getSessionsTable();
@ -712,7 +714,7 @@ public class SQLiteTest {
}
@Test
public void testSessionTableGetInfoOfServer() throws SQLException, DBInitException {
public void testSessionTableGetInfoOfServer() throws DBInitException {
saveUserOne();
saveUserTwo();
@ -739,7 +741,7 @@ public class SQLiteTest {
}
@Test
public void testKillTableGetKillsOfServer() throws SQLException, DBInitException {
public void testKillTableGetKillsOfServer() throws DBInitException {
saveUserOne();
saveUserTwo();
@ -758,7 +760,7 @@ public class SQLiteTest {
}
@Test
public void testBackupAndRestore() throws SQLException, DBException, UnsupportedEncodingException, NoSuchAlgorithmException {
public void testBackupAndRestore() throws DBException, UnsupportedEncodingException, NoSuchAlgorithmException {
System.out.println("- Creating Backup Database -");
SQLiteDB backup = new SQLiteDB("debug-backup" + System.currentTimeMillis());
backup.init();
@ -793,7 +795,7 @@ public class SQLiteTest {
}
@Test
public void testSaveWorldTimes() throws SQLException {
public void testSaveWorldTimes() {
saveUserOne();
WorldTimes worldTimes = createWorldTimes();
WorldTimesTable worldTimesTable = db.getWorldTimesTable();
@ -808,7 +810,7 @@ public class SQLiteTest {
}
@Test
public void testSaveAllWorldTimes() throws SQLException {
public void testSaveAllWorldTimes() {
saveUserOne();
WorldTimes worldTimes = createWorldTimes();
System.out.println(worldTimes);
@ -830,7 +832,7 @@ public class SQLiteTest {
}
@Test
public void testSaveSessionsWorldTimes() throws SQLException {
public void testSaveSessionsWorldTimes() {
SessionsTable sessionsTable = db.getSessionsTable();
saveUserOne();
@ -855,14 +857,14 @@ public class SQLiteTest {
}
@Test
public void testGetUserWorldTimes() throws SQLException {
public void testGetUserWorldTimes() {
testSaveSessionsWorldTimes();
WorldTimes worldTimesOfUser = db.getWorldTimesTable().getWorldTimesOfUser(playerUUID);
assertEquals(createWorldTimes(), worldTimesOfUser);
}
@Test
public void testGetServerWorldTimes() throws SQLException {
public void testGetServerWorldTimes() {
testSaveSessionsWorldTimes();
WorldTimes worldTimesOfServer = db.getWorldTimesTable().getWorldTimesOfServer(TestConstants.SERVER_UUID);
assertEquals(createWorldTimes(), worldTimesOfServer);
@ -896,7 +898,7 @@ public class SQLiteTest {
}
@Test
public void testWorldTableGetWorldNamesNoException() throws SQLException, UnsupportedEncodingException, NoSuchAlgorithmException {
public void testWorldTableGetWorldNamesNoException() throws UnsupportedEncodingException, NoSuchAlgorithmException {
saveAllData(db);
Set<String> worldNames = db.getWorldTable().getWorldNames(TestConstants.SERVER_UUID);
assertEquals(new HashSet<>(worlds), worldNames);
@ -942,7 +944,7 @@ public class SQLiteTest {
}
@Test
public void testWorldTableAlterV16() throws SQLException {
public void testWorldTableAlterV16() {
saveUserOne();
new Table("test", db) {
@Override
@ -1030,7 +1032,7 @@ public class SQLiteTest {
}
@Test
public void testNewContainerForPlayer() throws UnsupportedEncodingException, SQLException, NoSuchAlgorithmException {
public void testNewContainerForPlayer() throws UnsupportedEncodingException, NoSuchAlgorithmException {
saveAllData(db);
long start = System.nanoTime();
@ -1040,7 +1042,10 @@ public class SQLiteTest {
assertTrue(container.supports(PlayerKeys.UUID));
assertTrue(container.supports(PlayerKeys.REGISTERED));
assertTrue(container.supports(PlayerKeys.NAME));
assertTrue(container.supports(PlayerKeys.KICK_COUNT));
assertTrue(container.supports(PlayerKeys.GEO_INFO));
assertTrue(container.supports(PlayerKeys.NICKNAMES));
long end = System.nanoTime();
@ -1049,5 +1054,14 @@ public class SQLiteTest {
OptionalAssert.equals(playerUUID, container.getValue(PlayerKeys.UUID));
OptionalAssert.equals(123456789L, container.getValue(PlayerKeys.REGISTERED));
OptionalAssert.equals("Test", container.getValue(PlayerKeys.NAME));
OptionalAssert.equals(1, container.getValue(PlayerKeys.KICK_COUNT));
DateMap<GeoInfo> expectedGeoInfo = GeoInfo.intoDateMap(
Collections.singletonList(new GeoInfo("1.2.3.4", "TestLoc", 223456789, "ZpT4PJ9HbaMfXfa8xSADTn5X1CHSR7nTT0ntv8hKdkw="))
);
OptionalAssert.equals(expectedGeoInfo, container.getValue(PlayerKeys.GEO_INFO));
List<Nickname> expectedNicknames = Collections.singletonList(new Nickname("TestNick", -1, TestConstants.SERVER_UUID));
OptionalAssert.equals(expectedNicknames, container.getValue(PlayerKeys.NICKNAMES));
}
}