use of gnu.trove.map.hash.TIntIntHashMap in project scheduler by btrplace.
the class Bench method makeEdges.
private static List<Collection<Node>> makeEdges(List<Node> l, int switchSize) {
TIntIntHashMap parts = new TIntIntHashMap();
int curPart = 0;
int i = 0;
for (Node n : l) {
i = (i + 1) % switchSize;
if ((i + 1) % switchSize == 0) {
curPart++;
}
parts.put(n.id(), curPart);
}
SplittableElementSet<Node> sp = SplittableElementSet.newNodeIndex(l, parts);
final List<Collection<Node>> splits = new ArrayList<>();
sp.forEachPartition((index, key, from, to) -> splits.add(new ElementSubSet<>(index, key, from, to)));
return splits;
}
use of gnu.trove.map.hash.TIntIntHashMap in project scheduler by btrplace.
the class LonelySplitterTest method simpleTest.
@Test
public void simpleTest() {
LonelySplitter splitter = new LonelySplitter();
List<Instance> instances = new ArrayList<>();
Model m0 = new DefaultModel();
m0.getMapping().addReadyVM(m0.newVM(1));
m0.getMapping().addRunningVM(m0.newVM(2), m0.newNode(1));
Model m1 = new DefaultModel();
m1.getMapping().addReadyVM(m1.newVM(3));
m1.getMapping().addSleepingVM(m1.newVM(4), m1.newNode(2));
m1.getMapping().addRunningVM(m1.newVM(5), m1.newNode(3));
instances.add(new Instance(m0, new ArrayList<>(), new MinMTTR()));
instances.add(new Instance(m1, new ArrayList<>(), new MinMTTR()));
TIntIntHashMap index = Instances.makeVMIndex(instances);
Set<VM> all = new HashSet<>(m0.getMapping().getAllVMs());
all.addAll(m1.getMapping().getAllVMs());
// Only VMs in m0
Lonely single = new Lonely(m0.getMapping().getAllVMs());
Assert.assertTrue(splitter.split(single, null, instances, index, new TIntIntHashMap()));
Assert.assertTrue(instances.get(0).getSatConstraints().contains(single));
Assert.assertFalse(instances.get(1).getSatConstraints().contains(single));
// All the VMs, test the split
Lonely among = new Lonely(all, false);
Assert.assertTrue(splitter.split(among, null, instances, index, new TIntIntHashMap()));
Assert.assertTrue(instances.get(0).getSatConstraints().contains(new Lonely(m0.getMapping().getAllVMs(), false)));
Assert.assertTrue(instances.get(1).getSatConstraints().contains(new Lonely(m1.getMapping().getAllVMs(), false)));
}
use of gnu.trove.map.hash.TIntIntHashMap in project scheduler by btrplace.
the class OfflineSplitterTest method simpleTest.
@Test
public void simpleTest() {
OfflineSplitter splitter = new OfflineSplitter();
List<Instance> instances = new ArrayList<>();
Model m0 = new DefaultModel();
Node n = m0.newNode();
m0.getMapping().addOfflineNode(n);
m0.getMapping().addOfflineNode(m0.newNode(1));
Model m1 = new DefaultModel();
m1.getMapping().addOfflineNode(m1.newNode(2));
m1.getMapping().addOfflineNode(m1.newNode(3));
instances.add(new Instance(m0, new ArrayList<>(), new MinMTTR()));
instances.add(new Instance(m1, new ArrayList<>(), new MinMTTR()));
Set<Node> all = new HashSet<>(m0.getMapping().getAllNodes());
all.addAll(m1.getMapping().getAllNodes());
TIntIntHashMap nodeIndex = Instances.makeNodeIndex(instances);
// Only nodes in m0
Offline oSimple = new Offline(n);
Assert.assertTrue(splitter.split(oSimple, null, instances, new TIntIntHashMap(), nodeIndex));
Assert.assertTrue(instances.get(0).getSatConstraints().contains(oSimple));
Assert.assertFalse(instances.get(1).getSatConstraints().contains(oSimple));
}
use of gnu.trove.map.hash.TIntIntHashMap in project scheduler by btrplace.
the class ReadySplitterTest method simpleTest.
@Test
public void simpleTest() {
ReadySplitter splitter = new ReadySplitter();
List<Instance> instances = new ArrayList<>();
Model m0 = new DefaultModel();
VM v = m0.newVM(1);
m0.getMapping().addReadyVM(v);
m0.getMapping().addRunningVM(m0.newVM(2), m0.newNode(1));
Model m1 = new DefaultModel();
m1.getMapping().addReadyVM(m1.newVM(3));
m1.getMapping().addSleepingVM(m1.newVM(4), m1.newNode(2));
m1.getMapping().addRunningVM(m1.newVM(5), m1.newNode(3));
instances.add(new Instance(m0, new ArrayList<>(), new MinMTTR()));
instances.add(new Instance(m1, new ArrayList<>(), new MinMTTR()));
Set<VM> all = new HashSet<>(m0.getMapping().getAllVMs());
all.addAll(m1.getMapping().getAllVMs());
TIntIntHashMap index = Instances.makeVMIndex(instances);
// Only VMs in m0
Ready single = new Ready(v);
Assert.assertTrue(splitter.split(single, null, instances, index, new TIntIntHashMap()));
Assert.assertTrue(instances.get(0).getSatConstraints().contains(single));
Assert.assertFalse(instances.get(1).getSatConstraints().contains(single));
}
use of gnu.trove.map.hash.TIntIntHashMap in project scheduler by btrplace.
the class SpreadSplitterTest method simpleTest.
@Test
public void simpleTest() {
SpreadSplitter splitter = new SpreadSplitter();
List<Instance> instances = new ArrayList<>();
Model m0 = new DefaultModel();
m0.getMapping().addReadyVM(m0.newVM(1));
Node n1 = m0.newNode();
m0.getMapping().addOnlineNode(n1);
m0.getMapping().addRunningVM(m0.newVM(2), n1);
Model m1 = new DefaultModel();
m1.getMapping().addReadyVM(m1.newVM(3));
Node n2 = m1.newNode();
Node n3 = m1.newNode();
m1.getMapping().addOnlineNode(n2);
m1.getMapping().addOnlineNode(n3);
m1.getMapping().addSleepingVM(m1.newVM(4), n2);
m1.getMapping().addRunningVM(m1.newVM(5), n3);
instances.add(new Instance(m0, new ArrayList<>(), new MinMTTR()));
instances.add(new Instance(m1, new ArrayList<>(), new MinMTTR()));
Set<VM> all = new HashSet<>(m0.getMapping().getAllVMs());
all.addAll(m1.getMapping().getAllVMs());
TIntIntHashMap index = Instances.makeVMIndex(instances);
// Only VMs in m0
Spread spreadSingle = new Spread(m0.getMapping().getAllVMs());
Assert.assertTrue(splitter.split(spreadSingle, null, instances, index, new TIntIntHashMap()));
Assert.assertTrue(instances.get(0).getSatConstraints().contains(spreadSingle));
Assert.assertFalse(instances.get(1).getSatConstraints().contains(spreadSingle));
// All the VMs, test the split
Spread spreadAmong = new Spread(all, false);
Assert.assertTrue(splitter.split(spreadAmong, null, instances, index, new TIntIntHashMap()));
Assert.assertTrue(instances.get(0).getSatConstraints().contains(new Spread(m0.getMapping().getAllVMs(), false)));
Assert.assertTrue(instances.get(1).getSatConstraints().contains(new Spread(m1.getMapping().getAllVMs(), false)));
}
Aggregations