@Test public void testGetTopologySummary() { ClusterSummary cs = mock(ClusterSummary.class); TopologySummary ts = mock(TopologySummary.class); String tsName = "benchmarks"; String fakeName = "fake"; when(cs.get_topologies()).thenReturn(Lists.newArrayList(ts)); when(ts.get_name()).thenReturn(tsName); assertThat(MetricsUtils.getTopologySummary(cs, tsName)).isEqualTo(ts); assertThat(MetricsUtils.getTopologySummary(cs, fakeName)).isNull(); }
@Override public ApplicationEntity.Status status( Application<StormEnvironment, StormTopology> executor, com.typesafe.config.Config config) { String appId = config.getString("appId"); LOG.info("Fetching {} status", appId); List<TopologySummary> topologySummaries; ApplicationEntity.Status status = null; try { if (Objects.equals(config.getString("mode"), ApplicationEntity.Mode.CLUSTER.name())) { Nimbus.Client stormClient = NimbusClient.getConfiguredClient(getStormConfig(config)).getClient(); topologySummaries = stormClient.getClusterInfo().get_topologies(); } else { topologySummaries = getLocalCluster().getClusterInfo().get_topologies(); } for (TopologySummary topologySummary : topologySummaries) { if (topologySummary.get_name().equalsIgnoreCase(appId)) { if (topologySummary.get_status().equalsIgnoreCase("ACTIVE")) { status = ApplicationEntity.Status.RUNNING; } else if (topologySummary.get_status().equalsIgnoreCase("INACTIVE")) { status = ApplicationEntity.Status.STOPPED; } else if (topologySummary.get_status().equalsIgnoreCase("KILLED")) { status = ApplicationEntity.Status.STOPPED; } else { LOG.error( "Unknown storm topology ({}) status: {}", topologySummary.get_status(), topologySummary.get_status()); } } } // If not exist, return removed if (status == null) { status = ApplicationEntity.Status.REMOVED; } } catch (TException e) { LOG.error("Got error to fetch status of {}", appId, e); status = ApplicationEntity.Status.UNKNOWN; } LOG.info("{} status is {}", appId, status); return status; }