[CalendarServer-changes] [11792] CalDAVTester/trunk
source_changes at macosforge.org
source_changes at macosforge.org
Sun Oct 6 09:52:04 PDT 2013
Revision: 11792
http://trac.calendarserver.org//changeset/11792
Author: cdaboo at apple.com
Date: 2013-10-06 09:52:04 -0700 (Sun, 06 Oct 2013)
Log Message:
-----------
Add option to have requests wait for a set amount of time for the verifiers to return success, with the request
being repeated over and over. This accommodates servers that have asynchronous behaviors for e.g. scheduling.
Modified Paths:
--------------
CalDAVTester/trunk/README.txt
CalDAVTester/trunk/scripts/server/serverinfo.dtd
CalDAVTester/trunk/scripts/tests/CalDAV/caldavtest.dtd
CalDAVTester/trunk/scripts/tests/CardDAV/caldavtest.dtd
CalDAVTester/trunk/src/caldavtest.py
CalDAVTester/trunk/src/request.py
CalDAVTester/trunk/src/serverinfo.py
CalDAVTester/trunk/src/xmlDefs.py
Modified: CalDAVTester/trunk/README.txt
===================================================================
--- CalDAVTester/trunk/README.txt 2013-10-05 19:03:02 UTC (rev 11791)
+++ CalDAVTester/trunk/README.txt 2013-10-06 16:52:04 UTC (rev 11792)
@@ -92,6 +92,10 @@
ELEMENT <authtype>
HTTP authentication method to use.
+ ELEMENT <waittime>
+ For requests with the wait-for-success options, defines how many
+ seconds to wait [Default: 10].
+
ELEMENT <features>
list of features for the server under test.
@@ -245,6 +249,12 @@
ATTRIBUTE print-response
if set to 'yes' then the HTTP response (header and body) is
printed along with test results.
+ ATTRIBUTE wait-for-success
+ if set to 'yes' then the HTTP request will repeat over and over
+ for a set amount of time waiting for the verifiers to pass. If
+ time expires without success then the overall request fails. The
+ length of time is controlled by the <waittime> element in the
+ serverinfo file (defaults to 10 seconds).
ELEMENT <require-feature>
set of features.
Modified: CalDAVTester/trunk/scripts/server/serverinfo.dtd
===================================================================
--- CalDAVTester/trunk/scripts/server/serverinfo.dtd 2013-10-05 19:03:02 UTC (rev 11791)
+++ CalDAVTester/trunk/scripts/server/serverinfo.dtd 2013-10-06 16:52:04 UTC (rev 11792)
@@ -14,12 +14,13 @@
limitations under the License.
-->
-<!ELEMENT serverinfo (host, nonsslport, sslport, authtype?, features?, substitutions)? >
+<!ELEMENT serverinfo (host, nonsslport, sslport, authtype?, waitime?, features?, substitutions)? >
<!ELEMENT host (#PCDATA)>
<!ELEMENT nonsslport (#PCDATA)>
<!ELEMENT sslport (#PCDATA)>
<!ELEMENT authtype (#PCDATA)>
+ <!ELEMENT waittime (#PCDATA)>
<!ELEMENT features (feature*)>
<!ELEMENT feature (#PCDATA)>
<!ELEMENT substitutions (substitution|repeat)*>
Modified: CalDAVTester/trunk/scripts/tests/CalDAV/caldavtest.dtd
===================================================================
--- CalDAVTester/trunk/scripts/tests/CalDAV/caldavtest.dtd 2013-10-05 19:03:02 UTC (rev 11791)
+++ CalDAVTester/trunk/scripts/tests/CalDAV/caldavtest.dtd 2013-10-06 16:52:04 UTC (rev 11792)
@@ -36,7 +36,8 @@
pswd CDATA ""
end-delete (yes|no) "no"
print-response (yes|no) "no"
- iterate-data (yes|no) "no">
+ iterate-data (yes|no) "no"
+ wait-for-success (yes|no) "no">
<!ELEMENT method (#PCDATA)>
<!ELEMENT ruri (#PCDATA)>
Modified: CalDAVTester/trunk/scripts/tests/CardDAV/caldavtest.dtd
===================================================================
--- CalDAVTester/trunk/scripts/tests/CardDAV/caldavtest.dtd 2013-10-05 19:03:02 UTC (rev 11791)
+++ CalDAVTester/trunk/scripts/tests/CardDAV/caldavtest.dtd 2013-10-06 16:52:04 UTC (rev 11792)
@@ -36,7 +36,8 @@
pswd CDATA ""
end-delete (yes|no) "no"
print-response (yes|no) "no"
- iterate-data (yes|no) "no">
+ iterate-data (yes|no) "no"
+ wait-for-success (yes|no) "no">
<!ELEMENT method (#PCDATA)>
<!ELEMENT ruri (#PCDATA)>
Modified: CalDAVTester/trunk/src/caldavtest.py
===================================================================
--- CalDAVTester/trunk/src/caldavtest.py 2013-10-05 19:03:02 UTC (rev 11791)
+++ CalDAVTester/trunk/src/caldavtest.py 2013-10-06 16:52:04 UTC (rev 11792)
@@ -206,15 +206,25 @@
reqstats = None
for ctr in range(test.count):
for req_count, req in enumerate(test.requests):
- if getattr(req, "iterate_data", False):
- while req.getNextData():
+ t = time.time() + (self.manager.server_info.wait if getattr(req, "wait_for_success", False) else 100)
+ while t > time.time():
+ failed = False
+ if getattr(req, "iterate_data", False):
+ 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:
- 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
+
loglevel = [manager.LOG_ERROR, manager.LOG_HIGH][result]
self.manager.log(loglevel, ["[FAILED]", "[OK]"][result])
if len(resulttxt) > 0:
Modified: CalDAVTester/trunk/src/request.py
===================================================================
--- CalDAVTester/trunk/src/request.py 2013-10-05 19:03:02 UTC (rev 11791)
+++ CalDAVTester/trunk/src/request.py 2013-10-06 16:52:04 UTC (rev 11792)
@@ -148,6 +148,7 @@
self.end_delete = False
self.print_request = False
self.print_response = False
+ self.wait_for_success = None
self.require_features = set()
self.exclude_features = set()
self.method = ""
@@ -342,6 +343,7 @@
self.print_request = self.manager.print_request or getYesNoAttributeValue(node, src.xmlDefs.ATTR_PRINT_REQUEST)
self.print_response = self.manager.print_response or getYesNoAttributeValue(node, src.xmlDefs.ATTR_PRINT_RESPONSE)
self.iterate_data = getYesNoAttributeValue(node, src.xmlDefs.ATTR_ITERATE_DATA)
+ self.wait_for_success = getYesNoAttributeValue(node, src.xmlDefs.ATTR_WAIT_FOR_SUCCESS)
for child in node.getchildren():
if child.tag == src.xmlDefs.ELEMENT_REQUIRE_FEATURE:
Modified: CalDAVTester/trunk/src/serverinfo.py
===================================================================
--- CalDAVTester/trunk/src/serverinfo.py 2013-10-05 19:03:02 UTC (rev 11791)
+++ CalDAVTester/trunk/src/serverinfo.py 2013-10-06 16:52:04 UTC (rev 11792)
@@ -34,6 +34,7 @@
self.features = set()
self.user = ""
self.pswd = ""
+ self.wait = 10
self.subsdict = {}
self.extrasubsdict = {}
@@ -132,6 +133,8 @@
self.sslport = int(child.text)
elif child.tag == src.xmlDefs.ELEMENT_AUTHTYPE:
self.authtype = child.text.encode("utf-8")
+ elif child.tag == src.xmlDefs.ELEMENT_WAITTIME:
+ self.wait = int(child.text.encode("utf-8"))
elif child.tag == src.xmlDefs.ELEMENT_FEATURES:
self.parseFeatures(child)
elif child.tag == src.xmlDefs.ELEMENT_SUBSTITUTIONS:
Modified: CalDAVTester/trunk/src/xmlDefs.py
===================================================================
--- CalDAVTester/trunk/src/xmlDefs.py 2013-10-05 19:03:02 UTC (rev 11791)
+++ CalDAVTester/trunk/src/xmlDefs.py 2013-10-06 16:52:04 UTC (rev 11792)
@@ -72,6 +72,7 @@
ELEMENT_VALUE = "value"
ELEMENT_VARIABLE = "variable"
ELEMENT_VERIFY = "verify"
+ELEMENT_WAITTIME = "waittime"
ELEMENT_WARNINGTIME = "warningtime"
ATTR_AUTH = "auth"
@@ -94,6 +95,7 @@
ATTR_SUBSTITUTIONS = "substitutions"
ATTR_TIME_EXCEEDED = "time-exceeded"
ATTR_USER = "user"
+ATTR_WAIT_FOR_SUCCESS = "wait-for-success"
ATTR_VALUE_NO = "no"
ATTR_VALUE_RANDOM = "random"
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20131006/6276b0bb/attachment-0001.html>
More information about the calendarserver-changes
mailing list