Skip to content

Conversation

@rflorenc
Copy link
Contributor

This adds support for executing blazemeter taurus (bzt) performance tests.

The main dependency is bzt, which can be installed using the pip package management system for python.

http://gettaurus.org/docs/Installation/#CentOS

@jeremyeder
Copy link
Contributor

Thanks Ricardo, here are my notes from looking it over:

  • Can you commit a README file with documentation, including some of the more complex options?
  • There's no --help option?
  • RHEL ships PyYAML-3.10-11. I hope that will suffice?
  • Usage of pip for bzt...this would be the first time we're using pip in pbench. For the rest of the benchmarks, we've created RPMs. I think we should be consistent about that.
  • Looking at http://gettaurus.org/docs/Installation/ I see we will need a few other packages pulled in as well (wait, are these dependencies for building bzt via pip? Anyway I think right now pbench_benchmark scripts automatically install any dependencies via yum/rpm. This script should do the same.

@portante
Copy link
Member

@rflorenc, thanks this is a great start. We can work through the pip -> rpm dependencies.

@atheurer
Copy link
Contributor

Really glad to see a new benchmark script here. I think this is a good time to create a checklist for benchmarks. We can maintain this list in the top of the benchmark script, so users know what common pbench features are present in that script. For example:

[y/n] package dependency/installation management
[y/n] tools start/stop/post-processing calls
[y/n] multiple benchmark iterations
[y/n] multiple test samples per benchmark iteration (to compute average and stddev)
[y/n] unittest
[y/n] iteration result metrics in indexable json format (no benchmarks have this yet)

others?

Good examples of the first 5 features are in pbench_uperf

The travis build environment (ubuntu precise) supports python3.2
only. Recent pip apparently has *stopped* supporting python3.2.
We had to go through hoops to make the previous environment work,
but that is now broken. So we go through a different set of hoops
that make the build work, but there now seem to be unit test failures
that were not there before: they are under investigation.
@rflorenc
Copy link
Contributor Author

Thank you all for the feedback!

@jeremyeder ,

  • Sure, I'll commit the README file soon.
  • The help option is already included. Run it with -h or --help.
  • Yes, that version of PyYAML is OK.
  • Yes, those are the base dependencies required to install bzt through pip.

ndokos and others added 3 commits January 28, 2016 11:23
The indexing tests are failing in the new travis-ci
environment: the pretty-printing is done slightly differently
locally, causing spurious failures. I'll revisit them after the
0.36 pbench-agent release (which does not depend on these tests
at all).
Added a description in the beginning of the file similar to the one found in the other bench tools.
@rflorenc
Copy link
Contributor Author

I totally agree that we should be consistent with the way the rest of the bench scripts are solving their dependencies through rpm, but in this case since it's a python wrapper for an external tool (also python) you would potentially avoid problems in the future.

This is where bzt takes its dependencies from:
[https://github.com/Blazemeter/taurus/blob/master/setup.py#L66]

Pip takes care of updating/upgrading the app as needed from the python package index.

ndokos and others added 12 commits February 2, 2016 13:01
It only output the first one, but it is called with "$@",
which expands to multiple arguments.

Opportunistically, delete duplicate run of util-scripts unittests
from .travis.yml.
Make debug_log deal with all its arguments.
Try first without a protocol argument, but if that fails,
try with OpenFlow13.
…orts

Jeremyeder fix openvswitch dump ports
This convention was used in the util scripts renaming,
and will be the established convention henceforth.
Clarified message logged for ssh connection error
Rename benchmark scripts from pbench_foo to pbench-foo.
All the util scripts now have a prefix of pbench-.

Move non-pbench scripts to contrib/ subdirectory.

contrib/ is not added to the PATH so there will be no
collision. If users want to use one or more of these,
they will need to call them by full pathname or add
contrib/ to their PATH.

Add a backward-compatibility wrapper temporarily.

We maintain compatibility with the old util-scripts names
*for one release only*. The old names will be symlinked to
this wrapper in a postinstall action when the RPM is installed.
The wrapper does some minimal checking, issues a big fat warning
and then executes the script under its new name.
Rename util scripts to avoid collisions.
…scenario files.

Added initial platform detection code.
@rflorenc
Copy link
Contributor Author

rflorenc commented Feb 8, 2016

@jeremyeder , @portante
PyYAML module is no longer a dependency, since bzt accepts json scenario files as input.
Added some initial code to facilitate rpm installs based on the linux distro.

@jeremyeder
Copy link
Contributor

@rflorenc ok -- I read the readme. The content is good, I just wonder if it's obvious enough being inside the pbench_bzt file. Maybe we need man pages, or to put README_pbench_bzt.md in the higher-level "doc" folder in pbench? I think there is markdown2man converter somewhere that could make this very easy.

Anyway...

@atheurer has laid out a list of requirements, where does pbench_bzt stand on these 6 items?
#148 (comment)

@rflorenc
Copy link
Contributor Author

rflorenc commented Feb 9, 2016

We could have several README_pbench_$tool.md under pbench/agent/bench-scripts/doc with the initial description every bench script has. And maybe later turn those into man pages.

The scripts would just contain the checklist @atheurer suggested, in the beginning.

ndokos and others added 6 commits February 10, 2016 17:44
Its functions have been taken over by pbench-clear-tools:

pbench-clear-tools --group=foo --name=bar

will delete the "bar" tool from the "foo" tool group.
With no options, it will clear all tools from all groups.
With only a --name option, it will delete the named tool from
the default group *only*.

Fix typo in pbench-bc-wrapper.
Delete obsolete pbench-unregister-tools.
@ndokos
Copy link
Member

ndokos commented Feb 16, 2016

Can you rebase on latest master and rename it to pbench-bzt?

@rflorenc
Copy link
Contributor Author

@ndokos , done.

@ndokos
Copy link
Member

ndokos commented Feb 18, 2016

Thanks!

@ndokos
Copy link
Member

ndokos commented Feb 25, 2016

I think the plan for moving ahead with this is:

  • Create a bench-scripts/config subdir and move pbench-bzt into it (the contrib directory is not in PATH).
  • To use it currently, invoke it by its full pathname under pbench-user-benchmark:
pbench-user-benchmark <opts> -- /opt/pbench-agent/bench-scripts/contrib/pbench-bzt ...
  • When pbench-bzt becomes a full benchscript (start/stop/postprocess etc), then it can be moved back into pbench-scripts.
  • At that time, it will need unit tests.

Agreed?

@rflorenc
Copy link
Contributor Author

Yes, thanks. Meanwhile I'll look further into the missing bits.

@ndokos
Copy link
Member

ndokos commented Mar 21, 2016

I cleaned up the history and moved the script to bench-scripts/contrib. I did that in PR #207 since I wanted to get this in v0.37. Apologies if I'm out of order. Please check #207 to make sure that everything is as it should be. Thanks! Closing this.

@ndokos ndokos closed this Mar 21, 2016
@portante portante self-assigned this May 9, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants