Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
W
workload-API
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
3
Issues
3
List
Boards
Labels
Service Desk
Milestones
Iterations
Merge Requests
0
Merge Requests
0
Requirements
Requirements
List
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issue
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
mowgli
workload-API
Commits
feaa9e0a
Commit
feaa9e0a
authored
May 11, 2020
by
Daniel Seybold
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
some refactoring regarding TSBS runner
parent
ef0370f9
Pipeline
#80755
passed with stage
in 22 minutes and 24 seconds
Changes
2
Pipelines
1
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
45 additions
and
66 deletions
+45
-66
src/main/java/de/uulm/omi/dbms/workload/api/impl/WorkloadApiServiceImpl.java
...lm/omi/dbms/workload/api/impl/WorkloadApiServiceImpl.java
+1
-1
src/main/java/de/uulm/omi/workload/tsbs/Runner.java
src/main/java/de/uulm/omi/workload/tsbs/Runner.java
+44
-65
No files found.
src/main/java/de/uulm/omi/dbms/workload/api/impl/WorkloadApiServiceImpl.java
View file @
feaa9e0a
...
...
@@ -221,7 +221,7 @@ public class WorkloadApiServiceImpl extends WorkloadApiService {
workloadProcessInstance
.
setTimestamp
(
BigDecimal
.
valueOf
(
workloadProcess
.
getStartTimestamp
()));
workloadProcessInstance
.
setProcessId
(
workloadProcess
.
getProcessId
());
Runner
tsbsRunner
=
new
Runner
(
workload
ProcessInstance
,
workload
,
taskId
);
Runner
tsbsRunner
=
new
Runner
(
workload
,
taskId
);
new
Thread
(
tsbsRunner
).
start
();
return
Response
.
ok
().
entity
(
workloadProcessInstance
).
build
();
...
...
src/main/java/de/uulm/omi/workload/tsbs/Runner.java
View file @
feaa9e0a
package
de.uulm.omi.workload.tsbs
;
import
de.uulm.omi.cloudiator.dbms.evaluator.model.ProcessStatus
;
import
de.uulm.omi.cloudiator.dbms.evaluator.model.TSBSWorkload
;
import
de.uulm.omi.cloudiator.dbms.evaluator.model.WorkloadProcessInstance
;
import
de.uulm.omi.utils.WorkloadApiProperties
;
import
de.uulm.omi.workload.WorkloadProcess
;
import
java.io.IOException
;
import
java.util.Properties
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
...
...
@@ -29,21 +26,18 @@ public class Runner implements Runnable {
private
final
int
CHECKING_INTERVAL
=
5000
;
private
TSBSWorkload
workload
;
private
WorkloadProcessInstance
workloadProcessInstance
;
private
String
taskId
;
public
Runner
(
WorkloadProcessInstance
workloadProcessInstance
,
TSBSWorkload
workload
,
String
taskId
)
{
public
Runner
(
TSBSWorkload
workload
,
String
taskId
)
{
this
.
workload
=
workload
;
this
.
workloadProcessInstance
=
workloadProcessInstance
;
this
.
taskId
=
taskId
;
}
@Override
public
void
run
()
{
WorkloadProcess
workloadProcess
=
WorkloadProcess
.
getInstance
();
Properties
properties
=
WorkloadApiProperties
.
getInstance
().
getProperties
();
Long
workloadTimestamp
=
System
.
currentTimeMillis
();
...
...
@@ -57,16 +51,12 @@ public class Runner implements Runnable {
generateDataCommand
+=
properties
.
getProperty
(
WorkloadApiProperties
.
WORKLOAD_DATA_FOLDER
)
+
workload
.
getDbms
().
toString
().
toLowerCase
()
+
"-data.gz"
;
LOGGER
.
debug
(
"Generate data command: "
+
generateDataCommand
);
ProcessBuilder
genDataProcess
=
new
ProcessBuilder
();
genDataProcess
.
command
(
UNIX_SHELL
,
UNIX_COMMAND_PARAM
,
generateDataCommand
);
Process
processData
=
null
;
try
{
processData
=
genDataProcess
.
start
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
while
(
processData
.
isAlive
())
{
workloadProcess
.
startWorkload
(
TSBS_BINARY
,
UNIX_SHELL
,
UNIX_COMMAND_PARAM
,
generateDataCommand
,
taskId
,
workloadTimestamp
);
while
(
workloadProcess
.
isRunning
())
{
try
{
LOGGER
.
debug
(
"Data generation in process..."
);
Thread
.
sleep
(
CHECKING_INTERVAL
);
...
...
@@ -75,9 +65,8 @@ public class Runner implements Runnable {
}
}
LOGGER
.
debug
(
"Phase 1: data generation finished with exit code: "
+
processData
.
exitValue
());
if
(
processData
.
exitValue
()
!=
0
){
workloadProcessInstance
.
setProcessStatus
(
ProcessStatus
.
ERROR
);
LOGGER
.
debug
(
"Phase 1: data generation finished with exit code: "
+
workloadProcess
.
getExitCode
());
if
(
workloadProcess
.
getExitCode
()
!=
0
){
Thread
.
currentThread
().
interrupt
();
return
;
}
...
...
@@ -89,16 +78,11 @@ public class Runner implements Runnable {
generateQueriesCommand
+=
properties
.
getProperty
(
WorkloadApiProperties
.
WORKLOAD_DATA_FOLDER
)
+
workload
.
getDbms
().
toString
().
toLowerCase
()
+
"-queries.gz"
;
LOGGER
.
debug
(
generateQueriesCommand
);
workloadProcess
.
startWorkload
(
TSBS_BINARY
,
UNIX_SHELL
,
UNIX_COMMAND_PARAM
,
generateQueriesCommand
,
taskId
,
workloadTimestamp
);
ProcessBuilder
genQueryProcess
=
new
ProcessBuilder
();
genQueryProcess
.
command
(
UNIX_SHELL
,
UNIX_COMMAND_PARAM
,
generateQueriesCommand
);
Process
processGenQueries
=
null
;
try
{
processGenQueries
=
genQueryProcess
.
start
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
while
(
processGenQueries
.
isAlive
())
{
while
(
workloadProcess
.
isRunning
())
{
try
{
LOGGER
.
debug
(
"Query generation in process..."
);
Thread
.
sleep
(
CHECKING_INTERVAL
);
...
...
@@ -106,15 +90,15 @@ public class Runner implements Runnable {
e
.
printStackTrace
();
}
}
LOGGER
.
debug
(
"Phase 2: query generation finished with exit code: "
+
processGenQueries
.
exitValue
());
if
(
processGenQueries
.
exitValue
()
!=
0
){
workloadProcessInstance
.
setProcessStatus
(
ProcessStatus
.
ERROR
);
LOGGER
.
debug
(
"Phase 2: query generation finished with exit code: "
+
workloadProcess
.
getExitCode
());
if
(
workloadProcess
.
getExitCode
()
!=
0
){
Thread
.
currentThread
().
interrupt
();
return
;
}
//Phase 3: executing insert/load phase
/*
//clear database
String clearDBCommand = TSBSCommandBuilder.clearDB(workload.getDbms(), workload.getTsbsLoadExecution().getDbName(),workload.getDbEndpoints());
ProcessBuilder processClearDBBuilder = new ProcessBuilder();
...
...
@@ -137,6 +121,8 @@ public class Runner implements Runnable {
}
LOGGER.debug("Clear DB finished with exit code: " + clearDBProcess.exitValue());
*/
String
loadCommand
=
""
;
...
...
@@ -144,16 +130,11 @@ public class Runner implements Runnable {
loadCommand
+=
" > "
+
properties
.
getProperty
(
WorkloadApiProperties
.
WORKLOAD_RESULTS_FOLDER
)
+
TSBS_RESULT_FOLDER
+
taskId
.
trim
()
+
"_load.txt"
;
LOGGER
.
debug
(
loadCommand
);
workloadProcess
.
startWorkload
(
TSBS_BINARY
,
UNIX_SHELL
,
UNIX_COMMAND_PARAM
,
loadCommand
,
taskId
,
workloadTimestamp
);
ProcessBuilder
loadProcess
=
new
ProcessBuilder
();
loadProcess
.
command
(
UNIX_SHELL
,
UNIX_COMMAND_PARAM
,
loadCommand
);
Process
processLoad
=
null
;
try
{
processLoad
=
loadProcess
.
start
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
while
(
processLoad
.
isAlive
())
{
while
(
workloadProcess
.
isRunning
())
{
try
{
LOGGER
.
debug
(
"Load phase in process..."
);
Thread
.
sleep
(
CHECKING_INTERVAL
);
...
...
@@ -161,9 +142,8 @@ public class Runner implements Runnable {
e
.
printStackTrace
();
}
}
LOGGER
.
debug
(
"Phase 3: load phase finished with exit code: "
+
processLoad
.
exitValue
());
if
(
processLoad
.
exitValue
()
!=
0
){
workloadProcessInstance
.
setProcessStatus
(
ProcessStatus
.
ERROR
);
LOGGER
.
debug
(
"Phase 3: load phase finished with exit code: "
+
workloadProcess
.
getExitCode
());
if
(
workloadProcess
.
getExitCode
()
!=
0
){
Thread
.
currentThread
().
interrupt
();
return
;
}
...
...
@@ -176,8 +156,7 @@ public class Runner implements Runnable {
executeQueriesCommand
+=
" > "
+
properties
.
getProperty
(
WorkloadApiProperties
.
WORKLOAD_RESULTS_FOLDER
)
+
TSBS_RESULT_FOLDER
+
taskId
.
trim
()
+
".txt"
;
LOGGER
.
debug
(
loadCommand
);
WorkloadProcess
workloadProcess
=
WorkloadProcess
.
getInstance
();
workloadProcess
=
WorkloadProcess
.
getInstance
();
workloadProcess
.
startWorkload
(
TSBS_BINARY
,
UNIX_SHELL
,
UNIX_COMMAND_PARAM
,
executeQueriesCommand
,
taskId
,
workloadTimestamp
);
...
...
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