/* * ***************************************************************************** * * Pentaho Data Integration * * Copyright (C) 2017 by Pentaho : http://www.pentaho.com * * ******************************************************************************* * 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 org.pentaho.di.engine.configuration.impl.pentaho; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import org.pentaho.di.base.AbstractMeta; import org.pentaho.di.cluster.SlaveServer; import org.pentaho.di.core.exception.KettleException; import org.pentaho.di.core.logging.LogChannelInterface; import org.pentaho.di.core.variables.VariableSpace; import org.pentaho.di.trans.TransExecutionConfiguration; import static org.junit.Assert.*; import static org.mockito.Mockito.doReturn; /** * Created by bmorrise on 3/22/17. */ @RunWith( MockitoJUnitRunner.class ) public class DefaultRunConfigurationExecutorTest { private DefaultRunConfigurationExecutor defaultRunConfigurationExecutor; @Mock private AbstractMeta abstractMeta; @Mock private VariableSpace variableSpace; @Mock private SlaveServer slaveServer; @Before public void setup() { defaultRunConfigurationExecutor = new DefaultRunConfigurationExecutor(); } @Test public void testExecuteLocal() throws Exception { DefaultRunConfiguration defaultRunConfiguration = new DefaultRunConfiguration(); defaultRunConfiguration.setName( "Default Configuration" ); defaultRunConfiguration.setLocal( true ); TransExecutionConfiguration transExecutionConfiguration = new TransExecutionConfiguration(); defaultRunConfigurationExecutor .execute( defaultRunConfiguration, transExecutionConfiguration, abstractMeta, variableSpace ); assertTrue( transExecutionConfiguration.isExecutingLocally() ); } @Test public void testExecuteRemote() throws Exception { DefaultRunConfiguration defaultRunConfiguration = new DefaultRunConfiguration(); defaultRunConfiguration.setName( "Default Configuration" ); defaultRunConfiguration.setLocal( false ); defaultRunConfiguration.setRemote( true ); defaultRunConfiguration.setServer( "Test Server" ); TransExecutionConfiguration transExecutionConfiguration = new TransExecutionConfiguration(); doReturn( slaveServer ).when( abstractMeta ).findSlaveServer( "Test Server" ); defaultRunConfigurationExecutor .execute( defaultRunConfiguration, transExecutionConfiguration, abstractMeta, variableSpace ); assertFalse( transExecutionConfiguration.isExecutingLocally() ); assertTrue( transExecutionConfiguration.isExecutingRemotely() ); assertEquals( transExecutionConfiguration.getRemoteServer(), slaveServer ); } @Test public void testExecuteClustered() throws Exception { DefaultRunConfiguration defaultRunConfiguration = new DefaultRunConfiguration(); defaultRunConfiguration.setName( "Default Configuration" ); defaultRunConfiguration.setLocal( false ); defaultRunConfiguration.setRemote( false ); defaultRunConfiguration.setClustered( true ); TransExecutionConfiguration transExecutionConfiguration = new TransExecutionConfiguration(); defaultRunConfigurationExecutor .execute( defaultRunConfiguration, transExecutionConfiguration, abstractMeta, variableSpace ); assertTrue( transExecutionConfiguration.isExecutingClustered() ); assertFalse( transExecutionConfiguration.isExecutingRemotely() ); assertFalse( transExecutionConfiguration.isExecutingLocally() ); } @Test public void testExecuteRemoteNotFound() throws Exception { DefaultRunConfiguration defaultRunConfiguration = new DefaultRunConfiguration(); defaultRunConfiguration.setName( "Default Configuration" ); defaultRunConfiguration.setLocal( false ); defaultRunConfiguration.setRemote( true ); defaultRunConfiguration.setServer( "Test Server" ); TransExecutionConfiguration transExecutionConfiguration = new TransExecutionConfiguration(); doReturn( slaveServer ).when( abstractMeta ).findSlaveServer( null ); try { defaultRunConfigurationExecutor .execute( defaultRunConfiguration, transExecutionConfiguration, abstractMeta, variableSpace ); fail(); } catch ( KettleException e ) { // expected } } }