/** * Synchronizes configurations (see {@link Configurator#setApplicationConfigurations(Collection)} * and {@link Configurator#setPolicyConfigurations(Collection)}) */ public void sync() { for (ApplicationConfiguration applicationConfiguration : applicationConfigurations) { applicationConfigurator.sync(applicationConfiguration); } for (PolicyConfiguration configuration : policyConfigurations) { policyConfigurator.sync(configuration); conditionConfigurator.sync(configuration); externalServiceConditionConfigurator.sync(configuration); nrqlConditionConfigurator.sync(configuration); syntheticsConditionConfigurator.sync(configuration); channelConfigurator.sync(configuration); } }
private static void synchronizeAlerts(String newRelicApiKey, List<ApplicationConfiguration> applicationConfigurations, List<PolicyConfiguration> policyConfigurations) { Configurator configurator = new Configurator(newRelicApiKey); configurator.setApplicationConfigurations(applicationConfigurations); configurator.setPolicyConfigurations(policyConfigurations); configurator.sync(); }
private void cleanupPolicyAlertsChannels(AlertsPolicy policy, Set<Integer> policyChannelsToCleanup) { for (Integer policyChannelId : policyChannelsToCleanup) { cleanupPolicyAlertsChannel(policy, policyChannelId); } }
/** * NewRelic Alerts configurator constructor * * @param apiKey API Key for given NewRelic account */ public Configurator(@NonNull String apiKey) { NewRelicApi api = new NewRelicApi(apiKey); applicationConfigurator = new ApplicationConfigurator(api); policyConfigurator = new PolicyConfigurator(api); conditionConfigurator = new ConditionConfigurator(api, EntityResolver.defaultInstance()); externalServiceConditionConfigurator = new ExternalServiceConditionConfigurator(api, EntityResolver.defaultInstance()); nrqlConditionConfigurator = new NrqlConditionConfigurator(api); syntheticsConditionConfigurator = new SyntheticsConditionConfigurator(api, EntityResolver.defaultInstance()); channelConfigurator = new ChannelConfigurator(api); }
@Test public void shouldSynchronizeAllConfigurationsForPolicy_whenFullPolicyConfiguration() { // given testee.setPolicyConfigurations(ImmutableList.of(policyConfigurationMock)); // when testee.sync(); // then InOrder order = inOrder(applicationConfiguratorMock, policyConfiguratorMock, conditionConfiguratorMock, externalServiceConditionConfiguratorMock, nrqlConditionConfiguratorMock, syntheticsConditionConfiguratorMock, channelConfiguratorMock); order.verify(policyConfiguratorMock).sync(policyConfigurationMock); order.verify(conditionConfiguratorMock).sync(policyConfigurationMock); order.verify(externalServiceConditionConfiguratorMock).sync(policyConfigurationMock); order.verify(nrqlConditionConfiguratorMock).sync(policyConfigurationMock); order.verify(syntheticsConditionConfiguratorMock).sync(policyConfigurationMock); order.verify(channelConfiguratorMock).sync(policyConfigurationMock); order.verifyNoMoreInteractions(); } }
@Test public void shouldDoNothing_whenNullConditionsInConfiguration() { PolicyItemApi<U> itemApiMock = getPolicyItemApiMock(); // given PolicyConfiguration config = PolicyConfiguration.builder() .policyName(POLICY_NAME) .incidentPreference(PolicyConfiguration.IncidentPreference.PER_POLICY) .build(); // when testee.sync(config); // then verifyZeroInteractions(itemApiMock); }
@Test public void shouldSynchronizeMoreThanOneConfigurations_whenMoreThanOneConfigurationsSet() { // given ApplicationConfiguration applicationConfigurationMock2 = mock(ApplicationConfiguration.class); PolicyConfiguration policyConfigurationMock2 = mock(PolicyConfiguration.class); testee.setApplicationConfigurations(ImmutableList.of(applicationConfigurationMock, applicationConfigurationMock2)); testee.setPolicyConfigurations(ImmutableList.of(policyConfigurationMock, policyConfigurationMock2)); // when testee.sync(); // then InOrder order = inOrder(applicationConfiguratorMock, policyConfiguratorMock, conditionConfiguratorMock, externalServiceConditionConfiguratorMock, nrqlConditionConfiguratorMock, syntheticsConditionConfiguratorMock, channelConfiguratorMock); order.verify(applicationConfiguratorMock).sync(applicationConfigurationMock); order.verify(applicationConfiguratorMock).sync(applicationConfigurationMock2); order.verify(policyConfiguratorMock).sync(policyConfigurationMock); order.verify(policyConfiguratorMock).sync(policyConfigurationMock2); }
@Before public void setUp() { super.setUp(); when(entityResolverMock.resolveEntities(apiMock, EXTERNAL_SERVICE_CONDITION)).thenReturn(Collections.singletonList(APPLICATION_ENTITY_ID)); testee = new ExternalServiceConditionConfigurator(apiMock, entityResolverMock); }
@Before public void setUp() { super.setUp(); when(entityResolverMock.resolveEntities(apiMock, APP_CONDITION)).thenReturn(Collections.singletonList(APPLICATION_ENTITY_ID)); testee = new ConditionConfigurator(apiMock, entityResolverMock); }
@Test public void shouldThrowException_whenUserChannelDosNotExist() { // given PolicyConfiguration policyConfiguration = buildPolicyConfiguration(USER_CHANNEL); // then - exception expectedException.expect(NewRelicSyncException.class); expectedException.expectMessage("Alerts channel with configuration"); // when testee.sync(policyConfiguration); }
@Before public void setUp() { super.setUp(); testee = new NrqlConditionConfigurator(apiMock); }
@Before public void setUp() { testee = new Configurator(applicationConfiguratorMock, policyConfiguratorMock, conditionConfiguratorMock, externalServiceConditionConfiguratorMock, nrqlConditionConfiguratorMock, syntheticsConditionConfiguratorMock, channelConfiguratorMock); }
@Before public void setUp() { testee = new PolicyConfigurator(apiMock); }
@Before public void setUp() { testee = new ApplicationConfigurator(apiMock); }
private AlertsChannel createAlertChannel(Channel channel) { return createAlertChannel(null, channel); }
private Optional<T> findItemsToUpdate(Collection<T> allItems, T itemFromConfig) { return allItems.stream() .filter(item -> sameInstance(item, itemFromConfig)) .findAny(); }
private AlertsChannel findSameOrCreate(AlertsChannel alertsChannelFromConfig, Collection<AlertsChannel> sameInstanceChannels) { return sameInstanceChannels.stream() .filter(alertsChannelFromConfig::equals) .findAny() .orElseGet(() -> createAlertsChannel(alertsChannelFromConfig)); }
@Test public void shouldDoNothing_whenEmptyChannelsInConfiguration() { // given PolicyConfiguration policyConfiguration = buildPolicyConfiguration(); // when testee.sync(policyConfiguration); // then InOrder order = inOrder(alertsChannelsApiMock); order.verify(alertsChannelsApiMock).list(); order.verifyNoMoreInteractions(); }
@Test public void shouldThrowException_whenNoApiKey() { // given // then - exception expectedException.expect(NullPointerException.class); expectedException.expectMessage("apiKey"); // when new Configurator(null); }
@Test public void shouldThrowException_whenPolicyDoesNotExist() { // given when(alertsPoliciesApiMock.getByName(POLICY_NAME)).thenReturn(Optional.empty()); PolicyConfiguration policyConfiguration = buildPolicyConfiguration(); // then - exception expectedException.expect(NewRelicSyncException.class); expectedException.expectMessage(format("Policy %s does not exist", POLICY_NAME)); // when testee.sync(policyConfiguration); }