Skip to content

Commit f364557

Browse files
Hidiroglu Alpertobiangerstein
authored andcommitted
CONT-93: Forecast microservice
1 parent a702334 commit f364557

File tree

110 files changed

+610076
-33
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

110 files changed

+610076
-33
lines changed

continuity.api/continuity.api.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ dependencyManagement {
88

99
dependencies {
1010
compile project(':continuity.idpa')
11+
compile project(':continuity.dsl')
1112

1213
compile("org.springframework.boot:spring-boot-starter-web")
1314
compile("org.springframework.boot:spring-boot-starter-amqp")

continuity.api/src/main/java/org/continuity/api/amqp/AmqpApi.java

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,14 +78,16 @@ private SessionLogs() {
7878
/**
7979
* AMQP API of the workload model services, e.g., wessbas.
8080
*
81-
* @author Henning Schulz
81+
* @author Henning Schulz, Alper Hidiroglu
8282
*
8383
*/
8484
public static class WorkloadModel {
8585

8686
private static final String SCOPE = "workloadmodel";
8787

8888
public static final ExchangeDefinition<WorkloadType> TASK_CREATE = ExchangeDefinition.task(SCOPE, "create").nonDurable().autoDelete().withRoutingKey(WorkloadType.INSTANCE);
89+
90+
public static final ExchangeDefinition<WorkloadType> MIX_CREATE = ExchangeDefinition.task(SCOPE, "createmix").nonDurable().autoDelete().withRoutingKey(WorkloadType.INSTANCE);
8991

9092
public static final ExchangeDefinition<WorkloadType> EVENT_CREATED = ExchangeDefinition.event(SCOPE, "created").nonDurable().autoDelete().withRoutingKey(WorkloadType.INSTANCE);
9193

@@ -146,5 +148,22 @@ private IdpaApplication() {
146148
}
147149

148150
}
151+
152+
/**
153+
* AMQP API of the forecast service.
154+
*
155+
* @author Alper Hidiroglu
156+
*
157+
*/
158+
public static class Forecast {
159+
160+
private static final String SCOPE = "forecast";
161+
162+
public static final ExchangeDefinition<ServiceName> TASK_CREATE = ExchangeDefinition.task(SCOPE, "create").nonDurable().autoDelete().withRoutingKey(ServiceName.INSTANCE);
163+
164+
private Forecast() {
165+
}
166+
167+
}
149168

150169
}
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package org.continuity.api.entities.artifact;
2+
3+
import java.util.Date;
4+
import java.util.LinkedList;
5+
6+
import com.fasterxml.jackson.annotation.JsonFormat;
7+
8+
/**
9+
*
10+
* @author Alper Hidiroglu
11+
*
12+
*/
13+
public class ForecastBundle {
14+
15+
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH-mm-ss-SSSX")
16+
private Date timestamp;
17+
18+
private int workloadIntensity;
19+
20+
private LinkedList<Double> probabilities;
21+
22+
public ForecastBundle(Date timestamp, Integer workloadIntensity, LinkedList<Double> probabilities) {
23+
this.timestamp = timestamp;
24+
this.workloadIntensity = workloadIntensity;
25+
this.probabilities = probabilities;
26+
}
27+
28+
public ForecastBundle() {
29+
30+
}
31+
32+
public Date getTimestamp() {
33+
return timestamp;
34+
}
35+
36+
public void setTimestamp(Date timestamp) {
37+
this.timestamp = timestamp;
38+
}
39+
40+
public Integer getWorkloadIntensity() {
41+
return workloadIntensity;
42+
}
43+
44+
public void setWorkloadIntensity(Integer workloadIntensity) {
45+
this.workloadIntensity = workloadIntensity;
46+
}
47+
48+
public LinkedList<Double> getProbabilities() {
49+
return probabilities;
50+
}
51+
52+
public void setProbabilities(LinkedList<Double> probabilities) {
53+
this.probabilities = probabilities;
54+
}
55+
56+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package org.continuity.api.entities.artifact;
2+
3+
import java.util.List;
4+
5+
/**
6+
*
7+
* @author Alper Hidiroglu
8+
*
9+
*/
10+
public class SessionsBundle {
11+
12+
private int behaviorId;
13+
private List<SimplifiedSession> sessions;
14+
15+
public SessionsBundle(int behaviorId, List<SimplifiedSession> sessions) {
16+
this.behaviorId = behaviorId;
17+
this.sessions = sessions;
18+
}
19+
20+
public SessionsBundle() {
21+
22+
}
23+
24+
public int getBehaviorId() {
25+
return behaviorId;
26+
}
27+
public void setBehaviorId(int behaviorId) {
28+
this.behaviorId = behaviorId;
29+
}
30+
public List<SimplifiedSession> getSessions() {
31+
return sessions;
32+
}
33+
public void setSessions(List<SimplifiedSession> sessions) {
34+
this.sessions = sessions;
35+
}
36+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package org.continuity.api.entities.artifact;
2+
3+
import java.util.Date;
4+
import java.util.List;
5+
6+
import com.fasterxml.jackson.annotation.JsonFormat;
7+
8+
public class SessionsBundlePack {
9+
10+
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH-mm-ss-SSSX")
11+
private Date timestamp;
12+
13+
private List<SessionsBundle> sessionsBundles;
14+
15+
public SessionsBundlePack(Date timestamp, List<SessionsBundle> sessionsBundles) {
16+
super();
17+
this.timestamp = timestamp;
18+
this.sessionsBundles = sessionsBundles;
19+
}
20+
21+
public SessionsBundlePack() {
22+
23+
}
24+
25+
public Date getTimestamp() {
26+
return timestamp;
27+
}
28+
29+
public void setTimestamp(Date timestamp) {
30+
this.timestamp = timestamp;
31+
}
32+
33+
public List<SessionsBundle> getSessionsBundles() {
34+
return sessionsBundles;
35+
}
36+
37+
public void setSessionsBundles(List<SessionsBundle> sessionsBundles) {
38+
this.sessionsBundles = sessionsBundles;
39+
}
40+
41+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package org.continuity.api.entities.artifact;
2+
3+
/**
4+
* Represents a simplified session.
5+
* @author Alper Hidiroglu
6+
*
7+
*/
8+
public class SimplifiedSession {
9+
10+
private String id;
11+
private long startTime;
12+
private long endTime;
13+
14+
/**
15+
* Constructor.
16+
* @param id
17+
* @param startTime
18+
* @param endTime
19+
*/
20+
public SimplifiedSession(String id, long startTime, long endTime) {
21+
this.id = id;
22+
this.startTime = startTime;
23+
this.endTime = endTime;
24+
}
25+
26+
public SimplifiedSession() {
27+
28+
}
29+
30+
public String getId() {
31+
return id;
32+
}
33+
public void setId(String id) {
34+
this.id = id;
35+
}
36+
public long getStartTime() {
37+
return startTime;
38+
}
39+
public void setStartTime(long startTime) {
40+
this.startTime = startTime;
41+
}
42+
public long getEndTime() {
43+
return endTime;
44+
}
45+
public void setEndTime(long endTime) {
46+
this.endTime = endTime;
47+
}
48+
}

continuity.api/src/main/java/org/continuity/api/entities/config/Order.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,14 @@
33
import java.util.Set;
44

55
import org.continuity.api.entities.links.LinkExchangeModel;
6+
import org.continuity.dsl.description.ForecastInput;
67

78
import com.fasterxml.jackson.annotation.JsonInclude;
89
import com.fasterxml.jackson.annotation.JsonInclude.Include;
910
import com.fasterxml.jackson.annotation.JsonProperty;
1011
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
1112

12-
@JsonPropertyOrder({ "goal", "mode", "tag", "testing-context", "options", "source" })
13+
@JsonPropertyOrder({ "goal", "mode", "tag", "testing-context", "options", "source", "forecast-input" })
1314
public class Order {
1415

1516
private String tag;
@@ -28,6 +29,10 @@ public class Order {
2829

2930
@JsonInclude(Include.NON_NULL)
3031
private OrderOptions options;
32+
33+
@JsonInclude(Include.NON_NULL)
34+
@JsonProperty("forecast-input")
35+
private ForecastInput forecastInput;
3136

3237
@JsonProperty("modularization")
3338
@JsonInclude(Include.NON_NULL)
@@ -88,5 +93,13 @@ public ModularizationOptions getModularizationOptions() {
8893
public void setModularizationOptions(ModularizationOptions modularizationOptions) {
8994
this.modularizationOptions = modularizationOptions;
9095
}
96+
97+
public ForecastInput getForecastInput() {
98+
return forecastInput;
99+
}
100+
101+
public void setForecastInput(ForecastInput forecastInput) {
102+
this.forecastInput = forecastInput;
103+
}
91104

92105
}

continuity.api/src/main/java/org/continuity/api/entities/config/OrderGoal.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
public enum OrderGoal {
1010

11-
CREATE_SESSION_LOGS, CREATE_WORKLOAD_MODEL, CREATE_LOAD_TEST, EXECUTE_LOAD_TEST;
11+
CREATE_SESSION_LOGS, CREATE_BEHAVIOR_MIX, CREATE_FORECAST, CREATE_WORKLOAD_MODEL, CREATE_LOAD_TEST, EXECUTE_LOAD_TEST;
1212

1313
private static final Map<String, OrderGoal> prettyStringToGoal = new HashMap<>();
1414

continuity.api/src/main/java/org/continuity/api/entities/config/OrderMode.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
public enum OrderMode {
1010

11-
PAST_SESSIONS, PAST_REQUESTS;
11+
PAST_SESSIONS, PAST_REQUESTS, FORECASTED_WORKLOAD;
1212

1313
private static final Map<String, OrderMode> prettyStringToMode = new HashMap<>();
1414

continuity.api/src/main/java/org/continuity/api/entities/config/TaskDescription.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.continuity.api.entities.config;
22

33
import org.continuity.api.entities.links.LinkExchangeModel;
4+
import org.continuity.dsl.description.ForecastInput;
45

56
import com.fasterxml.jackson.annotation.JsonInclude;
67
import com.fasterxml.jackson.annotation.JsonInclude.Include;
@@ -25,6 +26,8 @@ public class TaskDescription {
2526

2627
@JsonProperty("modularization-options")
2728
private ModularizationOptions modularizationOptions;
29+
30+
private ForecastInput forecastInput;
2831

2932
public String getTaskId() {
3033
return taskId;
@@ -73,5 +76,13 @@ public ModularizationOptions getModularizationOptions() {
7376
public void setModularizationOptions(ModularizationOptions modularizationOptions) {
7477
this.modularizationOptions = modularizationOptions;
7578
}
79+
80+
public ForecastInput getForecastInput() {
81+
return forecastInput;
82+
}
83+
84+
public void setForecastInput(ForecastInput forecastInput) {
85+
this.forecastInput = forecastInput;
86+
}
7687

7788
}

0 commit comments

Comments
 (0)