From 1889c2605e9801784a947d2484a712867f5ef87b Mon Sep 17 00:00:00 2001 From: games647 Date: Thu, 2 May 2024 10:57:10 +0200 Subject: [PATCH] Add unit test for multi-release scheduler --- README.md | 2 +- core/pom.xml | 27 +------ .../fastlogin/core/AsyncSchedulerTest.java | 70 +++++++++++++++++++ pom.xml | 16 ++++- 4 files changed, 87 insertions(+), 28 deletions(-) create mode 100644 core/src/test/java/com/github/games647/fastlogin/core/AsyncSchedulerTest.java diff --git a/README.md b/README.md index d0b265a2..bf8187ad 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,7 @@ Possible values: `Premium`, `Cracked`, `Unknown` ## Requirements -* Java 8 supported, but Java 21 recommended for improved threading +* Java 8 supported, but Java 21+ recommended for improved threading * Server software in offlinemode: * Spigot (or a fork e.g. Paper) 1.8.8+ * Protocol plugin: diff --git a/core/pom.xml b/core/pom.xml index 093ffd31..c8a26cd8 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -77,14 +77,6 @@ - - org.apache.maven.plugins - maven-compiler-plugin - - 8 - 8 - - @@ -98,11 +90,10 @@ - org.apache.maven.plugins maven-compiler-plugin - jdk9 + jdk21 compile @@ -116,22 +107,6 @@ - - org.apache.maven.plugins - maven-jar-plugin - - - default-jar - - - - true - - - - - - diff --git a/core/src/test/java/com/github/games647/fastlogin/core/AsyncSchedulerTest.java b/core/src/test/java/com/github/games647/fastlogin/core/AsyncSchedulerTest.java new file mode 100644 index 00000000..32e49d92 --- /dev/null +++ b/core/src/test/java/com/github/games647/fastlogin/core/AsyncSchedulerTest.java @@ -0,0 +1,70 @@ +/* + * SPDX-License-Identifier: MIT + * + * The MIT License (MIT) + * + * Copyright (c) 2015-2023 games647 and contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package com.github.games647.fastlogin.core; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.DisabledForJreRange; +import org.junit.jupiter.api.condition.EnabledForJreRange; +import org.junit.jupiter.api.condition.JRE; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.concurrent.Executors; +import java.util.concurrent.atomic.AtomicBoolean; + +class AsyncSchedulerTest { + + @Test + @DisabledForJreRange(min = JRE.JAVA_21) + void legacyScheduler() { + Logger logger = LoggerFactory.getLogger(AsyncSchedulerTest.class); + AsyncScheduler scheduler = new AsyncScheduler(logger, Executors.newCachedThreadPool()); + + AtomicBoolean virtual = new AtomicBoolean(false); + scheduler.runAsync(() -> setVirtual(virtual)).join(); + + Assertions.assertFalse(virtual.get()); + } + + @Test + @EnabledForJreRange(min = JRE.JAVA_21) + void greenThread() { + Logger logger = LoggerFactory.getLogger(AsyncSchedulerTest.class); + AsyncScheduler scheduler = new AsyncScheduler(logger, Executors.newCachedThreadPool()); + + AtomicBoolean virtual = new AtomicBoolean(false); + scheduler.runAsync(() -> setVirtual(virtual)).join(); + + Assertions.assertTrue(virtual.get()); + } + + private static void setVirtual(AtomicBoolean virtual) { + if (Thread.currentThread().isVirtual()) { + virtual.set(true); + } + } +} diff --git a/pom.xml b/pom.xml index b387f545..599d5cff 100644 --- a/pom.xml +++ b/pom.xml @@ -157,11 +157,25 @@ maven-surefire-plugin 3.2.5 + + + + ${project.build.directory}/classes/META-INF/versions/21 + + + + ${project.build.outputDirectory} + + + - org.apache.maven.plugins maven-jar-plugin + 3.4.1 + default-jar