package com.dangdang.ddframe.job.lite.internal.sharding; import com.dangdang.ddframe.job.lite.fixture.LiteJsonConstants; import com.dangdang.ddframe.job.lite.internal.storage.JobNodeStorage; import org.apache.curator.framework.recipes.cache.TreeCacheEvent; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.unitils.util.ReflectionUtils; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; public final class MonitorExecutionListenerManagerTest { @Mock private JobNodeStorage jobNodeStorage; @Mock private ExecutionService executionService; private final MonitorExecutionListenerManager monitorExecutionListenerManager = new MonitorExecutionListenerManager(null, "test_job"); @Before public void setUp() throws NoSuchFieldException { MockitoAnnotations.initMocks(this); ReflectionUtils.setFieldValue(monitorExecutionListenerManager, monitorExecutionListenerManager.getClass().getSuperclass().getDeclaredField("jobNodeStorage"), jobNodeStorage); ReflectionUtils.setFieldValue(monitorExecutionListenerManager, "executionService", executionService); } @Test public void assertMonitorExecutionSettingsChangedJobListenerWhenIsNotFailoverPath() { monitorExecutionListenerManager.new MonitorExecutionSettingsChangedJobListener().dataChanged("/test_job/other", TreeCacheEvent.Type.NODE_ADDED, LiteJsonConstants.getJobJson()); verify(executionService, times(0)).clearAllRunningInfo(); } @Test public void assertMonitorExecutionSettingsChangedJobListenerWhenIsFailoverPathButNotUpdate() { monitorExecutionListenerManager.new MonitorExecutionSettingsChangedJobListener().dataChanged("/test_job/config", TreeCacheEvent.Type.NODE_ADDED, ""); verify(executionService, times(0)).clearAllRunningInfo(); } @Test public void assertMonitorExecutionSettingsChangedJobListenerWhenIsFailoverPathAndUpdateButEnableFailover() { monitorExecutionListenerManager.new MonitorExecutionSettingsChangedJobListener().dataChanged("/test_job/config", TreeCacheEvent.Type.NODE_UPDATED, LiteJsonConstants.getJobJson()); verify(executionService, times(0)).clearAllRunningInfo(); } @Test public void assertMonitorExecutionSettingsChangedJobListenerWhenIsFailoverPathAndUpdateButDisableFailover() { monitorExecutionListenerManager.new MonitorExecutionSettingsChangedJobListener().dataChanged( "/test_job/config", TreeCacheEvent.Type.NODE_UPDATED, LiteJsonConstants.getJobJsonWithMonitorExecution(false)); verify(executionService).clearAllRunningInfo(); } }