Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
mowgli
evaluation-orchestrator
Commits
d0b1cc74
Commit
d0b1cc74
authored
Nov 26, 2019
by
Daniel Seybold
Browse files
enabled first version for tsbs api
parent
ac8029e5
Pipeline
#64992
passed with stage
in 14 minutes and 18 seconds
Changes
2
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
122 additions
and
4 deletions
+122
-4
src/main/java/de/uulm/omi/evaluation/scenario/PerformanceTSBSScenario.java
...uulm/omi/evaluation/scenario/PerformanceTSBSScenario.java
+5
-4
src/main/java/de/uulm/omi/evaluation/task/TSBSWorkload.java
src/main/java/de/uulm/omi/evaluation/task/TSBSWorkload.java
+117
-0
No files found.
src/main/java/de/uulm/omi/evaluation/scenario/PerformanceTSBSScenario.java
View file @
d0b1cc74
...
...
@@ -19,6 +19,7 @@ import de.uulm.omi.evaluation.task.DeployDB;
import
de.uulm.omi.evaluation.task.FetchTSBSResult
;
import
de.uulm.omi.evaluation.task.InitEvaluation
;
import
de.uulm.omi.evaluation.task.InitRun
;
import
de.uulm.omi.evaluation.task.TSBSWorkload
;
import
org.jeasy.flows.engine.WorkFlowEngine
;
import
org.jeasy.flows.work.WorkReport
;
import
org.jeasy.flows.workflow.SequentialFlow
;
...
...
@@ -64,9 +65,9 @@ public class PerformanceTSBSScenario extends EvaluationScenario {
//TODO: check for refactoring
//Ycsb
Workload
yc
sbWorkload = new
Ycsb
Workload(this.evaluationContext, this.dbmsClusterContext,
//
this.performance
YCSBWrite
.getWorkload(), this.performance
YCSBWrite
.getWorkloadNetwork(), this.workloadPhaseContext,
// YcsbWorkloadType.LOAD,
performance
YCSBWrite
.getWorkloadInstances());
TSBS
Workload
t
sb
s
Workload
=
new
TSBS
Workload
(
this
.
evaluationContext
,
this
.
dbmsClusterContext
,
this
.
performance
TSBS
.
getWorkload
Load
(),
this
.
performance
TSBS
.
getWorkloadNetwork
(),
this
.
workloadPhaseContext
,
performance
TSBS
.
getWorkloadInstances
());
CleanUpRun
cleanUpRun
=
new
CleanUpRun
(
this
.
evaluationContext
,
this
.
dbmsClusterContext
);
...
...
@@ -94,7 +95,7 @@ public class PerformanceTSBSScenario extends EvaluationScenario {
.
execute
(
initRun
)
.
execute
(
deployDB
)
.
execute
(
checkDeployment
)
//
.execute(
yc
sbWorkload)
.
execute
(
t
sb
s
Workload
)
.
execute
(
checkWorkload
)
.
execute
(
fetchTSBSResult
)
//.execute(mergeYCSB)
...
...
src/main/java/de/uulm/omi/evaluation/task/TSBSWorkload.java
0 → 100644
View file @
d0b1cc74
package
de.uulm.omi.evaluation.task
;
import
static
com
.
google
.
common
.
base
.
Preconditions
.
checkNotNull
;
import
de.uulm.omi.cloudiator.dbms.evaluator.model.ClusterContext
;
import
de.uulm.omi.cloudiator.dbms.evaluator.model.DBEndpoints
;
import
de.uulm.omi.cloudiator.dbms.evaluator.model.EvaluationContext
;
import
de.uulm.omi.cloudiator.dbms.evaluator.model.EvaluationNetwork
;
import
de.uulm.omi.cloudiator.dbms.evaluator.model.TSBSLoadWorkload
;
import
de.uulm.omi.cloudiator.dbms.evaluator.model.WorkloadPhaseContext
;
import
de.uulm.omi.cloudiator.dbms.evaluator.model.WorkloadProcessInstance
;
import
de.uulm.omi.dbms.workload.api.DefaultApi
;
import
de.uulm.omi.utils.ColosseumUtils
;
import
de.uulm.omi.utils.DBMSNodeType
;
import
de.uulm.omi.utils.WorkloadApiClientHelper
;
import
java.io.File
;
import
java.util.List
;
import
org.jeasy.flows.work.DefaultWorkReport
;
import
org.jeasy.flows.work.WorkReport
;
import
org.jeasy.flows.work.WorkStatus
;
/**
* Created by Daniel Seybold on 23.01.2018.
*/
public
class
TSBSWorkload
extends
EvaluationTask
{
private
final
TSBSLoadWorkload
tsbsLoadWorkload
;
private
final
EvaluationNetwork
network
;
private
final
ClusterContext
clusterContext
;
private
final
WorkloadPhaseContext
workloadPhaseContext
;
private
final
List
<
String
>
workloadInstances
;
private
String
loggerPrefix
=
""
;
public
TSBSWorkload
(
EvaluationContext
evaluationContext
,
ClusterContext
clusterContext
,
TSBSLoadWorkload
tsbsLoadWorkload
,
EvaluationNetwork
network
,
WorkloadPhaseContext
workloadPhaseContext
,
List
<
String
>
workloadInstances
)
{
super
(
TaskType
.
YCSB_LOAD
,
evaluationContext
);
this
.
tsbsLoadWorkload
=
tsbsLoadWorkload
;
this
.
network
=
network
;
this
.
clusterContext
=
clusterContext
;
this
.
workloadPhaseContext
=
workloadPhaseContext
;
this
.
workloadInstances
=
workloadInstances
;
}
@Override
public
WorkReport
call
()
{
this
.
loggerPrefix
=
"RUN "
+
this
.
evaluationContext
.
getRunCounter
().
intValue
()
+
": "
;
//get workloadApi client
List
<
DefaultApi
>
workloadClients
=
WorkloadApiClientHelper
.
getWorkloadClients
(
workloadInstances
);
Long
appInstanceId
=
Long
.
valueOf
(
this
.
clusterContext
.
getIdApplicationInstance
());
checkNotNull
(
appInstanceId
);
//build endpoints
DBEndpoints
dbEndpoints
=
null
;
dbEndpoints
=
ColosseumUtils
.
extractDBEndpoints
(
appInstanceId
,
this
.
network
.
getType
().
toString
(),
DBMSNodeType
.
ALL
);
if
(
dbEndpoints
.
isEmpty
()){
LOGGER
.
warn
(
loggerPrefix
+
"Found no endpoints for applicationInstanceId! Aborting!"
);
return
new
DefaultWorkReport
(
WorkStatus
.
FAILED
);
}
tsbsLoadWorkload
.
setDbEndpoints
(
dbEndpoints
);
try
{
String
workloadTask
=
"tsbs"
+
evaluationContext
.
getRunCounter
().
intValue
()
+
"_"
+
this
.
evaluationContext
.
getScenarioType
();
int
instanceCounter
=
0
;
for
(
DefaultApi
workloadClient:
workloadClients
)
{
writeWorkloadSpec
(
instanceCounter
,
TRANSACTION_SPEC
);
WorkloadProcessInstance
result
=
workloadClient
.
workloadTsbsLoadPost
(
workloadTask
,
tsbsLoadWorkload
);
//TODO: refactor to a list of workloadPhase states
LOGGER
.
debug
(
loggerPrefix
+
"Status: "
+
result
.
getProcessStatus
().
getValue
());
this
.
workloadPhaseContext
.
setProcessState
(
result
.
getProcessStatus
().
getValue
());
instanceCounter
++;
}
}
catch
(
de
.
uulm
.
omi
.
dbms
.
workload
.
client
.
ApiException
e
)
{
LOGGER
.
error
(
loggerPrefix
+
"error calling workload API"
,
e
);
return
new
DefaultWorkReport
(
WorkStatus
.
FAILED
);
}
return
new
DefaultWorkReport
(
WorkStatus
.
COMPLETED
);
}
private
void
writeWorkloadSpec
(
int
instanceCounter
,
String
workloadSpecName
){
//Write Spec to disk
LOGGER
.
debug
(
loggerPrefix
+
"Running Workload Spec: "
+
tsbsLoadWorkload
.
toString
());
String
specUri
=
this
.
evaluationContext
.
getEvluationRun
()
+
File
.
separator
+
EvaluationTask
.
SPECS_FOLDER
+
File
.
separator
+
instanceCounter
+
"_"
+
workloadSpecName
;
this
.
writeReport
(
specUri
,
GSON
.
toJson
(
tsbsLoadWorkload
));
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment