| Index: master/skia_master_scripts/graphite_status_push.py
|
| diff --git a/master/skia_master_scripts/graphite_status_push.py b/master/skia_master_scripts/graphite_status_push.py
|
| deleted file mode 100644
|
| index fb79eb20bbfbb65489edf3d6f0a77a35eb69305a..0000000000000000000000000000000000000000
|
| --- a/master/skia_master_scripts/graphite_status_push.py
|
| +++ /dev/null
|
| @@ -1,99 +0,0 @@
|
| -# Copyright (c) 2014 The Chromium Authors. All rights reserved.
|
| -# Use of this source code is governed by a BSD-style license that can be
|
| -# found in the LICENSE file.
|
| -
|
| -import pickle
|
| -import socket
|
| -import struct
|
| -
|
| -from buildbot.status.status_push import StatusPush
|
| -from buildbot.status import results
|
| -
|
| -
|
| -_DEFAULT_PORT = 2004 # Default port of pickled messages to Graphite
|
| -_SERVER_ADDRESS = 'skia-monitoring-b:%s' % _DEFAULT_PORT
|
| -
|
| -
|
| -def _sanitizeGraphiteNames(string):
|
| - return string.replace('.', '_').replace(' ', '_')
|
| -
|
| -
|
| -class GraphiteStatusPush(StatusPush):
|
| - """Uploads data to Graphite. Documentation for Graphite at
|
| - http://graphite.readthedocs.org/en/latest/feeding-carbon.html """
|
| -
|
| - def __init__(self, serverAddr=_SERVER_ADDRESS):
|
| - self.currentBuilds = {}
|
| - self.serverAddress = serverAddr
|
| - StatusPush.__init__(self, GraphiteStatusPush.pushGraphite)
|
| -
|
| - def pushGraphite(self):
|
| - """Callback that StatusPush calls when something happens on the slaves."""
|
| - events = self.queue.popChunk()
|
| - valid_events = []
|
| -
|
| - def findInList(property_name, property_list):
|
| - """Extracts a property from the status data. The data is arranged as
|
| - triplets of information: internal name, data, external name."""
|
| - for lst in property_list:
|
| - if property_name == lst[0] or property_name == lst[2]:
|
| - return lst[1]
|
| -
|
| - # Record only stepFinished events
|
| - for event in events:
|
| - if event['event'] == 'stepFinished':
|
| - builder_name = findInList('buildername', event['payload']['properties'])
|
| - master_name = findInList('master', event['payload']['properties'])
|
| - key = '.'.join([
|
| - 'buildbot',
|
| - _sanitizeGraphiteNames(master_name),
|
| - _sanitizeGraphiteNames(builder_name),
|
| - _sanitizeGraphiteNames(event['payload']['step']['name'])
|
| - ])
|
| -
|
| - # Step duration.
|
| - start = event['payload']['step']['times'][0]
|
| - end = event['payload']['step']['times'][1]
|
| - # The output is also a triplet, (name, (timestamp, value))
|
| - valid_events.append(
|
| - ('.'.join([key, 'duration']),
|
| - (end, end - start)))
|
| -
|
| - # Step result.
|
| - result = event['payload']['step'].get('results', [0])[0]
|
| - failure = 0
|
| - success = 0
|
| - if result != results.SKIPPED:
|
| - if result in (results.SUCCESS, results.WARNINGS):
|
| - success = 1
|
| - else:
|
| - failure = 1
|
| - valid_events.append(('.'.join((key, 'result')), (end, result)))
|
| - valid_events.append(('.'.join((key, 'success')), (end, success)))
|
| - valid_events.append(('.'.join((key, 'failure')), (end, failure)))
|
| -
|
| - if len(valid_events) <= 0:
|
| - print 'GraphiteStatusPush: No valid events to send'
|
| - return self.queueNextServerPush()
|
| - else:
|
| - print 'GraphiteStatusPush: %d events to send' % len(valid_events)
|
| -
|
| - # Send the events across a socket to the Graphite server
|
| - try:
|
| - sock = socket.socket()
|
| - ip_address = self.serverAddress.split(':')[0]
|
| - port_num = _DEFAULT_PORT
|
| - if len(self.serverAddress.split(':')) > 1:
|
| - port_num = int(self.serverAddress.split(':')[1])
|
| - sock.connect((ip_address, port_num))
|
| - for start in range(0, len(valid_events), 100):
|
| - message = pickle.dumps(valid_events[start:start+100])
|
| - header = struct.pack('!L', len(message))
|
| - sock.sendall(header + message)
|
| - except Exception:
|
| - print 'GraphiteStatusPush: unable to connect to server'
|
| - self.queue.insertBackChunk(events)
|
| -
|
| - return self.queueNextServerPush()
|
| -
|
| -
|
|
|