~veebers/juju-ci-tools/perf-initial-heatmap-details

« back to all changes in this revision

Viewing changes to generate_perfscale_results.py

  • Committer: Christopher Lee
  • Date: 2016-09-01 03:14:09 UTC
  • Revision ID: chris.lee@canonical.com-20160901031409-lhovmlq5bekx2hrr
log breakdown details revamp

Show diffs side-by-side

added added

removed removed

Lines of Context:
19
19
from deploy_stack import (
20
20
    BootstrapManager,
21
21
)
22
 
from logbreakdown import breakdown_log_by_timeframes
 
22
from logbreakdown import (
 
23
    _render_ds_string,
 
24
    breakdown_log_by_timeframes,
 
25
)
23
26
from utility import (
24
27
    add_basic_testing_arguments,
25
28
    configure_logging,
67
70
    bs_start = datetime.utcnow()
68
71
    # Make sure you check the responsiveness of 'juju status'
69
72
    with bs_manager.booted_context(upload_tools):
 
73
        client = bs_manager.client
 
74
        admin_client = client.get_admin_client()
 
75
        admin_client.wait_for_started()
 
76
        bs_end = datetime.utcnow()
70
77
        try:
71
 
            client = bs_manager.client
72
78
            # Work around mysql charm wanting 80% memory.
73
79
            if client.env.get_cloud() == 'lxd':
74
80
                constraint_cmd = [
80
86
                    '2GB'
81
87
                ]
82
88
                subprocess.check_output(constraint_cmd)
83
 
            admin_client = client.get_admin_client()
84
 
            admin_client.wait_for_started()
85
 
            bs_end = datetime.utcnow()
86
89
            bootstrap_timing = TimingData(bs_start, bs_end)
87
90
 
88
91
            setup_system_monitoring(admin_client)
147
150
 
148
151
 
149
152
def get_log_message_in_timed_chunks(log_file, deployments):
150
 
    # get timeframesfor the different actions.
151
 
    # Hmm, these are actually stored as datetime objects, no need for the
152
 
    # string conversions etc.
153
 
    bootstrap_timings = (
154
 
        deployments['bootstrap'].start, deployments['bootstrap'].end)
155
 
 
156
 
    cleanup_timings = (
157
 
        deployments['cleanup'].start, deployments['cleanup'].end)
158
 
 
159
 
    deploy_timings = [
160
 
        (d.timings.start, d.timings.end)
161
 
        for d in deployments['deploys']]
162
 
 
163
 
    def _render_ds_string(start, end):
164
 
        return '{} - {}'.format(start, end)
165
 
 
166
 
    bs_name = _render_ds_string(
167
 
        deployments['bootstrap'].start,
168
 
        deployments['bootstrap'].end)
169
 
 
170
 
    cleanup_name = _render_ds_string(
171
 
        deployments['cleanup'].start,
172
 
        deployments['cleanup'].end)
 
153
    """Breakdown log into timechunks based on event timeranges in 'deployments'
 
154
 
 
155
    """
 
156
    deploy_timings = [d.timings for d in deployments['deploys']]
 
157
 
 
158
    bootstrap = deployments['bootstrap']
 
159
    cleanup = deployments['cleanup']
 
160
    all_event_timings = [bootstrap] + deploy_timings + [cleanup]
 
161
 
 
162
    raw_details = breakdown_log_by_timeframes(log_file, all_event_timings)
 
163
 
 
164
    bs_name = _render_ds_string(bootstrap.start, bootstrap.end)
 
165
    cleanup_name = _render_ds_string(cleanup.start, cleanup.end)
173
166
 
174
167
    name_lookup = {
175
168
        bs_name: 'Bootstrap',
180
173
            dep.timings.start, dep.timings.end)
181
174
        name_lookup[name_range] = dep.name
182
175
 
183
 
    all_timings = [bootstrap_timings] + deploy_timings + [cleanup_timings]
184
 
 
185
 
    raw_details = breakdown_log_by_timeframes(log_file, all_timings)
186
 
 
187
176
    event_details = defaultdict(defaultdict)
188
177
    # Outer-layer (i.e. event)
189
178
    for event_range in raw_details.keys():