mirror of
https://github.com/Echtzeitsysteme/gips-tests.git
synced 2024-06-02 18:31:59 +00:00
Adds test for "xy | constant" + refactors package structure
This commit is contained in:
parent
bb7f1eafb7
commit
9ecbfcfd0f
25
gipsl.all.build.or.extendedorconstant/.project
Normal file
25
gipsl.all.build.or.extendedorconstant/.project
Normal file
|
@ -0,0 +1,25 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>gipsl.all.build.or.extendedorconstant</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.emoflon.gips.gipsl.ui.gipsNature</nature>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
<nature>org.eclipse.pde.PluginNature</nature>
|
||||
<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
17
gipsl.all.build.or.extendedorconstant/META-INF/MANIFEST.MF
Normal file
17
gipsl.all.build.or.extendedorconstant/META-INF/MANIFEST.MF
Normal file
|
@ -0,0 +1,17 @@
|
|||
Manifest-Version: 1.0
|
||||
Automatic-Module-Name: gipsl.all.build.or.extendedortrue
|
||||
Bundle-ManifestVersion: 2
|
||||
Bundle-Name: gipsl.all.build.or.extendedortrue
|
||||
Bundle-Vendor: My Company
|
||||
Bundle-Version: 1.0.0.qualifier
|
||||
Bundle-SymbolicName: gipsl.all.build.or.extendedorconstant;singleton:=true
|
||||
Bundle-ActivationPolicy: lazy
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-16
|
||||
Require-Bundle: org.emoflon.ibex.common,
|
||||
org.emoflon.ibex.gt,
|
||||
org.emoflon.gips.core,
|
||||
org.emoflon.ibex.gt.democles,
|
||||
org.emoflon.ibex.gt.hipe,
|
||||
gipsl.all.build.model;bundle-version="0.0.1",
|
||||
test.suite.utils;bundle-version="1.0.0"
|
||||
Export-Package: gipsl.all.build.or.extendedorconstant.connector
|
|
@ -0,0 +1,58 @@
|
|||
package "gipsl.all.build.or.extendedorconstant"
|
||||
import "platform:/resource/gipsl.all.build.model/model/Model.ecore"
|
||||
|
||||
config {
|
||||
solver := GUROBI [home:="fu", license:="bar"];
|
||||
launchConfig := true [main := "TODO"];
|
||||
timeLimit := true [value := 42.0];
|
||||
randomSeed := true [value := 73];
|
||||
presolve := true;
|
||||
debugOutput := true;
|
||||
}
|
||||
|
||||
rule mapVnode {
|
||||
root: Root {
|
||||
-containers -> substrateContainer
|
||||
-containers -> virtualContainer
|
||||
}
|
||||
|
||||
substrateContainer: SubstrateContainer {
|
||||
-substrateNodes -> snode
|
||||
}
|
||||
|
||||
virtualContainer: VirtualContainer {
|
||||
-virtualNodes -> vnode
|
||||
}
|
||||
|
||||
snode: SubstrateResourceNode {
|
||||
++ -guests -> vnode
|
||||
}
|
||||
|
||||
vnode: VirtualResourceNode {
|
||||
++ -host -> snode
|
||||
}
|
||||
|
||||
# vnode.resourceDemand <= snode.resourceAmountAvailable
|
||||
# snode.resourceAmountAvailable >= 0
|
||||
}
|
||||
|
||||
mapping n2n with mapVnode;
|
||||
|
||||
constraint -> class::VirtualResourceNode {
|
||||
// Every virtual node must be mapped OR true
|
||||
mappings.n2n->filter(m | m.nodes().vnode == self)->count() >= 1 | self.resourceDemand >= 0
|
||||
}
|
||||
|
||||
// Helper constraint to allow ...->count() == 1 in an OR
|
||||
constraint -> class::VirtualResourceNode {
|
||||
mappings.n2n->filter(m | m.nodes().vnode == self)->count() <= 1
|
||||
}
|
||||
|
||||
objective nObj -> mapping::n2n {
|
||||
1
|
||||
}
|
||||
|
||||
// Minimization of cost function -> No virtual node should be mapped whatsoever
|
||||
global objective : min {
|
||||
nObj
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
package gipsl.all.build.or.extendedorconstant.connector;
|
||||
|
||||
import org.emoflon.gips.core.ilp.ILPSolverOutput;
|
||||
|
||||
import gipsl.all.build.or.extendedorconstant.api.gips.ExtendedorconstantGipsAPI;
|
||||
import test.suite.gips.utils.AConnector;
|
||||
import test.suite.gips.utils.GipsTestUtils;
|
||||
|
||||
public class OrExtendedConstantConnector extends AConnector {
|
||||
|
||||
public OrExtendedConstantConnector(final String modelPath) {
|
||||
api = new ExtendedorconstantGipsAPI();
|
||||
api.init(GipsTestUtils.pathToAbsUri(modelPath));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ILPSolverOutput run(final String outputPath) {
|
||||
final ILPSolverOutput output = solve();
|
||||
((ExtendedorconstantGipsAPI) api).getN2n().applyNonZeroMappings();
|
||||
return output;
|
||||
}
|
||||
|
||||
}
|
8
gipsl.all.build.or.extendedortrue/.classpath
Normal file
8
gipsl.all.build.or.extendedortrue/.classpath
Normal file
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17"/>
|
||||
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
||||
<classpathentry kind="src" path="src-gen"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>gipsl.all.build.or.extendedor</name>
|
||||
<name>gipsl.all.build.or.extendedortrue</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
|
@ -0,0 +1,10 @@
|
|||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=17
|
||||
org.eclipse.jdt.core.compiler.compliance=17
|
||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
|
||||
org.eclipse.jdt.core.compiler.release=enabled
|
||||
org.eclipse.jdt.core.compiler.source=17
|
|
@ -4,7 +4,7 @@ Bundle-ManifestVersion: 2
|
|||
Bundle-Name: gipsl.all.build.or.extendedor
|
||||
Bundle-Vendor: My Company
|
||||
Bundle-Version: 1.0.0.qualifier
|
||||
Bundle-SymbolicName: gipsl.all.build.or.extendedor; singleton:=true
|
||||
Bundle-SymbolicName: gipsl.all.build.or.extendedortrue;singleton:=true
|
||||
Bundle-ActivationPolicy: lazy
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-16
|
||||
Require-Bundle: org.emoflon.ibex.common,
|
||||
|
@ -14,4 +14,4 @@ Require-Bundle: org.emoflon.ibex.common,
|
|||
org.emoflon.ibex.gt.hipe,
|
||||
test.suite.utils;bundle-version="1.0.0",
|
||||
gipsl.all.build.model;bundle-version="0.0.1"
|
||||
Export-Package: gipsl.all.build.or.extendedor.tru.connector
|
||||
Export-Package: gipsl.all.build.or.extendedortrue.connector
|
5
gipsl.all.build.or.extendedortrue/build.properties
Normal file
5
gipsl.all.build.or.extendedortrue/build.properties
Normal file
|
@ -0,0 +1,5 @@
|
|||
source.. = src/,\
|
||||
src-gen/
|
||||
bin.includes = META-INF/,\
|
||||
.,\
|
||||
plugin.xml
|
|
@ -1,4 +1,4 @@
|
|||
package "gipsl.all.build.or.extendedor"
|
||||
package "gipsl.all.build.or.extendedortrue"
|
||||
import "platform:/resource/gipsl.all.build.model/model/Model.ecore"
|
||||
|
||||
config {
|
|
@ -1,22 +1,22 @@
|
|||
package gipsl.all.build.or.extendedor.tru.connector;
|
||||
package gipsl.all.build.or.extendedortrue.connector;
|
||||
|
||||
import org.emoflon.gips.core.ilp.ILPSolverOutput;
|
||||
|
||||
import gipsl.all.build.or.extendedor.api.gips.ExtendedorGipsAPI;
|
||||
import gipsl.all.build.or.extendedortrue.api.gips.ExtendedortrueGipsAPI;
|
||||
import test.suite.gips.utils.AConnector;
|
||||
import test.suite.gips.utils.GipsTestUtils;
|
||||
|
||||
public class OrExtendedTrueConnector extends AConnector {
|
||||
|
||||
public OrExtendedTrueConnector(final String modelPath) {
|
||||
api = new ExtendedorGipsAPI();
|
||||
api = new ExtendedortrueGipsAPI();
|
||||
api.init(GipsTestUtils.pathToAbsUri(modelPath));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ILPSolverOutput run(final String outputPath) {
|
||||
final ILPSolverOutput output = solve();
|
||||
((ExtendedorGipsAPI) api).getN2n().applyNonZeroMappings();
|
||||
((ExtendedortrueGipsAPI) api).getN2n().applyNonZeroMappings();
|
||||
return output;
|
||||
}
|
||||
|
|
@ -23,7 +23,8 @@ Import-Package: gips.all.build.objective.connector,
|
|||
gipsl.all.build.objective.max.connector,
|
||||
gipsl.all.build.or.b.connector,
|
||||
gipsl.all.build.or.connector,
|
||||
gipsl.all.build.or.extendedor.tru.connector,
|
||||
gipsl.all.build.or.extendedorconstant.connector,
|
||||
gipsl.all.build.or.extendedortrue.connector,
|
||||
gipsl.all.build.sumvalue.connector,
|
||||
gipsl.all.build.sumvalueinf.connector,
|
||||
gipsl.all.build.varlimit.connector,
|
||||
|
|
|
@ -0,0 +1,83 @@
|
|||
package test.suite.gipsl.all.build;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
import org.emoflon.gips.core.ilp.ILPSolverOutput;
|
||||
import org.emoflon.gips.core.ilp.ILPSolverStatus;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import gipsl.all.build.or.extendedorconstant.connector.OrExtendedConstantConnector;
|
||||
|
||||
public class GipslAllBuildExtendedOrConstantTest extends AGipslAllBuildTest {
|
||||
|
||||
// Setup method
|
||||
|
||||
public void callableSetUp() {
|
||||
gen.persistModel(MODEL_PATH);
|
||||
con = new OrExtendedConstantConnector(MODEL_PATH);
|
||||
}
|
||||
|
||||
// Actual tests
|
||||
// Positive tests
|
||||
|
||||
@Test
|
||||
public void testMap1to1() {
|
||||
gen.genSubstrateNode("s1", 1);
|
||||
gen.genVirtualNode("v1", 1);
|
||||
callableSetUp();
|
||||
|
||||
final ILPSolverOutput ret = con.run(OUTPUT_PATH);
|
||||
|
||||
assertEquals(ILPSolverStatus.OPTIMAL, ret.status());
|
||||
assertEquals(0, Math.abs(ret.objectiveValue()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMap1to2() {
|
||||
gen.genSubstrateNode("s1", 1);
|
||||
gen.genSubstrateNode("s1", 2);
|
||||
gen.genVirtualNode("v1", 1);
|
||||
callableSetUp();
|
||||
|
||||
final ILPSolverOutput ret = con.run(OUTPUT_PATH);
|
||||
|
||||
assertEquals(ILPSolverStatus.OPTIMAL, ret.status());
|
||||
assertEquals(0, Math.abs(ret.objectiveValue()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMap3to1() {
|
||||
gen.genSubstrateNode("s1", 10);
|
||||
gen.genVirtualNode("v1", 1);
|
||||
gen.genVirtualNode("v2", 1);
|
||||
gen.genVirtualNode("v3", 1);
|
||||
callableSetUp();
|
||||
|
||||
final ILPSolverOutput ret = con.run(OUTPUT_PATH);
|
||||
|
||||
assertEquals(ILPSolverStatus.OPTIMAL, ret.status());
|
||||
assertEquals(0, Math.abs(ret.objectiveValue()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMap1to0() {
|
||||
gen.genVirtualNode("v1", 1);
|
||||
callableSetUp();
|
||||
|
||||
final ILPSolverOutput ret = con.run(OUTPUT_PATH);
|
||||
|
||||
assertEquals(ILPSolverStatus.OPTIMAL, ret.status());
|
||||
assertEquals(0, Math.abs(ret.objectiveValue()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNoNodes() {
|
||||
callableSetUp();
|
||||
|
||||
final ILPSolverOutput ret = con.run(OUTPUT_PATH);
|
||||
|
||||
assertEquals(ILPSolverStatus.OPTIMAL, ret.status());
|
||||
assertEquals(0, Math.abs(ret.objectiveValue()));
|
||||
}
|
||||
|
||||
}
|
|
@ -6,7 +6,7 @@ import org.emoflon.gips.core.ilp.ILPSolverOutput;
|
|||
import org.emoflon.gips.core.ilp.ILPSolverStatus;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import gipsl.all.build.or.extendedor.tru.connector.OrExtendedTrueConnector;
|
||||
import gipsl.all.build.or.extendedortrue.connector.OrExtendedTrueConnector;
|
||||
|
||||
public class GipslAllBuildExtendedOrTrueTest extends AGipslAllBuildTest {
|
||||
|
||||
|
|
Loading…
Reference in a new issue