in src/caldavtest.py [0:0]
def run_test(self, testsuite, test, etags, only, label=""):
if test.ignore or only and not test.only:
self.manager.testResult(testsuite, test.name, " Deliberately ignored", manager.RESULT_IGNORED)
return "i"
elif len(test.missingFeatures()) != 0:
self.manager.testResult(testsuite, test.name, " Missing features: %s" % (", ".join(sorted(test.missingFeatures())),), manager.RESULT_IGNORED)
return "i"
elif len(test.excludedFeatures()) != 0:
self.manager.testResult(testsuite, test.name, " Excluded features: %s" % (", ".join(sorted(test.excludedFeatures())),), manager.RESULT_IGNORED)
return "i"
else:
result = True
resulttxt = ""
postgresCount = self.postgresInit()
if test.stats:
reqstats = stats()
else:
reqstats = None
for ctr in range(test.count):
for req_count, req in enumerate(test.requests):
t = time.time() + (self.manager.server_info.waitsuccess if getattr(req, "wait_for_success", False) else 100)
while t > time.time():
failed = False
if getattr(req, "iterate_data", False):
if not req.hasNextData():
self.manager.testResult(testsuite, test.name, " No iteration data - ignored", manager.RESULT_IGNORED)
return "i"
while req.getNextData():
result, resulttxt, _ignore_response, _ignore_respdata = self.dorequest(req, test.details, True, False, reqstats, etags=etags, label="%s | #%s" % (label, req_count + 1,), count=ctr + 1)
if not result:
failed = True
break
else:
result, resulttxt, _ignore_response, _ignore_respdata = self.dorequest(req, test.details, True, False, reqstats, etags=etags, label="%s | #%s" % (label, req_count + 1,), count=ctr + 1)
if not result:
failed = True
if not failed or not req.wait_for_success:
break
if failed:
break
addons = {}
if len(resulttxt) > 0:
self.manager.message("trace", resulttxt)
if result and test.stats:
self.manager.message("trace", " Total Time: %.3f secs" % (reqstats.totaltime,), indent=8)
self.manager.message("trace", " Average Time: %.3f secs" % (reqstats.totaltime / reqstats.count,), indent=8)
addons["timing"] = {
"total": reqstats.totaltime,
"average": reqstats.totaltime / reqstats.count,
}
self.postgresResult(postgresCount, indent=8)
self.manager.testResult(testsuite, test.name, resulttxt, manager.RESULT_OK if result else manager.RESULT_FAILED, addons)
return ["f", "t"][result]