blob: 556f226779c86fd0265cd07dc8d3ef2b18e888de [file] [log] [blame]
package org.eclipse.viatra.examples.cps.tests.queries
import "http://www.eclipse.org/emf/2002/Ecore"
import "http://org.eclipse.viatra/model/cps"
pattern sumPriority(s) {
s == sum find hostPriority(_h, _aT, #c);
}
pattern minPriority(m) {
m == min find hostPriority(_h, _aT, #c);
}
pattern maxPriority(m) {
m == max find hostPriority(_h, _aT, #c);
}
pattern avgCPU(n) {
find sumCPU(s);
find countHost(c);
n == eval(if (c == 0) null else (s / c));
}
pattern sumCPU(n) {
n == sum find availableCPU(_, #c);
}
pattern countHost(n) {
n == count find hostInstance(_);
}
pattern minCPU(n) {
n == min find availableCPU(_, #c);
}
pattern hostInstanceWithMinCPU1(host : HostInstance, value) {
value == min find availableCPU(_, #c);
find availableCPU(host, value);
}
pattern hostInstanceWithMinCPU2(host : HostInstance, value) {
find minCPU(value);
find availableCPU(host, value);
}
pattern hasOddApplications(hostInst: HostInstance, appInst : ApplicationInstance) = {
CT == count find manyParams(hostInst, _a, _b, appInst, _c);
check (CT % 2 == 1);
}
// HELPER PATTERNS
pattern availableCPU(host : HostInstance, value : EInt) {
HostInstance.availableCpu(host, value);
}
pattern hostPriority(host, appType, priority) {
HostInstance.applications(host, app);
ApplicationInstance.type(app, appType);
ApplicationInstance.priority(app, priority);
}
pattern hostInstance(host) {
HostInstance(host);
}
pattern manyParams(hostInst: HostInstance, a, b, appInst : ApplicationInstance, c) = {
a == 1;
b == 2;
c == 3;
HostInstance.applications(hostInst, appInst);
}