@Override @SneakyThrows // TODO add checked exception handling public Void handleRequest(CloudWatchEvent<Map> input, Context context) { log.debug("Reconciler request: {}", input); ListClustersResponse r = dataService.listClusters(ListClustersRequest.builder().build()); List<Cluster> clusters = r.getClusters(); clusters .stream() .map(c -> stateFunction.triggerAsync(new ManagerInput(c))) .collect(CompletableFutures.joinList()) .join(); return null; } }
@Bean public DataService dataService() throws Exception { return when(mock(DataService.class).listClusters(ListClustersRequest.builder().build())) .thenReturn( ListClustersResponse.builder() .clusters( Collections.singletonList( Cluster.builder() .accountId(ACCOUNT_ID) .clusterName(CLUSTER_NAME) .build())) .build()) .getMock(); }
@Test public void itFiltersByAccountIdIfGiven() throws Exception { when(repository.listClusters("1", null)).thenReturn(asList(cluster("1", "alpha"))); ListClustersResponse response = api.listClusters(ListClustersRequest.builder().accountId("1").build()); assertThat(response.getClusters()) .extracting("accountId", "clusterName") .containsExactly(tuple("1", "alpha")); }
@Test public void testListClusterWithTwoEnvironments() throws Exception { dataService.createEnvironment( models.createEnvironmentRequest().environmentId(createdEnvironmentId1).build()); dataService.createEnvironment( models.createEnvironmentRequest().environmentId(createdEnvironmentId2).build()); final ListClustersResponse listClustersResponse = dataService.listClusters(models.listClustersRequest().clusterNamePrefix(null).build()); assertThat(listClustersResponse.getClusters()) .isEqualTo( Arrays.asList( models.cluster().clusterName(CLUSTER_ONE).build(), models.cluster().clusterName(CLUSTER_TWO).build())); } }
@Test public void itListsAllClusters() throws Exception { when(repository.listClusters(null, null)) .thenReturn(asList(cluster("1", "alpha"), cluster("2", "beta"), cluster("3", "gamma"))); ListClustersResponse response = api.listClusters(ListClustersRequest.builder().build()); assertThat(response.getClusters()) .extracting("accountId", "clusterName") .containsExactlyInAnyOrder(tuple("1", "alpha"), tuple("2", "beta"), tuple("3", "gamma")); }
@Test public void itFiltersByAccountIdAndPrefixIfGiven() throws Exception { when(repository.listClusters("1", "alpha")) .thenReturn(asList(cluster("1", "alpha-one"), cluster("1", "alpha-two"))); ListClustersResponse response = api.listClusters( ListClustersRequest.builder().accountId("1").clusterNamePrefix("alpha").build()); assertThat(response.getClusters()) .extracting("accountId", "clusterName") .containsExactlyInAnyOrder(tuple("1", "alpha-one"), tuple("1", "alpha-two")); } }