/* * Copyright 2012 Jason Miller * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package jj; import static org.hamcrest.CoreMatchers.*; import static org.junit.Assert.*; import jj.ServerStarting.Priority; import jj.event.MockPublisher; import jj.execution.JJTask; import jj.execution.MockTaskRunner; import jj.server.Server; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; /** * @author jason * */ @RunWith(MockitoJUnitRunner.class) public class JJServerLifecycleTest { @Mock Server server; MockPublisher publisher; MockTaskRunner taskRunner; @Mock Version version; @Mock JJTask<?> p1; @Mock JJTask<?> p2; @Mock JJTask<?> p3; @Mock JJTask<?> highest_task1; @Mock JJTask<?> highest_task2; @Mock JJTask<?> highest_task3; @Mock JJTask<?> highest_task4; @Mock JJTask<?> high_task1; @Mock JJTask<?> high_task2; @Mock JJTask<?> high_task3; @Mock JJTask<?> high_task4; @Mock JJTask<?> mid_task1; @Mock JJTask<?> mid_task2; @Mock JJTask<?> mid_task3; @Mock JJTask<?> mid_task4; @Mock JJTask<?> low_task1; @Mock JJTask<?> low_task2; @Mock JJTask<?> low_task3; @Mock JJTask<?> low_task4; @Mock JJTask<?> lowest_task1; @Mock JJTask<?> lowest_task2; @Mock JJTask<?> lowest_task3; @Mock JJTask<?> lowest_task4; @Test public void test() throws Exception { // given publisher = new MockPublisher(); publisher.onPublish = event -> { ServerStarting starting = (ServerStarting)event; starting.registerStartupTask(Priority.Highest, highest_task1); starting.registerStartupTask(Priority.Highest, highest_task2); starting.registerStartupTask(Priority.Highest, highest_task3); starting.registerStartupTask(Priority.Highest, highest_task4); starting.registerStartupTask(Priority.NearHighest, high_task1); starting.registerStartupTask(Priority.NearHighest, high_task2); starting.registerStartupTask(Priority.NearHighest, high_task3); starting.registerStartupTask(Priority.NearHighest, high_task4); starting.registerStartupTask(Priority.Middle, mid_task1); starting.registerStartupTask(Priority.Middle, mid_task2); starting.registerStartupTask(Priority.Middle, mid_task3); starting.registerStartupTask(Priority.Middle, mid_task4); starting.registerStartupTask(Priority.NearLowest, low_task1); starting.registerStartupTask(Priority.NearLowest, low_task2); starting.registerStartupTask(Priority.NearLowest, low_task3); starting.registerStartupTask(Priority.NearLowest, low_task4); starting.registerStartupTask(Priority.Lowest, lowest_task1); starting.registerStartupTask(Priority.Lowest, lowest_task2); starting.registerStartupTask(Priority.Lowest, lowest_task3); starting.registerStartupTask(Priority.Lowest, lowest_task4); }; taskRunner = new MockTaskRunner(); JJServerLifecycle jsl = new JJServerLifecycle(server, publisher, taskRunner, version); // when jsl.start(); // then assertTaskList(); // given publisher.events.clear(); publisher.onPublish = null; // when jsl.stop(); // then assertThat(publisher.events.get(0), is(instanceOf(ServerStopping.class))); } @SuppressWarnings("unchecked") private void assertTaskList() { assertThat(taskRunner.tasks, hasItems( highest_task1, highest_task2, highest_task3, highest_task4, high_task1, high_task2, high_task3, high_task4, mid_task1, mid_task2, mid_task3, mid_task4, low_task1, low_task2, low_task3, low_task4, lowest_task1, lowest_task2, lowest_task3, lowest_task4 )); } }