private void buildTopologyDataSource(TopologyUsage u) { for (String policyName : u.getPolicies()) { PolicyDefinition def = policies.get(policyName); if (def != null) { u.getDataSources().addAll(findDatasource(def)); } else { LOG.error(" policy not find {}, but reference in topology usage {} !", policyName, u.getTopoName()); } } }
private void placePolicy(PolicyDefinition def, AlertBoltUsage alertBoltUsage, Topology targetTopology, TopologyUsage usage) { String policyName = def.getName(); // topology usage update alertBoltUsage.addPolicies(def); // update alert policy usage.getPolicies().add(policyName); // update source topics updateDataSource(usage, def); // update group-by updateGrouping(usage, def); }
for (String p : u.getPolicies()) { PolicyDefinition definition = context.getPolicies().get(p); if (definition == null) {
u.getPolicies().addAll(topo2Policies.get(u.getTopoName()));
for (String policyName : usage.getPolicies()) { PolicyDefinition def = context.getPolicies().get(policyName);
@Test public void test() { InMemMetadataServiceClient client = getSampleMetadataService(); ScheduleContextBuilder builder = new ScheduleContextBuilder(config, client); IScheduleContext context = builder.buildContext(); // assert topology usage Map<String, TopologyUsage> usages = context.getTopologyUsages(); Assert.assertEquals(1, usages.get(TOPO1).getMonitoredStream().size()); Assert.assertTrue(usages.get(TOPO1).getPolicies().contains(TEST_POLICY_1)); String alertBolt0 = TOPO1 + "-alert-" + "0"; String alertBolt1 = TOPO1 + "-alert-" + "1"; String alertBolt2 = TOPO1 + "-alert-" + "2"; for (AlertBoltUsage u : usages.get(TOPO1).getAlertUsages().values()) { if (u.getBoltId().equals(alertBolt0) || u.getBoltId().equals(alertBolt1) || u.getBoltId().equals(alertBolt2)) { Assert.assertEquals(1, u.getPolicies().size()); Assert.assertTrue(u.getPolicies().contains(TEST_POLICY_1)); Assert.assertEquals(1, u.getPartitions().size()); Assert.assertEquals(1, u.getReferQueues().size()); } } }
@Test public void test_remove_policy() { InMemMetadataServiceClient client = getSampleMetadataService(); ScheduleContextBuilder builder = new ScheduleContextBuilder(config, client); PolicyAssignment assignment1 = client.getVersionedSpec().getAssignments().get(0); IScheduleContext context = builder.buildContext(); Assert.assertTrue(context.getPolicyAssignments().containsKey(TEST_POLICY_1)); StreamWorkSlotQueue queue = SchedulerTest.getQueue(context, assignment1.getQueueId()).getRight(); client.removePolicy(0); context = builder.buildContext(); Assert.assertFalse(context.getPolicyAssignments().containsKey(TEST_POLICY_1)); WorkSlot slot = queue.getWorkingSlots().get(0); Set<String> topoPolicies = context.getTopologyUsages().get(slot.topologyName).getPolicies(); Assert.assertFalse(topoPolicies.contains(TEST_DATASOURCE_1)); Assert.assertEquals(0, topoPolicies.size()); }
Set<String> topoPolicies = topologyUsage.getPolicies(); Assert.assertFalse(topoPolicies.contains(TEST_DATASOURCE_1)); Assert.assertEquals(0, topoPolicies.size());