Archived
0

Event loop benchmark

This commit is contained in:
Daniil
2018-07-25 20:56:43 +07:00
parent 1456a8c1ee
commit 944cd61c20
4 changed files with 45 additions and 3 deletions

View File

@@ -0,0 +1,30 @@
package ru.core.events;
import com.carrotsearch.junitbenchmarks.AbstractBenchmark;
import com.carrotsearch.junitbenchmarks.BenchmarkOptions;
import mc.core.events.LoginEvent;
import mc.core.events.SimpleEventLoop;
import org.junit.BeforeClass;
import org.junit.Test;
import ru.core.events.handlers.SampleEventHandler;
public class SimpleEventLoopBenchmark extends AbstractBenchmark {
private static SimpleEventLoop simpleEventLoop;
private static LoginEvent testEvent;
@BeforeClass
public static void setup(){
simpleEventLoop = new SimpleEventLoop();
simpleEventLoop.addEventHandler(new SampleEventHandler());
testEvent = new LoginEvent(null);
testEvent.setDenyReason("none");
}
@Test
@BenchmarkOptions(warmupRounds = 5, benchmarkRounds = 15)
public void benchmark() {
for (int i = 0; i < 50_000_000; i++) {
simpleEventLoop.callEvent(testEvent);
}
}
}

View File

@@ -4,19 +4,20 @@ import mc.core.events.LoginEvent;
import mc.core.events.SimpleEventLoop;
import org.junit.Assert;
import org.junit.Test;
import ru.core.events.handlers.FastEventHandler;
import ru.core.events.handlers.SampleEventHandler;
public class SimpleEventLoopTest {
@Test
public void loopWorks() {
SimpleEventLoop simpleEventLoop = new SimpleEventLoop();
simpleEventLoop.addEventHandler(new SampleEventHandler());
simpleEventLoop.addEventHandler(new FastEventHandler());
LoginEvent testEvent = new LoginEvent(null);
testEvent.setDenyReason("none");
simpleEventLoop.callEvent(testEvent);
Assert.assertEquals("Event handler was not called", "Hello from SampleEventHandler!", testEvent.getDenyReason());
}
}

View File

@@ -0,0 +1,11 @@
package ru.core.events.handlers;
import mc.core.events.EventHandler;
import mc.core.events.LoginEvent;
public class FastEventHandler {
@EventHandler
public void onPlayerLogin(LoginEvent event) {
}
}

View File

@@ -1,4 +1,4 @@
package ru.core.events;
package ru.core.events.handlers;
import mc.core.events.EventHandler;
import mc.core.events.LoginEvent;