private boolean getQueueOnTopology(int size, List<WorkSlot> slots, Topology t) { TopologyUsage u = context.getTopologyUsages().get(t.getName()); if (!isTopologyAvailable(u)) { return false; } List<String> bolts = new ArrayList<String>(); for (AlertBoltUsage alertUsage : u.getAlertUsages().values()) { if (isBoltAvailable(alertUsage)) { bolts.add(alertUsage.getBoltId()); } if (bolts.size() == size) { break; } } if (bolts.size() == size) { for (String boltId : bolts) { WorkSlot slot = new WorkSlot(t.getName(), boltId); slots.add(slot); } return true; } return false; }
private static MonitoredStream createMonitoredStream() { MonitoredStream ms = new MonitoredStream(streamGroup); ms.setVersion(V1); List<WorkSlot> slots = new ArrayList<WorkSlot>(); WorkSlot slot0 = new WorkSlot(TOPO1, TOPO1 + "-alert-" + 0); WorkSlot slot1 = new WorkSlot(TOPO1, TOPO1 + "-alert-" + 1); WorkSlot slot2 = new WorkSlot(TOPO1, TOPO1 + "-alert-" + 2); WorkSlot slot3 = new WorkSlot(TOPO1, TOPO1 + "-alert-" + 3); WorkSlot slot4 = new WorkSlot(TOPO1, TOPO1 + "-alert-" + 4); WorkSlot slot5 = new WorkSlot(TOPO1, TOPO1 + "-alert-" + 5); slots.add(slot0); slots.add(slot1); slots.add(slot2); slots.add(slot3); slots.add(slot4); //slots.add(slot5); StreamWorkSlotQueue q = new StreamWorkSlotQueue(streamGroup, false, new HashMap<>(), slots); ms.addQueues(q); queueId = q.getQueueId(); return ms; }
public static StreamRouterSpec createSampleStreamRouteSpec(String streamId, String groupByField, List<String> targetEvaluatorIds) { List<WorkSlot> slots = Arrays.asList(targetEvaluatorIds.stream().map((t) -> { return new WorkSlot("sampleTopology", t); }).toArray(WorkSlot[]::new)); StreamRouterSpec streamRouteSpec = new StreamRouterSpec(); streamRouteSpec.setStreamId(streamId); streamRouteSpec.setPartition(createSampleStreamGroupbyPartition(streamId, Arrays.asList(groupByField))); streamRouteSpec.setTargetQueue(Arrays.asList(new PolicyWorkerQueue(slots))); return streamRouteSpec; }
streamPartition.setType(StreamPartition.Type.GROUPBY); streamGroup.addStreamPartition(streamPartition); WorkSlot workSlot = new WorkSlot("setTopologyName", "setBoltId"); List<WorkSlot> workSlots = new ArrayList<>(); workSlots.add(workSlot);
@Test public void testRouterBoltSpec() { List<String> topics = Arrays.asList("testTopic3", "testTopic4", "testTopic5"); RouterSpec boltSpec = new RouterSpec(); for (String topic : topics) { String streamId = getStreamNameByTopic(topic); // StreamPartition, groupby col1 for stream cpuUsageStream StreamPartition sp = new StreamPartition(); sp.setStreamId(streamId); sp.setColumns(Arrays.asList("value")); sp.setType(StreamPartition.Type.GROUPBY); StreamSortSpec sortSpec = new StreamSortSpec(); sortSpec.setWindowMargin(1000); sortSpec.setWindowPeriod2(Period.seconds(10)); sp.setSortSpec(sortSpec); // set StreamRouterSpec to have 2 WorkSlot StreamRouterSpec routerSpec = new StreamRouterSpec(); routerSpec.setPartition(sp); routerSpec.setStreamId(streamId); PolicyWorkerQueue queue = new PolicyWorkerQueue(); queue.setPartition(sp); queue.setWorkers(Arrays.asList(new WorkSlot("testTopology", "alertBolt0"), new WorkSlot("testTopology", "alertBolt1"))); routerSpec.setTargetQueue(Arrays.asList(queue)); boltSpec.addRouterSpec(routerSpec); } String json = MetadataSerDeser.serialize(boltSpec); System.out.println(json); RouterSpec deserializedSpec = MetadataSerDeser.deserialize(json, RouterSpec.class); Assert.assertEquals(3, deserializedSpec.getRouterSpecs().size()); }
streamPartition.setType(StreamPartition.Type.GROUPBY); streamGroup.addStreamPartition(streamPartition); WorkSlot workSlot = new WorkSlot("setTopologyName", "setBoltId"); List<WorkSlot> workSlots = new ArrayList<>(); workSlots.add(workSlot);
@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()); } }