blob: 879abc336a78648eae9e646916e8875570c25cfb (
plain) (
blame)
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
package run
import hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ConfigSpecification
import hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ConfigurationScript
import hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.FileSpecification
import hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.GenerationTask
import hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.IntervallNumber
import hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ModelEntry
import hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ObjectTypeScope
import hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.PartialModelSpecification
import hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.RuntimeEntry
import hu.bme.mit.inf.dslreasoner.application.applicationConfiguration.ScopeSpecification
import hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor
import hu.bme.mit.inf.dslreasoner.application.execution.StandaloneScriptExecutor
import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace
import java.text.SimpleDateFormat
import java.util.Date
import org.apache.commons.cli.BasicParser
import org.apache.commons.cli.CommandLine
import org.apache.commons.cli.CommandLineParser
import org.apache.commons.cli.HelpFormatter
import org.apache.commons.cli.Option
import org.apache.commons.cli.Options
import org.apache.commons.cli.ParseException
import org.eclipse.core.runtime.NullProgressMonitor
import org.eclipse.emf.ecore.resource.Resource
import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl
class RunVampireConfig {
static var SIZE_LB = 10
static var SIZE_UB = -1
static var RUNS = 3
static var MODELS = 3
static var RUNTIME = 300
static var DOMAIN = "Yakindu-Vampire" // "FamilyTree", "Satellite", "Taxation"
static val QUERIES = false
static val INITIAL = true
def static void main(String[] args) {
// Resource.Factory.Registry.INSTANCE.extensionToFactoryMap.put("xmi", new XMIResourceFactoryImpl)
// val workspace = new FileSystemWorkspace('''x/''', "")
// workspace.initAndClear
// Workspace setup
val Date date = new Date(System.currentTimeMillis)
val SimpleDateFormat format = new SimpleDateFormat("dd-HHmm")
val formattedDate = format.format(date)
val executor = new ScriptExecutor
val path = "config//genericVampire.vsconfig"
var ConfigurationScript config = StandaloneScriptExecutor.loadScript(path)
// /////////////////////////
// BEGIN RUN
println(
"<<DOMAIN: " + DOMAIN + ", SIZE=" + SIZE_LB + "to" + SIZE_UB + ", Runs=" + RUNS + ", ModelsPerRun=" +
MODELS + ", Runtime=" + RUNTIME + ">>")
var naming = "size" + toStr(SIZE_LB) + "to" + toStr(SIZE_UB) + "r" + RUNS + "n" + MODELS + "rt" + RUNTIME
val outputPath = "output-Vampire/" + naming + "_" + formattedDate + "/models"
val debugPath = "output-Vampire/" + naming + "_" + formattedDate + "/debug"
val logPath = debugPath + "/log.txt"
val statsPath = "output-Vampire/" + naming + "_" + formattedDate + "/stats.csv"
// Basic Adjustments
val genTask = config.commands.get(0) as GenerationTask
if(!QUERIES) genTask.patterns = null
if(!INITIAL) genTask.partialModel = null
genTask.runs = RUNS
genTask.number = MODELS
// Size
val scopeSpec = genTask.scope as ScopeSpecification
val objScope = scopeSpec.scopes.get(0) as ObjectTypeScope
val interval = objScope.number as IntervallNumber
interval.min = SIZE_LB
if (SIZE_UB == -1)
interval.maxUnlimited = true
else {
interval.maxUnlimited = false
interval.maxNumber = SIZE_UB
}
// workspace.writeModel(config, '''x.xmi''')
// Runtime
val configScope = genTask.config as ConfigSpecification
val runtimeEntry = configScope.entries.get(0) as RuntimeEntry
runtimeEntry.millisecLimit = RUNTIME
// Output locations
val debug = genTask.debugFolder as FileSpecification
debug.path = debugPath
val output = genTask.tagetFolder as FileSpecification
output.path = outputPath
val log = genTask.targetLogFile as FileSpecification
log.path = logPath
val stats = genTask.targetStatisticsFile as FileSpecification
stats.path = statsPath
// Run Generator
println()
executor.executeScript(config, new NullProgressMonitor)
println()
}
static def String toStr(int i) {
var toAdd = ""
if(i < 100 && i != -1) toAdd = "0"
return toAdd + i
}
}
|