[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