diff options
author | 2017-10-16 14:43:41 +0200 | |
---|---|---|
committer | 2017-10-16 14:43:41 +0200 | |
commit | e7b208c529bfaa22550575ef8ea083bdb920b4b1 (patch) | |
tree | 53eb81b634a9ef64b66e1a5f33dce560d95244cf /Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/DiverseMeasurementRunner.xtend | |
parent | By default, Alloy uses filtered type ORM mapping (diff) | |
download | VIATRA-Generator-e7b208c529bfaa22550575ef8ea083bdb920b4b1.tar.gz VIATRA-Generator-e7b208c529bfaa22550575ef8ea083bdb920b4b1.tar.zst VIATRA-Generator-e7b208c529bfaa22550575ef8ea083bdb920b4b1.zip |
measurement and mutant coverage
Diffstat (limited to 'Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/DiverseMeasurementRunner.xtend')
-rw-r--r-- | Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/DiverseMeasurementRunner.xtend | 60 |
1 files changed, 32 insertions, 28 deletions
diff --git a/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/DiverseMeasurementRunner.xtend b/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/DiverseMeasurementRunner.xtend index 40edbd02..12fe775a 100644 --- a/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/DiverseMeasurementRunner.xtend +++ b/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/DiverseMeasurementRunner.xtend | |||
@@ -1,5 +1,7 @@ | |||
1 | package hu.bme.mit.inf.dslreasoner.run | 1 | package hu.bme.mit.inf.dslreasoner.run |
2 | 2 | ||
3 | import hu.bme.mit.inf.dlsreasoner.alloy.reasoner.AlloySolver | ||
4 | import hu.bme.mit.inf.dlsreasoner.alloy.reasoner.AlloySolverConfiguration | ||
3 | import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic | 5 | import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic |
4 | import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2LogicConfiguration | 6 | import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2LogicConfiguration |
5 | import hu.bme.mit.inf.dslreasoner.ecore2logic.EcoreMetamodelDescriptor | 7 | import hu.bme.mit.inf.dslreasoner.ecore2logic.EcoreMetamodelDescriptor |
@@ -18,25 +20,21 @@ import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.TypeInferenceMethod | |||
18 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2Logic | 20 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2Logic |
19 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation | 21 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation |
20 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage | 22 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage |
21 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.visualisation.PartialInterpretation2Gml | ||
22 | import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.DiversityDescriptor | 23 | import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.DiversityDescriptor |
23 | import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.StateCoderStrategy | 24 | import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.StateCoderStrategy |
24 | import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasoner | 25 | import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasoner |
25 | import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasonerConfiguration | 26 | import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasonerConfiguration |
27 | import hu.bme.mit.inf.dslreasoner.visualisation.pi2graphviz.GraphvizVisualisation | ||
26 | import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace | 28 | import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace |
29 | import java.util.LinkedList | ||
27 | import java.util.List | 30 | import java.util.List |
28 | import org.eclipse.emf.ecore.EObject | 31 | import org.eclipse.emf.ecore.EObject |
29 | import org.eclipse.emf.ecore.resource.Resource | 32 | import org.eclipse.emf.ecore.resource.Resource |
30 | import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl | 33 | import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl |
31 | import org.eclipse.viatra.query.runtime.api.IPatternMatch | ||
32 | import org.eclipse.viatra.query.runtime.api.IQuerySpecification | ||
33 | import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher | ||
34 | import org.eclipse.xtend.lib.annotations.Data | 34 | import org.eclipse.xtend.lib.annotations.Data |
35 | import java.util.LinkedList | 35 | import org.eclipse.viatra.query.runtime.api.IQuerySpecification |
36 | import hu.bme.mit.inf.dlsreasoner.alloy.reasoner.AlloySolver | 36 | import java.util.Set |
37 | import hu.bme.mit.inf.dlsreasoner.alloy.reasoner.AlloySolverConfiguration | 37 | import java.util.Comparator |
38 | import hu.bme.mit.inf.dslreasoner.visualisation.pi2graphviz.GraphvisVisualisation | ||
39 | import hu.bme.mit.inf.dslreasoner.visualisation.pi2graphviz.GraphvizVisualisation | ||
40 | 38 | ||
41 | enum Metamodel { | 39 | enum Metamodel { |
42 | FAM, YakinduWOSynch, Yakindu | 40 | FAM, YakinduWOSynch, Yakindu |
@@ -111,17 +109,18 @@ class ScenarioRunner { | |||
111 | 109 | ||
112 | } else if(scenario.constraints == Constraints.MinusOne) { | 110 | } else if(scenario.constraints == Constraints.MinusOne) { |
113 | var first = true | 111 | var first = true |
114 | //for(remove : vq.validationPatterns) { | 112 | |
113 | for(remove : vq.validationPatterns) { | ||
115 | for(run : 1..scenario.runs) { | 114 | for(run : 1..scenario.runs) { |
116 | 115 | ||
117 | //val removeName = remove.fullyQualifiedName | 116 | val removeName = remove.fullyQualifiedName |
118 | //val desc = new ViatraQuerySetDescriptor(vq.patterns,vq.validationPatterns.filter[it != remove].toSet,emptyMap) | 117 | val vq_m = new ViatraQuerySetDescriptor(vq.patterns.filter[it != remove].toList,vq.validationPatterns.filter[it != remove].toSet,emptyMap) |
119 | runCase(first,"minusOne"+run,run,scenario,mm,vq,ps) | 118 | runCase(first,"minusOne_"+removeName+"_"+run,run,scenario,mm,vq_m,ps) |
120 | first = false | 119 | first = false |
121 | System.gc System.gc System.gc | 120 | System.gc System.gc System.gc |
122 | //Thread.sleep(3000) | 121 | Thread.sleep(3000) |
123 | } | 122 | } |
124 | //} | 123 | } |
125 | } | 124 | } |
126 | } | 125 | } |
127 | 126 | ||
@@ -170,7 +169,7 @@ class ScenarioRunner { | |||
170 | loader = if(metamodel == Metamodel::FAM) { | 169 | loader = if(metamodel == Metamodel::FAM) { |
171 | new FAMLoader(inputs) | 170 | new FAMLoader(inputs) |
172 | } else if(metamodel == Metamodel::Yakindu || metamodel == Metamodel::YakinduWOSynch) { | 171 | } else if(metamodel == Metamodel::Yakindu || metamodel == Metamodel::YakinduWOSynch) { |
173 | new YakinduLoader(inputs) => [it.useSynchronization = false] | 172 | new YakinduLoader(inputs) => [it.useSynchronization = false it.useComplexStates = true] |
174 | } else throw new IllegalArgumentException('''Unknown domain: «metamodel»''') | 173 | } else throw new IllegalArgumentException('''Unknown domain: «metamodel»''') |
175 | } | 174 | } |
176 | 175 | ||
@@ -193,28 +192,28 @@ class ScenarioRunner { | |||
193 | it.nameNewElements = false | 192 | it.nameNewElements = false |
194 | it.typeInferenceMethod = TypeInferenceMethod.PreliminaryAnalysis | 193 | it.typeInferenceMethod = TypeInferenceMethod.PreliminaryAnalysis |
195 | it.searchSpaceConstraints.additionalGlobalConstraints += loader.additionalConstraints | 194 | it.searchSpaceConstraints.additionalGlobalConstraints += loader.additionalConstraints |
196 | it.debugCongiguration.partalInterpretationVisualisationFrequency = 1 | 195 | //it.debugCongiguration.partalInterpretationVisualisationFrequency = 1 |
197 | it.debugCongiguration.partialInterpretatioVisualiser = new GraphvizVisualisation | 196 | //it.debugCongiguration.partialInterpretatioVisualiser = new GraphvizVisualisation |
198 | it.stateCoderStrategy = if(scenario.statecoder == StateCoder::ID) { | 197 | it.stateCoderStrategy = if(scenario.statecoder == StateCoder::ID) { |
199 | StateCoderStrategy::IDBased | 198 | StateCoderStrategy::IDBased |
200 | } else { | 199 | } else { |
201 | StateCoderStrategy::Neighbourhood | 200 | StateCoderStrategy::Neighbourhood |
202 | } | 201 | } |
203 | if(scenario.statecoder != StateCoder::ID || scenario.statecoder != StateCoder::Normal) { | 202 | if(scenario.statecoder != StateCoder::ID || scenario.statecoder != StateCoder::Normal) { |
204 | val range = if(scenario.statecoder != StateCoder::R1) { | 203 | val range = if(scenario.statecoder === StateCoder::R1) { |
205 | 1 | 204 | 1 |
206 | } else if(scenario.statecoder != StateCoder::R2) { | 205 | } else if(scenario.statecoder === StateCoder::R2) { |
207 | 2 | 206 | 2 |
208 | } else if(scenario.statecoder != StateCoder::R3) { | 207 | } else if(scenario.statecoder === StateCoder::R3) { |
209 | 3 | 208 | 3 |
210 | } | 209 | } |
211 | 210 | ||
212 | it.diversityRequirement = new DiversityDescriptor => [ | 211 | it.diversityRequirement = new DiversityDescriptor => [ |
213 | it.relevantTypes = null | 212 | it.relevantTypes = null |
214 | it.relevantRelations = null | 213 | it.relevantRelations = null |
215 | it.maxNumber = 1 | 214 | it.maxNumber = 0 |
216 | it.range = range | 215 | it.range = range |
217 | it.parallels = 1 | 216 | it.parallels = 0 |
218 | ] | 217 | ] |
219 | } | 218 | } |
220 | ] | 219 | ] |
@@ -254,10 +253,15 @@ class ScenarioRunner { | |||
254 | val representationNumber = representationIndex + 1 | 253 | val representationNumber = representationIndex + 1 |
255 | if(representation instanceof PartialInterpretation) { | 254 | if(representation instanceof PartialInterpretation) { |
256 | workspace.writeModel(representation, '''solution«representationNumber».partialinterpretation''') | 255 | workspace.writeModel(representation, '''solution«representationNumber».partialinterpretation''') |
257 | val partialInterpretation2GML = new PartialInterpretation2Gml | 256 | // val partialInterpretation2GML = new PartialInterpretation2Gml |
258 | val gml = partialInterpretation2GML.transform(representation) | 257 | // val gml = partialInterpretation2GML.transform(representation) |
259 | //ecore2GML.transform(root) | 258 | // ecore2GML.transform(root) |
260 | workspace.writeText('''solutionVisualisation«representationNumber».gml''',gml) | 259 | // workspace.writeText('''solutionVisualisation«representationNumber».gml''',gml) |
260 | |||
261 | // val visualiser = new GraphvizVisualisation | ||
262 | // val visualisation = visualiser.visualiseConcretization(representation) | ||
263 | // visualisation.writeToFile(workspace,'''solutionVisualisation«representationNumber»''') | ||
264 | |||
261 | } else { | 265 | } else { |
262 | workspace.writeText('''solution«representationNumber».txt''',representation.toString) | 266 | workspace.writeText('''solution«representationNumber».txt''',representation.toString) |
263 | } | 267 | } |
@@ -313,7 +317,7 @@ class ScenarioRunner { | |||
313 | 317 | ||
314 | class DiverseMeasurementRunner { | 318 | class DiverseMeasurementRunner { |
315 | def static void main(String[] args) { | 319 | def static void main(String[] args) { |
316 | val scenario = new Scenario(30,49,Metamodel::Yakindu,Constraints.All,StateCoder.Normal,1,Solver::ViatraSolver) | 320 | val scenario = new Scenario(30,29,Metamodel::YakinduWOSynch,Constraints.Metamodel,StateCoder.R1,20,Solver::Alloy) |
317 | val scenarioRunner = new ScenarioRunner | 321 | val scenarioRunner = new ScenarioRunner |
318 | scenarioRunner.runScenario(scenario) | 322 | scenarioRunner.runScenario(scenario) |
319 | } | 323 | } |