-
Notifications
You must be signed in to change notification settings - Fork 0
/
ModelChecker_LeaderElection_LTL.groovy
101 lines (73 loc) · 3.28 KB
/
ModelChecker_LeaderElection_LTL.groovy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
package fma.interpreter.atl
import fma.interpreter.utils.EmfCompareInJson
import maude4j.MaudeDaemon
import moment2.registry.EmfMetamodelRegistry
import spock.lang.Specification
import static fma.interpreter.utils.TestProperties.fmaCodePath
import fma.interpreter.atl.FmaAtlInterpreter
class ModelChecker_LeaderElection_LTL extends Specification {
public "leader_3processes_noSymmetry_eLeader"() {
String sourceMetamodelPath = 'src/test/resources/fma/atl/inplace/leader/noSymmetry/Network.ecore'
String sourceModelPath = 'src/test/resources/fma/atl/inplace/leader/noSymmetry/3processes.xmi'
String targetMetamodelPath = 'src/test/resources/fma/atl/inplace/leader/noSymmetry/Network.ecore'
String systemSpecPath = 'src/test/resources/fma/atl/inplace/leader/noSymmetry/leader.atl'
String propSpecPath = 'src/test/resources/fma/atl/inplace/leader/noSymmetry/leader-props.atl'
String ltlFormula = '[] [] <> eLeader'
MaudeDaemon md = new MaudeDaemon();
EmfMetamodelRegistry registry = new EmfMetamodelRegistry();
AtlInterpreter interpreter = new AtlInterpreter(md, fmaCodePath, registry );
interpreter.debug_ = true
String[] resolveTempClasses = ['metamodel("") ! cid("")']
boolean decision = interpreter.modelCheckLTL(
systemSpecPath,
propSpecPath,
ltlFormula,
sourceMetamodelPath,
'Root',
sourceModelPath,
targetMetamodelPath,
'Root',
['Network', 'Network'], // aliases used for models in module declaration
resolveTempClasses,
ExecutionMode.INPLACE
)
File outputFile = new File('src/test/resources/fma/atl/inplace/leader/noSymmetry/module.txt')
if (outputFile.exists()) outputFile.delete()
outputFile << interpreter.metamodelModule
outputFile << interpreter.verificationModule
outputFile << interpreter.modelCheckCmd
expect: decision==true
}
public "leader_3processes_noSymmetry_mLeader"() {
String sourceMetamodelPath = 'src/test/resources/fma/atl/inplace/leader/noSymmetry/Network.ecore'
String sourceModelPath = 'src/test/resources/fma/atl/inplace/leader/noSymmetry/3processes.xmi'
String targetMetamodelPath = 'src/test/resources/fma/atl/inplace/leader/noSymmetry/Network.ecore'
String systemSpecPath = 'src/test/resources/fma/atl/inplace/leader/noSymmetry/leader.atl'
String propSpecPath = 'src/test/resources/fma/atl/inplace/leader/noSymmetry/leader-props.atl'
String ltlFormula = '~ <> [] mLeader'
MaudeDaemon md = new MaudeDaemon();
EmfMetamodelRegistry registry = new EmfMetamodelRegistry();
AtlInterpreter interpreter = new AtlInterpreter(md, fmaCodePath, registry );
interpreter.debug_ = true
String[] resolveTempClasses = ['metamodel("") ! cid("")']
boolean decision = interpreter.modelCheckLTL(
systemSpecPath,
propSpecPath,
ltlFormula,
sourceMetamodelPath,
'Root',
sourceModelPath,
targetMetamodelPath,
'Root',
['Network', 'Network'], // aliases used for models in module declaration
resolveTempClasses,
ExecutionMode.INPLACE
)
File outputFile = new File('src/test/resources/fma/atl/inplace/leader/noSymmetry/module.txt')
if (outputFile.exists()) outputFile.delete()
outputFile << interpreter.metamodelModule
outputFile << interpreter.verificationModule
outputFile << interpreter.modelCheckCmd
expect: decision==true
}
}