[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