/** * Update the assignments and status from the other cluster. * * @param other the cluster to get the assignments and status from */ public void updateFrom(Cluster other) { for (SchedulerAssignment assignment : other.getAssignments().values()) { assertValidTopologyForModification(assignment.getTopologyId()); } setAssignments(other.getAssignments(), false); setStatusMap(other.getStatusMap()); } }
idToSchedStatus.set(Utils.merge(idToSchedStatus.get(), cluster.getStatusMap())); nodeIdToResources.set(cluster.getSupervisorsResourcesMap());
assertTrue(entry.getKey() - entry.getValue() >= 0); assertEquals("Running - Fully Scheduled by DefaultResourceAwareStrategy", cluster.getStatusMap().get(topology1.getId()));
@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())); }
assertEquals(copyOfOldMapping.get(executor), newExecutorToSlot.get(executor)); assertEquals("Running - Fully Scheduled by DefaultResourceAwareStrategy", cluster.getStatusMap().get(topology2.getId())); assertEquals(copyOfOldMapping.get(executor), newExecutorToSlot.get(executor)); assertEquals("Fully Scheduled", cluster1.getStatusMap().get(topology1.getId())); assertEquals(copyOfOldMapping.get(executor), newExecutorToSlot.get(executor)); assertEquals("Fully Scheduled", cluster1.getStatusMap().get(topology1.getId())); assertEquals(copyOfOldMapping.get(executor), newExecutorToSlot.get(executor)); assertEquals("Running - Fully Scheduled by DefaultResourceAwareStrategy", cluster1.getStatusMap().get(topology1.getId())); assertEquals("Running - Fully Scheduled by DefaultResourceAwareStrategy", cluster1.getStatusMap().get(topology2.getId()));
rs.schedule(topologies, cluster); assertEquals("Running - Fully Scheduled by " + strategyName, cluster.getStatusMap().get(topology1.getId())); assertEquals("Running - Fully Scheduled by " + strategyName, cluster.getStatusMap().get(topology2.getId())); assertEquals("Running - Fully Scheduled by " + strategyName, cluster.getStatusMap().get(topology3.getId())); rs.schedule(topologies, cluster); int numTopologiesAssigned = 0; if (cluster.getStatusMap().get(topology1.getId()).equals("Running - Fully Scheduled by " + strategyName)) { LOG.info("TOPO 1 scheduled"); numTopologiesAssigned++; if (cluster.getStatusMap().get(topology2.getId()).equals("Running - Fully Scheduled by " + strategyName)) { LOG.info("TOPO 2 scheduled"); numTopologiesAssigned++; if (cluster.getStatusMap().get(topology4.getId()).equals("Running - Fully Scheduled by " + strategyName)) { LOG.info("TOPO 3 scheduled"); numTopologiesAssigned++;
assertEquals(400.0, assignedMemory, 0.001); assertEquals(40.0, assignedCpu, 0.001); assertEquals("Running - Fully Scheduled by DefaultResourceAwareStrategy", cluster.getStatusMap().get(topology1.getId()));
rs.prepare(config1); rs.schedule(topologies, cluster); assertEquals("Running - Fully Scheduled by DefaultResourceAwareStrategy", cluster.getStatusMap().get(topology1.getId())); assertEquals(4, cluster.getAssignedNumWorkers(topology1)); rs.prepare(config2); rs.schedule(topologies, cluster); String status = cluster.getStatusMap().get(topology2.getId()); assert status.startsWith("Not enough resources to schedule") : status; assert status.endsWith("5 executors not scheduled") : status;
assertEquals(1, nodesIDs1.size()); assertEquals(7, executors1.size()); assertEquals("Running - Fully Scheduled by DefaultResourceAwareStrategy", cluster.getStatusMap().get(topology1.getId())); assertEquals(1, nodesIDs2.size()); assertEquals(2, executors2.size()); assertEquals("Running - Fully Scheduled by DefaultResourceAwareStrategy", cluster.getStatusMap().get(topology2.getId()));
userMap.get(topologySubmitter).addTopologyToPendingQueue(td); } else { LOG.debug("adding td: {} to running queue with existing status: {}", td.getName(), cluster.getStatusMap().get(td.getId())); userMap.get(topologySubmitter).addTopologyToRunningQueue(td); if (cluster.getStatusMap().get(td.getId()) == null || cluster.getStatusMap().get(td.getId()).equals("")) { cluster.setStatus(td.getId(), "Fully Scheduled");
LOG.warn("Topology {} is already fully scheduled!", td.getName()); topologySubmitter.moveTopoFromPendingToRunning(td); if (this.schedulingState.cluster.getStatusMap().get(td.getId()) == null || this.schedulingState.cluster.getStatusMap().get(td.getId()).equals("")) { this.schedulingState.cluster.setStatus(td.getId(), "Fully Scheduled");
private void updateChanges(Cluster cluster, Topologies topologies) { //Cannot simply set this.cluster=schedulingState.cluster since clojure is immutable cluster.setAssignments(schedulingState.cluster.getAssignments()); cluster.setBlacklistedHosts(schedulingState.cluster.getBlacklistedHosts()); cluster.setStatusMap(schedulingState.cluster.getStatusMap()); cluster.setSupervisorsResourcesMap(schedulingState.cluster.getSupervisorsResourcesMap()); cluster.setTopologyResourcesMap(schedulingState.cluster.getTopologyResourcesMap()); cluster.setWorkerResourcesMap(schedulingState.cluster.getWorkerResourcesMap()); //updating resources used by supervisor updateSupervisorsResources(cluster, topologies); }