| Index: third_party/buildbot_7_12/buildbot/test/test_status_push.py
|
| diff --git a/third_party/buildbot_7_12/buildbot/test/test_status_push.py b/third_party/buildbot_7_12/buildbot/test/test_status_push.py
|
| deleted file mode 100644
|
| index de6b01025e0a83daee04a5001e9783fabf71302c..0000000000000000000000000000000000000000
|
| --- a/third_party/buildbot_7_12/buildbot/test/test_status_push.py
|
| +++ /dev/null
|
| @@ -1,866 +0,0 @@
|
| -# -*- test-case-name: buildbot.test.test_status_push -*-
|
| -
|
| -import re
|
| -import os
|
| -
|
| -try:
|
| - import simplejson as json
|
| -except ImportError:
|
| - import json
|
| -
|
| -from twisted.internet import defer, reactor
|
| -from twisted.python import log
|
| -from twisted.trial import unittest
|
| -from twisted.web import server, resource
|
| -from twisted.web.error import Error
|
| -from zope.interface import implements, Interface
|
| -
|
| -from buildbot import master
|
| -from buildbot.changes import changes
|
| -from buildbot.slave import bot
|
| -from buildbot.status import status_push
|
| -from buildbot.status.persistent_queue import IQueue, ReadFile
|
| -from buildbot.test.runutils import RunMixin
|
| -from buildbot.test.status_push_server import EventsHandler
|
| -
|
| -
|
| -config_base = """
|
| -from buildbot.process import factory
|
| -from buildbot.buildslave import BuildSlave
|
| -from buildbot.config import BuilderConfig
|
| -from buildbot.scheduler import Scheduler
|
| -from buildbot.status.persistent_queue import IQueue
|
| -from buildbot.status.status_push import StatusPush, HttpStatusPush
|
| -from buildbot.steps import dummy
|
| -
|
| -BuildmasterConfig = c = {}
|
| -
|
| -c['slaves'] = [BuildSlave('bot1', 'sekrit')]
|
| -c['schedulers'] = [Scheduler('dummy', None, 120, ['dummy'])]
|
| -
|
| -f1 = factory.QuickBuildFactory('fakerep', 'cvsmodule', configure=None)
|
| -c['builders'] = [
|
| - BuilderConfig(name='dummy', slavename='bot1', factory=f1,
|
| - builddir='quickdir', slavebuilddir='slavequickdir'),
|
| -]
|
| -c['slavePortnum'] = 0
|
| -c['projectUrl'] = 'example.com/yay'
|
| -c['projectName'] = 'Pouet'
|
| -c['buildbotURL'] = 'build.example.com/yo'
|
| -
|
| -def doNothing(self):
|
| - # Creates self.fake_queue to store the object.
|
| - assert IQueue.providedBy(self.queue)
|
| - if not hasattr(self, 'fake_queue'):
|
| - self.fake_queue = []
|
| - items = self.queue.popChunk()
|
| - self.fake_queue.extend(items)
|
| - self.queueNextServerPush()
|
| -"""
|
| -
|
| -config_no_http = (config_base + """
|
| -c['status'] = [StatusPush(serverPushCb=doNothing)]
|
| -""")
|
| -
|
| -config_http = (config_base + """
|
| -c['status'] = [HttpStatusPush('http://127.0.0.1:<PORT>/receiver')]
|
| -""")
|
| -
|
| -config_no_http_no_filter = (config_base + """
|
| -c['status'] = [StatusPush(serverPushCb=doNothing, filter=False)]
|
| -""")
|
| -
|
| -config_http_no_filter = (config_base + """
|
| -c['status'] = [HttpStatusPush('http://127.0.0.1:<PORT>/receiver', filter=False)]
|
| -""")
|
| -
|
| -EXPECTED = [
|
| - {
|
| - 'event': 'builderAdded',
|
| - 'payload': {
|
| - 'builder': {
|
| - "category": None,
|
| - "cachedBuilds": [],
|
| - "basedir": "quickdir",
|
| - "pendingBuilds": [],
|
| - "state": "offline",
|
| - "slaves": ["bot1"],
|
| - "currentBuilds": []
|
| - },
|
| - 'builderName': 'dummy',
|
| - }
|
| - },
|
| - {
|
| - "event": "builderChangedState",
|
| - "payload": {
|
| - 'state': 'offline',
|
| - 'builderName': 'dummy'
|
| - }
|
| - },
|
| - {
|
| - "event": "start",
|
| - "payload": {
|
| - 'status': {
|
| - "buildbotURL": 'build.example.com/yo',
|
| - "projectName": 'Pouet',
|
| - 'projectURL': None,
|
| - }
|
| - }
|
| - },
|
| - {
|
| - 'event': 'slaveConnected',
|
| - 'payload': {
|
| - 'slave': {
|
| - 'access_uri': None,
|
| - 'admin': 'one',
|
| - 'connected': True,
|
| - 'host': None,
|
| - 'name': 'bot1',
|
| - 'runningBuilds': [],
|
| - 'version': '0.7.12'
|
| - }
|
| - }
|
| - },
|
| - {
|
| - 'event': 'builderChangedState',
|
| - 'payload': {
|
| - 'state': 'idle',
|
| - 'builderName': 'dummy'
|
| - },
|
| - },
|
| - {
|
| - "event": "changeAdded",
|
| - "payload": {
|
| - 'change': {
|
| - "category": None,
|
| - "files": ["Makefile", "foo/bar.c"],
|
| - "who": "bob",
|
| - "when": "n0w",
|
| - "number": 1,
|
| - "comments": "changed stuff",
|
| - "branch": None,
|
| - "revlink": "",
|
| - "properties": [],
|
| - "revision": None
|
| - }
|
| - }
|
| - },
|
| - {
|
| - 'event': 'requestSubmitted',
|
| - 'payload': {
|
| - 'request': {
|
| - 'builderName': 'test_builder',
|
| - 'builds': [],
|
| - 'source': {
|
| - 'branch': None,
|
| - 'changes': [],
|
| - 'hasPatch': False,
|
| - 'revision': None
|
| - },
|
| - 'submittedAt': 'yesterday',
|
| - }
|
| - }
|
| - },
|
| - {
|
| - 'event': 'builderChangedState',
|
| - 'payload': {
|
| - 'state': 'building',
|
| - 'builderName': 'dummy'
|
| - }
|
| - },
|
| - {
|
| - 'event': 'buildStarted',
|
| - 'payload': {
|
| - 'build': {
|
| - 'blame': [],
|
| - 'builderName': 'dummy',
|
| - 'changes': [],
|
| - 'currentStep': None,
|
| - 'eta': None,
|
| - 'number': 0,
|
| - 'properties': [
|
| - ['branch', None, 'Build'],
|
| - ['buildername', 'dummy', 'Build'],
|
| - ['buildnumber', 0, 'Build'],
|
| - ['revision', None, 'Build'],
|
| - ['slavename', 'bot1', 'BuildSlave']
|
| - ],
|
| - 'reason': 'forced build',
|
| - 'requests': [
|
| - {
|
| - 'builderName': 'test_builder',
|
| - 'builds': [],
|
| - 'source': {
|
| - 'branch': None,
|
| - 'changes': [],
|
| - 'hasPatch': False,
|
| - 'revision': None
|
| - },
|
| - 'submittedAt': 'yesterday'
|
| - }
|
| - ],
|
| - 'results': None,
|
| - 'slave': 'bot1',
|
| - 'sourceStamp': {
|
| - 'branch': None,
|
| - 'hasPatch': False,
|
| - 'changes': [],
|
| - 'revision': None
|
| - },
|
| - 'steps': [
|
| - {
|
| - 'eta': None,
|
| - 'expectations': [],
|
| - 'isFinished': False,
|
| - 'isStarted': False,
|
| - 'name': 'cvs',
|
| - 'results': [[None, []], []],
|
| - 'statistics': {},
|
| - 'text': ['updating'],
|
| - 'times': [None, None],
|
| - 'urls': {}
|
| - },
|
| - {
|
| - 'eta': None,
|
| - 'expectations': [],
|
| - 'isFinished': False,
|
| - 'isStarted': False,
|
| - 'name': 'compile',
|
| - 'results': [[None, []], []],
|
| - 'statistics': {},
|
| - 'text': ['compiling'],
|
| - 'times': [None, None],
|
| - 'urls': {}
|
| - },
|
| - {
|
| - 'eta': None,
|
| - 'expectations': [],
|
| - 'isFinished': False,
|
| - 'isStarted': False,
|
| - 'name': 'test',
|
| - 'results': [[None, []], []],
|
| - 'statistics': {},
|
| - 'text': ['testing'],
|
| - 'times': [None, None],
|
| - 'urls': {}
|
| - }
|
| - ],
|
| - 'text': [],
|
| - 'times': [123, None]
|
| - }
|
| - }
|
| - },
|
| - {
|
| - 'event': 'stepStarted',
|
| - 'payload': {
|
| - 'step': {
|
| - 'eta': None,
|
| - 'expectations': [],
|
| - 'isFinished': False,
|
| - 'isStarted': True,
|
| - 'name': 'cvs',
|
| - 'results': [[None, []], []],
|
| - 'statistics': {},
|
| - 'text': ['updating'],
|
| - 'times': [123, None],
|
| - 'urls': {}
|
| - },
|
| - 'properties': [
|
| - ['branch', None, 'Build'],
|
| - ['buildername', 'dummy', 'Build'],
|
| - ['buildnumber', 0, 'Build'],
|
| - ['revision', None, 'Build'],
|
| - ['slavename', 'bot1', 'BuildSlave']
|
| - ],
|
| - }
|
| - },
|
| - {
|
| - 'event': 'stepFinished',
|
| - 'payload': {
|
| - 'step': {
|
| - 'eta': None,
|
| - 'expectations': [],
|
| - 'isFinished': True,
|
| - 'isStarted': True,
|
| - 'name': 'cvs',
|
| - 'results': [2, ['cvs']],
|
| - 'statistics': {},
|
| - 'text': ['update', 'failed'],
|
| - 'times': [123, None],
|
| - 'urls': {}
|
| - },
|
| - 'properties': [
|
| - ['branch', None, 'Build'],
|
| - ['buildername', 'dummy', 'Build'],
|
| - ['buildnumber', 0, 'Build'],
|
| - ['revision', None, 'Build'],
|
| - ['slavename', 'bot1', 'BuildSlave']
|
| - ],
|
| - }
|
| - },
|
| - {
|
| - 'event': 'buildFinished',
|
| - 'payload': {
|
| - 'build': {
|
| - 'blame': [],
|
| - 'builderName': 'dummy',
|
| - 'changes': [],
|
| - 'currentStep': None,
|
| - 'eta': None,
|
| - 'number': 0,
|
| - 'properties': [
|
| - ['branch', None, 'Build'],
|
| - ['buildername', 'dummy', 'Build'],
|
| - ['buildnumber', 0, 'Build'],
|
| - ['revision', None, 'Build'],
|
| - ['slavename', 'bot1', 'BuildSlave']
|
| - ],
|
| - 'reason': 'forced build',
|
| - 'requests': [
|
| - {
|
| - 'builderName': 'test_builder',
|
| - 'builds': [0],
|
| - 'source': {
|
| - 'branch': None,
|
| - 'hasPatch': False,
|
| - 'changes': [],
|
| - 'revision': None},
|
| - 'submittedAt': 'yesterday'
|
| - }
|
| - ],
|
| - 'results': 2,
|
| - 'slave': 'bot1',
|
| - 'sourceStamp': {
|
| - 'branch': None,
|
| - 'changes': [],
|
| - 'hasPatch': False,
|
| - 'revision': None
|
| - },
|
| - 'steps': [
|
| - {
|
| - 'eta': None,
|
| - 'expectations': [],
|
| - 'isFinished': True,
|
| - 'isStarted': True,
|
| - 'name': 'cvs',
|
| - 'results': [2, ['cvs']],
|
| - 'statistics': {},
|
| - 'text': ['update', 'failed'],
|
| - 'times': [345, None],
|
| - 'urls': {}
|
| - },
|
| - {
|
| - 'eta': None,
|
| - 'expectations': [],
|
| - 'isFinished': False,
|
| - 'isStarted': False,
|
| - 'name': 'compile',
|
| - 'results': [[None, []], []],
|
| - 'statistics': {},
|
| - 'text': ['compiling'],
|
| - 'times': [345, None],
|
| - 'urls': {}
|
| - },
|
| - {
|
| - 'eta': None,
|
| - 'expectations': [],
|
| - 'isFinished': False,
|
| - 'isStarted': False,
|
| - 'name': 'test',
|
| - 'results': [[None, []], []],
|
| - 'statistics': {},
|
| - 'text': ['testing'],
|
| - 'times': [345, None],
|
| - 'urls': {}
|
| - }
|
| - ],
|
| - 'text': ['failed', 'cvs'],
|
| - 'times': [123, None]
|
| - },
|
| - }
|
| - },
|
| - {
|
| - 'event': 'builderChangedState',
|
| - 'payload': {
|
| - 'state': 'idle',
|
| - 'builderName': 'dummy'
|
| - }
|
| - },
|
| - {
|
| - 'event': 'slaveDisconnected',
|
| - 'payload': {
|
| - 'slavename': 'bot1'
|
| - }
|
| - },
|
| - {
|
| - 'event': 'builderChangedState',
|
| - 'payload': {
|
| - 'state': 'offline',
|
| - 'builderName': 'dummy',
|
| - }
|
| - },
|
| - {
|
| - "event": "shutdown",
|
| - "payload": {
|
| - 'status': {
|
| - "buildbotURL": 'build.example.com/yo',
|
| - "projectName": 'Pouet',
|
| - 'projectURL': None,
|
| - }
|
| - }
|
| - },
|
| -]
|
| -
|
| -EXPECTED_SHORT = [
|
| - {
|
| - 'event': 'builderAdded',
|
| - 'payload': {
|
| - 'builder': {
|
| - "basedir": "quickdir",
|
| - "state": "offline",
|
| - "slaves": ["bot1"],
|
| - },
|
| - 'builderName': 'dummy',
|
| - }
|
| - },
|
| - {
|
| - "event": "builderChangedState",
|
| - "payload": {
|
| - 'state': 'offline',
|
| - 'builderName': 'dummy'
|
| - }
|
| - },
|
| - {
|
| - "event": "start",
|
| - "payload": {
|
| - 'status': {
|
| - "buildbotURL": 'build.example.com/yo',
|
| - "projectName": 'Pouet',
|
| - }
|
| - }
|
| - },
|
| - {
|
| - 'event': 'slaveConnected',
|
| - 'payload': {
|
| - 'slave': {
|
| - 'admin': 'one',
|
| - 'connected': True,
|
| - 'name': 'bot1',
|
| - 'version': '0.7.12'
|
| - }
|
| - }
|
| - },
|
| - {
|
| - 'event': 'builderChangedState',
|
| - 'payload': {
|
| - 'state': 'idle',
|
| - 'builderName': 'dummy'
|
| - },
|
| - },
|
| - {
|
| - "event": "changeAdded",
|
| - "payload": {
|
| - 'change': {
|
| - "files": ["Makefile", "foo/bar.c"],
|
| - "who": "bob",
|
| - "when": "n0w",
|
| - "number": 1,
|
| - "comments": "changed stuff",
|
| - }
|
| - }
|
| - },
|
| - {
|
| - 'event': 'requestSubmitted',
|
| - 'payload': {
|
| - 'request': {
|
| - 'builderName': 'test_builder',
|
| - 'submittedAt': 'yesterday',
|
| - }
|
| - }
|
| - },
|
| - {
|
| - 'event': 'builderChangedState',
|
| - 'payload': {
|
| - 'state': 'building',
|
| - 'builderName': 'dummy'
|
| - }
|
| - },
|
| - {
|
| - 'event': 'buildStarted',
|
| - 'payload': {
|
| - 'build': {
|
| - 'builderName': 'dummy',
|
| - 'properties': [
|
| - ['branch', None, 'Build'],
|
| - ['buildername', 'dummy', 'Build'],
|
| - ['buildnumber', 0, 'Build'],
|
| - ['revision', None, 'Build'],
|
| - ['slavename', 'bot1', 'BuildSlave']
|
| - ],
|
| - 'reason': 'forced build',
|
| - 'requests': [
|
| - {
|
| - 'builderName': 'test_builder',
|
| - 'submittedAt': 'yesterday'
|
| - }
|
| - ],
|
| - 'slave': 'bot1',
|
| - 'steps': [
|
| - {
|
| - 'name': 'cvs',
|
| - 'text': ['updating'],
|
| - },
|
| - {
|
| - 'name': 'compile',
|
| - 'text': ['compiling'],
|
| - },
|
| - {
|
| - 'name': 'test',
|
| - 'text': ['testing'],
|
| - }
|
| - ],
|
| - 'times': [123, None]
|
| - }
|
| - }
|
| - },
|
| - {
|
| - 'event': 'stepStarted',
|
| - 'payload': {
|
| - 'step': {
|
| - 'isStarted': True,
|
| - 'name': 'cvs',
|
| - 'text': ['updating'],
|
| - 'times': [123, None],
|
| - },
|
| - 'properties': [
|
| - ['branch', None, 'Build'],
|
| - ['buildername', 'dummy', 'Build'],
|
| - ['buildnumber', 0, 'Build'],
|
| - ['revision', None, 'Build'],
|
| - ['slavename', 'bot1', 'BuildSlave']
|
| - ],
|
| - }
|
| - },
|
| - {
|
| - 'event': 'stepFinished',
|
| - 'payload': {
|
| - 'step': {
|
| - 'isFinished': True,
|
| - 'isStarted': True,
|
| - 'name': 'cvs',
|
| - 'results': [2, ['cvs']],
|
| - 'text': ['update', 'failed'],
|
| - 'times': [123, None],
|
| - },
|
| - 'properties': [
|
| - ['branch', None, 'Build'],
|
| - ['buildername', 'dummy', 'Build'],
|
| - ['buildnumber', 0, 'Build'],
|
| - ['revision', None, 'Build'],
|
| - ['slavename', 'bot1', 'BuildSlave']
|
| - ],
|
| - }
|
| - },
|
| - {
|
| - 'event': 'buildFinished',
|
| - 'payload': {
|
| - 'build': {
|
| - 'builderName': 'dummy',
|
| - 'properties': [
|
| - ['branch', None, 'Build'],
|
| - ['buildername', 'dummy', 'Build'],
|
| - ['buildnumber', 0, 'Build'],
|
| - ['revision', None, 'Build'],
|
| - ['slavename', 'bot1', 'BuildSlave']
|
| - ],
|
| - 'reason': 'forced build',
|
| - 'requests': [
|
| - {
|
| - 'builderName': 'test_builder',
|
| - 'submittedAt': 'yesterday'
|
| - }
|
| - ],
|
| - 'results': 2,
|
| - 'slave': 'bot1',
|
| - 'steps': [
|
| - {
|
| - 'isFinished': True,
|
| - 'isStarted': True,
|
| - 'name': 'cvs',
|
| - 'results': [2, ['cvs']],
|
| - 'text': ['update', 'failed'],
|
| - 'times': [345, None],
|
| - },
|
| - {
|
| - 'name': 'compile',
|
| - 'text': ['compiling'],
|
| - },
|
| - {
|
| - 'name': 'test',
|
| - 'text': ['testing'],
|
| - }
|
| - ],
|
| - 'text': ['failed', 'cvs'],
|
| - 'times': [123, None]
|
| - },
|
| - }
|
| - },
|
| - {
|
| - 'event': 'builderChangedState',
|
| - 'payload': {
|
| - 'state': 'idle',
|
| - 'builderName': 'dummy'
|
| - }
|
| - },
|
| - {
|
| - 'event': 'slaveDisconnected',
|
| - 'payload': {
|
| - 'slavename': 'bot1'
|
| - }
|
| - },
|
| - {
|
| - 'event': 'builderChangedState',
|
| - 'payload': {
|
| - 'state': 'offline',
|
| - 'builderName': 'dummy',
|
| - }
|
| - },
|
| - {
|
| - "event": "shutdown",
|
| - "payload": {
|
| - 'status': {
|
| - "buildbotURL": 'build.example.com/yo',
|
| - "projectName": 'Pouet',
|
| - }
|
| - }
|
| - },
|
| -]
|
| -
|
| -class Receiver(resource.Resource):
|
| - isLeaf = True
|
| - def __init__(self):
|
| - self.packets = []
|
| -
|
| - def render_POST(self, request):
|
| - for packet in request.args['packets']:
|
| - data = json.loads(packet)
|
| - for p in data:
|
| - self.packets.append(p)
|
| - return "ok"
|
| -
|
| -
|
| -class StatusPushTestBase(RunMixin, unittest.TestCase):
|
| - def getStatusPush(self):
|
| - for i in self.master.services:
|
| - if isinstance(i, status_push.StatusPush):
|
| - return i
|
| -
|
| - def init(self, config):
|
| - # The master.
|
| - self.master.loadConfig(config)
|
| - self.master.readConfig = True
|
| - self.assertTrue(self.getStatusPush())
|
| - self.master.startService()
|
| -
|
| - def tearDown(self):
|
| - """Similar to RunMixin.tearDown but skip over if self.master is None
|
| - since we do test stopService."""
|
| - log.msg("doing tearDown")
|
| - if self.master:
|
| - d = self.shutdownAllSlaves()
|
| - d.addCallback(self._tearDown_1)
|
| - d.addCallback(self._tearDown_2)
|
| - return d
|
| - else:
|
| - return defer.succeed(None)
|
| -
|
| - def verifyItems(self, items, expected):
|
| - def QuickFix(item, *args):
|
| - """Strips time-specific values.
|
| -
|
| - None means an array.
|
| - Anything else is a key to a dict."""
|
| - args = list(args)
|
| - value = args.pop()
|
| -
|
| - def Loop(item, value, *args):
|
| - args = list(args)
|
| - arg = args.pop(0)
|
| - if isinstance(item, list) and arg is None:
|
| - for i in item:
|
| - Loop(i, value, *args)
|
| - elif isinstance(item, dict):
|
| - if len(args) == 0 and arg in item:
|
| - item[arg] = value
|
| - elif arg in item:
|
| - Loop(item[arg], value, *args)
|
| -
|
| - Loop(item, value, *args)
|
| -
|
| - def FindItem(items, event, *args):
|
| - for i in items:
|
| - if i['event'] == event:
|
| - QuickFix(i, *args)
|
| -
|
| - # Cleanup time dependent values. It'd be nice to mock datetime instead.
|
| - for i in range(len(items)):
|
| - item = items[i]
|
| - del item['started']
|
| - del item['timestamp']
|
| - self.assertEqual('Pouet', item.pop('project'))
|
| - self.assertEqual(i + 1, item.pop('id'))
|
| -
|
| - FindItem(items, 'changeAdded', 'payload', 'change', 'when',
|
| - 'n0w')
|
| - FindItem(items, 'requestSubmitted', 'payload', 'request',
|
| - 'submittedAt', 'yesterday')
|
| -
|
| - FindItem(items, 'buildStarted', 'payload', 'build', 'requests',
|
| - None, 'submittedAt', 'yesterday')
|
| - FindItem(items, 'stepStarted', 'payload', 'build', 'requests',
|
| - None, 'submittedAt', 'yesterday')
|
| - FindItem(items, 'stepFinished', 'payload', 'build', 'requests',
|
| - None, 'submittedAt', 'yesterday')
|
| - FindItem(items, 'buildFinished', 'payload', 'build', 'requests',
|
| - None, 'submittedAt', 'yesterday')
|
| -
|
| - FindItem(items, 'buildStarted', 'payload', 'build', 'times',
|
| - [123, None])
|
| - FindItem(items, 'stepStarted', 'payload', 'build', 'times',
|
| - [123, None])
|
| - FindItem(items, 'stepStarted', 'payload', 'step', 'times',
|
| - [123, None])
|
| - FindItem(items, 'stepFinished', 'payload', 'build', 'times',
|
| - [123, None])
|
| - FindItem(items, 'stepFinished', 'payload', 'step', 'times',
|
| - [123, None])
|
| - FindItem(items, 'buildFinished', 'payload', 'build', 'times',
|
| - [123, None])
|
| -
|
| - FindItem(items, 'stepStarted', 'payload', 'build',
|
| - 'current_step', 'times', [234, None])
|
| - FindItem(items, 'stepFinished', 'payload', 'build',
|
| - 'current_step', 'times', [234, None])
|
| - FindItem(items, 'buildFinished', 'payload', 'build',
|
| - 'current_step', 'times', [234, None])
|
| -
|
| - FindItem(items, 'stepStarted', 'payload', 'build', 'steps', None,
|
| - 'times', [345, None])
|
| - FindItem(items, 'stepFinished', 'payload', 'build', 'steps',
|
| - None, 'times', [345, None])
|
| - FindItem(items, 'buildFinished', 'payload', 'build', 'steps',
|
| - None, 'times', [345, None])
|
| -
|
| - for i in range(min(len(expected), len(items))):
|
| - self.assertEqual(expected[i], items[i], str(i))
|
| - self.assertEqual(len(expected), len(items))
|
| -
|
| -
|
| -class StatusPushTest(StatusPushTestBase):
|
| - def testNotFiltered(self):
|
| - self.expected = EXPECTED
|
| - self.init(config_no_http_no_filter)
|
| - d = self.connectSlave()
|
| - d.addCallbacks(self._testPhase1)
|
| - return d
|
| -
|
| - def testFiltered(self):
|
| - self.expected = EXPECTED_SHORT
|
| - self.init(config_no_http)
|
| - d = self.connectSlave()
|
| - d.addCallbacks(self._testPhase1)
|
| - return d
|
| -
|
| - def _testPhase1(self, d):
|
| - # Now the slave is connected, trigger a change.
|
| - cm = self.master.change_svc
|
| - c = changes.Change("bob", ["Makefile", "foo/bar.c"], "changed stuff")
|
| - cm.addChange(c)
|
| - d = self.requestBuild("dummy")
|
| - d.addCallback(self._testPhase2)
|
| - return d
|
| -
|
| - def _testPhase2(self, d):
|
| - d = self.shutdownAllSlaves()
|
| - d.addCallback(lambda x: self.master.stopService())
|
| - d.addCallback(self._testPhase3)
|
| - return d
|
| -
|
| - def _testPhase3(self, d):
|
| - def TupleToList(items):
|
| - if isinstance(items, (list, tuple)):
|
| - return [TupleToList(i) for i in items]
|
| - if isinstance(items, dict):
|
| - return dict([(k, TupleToList(v))
|
| - for (k, v) in items.iteritems()])
|
| - else:
|
| - return items
|
| - self.assertEqual(0, self.getStatusPush().queue.nbItems())
|
| - # Grabs fake_queue created in DoNothing().
|
| - self.verifyItems(TupleToList(self.getStatusPush().fake_queue),
|
| - self.expected)
|
| - self.master = None
|
| -
|
| -
|
| -class HttpStatusPushTest(StatusPushTestBase):
|
| - def setUp(self):
|
| - StatusPushTestBase.setUp(self)
|
| - self.server = None
|
| -
|
| - def tearDown(self):
|
| - StatusPushTestBase.tearDown(self)
|
| - state_path = os.path.join(self.path, 'state')
|
| - state = json.loads(ReadFile(state_path))
|
| - del state['started']
|
| - self.assertEqual({"last_id_pushed": 0, "next_id": 17, }, state)
|
| - os.remove(state_path)
|
| - self.assertEqual([], os.listdir(self.path))
|
| -
|
| - def testNotFiltered(self):
|
| - self.expected = EXPECTED
|
| - path = os.path.join(os.path.dirname(__file__), 'status_push_server.py')
|
| - self.site = server.Site(Receiver())
|
| - self.server = reactor.listenTCP(0, self.site)
|
| - self.port = self.server.getHost().port
|
| - self.init(config_http_no_filter.replace('<PORT>', str(self.port)))
|
| - d = self.connectSlave()
|
| - d.addCallbacks(self._testPhase1)
|
| - return d
|
| -
|
| - def testFiltered(self):
|
| - self.expected = EXPECTED_SHORT
|
| - path = os.path.join(os.path.dirname(__file__), 'status_push_server.py')
|
| - self.site = server.Site(Receiver())
|
| - self.server = reactor.listenTCP(0, self.site)
|
| - self.port = self.server.getHost().port
|
| - self.init(config_http.replace('<PORT>', str(self.port)))
|
| - d = self.connectSlave()
|
| - d.addCallbacks(self._testPhase1)
|
| - return d
|
| -
|
| - def _testPhase1(self, d):
|
| - g = self.getStatusPush()
|
| - self.path = g.path
|
| - # Now the slave is connected, trigger a change.
|
| - cm = self.master.change_svc
|
| - c = changes.Change("bob", ["Makefile", "foo/bar.c"], "changed stuff")
|
| - cm.addChange(c)
|
| - d = self.requestBuild("dummy")
|
| - d.addCallback(self._testPhase2)
|
| - return d
|
| -
|
| - def _testPhase2(self, d):
|
| - d = self.shutdownAllSlaves()
|
| - d.addCallback(lambda x: self.master.stopService())
|
| - d.addCallback(self._testPhase3)
|
| - d.addCallback(lambda x: self.server.stopListening())
|
| - return d
|
| -
|
| - def _testPhase3(self, d):
|
| - g = self.getStatusPush()
|
| - # Assert all the items were pushed.
|
| - self.assertEqual(0, g.queue.nbItems())
|
| - self.verifyItems(self.site.resource.packets, self.expected)
|
| - self.master = None
|
| -
|
| -# vim: set ts=4 sts=4 sw=4 et:
|
|
|