| 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); |
| } |