/* * 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.choco; import java.io.File; import java.util.ArrayList; import java.util.List; import org.testng.Assert; import org.testng.annotations.Test; import choco.kernel.common.logging.ChocoLogging; import choco.kernel.common.logging.Verbosity; import entropy.PropertiesHelper; import entropy.TestHelper; import entropy.configuration.Configuration; import entropy.configuration.DefaultManagedElementSet; import entropy.configuration.VirtualMachine; import entropy.plan.SolutionStatistics; import entropy.plan.TimedReconfigurationPlan; import entropy.plan.durationEvaluator.MockDurationEvaluator; import entropy.vjob.VJob; import entropy.vjob.builder.ConstraintsCatalogBuilderFromProperties; import entropy.vjob.builder.MockVirtualMachineBuilder; import entropy.vjob.builder.VJobBuilder; import entropy.vjob.builder.VJobElementBuilder; /** * @author Fabien Hermenier */ @Test(groups = {"unit"}) public class TestCustomizableSplitablePlannerModule { private static final String RESOURCES_DIR = "src/test/resources/entropy/plan/TestCustomizableSplitablePlannerModule."; private CustomizableSplitablePlannerModule makeModule() { return new CustomizableSplitablePlannerModule(new MockDurationEvaluator(5, 1, 1, 7, 14, 7, 2, 4)); } public void testBasics() { CustomizableSplitablePlannerModule planner = makeModule(); Assert.assertEquals(planner.getPartitioningMode(), CustomizableSplitablePlannerModule.PartitioningMode.none); planner.setPartitioningMode(CustomizableSplitablePlannerModule.PartitioningMode.sequential); Assert.assertEquals(planner.getPartitioningMode(), CustomizableSplitablePlannerModule.PartitioningMode.sequential); Assert.assertEquals(planner.isRepairModeUsed(), true); planner.setRepairMode(false); Assert.assertEquals(planner.isRepairModeUsed(), false); } /** * Basic test with not that much action */ public void test1() { CustomizableSplitablePlannerModule planner = makeModule(); ChocoLogging.setVerbosity(Verbosity.SILENT); Configuration src = TestHelper.readConfiguration(RESOURCES_DIR + "splitted_cfg.txt"); try { MockVirtualMachineBuilder builder = new MockVirtualMachineBuilder(); VJobBuilder b = new VJobBuilder(new VJobElementBuilder(builder), new ConstraintsCatalogBuilderFromProperties(new PropertiesHelper("src/main/config/entropy.properties")).build()); b.getElementBuilder().useConfiguration(src); VJob v = b.build("m", new File(RESOURCES_DIR + "splitted.txt")); List<VJob> vjobs = new ArrayList<VJob>(); vjobs.add(v); planner.setRepairMode(false); planner.setPartitioningMode(CustomizableSplitablePlannerModule.PartitioningMode.none); TimedReconfigurationPlan plan = planner.compute(src, src.getRunnings(), src.getWaitings(), src.getSleepings(), new DefaultManagedElementSet<VirtualMachine>(), src.getOnlines(), src.getOfflines(), vjobs); System.err.println(plan); Assert.assertEquals(plan.size(), 2); Assert.assertEquals(plan.getDuration(), 5); List<SolutionStatistics> stats = planner.getSolutionsStatistics(); Assert.assertEquals(stats.get(0).getObjective(), 10); } catch (Exception e) { Assert.fail(e.getMessage(), e); } } /** * Basic test with not that much action */ /*public void test2() { //Assert.fail(); CustomizableSplitablePlannerModule planner = makeModule(); Configuration src = TestHelper.readConfiguration(RESOURCES_DIR + "splitted_cfg2.txt"); try { MockVirtualMachineBuilder builder = new MockVirtualMachineBuilder(); VJobBuilder b = new VJobBuilder(new VJobElementBuilder(builder), new ConstraintsCatalogBuilderFromProperties(new PropertiesHelper("src/main/config/entropy.properties")).build()); b.getElementBuilder().useConfiguration(src); VJob v = b.build("m", new File(RESOURCES_DIR + "splitted2.txt")); List<VJob> vjobs = new ArrayList<VJob>(); vjobs.add(v); planner.setRepairMode(false); planner.setPartitioningMode(CustomizableSplitablePlannerModule.PartitioningMode.sequential); planner.setTimeLimit(200); TimedReconfigurationPlan plan = planner.compute(src, src.getRunnings(), src.getWaitings(), src.getSleepings(), new DefaultManagedElementSet<VirtualMachine>(), src.getOnlines(), src.getOfflines(), vjobs); System.err.println(plan); System.err.println(planner.getSolvingStatistics()); System.err.println(planner.getSolutionsStatistics()); System.err.flush(); //Assert.fail(); } catch (Exception e) { Assert.fail(e.getMessage(), e); } } */ }