Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(229)

Side by Side Diff: third_party/buildbot_7_12/buildbot/test/test_web_status_json.py

Issue 12207158: Bye bye buildbot 0.7.12. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 # -*- test-case-name: buildbot.test.test_web_status_json -*-
2 # -*- coding: utf-8 -*-
3
4 import os, shutil
5
6 from twisted.python import components
7 from twisted.trial import unittest
8 from twisted.web import client, error
9
10 from buildbot import master, interfaces
11 from buildbot.status import html
12 from buildbot.status.web.status_json import JsonStatusResource
13
14 try:
15 import simplejson as json
16 except ImportError:
17 import json
18
19
20 class ConfiguredMaster(master.BuildMaster):
21 """This BuildMaster variant has a static config file, provided as a
22 string when it is created."""
23
24 def __init__(self, basedir, config):
25 self.config = config
26 master.BuildMaster.__init__(self, basedir)
27
28 def loadTheConfigFile(self):
29 self.loadConfig(self.config)
30
31
32 components.registerAdapter(master.Control, ConfiguredMaster,
33 interfaces.IControl)
34
35
36 base_config = """
37 from buildbot.changes.pb import PBChangeSource
38 from buildbot.status import html
39 from buildbot.buildslave import BuildSlave
40 from buildbot.scheduler import Scheduler
41 from buildbot.process.factory import BuildFactory
42 from buildbot.config import BuilderConfig
43
44 BuildmasterConfig = c = {
45 'change_source': PBChangeSource(),
46 'slaves': [BuildSlave('bot1name', 'bot1passwd')],
47 'schedulers': [Scheduler('name', None, 60, ['builder1'])],
48 'slavePortnum': 0,
49 }
50 c['builders'] = [
51 BuilderConfig(name='builder1', slavename='bot1name', factory=BuildFactory()) ,
52 ]
53 c['slavePortnum'] = 0
54 c['projectUrl'] = 'example.com/yay'
55 c['projectName'] = 'Pouet'
56 c['buildbotURL'] = 'build.example.com/yo'
57 """
58
59
60 class TestStatusJson(unittest.TestCase):
61 def setUp(self):
62 config = base_config + "c['status'] = [html.WebStatus(http_port=0)]\n"
63 if os.path.isdir('test_web1'):
64 shutil.rmtree('test_web1')
65 os.mkdir('test_web1')
66 self.master = ConfiguredMaster('test_web1', config)
67 self.master.startService()
68 self.web_status = self.find(html.WebStatus)
69 self.status_json = self.find(
70 JsonStatusResource,
71 self.web_status.site.resource.children.itervalues())
72 # Hack to find out what randomly-assigned port it is listening on.
73 self.port = self.web_status.getPortnum()
74
75 def tearDown(self):
76 self.master.stopService()
77 shutil.rmtree('test_web1')
78
79 def find(self, type=None, obj=None):
80 obj = obj or self.master
81 for child in list(obj):
82 if isinstance(child, type):
83 return child
84 self.assertTrue(False)
85
86 def getPage(self, url, cb=None, err=None):
87 d = client.getPage('http://localhost:%d%s' % (self.port, url))
88 if cb:
89 d.addCallback(cb)
90 if err:
91 d.addErrback(err)
92 return d
93
94 def testPresence(self):
95 def _check(page):
96 data = json.loads(page)
97 EXPECTED = {
98 'builders': {
99 'builder1': {
100 'basedir': 'builder1',
101 'cachedBuilds': [],
102 'category': None,
103 'currentBuilds': [],
104 'pendingBuilds': [],
105 'slaves': ['bot1name'],
106 'state': 'offline'
107 }
108 },
109 'change_sources': {
110 '0': {
111 'description': 'PBChangeSource listener on all-purpose s laveport'
112 }
113 },
114 'project': {
115 'buildbotURL': 'build.example.com/yo',
116 'projectName': 'Pouet',
117 'projectURL': None
118 },
119 'slaves': {
120 'bot1name': {
121 'access_uri': None,
122 'admin': None,
123 'builders': {u'builder1': []},
124 'connected': False,
125 'host': None,
126 'name': u'bot1name',
127 'runningBuilds': [],
128 'version': None
129 }
130 }
131 }
132 self.assertEqual(EXPECTED, data)
133 return self.getPage('/json', _check)
134
135 def testHelp(self):
136 def _check(page):
137 self.failUnless(page)
138 return self.getPage('/json/help', _check)
139
140 def testNonPresence(self):
141 def _checkOk(page):
142 self.assertFalse(page)
143 def _checkFail(result):
144 self.assertEqual(result.type, error.Error)
145 return self.getPage('/json2', _checkOk, _checkFail)
146
147 # vim: set ts=4 sts=4 sw=4 et:
OLDNEW
« no previous file with comments | « third_party/buildbot_7_12/buildbot/test/test_web.py ('k') | third_party/buildbot_7_12/buildbot/test/test_webparts.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698