use of com.microsoft.dhalion.metrics.ComponentMetrics in project incubator-heron by apache.
the class BackPressureDetectorTest method testConfigAndFilter.
@Test
public void testConfigAndFilter() {
HealthPolicyConfig config = mock(HealthPolicyConfig.class);
when(config.getConfig(CONF_NOISE_FILTER, 20)).thenReturn(50);
ComponentMetrics compMetrics = new ComponentMetrics("bolt", "i1", METRIC_BACK_PRESSURE.text(), 55);
Map<String, ComponentMetrics> topologyMetrics = new HashMap<>();
topologyMetrics.put("bolt", compMetrics);
BackPressureSensor sensor = mock(BackPressureSensor.class);
when(sensor.get()).thenReturn(topologyMetrics);
BackPressureDetector detector = new BackPressureDetector(sensor, config);
List<Symptom> symptoms = detector.detect();
Assert.assertEquals(1, symptoms.size());
compMetrics = new ComponentMetrics("bolt", "i1", METRIC_BACK_PRESSURE.text(), 45);
topologyMetrics.put("bolt", compMetrics);
sensor = mock(BackPressureSensor.class);
when(sensor.get()).thenReturn(topologyMetrics);
detector = new BackPressureDetector(sensor, config);
symptoms = detector.detect();
Assert.assertEquals(0, symptoms.size());
}
use of com.microsoft.dhalion.metrics.ComponentMetrics in project incubator-heron by apache.
the class SlowInstanceDiagnoserTest method diagnosis1of3SlowInstances.
@Test
public void diagnosis1of3SlowInstances() {
List<Symptom> symptoms = TestUtils.createBpSymptomList(123, 0, 0);
symptoms.add(TestUtils.createWaitQueueDisparitySymptom(1000, 20, 20));
Diagnosis result = new SlowInstanceDiagnoser().diagnose(symptoms);
assertEquals(1, result.getSymptoms().size());
ComponentMetrics data = result.getSymptoms().values().iterator().next().getComponent();
assertEquals(123, data.getMetricValueSum("container_1_bolt_0", METRIC_BACK_PRESSURE.text()).intValue());
}
use of com.microsoft.dhalion.metrics.ComponentMetrics in project incubator-heron by apache.
the class ScaleUpResolverTest method testResolve.
@Test
public void testResolve() {
TopologyAPI.Topology topology = createTestTopology();
Config config = createConfig(topology);
PackingPlan currentPlan = createPacking(topology, config);
PackingPlanProvider packingPlanProvider = mock(PackingPlanProvider.class);
when(packingPlanProvider.get()).thenReturn(currentPlan);
ISchedulerClient scheduler = mock(ISchedulerClient.class);
when(scheduler.updateTopology(any(UpdateTopologyRequest.class))).thenReturn(true);
ComponentMetrics metrics = new ComponentMetrics("bolt", "i1", METRIC_BACK_PRESSURE.text(), 123);
Symptom symptom = new Symptom(SYMPTOM_UNDER_PROVISIONING.text(), metrics);
List<Diagnosis> diagnosis = new ArrayList<>();
diagnosis.add(new Diagnosis("test", symptom));
ScaleUpResolver resolver = new ScaleUpResolver(null, packingPlanProvider, scheduler, eventManager, null);
ScaleUpResolver spyResolver = spy(resolver);
doReturn(2).when(spyResolver).computeScaleUpFactor(metrics);
doReturn(currentPlan).when(spyResolver).buildNewPackingPlan(any(HashMap.class), eq(currentPlan));
List<Action> result = spyResolver.resolve(diagnosis);
verify(scheduler, times(1)).updateTopology(any(UpdateTopologyRequest.class));
assertEquals(1, result.size());
}
use of com.microsoft.dhalion.metrics.ComponentMetrics in project incubator-heron by apache.
the class GrowingWaitQueueDetectorTest method testDetector.
@Test
public void testDetector() {
HealthPolicyConfig config = mock(HealthPolicyConfig.class);
when(config.getConfig(CONF_LIMIT, 10.0)).thenReturn(5.0);
ComponentMetrics compMetrics;
InstanceMetrics instanceMetrics;
Map<Instant, Double> bufferSizes;
Map<String, ComponentMetrics> topologyMetrics = new HashMap<>();
instanceMetrics = new InstanceMetrics("i1");
bufferSizes = new HashMap<>();
bufferSizes.put(Instant.ofEpochSecond(1497892222), 0.0);
bufferSizes.put(Instant.ofEpochSecond(1497892270), 300.0);
bufferSizes.put(Instant.ofEpochSecond(1497892330), 700.0);
bufferSizes.put(Instant.ofEpochSecond(1497892390), 1000.0);
bufferSizes.put(Instant.ofEpochSecond(1497892450), 1300.0);
instanceMetrics.addMetric(METRIC_BUFFER_SIZE.text(), bufferSizes);
compMetrics = new ComponentMetrics("bolt");
compMetrics.addInstanceMetric(instanceMetrics);
topologyMetrics.put("bolt", compMetrics);
BufferSizeSensor sensor = mock(BufferSizeSensor.class);
when(sensor.get()).thenReturn(topologyMetrics);
GrowingWaitQueueDetector detector = new GrowingWaitQueueDetector(sensor, config);
List<Symptom> symptoms = detector.detect();
assertEquals(1, symptoms.size());
instanceMetrics = new InstanceMetrics("i1");
bufferSizes = new HashMap<>();
bufferSizes.put(Instant.ofEpochSecond(1497892222), 0.0);
bufferSizes.put(Instant.ofEpochSecond(1497892270), 200.0);
bufferSizes.put(Instant.ofEpochSecond(1497892330), 400.0);
bufferSizes.put(Instant.ofEpochSecond(1497892390), 600.0);
bufferSizes.put(Instant.ofEpochSecond(1497892450), 800.0);
instanceMetrics.addMetric(METRIC_BUFFER_SIZE.text(), bufferSizes);
compMetrics = new ComponentMetrics("bolt");
compMetrics.addInstanceMetric(instanceMetrics);
topologyMetrics.put("bolt", compMetrics);
sensor = mock(BufferSizeSensor.class);
when(sensor.get()).thenReturn(topologyMetrics);
detector = new GrowingWaitQueueDetector(sensor, config);
symptoms = detector.detect();
assertEquals(0, symptoms.size());
}
use of com.microsoft.dhalion.metrics.ComponentMetrics in project incubator-heron by apache.
the class ProcessingRateSkewDetectorTest method testConfigAndFilter.
@Test
public void testConfigAndFilter() {
HealthPolicyConfig config = mock(HealthPolicyConfig.class);
when(config.getConfig(CONF_SKEW_RATIO, 1.5)).thenReturn(2.5);
ComponentMetrics compMetrics = new ComponentMetrics("bolt");
compMetrics.addInstanceMetric(new InstanceMetrics("i1", METRIC_EXE_COUNT.text(), 1000));
compMetrics.addInstanceMetric(new InstanceMetrics("i2", METRIC_EXE_COUNT.text(), 200));
Map<String, ComponentMetrics> topologyMetrics = new HashMap<>();
topologyMetrics.put("bolt", compMetrics);
ExecuteCountSensor sensor = mock(ExecuteCountSensor.class);
when(sensor.get()).thenReturn(topologyMetrics);
when(sensor.getMetricName()).thenReturn(METRIC_EXE_COUNT.text());
ProcessingRateSkewDetector detector = new ProcessingRateSkewDetector(sensor, config);
List<Symptom> symptoms = detector.detect();
assertEquals(1, symptoms.size());
compMetrics = new ComponentMetrics("bolt");
compMetrics.addInstanceMetric(new InstanceMetrics("i1", METRIC_EXE_COUNT.text(), 1000));
compMetrics.addInstanceMetric(new InstanceMetrics("i2", METRIC_EXE_COUNT.text(), 500));
topologyMetrics.put("bolt", compMetrics);
sensor = mock(ExecuteCountSensor.class);
when(sensor.get()).thenReturn(topologyMetrics);
detector = new ProcessingRateSkewDetector(sensor, config);
symptoms = detector.detect();
assertEquals(0, symptoms.size());
}
Aggregations