blob: dde51a5453f53b11843131c59815c395edd61f00 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.apache.ambari.server.stack.upgrade.orchestrate;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertFalse;
import static junit.framework.Assert.assertTrue;
import static org.easymock.EasyMock.eq;
import static org.easymock.EasyMock.expect;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.api.services.AmbariMetaInfo;
import org.apache.ambari.server.controller.internal.UpgradeResourceProvider;
import org.apache.ambari.server.orm.dao.RepositoryVersionDAO;
import org.apache.ambari.server.orm.dao.UpgradeDAO;
import org.apache.ambari.server.orm.entities.RepositoryVersionEntity;
import org.apache.ambari.server.orm.entities.UpgradeEntity;
import org.apache.ambari.server.orm.entities.UpgradeHistoryEntity;
import org.apache.ambari.server.stack.upgrade.Direction;
import org.apache.ambari.server.stack.upgrade.UpgradePack;
import org.apache.ambari.server.state.Cluster;
import org.apache.ambari.server.state.ConfigHelper;
import org.apache.ambari.server.state.Service;
import org.apache.ambari.server.state.StackId;
import org.apache.ambari.server.state.repository.ClusterVersionSummary;
import org.apache.ambari.server.state.repository.VersionDefinitionXml;
import org.apache.ambari.spi.RepositoryType;
import org.apache.ambari.spi.upgrade.UpgradeType;
import org.easymock.EasyMock;
import org.easymock.EasyMockSupport;
import org.easymock.Mock;
import org.junit.Before;
import org.junit.Test;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
/**
* Tests {@link UpgradeContext}.
*/
public class UpgradeContextTest extends EasyMockSupport {
private final static String HDFS_SERVICE_NAME = "HDFS";
private final static String ZOOKEEPER_SERVICE_NAME = "ZOOKEEPER";
/**
* An existing upgrade which can be reverted.
*/
@Mock
private UpgradeEntity m_completedRevertableUpgrade;
/**
* The target repository of a completed upgrade.
*/
@Mock
private RepositoryVersionEntity m_targetRepositoryVersion;
/**
* The source repository of a completed upgrade.
*/
@Mock
private RepositoryVersionEntity m_sourceRepositoryVersion;
/**
* The cluster performing the upgrade.
*/
@Mock
private Cluster m_cluster;
/**
* HDFS
*/
@Mock
private Service m_hdfsService;
/**
* ZooKeeper
*/
@Mock
private Service m_zookeeperService;
@Mock
private UpgradeDAO m_upgradeDAO;
@Mock
private RepositoryVersionDAO m_repositoryVersionDAO;
/**
* Used to mock out what services will be provided to us by the VDF/cluster.
*/
@Mock
private ClusterVersionSummary m_clusterVersionSummary;
/**
*
*/
@Mock
private VersionDefinitionXml m_vdfXml;
@Mock
private AmbariMetaInfo m_ambariMetaInfo;
/**
* The upgrade history to return for the completed upgrade.
*/
private List<UpgradeHistoryEntity> m_upgradeHistory = new ArrayList<>();
/**
* The cluster services.
*/
private Map<String, Service> m_services = new HashMap<>();
@Before
public void setup() throws Exception {
injectMocks(this);
expect(m_ambariMetaInfo.getUpgradePacks(
EasyMock.anyString(), EasyMock.anyString())).andReturn(Collections.emptyMap()).anyTimes();
expect(m_sourceRepositoryVersion.getId()).andReturn(1L).anyTimes();
expect(m_sourceRepositoryVersion.getStackId()).andReturn(new StackId("HDP", "2.6")).anyTimes();
expect(m_sourceRepositoryVersion.getVersion()).andReturn("2.6.0.0").anyTimes();
expect(m_targetRepositoryVersion.getId()).andReturn(99L).anyTimes();
expect(m_targetRepositoryVersion.getStackId()).andReturn(new StackId("HDP", "2.6")).anyTimes();
expect(m_targetRepositoryVersion.getVersion()).andReturn("2.6.0.2").anyTimes();
UpgradeHistoryEntity upgradeHistoryEntity = createNiceMock(UpgradeHistoryEntity.class);
expect(upgradeHistoryEntity.getServiceName()).andReturn(HDFS_SERVICE_NAME).anyTimes();
expect(upgradeHistoryEntity.getFromReposistoryVersion()).andReturn(m_sourceRepositoryVersion).anyTimes();
expect(upgradeHistoryEntity.getTargetRepositoryVersion()).andReturn(m_targetRepositoryVersion).anyTimes();
m_upgradeHistory = Lists.newArrayList(upgradeHistoryEntity);
expect(m_repositoryVersionDAO.findByPK(1L)).andReturn(m_sourceRepositoryVersion).anyTimes();
expect(m_repositoryVersionDAO.findByPK(99L)).andReturn(m_targetRepositoryVersion).anyTimes();
expect(m_upgradeDAO.findUpgrade(1L)).andReturn(m_completedRevertableUpgrade).anyTimes();
expect(
m_upgradeDAO.findLastUpgradeForCluster(EasyMock.anyLong(),
eq(Direction.UPGRADE))).andReturn(m_completedRevertableUpgrade).anyTimes();
expect(m_completedRevertableUpgrade.getId()).andReturn(1L).anyTimes();
expect(m_completedRevertableUpgrade.getDirection()).andReturn(Direction.UPGRADE).anyTimes();
expect(m_completedRevertableUpgrade.getRepositoryVersion()).andReturn(m_targetRepositoryVersion).anyTimes();
expect(m_completedRevertableUpgrade.getOrchestration()).andReturn(RepositoryType.PATCH).anyTimes();
expect(m_completedRevertableUpgrade.getHistory()).andReturn(m_upgradeHistory).anyTimes();
expect(m_completedRevertableUpgrade.getUpgradePackage()).andReturn("myUpgradePack").anyTimes();
expect(m_completedRevertableUpgrade.getUpgradePackStackId()).andReturn(new StackId((String) null)).anyTimes();
RepositoryVersionEntity hdfsRepositoryVersion = createNiceMock(RepositoryVersionEntity.class);
expect(hdfsRepositoryVersion.getId()).andReturn(1L).anyTimes();
expect(hdfsRepositoryVersion.getStackId()).andReturn(new StackId("HDP-2.6")).anyTimes();
expect(m_hdfsService.getDesiredRepositoryVersion()).andReturn(hdfsRepositoryVersion).anyTimes();
expect(m_zookeeperService.getDesiredRepositoryVersion()).andReturn(hdfsRepositoryVersion).anyTimes();
expect(m_cluster.getService(HDFS_SERVICE_NAME)).andReturn(m_hdfsService).anyTimes();
m_services.put(HDFS_SERVICE_NAME, m_hdfsService);
expect(m_cluster.getServices()).andReturn(m_services).anyTimes();
expect(m_cluster.getClusterId()).andReturn(1L).anyTimes();
expect(m_cluster.getClusterName()).andReturn("c1").anyTimes();
expect(m_cluster.getUpgradeInProgress()).andReturn(null).atLeastOnce();
// VDF stuff
expect(m_vdfXml.getClusterSummary(EasyMock.anyObject(Cluster.class), EasyMock.anyObject(AmbariMetaInfo.class))).andReturn(
m_clusterVersionSummary).anyTimes();
}
/**
* Tests that the {@link UpgradeContext} for a normal upgrade.
*
* @throws Exception
*/
@Test
public void testFullUpgrade() throws Exception {
UpgradeHelper upgradeHelper = createNiceMock(UpgradeHelper.class);
ConfigHelper configHelper = createNiceMock(ConfigHelper.class);
UpgradePack upgradePack = createNiceMock(UpgradePack.class);
AmbariMetaInfo ami = createNiceMock(AmbariMetaInfo.class);
expect(m_targetRepositoryVersion.getType()).andReturn(RepositoryType.STANDARD).atLeastOnce();
expect(upgradeHelper.suggestUpgradePack(EasyMock.anyString(), EasyMock.anyObject(StackId.class),
EasyMock.anyObject(StackId.class), EasyMock.anyObject(Direction.class),
EasyMock.anyObject(UpgradeType.class), EasyMock.anyString())).andReturn(upgradePack).once();
replayAll();
Map<String, Object> requestMap = new HashMap<>();
requestMap.put(UpgradeResourceProvider.UPGRADE_TYPE, UpgradeType.ROLLING.name());
requestMap.put(UpgradeResourceProvider.UPGRADE_DIRECTION, Direction.UPGRADE.name());
requestMap.put(UpgradeResourceProvider.UPGRADE_REPO_VERSION_ID,
m_targetRepositoryVersion.getId().toString());
requestMap.put(UpgradeResourceProvider.UPGRADE_SKIP_PREREQUISITE_CHECKS, "true");
UpgradeContext context = new UpgradeContext(m_cluster, requestMap, null, upgradeHelper,
m_upgradeDAO, m_repositoryVersionDAO, configHelper, ami);
assertEquals(Direction.UPGRADE, context.getDirection());
assertEquals(RepositoryType.STANDARD, context.getOrchestrationType());
assertEquals(1, context.getSupportedServices().size());
assertFalse(context.isPatchRevert());
assertFalse(context.getUpgradeSummary().isSwitchBits);
verifyAll();
}
/**
* Tests that the {@link UpgradeContext} for a patch upgrade.
*
* @throws Exception
*/
@Test
public void testPatchUpgrade() throws Exception {
UpgradeHelper upgradeHelper = createNiceMock(UpgradeHelper.class);
ConfigHelper configHelper = createNiceMock(ConfigHelper.class);
UpgradePack upgradePack = createNiceMock(UpgradePack.class);
AmbariMetaInfo ami = createNiceMock(AmbariMetaInfo.class);
expect(m_clusterVersionSummary.getAvailableServiceNames()).andReturn(
Sets.newHashSet(HDFS_SERVICE_NAME)).once();
expect(m_targetRepositoryVersion.getType()).andReturn(RepositoryType.PATCH).atLeastOnce();
expect(m_targetRepositoryVersion.getRepositoryXml()).andReturn(m_vdfXml).once();
expect(upgradeHelper.suggestUpgradePack(EasyMock.anyString(), EasyMock.anyObject(StackId.class),
EasyMock.anyObject(StackId.class), EasyMock.anyObject(Direction.class),
EasyMock.anyObject(UpgradeType.class), EasyMock.anyString())).andReturn(upgradePack).once();
// make the cluster have 2 services just for fun (the VDF only has 1
// service)
expect(m_cluster.getService(ZOOKEEPER_SERVICE_NAME)).andReturn(m_zookeeperService).anyTimes();
m_services.put(ZOOKEEPER_SERVICE_NAME, m_zookeeperService);
assertEquals(2, m_services.size());
replayAll();
Map<String, Object> requestMap = new HashMap<>();
requestMap.put(UpgradeResourceProvider.UPGRADE_TYPE, UpgradeType.NON_ROLLING.name());
requestMap.put(UpgradeResourceProvider.UPGRADE_DIRECTION, Direction.UPGRADE.name());
requestMap.put(UpgradeResourceProvider.UPGRADE_REPO_VERSION_ID, m_targetRepositoryVersion.getId().toString());
requestMap.put(UpgradeResourceProvider.UPGRADE_SKIP_PREREQUISITE_CHECKS, "true");
UpgradeContext context = new UpgradeContext(m_cluster, requestMap, null, upgradeHelper,
m_upgradeDAO, m_repositoryVersionDAO, configHelper, ami);
assertEquals(Direction.UPGRADE, context.getDirection());
assertEquals(RepositoryType.PATCH, context.getOrchestrationType());
assertEquals(1, context.getSupportedServices().size());
assertFalse(context.isPatchRevert());
assertTrue(context.getUpgradeSummary().isSwitchBits);
verifyAll();
}
/**
* Tests that the {@link UpgradeContext} for a maintenance upgrade.
* Maintenance upgrades will only upgrade services which require it by
* examining the versions included in the VDF.
*
* @throws Exception
*/
@Test
public void testMaintUpgrade() throws Exception {
UpgradeHelper upgradeHelper = createNiceMock(UpgradeHelper.class);
ConfigHelper configHelper = createNiceMock(ConfigHelper.class);
UpgradePack upgradePack = createNiceMock(UpgradePack.class);
AmbariMetaInfo ami = createNiceMock(AmbariMetaInfo.class);
expect(m_clusterVersionSummary.getAvailableServiceNames()).andReturn(
Sets.newHashSet(HDFS_SERVICE_NAME)).once();
expect(m_targetRepositoryVersion.getType()).andReturn(RepositoryType.MAINT).atLeastOnce();
expect(m_targetRepositoryVersion.getRepositoryXml()).andReturn(m_vdfXml).once();
expect(upgradeHelper.suggestUpgradePack(EasyMock.anyString(), EasyMock.anyObject(StackId.class),
EasyMock.anyObject(StackId.class), EasyMock.anyObject(Direction.class),
EasyMock.anyObject(UpgradeType.class), EasyMock.anyString())).andReturn(upgradePack).once();
// make the cluster have 2 services - one is already upgraded to a new
// enough version
expect(m_cluster.getService(ZOOKEEPER_SERVICE_NAME)).andReturn(m_zookeeperService).anyTimes();
m_services.put(ZOOKEEPER_SERVICE_NAME, m_zookeeperService);
assertEquals(2, m_services.size());
replayAll();
Map<String, Object> requestMap = new HashMap<>();
requestMap.put(UpgradeResourceProvider.UPGRADE_TYPE, UpgradeType.NON_ROLLING.name());
requestMap.put(UpgradeResourceProvider.UPGRADE_DIRECTION, Direction.UPGRADE.name());
requestMap.put(UpgradeResourceProvider.UPGRADE_REPO_VERSION_ID, m_targetRepositoryVersion.getId().toString());
requestMap.put(UpgradeResourceProvider.UPGRADE_SKIP_PREREQUISITE_CHECKS, "true");
UpgradeContext context = new UpgradeContext(m_cluster, requestMap, null, upgradeHelper,
m_upgradeDAO, m_repositoryVersionDAO, configHelper, ami);
assertEquals(Direction.UPGRADE, context.getDirection());
assertEquals(RepositoryType.MAINT, context.getOrchestrationType());
assertEquals(1, context.getSupportedServices().size());
assertFalse(context.isPatchRevert());
verifyAll();
}
/**
* Tests that the {@link UpgradeContext} for a reversion has the correct
* parameters set.
*
* @throws Exception
*/
@Test
public void testRevert() throws Exception {
UpgradeHelper upgradeHelper = createNiceMock(UpgradeHelper.class);
ConfigHelper configHelper = createNiceMock(ConfigHelper.class);
UpgradePack upgradePack = createNiceMock(UpgradePack.class);
AmbariMetaInfo ami = createNiceMock(AmbariMetaInfo.class);
Map<String, UpgradePack> map = ImmutableMap.<String, UpgradePack>builder()
.put("myUpgradePack", upgradePack)
.build();
expect(ami.getUpgradePacks(EasyMock.anyString(), EasyMock.anyString())).andReturn(map).anyTimes();
expect(m_upgradeDAO.findRevertable(1L)).andReturn(m_completedRevertableUpgrade).once();
Map<String, Object> requestMap = new HashMap<>();
requestMap.put(UpgradeResourceProvider.UPGRADE_TYPE, UpgradeType.ROLLING.name());
requestMap.put(UpgradeResourceProvider.UPGRADE_REVERT_UPGRADE_ID, "1");
replayAll();
UpgradeContext context = new UpgradeContext(m_cluster, requestMap, null, upgradeHelper,
m_upgradeDAO, m_repositoryVersionDAO, configHelper, ami);
assertEquals(Direction.DOWNGRADE, context.getDirection());
assertEquals(RepositoryType.PATCH, context.getOrchestrationType());
assertEquals(1, context.getSupportedServices().size());
assertTrue(context.isPatchRevert());
assertTrue(context.getUpgradeSummary().isSwitchBits);
verifyAll();
}
/**
* Tests that the {@link UpgradeContext} for a EU reversion has the correct
* parameters set.
*
* @throws Exception
*/
@Test
public void testRevertEU() throws Exception {
ConfigHelper configHelper = createNiceMock(ConfigHelper.class);
UpgradeHelper upgradeHelper = createNiceMock(UpgradeHelper.class);
UpgradePack upgradePack = createNiceMock(UpgradePack.class);
AmbariMetaInfo ami = createNiceMock(AmbariMetaInfo.class);
Map<String, UpgradePack> map = ImmutableMap.<String, UpgradePack>builder()
.put("myUpgradePack", upgradePack)
.build();
expect(ami.getUpgradePacks(EasyMock.anyString(), EasyMock.anyString())).andReturn(map).anyTimes();
expect(m_upgradeDAO.findRevertable(1L)).andReturn(m_completedRevertableUpgrade).once();
expect(m_completedRevertableUpgrade.getUpgradeType()).andReturn(UpgradeType.NON_ROLLING);
Map<String, Object> requestMap = new HashMap<>();
requestMap.put(UpgradeResourceProvider.UPGRADE_REVERT_UPGRADE_ID, "1");
replayAll();
UpgradeContext context = new UpgradeContext(m_cluster, requestMap, null, upgradeHelper,
m_upgradeDAO, m_repositoryVersionDAO, configHelper, ami);
assertEquals(Direction.DOWNGRADE, context.getDirection());
assertEquals(RepositoryType.PATCH, context.getOrchestrationType());
assertEquals(UpgradeType.NON_ROLLING, context.getType());
assertEquals(1, context.getSupportedServices().size());
assertTrue(context.isPatchRevert());
verifyAll();
}
/**
* Tests that the {@link UpgradeContext} for a reversion has the correct
* services included in the reversion if one of the services in the original
* upgrade has since been deleted.
*
* @throws Exception
*/
@Test
public void testRevertWithDeletedService() throws Exception {
UpgradeHelper upgradeHelper = createNiceMock(UpgradeHelper.class);
ConfigHelper configHelper = createNiceMock(ConfigHelper.class);
UpgradePack upgradePack = createNiceMock(UpgradePack.class);
AmbariMetaInfo ami = createNiceMock(AmbariMetaInfo.class);
// give the completed upgrade 2 services which can be reverted
UpgradeHistoryEntity upgradeHistoryEntity = createNiceMock(UpgradeHistoryEntity.class);
expect(upgradeHistoryEntity.getServiceName()).andReturn(ZOOKEEPER_SERVICE_NAME).anyTimes();
expect(upgradeHistoryEntity.getFromReposistoryVersion()).andReturn(m_sourceRepositoryVersion).anyTimes();
expect(upgradeHistoryEntity.getTargetRepositoryVersion()).andReturn(m_targetRepositoryVersion).anyTimes();
m_upgradeHistory.add(upgradeHistoryEntity);
Map<String, UpgradePack> map = ImmutableMap.<String, UpgradePack>builder()
.put("myUpgradePack", upgradePack)
.build();
expect(ami.getUpgradePacks(EasyMock.anyString(), EasyMock.anyString())).andReturn(map).anyTimes();
expect(m_upgradeDAO.findRevertable(1L)).andReturn(m_completedRevertableUpgrade).once();
// remove HDFS, add ZK
m_services.remove(HDFS_SERVICE_NAME);
expect(m_cluster.getService(ZOOKEEPER_SERVICE_NAME)).andReturn(m_zookeeperService).anyTimes();
m_services.put(ZOOKEEPER_SERVICE_NAME, m_zookeeperService);
assertEquals(1, m_services.size());
Map<String, Object> requestMap = new HashMap<>();
requestMap.put(UpgradeResourceProvider.UPGRADE_TYPE, UpgradeType.ROLLING.name());
requestMap.put(UpgradeResourceProvider.UPGRADE_REVERT_UPGRADE_ID, "1");
replayAll();
UpgradeContext context = new UpgradeContext(m_cluster, requestMap, null, upgradeHelper,
m_upgradeDAO, m_repositoryVersionDAO, configHelper, ami);
assertEquals(Direction.DOWNGRADE, context.getDirection());
assertEquals(RepositoryType.PATCH, context.getOrchestrationType());
assertEquals(1, context.getSupportedServices().size());
assertTrue(context.isPatchRevert());
verifyAll();
}
/**
* Tests that if a different {@link UpgradeEntity} is returned instead of the one
* specified by the
*
* @throws Exception
*/
@Test(expected = AmbariException.class)
public void testWrongUpgradeBeingReverted() throws Exception {
Long upgradeIdBeingReverted = 1L;
Long upgradeIdWhichCanBeReverted = 99L;
UpgradeHelper upgradeHelper = createNiceMock(UpgradeHelper.class);
ConfigHelper configHelper = createNiceMock(ConfigHelper.class);
UpgradePack upgradePack = createNiceMock(UpgradePack.class);
AmbariMetaInfo ami = createNiceMock(AmbariMetaInfo.class);
expect(upgradeHelper.suggestUpgradePack(EasyMock.anyString(), EasyMock.anyObject(StackId.class),
EasyMock.anyObject(StackId.class), EasyMock.anyObject(Direction.class),
EasyMock.anyObject(UpgradeType.class), EasyMock.anyString())).andReturn(upgradePack).once();
RepositoryVersionEntity repositoryVersionEntity = createNiceMock(RepositoryVersionEntity.class);
expect(repositoryVersionEntity.getVersion()).andReturn("1.2.3.4").anyTimes();
UpgradeEntity wrongRevertableUpgrade = createNiceMock(UpgradeEntity.class);
expect(wrongRevertableUpgrade.getId()).andReturn(upgradeIdWhichCanBeReverted).atLeastOnce();
expect(wrongRevertableUpgrade.getRepositoryVersion()).andReturn(repositoryVersionEntity).atLeastOnce();
expect(m_upgradeDAO.findRevertable(1L)).andReturn(wrongRevertableUpgrade).once();
Map<String, Object> requestMap = new HashMap<>();
requestMap.put(UpgradeResourceProvider.UPGRADE_TYPE, UpgradeType.ROLLING.name());
requestMap.put(UpgradeResourceProvider.UPGRADE_REVERT_UPGRADE_ID, upgradeIdBeingReverted.toString());
replayAll();
UpgradeContext context = new UpgradeContext(m_cluster, requestMap, null, upgradeHelper,
m_upgradeDAO, m_repositoryVersionDAO, configHelper, ami);
assertEquals(Direction.DOWNGRADE, context.getDirection());
assertEquals(RepositoryType.PATCH, context.getOrchestrationType());
assertEquals(1, context.getSupportedServices().size());
assertTrue(context.isPatchRevert());
verifyAll();
}
/**
* Tests that the {@link UpgradeContext} for a patch downgrade has the
* correcting scope/orchestration set.
*
* @throws Exception
*/
@Test
public void testDowngradeForPatch() throws Exception {
UpgradeHelper upgradeHelper = createNiceMock(UpgradeHelper.class);
ConfigHelper configHelper = createNiceMock(ConfigHelper.class);
UpgradePack upgradePack = createNiceMock(UpgradePack.class);
AmbariMetaInfo ami = createNiceMock(AmbariMetaInfo.class);
Map<String, UpgradePack> map = ImmutableMap.<String, UpgradePack>builder()
.put("myUpgradePack", upgradePack)
.build();
expect(ami.getUpgradePacks(EasyMock.anyString(), EasyMock.anyString())).andReturn(map).anyTimes();
Map<String, Object> requestMap = new HashMap<>();
requestMap.put(UpgradeResourceProvider.UPGRADE_TYPE, UpgradeType.NON_ROLLING.name());
requestMap.put(UpgradeResourceProvider.UPGRADE_DIRECTION, Direction.DOWNGRADE.name());
replayAll();
UpgradeContext context = new UpgradeContext(m_cluster, requestMap, null, upgradeHelper,
m_upgradeDAO, m_repositoryVersionDAO, configHelper, ami);
assertEquals(Direction.DOWNGRADE, context.getDirection());
assertEquals(RepositoryType.PATCH, context.getOrchestrationType());
assertEquals(1, context.getSupportedServices().size());
assertFalse(context.isPatchRevert());
verifyAll();
}
}