package com.alibaba.doris.dataserver.event; import junit.framework.TestCase; import com.alibaba.doris.dataserver.event.server.DataServerEventListener; import com.alibaba.doris.dataserver.event.server.MigrateEventListener; import com.alibaba.doris.dataserver.event.server.ShutdownEvent; import com.alibaba.doris.dataserver.event.server.StartMigratingEvent; import com.alibaba.doris.dataserver.event.server.StartupEvent; import com.alibaba.doris.dataserver.event.server.StopMigratingEvent; /** * @author ajun Email:jack.yuj@alibaba-inc.com */ public class EventListenerManagerTest extends TestCase { public void testRegistEventListener() { // 没有注册任何监听器,调用fireEvent系统应该不抛出任何异常。 try { eventListenerManager.fireEvent(new StartupEvent()); } catch (Throwable e) { fail(e.getMessage()); } TestDataServerEventListener testListener = new TestDataServerEventListener(); eventListenerManager.registEventListener(testListener); eventListenerManager.fireEvent(new StartupEvent()); testListener.assertStartup(); } public void testFireStarupEvent() { TestDataServerEventListener testListener = new TestDataServerEventListener(); eventListenerManager.registEventListener(testListener); eventListenerManager.fireEvent(new StartupEvent()); testListener.assertStartup(); } public void testShutdownEvent() { TestDataServerEventListener testListener = new TestDataServerEventListener(); eventListenerManager.registEventListener(testListener); eventListenerManager.fireEvent(new ShutdownEvent()); testListener.assertShutdown(); } public void testStartMigratingEvent() { TestDataServerEventListener testListener = new TestDataServerEventListener(); eventListenerManager.registEventListener(testListener); eventListenerManager.fireEvent(new StartMigratingEvent()); testListener.assertStartMigrating(); } public void testStopMigratingEvent() { TestDataServerEventListener testListener = new TestDataServerEventListener(); eventListenerManager.registEventListener(testListener); eventListenerManager.fireEvent(new StopMigratingEvent()); testListener.assertStopMigrating(); } private static class TestDataServerEventListener implements DataServerEventListener, MigrateEventListener { public void onShutdown() { isShutdownEventArrived = true; } public void assertShutdown() { assertTrue(isShutdownEventArrived); } public void onStartMigrating() { isStartMigrating = true; } public void assertStartMigrating() { assertTrue(isStartMigrating); } public void onStartup() { isStartupEventArrived = true; } public void assertStartup() { assertTrue(isStartupEventArrived); } public void onStopMigrating() { isStopMigrating = true; } public void assertStopMigrating() { assertTrue(isStopMigrating); } private boolean isStartupEventArrived = false; private boolean isShutdownEventArrived = false; private boolean isStartMigrating = false; private boolean isStopMigrating = false; public void onInterruptMigrating() { } } private EventListenerManager eventListenerManager = new EventListenerManager(); }