Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
Y
YCSB
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
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