/* * Copyright 2009 Google Inc. * * 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 com.google.jstestdriver; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Set; import junit.framework.TestCase; import com.google.common.collect.Sets; import com.google.gson.JsonArray; import com.google.jstestdriver.action.ConfigureGatewayAction; import com.google.jstestdriver.action.ConfigureGatewayAction.Factory; import com.google.jstestdriver.action.UploadAction; import com.google.jstestdriver.browser.BrowserActionExecutorAction; import com.google.jstestdriver.browser.BrowserIdStrategy; import com.google.jstestdriver.browser.BrowserRunner; import com.google.jstestdriver.browser.CommandLineBrowserRunner; import com.google.jstestdriver.hooks.ActionListProcessor; import com.google.jstestdriver.hooks.TestsPreProcessor; import com.google.jstestdriver.output.FileNameFormatter; import com.google.jstestdriver.output.PrintXmlTestResultsAction; import com.google.jstestdriver.output.XmlPrinter; import com.google.jstestdriver.output.XmlPrinterImpl; import com.google.jstestdriver.util.NullStopWatch; /** * @author jeremiele@google.com (Jeremie Lenfant-Engelmann) * @author corysmith@google.com (Cory Smith) */ public class DefaultActionListProviderTest extends TestCase { Set<BrowserRunner> browsers = Sets.<BrowserRunner>newHashSet( new CommandLineBrowserRunner("browser", "", null)); public void testParseFlagsAndCreateActionQueue() throws Exception { DefaultActionListProvider provider = createProvider(9876, 9877, false, Collections.<String> emptyList(), Collections .<ActionListProcessor> emptySet(), "", null); List<Action> actions = provider.get(); ArrayList<Class<? extends Action>> expectedActions = new ArrayList<Class<? extends Action>>(); expectedActions.add(ServerStartupAction.class); expectedActions.add(ConfigureGatewayAction.class); expectedActions.add(UploadAction.class); expectedActions.add(BrowserStartupAction.class); assertSequence(expectedActions, actions); } private DefaultActionListProvider createProvider(int port, int sslPort, boolean reset, List<String> tests, Set<ActionListProcessor> processors, String testOutput, XmlPrinter xmlPrinter) { ActionFactory actionFactory = new ActionFactory(null, Collections.<TestsPreProcessor>emptySet(), false, null, null, new NullStopWatch()); return new DefaultActionListProvider( tests, Collections.<String>emptyList(), reset, Collections.<String>emptyList(), port, sslPort, testOutput, processors, xmlPrinter, new ActionSequenceBuilder( actionFactory, new BrowserActionExecutorAction( null, null, null, null, null, -1, null, null, null), new FailureCheckerAction(null, null), new UploadAction(null), new CapturedBrowsers(new BrowserIdStrategy(new MockTime(0))), null, newConfigureGatewayActionFactory(), new BrowserStartupAction(null, null, null, null, null), null), true); } private Factory newConfigureGatewayActionFactory() { return new Factory() { public ConfigureGatewayAction create(JsonArray gatewayConfig) { return new ConfigureGatewayAction(null, null, null, null, gatewayConfig); } }; } public void testParseWithServerAndReset() throws Exception { String serverAddress = "http://otherserver:8989"; DefaultActionListProvider parser = createProvider(-1, -1, true, Collections .<String> emptyList(), Collections.<ActionListProcessor>emptySet(), "", null); FlagsImpl flags = new FlagsImpl(); flags.setServer(serverAddress); flags.setBrowser(Arrays.asList("browser1")); flags.setReset(true); List<Class<? extends Action>> expectedActions = new ArrayList<Class<? extends Action>>(); expectedActions.add(ConfigureGatewayAction.class); expectedActions.add(UploadAction.class); expectedActions.add(BrowserActionExecutorAction.class); List<Action> actions = parser.get(); assertSequence(expectedActions, actions); } public void testParseFlagsAndCreateTestActions() throws Exception { List<String> tests = Arrays.asList("foo.testBar"); DefaultActionListProvider parser = createProvider(9876, 9877, false, tests, Collections .<ActionListProcessor> emptySet(), "", null); List<Class<? extends Action>> expectedActions = new ArrayList<Class<? extends Action>>(); expectedActions.add(ServerStartupAction.class); expectedActions.add(ConfigureGatewayAction.class); expectedActions.add(UploadAction.class); expectedActions.add(BrowserActionExecutorAction.class); expectedActions.add(ServerShutdownAction.class); expectedActions.add(FailureCheckerAction.class); List<Action> actions = parser.get(); assertSequence(expectedActions, actions); } public void testXmlTestResultsActionIsAddedIfTestOutputFolderIsSet() throws Exception { List<String> tests = Arrays.asList("foo.testBar"); DefaultActionListProvider parser = createProvider(9876, 9877, false, tests, Collections .<ActionListProcessor> emptySet(), ".", new XmlPrinterImpl(null, null, new FileNameFormatter())); List<Class<? extends Action>> expectedActions = new ArrayList<Class<? extends Action>>(); expectedActions.add(ServerStartupAction.class); expectedActions.add(ConfigureGatewayAction.class); expectedActions.add(UploadAction.class); expectedActions.add(BrowserActionExecutorAction.class); expectedActions.add(PrintXmlTestResultsAction.class); expectedActions.add(ServerShutdownAction.class); expectedActions.add(FailureCheckerAction.class); List<Action> actions = parser.get(); assertSequence(expectedActions, actions); } private void assertSequence(List<Class<? extends Action>> expectedActions, List<Action> actions) { assertNotNull(actions); List<Class<? extends Action>> actual = new ArrayList<Class<? extends Action>>(); for (Action action : actions) { actual.add(action != null ? action.getClass() : null); } assertEquals(expectedActions, actual); } }