/*
* Copyright (c) Fabien Hermenier
*
* This file is part of Entropy.
*
* Entropy is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Entropy is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Entropy. If not, see <http://www.gnu.org/licenses/>.
*/
package entropy.plan.visualisation;
import java.io.File;
import org.testng.Assert;
import org.testng.annotations.Test;
import entropy.configuration.DefaultConfiguration;
import entropy.configuration.DefaultNode;
import entropy.configuration.DefaultVirtualMachine;
import entropy.plan.DefaultTimedReconfigurationPlan;
import entropy.plan.action.Migration;
import entropy.plan.visualization.GanttVisualizer;
import entropy.plan.visualization.PlanVisualizer;
/**
* Unit tests for GanttVisualizer.
*
* @author Fabien Hermenier
*/
@Test(groups = {"unit"})
public class TestGanttVisualizer {
/**
* Test accessors.
*/
public void testGets() {
GanttVisualizer vis = new GanttVisualizer("out.png");
Assert.assertEquals(vis.getOutputFile(), "out.png");
Assert.assertEquals(vis.getOutputFormat(), GanttVisualizer.Format.png);
vis.setOutputFile("out.jpg");
vis.setOutputFormat(GanttVisualizer.Format.jpg);
Assert.assertEquals(vis.getOutputFile(), "out.jpg");
Assert.assertEquals(vis.getOutputFormat(), GanttVisualizer.Format.jpg);
vis = new GanttVisualizer("out.jpg", GanttVisualizer.Format.jpg);
Assert.assertEquals(vis.getOutputFile(), "out.jpg");
Assert.assertEquals(vis.getOutputFormat(), GanttVisualizer.Format.jpg);
}
/**
* Test generation.
*/
public void testStorePlanAsGantt() {
DefaultConfiguration cfg = new DefaultConfiguration();
DefaultVirtualMachine[] vms = new DefaultVirtualMachine[6];
DefaultNode[] ns = new DefaultNode[6];
for (int i = 0; i < vms.length; i++) {
vms[i] = new DefaultVirtualMachine("vm" + (i + 1), 1, 1, 1);
ns[i] = new DefaultNode("n" + (i + 1), 1, 1, 1);
cfg.addOnline(ns[i]);
}
Migration m1 = new Migration(vms[0], ns[0], ns[1], 3, 6);
Migration m2 = new Migration(vms[1], ns[1], ns[2], 0, 3);
Migration m3 = new Migration(vms[2], ns[0], ns[2], 5, 10);
Migration m4 = new Migration(vms[3], ns[2], ns[3], 0, 3);
Migration m5 = new Migration(vms[4], ns[2], ns[4], 0, 10);
Migration m6 = new Migration(vms[5], ns[2], ns[3], 0, 5);
DefaultTimedReconfigurationPlan plan = new DefaultTimedReconfigurationPlan(cfg);
plan.add(m1);
plan.add(m2);
plan.add(m3);
plan.add(m4);
plan.add(m5);
plan.add(m6);
try {
File f = File.createTempFile("plan", ".png");
PlanVisualizer visu = new GanttVisualizer(f.getAbsolutePath());
visu.buildVisualization(plan);
Assert.assertTrue(f.exists());
Assert.assertTrue(f.length() > 50);
} catch (Exception e) {
Assert.fail(e.getMessage(), e);
}
}
}