DefaultEntityResolver() { idProviders.put(ConditionType.APM_APP.getTypeString(), new ApplicationIdProvider()); idProviders.put(ConditionType.APM_KEY_TRANSACTION.getTypeString(), new KeyTransactionIdProvider()); idProviders.put(ConditionType.SERVERS_METRIC.getTypeString(), new ServerIdProvider()); idProviders.put(ExternalServiceConditionType.APM.getTypeString(), new ApplicationIdProvider()); idProviders.put(ConditionType.APM_JVM.getTypeString(), new ApplicationIdProvider()); idProviders.put(ConditionType.BROWSER_METRIC.getTypeString(), new ApplicationIdProvider()); uuidProviders.put(SyntheticsCondition.class.getSimpleName(), new SyntheticsMonitorUuidProvider()); }
@Test public void defaultInstance_shouldSupportAllConditionEntities() { for (ConditionType type : ConditionType.values()) { assertCanResolveType(type.getTypeString()); } }
public Collection<Integer> resolveEntities(NewRelicApi api, Condition condition) { IdProvider idProvider = getIdProvider(condition.getType().getTypeString()); return condition.getEntities().stream() .map(e -> idProvider.getId(api, e)) .collect(Collectors.toList()); }
@Test public void resolveEntities_shouldResolveConditionEntities() { // given Condition condition = mock(Condition.class); when(condition.getType()).thenReturn(ConditionType.APM_KEY_TRANSACTION); when(condition.getEntities()).thenReturn(Arrays.asList("e1", "e2")); when(idProviderMock.getId(apiMock, "e1")).thenReturn(1); when(idProviderMock.getId(apiMock, "e2")).thenReturn(2); // when Collection<Integer> ids = testee.resolveEntities(apiMock, condition); // then assertThat(ids).containsExactly(1, 2); verify(testee).getIdProvider(ConditionType.APM_KEY_TRANSACTION.getTypeString()); }
private static AlertsCondition.AlertsConditionBuilder createConditionBuilder() { return AlertsCondition.builder() .type(ConditionType.APM_APP.getTypeString()) .name(CONDITION_NAME) .enabled(ENABLED) .entity(APPLICATION_ENTITY_ID) .metric(APP_METRIC.name().toLowerCase()) .conditionScope(CONDITION_SCOPE.name().toLowerCase()) .violationCloseTimer(VIOLATION_CLOSE_TIMER.getDuration()) .term(Terms.builder() .duration(String.valueOf(TERMS_CONFIGURATION.getDurationTerm().getDuration())) .operator(TERMS_CONFIGURATION.getOperatorTerm().name().toLowerCase()) .priority(TERMS_CONFIGURATION.getPriorityTerm().name().toLowerCase()) .threshold(String.valueOf(TERMS_CONFIGURATION.getThresholdTerm())) .timeFunction(TERMS_CONFIGURATION.getTimeFunctionTerm().name().toLowerCase()) .build()); } }
@Override protected AlertsCondition convertFromConfigItem(Condition condition) { return AlertsCondition.builder() .type(condition.getType().getTypeString()) .name(condition.getConditionName()) .enabled(condition.isEnabled()) .entities(entityResolver.resolveEntities(api, condition)) .metric(condition.getMetricAsString()) .conditionScope(condition.getConditionScopeAsString()) .runbookUrl(condition.getRunBookUrl()) .terms(TermsUtils.createTerms(condition.getTerms())) .violationCloseTimer(condition.getViolationCloseTimerAsString()) .userDefined(UserDefinedUtils.createUserDefined(condition.getUserDefinedMetric())) .gcMetric(condition.getGcMetricAsString()) .build(); }