You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by re...@apache.org on 2015/06/30 07:54:21 UTC
[3/5] stratos git commit: writing test for autoscaling policy removal
in autoscaler by abstracting out the methods
writing test for autoscaling policy removal in autoscaler by abstracting out the methods
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/729ef7ab
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/729ef7ab
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/729ef7ab
Branch: refs/heads/master
Commit: 729ef7abb623752137c05a4f5a0e38e57f6d55ca
Parents: b7897af
Author: reka <rt...@gmail.com>
Authored: Fri Jun 26 16:37:04 2015 +0530
Committer: reka <rt...@gmail.com>
Committed: Tue Jun 30 11:23:49 2015 +0530
----------------------------------------------------------------------
.../applications/topic/ApplicationBuilder.java | 3 +
.../autoscaler/context/AutoscalerContext.java | 19 +--
.../internal/AutoscalerServiceComponent.java | 4 +
.../services/impl/AutoscalerServiceImpl.java | 128 +++++--------------
.../stratos/autoscaler/util/AutoscalerUtil.java | 82 +++++++++++-
.../stratos/autoscaler/AutoscalerUtilTest.java | 65 ++++++++++
6 files changed, 187 insertions(+), 114 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/729ef7ab/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
index 1aafd00..44a6786 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
@@ -31,6 +31,7 @@ import org.apache.stratos.autoscaler.event.publisher.ClusterStatusEventPublisher
import org.apache.stratos.autoscaler.monitor.Monitor;
import org.apache.stratos.autoscaler.monitor.component.ApplicationMonitor;
import org.apache.stratos.autoscaler.monitor.component.GroupMonitor;
+import org.apache.stratos.autoscaler.registry.RegistryManager;
import org.apache.stratos.messaging.domain.application.*;
import org.apache.stratos.messaging.domain.instance.ApplicationInstance;
import org.apache.stratos.messaging.domain.instance.ClusterInstance;
@@ -246,6 +247,7 @@ public class ApplicationBuilder {
}
AutoscalerContext.getInstance().removeApplicationContext(appId);
+ RegistryManager.getInstance().removeApplicationContext(appId);
ApplicationHolder.removeApplication(appId);
} finally {
@@ -307,6 +309,7 @@ public class ApplicationBuilder {
// update application status in application context
applicationContext.setStatus(ApplicationContext.STATUS_CREATED);
AutoscalerContext.getInstance().updateApplicationContext(applicationContext);
+ RegistryManager.getInstance().persistApplicationContext(applicationContext);
log.info("Application un-deployed successfully: [application-id] " + applicationId);
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/729ef7ab/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/AutoscalerContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/AutoscalerContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/AutoscalerContext.java
index 51e9d16..3a988e6 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/AutoscalerContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/AutoscalerContext.java
@@ -76,29 +76,16 @@ public class AutoscalerContext {
// Initialize distributed object provider
distributedObjectProvider = ServiceReferenceHolder.getInstance().getDistributedObjectProvider();
- applicationContextMap = readApplicationContextsFromRegistry();
if (applicationContextMap == null) {
applicationContextMap = distributedObjectProvider.getMap(AS_APPLICATION_ID_TO_APPLICATION_CTX_MAP);//new ConcurrentHashMap<String, ApplicationContext>();
}
setClusterMonitors(distributedObjectProvider.getMap(AS_CLUSTER_ID_TO_CLUSTER_MONITOR_MAP));
setApplicationMonitors(distributedObjectProvider.getMap(AS_APPLICATION_ID_TO_APPLICATION_MONITOR_MAP));
pendingApplicationMonitors = distributedObjectProvider.getList(AS_PENDING_APPLICATION_MONITOR_LIST);//new ArrayList<String>();
- applicationIdToNetworkPartitionAlgorithmContextMap = distributedObjectProvider.getMap(AS_APPLICATIOIN_ID_TO_NETWORK_PARTITION_ALGO_CTX_MAP);
+ applicationIdToNetworkPartitionAlgorithmContextMap =
+ distributedObjectProvider.getMap(AS_APPLICATIOIN_ID_TO_NETWORK_PARTITION_ALGO_CTX_MAP);
}
- private Map<String, ApplicationContext> readApplicationContextsFromRegistry() {
- String[] resourcePaths = RegistryManager.getInstance().getApplicationContextResourcePaths();
- if ((resourcePaths == null) || (resourcePaths.length == 0)) {
- return null;
- }
-
- Map<String, ApplicationContext> applicationContextMap = distributedObjectProvider.getMap(AS_APPLICATION_ID_TO_APPLICATION_CTX_MAP);//new ConcurrentHashMap<String, ApplicationContext>();
- for (String resourcePath : resourcePaths) {
- ApplicationContext applicationContext = RegistryManager.getInstance().getApplicationContextByResourcePath(resourcePath);
- applicationContextMap.put(applicationContext.getApplicationId(), applicationContext);
- }
- return applicationContextMap;
- }
public static AutoscalerContext getInstance() {
if (instance == null) {
@@ -169,11 +156,9 @@ public class AutoscalerContext {
public void addApplicationContext(ApplicationContext applicationContext) {
applicationContextMap.put(applicationContext.getApplicationId(), applicationContext);
- RegistryManager.getInstance().persistApplicationContext(applicationContext);
}
public ApplicationContext removeApplicationContext(String applicationId) {
- RegistryManager.getInstance().removeApplicationContext(applicationId);
return applicationContextMap.remove(applicationId);
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/729ef7ab/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServiceComponent.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServiceComponent.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServiceComponent.java
index b5fd144..65d75b2 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServiceComponent.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServiceComponent.java
@@ -40,6 +40,7 @@ import org.apache.stratos.autoscaler.registry.RegistryManager;
import org.apache.stratos.autoscaler.status.processor.cluster.ClusterStatusProcessorChain;
import org.apache.stratos.autoscaler.status.processor.group.GroupStatusProcessorChain;
import org.apache.stratos.autoscaler.util.AutoscalerConstants;
+import org.apache.stratos.autoscaler.util.AutoscalerUtil;
import org.apache.stratos.autoscaler.util.ConfUtil;
import org.apache.stratos.autoscaler.util.ServiceReferenceHolder;
import org.apache.stratos.common.Component;
@@ -209,6 +210,9 @@ public class AutoscalerServiceComponent {
AutoscalerContext.getInstance().addNetworkPartitionAlgorithmContext(algorithmContext);
}
+ //Adding application context from registry
+ AutoscalerUtil.readApplicationContextsFromRegistry();
+
//starting the processor chain
ClusterStatusProcessorChain clusterStatusProcessorChain = new ClusterStatusProcessorChain();
ServiceReferenceHolder.getInstance().setClusterStatusProcessorChain(clusterStatusProcessorChain);
http://git-wip-us.apache.org/repos/asf/stratos/blob/729ef7ab/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java
index 3f2120c..963136f 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java
@@ -110,7 +110,7 @@ public class AutoscalerServiceImpl implements AutoscalerService {
@Override
public boolean removeAutoScalingPolicy(String autoscalePolicyId) throws UnremovablePolicyException,
PolicyDoesNotExistException {
- if (removableAutoScalerPolicy(autoscalePolicyId)) {
+ if (AutoscalerUtil.removableAutoScalerPolicy(autoscalePolicyId)) {
return PolicyManager.getInstance().removeAutoscalePolicy(autoscalePolicyId);
} else {
throw new UnremovablePolicyException("This autoscaler policy cannot be removed, " +
@@ -119,76 +119,6 @@ public class AutoscalerServiceImpl implements AutoscalerService {
}
}
- /**
- * Validate the Auto Scalar policy removal
- *
- * @param autoscalePolicyId Auto Scalar policy id boolean
- * @return
- */
- private boolean removableAutoScalerPolicy(String autoscalePolicyId) {
- Collection<ApplicationContext> applicationContexts = AutoscalerContext.getInstance().
- getApplicationContexts();
- for (ApplicationContext applicationContext : applicationContexts) {
- if(applicationContext.getComponents().getCartridgeContexts() != null) {
- for(CartridgeContext cartridgeContext : applicationContext.getComponents().
- getCartridgeContexts()) {
- if(autoscalePolicyId.equals(cartridgeContext.getSubscribableInfoContext().
- getAutoscalingPolicy())) {
- return false;
- }
- }
- }
-
- if(applicationContext.getComponents().getGroupContexts() != null) {
- return findAutoscalingPolicyInGroup(applicationContext.getComponents().getGroupContexts(),
- autoscalePolicyId);
- }
- }
- return true;
- }
-
-
- private boolean findAutoscalingPolicyInGroup(GroupContext[] groupContexts,
- String autoscalePolicyId) {
- for(GroupContext groupContext : groupContexts) {
- if(groupContext.getCartridgeContexts() != null) {
- for(CartridgeContext cartridgeContext : groupContext.getCartridgeContexts()) {
- if(autoscalePolicyId.equals(cartridgeContext.getSubscribableInfoContext().
- getAutoscalingPolicy())) {
- return false;
- }
- }
-
- }
- if(groupContext.getGroupContexts() != null) {
- return findAutoscalingPolicyInGroup(groupContext.getGroupContexts(),
- autoscalePolicyId);
- }
- }
- return true;
- }
-
- /**
- * Validate the deployment policy removal
- *
- * @param deploymentPolicyId
- * @return
- */
- private boolean removableDeploymentPolicy(String deploymentPolicyId) {
- boolean canRemove = true;
- Map<String, Application> applications = ApplicationHolder.getApplications().getApplications();
- for (Application application : applications.values()) {
- List<String> deploymentPolicyIdsReferredInApplication = AutoscalerUtil.
- getDeploymentPolicyIdsReferredInApplication(application.getUniqueIdentifier());
- for (String deploymentPolicyIdInApp : deploymentPolicyIdsReferredInApplication) {
- if (deploymentPolicyId.equals(deploymentPolicyIdInApp)) {
- canRemove = false;
- }
- }
- }
- return canRemove;
- }
-
@Override
public AutoscalePolicy getAutoscalingPolicy(String autoscalingPolicyId) {
return PolicyManager.getInstance().getAutoscalePolicy(autoscalingPolicyId);
@@ -215,6 +145,8 @@ public class AutoscalerServiceImpl implements AutoscalerService {
applicationContext.setStatus(ApplicationContext.STATUS_CREATED);
AutoscalerContext.getInstance().addApplicationContext(applicationContext);
+ //Persisting the application
+ RegistryManager.getInstance().persistApplicationContext(applicationContext);
if (log.isInfoEnabled()) {
log.info(String.format("Application added successfully: [application-id] %s",
@@ -955,6 +887,9 @@ public class AutoscalerServiceImpl implements AutoscalerService {
// validating application policy
AutoscalerUtil.validateApplicationPolicy(applicationPolicy);
+ //Update application Monitor
+
+
// updating application policy
PolicyManager.getInstance().updateApplicationPolicy(applicationPolicy);
return true;
@@ -1205,31 +1140,32 @@ public class AutoscalerServiceImpl implements AutoscalerService {
for (NetworkPartitionRef networkPartition : deploymentPolicy.getNetworkPartitionRefs()) {
ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext
= clusterMonitor.getClusterContext().getNetworkPartitionCtxt(networkPartition.getId());
-
- try {
- addNewPartitionsToClusterMonitor(clusterLevelNetworkPartitionContext, networkPartition,
- deploymentPolicy.getDeploymentPolicyID(), clusterMonitor.getClusterContext().getServiceId());
- } catch (RemoteException e) {
-
- String message = "Connection to cloud controller failed, Cluster monitor update failed for" +
- " [deployment-policy] " + deploymentPolicy.getDeploymentPolicyID();
- log.error(message);
- throw new CloudControllerConnectionException(message, e);
- } catch (CloudControllerServiceInvalidPartitionExceptionException e) {
-
- String message = "Invalid partition, Cluster monitor update failed for [deployment-policy] "
- + deploymentPolicy.getDeploymentPolicyID();
- log.error(message);
- throw new InvalidDeploymentPolicyException(message, e);
- } catch (CloudControllerServiceInvalidCartridgeTypeExceptionException e) {
-
- String message = "Invalid cartridge type, Cluster monitor update failed for [deployment-policy] "
- + deploymentPolicy.getDeploymentPolicyID() + " [cartridge] "
- + clusterMonitor.getClusterContext().getServiceId();
- log.error(message);
- throw new InvalidDeploymentPolicyException(message, e);
+ if(clusterLevelNetworkPartitionContext != null) {
+ try {
+ addNewPartitionsToClusterMonitor(clusterLevelNetworkPartitionContext, networkPartition,
+ deploymentPolicy.getDeploymentPolicyID(), clusterMonitor.getClusterContext().getServiceId());
+ } catch (RemoteException e) {
+
+ String message = "Connection to cloud controller failed, Cluster monitor update failed for" +
+ " [deployment-policy] " + deploymentPolicy.getDeploymentPolicyID();
+ log.error(message);
+ throw new CloudControllerConnectionException(message, e);
+ } catch (CloudControllerServiceInvalidPartitionExceptionException e) {
+
+ String message = "Invalid partition, Cluster monitor update failed for [deployment-policy] "
+ + deploymentPolicy.getDeploymentPolicyID();
+ log.error(message);
+ throw new InvalidDeploymentPolicyException(message, e);
+ } catch (CloudControllerServiceInvalidCartridgeTypeExceptionException e) {
+
+ String message = "Invalid cartridge type, Cluster monitor update failed for [deployment-policy] "
+ + deploymentPolicy.getDeploymentPolicyID() + " [cartridge] "
+ + clusterMonitor.getClusterContext().getServiceId();
+ log.error(message);
+ throw new InvalidDeploymentPolicyException(message, e);
+ }
+ removeOldPartitionsFromClusterMonitor(clusterLevelNetworkPartitionContext, networkPartition);
}
- removeOldPartitionsFromClusterMonitor(clusterLevelNetworkPartitionContext, networkPartition);
}
}
}
@@ -1309,7 +1245,7 @@ public class AutoscalerServiceImpl implements AutoscalerService {
log.error(message);
throw new DeploymentPolicyNotExistsException(message);
}
- if (removableDeploymentPolicy(deploymentPolicyID)) {
+ if (AutoscalerUtil.removableDeploymentPolicy(deploymentPolicyID)) {
PolicyManager.getInstance().removeDeploymentPolicy(deploymentPolicyID);
} else {
throw new UnremovablePolicyException("This deployment policy cannot be removed, since it is used in an " +
http://git-wip-us.apache.org/repos/asf/stratos/blob/729ef7ab/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
index 2f78fe7..db43650 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
@@ -937,7 +937,87 @@ public class AutoscalerUtil {
}
}
- public void updateMonitors() {
+ /**
+ * Validate the Auto Scalar policy removal
+ *
+ * @param autoscalePolicyId Auto Scalar policy id boolean
+ * @return
+ */
+ public static boolean removableAutoScalerPolicy(String autoscalePolicyId) {
+ Collection<ApplicationContext> applicationContexts = AutoscalerContext.getInstance().
+ getApplicationContexts();
+ for (ApplicationContext applicationContext : applicationContexts) {
+ if(applicationContext.getComponents().getCartridgeContexts() != null) {
+ for(CartridgeContext cartridgeContext : applicationContext.getComponents().
+ getCartridgeContexts()) {
+ if(autoscalePolicyId.equals(cartridgeContext.getSubscribableInfoContext().
+ getAutoscalingPolicy())) {
+ return false;
+ }
+ }
+ }
+
+ if(applicationContext.getComponents().getGroupContexts() != null) {
+ return findAutoscalingPolicyInGroup(applicationContext.getComponents().getGroupContexts(),
+ autoscalePolicyId);
+ }
+ }
+ return true;
+ }
+
+ public static boolean findAutoscalingPolicyInGroup(GroupContext[] groupContexts,
+ String autoscalePolicyId) {
+ for(GroupContext groupContext : groupContexts) {
+ if(groupContext.getCartridgeContexts() != null) {
+ for(CartridgeContext cartridgeContext : groupContext.getCartridgeContexts()) {
+ if(autoscalePolicyId.equals(cartridgeContext.getSubscribableInfoContext().
+ getAutoscalingPolicy())) {
+ return false;
+ }
+ }
+
+ }
+ if(groupContext.getGroupContexts() != null) {
+ return findAutoscalingPolicyInGroup(groupContext.getGroupContexts(),
+ autoscalePolicyId);
+ }
+ }
+ return true;
+ }
+
+
+ /**
+ * Validate the deployment policy removal
+ *
+ * @param deploymentPolicyId
+ * @return
+ */
+ public static boolean removableDeploymentPolicy(String deploymentPolicyId) {
+ boolean canRemove = true;
+ Map<String, Application> applications = ApplicationHolder.getApplications().getApplications();
+ for (Application application : applications.values()) {
+ List<String> deploymentPolicyIdsReferredInApplication = AutoscalerUtil.
+ getDeploymentPolicyIdsReferredInApplication(application.getUniqueIdentifier());
+ for (String deploymentPolicyIdInApp : deploymentPolicyIdsReferredInApplication) {
+ if (deploymentPolicyId.equals(deploymentPolicyIdInApp)) {
+ canRemove = false;
+ }
+ }
+ }
+ return canRemove;
+ }
+
+ public static void readApplicationContextsFromRegistry() {
+ String[] resourcePaths = RegistryManager.getInstance().getApplicationContextResourcePaths();
+ if ((resourcePaths == null) || (resourcePaths.length == 0)) {
+ return;
+ }
+ for (String resourcePath : resourcePaths) {
+ ApplicationContext applicationContext = RegistryManager.getInstance().
+ getApplicationContextByResourcePath(resourcePath);
+ AutoscalerContext.getInstance().addApplicationContext( applicationContext);
+ }
}
+
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/729ef7ab/components/org.apache.stratos.autoscaler/src/test/java/org/apache/stratos/autoscaler/AutoscalerUtilTest.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/test/java/org/apache/stratos/autoscaler/AutoscalerUtilTest.java b/components/org.apache.stratos.autoscaler/src/test/java/org/apache/stratos/autoscaler/AutoscalerUtilTest.java
index 3706fd4..2f65281 100644
--- a/components/org.apache.stratos.autoscaler/src/test/java/org/apache/stratos/autoscaler/AutoscalerUtilTest.java
+++ b/components/org.apache.stratos.autoscaler/src/test/java/org/apache/stratos/autoscaler/AutoscalerUtilTest.java
@@ -19,9 +19,16 @@
package org.apache.stratos.autoscaler;
+import org.apache.stratos.autoscaler.applications.pojo.*;
+import org.apache.stratos.autoscaler.context.AutoscalerContext;
import org.apache.stratos.autoscaler.util.AutoscalerUtil;
+import org.apache.stratos.autoscaler.util.ServiceReferenceHolder;
+import org.apache.stratos.common.clustering.impl.HazelcastDistributedObjectProvider;
import org.junit.Test;
+import java.util.ArrayList;
+import java.util.List;
+
import static org.junit.Assert.assertEquals;
/**
@@ -68,4 +75,62 @@ public class AutoscalerUtilTest {
tenantRange = AutoscalerUtil.findTenantRange(tenantId, null);
assertEquals(tenantRange, "*");
}
+
+ @Test
+ public void testRemovalOfAutoscalingPolicy() {
+ List<CartridgeContext> cartridgeContexts = new ArrayList<CartridgeContext>();
+ for(int i = 0; i < 12; i++) {
+ CartridgeContext cartridgeContext = new CartridgeContext();
+ SubscribableInfoContext subscribableContext = new SubscribableInfoContext();
+ subscribableContext.setAlias("cart-" + i);
+ subscribableContext.setDeploymentPolicy("dep-" + i);
+ subscribableContext.setAutoscalingPolicy("auto-" + i);
+ cartridgeContext.setSubscribableInfoContext(subscribableContext);
+ cartridgeContexts.add(cartridgeContext);
+ }
+ List<GroupContext> groupContextList = new ArrayList<GroupContext>();
+ for(int i = 0; i < 5; i++) {
+ GroupContext groupContext = new GroupContext();
+ groupContext.setAlias("group-" + i);
+ CartridgeContext[] cartridgeContexts1 = new CartridgeContext[2];
+ cartridgeContexts1[0] = cartridgeContexts.get(i);
+ cartridgeContexts1[1] = cartridgeContexts.get(i+5);
+
+ groupContext.setCartridgeContexts(cartridgeContexts1);
+ groupContextList.add(groupContext);
+ }
+
+ //Application-1
+ ApplicationContext applicationContext = new ApplicationContext();
+ applicationContext.setApplicationId("application-1");
+ ComponentContext componentContext = new ComponentContext();
+ CartridgeContext[] cartridgeContexts1 = new CartridgeContext[2];
+ cartridgeContexts1[0] = cartridgeContexts.get(10);
+ cartridgeContexts1[1] = cartridgeContexts.get(11);
+ componentContext.setCartridgeContexts(cartridgeContexts1);
+ GroupContext[] groupContexts = new GroupContext[groupContextList.size()];
+ componentContext.setGroupContexts(groupContextList.toArray(groupContexts));
+ applicationContext.setComponents(componentContext);
+
+ ServiceReferenceHolder holder = ServiceReferenceHolder.getInstance();
+ holder.setDistributedObjectProvider(new HazelcastDistributedObjectProvider());
+
+ AutoscalerContext.getInstance().addApplicationContext(applicationContext);
+
+
+ boolean canRemove;
+
+ canRemove = AutoscalerUtil.removableAutoScalerPolicy("test");
+ assertEquals(canRemove, true);
+
+ for(int i = 0; i < 12; i ++) {
+ canRemove = AutoscalerUtil.removableAutoScalerPolicy("auto-" + i);
+ assertEquals(canRemove, false);
+
+ }
+ }
+
+ public void testRemovalOfDeploymentPolicy() {
+
+ }
}