import at.ac.tuwien.dsg.sybl.model.annotations.SYBL_CloudServiceDirective;
import at.ac.tuwien.dsg.sybl.model.annotations.SYBL_CodeRegionDirective;
import at.ac.tuwien.dsg.sybl.model.annotations.SYBL_CodeRegionDirective.AnnotType;
import at.ac.tuwien.dsg.sybl.model.annotations.SYBL_ServiceUnitDirective;
public class AnnotatedClass {
@SYBL_CloudServiceDirective(annotatedEntityID="CloudService",
constraints="Co1:CONSTRAINT time < 10 ms; Co2:CONSTRAINT cpu.numberCores != 0",
monitoring ="Mo1:MONITORING averageCost = cost.average TIMESTAMP 3 ms ; Mo2: MONITORING currentCpu = cpu.usage;Mo3:MONITORING time = runningTime.elapsed",
strategies="St1:STRATEGY CASE averageCost > 70 : scaleDown")
public void sendActualizedData(){
ComputationalIntensive computationalIntensive = new ComputationalIntensive();
Data data = computationalIntensive.refreshAllData();
new Communication().sendToAllClients(data);
}
@SYBL_CodeRegionDirective(annotatedEntityID="methoddoEndOfTheMonthComputations",constraints="Co1:CONSTRAINT 98.5 <= availability.current;" +
"Co2:CONSTRAINT availability.current >= 99.5 WHEN cost.average > 200 ;" +
"Co3:CONSTRAINT cost.total < 500 ; Co4:CONSTRAINT cpu.size > 400 WHEN Cost.Instant > 50;" +
"Co5:CONSTRAINT cpu.size > 200",
priorities="Priority(Co1)<Priority(Co2);Priority(Co5)<Priority(Co4)",
monitoring ="Mo1:MONITORING currentAvailability = availability.current TIMESTAMP 2 ms WHEN cost.instant < 50")
public void doEndOfTheMonthComputations(){
ComputationalIntensive computationalIntensive = new ComputationalIntensive();
computationalIntensive.computeMonthlyStatistics();
}
@SYBL_CodeRegionDirective(annotatedEntityID="methodaa",type=AnnotType.DURING,
constraints="Co1:CONSTRAINT cpuUsageData< 65;" +
"Co2:CONSTRAINT cpuUsageData > 30; " +
"Co3:CONSTRAINT cpuUsageData < 85 WHEN cost > 90",
monitoring ="Mo1:MONITORING cost = cost.average TIMESTAMP 3 ms;" +
"Mo2: MONITORING cpuUsageData = cpu.usage.datasource;" +
"Mo3: MONITORING memUsage = memory.usage.datasource;" +
"Mo4: MONITORING cpuUsage = cpu.usage",
strategies="St1:STRATEGY CASE Violated(Co2): scaleInDataSource; " +
"St2:STRATEGY CASE Enabled(Co1) AND Violated(Co1): scaleOutDataSource",
priorities="Priority(Co3) > Priority(Co1)")
public void aa(){
}
@SYBL_ServiceUnitDirective(annotatedEntityID="test",
constraints="Co1:CONSTRAINT cpuUsage < 65;" +
"Co2:CONSTRAINT cpuUsage > 30; " +
"Co3:CONSTRAINT cpuUsage < 85 WHEN cost > 70",
monitoring ="Mo1:MONITORING cost = cost.instant;" +
"Mo2: MONITORING cpuUsage = cpu.usage;",
strategies="St1:STRATEGY CASE Violated(Co2): scaleIn; " +
"St2:STRATEGY CASE Enabled(Co1) AND Violated(Co1): scaleOut;" +
"St3:STRATEGY CASE Enabled(Co3) AND Violated(Co3): scaleOut;",
priorities="Priority(Co3) > Priority(Co1)")
public void test(){
}
}