package org.ovirt.engine.ui.frontend.server.dashboard.fake;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Random;
import org.ovirt.engine.ui.frontend.server.dashboard.GlobalUtilization;
import org.ovirt.engine.ui.frontend.server.dashboard.GlobalUtilizationCpuSummary;
import org.ovirt.engine.ui.frontend.server.dashboard.GlobalUtilizationResourceSummary;
import org.ovirt.engine.ui.frontend.server.dashboard.HeatMapBlock;
import org.ovirt.engine.ui.frontend.server.dashboard.HeatMapData;
import org.ovirt.engine.ui.frontend.server.dashboard.HistoryNode;
import org.ovirt.engine.ui.frontend.server.dashboard.Inventory;
import org.ovirt.engine.ui.frontend.server.dashboard.InventoryStatus;
import org.ovirt.engine.ui.frontend.server.dashboard.ResourceUtilization;
import org.ovirt.engine.ui.frontend.server.dashboard.StorageUtilization;
import org.ovirt.engine.ui.frontend.server.dashboard.Utilization;
import org.ovirt.engine.ui.frontend.server.dashboard.UtilizedEntity;
import org.ovirt.engine.ui.frontend.server.dashboard.UtilizedEntity.Trend;
import org.ovirt.engine.ui.frontend.server.dashboard.maps.VmStatusMap;
public class FakeDataGenerator {
public static Inventory fakeInventory(Random random) {
Inventory result = new Inventory();
result.setCluster(new InventoryStatus());
result.getCluster().setTotalCount(25);
result.setDc(new InventoryStatus());
createFakeValuesUpDownError(result.getDc(), 22, random);
result.setHost(new InventoryStatus());
createFakeValuesUpDownError(result.getHost(), 125, random);
result.setStorage(new InventoryStatus());
createFakeValuesUpDownError(result.getStorage(), 10, random);
result.setVm(new InventoryStatus());
createFakeValuesUpDownError(result.getVm(), 253, random);
result.setEvent(new InventoryStatus());
createFakeValuesAlertErrorWarning(result.getEvent(), 169, random);
result.setVolume(new InventoryStatus());
createFakeValuesUpDownError(result.getVolume(), 95, random);
return result;
}
private static void createFakeValuesUpDownError(InventoryStatus inventory, int total, Random random) {
inventory.setTotalCount(total);
int count = total;
int randomValue = random.nextInt(count);
count -= randomValue;
inventory.setStatusCount(VmStatusMap.WARNING.name().toLowerCase(), count);
randomValue = random.nextInt(count);
count -= randomValue;
inventory.setStatusCount(VmStatusMap.DOWN.name().toLowerCase(), count);
randomValue = random.nextInt(count);
count -= randomValue;
inventory.setStatusCount(VmStatusMap.UP.name().toLowerCase(), count);
}
private static void createFakeValuesAlertErrorWarning(InventoryStatus inventory, int total, Random random) {
inventory.setTotalCount(total);
int count = total;
int randomValue = random.nextInt(count);
count -= randomValue;
inventory.setStatusCount("error", count); //$NON-NLS-1$
randomValue = random.nextInt(count);
count -= randomValue;
inventory.setStatusCount("alert", count); //$NON-NLS-1$
randomValue = random.nextInt(count);
count -= randomValue;
inventory.setStatusCount("warning", count); //$NON-NLS-1$
}
public static GlobalUtilization fakeGlobalUtilization(Random random) {
GlobalUtilization utilization = getFakeMemAndCpuAndStorageUtilization(random);
return utilization;
}
public static HeatMapData fakeHeatMapData(Random random) {
HeatMapData utilization = new HeatMapData();
List<HeatMapBlock> cpuNodes = new ArrayList<>();
List<HeatMapBlock> memNodes = new ArrayList<>();
List<HeatMapBlock> storageNodes = new ArrayList<>();
int clusterCount = random.nextInt(30) + 1;
for (int i = 0; i < clusterCount; i++) {
cpuNodes.add(new HeatMapBlock("fake_cluster_" + i, random.nextDouble() * 100)); //$NON-NLS-1$
}
for (int i = 0; i < clusterCount; i++) {
memNodes.add(new HeatMapBlock("fake_cluster_" + i, random.nextDouble() * 100)); //$NON-NLS-1$
}
for (int i = 0; i < random.nextInt(30) + 1; i++) {
storageNodes.add(new HeatMapBlock("fake_storage_node_" + i, random.nextDouble() * 100)); //$NON-NLS-1$
}
utilization.setCpu(cpuNodes);
utilization.setMemory(memNodes);
utilization.setStorage(storageNodes);
return utilization;
}
public static GlobalUtilization getFakeMemAndCpuAndStorageUtilization(Random random) {
GlobalUtilization utilization = new GlobalUtilization();
utilization.setCpu(new GlobalUtilizationCpuSummary());
populateUtilizationObject(utilization.getCpu(), random);
utilization.setMemory(new GlobalUtilizationResourceSummary());
populateUtilizationObject(utilization.getMemory(), random);
utilization.setStorage(new GlobalUtilizationResourceSummary(new StorageUtilization()));
populateUtilizationObject(utilization.getStorage(), random);
return utilization;
}
private static GlobalUtilizationResourceSummary populateUtilizationObject(
GlobalUtilizationResourceSummary utilizationEntity, Random random) {
long now = new Date().getTime();
List<HistoryNode> cpuHistory = new ArrayList<>();
for (long i = 0; i < 24; i++) {
cpuHistory.add(new HistoryNode(now - ((24L - i) * 3600000L), random.nextDouble() * 100));
}
utilizationEntity.setHistory(cpuHistory);
utilizationEntity.setPhysicalTotal(random.nextInt(100));
int total = random.nextInt(1000);
utilizationEntity.setVirtualTotal(total);
utilizationEntity.setVirtualUsed(random.nextInt(total));
utilizationEntity.setUsed(random.nextDouble() * utilizationEntity.getTotal());
createFakeUtilization(utilizationEntity.getUtilization(), random);
return utilizationEntity;
}
private static void createFakeUtilization(Utilization utilization, Random random) {
int sendValues = random.nextInt(10);
if (sendValues > 1) {
for(int i = 0; i < random.nextInt(10) + 1; i++) {
UtilizedEntity host = new UtilizedEntity();
if (utilization instanceof ResourceUtilization) {
host.setName("fake_host_" + i); //$NON-NLS-1$
} else {
host.setName("fake_storage_domain_" + i); //$NON-NLS-1$
}
host.setTotal(random.nextDouble() * 100 + 1);
host.setUsed((double) random.nextInt(host.getTotal().intValue()));
host.setTrend(Trend.values()[random.nextInt(3)]);
utilization.addResource(host);
}
}
sendValues = random.nextInt(10);
if (sendValues > 1) {
for(int i = 0; i < random.nextInt(10) + 1; i++) {
UtilizedEntity vm = new UtilizedEntity();
vm.setName("fake_vm" + i); //$NON-NLS-1$
vm.setTotal(random.nextDouble() * 100 + 1);
vm.setUsed((double) random.nextInt(vm.getTotal().intValue()));
vm.setTrend(Trend.values()[random.nextInt(3)]);
utilization.addVm(vm);
}
}
}
}