use of io.fabric8.internal.autoscale.HostProfileCounter in project fabric8 by jboss-fuse.
the class SshAutoScalerTest method testAllocateEquallyUsingTags.
@Test
public void testAllocateEquallyUsingTags() throws Exception {
String[] mqBoxes = { "mq1", "mq2" };
String[] esbBoxes = { "esb1", "esb2", "esb3", "esb4" };
FabricRequirements requirements = new FabricRequirements();
requirements.sshConfiguration().defaultUsername("root");
for (String box : mqBoxes) {
requirements.sshHost(box).tags("mq");
}
for (String box : esbBoxes) {
requirements.sshHost(box).tags("esb");
}
requirements.profile(mqProfileId).minimumInstances(2).sshScaling().hostTags("mq");
requirements.profile(exampleProfileId).minimumInstances(8).dependentProfiles(mqProfileId).sshScaling().hostTags("esb");
HostProfileCounter hostProfileCounter = assertSshAutoScale(requirements);
for (String box : mqBoxes) {
assertHostHasProfileCount(hostProfileCounter, box, mqProfileId, 1);
}
for (String box : esbBoxes) {
assertHostHasProfileCount(hostProfileCounter, box, exampleProfileId, 2);
}
dumpHostProfiles(hostProfileCounter);
}
use of io.fabric8.internal.autoscale.HostProfileCounter in project fabric8 by jboss-fuse.
the class SshAutoScalerTest method assertSshAutoScale.
public static HostProfileCounter assertSshAutoScale(FabricRequirements requirements, AutoScaleStatus status) {
HostProfileCounter hostProfileCounter = new HostProfileCounter();
String version = requirements.getVersion();
if (Strings.isEmpty(version)) {
version = "1.0";
}
List<ProfileRequirements> profileRequirements = requirements.getProfileRequirements();
for (ProfileRequirements profileRequirement : profileRequirements) {
Integer minimumInstances = profileRequirement.getMinimumInstances();
if (minimumInstances != null) {
for (int i = 0; i < minimumInstances; i++) {
String profileId = profileRequirement.getProfile();
AutoScaleRequest request = new AutoScaleRequest(null, version, profileId, 1, requirements, profileRequirement, status);
CreateSshContainerOptions.Builder builder = chooseHostContainerOptions(request, hostProfileCounter);
assertNotNull("Should have found a builder for " + profileId, builder);
String host = builder.getHost();
hostProfileCounter.incrementContainers(host);
hostProfileCounter.incrementProfileCount(host, profileId);
}
}
}
Map<String, CountingMap> hostToProfileCounts = hostProfileCounter.getHostToProfileCounts();
assertProfilesUseSeparateHost(requirements, hostToProfileCounts);
assertMaximumContainerCountNotExceeded(requirements, hostToProfileCounts);
return hostProfileCounter;
}
use of io.fabric8.internal.autoscale.HostProfileCounter in project fabric8 by jboss-fuse.
the class SshAutoScalerTest method testMaximumProfileCountPerHost.
@Test
public void testMaximumProfileCountPerHost() throws Exception {
String hostSmall = "small";
String hostMedium = "medium";
String hostBig = "big";
FabricRequirements requirements = new FabricRequirements();
requirements.sshConfiguration().defaultPath("/opt/fuse").defaultUsername("root").defaultPassword("adminuser").defaultPassPhrase("cheese");
requirements.sshHost(hostSmall).hostName(hostSmall).maximumContainerCount(1);
requirements.sshHost(hostMedium).hostName(hostMedium).maximumContainerCount(2);
requirements.sshHost(hostBig).hostName(hostBig).maximumContainerCount(8);
requirements.profile(mqProfileId).minimumInstances(2).maximumInstancesPerHost(1).sshScaling().hostPatterns("!small");
requirements.profile(exampleProfileId).minimumInstances(5).dependentProfiles(mqProfileId);
HostProfileCounter hostProfileCounter = assertSshAutoScale(requirements);
assertHostHasProfileCount(hostProfileCounter, hostSmall, exampleProfileId, 1);
assertHostHasProfileCount(hostProfileCounter, hostMedium, exampleProfileId, 1);
assertHostHasProfileCount(hostProfileCounter, hostMedium, mqProfileId, 1);
assertHostHasProfileCount(hostProfileCounter, hostBig, mqProfileId, 1);
assertHostHasProfileCount(hostProfileCounter, hostBig, exampleProfileId, 3);
dumpHostProfiles(hostProfileCounter);
}
use of io.fabric8.internal.autoscale.HostProfileCounter in project fabric8 by jboss-fuse.
the class AutoScalers method createHostToProfileScaleMap.
public static Map<String, CountingMap> createHostToProfileScaleMap(HostProfileCounter hostContainerCounts, List<? extends HostConfiguration> hostConfigurations, Container[] containers) {
Map<String, CountingMap> answer = new HashMap<>();
if (containers != null) {
if (containers != null) {
for (Container container : containers) {
String hostAlias = findHostAlias(hostConfigurations, container);
if (hostAlias != null) {
hostContainerCounts.incrementContainers(hostAlias);
List<String> profileIds = Profiles.profileIds(container.getProfiles());
hostContainerCounts.incrementProfilesCount(hostAlias, profileIds);
}
}
}
}
return answer;
}
use of io.fabric8.internal.autoscale.HostProfileCounter in project fabric8 by jboss-fuse.
the class SshAutoScalerTest method testAllocateInHostListOrder.
@Test
public void testAllocateInHostListOrder() throws Exception {
String[] esbBoxes = { "esb1", "esb2", "esb3", "esb4" };
FabricRequirements requirements = new FabricRequirements();
requirements.sshConfiguration().defaultUsername("root");
for (String box : esbBoxes) {
requirements.sshHost(box);
}
requirements.profile(exampleProfileId).minimumInstances(2);
HostProfileCounter hostProfileCounter = assertSshAutoScale(requirements);
assertHostHasProfileCount(hostProfileCounter, "esb1", exampleProfileId, 1);
assertHostHasProfileCount(hostProfileCounter, "esb2", exampleProfileId, 1);
assertHostHasProfileCount(hostProfileCounter, "esb3", exampleProfileId, 0);
assertHostHasProfileCount(hostProfileCounter, "esb4", exampleProfileId, 0);
dumpHostProfiles(hostProfileCounter);
}
Aggregations