Search in sources :

Example 6 with MetricData

use of com.vmware.flowgate.common.model.MetricData in project flowgate by vmware.

the class AssetControllerTest method testGetHostSpecialMetricsExample.

@Test
public void testGetHostSpecialMetricsExample() throws Exception {
    Asset asset = createAsset();
    List<RealTimeData> realTimeDatas = new ArrayList<RealTimeData>();
    Long time = System.currentTimeMillis();
    List<ValueUnit> valueUnits = new ArrayList<ValueUnit>();
    ValueUnit valueUnit = new ValueUnit();
    String sinceTime = String.valueOf(time - 900000l);
    valueUnit = new ValueUnit();
    valueUnit.setTime(time);
    valueUnit.setExtraidentifier(sinceTime + FlowgateConstant.SEPARATOR);
    valueUnit.setKey(MetricName.SERVER_MINIMUM_USED_POWER);
    valueUnit.setUnit(MetricUnit.kW.toString());
    valueUnit.setValueNum(0.5);
    valueUnits.add(valueUnit);
    valueUnit = new ValueUnit();
    valueUnit.setTime(time);
    valueUnit.setExtraidentifier(sinceTime + FlowgateConstant.SEPARATOR);
    valueUnit.setKey(MetricName.SERVER_PEAK_USED_POWER);
    valueUnit.setUnit(MetricUnit.kW.toString());
    valueUnit.setValueNum(0.8);
    valueUnits.add(valueUnit);
    valueUnit = new ValueUnit();
    valueUnit.setTime(time);
    valueUnit.setKey(MetricName.SERVER_AVERAGE_USED_POWER);
    valueUnit.setUnit(MetricUnit.kW.toString());
    valueUnit.setValueNum(0.6);
    valueUnits.add(valueUnit);
    valueUnit = new ValueUnit();
    valueUnit.setTime(time);
    valueUnit.setExtraidentifier(sinceTime);
    valueUnit.setKey(MetricName.SERVER_ENERGY_CONSUMPTION);
    valueUnit.setUnit(MetricUnit.kWh.toString());
    valueUnit.setValueNum(356);
    valueUnits.add(valueUnit);
    RealTimeData hostRealTimeData = new RealTimeData();
    hostRealTimeData.setValues(valueUnits);
    hostRealTimeData.setTime(time);
    hostRealTimeData.setId("00027ca37b004a9890d1bf20349d5ac99");
    hostRealTimeData.setAssetID(asset.getId());
    realTimeDatas.add(hostRealTimeData);
    realtimeDataRepository.saveAll(realTimeDatas);
    asset = fillingMetricsformula(asset);
    HashMap<String, String> justificationfields = new HashMap<>();
    justificationfields.put(FlowgateConstant.PDU_PORT_FOR_SERVER, "power-2_FIELDSPLIT_CAN1-MDF-R01-PDU-BUILDING_FIELDSPLIT_OUTLET:7_FIELDSPLIT_0001bdc8b25d4c2badfd045ab61aabfa");
    asset.setJustificationfields(justificationfields);
    asset = assetRepository.save(asset);
    MvcResult result1 = this.mockMvc.perform(get("/v1/assets/{assetId}/realtimedata", asset.getId()).param("starttime", String.valueOf(time)).param("duration", "300000")).andReturn();
    String res = result1.getResponse().getContentAsString();
    MetricData[] datas = mapper.readValue(res, MetricData[].class);
    // In mock metrics data, SERVER_MINIMUM_USED_POWER/SERVER_PEAK_USED_POWER/SERVER_AVERAGE_USED_POWER is invalid
    try {
        for (MetricData serverdata : datas) {
            String metricName = serverdata.getMetricName();
            if (MetricName.SERVER_ENERGY_CONSUMPTION.equals(metricName)) {
                TestCase.assertEquals(serverdata.getValueNum(), 356.00);
            } else {
                TestCase.fail("Unknown metric :" + metricName);
            }
        }
    } finally {
        assetRepository.deleteById(asset.getId());
        realtimeDataRepository.deleteById(hostRealTimeData.getId());
    }
}
Also used : RealTimeData(com.vmware.flowgate.common.model.RealTimeData) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) ArgumentMatchers.anyString(org.mockito.ArgumentMatchers.anyString) MvcResult(org.springframework.test.web.servlet.MvcResult) Asset(com.vmware.flowgate.common.model.Asset) ValueUnit(com.vmware.flowgate.common.model.ValueUnit) MetricData(com.vmware.flowgate.common.model.MetricData) SpringBootTest(org.springframework.boot.test.context.SpringBootTest) Test(org.junit.Test)

Example 7 with MetricData

use of com.vmware.flowgate.common.model.MetricData in project flowgate by vmware.

the class AssetControllerTest method testRealtimedataNotDataExample.

@Test
public void testRealtimedataNotDataExample() throws Exception {
    Asset asset = createAsset();
    fillingMetricsformula(asset);
    asset.setId("00027ca37b004a9890d1bf20349d5ac1");
    asset.setCategory(AssetCategory.Sensors);
    asset = assetRepository.save(asset);
    List<RealTimeData> realTimeDatas = new ArrayList<>();
    long currentTime = System.currentTimeMillis();
    RealTimeData sensorRealTimeData = createSensorRealtimeData(currentTime);
    sensorRealTimeData.setAssetID("00027ca37b004a9890d1bf20349d5ac1");
    sensorRealTimeData.setValues(new ArrayList<>());
    realTimeDatas.add(sensorRealTimeData);
    realtimeDataRepository.saveAll(realTimeDatas);
    try {
        MvcResult result = this.mockMvc.perform(get("/v1/assets/" + asset.getId() + "/realtimedata")).andExpect(status().isOk()).andReturn();
        MetricData[] datas = getMetricDataByJsonString(result.getResponse().getContentAsString());
        TestCase.assertEquals(0, datas.length);
        MvcResult result1 = this.mockMvc.perform(get("/v1/assets/" + asset.getId() + "/realtimedata").param("starttime", String.valueOf(currentTime)).param("duration", "300000")).andExpect(status().isOk()).andReturn();
        MetricData[] datas1 = getMetricDataByJsonString(result1.getResponse().getContentAsString());
        TestCase.assertEquals(0, datas1.length);
        MvcResult result2 = this.mockMvc.perform(get("/v1/assets/" + asset.getId() + "/realtimedata").param("starttime", String.valueOf(currentTime + 30000000)).param("duration", "1")).andExpect(status().isOk()).andReturn();
        MetricData[] data2 = getMetricDataByJsonString(result2.getResponse().getContentAsString());
        TestCase.assertEquals(0, data2.length);
        asset.setCategory(AssetCategory.Server);
        asset = assetRepository.save(asset);
        MvcResult result3 = this.mockMvc.perform(get("/v1/assets/" + asset.getId() + "/realtimedata").param("starttime", String.valueOf(currentTime + 30000000)).param("duration", "1")).andExpect(status().isOk()).andReturn();
        asset.setCategory(AssetCategory.PDU);
        asset = assetRepository.save(asset);
        MvcResult result4 = this.mockMvc.perform(get("/v1/assets/" + asset.getId() + "/realtimedata").param("starttime", String.valueOf(currentTime + 30000000)).param("duration", "1")).andExpect(status().isOk()).andReturn();
    } finally {
        assetRepository.deleteById(asset.getId());
        realtimeDataRepository.deleteById(sensorRealTimeData.getId());
    }
}
Also used : RealTimeData(com.vmware.flowgate.common.model.RealTimeData) ArrayList(java.util.ArrayList) Asset(com.vmware.flowgate.common.model.Asset) MvcResult(org.springframework.test.web.servlet.MvcResult) MetricData(com.vmware.flowgate.common.model.MetricData) SpringBootTest(org.springframework.boot.test.context.SpringBootTest) Test(org.junit.Test)

Example 8 with MetricData

use of com.vmware.flowgate.common.model.MetricData in project flowgate by vmware.

the class AssetControllerTest method testGetServerMetricsByIDFormulaIsEmpty.

@Test
public void testGetServerMetricsByIDFormulaIsEmpty() {
    Asset asset = createAsset();
    long time = System.currentTimeMillis();
    int duration = 30 * 60 * 1000;
    long startTime = time - duration;
    Map<String, String> formulars = new HashMap<String, String>();
    asset.setMetricsformulars(formulars);
    asset = assetRepository.save(asset);
    List<MetricData> metricDatas = assetService.getMetricsByID(asset.getId(), startTime, duration);
    TestCase.assertEquals(0, metricDatas.size());
    assetRepository.deleteById(asset.getId());
}
Also used : HashMap(java.util.HashMap) Asset(com.vmware.flowgate.common.model.Asset) ArgumentMatchers.anyString(org.mockito.ArgumentMatchers.anyString) MetricData(com.vmware.flowgate.common.model.MetricData) SpringBootTest(org.springframework.boot.test.context.SpringBootTest) Test(org.junit.Test)

Example 9 with MetricData

use of com.vmware.flowgate.common.model.MetricData in project flowgate by vmware.

the class AssetControllerTest method testRealtimedataServerExample.

@Test
public void testRealtimedataServerExample() throws Exception {
    FieldDescriptor[] fieldpath = new FieldDescriptor[] { fieldWithPath("metricName").description("metric name").type(JsonFieldType.STRING), fieldWithPath("valueNum").description("valueNum.").type(JsonFieldType.NUMBER), fieldWithPath("value").description("value").type(JsonFieldType.NULL), fieldWithPath("unit").description("metric unit").type(JsonFieldType.STRING), fieldWithPath("timeStamp").description("timeStamp").type(JsonFieldType.NUMBER) };
    Asset asset = createAsset();
    List<RealTimeData> realTimeDatas = new ArrayList<>();
    long time = System.currentTimeMillis();
    int duration = 30 * 60 * 1000;
    long startTime = time - duration;
    long latestTime = startTime + 300000;
    RealTimeData pduUsageMetricData = createPduAllRealTimeData(startTime);
    pduUsageMetricData.setAssetID("0001bdc8b25d4c2badfd045ab61aabfa");
    RealTimeData tempRealTimeData = createTemperatureSensorRealtimeData(startTime, "00027ca37b004a9890d1bf20349d5ac1");
    RealTimeData humdityRealTimeData = createHumiditySensorRealtimeData(startTime, "34527ca37b004a9890d1bf20349d5ac1");
    RealTimeData backTemperature = createBackTemperatureSensorRealtimeData(startTime, "968765a37b004a9890d1bf20349d5ac1");
    RealTimeData backHumidity = createBackHumiditySensorRealtimeData(startTime, "486970a37b004a9890d1bf20349d5ac1");
    RealTimeData hostRealTimeData = createServerHostRealTimeData(startTime);
    hostRealTimeData.setAssetID(asset.getId());
    realTimeDatas.add(hostRealTimeData);
    realTimeDatas.add(humdityRealTimeData);
    realTimeDatas.add(tempRealTimeData);
    realTimeDatas.add(backHumidity);
    realTimeDatas.add(backTemperature);
    realTimeDatas.add(pduUsageMetricData);
    realtimeDataRepository.saveAll(realTimeDatas);
    asset = fillingMetricsformula(asset);
    HashMap<String, String> justificationfields = new HashMap<>();
    justificationfields.put(FlowgateConstant.PDU_PORT_FOR_SERVER, "power-2_FIELDSPLIT_CAN1-MDF-R01-PDU-BUILDING_FIELDSPLIT_OUTLET:1_FIELDSPLIT_0001bdc8b25d4c2badfd045ab61aabfa");
    asset.setJustificationfields(justificationfields);
    asset = assetRepository.save(asset);
    MvcResult result1 = this.mockMvc.perform(get("/v1/assets/{assetId}/realtimedata", asset.getId()).param("starttime", String.valueOf(startTime)).param("duration", String.valueOf(duration))).andDo(document("assets-getLatestAssetMetricsData-Server-example", pathParameters(parameterWithName("assetId").description("The id of asset,generated by flowgate.")), requestParameters(parameterWithName("starttime").description("Start time of you want to query.Default value: the system current time in Millis").optional(), parameterWithName("duration").description("Duration of you want to query.Default value: 300000 ms").optional()), responseFields(fieldWithPath("[]").description("An array of realTimeDatas")).andWithPrefix("[].", fieldpath))).andReturn();
    String res = result1.getResponse().getContentAsString();
    MetricData[] datas = mapper.readValue(res, MetricData[].class);
    try {
        for (MetricData serverdata : datas) {
            String metricName = serverdata.getMetricName();
            if (String.format(MetricKeyName.SERVER_CONNECTED_PDUX_OUTLETX_CURRENT, "0001bdc8b25d4c2badfd045ab61aabfa", "OUTLET:1").equals(metricName)) {
                TestCase.assertEquals(0.365, serverdata.getValueNum());
            } else if (String.format(MetricKeyName.SERVER_CONNECTED_PDUX_OUTLETX_POWER, "0001bdc8b25d4c2badfd045ab61aabfa", "OUTLET:1").equals(metricName)) {
                TestCase.assertEquals(0.081, serverdata.getValueNum());
            } else if (String.format(MetricKeyName.SERVER_CONNECTED_PDUX_OUTLETX_VOLTAGE, "0001bdc8b25d4c2badfd045ab61aabfa", "OUTLET:1").equals(metricName)) {
                TestCase.assertEquals(221.0, serverdata.getValueNum());
            } else if (String.format(MetricKeyName.SERVER_CONNECTED_PDUX_POWER_LOAD, "0001bdc8b25d4c2badfd045ab61aabfa").equals(metricName)) {
                TestCase.assertEquals(0.05, serverdata.getValueNum());
            } else if (String.format(MetricKeyName.SERVER_CONNECTED_PDUX_CURRENT_LOAD, "0001bdc8b25d4c2badfd045ab61aabfa").equals(metricName)) {
                TestCase.assertEquals(0.05, serverdata.getValueNum());
            } else if (String.format(MetricKeyName.SERVER_CONNECTED_PDUX_TOTAL_CURRENT, "0001bdc8b25d4c2badfd045ab61aabfa").equals(metricName)) {
                TestCase.assertEquals(1.455, serverdata.getValueNum());
            } else if (String.format(MetricKeyName.SERVER_CONNECTED_PDUX_TOTAL_POWER, "0001bdc8b25d4c2badfd045ab61aabfa").equals(metricName)) {
                TestCase.assertEquals(0.322, serverdata.getValueNum());
            } else if (String.format(MetricKeyName.SERVER_BACK_HUMIDITY_LOCATIONX, "OUTLET").equals(metricName)) {
                TestCase.assertEquals(19.0, serverdata.getValueNum());
            } else if (String.format(MetricKeyName.SERVER_BACK_TEMPREATURE_LOCATIONX, "OUTLET").equals(metricName)) {
                TestCase.assertEquals(25.0, serverdata.getValueNum());
            } else if (String.format(MetricKeyName.SERVER_FRONT_HUMIDITY_LOCATIONX, "INLET").equals(metricName)) {
                TestCase.assertEquals(serverdata.getValueNum(), 20.0);
            } else if (String.format(MetricKeyName.SERVER_FRONT_TEMPERATURE_LOCATIONX, "INLET").equals(metricName)) {
                TestCase.assertEquals(serverdata.getValueNum(), 32.0);
            } else if (MetricName.SERVER_VOLTAGE.equals(metricName)) {
                TestCase.assertEquals(221.0, serverdata.getValueNum());
            } else if (MetricName.SERVER_STORAGEUSAGE.equals(metricName)) {
                TestCase.assertEquals(65.0, serverdata.getValueNum());
                TestCase.assertEquals(latestTime, serverdata.getTimeStamp());
            } else if (MetricName.SERVER_MEMORYUSAGE.equals(metricName)) {
                TestCase.assertEquals(87.22, serverdata.getValueNum());
                TestCase.assertEquals(latestTime, serverdata.getTimeStamp());
            } else if (MetricName.SERVER_CPUUSEDINMHZ.equals(metricName)) {
                TestCase.assertEquals(570.0, serverdata.getValueNum());
                TestCase.assertEquals(latestTime, serverdata.getTimeStamp());
            } else if (MetricName.SERVER_CPUUSAGE.equals(metricName)) {
                TestCase.assertEquals(3.57, serverdata.getValueNum());
                TestCase.assertEquals(latestTime, serverdata.getTimeStamp());
            } else if (MetricName.SERVER_ACTIVEMEMORY.equals(metricName)) {
                TestCase.assertEquals(2063852.0, serverdata.getValueNum());
                TestCase.assertEquals(latestTime, serverdata.getTimeStamp());
            } else if (MetricName.SERVER_SHAREDMEMORY.equals(metricName)) {
                TestCase.assertEquals(8.00, serverdata.getValueNum());
                TestCase.assertEquals(latestTime, serverdata.getTimeStamp());
            } else if (MetricName.SERVER_CONSUMEDMEMORY.equals(metricName)) {
                TestCase.assertEquals(18291188.0, serverdata.getValueNum());
                TestCase.assertEquals(latestTime, serverdata.getTimeStamp());
            } else if (MetricName.SERVER_SWAPMEMORY.equals(metricName)) {
                TestCase.assertEquals(0.00, serverdata.getValueNum());
                TestCase.assertEquals(latestTime, serverdata.getTimeStamp());
            } else if (MetricName.SERVER_BALLOONMEMORY.equals(metricName)) {
                TestCase.assertEquals(0.0, serverdata.getValueNum());
                TestCase.assertEquals(latestTime, serverdata.getTimeStamp());
            } else if (MetricName.SERVER_NETWORKUTILIZATION.equals(metricName)) {
                TestCase.assertEquals(146.00, serverdata.getValueNum());
                TestCase.assertEquals(latestTime, serverdata.getTimeStamp());
            } else if (MetricName.SERVER_STORAGEIORATEUSAGE.equals(metricName)) {
                TestCase.assertEquals(61.0, serverdata.getValueNum());
                TestCase.assertEquals(latestTime, serverdata.getTimeStamp());
            } else if (MetricName.SERVER_POWER.equals(metricName)) {
                TestCase.assertEquals(0.069, serverdata.getValueNum());
                TestCase.assertEquals(latestTime, serverdata.getTimeStamp());
            } else if (MetricName.SERVER_PEAK_USED_POWER.equals(metricName)) {
                TestCase.assertEquals(0.80, serverdata.getValueNum());
            } else if (MetricName.SERVER_MINIMUM_USED_POWER.equals(metricName)) {
                TestCase.assertEquals(0.069, serverdata.getValueNum());
            } else if (MetricName.SERVER_AVERAGE_USED_POWER.equals(metricName)) {
                TestCase.assertEquals(0.60, serverdata.getValueNum());
            } else if (MetricName.SERVER_ENERGY_CONSUMPTION.equals(metricName)) {
                TestCase.assertEquals(356.0, serverdata.getValueNum());
            } else if (MetricName.SERVER_AVERAGE_TEMPERATURE.equals(metricName)) {
                TestCase.assertEquals(24.00, serverdata.getValueNum());
            } else if (MetricName.SERVER_PEAK_TEMPERATURE.equals(metricName)) {
                TestCase.assertEquals(30.00, serverdata.getValueNum());
            }
        }
    } finally {
        assetRepository.deleteById(asset.getId());
        realtimeDataRepository.deleteById(pduUsageMetricData.getId());
        realtimeDataRepository.deleteById(tempRealTimeData.getId());
        realtimeDataRepository.deleteById(humdityRealTimeData.getId());
        realtimeDataRepository.deleteById(backHumidity.getId());
        realtimeDataRepository.deleteById(backTemperature.getId());
        realtimeDataRepository.deleteById(hostRealTimeData.getId());
    }
}
Also used : RealTimeData(com.vmware.flowgate.common.model.RealTimeData) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) ArgumentMatchers.anyString(org.mockito.ArgumentMatchers.anyString) MvcResult(org.springframework.test.web.servlet.MvcResult) FieldDescriptor(org.springframework.restdocs.payload.FieldDescriptor) Asset(com.vmware.flowgate.common.model.Asset) MetricData(com.vmware.flowgate.common.model.MetricData) SpringBootTest(org.springframework.boot.test.context.SpringBootTest) Test(org.junit.Test)

Example 10 with MetricData

use of com.vmware.flowgate.common.model.MetricData in project flowgate by vmware.

the class AssetControllerTest method testGetServerMetricsOutLetisNull.

@Test
public void testGetServerMetricsOutLetisNull() {
    Asset asset = createAsset();
    List<RealTimeData> realTimeDatas = new ArrayList<RealTimeData>();
    long time = System.currentTimeMillis();
    int duration = 30 * 60 * 1000;
    long startTime = time - duration;
    RealTimeData pduUsageMetricData = createPduAllRealTimeData(startTime);
    pduUsageMetricData.setAssetID("0001bdc8b25d4c2badfd045ab61aabfa");
    realTimeDatas.add(pduUsageMetricData);
    realtimeDataRepository.saveAll(realTimeDatas);
    asset = fillingMetricsformula(asset);
    asset = assetRepository.save(asset);
    List<MetricData> metricDatas = assetService.getMetricsByID(asset.getId(), startTime, duration);
    for (MetricData serverdata : metricDatas) {
        String metricName = serverdata.getMetricName();
        if (String.format(MetricKeyName.SERVER_CONNECTED_PDUX_POWER_LOAD, "0001bdc8b25d4c2badfd045ab61aabfa").equals(metricName)) {
            TestCase.assertEquals(0.05, serverdata.getValueNum());
        } else if (String.format(MetricKeyName.SERVER_CONNECTED_PDUX_CURRENT_LOAD, "0001bdc8b25d4c2badfd045ab61aabfa").equals(metricName)) {
            TestCase.assertEquals(0.05, serverdata.getValueNum());
        } else if (String.format(MetricKeyName.SERVER_CONNECTED_PDUX_TOTAL_CURRENT, "0001bdc8b25d4c2badfd045ab61aabfa").equals(metricName)) {
            TestCase.assertEquals(1.455, serverdata.getValueNum());
        } else if (String.format(MetricKeyName.SERVER_CONNECTED_PDUX_TOTAL_POWER, "0001bdc8b25d4c2badfd045ab61aabfa").equals(metricName)) {
            TestCase.assertEquals(0.322, serverdata.getValueNum());
        } else {
            TestCase.fail("Unkown metric: " + metricName);
        }
    }
    assetRepository.deleteById(asset.getId());
    realtimeDataRepository.deleteById(pduUsageMetricData.getId());
}
Also used : RealTimeData(com.vmware.flowgate.common.model.RealTimeData) ArrayList(java.util.ArrayList) Asset(com.vmware.flowgate.common.model.Asset) ArgumentMatchers.anyString(org.mockito.ArgumentMatchers.anyString) MetricData(com.vmware.flowgate.common.model.MetricData) SpringBootTest(org.springframework.boot.test.context.SpringBootTest) Test(org.junit.Test)

Aggregations

MetricData (com.vmware.flowgate.common.model.MetricData)35 ArrayList (java.util.ArrayList)25 HashMap (java.util.HashMap)24 ValueUnit (com.vmware.flowgate.common.model.ValueUnit)23 Test (org.junit.Test)23 SpringBootTest (org.springframework.boot.test.context.SpringBootTest)23 Asset (com.vmware.flowgate.common.model.Asset)16 RealTimeData (com.vmware.flowgate.common.model.RealTimeData)16 TranslateContext (com.vmware.flowgate.common.model.TranslateContext)13 ArgumentMatchers.anyString (org.mockito.ArgumentMatchers.anyString)13 MvcResult (org.springframework.test.web.servlet.MvcResult)8 Map (java.util.Map)7 List (java.util.List)6 FieldDescriptor (org.springframework.restdocs.payload.FieldDescriptor)4 HashSet (java.util.HashSet)3 JsonProcessingException (com.fasterxml.jackson.core.JsonProcessingException)1 AssetIPMapping (com.vmware.flowgate.common.model.AssetIPMapping)1 IntegrationStatus (com.vmware.flowgate.common.model.IntegrationStatus)1 ServerMapping (com.vmware.flowgate.common.model.ServerMapping)1 MetricClient (com.vmware.flowgate.vroworker.vro.MetricClient)1