[CalendarServer-changes] [11747] CalDAVTester/trunk

source_changes at macosforge.org source_changes at macosforge.org
Mon Sep 23 03:02:44 PDT 2013


Revision: 11747
          http://trac.calendarserver.org//changeset/11747
Author:   cdaboo at apple.com
Date:     2013-09-23 03:02:44 -0700 (Mon, 23 Sep 2013)
Log Message:
-----------
Add a test mode where a request will iterate over a data directory to repeat for each data file. This is useful
to testing, e.g., a bunch of bad data without having to create separate test requests for each.

Modified Paths:
--------------
    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/xmlDefs.py

Added Paths:
-----------
    CalDAVTester/trunk/Resource/CalDAV/bad-ical/
    CalDAVTester/trunk/Resource/CalDAV/bad-json/
    CalDAVTester/trunk/scripts/tests/CalDAV/bad-ical.xml
    CalDAVTester/trunk/scripts/tests/CalDAV/bad-json.xml

Added: CalDAVTester/trunk/scripts/tests/CalDAV/bad-ical.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests/CalDAV/bad-ical.xml	                        (rev 0)
+++ CalDAVTester/trunk/scripts/tests/CalDAV/bad-ical.xml	2013-09-23 10:02:44 UTC (rev 11747)
@@ -0,0 +1,52 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 2013 Apple Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<caldavtest>
+	<description>Tests a bunch of bad data</description>
+
+	<require-feature>
+		<feature>caldav</feature>
+	</require-feature>
+
+	<start/>
+	
+	<test-suite name='PUT'>
+		<test name='1'>
+			<description>PUT bad calendar data</description>
+			<request iterate-data="yes">
+				<method>PUT</method>
+				<ruri>$calendarpath1:/**</ruri>
+				<data>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/bad-ical</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+					<arg>
+						<name>status</name>
+						<value>4xx</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+	</test-suite>
+	<end/>
+	
+</caldavtest>

Added: CalDAVTester/trunk/scripts/tests/CalDAV/bad-json.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests/CalDAV/bad-json.xml	                        (rev 0)
+++ CalDAVTester/trunk/scripts/tests/CalDAV/bad-json.xml	2013-09-23 10:02:44 UTC (rev 11747)
@@ -0,0 +1,53 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 2013 Apple Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<caldavtest>
+	<description>Tests a bunch of bad data</description>
+
+	<require-feature>
+		<feature>caldav</feature>
+		<feature>json-data</feature>
+	</require-feature>
+
+	<start/>
+	
+	<test-suite name='PUT'>
+		<test name='1'>
+			<description>PUT bad calendar data</description>
+			<request iterate-data="yes">
+				<method>PUT</method>
+				<ruri>$calendarpath1:/**</ruri>
+				<data>
+					<content-type>application/calendar+json; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/bad-json</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+					<arg>
+						<name>status</name>
+						<value>4xx</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+	</test-suite>
+	<end/>
+	
+</caldavtest>

Modified: CalDAVTester/trunk/scripts/tests/CalDAV/caldavtest.dtd
===================================================================
--- CalDAVTester/trunk/scripts/tests/CalDAV/caldavtest.dtd	2013-09-23 08:37:20 UTC (rev 11746)
+++ CalDAVTester/trunk/scripts/tests/CalDAV/caldavtest.dtd	2013-09-23 10:02:44 UTC (rev 11747)
@@ -35,7 +35,8 @@
 						 user CDATA ""
 						 pswd CDATA ""
 						 end-delete (yes|no) "no"
-						 print-response (yes|no) "no">
+						 print-response (yes|no) "no"
+						 iterate-data (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-09-23 08:37:20 UTC (rev 11746)
+++ CalDAVTester/trunk/scripts/tests/CardDAV/caldavtest.dtd	2013-09-23 10:02:44 UTC (rev 11747)
@@ -35,7 +35,8 @@
 						 user CDATA ""
 						 pswd CDATA ""
 						 end-delete (yes|no) "no"
-						 print-response (yes|no) "no">
+						 print-response (yes|no) "no"
+						 iterate-data (yes|no) "no">
 		
 		<!ELEMENT method (#PCDATA)>
 		<!ELEMENT ruri (#PCDATA)>

Modified: CalDAVTester/trunk/src/caldavtest.py
===================================================================
--- CalDAVTester/trunk/src/caldavtest.py	2013-09-23 08:37:20 UTC (rev 11746)
+++ CalDAVTester/trunk/src/caldavtest.py	2013-09-23 10:02:44 UTC (rev 11747)
@@ -197,18 +197,24 @@
             self.manager.log(manager.LOG_HIGH, "      Excluded features: %s" % (", ".join(sorted(test.excludedFeatures())),))
             return "i"
         else:
-            result = False
+            result = True
             resulttxt = ""
             postgresCount = self.postgresInit()
             if test.stats:
                 reqstats = stats()
             else:
                 reqstats = None
-            for ctr in range(test.count): #@UnusedVariable
+            for ctr in range(test.count):
                 for req_count, req in enumerate(test.requests):
-                    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
+                    if req.iterate_data:
+                        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:
+                                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
             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-09-23 08:37:20 UTC (rev 11746)
+++ CalDAVTester/trunk/src/request.py	2013-09-23 10:02:44 UTC (rev 11747)
@@ -23,6 +23,7 @@
 from src.xmlUtils import getYesNoAttributeValue
 import base64
 import datetime
+import os
 import re
 import src.xmlDefs
 import time
@@ -154,6 +155,7 @@
         self.ruris = []
         self.ruri = ""
         self.data = None
+        self.iterate_data = False
         self.count = 1
         self.verifiers = []
         self.graburi = None
@@ -287,7 +289,7 @@
                 data = self.data.value
             else:
                 # read in the file data
-                fd = open(self.data.filepath, "r")
+                fd = open(self.data.nextpath if hasattr(self.data, "nextpath") else self.data.filepath, "r")
                 try:
                     data = fd.read()
                 finally:
@@ -300,6 +302,20 @@
         return data
 
 
+    def getNextData(self):
+        if not hasattr(self, "dataList"):
+            self.dataList = sorted(os.listdir(self.data.filepath))
+        if len(self.dataList):
+            self.data.nextpath = os.path.join(self.data.filepath, self.dataList.pop(0))
+            return True
+        else:
+            if hasattr(self.data, "nextpath"):
+                delattr(self.data, "nextpath")
+            if hasattr(self, "dataList"):
+                delattr(self, "dataList")
+            return False
+
+
     def generateCalendarData(self, data):
         """
         FIXME: does not work for events with recurrence overrides.
@@ -325,6 +341,7 @@
         self.end_delete = getYesNoAttributeValue(node, src.xmlDefs.ATTR_END_DELETE)
         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)
 
         for child in node.getchildren():
             if child.tag == src.xmlDefs.ELEMENT_REQUIRE_FEATURE:

Modified: CalDAVTester/trunk/src/xmlDefs.py
===================================================================
--- CalDAVTester/trunk/src/xmlDefs.py	2013-09-23 08:37:20 UTC (rev 11746)
+++ CalDAVTester/trunk/src/xmlDefs.py	2013-09-23 10:02:44 UTC (rev 11747)
@@ -83,6 +83,7 @@
 ATTR_IGNORE = "ignore"
 ATTR_IGNORE_ALL = "ignore-all"
 ATTR_INTERVAL = "interval"
+ATTR_ITERATE_DATA = "iterate-data"
 ATTR_NAME = "name"
 ATTR_ONLY = "only"
 ATTR_PRINT_REQUEST = "print-request"
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20130923/2c7a8f5a/attachment-0001.html>


More information about the calendarserver-changes mailing list