Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
Y
YCSB
Manage
Activity
Members
Labels
Plan
Issues
0
Issue boards
Milestones
Wiki
Code
Merge requests
0
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Adnan Ahmad
YCSB
Commits
0ea06378
Commit
0ea06378
authored
8 years ago
by
Kevin Risden
Browse files
Options
Downloads
Patches
Plain Diff
[scripts] Fix bin/ycsb for Python 2.6 and bin/ycsb check_output
parent
0f674fc7
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
bin/ycsb
+38
-7
38 additions, 7 deletions
bin/ycsb
with
38 additions
and
7 deletions
bin/ycsb
+
38
−
7
View file @
0ea06378
...
...
@@ -23,11 +23,13 @@ import os
import
shlex
import
sys
import
subprocess
try
:
mod
=
__import__
(
'
argparse
'
)
import
argparse
except
ImportError
:
print
>>
sys
.
stderr
,
'
[ERROR] argparse not found. Try installing it via
"
pip
"
.
'
raise
exit
(
1
)
BASE_URL
=
"
https://github.com/brianfrankcooper/YCSB/tree/master/
"
COMMANDS
=
{
...
...
@@ -120,12 +122,41 @@ def usage():
return
output
.
getvalue
()
def
check_output
(
cmd
):
p
=
subprocess
.
Popen
(
cmd
,
stdout
=
subprocess
.
PIPE
)
stdout
,
_
=
p
.
communicate
()
if
p
.
returncode
:
raise
subprocess
.
CalledProcessError
(
p
.
returncode
,
cmd
)
return
stdout
# Python 2.6 doesn't have check_output. Add the method as it is in Python 2.7
# Based on https://github.com/python/cpython/blob/2.7/Lib/subprocess.py#L545
def
check_output
(
*
popenargs
,
**
kwargs
):
r
"""
Run command with arguments and return its output as a byte string.
If the exit code was non-zero it raises a CalledProcessError. The
CalledProcessError object will have the return code in the returncode
attribute and output in the output attribute.
The arguments are the same as for the Popen constructor. Example:
>>>
check_output
([
"
ls
"
,
"
-l
"
,
"
/dev/null
"
])
'
crw-rw-rw- 1 root root 1, 3 Oct 18 2007 /dev/null
\n
'
The stdout argument is not allowed as it is used internally.
To capture standard error in the result, use stderr=STDOUT.
>>>
check_output
([
"
/bin/sh
"
,
"
-c
"
,
...
"
ls -l non_existent_file ; exit 0
"
],
...
stderr
=
STDOUT
)
'
ls: non_existent_file: No such file or directory
\n
'
"""
if
'
stdout
'
in
kwargs
:
raise
ValueError
(
'
stdout argument not allowed, it will be overridden.
'
)
process
=
subprocess
.
Popen
(
stdout
=
subprocess
.
PIPE
,
*
popenargs
,
**
kwargs
)
output
,
unused_err
=
process
.
communicate
()
retcode
=
process
.
poll
()
if
retcode
:
cmd
=
kwargs
.
get
(
"
args
"
)
if
cmd
is
None
:
cmd
=
popenargs
[
0
]
error
=
subprocess
.
CalledProcessError
(
retcode
,
cmd
)
error
.
output
=
output
raise
error
return
output
def
debug
(
message
):
print
>>
sys
.
stderr
,
"
[DEBUG]
"
,
message
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment