rs.schedule(topologies, cluster); long schedulingDuration = Time.currentTimeMillis() - startTime; LOG.info("Scheduling took " + schedulingDuration + " ms");
@Test public void sanityTestOfScheduling() { INimbus iNimbus = new INimbusTest(); Map<String, SupervisorDetails> supMap = genSupervisors(1, 2, 400, 2000); Config config = new Config(); config.putAll(defaultTopologyConf); ResourceAwareScheduler rs = new ResourceAwareScheduler(); TopologyDetails topology1 = genTopology("topology1", config, 1, 1, 1, 1, 0, 0, "user"); Topologies topologies = new Topologies(topology1); Cluster cluster = new Cluster(iNimbus, new ResourceMetrics(new StormMetricsRegistry()), supMap, new HashMap<>(), topologies, config); rs.prepare(config); rs.schedule(topologies, cluster); SchedulerAssignment assignment = cluster.getAssignmentById(topology1.getId()); Set<WorkerSlot> assignedSlots = assignment.getSlots(); Set<String> nodesIDs = new HashSet<>(); for (WorkerSlot slot : assignedSlots) { nodesIDs.add(slot.getNodeId()); } Collection<ExecutorDetails> executors = assignment.getExecutors(); assertEquals(1, assignedSlots.size()); assertEquals(1, nodesIDs.size()); assertEquals(2, executors.size()); assertEquals("Running - Fully Scheduled by DefaultResourceAwareStrategy", cluster.getStatusMap().get(topology1.getId())); }
rs.prepare(config); LOG.info("\n\n\t\tScheduling topos 1,2,5,6"); rs.schedule(topologies, cluster); LOG.info("\n\n\t\tDone Scheduling..."); cluster = new Cluster(cluster, topologies); LOG.info("\n\n\t\tScheduling topos 1,2,3,5,6"); rs.schedule(topologies, cluster); LOG.info("\n\n\t\tDone Scheduling..."); cluster = new Cluster(cluster, topologies); LOG.info("\n\n\t\tScheduling topos 1-6"); rs.schedule(topologies, cluster); LOG.info("\n\n\t\tDone Scheduling...");
rs.prepare(config); LOG.info("\n\n\t\tScheduling topos 1,3,4,5"); rs.schedule(topologies, cluster); LOG.info("\n\n\t\tDone scheduling..."); cluster = new Cluster(cluster, topologies); LOG.info("\n\n\t\tScheduling topos 1,3,4,5,6"); rs.schedule(topologies, cluster); LOG.info("\n\n\t\tDone scheduling..."); cluster = new Cluster(cluster, topologies); LOG.info("\n\n\t\tScheduling topos 1-6"); rs.schedule(topologies, cluster); LOG.info("\n\n\t\tDone scheduling...");
rs.prepare(config); LOG.info("\n\n\t\tScheduling topos 2 to 5..."); rs.schedule(topologies, cluster); LOG.info("\n\n\t\tDone scheduling..."); assertTopologiesFullyScheduled(cluster, "topo-2", "topo-3", "topo-4", "topo-5"); cluster = new Cluster(cluster, topologies); LOG.info("\n\n\t\tScheduling topos 1 to 5"); rs.schedule(topologies, cluster); LOG.info("\n\n\t\tDone scheduling...");
rs.schedule(topologies, cluster);
rs.schedule(topologies, cluster);
rs.schedule(topologies, cluster);
rs.schedule(topologies, cluster);
rs.schedule(topologies, cluster);
ResourceAwareScheduler rs = new ResourceAwareScheduler(); rs.prepare(config); rs.schedule(topologies, cluster); genTopology("topo-1", config, 1, 0, 1, 0, currentTime - 2, 10, "jerry")); cluster = new Cluster(cluster, topologies); rs.schedule(topologies, cluster); genTopology("topo-6", config, 1, 0, 1, 0, currentTime - 2, 10, "jerry")); cluster = new Cluster(cluster, topologies); rs.schedule(topologies, cluster); genTopology("topo-7", config, 1, 0, 1, 0, currentTime - 2, 10, "jerry")); cluster = new Cluster(cluster, topologies); rs.schedule(topologies, cluster);
Cluster cluster = new Cluster(iNimbus, new ResourceMetrics(new StormMetricsRegistry()), supMap, new HashMap<>(), topologies, config1); rs.prepare(config1); rs.schedule(topologies, cluster); assertEquals("Running - Fully Scheduled by DefaultResourceAwareStrategy", cluster.getStatusMap().get(topology1.getId())); assertEquals(4, cluster.getAssignedNumWorkers(topology1)); cluster = new Cluster(iNimbus, new ResourceMetrics(new StormMetricsRegistry()), supMap, new HashMap<>(), topologies, config2); rs.prepare(config2); rs.schedule(topologies, cluster); String status = cluster.getStatusMap().get(topology2.getId()); assert status.startsWith("Not enough resources to schedule") : status;
/** * When the first topology failed to be scheduled make sure subsequent schedulings can still succeed */ @Test public void testSchedulingAfterFailedScheduling() { INimbus iNimbus = new INimbusTest(); Map<String, SupervisorDetails> supMap = genSupervisors(8, 4, 100, 1000); Config config = createClusterConfig(100, 500, 500, null); TopologyDetails topo1 = genTopology("topo-1", config, 8, 0, 2, 0, currentTime - 2, 10, "jerry"); TopologyDetails topo2 = genTopology("topo-2", config, 2, 0, 2, 0, currentTime - 2, 20, "jerry"); TopologyDetails topo3 = genTopology("topo-3", config, 1, 2, 1, 1, currentTime - 2, 20, "jerry"); Topologies topologies = new Topologies(topo1, topo2, topo3); Cluster cluster = new Cluster(iNimbus, new ResourceMetrics(new StormMetricsRegistry()), supMap, new HashMap<String, SchedulerAssignmentImpl>(), topologies, config); ResourceAwareScheduler rs = new ResourceAwareScheduler(); rs.prepare(config); rs.schedule(topologies, cluster); assertTrue("Topo-2 scheduled?", cluster.getAssignmentById(topo2.getId()) != null); assertEquals("Topo-2 all executors scheduled?", 4, cluster.getAssignmentById(topo2.getId()).getExecutorToSlot().size()); assertTrue("Topo-3 scheduled?", cluster.getAssignmentById(topo3.getId()) != null); assertEquals("Topo-3 all executors scheduled?", 3, cluster.getAssignmentById(topo3.getId()).getExecutorToSlot().size()); }
@Test public void testSubmitUsersWithNoGuarantees() { INimbus iNimbus = new INimbusTest(); Map<String, SupervisorDetails> supMap = genSupervisors(4, 4, 100, 1000); Map<String, Map<String, Number>> resourceUserPool = userResourcePool( userRes("jerry", 200, 2000)); Config config = createClusterConfig(100, 500, 500, resourceUserPool); Topologies topologies = new Topologies( genTopology("topo-1", config, 1, 0, 1, 0, currentTime - 2, 10, "jerry"), genTopology("topo-2", config, 1, 0, 1, 0, currentTime - 2, 20, "jerry"), genTopology("topo-3", config, 1, 0, 1, 0, currentTime - 2, 20, "jerry"), genTopology("topo-4", config, 1, 0, 1, 0, currentTime - 2, 10, "bobby"), genTopology("topo-5", config, 1, 0, 1, 0, currentTime - 2, 20, "bobby")); Cluster cluster = new Cluster(iNimbus, new ResourceMetrics(new StormMetricsRegistry()), supMap, new HashMap<>(), topologies, config); ResourceAwareScheduler rs = new ResourceAwareScheduler(); rs.prepare(config); rs.schedule(topologies, cluster); assertTopologiesFullyScheduled(cluster, "topo-1", "topo-2", "topo-3", "topo-4"); assertTopologiesNotScheduled(cluster, "topo-5"); }
rs.schedule(topologies, cluster);
rs.schedule(topologies, cluster);
rs.schedule(topologies, cluster);