private String getUniqueBoltId(WorkSlot slot) { return String.format(UNIQUE_BOLT_ID, slot.getTopologyName(), slot.getBoltId()); }
private void calculateGroupIndexAndCount(StreamWorkSlotQueue queue) { Map<String, Integer> result = new HashMap<String, Integer>(); int total = 0; for (WorkSlot slot : queue.getWorkingSlots()) { if (result.containsKey(slot.getTopologyName())) { continue; } result.put(slot.getTopologyName(), total); total += context.getTopologies().get(slot.getTopologyName()).getNumOfGroupBolt(); } queue.setNumberOfGroupBolts(total); queue.setTopoGroupStartIndex(result); }
if (!topo2MonitorStream.containsKey(slot.getTopologyName())) { topo2MonitorStream.put(slot.getTopologyName(), new HashSet<MonitoredStream>()); topo2MonitorStream.get(slot.getTopologyName()).add(stream); if (!topo2Policies.containsKey(slot.getTopologyName())) { topo2Policies.put(slot.getTopologyName(), new HashSet<String>()); topo2Policies.get(slot.getTopologyName()).addAll(policiesOnQ);
private void placePolicyToQueue(PolicyDefinition def, StreamWorkSlotQueue queue, Map<String, PolicyAssignment> newAssignments) { for (WorkSlot slot : queue.getWorkingSlots()) { Topology targetTopology = context.getTopologies().get(slot.getTopologyName()); TopologyUsage usage = context.getTopologyUsages().get(slot.getTopologyName()); AlertBoltUsage alertBoltUsage = usage.getAlertBoltUsage(slot.getBoltId()); placePolicy(def, alertBoltUsage, targetTopology, usage); } // queue.placePolicy(def); PolicyAssignment assignment = new PolicyAssignment(def.getName(), queue.getQueueId()); context.getPolicyAssignments().put(def.getName(), assignment); newAssignments.put(def.getName(), assignment); }
private void assignQueueSlots(MonitoredStream stream, StreamWorkSlotQueue queue) { for (WorkSlot slot : queue.getWorkingSlots()) { TopologyUsage u = context.getTopologyUsages().get(slot.getTopologyName()); AlertBoltUsage boltUsage = u.getAlertBoltUsage(slot.getBoltId()); boltUsage.addQueue(stream.getStreamGroup(), queue); u.addMonitoredStream(stream); } }
private boolean isQueueAvailable(StreamWorkSlotQueue queue, PolicyDefinition def) { if (queue.getQueueSize() < def.getParallelismHint()) { return false; } for (WorkSlot slot : queue.getWorkingSlots()) { TopologyUsage u = context.getTopologyUsages().get(slot.getTopologyName()); AlertBoltUsage usage = u.getAlertBoltUsage(slot.getBoltId()); if (!isBoltAvailable(usage, def)) { return false; } } return true; }
List<WorkSlot> slots = strategy.reserveWorkSlots(5, false, new HashMap<String, Object>()); Assert.assertEquals(5, slots.size()); LOG.info(slots.get(0).getTopologyName()); Assert.assertEquals(2, context.getTopologies().size()); Assert.assertEquals(2, context.getTopologyUsages().size()); Assert.assertEquals(slots.get(0).getTopologyName(), ws.getTopologyName());
topo1 = queue.getWorkingSlots().get(0).getTopologyName(); bolt1 = queue.getWorkingSlots().get(0).getBoltId(); Assert.assertEquals(1, context.getTopologies().size()); Assert.assertEquals(1, context.getTopologyUsages().size()); LOG.info(queue.getWorkingSlots().get(0).getTopologyName()); for (WorkSlot ws : queue.getWorkingSlots()) { Assert.assertEquals(topo1, ws.getTopologyName()); Assert.assertEquals(2, context.getTopologyUsages().size()); String topo2 = queue.getWorkingSlots().get(0).getTopologyName(); String bolt2 = queue.getWorkingSlots().get(0).getBoltId(); for (WorkSlot ws : queue.getWorkingSlots()) { Assert.assertEquals(topo2, ws.getTopologyName());
StreamWorkSlotQueue queue1 = getQueue(context, pa1.getQueueId()).getRight(); StreamWorkSlotQueue queue3 = getQueue(context, pa3.getQueueId()).getRight(); Assert.assertNotEquals(queue1.getWorkingSlots().get(0).getTopologyName(), queue3.getWorkingSlots().get(0).getTopologyName());
Assert.assertEquals(5, queues.get(0).getWorkers().size()); for (WorkSlot slot : queues.get(0).getWorkers()) { Assert.assertEquals(topo1, slot.getTopologyName()); LOG.info(slot.getBoltId());
Assert.assertEquals(5, queues.get(0).getWorkers().size()); for (WorkSlot slot : queues.get(0).getWorkers()) { Assert.assertEquals(topo1, slot.getTopologyName()); LOG.info(slot.getBoltId());
@Test public void testWorkSlot() { WorkSlot workSlot = new WorkSlot(); Assert.assertEquals("(null:null)", workSlot.toString()); Assert.assertEquals(null, workSlot.getBoltId()); Assert.assertEquals(null, workSlot.getTopologyName()); workSlot.setBoltId("setBoltId"); workSlot.setTopologyName("setTopologyName"); Assert.assertEquals("(setTopologyName:setBoltId)", workSlot.toString()); Assert.assertEquals("setBoltId", workSlot.getBoltId()); Assert.assertEquals("setTopologyName", workSlot.getTopologyName()); WorkSlot workSlot1 = new WorkSlot("setTopologyName", "setBoltId"); Assert.assertEquals("(setTopologyName:setBoltId)", workSlot1.toString()); Assert.assertEquals("setBoltId", workSlot1.getBoltId()); Assert.assertEquals("setTopologyName", workSlot1.getTopologyName()); Assert.assertTrue(workSlot1.equals(workSlot)); Assert.assertTrue(workSlot1.hashCode() == workSlot.hashCode()); } }