-
Notifications
You must be signed in to change notification settings - Fork 510
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add event support #315
Add event support #315
Conversation
* Add a dependency on 'blinker' to provide signal support. * Add 'perfkitbenchmarker.events' module, which defines a set of events for subscription. * Switch dstat collector to use {before,after}_phase events to start/stop dstat.
@klausw: do you have time to look this over? |
sample_created = _events.signal('sample-created', doc=""" | ||
Called with sample object and benchmark spec. | ||
|
||
Signal sent immediately after a sample is created by a publisher. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Clarify if the sample is mutable or not? Is it ok to add metadata and expect it'll be stored?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It is mutable; now noted.
LGTM overall, the event system looks like a nice abstraction. What's the semantics for failing hooks? For example, if a subscriber throws an exception in a before-phase hook, does that get propagated or ignored? |
Errors in subscribers are propagated. I'll note this in |
LGTM |
Release 0.18.0. (See also #369 which includes this change log with clickable GH-* links.) * New features: * Support OpenStack as cloud provider (GH-305, GH-353, thanks @kivio and @mateusz-blaszkowski) * Support Rackspace as cloud provider (GH-336, thanks @meteorfox and @jrperritt) * Add support for ContainerizedVM using docker exec (GH-333, thanks @gablg1) * Windows guest VM support on Static VM (GH-350), Azure (GH-349, GH-374), AWS (GH-347), and GCE (GH-338) * Add NTttcp Windows networking benchmark (GH-348) * Enhancements: * Support using proxies in VMs (GH-339, GH-337, thanks @kivio) * Enable optional migration on GCE (GH-343) * Execute long running commands via a remote agent (GH-310) * Add resource creation/deletion times to logs (GH-316) * Bugfixes and maintenance updates: * Update PKB to work with Azure version 0.9.3 (GH-312) * Fix AWS CLI usage on Windows host (GH-313) * Auto-fetch AMI IDs for AWS images (GH-364) * Fix publisher missing info for default image and machine type (GH-357) * Fix 'no attribute pkb_thread_log_context' error for sub-thread logs (GH-322) * Benchmark-specific changes: * aerospike: config/flag handling bugfixes (GH-367, GH-360, GH-354) * cassandra_ycsb: move num_vms prerequisite check * fio: add latency percentiles for results (GH-344) * hadoop_terasort: Fix bad SSH option (GH-328) * iperf: add lower bounds to arguments (GH-314) * iperf: add timeout to parallel benchmark runs to handle iperf hangs (GH-375) * netperf: Support confidence intervals, increase test length, report stddev (GH-317, GH-306) * ycsb: Drop unaggregatable results from samples (GH-324) * Development and testing: * **Breaking Change** Automated testing now uses `tox` (GH-330) * Refactored hook scripts, including new opt-in pre-push hook (GH-363) * Use travis for CI testing (GH-340) * Speed up tests using timeouts (GH-299) * Internals: * Move defaults from benchmark_spec to VM classes, move network instantiation out of benchmark spec (GH-342) * Add event hook support (GH-315) * Refactor VM classes (GH-321)
blinker
to provide signal support.perfkitbenchmarker.events
module, which defines a set of eventsfor subscription.
dstat
collector to use{before,after}_phase
events tostart/stop dstat.
See #205.