def addStepURL(self, stepid, name, url): validation.verifyType(self.testcase, 'stepid', stepid, validation.IntValidator()) validation.verifyType(self.testcase, 'name', name, validation.StringValidator()) validation.verifyType(self.testcase, 'url', url, validation.StringValidator()) return defer.succeed(None)
def addStepURL(self, stepid, name, url): validation.verifyType(self.testcase, 'stepid', stepid, validation.IntValidator()) validation.verifyType(self.testcase, 'name', name, validation.StringValidator()) validation.verifyType(self.testcase, 'url', url, validation.StringValidator()) self.stepUrls.setdefault(stepid, []).append((name, url)) return defer.succeed(None)
def setBuildData(self, buildid, name, value, source): validation.verifyType(self.testcase, 'buildid', buildid, validation.IntValidator()) validation.verifyType(self.testcase, 'name', name, validation.StringValidator()) validation.verifyType(self.testcase, 'value', value, validation.BinaryValidator()) validation.verifyType(self.testcase, 'source', source, validation.StringValidator()) yield self.master.db.build_data.setBuildData(buildid, name, value, source)
def setBuildProperty(self, buildid, name, value, source): validation.verifyType(self.testcase, 'buildid', buildid, validation.IntValidator()) validation.verifyType(self.testcase, 'name', name, validation.StringValidator()) try: json.dumps(value) except (TypeError, ValueError): self.testcase.fail("Value for %s is not JSON-able" % name) validation.verifyType(self.testcase, 'source', source, validation.StringValidator()) return defer.succeed(None)
def addTestResultSet(self, builderid, buildid, stepid, description, category, value_unit): validation.verifyType(self.testcase, 'builderid', builderid, validation.IntValidator()) validation.verifyType(self.testcase, 'buildid', buildid, validation.IntValidator()) validation.verifyType(self.testcase, 'stepid', stepid, validation.IntValidator()) validation.verifyType(self.testcase, 'description', description, validation.StringValidator()) validation.verifyType(self.testcase, 'category', category, validation.StringValidator()) validation.verifyType(self.testcase, 'value_unit', value_unit, validation.StringValidator()) test_result_setid = \ yield self.master.db.test_result_sets.addTestResultSet(builderid, buildid, stepid, description, category, value_unit) return test_result_setid
def findChangeSourceId(self, name): validation.verifyType(self.testcase, 'changesource name', name, validation.StringValidator()) if name not in self.changesourceIds: self.changesourceIds[name] = max( [0] + list(itervalues(self.changesourceIds))) + 1 return defer.succeed(self.changesourceIds[name])
def test_StringValidator(self): self.doValidationTest(validation.StringValidator(), good=[ u"unicode only" ], bad=[ None, "bytestring" ])
def setBuildStateStrings(self, buildid, state_strings): validation.verifyType(self.testcase, 'buildid', buildid, validation.IntValidator()) validation.verifyType( self.testcase, 'state_strings', state_strings, validation.ListValidator(validation.StringValidator())) return defer.succeed(None)
def setStepStateString(self, stepid, state_string): validation.verifyType(self.t, 'state_string', state_string, validation.StringValidator()) b = self.steps.get(stepid) if b: b['state_string'] = state_string return defer.succeed(None)
def addStep(self, buildid, name, state_string): validation.verifyType(self.t, 'state_string', state_string, validation.StringValidator()) validation.verifyType(self.t, 'name', name, validation.IdentifierValidator(50)) # get a unique name and number build_steps = [ r for r in self.steps.values() if r['buildid'] == buildid ] if build_steps: number = max([r['number'] for r in build_steps]) + 1 names = {r['name'] for r in build_steps} if name in names: i = 1 while '{}_{}'.format(name, i) in names: i += 1 name = '{}_{}'.format(name, i) else: number = 0 id = self._newId() self.steps[id] = { 'id': id, 'buildid': buildid, 'number': number, 'name': name, 'started_at': None, 'complete_at': None, 'results': None, 'state_string': state_string, 'urls_json': '[]', 'hidden': False } return defer.succeed((id, number, name))
def setBuildStateString(self, buildid, state_string): validation.verifyType(self.t, 'state_string', state_string, validation.StringValidator()) b = self.builds.get(buildid) if b: b['state_string'] = state_string return defer.succeed(None)
def setStepStateString(self, stepid, state_string): validation.verifyType(self.testcase, 'stepid', stepid, validation.IntValidator()) validation.verifyType(self.testcase, 'state_string', state_string, validation.StringValidator()) self.stepStateString[stepid] = state_string return defer.succeed(None)
def forget_about_it(self, name): validation.verifyType(self.testcase, 'scheduler name', name, validation.StringValidator()) if name not in self.schedulerIds: self.schedulerIds[name] = max( [0] + list(itervalues(self.schedulerIds))) + 1 return defer.succeed(self.schedulerIds[name])
def setStepStateStrings(self, stepid, state_strings): validation.verifyType(self.testcase, 'stepid', stepid, validation.IntValidator()) validation.verifyType( self.testcase, 'state_strings', state_strings, validation.ListValidator(validation.StringValidator())) self.stepStateStrings[stepid] = state_strings return defer.succeed(None)
def appendLog(self, logid, content): validation.verifyType(self.testcase, 'logid', logid, validation.IntValidator()) validation.verifyType(self.testcase, 'content', content, validation.StringValidator()) self.testcase.assertEqual(content[-1], u'\n') self.logs[logid]['content'].append(content) return defer.succeed(None)
def newLog(self, stepid, name, type): validation.verifyType(self.testcase, 'stepid', stepid, validation.IntValidator()) validation.verifyType(self.testcase, 'name', name, validation.StringValidator()) validation.verifyType(self.testcase, 'type', type, validation.IdentifierValidator(1)) logid = max([0] + self.logs.keys()) + 1 self.logs[logid] = dict(name=name, type=type, content=[], finished=False) return defer.succeed(logid)
def appendLog(self, logid, content): validation.verifyType(self.t, 'logid', logid, validation.IntValidator()) validation.verifyType(self.t, 'content', content, validation.StringValidator()) self.t.assertEqual(content[-1], '\n') content = content[:-1].split('\n') lines = self.log_lines[logid] lines.extend(content) num_lines = self.logs[logid]['num_lines'] = len(lines) return defer.succeed((num_lines - len(content), num_lines - 1))
def test_Selector(self): sel = validation.Selector() sel.add(lambda x: x == 'int', validation.IntValidator()) sel.add(lambda x: x == 'str', validation.StringValidator()) self.doValidationTest(sel, good=[ ('int', 1), ('str', u'hi'), ], bad=[ ('int', u'hi'), ('str', 1), ('float', 1.0), ])
def addURL(self, stepid, name, url, _racehook=None): validation.verifyType(self.t, 'stepid', stepid, validation.IntValidator()) validation.verifyType(self.t, 'name', name, validation.IdentifierValidator(50)) validation.verifyType(self.t, 'url', url, validation.StringValidator()) b = self.steps.get(stepid) if b: urls = json.loads(b['urls_json']) url_item = dict(name=name, url=url) if url_item not in urls: urls.append(url_item) b['urls_json'] = json.dumps(urls) return defer.succeed(None)
def test_DictValidator(self): self.doValidationTest(validation.DictValidator( a=validation.BooleanValidator(), b=validation.StringValidator(), optionalNames=['b']), good=[ {'a': True}, {'a': True, 'b': u'xyz'}, ], bad=[ None, 1, "hi", {}, {'a': 1}, {'a': 1, 'b': u'xyz'}, {'a': True, 'b': 999}, {'a': True, 'b': u'xyz', 'c': 'extra'}, ])
def addBuild(self, builderid, buildrequestid, workerid, masterid, state_string): validation.verifyType(self.t, 'state_string', state_string, validation.StringValidator()) id = self._newId() number = max([0] + [ r['number'] for r in self.builds.values() if r['builderid'] == builderid ]) + 1 self.builds[id] = dict(id=id, number=number, buildrequestid=buildrequestid, builderid=builderid, workerid=workerid, masterid=masterid, state_string=state_string, started_at=self.reactor.seconds(), complete_at=None, results=None) return defer.succeed((id, number))
def findBuilderId(self, name): validation.verifyType(self.testcase, 'builder name', name, validation.StringValidator()) return self.master.db.builders.findBuilderId(name)
def findSchedulerId(self, name): validation.verifyType(self.testcase, 'scheduler name', name, validation.StringValidator()) if name not in self.schedulerIds: self.schedulerIds[name] = max([0] + self.schedulerIds.values()) + 1 return defer.succeed(self.schedulerIds[name])