diff --git a/.coveragerc b/.coveragerc new file mode 100644 index 000000000..f6f4d2f49 --- /dev/null +++ b/.coveragerc @@ -0,0 +1,12 @@ +[run] +branch = True +source = pycsw + +[paths] +source = + pycsw + .tox/*/lib/python*/site-packages/pycsw + /usr/local/lib/python*/dist-packages/pycsw + +[report] +show_missing = True \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index 6f75fc017..702ccebcd 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -6,15 +6,15 @@ - Python version: - pycsw version: - source/distribution - - [ ] git clone - - [ ] DebianGIS/UbuntuGIS - - [ ] PyPI - - [ ] zip/tar.gz - - [ ] other (please specify): + - [ ] git clone + - [ ] DebianGIS/UbuntuGIS + - [ ] PyPI + - [ ] zip/tar.gz + - [ ] other (please specify): - web server - - [ ] Apache/mod_wsgi - - [ ] CGI - - [ ] other (please specify): + - [ ] Apache/mod_wsgi + - [ ] CGI + - [ ] other (please specify): # Steps to Reproduce diff --git a/.gitignore b/.gitignore index a30ade7c4..592f31da8 100644 --- a/.gitignore +++ b/.gitignore @@ -9,9 +9,12 @@ MANIFEST # testing artifacts tests/index.html tests/results +**.cache +.coverage +.tox # test configurations /default.cfg -# test repositories -data +# pycharm ide +.idea diff --git a/.travis.yml b/.travis.yml index c34d7b63d..0bc1c3220 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,37 +1,34 @@ language: python -sudo: required -dist: trusty +cache: pip -python: - - "2.6" - - "2.7" - - "3.4" +dist: trusty -#matrix: -# allow_failures: -# - python: "3.4" +matrix: + include: + - python: "2.6" + env: TOXENV=py26-sqlite + - python: "2.7" + env: TOXENV=py27-sqlite + - python: "3.4" + env: TOXENV=py34-sqlite + - python: "3.5" + env: TOXENV=py35-sqlite addons: apt: packages: - - libgeos-c1 + - libgeos-dev + - libpq-dev - libxml2-dev - -before_script: - - pycsw-admin.py -c get_sysprof + - libxslt1-dev + - libz-dev install: - - pip install -r requirements.txt - - pip install -r requirements-dev.txt - - pip install -r requirements-standalone.txt - - python setup.py -q install + - pip install tox script: - - paver test - -after_script: - - paver stop + - tox -- --exitfirst -k 'not harvesting' notifications: irc: diff --git a/docs/conf.py b/docs/conf.py index 8d078f1bd..82c0dd501 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -48,6 +48,9 @@ # -- General configuration ----------------------------------------------------- +# locale +locale_dirs = ['locale/'] + # If your documentation needs a minimal Sphinx version, state it here. #needs_sphinx = '1.0' diff --git a/docs/locale/zh/LC_MESSAGES/administration.po b/docs/locale/zh/LC_MESSAGES/administration.po new file mode 100644 index 000000000..11a3d3204 --- /dev/null +++ b/docs/locale/zh/LC_MESSAGES/administration.po @@ -0,0 +1,383 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: pycsw 2.0-dev\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-17 17:33+0800\n" +"PO-Revision-Date: 2016-06-01 08:59+0800\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.3.4\n" + +#: ../../administration.rst:4 +msgid "Administration" +msgstr "管理" + +#: ../../administration.rst:6 +msgid "" +"pycsw administration is handled by the ``pycsw-admin.py`` utility. " +"``pycsw-admin.py`` is installed as part of the pycsw install process and " +"should be available in your PATH." +msgstr "" +"pycsw 通过工具 ``pycsw-admin.py`` 进行管理。 ``pycsw-admin.py`` 需作为 pycsw " +"安装的一部分安装到系统,可在你的路径中使用。" + +#: ../../administration.rst:11 +msgid "" +"Run ``pycsw-admin.py -h`` to see all administration operations and " +"parameters" +msgstr "运行 ``pycsw-admin.py -h`` 来查看所有的管理操作与参数。 " + +#: ../../administration.rst:14 +msgid "Metadata Repository Setup" +msgstr "元数据库创建设置" + +#: ../../administration.rst:16 +msgid "pycsw supports the following databases:" +msgstr "pycsw支持以下数据库:" + +#: ../../administration.rst:18 +msgid "SQLite3" +msgstr "" + +#: ../../administration.rst:19 ../../administration.rst:114 +msgid "PostgreSQL" +msgstr "" + +#: ../../administration.rst:20 +msgid "PostgreSQL with PostGIS enabled" +msgstr "" + +#: ../../administration.rst:21 +msgid "MySQL" +msgstr "" + +#: ../../administration.rst:24 +msgid "" +"The easiest and fastest way to deploy pycsw is to use SQLite3 as the " +"backend." +msgstr "最简单快速部署 pycws 的方式是使用 SQLite3 作为数据存储。" + +#: ../../administration.rst:27 +msgid "PostgreSQL support includes support for PostGIS functions if enabled" +msgstr "PostgreSQL支持PostGIS功能" + +#: ../../administration.rst:30 +msgid "" +"If PostGIS (1.x or 2.x) is activated before setting up the " +"pycsw/PostgreSQL database, then native PostGIS geometries will be " +"enabled." +msgstr "" +"如果PostGIS(1.×或2.x)可在建立pycsw / PostgreSQL数据库之前激活,那么本机的PostGIS " +"geometries就可以使用。" + +#: ../../administration.rst:32 +msgid "" +"To expose your geospatial metadata via pycsw, perform the following " +"actions:" +msgstr "可通过 pycsw 发布你的地理空间元数据,可执行以下操作:" + +#: ../../administration.rst:34 +msgid "setup the database" +msgstr "创建数据库" + +#: ../../administration.rst:35 +msgid "import metadata" +msgstr "导入元数据" + +#: ../../administration.rst:36 +msgid "publish the repository" +msgstr "数据库发布" + +#: ../../administration.rst:39 +msgid "Supported Information Models" +msgstr "支持的信息模型" + +#: ../../administration.rst:41 +msgid "By default, pycsw supports the ``csw:Record`` information model." +msgstr "pycsw本身默认支持 ``csw:Record`` 信息模型。" + +#: ../../administration.rst:44 +msgid "See :ref:`profiles` for information on enabling profiles" +msgstr "请参考 :ref:`profiles` 有关配置文件的信息" + +#: ../../administration.rst:47 +msgid "Setting up the Database" +msgstr "创建数据库" + +#: ../../administration.rst:53 +msgid "This will create the necessary tables and values for the repository." +msgstr "需创建数据库必要的表格与数值" + +#: ../../administration.rst:55 +msgid "" +"The database created is an `OGC SFSQL`_ compliant database, and can be " +"used with any implementing software. For example, to use with `OGR`_:" +msgstr "需创建一个标准的 `OGC SFSQL`_ 数据库,此数据库可应用于任何软件。例如, `OGR`_ " + +#: ../../administration.rst:67 +msgid "" +"If PostGIS is detected, the pycsw-admin.py script does not create the " +"SFSQL tables as they are already in the database." +msgstr "如检测到PostGIS, pycsw-admin.py脚本就不会再创建 SFSQL 表,因为数据库中已经存在了。" + +#: ../../administration.rst:71 +msgid "Loading Records" +msgstr "加载记录" + +#: ../../administration.rst:77 +msgid "" +"This will import all ``*.xml`` records from ``/path/to/records`` into the" +" database specified in ``default.cfg`` (``repository.database``). " +"Passing ``-r`` to the script will process ``/path/to/records`` " +"recursively. Passing ``-y`` to the script will force overwrite existing " +"metadata with the same identifier. Note that ``-p`` accepts either a " +"directory path or single file." +msgstr "" +"这时所有的 ``*.xml`` 记录就会从 ``/path/to/records`` 中导入到指定的数据库 ``default.cfg`` " +"(``repository.database``)。将 ``-r`` 复制到脚本中, 程序 ``/path/to/records`` " +"就会层层递归。将 ``-y`` 复制到脚本中, 程序 ``/path/to/records`` 将强制替换现有的相同元数据标识符。请注意, " +"``-p`` 只能接受一个目录路径或单个文件。" + +#: ../../administration.rst:80 +msgid "Records can also be imported using CSW-T (see :ref:`transactions`)." +msgstr "记录也可以使用 CSW-T导入 (请查看 :ref:`transactions` )" + +#: ../../administration.rst:83 +msgid "Exporting the Repository" +msgstr "导出数据库" + +#: ../../administration.rst:89 +msgid "" +"This will write each record in the database specified in ``default.cfg`` " +"(``repository.database``) to an XML document on disk, in directory " +"``/path/to/output_dir``." +msgstr "" +" ``default.cfg`` (``repository.database``) 会将数据库的每项记录都录入在磁盘XML文件的目录下 " +"``/path/to/output_dir`` " + +#: ../../administration.rst:92 +msgid "Optimizing the Database" +msgstr "优化数据库" + +#: ../../administration.rst:99 +msgid "This feature is relevant only for PostgreSQL and MySQL" +msgstr "此功能只关联 PostgreSQL和MySQL" + +#: ../../administration.rst:102 +msgid "Deleting Records from the Repository" +msgstr "从数据库中删除记录" + +#: ../../administration.rst:108 +msgid "This will empty the repository of all records." +msgstr "数据库中的所有记录都会被清空" + +#: ../../administration.rst:111 +msgid "Database Specific Notes" +msgstr "数据库特别需要注意的是" + +#: ../../administration.rst:116 +msgid "" +"if PostGIS is not enabled, pycsw makes uses of PL/Python functions. To " +"enable PostgreSQL support, the database user must be able to create " +"functions within the database. In case of recent PostgreSQL versions " +"(9.x), the PL/Python extension must be enabled prior to pycsw setup" +msgstr "" +"若 PostGIS不可用,pycsw会启用 " +"PL/Python功能。在PostgreSQL支持下,用户必须在数据库中创建这些功能。如果是最新版本PostgreSQL (9.x),PL/ " +"Python扩展必须在pycsw安装之前可运行" + +#: ../../administration.rst:117 +msgid "" +"`PostgreSQL Full Text Search`_ is supported for ``csw:AnyText`` based " +"queries. pycsw creates a tsvector column based on the text from anytext " +"column. Then pycsw creates a GIN index against the anytext_tsvector " +"column. This is created automatically in ``pycsw.admin.setup_db``. Any " +"query against `csw:AnyText` or `apiso:AnyText` will process using " +"PostgreSQL FTS handling" +msgstr "" +" `PostgreSQL Full Text Search`_ (全文搜索)是 ``csw:AnyText`` " +"查询功能支撑的。pycsw创建的tsvector栏是基于文本anytext栏。然而pycsw创建的GIN索引却不是基于文本anytext栏。这在 " +"``pycsw.admin.setup_db`` 是自动生成的。任何针对 `csw:AnyText` or `apiso:AnyText` " +"的查询都是使用PostgreSQL FTS处理的。" + +#: ../../administration.rst:120 +msgid "PostGIS" +msgstr "" + +#: ../../administration.rst:122 +msgid "" +"pycsw makes use of PostGIS spatial functions and native geometry data " +"type." +msgstr "pycsw使用的是PostGIS空间功能和本地geometry数据类型" + +#: ../../administration.rst:123 +msgid "" +"It is advised to install the PostGIS extension before setting up the " +"pycsw database" +msgstr "建议在创建pycsw数据库前先安装PostGIS扩展信息" + +#: ../../administration.rst:124 +msgid "" +"If PostGIS is detected, the pycsw-admin.py script will create both a " +"native geometry column and a WKT column, as well as a trigger to keep " +"both synchronized." +msgstr "一旦PostGIS被监测到,脚本pycsw-admin.py既会在本地 geometry栏创建,也会在WKT栏创建,就像是触发器一样,会保持同步 " + +#: ../../administration.rst:125 +msgid "" +"In case PostGIS gets disabled, pycsw will continue to work with the " +"`WKT`_ column" +msgstr "一旦PostGIS被禁用,这时 `WKT`_ 栏中的pycsw会运行" + +#: ../../administration.rst:126 +msgid "" +"In case of migration from plain PostgreSQL database to PostGIS, the " +"spatial functions of PostGIS will be used automatically" +msgstr "如果plain PostgreSQL数据库移入PostGIS中,PostGIS的空间功能将自行启动" + +#: ../../administration.rst:127 +msgid "" +"When migrating from plain PostgreSQL database to PostGIS, in order to " +"enable native geometry support, a \"GEOMETRY\" column named " +"\"wkb_geometry\" needs to be created manually (along with the update " +"trigger in ``pycsw.admin.setup_db``). Also the native geometries must be " +"filled manually from the `WKT`_ field. Next versions of pycsw will " +"automate this process" +msgstr "" +"如果plain PostgreSQL数据库移入PostGIS中, 一个名为 \"wkb_geometry\" 的 \"GEOMETRY\" " +"栏就需要被手动创建出来(随着 ``pycsw.admin.setup_db`` 一起更新)。本地geometries也必须在 `WKT`_ " +"中手动创建。pycsw的下一个版本就会将此过程自动化运行 " + +#: ../../administration.rst:132 +msgid "Mapping to an Existing Repository" +msgstr "映射到现有的存储库" + +#: ../../administration.rst:134 +msgid "" +"pycsw supports publishing metadata from an existing repository. To " +"enable this functionality, the default database mappings must be modified" +" to represent the existing database columns mapping to the abstract core " +"model (the default mappings are in ``pycsw/config.py:MD_CORE_MODEL``)." +msgstr "" +"pycsw支持在现在的存储库中发布元数据。为实现此功能,默认的数据库映射功能就必须替换掉原有的数据库栏,此数据库栏是映射到abstract " +"core model 中的(默认的眏射方式在 ``pycsw/config.py:MD_CORE_MODEL`` 中)" + +#: ../../administration.rst:136 +msgid "To override the default settings:" +msgstr "覆盖默认的安装设置:" + +#: ../../administration.rst:138 +msgid "define a custom database mapping based on ``etc/mappings.py``" +msgstr "基于``etc/mappings.py``映射的自定义数据库" + +#: ../../administration.rst:139 +msgid "" +"in ``default.cfg``, set ``repository.mappings`` to the location of the " +"mappings.py file:" +msgstr "在 ``default.cfg``中, 将 ``repository.mappings`` 配置到mappings.py 文件中:" + +#: ../../administration.rst:147 +msgid "Note you can also reference mappings as a Python object as a dotted path:" +msgstr "" + +#: ../../administration.rst:156 +#, fuzzy +msgid "" +"See the :ref:`geonode`, :ref:`hhypermap`, and :ref:`odc` for further " +"examples." +msgstr "请参照 :ref:`geonode` 和 :ref:`odc` 查看更多例子." + +#: ../../administration.rst:159 +msgid "Existing Repository Requirements" +msgstr "现有的存储需求" + +#: ../../administration.rst:161 +msgid "" +"pycsw requires certain repository attributes and semantics to exist in " +"any repository to operate as follows:" +msgstr "pycsw需要特定的存储属性,也需要语义来操作如下程序:" + +#: ../../administration.rst:163 +msgid "``pycsw:Identifier``: unique identifier" +msgstr "``pycsw:Identifier``:唯一的标识符" + +#: ../../administration.rst:164 +msgid "" +"``pycsw:Typename``: typename for the metadata; typically the value of the" +" root element tag (e.g. ``csw:Record``, ``gmd:MD_Metadata``)" +msgstr "``pycsw:Typename``: 元数据的类型名;典型的根标签值(例如``csw:Record``, ``gmd:MD_Metadata``)" + +#: ../../administration.rst:165 +msgid "" +"``pycsw:Schema``: schema for the metadata; typically the target namespace" +" (e.g. ``http://www.opengis.net/cat/csw/2.0.2``, " +"``http://www.isotc211.org/2005/gmd``)" +msgstr "" +"``pycsw:Schema``: " +"元数据图表;典型的目标名称空间(例如``http://www.opengis.net/cat/csw/2.0.2``, " +"``http://www.isotc211.org/2005/gmd``)" + +#: ../../administration.rst:166 +msgid "``pycsw:InsertDate``: date of insertion" +msgstr "``pycsw:InsertDate``: 插入日期" + +#: ../../administration.rst:167 +msgid "``pycsw:XML``: full XML representation" +msgstr "``pycsw:XML``:完整的XML表示形式" + +#: ../../administration.rst:168 +msgid "" +"``pycsw:AnyText``: bag of XML element text values, used for full text " +"search. Realized with the following design pattern:" +msgstr "``pycsw:AnyText``: XML元素文件值包,用于完整的文本搜索。实现了以下设计功能:" + +#: ../../administration.rst:170 +msgid "capture all XML element and attribute values" +msgstr "获取所有的XML元素与属性值" + +#: ../../administration.rst:171 +msgid "store in repository" +msgstr "存储数据库" + +#: ../../administration.rst:172 +msgid "``pycsw:BoundingBox``: string of `WKT`_ or `EWKT`_ geometry" +msgstr "``pycsw:BoundingBox``: `WKT`_ or `EWKT`_ geometry字符串" + +#: ../../administration.rst:174 +msgid "The following repository semantics exist if the attributes are specified:" +msgstr "一旦被指定了属性,以下的语义库就会自动存在 ︰" + +#: ../../administration.rst:176 +msgid "``pycsw:Keywords``: comma delimited list of keywords" +msgstr "' pycsw:Keywords ': 以逗号分隔的关键字列表" + +#: ../../administration.rst:177 +msgid "" +"``pycsw:Links``: structure of links in the format " +"\"name,description,protocol,url[^,,,[^,,,]]\"" +msgstr "' pycsw:Links ': 链接的格式结构\"名称、 描述、 协议、 网页地址 [^,[^...]]\"" + +#: ../../administration.rst:179 +msgid "Values of mappings can be derived from the following mechanisms:" +msgstr "映射值由以下的结构获得:" + +#: ../../administration.rst:181 +msgid "text fields" +msgstr "文本域" + +#: ../../administration.rst:182 +msgid "Python datetime.datetime or datetime.date objects" +msgstr "Python ``datetime.datetime`` 或 ``datetime.date`` 对象" + +#: ../../administration.rst:183 +msgid "Python functions" +msgstr "Python函数" + +#: ../../administration.rst:185 +msgid "Further information is provided in ``pycsw/config.py:MD_CORE_MODEL``." +msgstr "在 'pycsw/config.py:MD_CORE_MODEL ' 中获得更多资料" + diff --git a/docs/locale/zh/LC_MESSAGES/api.po b/docs/locale/zh/LC_MESSAGES/api.po new file mode 100644 index 000000000..0cccc6e7a --- /dev/null +++ b/docs/locale/zh/LC_MESSAGES/api.po @@ -0,0 +1,57 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2010-2015, Tom Kralidis This work is licensed under a +# Creative Commons Attribution 4.0 International License +# This file is distributed under the same license as the pycsw package. +# FIRST AUTHOR , 2016. +# +# +msgid "" +msgstr "" +"Project-Id-Version: pycsw 2.1-dev\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-07-21 21:02+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.3.4\n" + +#: ../../api.rst:4 +msgid "API" +msgstr "" + +#: ../../api.rst:6 +msgid "" +"Python applications can integrate pycsw into their custom workflows. " +"This allows for seamless integate within frameworks like Flask and Django" +msgstr "Python应用可以在自己的工作流中集成 pycsw 。" +"这样就允许在 Flask与 Django 这样的框架中无缝集成" + +#: ../../api.rst:9 +msgid "" +"Below are examples of where using the API (as opposed to the default " +"WSGI/CGI services could be used:" +msgstr "下面是一些使用API的示例(与缺省的可用的 WSGI/CGI 服务不同:)" + +#: ../../api.rst:12 +msgid "configuration based on a Python dict, or stored in a database" +msgstr "基于Python字典 进行配置,或存储在数据库中 " + +#: ../../api.rst:13 +msgid "downstream request environment / framework (Flask, Django)" +msgstr "下游请求环境/框架(Flask,Django)" + +#: ../../api.rst:14 +msgid "authentication or authorization logic" +msgstr "认证或授权逻辑" + +#: ../../api.rst:15 +msgid "forcing CSW version 2.0.2 as default" +msgstr "强制使用 CSW 版本2.0.2作为缺省情况" + +#: ../../api.rst:19 +msgid "Simple Flask Example" +msgstr "简单的 Flask 示例" + diff --git a/docs/locale/zh/LC_MESSAGES/ckan.po b/docs/locale/zh/LC_MESSAGES/ckan.po new file mode 100644 index 000000000..3e0ded144 --- /dev/null +++ b/docs/locale/zh/LC_MESSAGES/ckan.po @@ -0,0 +1,57 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: pycsw 2.0-dev\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-11-23 21:42+0800\n" +"PO-Revision-Date: 2016-06-01 09:14+0800\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: zh_CN\n" +"X-Generator: Poedit 1.8.7\n" + +#: ../../ckan.rst:4 +msgid "CKAN Configuration" +msgstr "CKAN配置" + +#: ../../ckan.rst:6 +msgid "" +"CKAN (http://ckan.org) is a powerful data management system that makes data " +"accessible – by providing tools to streamline publishing, sharing, finding " +"and using data. CKAN is aimed at data publishers (national and regional " +"governments, companies and organizations) wanting to make their data open " +"and available." +msgstr "" +"CKAN (http://ckan.org)是一个功能强大的数据管理系统,该系统提高了数据可访问" +"性,通过提供工具来无缝地发布、共享、发现和使用数据。CKAN的目的在于使他们变成" +"数据开放并可用的数据发布者(国家和地方政府、公司和组织)。" + +#: ../../ckan.rst:8 +msgid "" +"`ckanext-spatial`_ is CKAN's geospatial extension. The extension adds a " +"spatial field to the default CKAN dataset schema, using PostGIS as the " +"backend. This allows to perform spatial queries and display the dataset " +"extent on the frontend. It also provides harvesters to import geospatial " +"metadata into CKAN from other sources, as well as commands to support the " +"CSW standard. Finally, it also includes plugins to preview spatial formats " +"such as GeoJSON." +msgstr "" +" `ckanext 空间`_ 是 CKAN 的地理空间扩展。此功能扩展将空间的字段添加到默认的 " +"CKAN 数据集架构中,使用 PostGIS 作为后端。可实现空间位置查询,还可显示前端数" +"据集的扩展信息。它还有收集信息的功能,从其他来源处将地理空间的元数据导入到" +"CKAN中,就如同CKAN也支持csw标准命令一样。最后,它还有可预览空间信息的插件," +"例如 GeoJSON。" + +#: ../../ckan.rst:11 +msgid "CKAN Setup" +msgstr "CKAN设置" + +#: ../../ckan.rst:13 +msgid "" +"Installation and configuration Instructions are provided as part of the " +"ckanext-spatial `documentation`_." +msgstr "安装和配置说明在ckanext-spatial的 `documentation`_ 部分" diff --git a/docs/locale/zh/LC_MESSAGES/committers.po b/docs/locale/zh/LC_MESSAGES/committers.po new file mode 100644 index 000000000..d2e409285 --- /dev/null +++ b/docs/locale/zh/LC_MESSAGES/committers.po @@ -0,0 +1,96 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: pycsw 2.0-dev\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-05-28 11:27+0800\n" +"PO-Revision-Date: 2016-06-01 09:24+0800\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.3.4\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: zh_CN\n" +"X-Generator: Poedit 1.8.7\n" + +#: ../../committers.rst:4 +msgid "Committers" +msgstr "提交者,执行者,管理员" + +#: ../../../COMMITTERS.txt:2 +msgid "Login(s)" +msgstr "登录" + +#: ../../../COMMITTERS.txt:2 +msgid "Name" +msgstr "名字" + +#: ../../../COMMITTERS.txt:2 +msgid "Email / Contact" +msgstr "联系方式/邮件" + +#: ../../../COMMITTERS.txt:2 +msgid "Area(s)" +msgstr "领域" + +#: ../../../COMMITTERS.txt:4 +msgid "tomkralidis" +msgstr "tomkralidis" + +#: ../../../COMMITTERS.txt:4 +msgid "Tom Kralidis" +msgstr "Tom Kralidis" + +#: ../../../COMMITTERS.txt:4 +msgid "tomkralidis at gmail.com" +msgstr "tomkralidis at gmail.com" + +#: ../../../COMMITTERS.txt:4 ../../../COMMITTERS.txt:7 +msgid "Overall" +msgstr "总计" + +#: ../../../COMMITTERS.txt:5 +msgid "kalxas" +msgstr "kalxas" + +#: ../../../COMMITTERS.txt:5 +msgid "Angelos Tzotsos" +msgstr "Angelos Tzotsos" + +#: ../../../COMMITTERS.txt:5 +msgid "tzotsos at gmail.com" +msgstr "tzotsos at gmail.com" + +#: ../../../COMMITTERS.txt:5 +msgid "INSPIRE, APISO profiles, Packaging" +msgstr "INSPIRE, APISO profiles, Packaging" + +#: ../../../COMMITTERS.txt:6 +msgid "adamhinz" +msgstr "adamhinz" + +#: ../../../COMMITTERS.txt:6 +msgid "Adam Hinz" +msgstr "Adam Hinz" + +#: ../../../COMMITTERS.txt:6 +msgid "hinz dot adam at gmail.com" +msgstr "hinz dot adam at gmail.com" + +#: ../../../COMMITTERS.txt:6 +msgid "WSGI/Server Deployment" +msgstr "WSGI/服务器部署" + +#: ../../../COMMITTERS.txt:7 +msgid "ricardogsilva" +msgstr "ricardogsilva" + +#: ../../../COMMITTERS.txt:7 +msgid "Ricardo Garcia Silva" +msgstr "Ricardo Garcia Silva" + +#: ../../../COMMITTERS.txt:7 +msgid "ricardo.garcia.silva at gmail.com" +msgstr "ricardo.garcia.silva at gmail.com" diff --git a/docs/locale/zh/LC_MESSAGES/configuration.po b/docs/locale/zh/LC_MESSAGES/configuration.po new file mode 100644 index 000000000..4703c7ed2 --- /dev/null +++ b/docs/locale/zh/LC_MESSAGES/configuration.po @@ -0,0 +1,482 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: pycsw 2.0-dev\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-11-23 21:42+0800\n" +"PO-Revision-Date: 2016-06-02 11:30+0800\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: zh_CN\n" +"X-Generator: Poedit 1.8.7\n" + +#: ../../configuration.rst:4 +msgid "Configuration" +msgstr "配置" + +#: ../../configuration.rst:6 +msgid "" +"pycsw's runtime configuration is defined by ``default.cfg``. pycsw ships " +"with a sample configuration (``default-sample.cfg``). Copy the file to " +"``default.cfg`` and edit the following:" +msgstr "" +"pycsw 的运行配置写为此格式 ``default.cfg`` 。 pycsw 还有一个示例配置 (" +" ``default-sample.cfg`` )。 将文件复制到 ``default.cfg`` 并编辑以下内容 ︰" + +#: ../../configuration.rst:8 +msgid "**[server]**" +msgstr "**[server]**" + +#: ../../configuration.rst:10 +msgid "**home**: the full filesystem path to pycsw" +msgstr "**home**: pycsw 的完整文件系统路径" + +#: ../../configuration.rst:11 +msgid "**url**: the URL of the resulting service" +msgstr "**url**: 生成服务器的网址" + +#: ../../configuration.rst:12 +msgid "**mimetype**: the MIME type when returning HTTP responses" +msgstr "**mimetype**: 当HTTP响应时的MIME型" + +#: ../../configuration.rst:13 +msgid "" +"**language**: the ISO 639-1 language and ISO 3166-1 alpha2 country code of " +"the service (e.g. ``en-CA``, ``fr-CA``, ``en-US``)" +msgstr "" +"**language**: ISO 639-1 语言和 ISO 3166-1 α2服务器上的国家/地区代码 (例如 ``en-CA`` " +"、``fr-CA``、 ``EN-US`` )" + +#: ../../configuration.rst:14 +msgid "" +"**encoding**: the content type encoding (e.g. ``ISO-8859-1``, see https://" +"docs.python.org/2/library/codecs.html#standard-encodings). Default value " +"is 'UTF-8'" +msgstr "" +"**encoding**: 编码的内容类别 (例如 ``ISO-8859-1``,见 https://docs.python.org/2/library/codecs.html#standard-encodings) 。" +" 默认值是 'UTF-8'" + +#: ../../configuration.rst:15 +msgid "" +"**maxrecords**: the maximum number of records to return by default. This " +"value is enforced if a CSW's client's ``maxRecords`` parameter is greater " +"than ``server.maxrecords`` to limit capacity. See :ref:`maxrecords-" +"handling` for more information" +msgstr "" +"**maxrecords**: 默认情况下再次浏览记录的最大数目。如果CSW客户端的 ``maxRecords`` " +"参数大于 ``server.maxrecords`` ,此值就会被强制性限制。 请参见 :ref:`maxrecords-handling` 的详细信息" + +#: ../../configuration.rst:16 +msgid "" +"**loglevel**: the logging level (see http://docs.python.org/library/logging." +"html#logging-levels)" +msgstr "" +"**loglevel**: 日志记录级别 (见 http://docs.python.org/library/logging." +"html#logging-levels)" + +#: ../../configuration.rst:17 +msgid "**logfile**: the full file path to the logfile" +msgstr "**logfile**:日志文件的完整文件系统路径" + +#: ../../configuration.rst:18 +msgid "" +"**ogc_schemas_base**: base URL of OGC XML schemas tree file structure " +"(default is http://schemas.opengis.net)" +msgstr "" +"**ogc_schemas_base**: OGC XML 模型文件结构树的网址库 (默认 http://schemas.opengis.net)" + +#: ../../configuration.rst:19 +msgid "" +"**federatedcatalogues**: comma delimited list of CSW endpoints to be used " +"for distributed searching, if requested by the client (see :ref:" +"`distributedsearching`)" +msgstr "" +"**federatedcatalogues**: 如果客户端有用户请求加入时, CSW端以逗号分隔的列表就会用于分布式搜" +"索 (请参阅 :ref:`distributedsearching` )" + +#: ../../configuration.rst:20 +msgid "" +"**pretty_print**: whether to pretty print the output (``true`` or " +"``false``). Default is ``false``" +msgstr "**pretty_print**: 输出的(''是'或'否')来确认是否要优质打印。 默认值为否" + +#: ../../configuration.rst:21 +msgid "" +"**gzip_compresslevel**: gzip compression level, lowest is ``1``, highest is " +"``9``. Default is off" +msgstr "**gzip_compresslevel**: 压缩级别,最低是 '1 ',最高是' 9 '。 默认值是不压缩" + +#: ../../configuration.rst:22 +msgid "" +"**domainquerytype**: for GetDomain operations, how to output domain " +"values. Accepted values are ``list`` and ``range`` (min/max). Default is " +"``list``" +msgstr "" +"**domainquerytype**: 在GetDomain中应当如何输出域值呢。 目前的域值有'列表'和'range' (最" +"小/最大)。默认值是列表。" + +#: ../../configuration.rst:23 +msgid "" +"**domaincounts**: for GetDomain operations, whether to provide frequency " +"counts for values. Accepted values are ``true`` and ``False``. Default is " +"``false``" +msgstr "" +"**domaincounts**:在GetDomain中,是否要提供频率计数值的操作。 目前的值" +"有'是'和'否' 。默认值为否" + +#: ../../configuration.rst:24 +msgid "" +"**profiles**: comma delimited list of profiles to load at runtime (default " +"is none). See :ref:`profiles`" +msgstr "" +"**profiles**: 是否在运行时加载以逗号分隔的配置文件列表(默认为无)。 请参见 :ref:`profiles` 。" + +#: ../../configuration.rst:25 +msgid "" +"**smtp_host**: SMTP host for processing ``csw:ResponseHandler`` parameter " +"via outgoing email requests (default is ``localhost``)" +msgstr "" +"**smtp_host**: SMTP 主机(默认为' 本地主机 ')通过发送电子邮件请求的方式处理 " +" ``csw:ResponseHandler`` 参数" + +#: ../../configuration.rst:26 +msgid "" +"**spatial_ranking**: parameter that enables (``true`` or ``false``) ranking " +"of spatial query results as per `K.J. Lanfear 2006 - A Spatial Overlay " +"Ranking Method for a Geospatial Search of Text Objects `_." +msgstr "" +"**spatial_ranking**: 是否在对空间搜索的结果进行排名的一项参数(' 是' 或' 否' ),此排名" +"参数在每“K.J. Lanfear 2006” - 文本对象空间搜索的一个空间覆盖排名方法,“K.J. " +"Lanfear 2006”网址:_." + +#: ../../configuration.rst:28 +msgid "**[manager]**" +msgstr "" + +#: ../../configuration.rst:30 +msgid "" +"**transactions**: whether to enable transactions (``true`` or ``false``). " +"Default is ``false`` (see :ref:`transactions`)" +msgstr "**transactions**: 是否可以交易 ( ``true`` 或 ``false`` )。 默认值为否 (请参阅 :ref:`transactions` )" + +#: ../../configuration.rst:31 +msgid "" +"**allowed_ips**: comma delimited list of IP addresses (e.g. 192.168.0.103), " +"wildcards (e.g. 192.168.0.*) or CIDR notations (e.g. 192.168.100.0/24) " +"allowed to perform transactions (see :ref:`transactions`)" +msgstr "" +"**allowed_ips**: IP 地址 (如 192.168.0.103)、 通配符 (如 192.168.0.*) 或 CIDR " +"表示法 (例如 192.168.100.0/24) 以逗号分隔的列表允许执行交易 (请 :ref:`transactions` ) " + +#: ../../configuration.rst:32 +msgid "" +"**csw_harvest_pagesize**: when harvesting other CSW servers, the number of " +"records per request to page by (default is 10)" +msgstr "" +"**csw_harvest_pagesize**: 当收集其它CSW服务器时,每项请求的记录数都会显示在各页" +"中 (每页默认的数量为 10)" + +#: ../../configuration.rst:34 +msgid "**[metadata:main]**" +msgstr "" + +#: ../../configuration.rst:36 +msgid "**identification_title**: the title of the service" +msgstr "**identification_title**: 服务项目标题" + +#: ../../configuration.rst:37 +msgid "**identification_abstract**: some descriptive text about the service" +msgstr "**identification_abstract**: 一些有关该服务的描述性文本" + +#: ../../configuration.rst:38 +msgid "" +"**identification_keywords**: comma delimited list of keywords about the " +"service" +msgstr "**identification_keywords**: 以逗号分隔的服务器有关的关键字列表" + +#: ../../configuration.rst:39 +msgid "" +"**identification_keywords_type**: keyword type as per the `ISO 19115 " +"MD_KeywordTypeCode codelist `_). Accepted values are " +"``discipline``, ``temporal``, ``place``, ``theme``, ``stratum``" +msgstr "" +"**identification_keywords_type**: 每 'ISO 19115 MD_KeywordTypeCode 代码列表" +"' _)的关键字类型。 接受的值是" +"``discipline``, ``temporal``, ``place``, ``theme``, ``stratum``" + +#: ../../configuration.rst:40 +msgid "**identification_fees**: fees associated with the service" +msgstr "**identification_fees**: 与服务有关的费用" + +#: ../../configuration.rst:41 +msgid "" +"**identification_accessconstraints**: access constraints associated with " +"the service" +msgstr "**identification_accessconstraints**: 访问与该服务相关的限制条目" + +#: ../../configuration.rst:42 +msgid "**provider_name**: the name of the service provider" +msgstr "**provider_name**: 服务提供者的名字" + +#: ../../configuration.rst:43 +msgid "**provider_url**: the URL of the service provider" +msgstr "**provider_url**: 服务提供者的网址" + +#: ../../configuration.rst:44 +msgid "**contact_name**: the name of the provider contact" +msgstr "**provider_name**: 服务提供者联系人" + +#: ../../configuration.rst:45 +msgid "**contact_position**: the position title of the provider contact" +msgstr "**contact_position**:提供者联系人的职位名称" + +#: ../../configuration.rst:46 +msgid "**contact_address**: the address of the provider contact" +msgstr "**contact_address**: 提供者联系人的地址" + +#: ../../configuration.rst:47 +msgid "**contact_city**: the city of the provider contact" +msgstr "**contact_city**:提供者联系人所在城市" + +#: ../../configuration.rst:48 +msgid "" +"**contact_stateorprovince**: the province or territory of the provider " +"contact" +msgstr "**contact_stateorprovince**: 提供者联系人所在省份或更详细地址" + +#: ../../configuration.rst:49 +msgid "**contact_postalcode**: the postal code of the provider contact" +msgstr "**contact_postalcode**: 提供者联系人所在地区的邮政编码" + +#: ../../configuration.rst:50 +msgid "**contact_country**: the country of the provider contact" +msgstr "**contact_country**: 提供者联系人所在国籍" + +#: ../../configuration.rst:51 +msgid "**contact_phone**: the phone number of the provider contact" +msgstr "**contact_phone**: 提供者联系人的电话号码" + +#: ../../configuration.rst:52 +msgid "**contact_fax**: the facsimile number of the provider contact" +msgstr "**contact_fax**: 提供者联系人的传真号码" + +#: ../../configuration.rst:53 +msgid "**contact_email**: the email address of the provider contact" +msgstr "**contact_email**: 提供者联系人的电子邮件地址" + +#: ../../configuration.rst:54 +msgid "" +"**contact_url**: the URL to more information about the provider contact" +msgstr "**contact_url**: 提供者联系人的详细URL" + +#: ../../configuration.rst:55 +msgid "**contact_hours**: the hours of service to contact the provider" +msgstr "**contact_hours**: 提供者联系人的服务时数" + +#: ../../configuration.rst:56 +msgid "**contact_instructions**: the how to contact the provider contact" +msgstr "**contact_instructions**: 如何与提供者取得联系" + +#: ../../configuration.rst:57 +msgid "" +"**contact_role**: the role of the provider contact as per the `ISO 19115 " +"CI_RoleCode codelist `_). Accepted values are ``author``, " +"``processor``, ``publisher``, ``custodian``, ``pointOfContact``, " +"``distributor``, ``user``, ``resourceProvider``, ``originator``, ``owner``, " +"``principalInvestigator``" +msgstr "" +"**contact_role**: 在 'ISO 19115 CI_RoleCode 代码列表中:' _)有每位提供" +"商联系人的职务。可接受的值包括 ``author``, " +"``processor``, ``publisher``, ``custodian``, ``pointOfContact``, " +"``distributor``, ``user``, ``resourceProvider``, ``originator``, ``owner``, " +"``principalInvestigator``" + +#: ../../configuration.rst:59 +msgid "**[repository]**" +msgstr "**[repository]**" + +#: ../../configuration.rst:61 +msgid "" +"**database**: the full file path to the metadata database, in database URL " +"format (see http://docs.sqlalchemy.org/en/latest/core/engines.html#database-" +"urls)" +msgstr "" +"**database**:元数据库中完整的文件路径,数据库URL格式(见 http://docs.sqlalchemy.org/en/latest/core/engines.html#database-urls)" + +#: ../../configuration.rst:62 +msgid "" +"**table**: the table name for metadata records (default is ``records``). " +"If you are using PostgreSQL with a DB schema other than ``public``, qualify " +"the table like ``myschema.table``" +msgstr "" +"**table**:元数据记录的表名(默认为 ``records``)。如果您在使用除了``public``以外" +"的DB模式PostgreSQL,表格就会被限定,像 ``myschema.table`` " + +#: ../../configuration.rst:63 +msgid "" +"**mappings**: custom repository mappings (see :ref:`custom_repository`)" +msgstr "**mappings**:自定义的映射库(请参见 :ref:`custom_repository` )" + +#: ../../configuration.rst:64 +msgid "" +"**source**: the source of this repository only if not local (e.g. :ref:" +"`geonode`, :ref:`odc`). Supported values are ``geonode``, ``odc``" +msgstr "" +"**source**:不在本地的数据库源(例如:请参考 :ref:`geonode` , :ref:`odc` )。现有值为" +"`geonode`,`odc`" + +#: ../../configuration.rst:65 +msgid "" +"**filter**: server side database filter to apply as mask to all CSW " +"requests (see :ref:`repofilters`)" +msgstr "" +"**filter**:服务器端的数据库过滤器,适用所有CSW请求掩码(请参阅: :ref:`repofilters`)" + +#: ../../configuration.rst:69 +msgid "" +"See :ref:`administration` for connecting your metadata repository and " +"supported information models." +msgstr "请参阅: :ref:`administration` ,用于连接您的元数据信息库和支持信息模型。" + +#: ../../configuration.rst:74 +msgid "MaxRecords Handling" +msgstr "最大记录处理" + +#: ../../configuration.rst:76 +msgid "" +"The The following describes how ``maxRecords`` is handled by the " +"configuration when handling ``GetRecords`` requests:" +msgstr "下面介绍的是 ``maxRecords`` 怎样处理 ``GetRecords`` 请求时的配置" + +#: ../../configuration.rst:1 +msgid "server.maxrecords" +msgstr "" + +#: ../../configuration.rst:1 +msgid "GetRecords.maxRecords" +msgstr " + +#: ../../configuration.rst:1 +msgid "Result" +msgstr "结果" + +#: ../../configuration.rst:1 +msgid "none set" +msgstr "未设定" + +#: ../../configuration.rst:1 +msgid "none passed" +msgstr "未通过" + +#: ../../configuration.rst:1 +msgid "10 (CSW default)" +msgstr "10 (CSW 默认值)" + +#: ../../configuration.rst:1 +msgid "20" +msgstr "20" + +#: ../../configuration.rst:1 +msgid "14" +msgstr "14" + +#: ../../configuration.rst:1 +msgid "100" +msgstr "100" + +#: ../../configuration.rst:1 +msgid "200" +msgstr "200" + +#: ../../configuration.rst:90 +msgid "Alternate Configurations" +msgstr "备用配置" + +#: ../../configuration.rst:92 +msgid "" +"By default, pycsw loads ``default.cfg`` at runtime. To load an alternate " +"configuration, modify ``csw.py`` to point to the desired configuration. " +"Alternatively, pycsw supports explicitly specifiying a configuration by " +"appending ``config=/path/to/default.cfg`` to the base URL of the service (e." +"g. ``http://localhost/pycsw/csw.py?config=tests/suites/default/default." +"cfg&service=CSW&version=2.0.2&request=GetCapabilities``). When the " +"``config`` parameter is passed by a CSW client, pycsw will override the " +"default configuration location and subsequent settings with those of the " +"specified configuration." +msgstr "" +"默认情况下,pycsw在运行时加载的是 ``default.cfg`` 。加载一个配置,修改``csw.py``来指定所需配置。" +"另外,pycsw还可以通过附加 ``config=/path/to/default.cfg``到服务器的基础URL来显式定义一个配置," +"例如 ``http://localhost/pycsw/csw.py?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetCapabilities`` 。" +"当 ``config`` 参数通过CSW客户端时,pycsw就会覆盖默认的配置所在地址,并且用这些指定的配置来完成接" +"下来的一系列设置。" + +#: ../../configuration.rst:94 +msgid "" +"This also provides the functionality to deploy numerous CSW servers with a " +"single pycsw installation." +msgstr "使用单个pycsw配置就可以部署大量的功能性CSW。" + +#: ../../configuration.rst:97 +msgid "Hiding the Location" +msgstr "隐藏的位置" + +#: ../../configuration.rst:99 +msgid "" +"Some deployments with alternate configurations prefer not to advertise the " +"base URL with the ``config=`` approach. In this case, there are many " +"options to advertise the base URL." +msgstr "" +"在做基URL时,一些备用配置的部署不用 ``config=`` 方式做声明。通常状态下,会有" +"很多别的方式来做声明。" + +#: ../../configuration.rst:102 +msgid "Environment Variables" +msgstr "环境变量" + +#: ../../configuration.rst:104 +msgid "" +"One option is using Apache's ``Alias`` and ``SetEnvIf`` directives. For " +"example, given the base URL ``http://localhost/pycsw/csw.py?config=foo." +"cfg``, set the following in Apache's ``httpd.conf``:" +msgstr "" +"有一种选择是使用 Apache 的``Alias`` 和 ``SetEnvIf`` 指令。 例如,可以指定基 " +"URL 'http://localhost/pycsw/csw.py?config=foo.cfg ',在 Apache 的 'httpd." +"conf' 下配置以下指令 ︰" + +#: ../../configuration.rst:113 +msgid "Apache must be restarted after changes to ``httpd.conf``" +msgstr "在更改 ``Httpd.conf`` 后必须重新启动 Apache" + +#: ../../configuration.rst:115 +msgid "" +"pycsw will use the configuration as set in the ``PYCSW_CONFIG`` environment " +"variable in the same manner as if it was specified in the base URL. Note " +"that the configuration value ``server.url`` value must match the " +"``Request_URI`` value so as to advertise correctly in pycsw's Capabilities " +"XML." +msgstr "" +"pycsw 将以同样的方式配置设置 ``PYCSW_CONFIG`` 的环境变量,就如同它在基 URL 中" +"指定了一样。 请注意,配置值 ``server.url`` 值必须匹配 ``Request_URI`` 值,这样" +"在 pycsw 的功能 XML 中就可以做正确声明了。" + +#: ../../configuration.rst:118 +msgid "Wrapper Script" +msgstr "包装器脚本" + +#: ../../configuration.rst:120 +msgid "" +"Another option is to write a simple wrapper (e.g. ``csw-foo.sh``), which " +"provides the same functionality and can be deployed without restarting " +"Apache:" +msgstr "" +"另一个选择是编写一个简单的包装器 (如``csw-foo.sh``),也会有相同的功能,而且" +"无需重新启动 Apache 也可以部署 ︰" diff --git a/docs/locale/zh/LC_MESSAGES/contributing.po b/docs/locale/zh/LC_MESSAGES/contributing.po new file mode 100644 index 000000000..9b614f58a --- /dev/null +++ b/docs/locale/zh/LC_MESSAGES/contributing.po @@ -0,0 +1,354 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: pycsw 2.0-dev\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-11-23 21:42+0800\n" +"PO-Revision-Date: 2016-06-03 15:38+0800\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: zh_CN\n" +"X-Generator: Poedit 1.8.7\n" + +#: ../../../CONTRIBUTING.rst:2 +msgid "Contributing to pycsw" +msgstr "pycsw的贡献" + +#: ../../../CONTRIBUTING.rst:4 +msgid "" +"The pycsw project openly welcomes contributions (bug reports, bug fixes, " +"code enhancements/features, etc.). This document will outline some " +"guidelines on contributing to pycsw. As well, the pycsw `community `_ is a great place to get an idea of how to connect and " +"participate in pycsw community and development." +msgstr "" +"Pycsw 项目是开源的 (bug 报告、 bug 修复、 代码增强功能等)。 此篇文章将概述" +"pycsw 的一些作用。 pycsw'社区' _ ,就是提供一些建议,应该" +"如何连接和参与 pycsw 社区,并如何更好地发展。" + +#: ../../../CONTRIBUTING.rst:9 +msgid "pycsw has the following modes of contribution:" +msgstr "以下是几项pycsw做出的贡献 ︰" + +#: ../../../CONTRIBUTING.rst:11 ../../../CONTRIBUTING.rst:25 +msgid "GitHub Commit Access" +msgstr "GitHub 提交修改的权限" + +#: ../../../CONTRIBUTING.rst:12 ../../../CONTRIBUTING.rst:33 +msgid "GitHub Pull Requests" +msgstr "GitHub 的请求" + +#: ../../../CONTRIBUTING.rst:15 +msgid "Code of Conduct" +msgstr "行为准则" + +#: ../../../CONTRIBUTING.rst:17 +msgid "" +"Contributors to this project are expected to act respectfully toward others " +"in accordance with the `OSGeo Code of Conduct `_." +msgstr "" +"此项目的贡献者是遵守 'OSGeo 行为守则' _" + +#: ../../../CONTRIBUTING.rst:20 +msgid "Contributions and Licensing" +msgstr "贡献和许可" + +#: ../../../CONTRIBUTING.rst:22 +msgid "" +"Contributors are asked to confirm that they comply with project `license " +"`_ guidelines." +msgstr "" +"贡献者应当符合 '许可证' _ 准则。" + +#: ../../../CONTRIBUTING.rst:27 +msgid "" +"proposals to provide developers with GitHub commit access shall be emailed " +"to the pycsw-devel `mailing list`_. Proposals shall be approved by the " +"pycsw development team. Committers shall be added by the project admin" +msgstr "" +"建议开发人员提供 GitHub 的提交访问权限,此权限应通过电子邮件发送到pycsw-" +"devel `mailing list`_。 希望 pycsw 开发团队可以允许。 应由项目管理员处添加访" +"问者" + +#: ../../../CONTRIBUTING.rst:28 +msgid "removal of commit access shall be handled in the same manner" +msgstr "应以同样的方式解除提交访问权限" + +#: ../../../CONTRIBUTING.rst:29 +msgid "" +"each committer must send an email to the pycsw mailing list agreeing to the " +"license guidelines (see `Contributions and Licensing Agreement Template " +"<#contributions-and-licensing-agreement-template>`_). **This is only " +"required once**" +msgstr "" +"每个提交的用户必须发送电子邮件到 pycsw 邮件列表中,前得是同意许可证准则 " +"(见 '贡献和许可协议模板 <#contributions-and-licensing-agreement-template>' " +"_)。只需一次即可。" + +#: ../../../CONTRIBUTING.rst:30 +msgid "" +"each committer shall be listed in https://github.com/geopython/pycsw/blob/" +"master/COMMITTERS.txt" +msgstr "" +"每个提交的用户会显示在https://github.com/geopython/pycsw/blob/master/" +"COMMITTERS.txt列表中" + +#: ../../../CONTRIBUTING.rst:35 +msgid "" +"pull requests can provide agreement to license guidelines as text in the " +"pull request or via email to the pycsw `mailing list`_ (see `Contributions " +"and Licensing Agreement Template <#contributions-and-licensing-agreement-" +"template>`_). **This is only required for a contributor's first pull " +"request. Subsequent pull requests do not require this step**" +msgstr "" +"pull 请求可以提供协议许可准则,在pull请求时可作为文本,也可以电邮至 pycsw 邮" +"件列表 (见 `贡献和许可协议模板<#contributions-and-licensing-agreement-template>`_ )。 这只需要在第一次Pull请求时使用。 后续的请求不需要此步骤" + +#: ../../../CONTRIBUTING.rst:36 +msgid "" +"pull requests may include copyright in the source code header by the " +"contributor if the contribution is significant or the contributor wants to " +"claim copyright on their contribution" +msgstr "如果有重大贡献或贡献者想要申请版权专利,pull请求可以将源代码设置权限" + +#: ../../../CONTRIBUTING.rst:37 +msgid "" +"all contributors shall be listed at https://github.com/geopython/pycsw/" +"graphs/contributors" +msgstr "" +"所有贡献者均在 https://github.com/geopython/pycsw/graphs/contributors 列表中" + +#: ../../../CONTRIBUTING.rst:38 +msgid "" +"unclaimed copyright, by default, is assigned to the main copyright holders " +"as specified in https://github.com/geopython/pycsw/blob/master/LICENSE.txt" +msgstr "" +"若无人声明版权所属,在默认情况下,会指定分配给主要的版权持有人,在https://" +"github.com/geopython/pycsw/blob/master/LICENSE.txt中强调指出" + +#: ../../../CONTRIBUTING.rst:41 +msgid "Contributions and Licensing Agreement Template" +msgstr "贡献和许可协议模板" + +#: ../../../CONTRIBUTING.rst:43 +msgid "" +"``Hi all, I'd like to contribute " +"to pycsw. I confirm that my contributions to pycsw will be compatible with " +"the pycsw license guidelines at the time of contribution.``" +msgstr "" +"``大家好,我愿意在pycsw贡献 。我证" +"明,我对pycsw的贡献将与pycsw许可指南兼容。``" + +#: ../../../CONTRIBUTING.rst:49 +msgid "GitHub" +msgstr "GitHub" + +#: ../../../CONTRIBUTING.rst:51 +msgid "" +"Code, tests, documentation, wiki and issue tracking are all managed on " +"GitHub. Make sure you have a `GitHub account `_." +msgstr "" +"代码,测试,文档,wiki和问题都在GitHub上进行追踪管理,以确保每个人均有一个自" +"己的 GitHub的账户 。 " + +#: ../../../CONTRIBUTING.rst:55 +msgid "Code Overview" +msgstr "代码概览" + +#: ../../../CONTRIBUTING.rst:57 +msgid "" +"the pycsw `wiki `_ documents an overview of the codebase" +msgstr "" +"在pycsw `维基 `_ 有" +"详细的代码库概述" + +#: ../../../CONTRIBUTING.rst:60 +msgid "Documentation" +msgstr "说明文件" + +#: ../../../CONTRIBUTING.rst:62 +msgid "documentation is managed in ``docs/``, in reStructuredText format" +msgstr "文档在 ``docs/`` 中管理,以reStructuredText格式" + +#: ../../../CONTRIBUTING.rst:63 +msgid "`Sphinx`_ is used to generate the documentation" +msgstr "`Sphinx`_ 作用是生成文档" + +#: ../../../CONTRIBUTING.rst:64 +msgid "" +"See the `reStructuredText Primer `_ on rST " +"markup and syntax." +msgstr "" +"在RST上的标记和语法中见 reStructuredText Primer 。" + +#: ../../../CONTRIBUTING.rst:67 +msgid "Bugs" +msgstr "错误" + +#: ../../../CONTRIBUTING.rst:69 +msgid "" +"pycsw's `issue tracker `_ is the " +"place to report bugs or request enhancements. To submit a bug be sure to " +"specify the pycsw version you are using, the appropriate component, a " +"description of how to reproduce the bug, as well as what version of Python " +"and platform. For convenience, you can run ``pycsw-admin.py -c " +"get_sysprof`` and copy/paste the output into your issue." +msgstr "" +" `_是pycsw问题跟踪器,是报告错误" +"或要求改进的地方。当您提交出现的错误时,一定要指定您正在使用的pycsw版本,相" +"应的组件,如何操作显示的错误信息,以及Python和平台的版本。为方便起见,你可以" +"运行``pycsw-admin.py -c get_sysprof``,并将输出信息复制、粘贴到您的问题中。" + +#: ../../../CONTRIBUTING.rst:72 +msgid "Forking pycsw" +msgstr "分叉pycsw" + +#: ../../../CONTRIBUTING.rst:74 +msgid "" +"Contributions are most easily managed via GitHub pull requests. `Fork " +"`_ pycsw into your own GitHub " +"repository to be able to commit your work and submit pull requests." +msgstr "" +"通过 GitHub pull 请求后,贡献是最容易管理的。 '叉' _ pycsw 放到你自己 GitHub 存储库中,这样可以轻松地提" +"交你的工作,并提交pull请求。" + +#: ../../../CONTRIBUTING.rst:78 +msgid "Development" +msgstr "开发" + +#: ../../../CONTRIBUTING.rst:81 +msgid "GitHub Commit Guidelines" +msgstr "GitHub 提交指南" + +#: ../../../CONTRIBUTING.rst:83 +msgid "enhancements and bug fixes should be identified with a GitHub issue" +msgstr "增强和 bug 修复应该等同于 GitHub 问题" + +#: ../../../CONTRIBUTING.rst:84 +msgid "" +"commits should be granular enough for other developers to understand the " +"nature / implications of the change(s)" +msgstr "提交时粒数应该足够量,为方便其他开发人员了解自然/变化的影响(S)" + +#: ../../../CONTRIBUTING.rst:85 +msgid "" +"for trivial commits that do not need `Travis CI `_ to run, include ``[ci skip]`` as part of the commit " +"message" +msgstr "" +"如果是一些琐碎的提交,就像是 ``[ci skip]`` 也是做为提交消息的一部分,则不需" +"要运行`Travis CI `_," + +#: ../../../CONTRIBUTING.rst:86 +msgid "" +"non-trivial Git commits shall be associated with a GitHub issue. As " +"documentation can always be improved, tickets need not be opened for " +"improving the docs" +msgstr "" +"若是重大事件的 Git 提交应与 GitHub 问题部门取得联系。 以文档格式是可以修改" +"的,但修改文档的tickets则是不必公开的" + +#: ../../../CONTRIBUTING.rst:87 +msgid "Git commits shall include a description of changes" +msgstr "Git 提交应包括更改说明" + +#: ../../../CONTRIBUTING.rst:88 +msgid "" +"Git commits shall include the GitHub issue number (i.e. ``#1234``) in the " +"Git commit log message" +msgstr "Git 提交应在Git 提交日志中写入 GitHub 问题编号 (例如 ' #1234 ')" + +#: ../../../CONTRIBUTING.rst:89 +msgid "" +"all enhancements or bug fixes must successfully pass all :ref:`ogc-cite` " +"tests before they are committed" +msgstr "在提交之前,所有应改进的或错误修改的必须通过所有 :ref:`ogc-cite` 测试" + +#: ../../../CONTRIBUTING.rst:90 +msgid "" +"all enhancements or bug fixes must successfully pass all :ref:`tests` tests " +"before they are committed" +msgstr "在提交之前,所有应改进的或错误修改的必须通过所有 :ref:`tests` 测试" + +#: ../../../CONTRIBUTING.rst:91 +msgid "" +"enhancements which can be demonstrated from the pycsw :ref:`tests` should " +"be accompanied by example CSW request XML" +msgstr "pycsw加强的部分请参考 :ref:`tests` ,应附有像CSW的 请求 XML" + +#: ../../../CONTRIBUTING.rst:94 +msgid "Coding Guidelines" +msgstr "编码准则" + +#: ../../../CONTRIBUTING.rst:96 +msgid "pycsw instead of PyCSW, pyCSW, Pycsw" +msgstr "写法应是pycsw,而不是 PyCSW,pyCSW,Pycsw" + +#: ../../../CONTRIBUTING.rst:97 +msgid "always code with `PEP 8`_ conventions" +msgstr "应是 `PEP 8`_ 公约代码" + +#: ../../../CONTRIBUTING.rst:98 +msgid "" +"always run source code through ``pep8`` and `pylint`_, using all pylint " +"defaults except for ``C0111``. ``sbin/pycsw-pylint.sh`` is included for " +"convenience" +msgstr "" +"应使用所有 pylint 默认设置的 ``pep8`` 与 `pylint`_,运行除了 ``C0111`` 的源代" +"码。 ``sbin/pycsw-pylint.sh`` 是为了方便起见" + +#: ../../../CONTRIBUTING.rst:99 +msgid "" +"for exceptions which make their way to OGC ``ExceptionReport`` XML, always " +"specify the appropriate ``locator`` and ``code`` parameters" +msgstr "" +"除了OGC 'ExceptionReport' XML运行方式为个别例外,通常会指定合适的 '定位器 " +"'和' 代码 ' 参数" + +#: ../../../CONTRIBUTING.rst:100 +msgid "" +"the pycsw wiki documents `developer tasks`_ for things like releasing " +"documentation, testing, etc." +msgstr "pycsw wiki 文档的 `developer tasks`_ 类似于发布文档,测试等。" + +#: ../../../CONTRIBUTING.rst:103 +msgid "Submitting a Pull Request" +msgstr "提交pull请求" + +#: ../../../CONTRIBUTING.rst:105 +msgid "" +"This section will guide you through steps of working on pycsw. This " +"section assumes you have forked pycsw into your own GitHub repository." +msgstr "" +"这一节将指导您操作pycsw的步骤。 本节假定在您自己GitHub资料库中,有分叉的 " +"pycsw。" + +#: ../../../CONTRIBUTING.rst:129 +msgid "" +"Your changes are now visible on your pycsw repository on GitHub. You are " +"now ready to create a pull request. A member of the pycsw team will review " +"the pull request and provide feedback / suggestions if required. If " +"changes are required, make them against the same branch and push as per " +"above (all changes to the branch in the pull request apply)." +msgstr "" +"您的更改在 GitHub自己的 pycsw 存储库为可见状态。 现在你要创建pull请求。Pycsw" +"的团队成员将审查你的pull请求,若您有需要,团队成员会提供给您反馈建议。 如果" +"需要改动,要另立分支,并push以上步骤 (pull请求中所有更改的分支)。" + +#: ../../../CONTRIBUTING.rst:133 +msgid "" +"The pull request will then be merged by the pycsw team. You can then " +"delete your local branch (on GitHub), and then update your own repository " +"to ensure your pycsw repository is up to date with pycsw master:" +msgstr "" +"然后pycsw 团队将合并pull请求。 你可以删除掉你本地的分支(在 GitHub),更新您" +"自己的库,以确保您的 pycsw 存储库与pycsw总站是同步的 ︰" diff --git a/docs/locale/zh/LC_MESSAGES/csw-support.po b/docs/locale/zh/LC_MESSAGES/csw-support.po new file mode 100644 index 000000000..c73c521f1 --- /dev/null +++ b/docs/locale/zh/LC_MESSAGES/csw-support.po @@ -0,0 +1,65 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2010-2015, Tom Kralidis This work is licensed under a +# Creative Commons Attribution 4.0 International License +# This file is distributed under the same license as the pycsw package. +# FIRST AUTHOR , 2016. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: pycsw 2.1-dev\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-07-21 21:02+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.3.4\n" + +#: ../../csw-support.rst:4 +msgid "CSW Support" +msgstr "" + +#: ../../csw-support.rst:7 +msgid "Versions" +msgstr "" + +#: ../../csw-support.rst:9 +msgid "" +"pycsw supports both CSW 2.0.2 and 3.0.0 versions by default. In " +"alignment with the CSW specifications, the default version returned is " +"the latest supported version. That is, pycsw will always behave like a " +"3.0.0 CSW unless the client explicitly requests a 2.0.2 CSW." +msgstr "" + +#: ../../csw-support.rst:14 +msgid "" +"The sample URLs below provide examples of how requests behaves against " +"various/missing/default version parameters." +msgstr "" + +#: ../../csw-support.rst:25 +msgid "Request Examples" +msgstr "" + +#: ../../csw-support.rst:27 +msgid "" +"The best place to look for sample requests is within the `tests/` " +"directory, which provides numerous examples of all supported APIs and " +"requests." +msgstr "" + +#: ../../csw-support.rst:30 +msgid "Additional examples:" +msgstr "" + +#: ../../csw-support.rst:32 +msgid "`Data.gov CSW HowTo v2.0`_" +msgstr "" + +#: ../../csw-support.rst:33 +msgid "`pycsw Quickstart on OSGeoLive`_" +msgstr "" + diff --git a/docs/locale/zh/LC_MESSAGES/distributedsearching.po b/docs/locale/zh/LC_MESSAGES/distributedsearching.po new file mode 100644 index 000000000..ff74a48d3 --- /dev/null +++ b/docs/locale/zh/LC_MESSAGES/distributedsearching.po @@ -0,0 +1,156 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: pycsw 2.0-dev\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-11-23 21:42+0800\n" +"PO-Revision-Date: 2016-06-06 15:05+0800\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: zh_CN\n" +"X-Generator: Poedit 1.8.7\n" + +#: ../../distributedsearching.rst:4 +msgid "Distributed Searching" +msgstr "分布式搜索" + +#: ../../distributedsearching.rst:8 +msgid "" +"Your server must be able to make outgoing HTTP requests for this " +"functionality." +msgstr "此功能的作用就是可以使你的服务器传出HTTP请求。" + +#: ../../distributedsearching.rst:10 +msgid "" +"pycsw has the ability to perform distributed searching against other CSW " +"servers. Distributed searching is disabled by default; to enable, ``server." +"federatedcatalogues`` must be set. A CSW client must issue a GetRecords " +"request with ``csw:DistributedSearch`` specified, along with an optional " +"``hopCount`` attribute (see subclause 10.8.4.13 of the CSW specification). " +"When enabled, pycsw will search all specified catalogues and return a " +"unified set of search results to the client. Due to the distributed nature " +"of this functionality, requests will take extra time to process compared to " +"queries against the local repository." +msgstr "" +"pycsw与其它CSW服务器不同的是,它有能力自己实现分布式搜索。此分布式搜索默认为" +"禁用;若想启用,必须设置 ``server.federatedcatalogues`` 。CSW客户端会发出一个" +"Getrecords指定性请求 ``csw:DistributedSearch`` ,以及一个可选的 ``hopCount`` " +"属性(见CSW规范中第10.8.4.13 )。当启用时,pycsw会搜索所有指定的目录并会将一" +"组统一的搜索结果返回给客户端。由于此功能的分布式性质,若要查询本地存储库,请" +"求可能会需要更多的时间来处理。" + +#: ../../distributedsearching.rst:13 +msgid "Scenario: Federated Search" +msgstr "场景:联合搜索" + +#: ../../distributedsearching.rst:15 +msgid "" +"pycsw deployment with 3 configurations (CSW-1, CSW-2, CSW-3), subsequently " +"providing three (3) endpoints. Each endpoint is based on an opaque " +"metadata repository (based on theme/place/discipline, etc.). Goal is to " +"perform a single search against all endpoints." +msgstr "" +"pycsw部署共有3项配置(CSW-1,CSW-2,CSW-3),同时也会提供3个端点。每个端点是" +"基于一个不透明的元数据信息库(基于主题/地点/学科等)。目标是执行对所有端点一" +"对一的搜索。" + +#: ../../distributedsearching.rst:17 +msgid "" +"pycsw realizes this functionality by supporting :ref:`alternate " +"configurations `, and exposes the additional CSW " +"endpoint(s) with the following design pattern:" +msgstr "" +"pycsw的本功能是靠 :ref:`交替配置` 支持的,并是按" +"以下设计模式来公开其他CSW端点的︰" + +#: ../../distributedsearching.rst:19 +msgid "CSW-1: ``http://localhost/pycsw/csw.py?config=CSW-1.cfg``" +msgstr "CSW-1: ``http://localhost/pycsw/csw.py?config=CSW-1.cfg``" + +#: ../../distributedsearching.rst:21 +msgid "CSW-2: ``http://localhost/pycsw/csw.py?config=CSW-2.cfg``" +msgstr "CSW-2: ``http://localhost/pycsw/csw.py?config=CSW-2.cfg``" + +#: ../../distributedsearching.rst:23 +msgid "CSW-3: ``http://localhost/pycsw/csw.py?config=CSW-3.cfg``" +msgstr "CSW-3: ``http://localhost/pycsw/csw.py?config=CSW-3.cfg``" + +#: ../../distributedsearching.rst:25 +msgid "" +"...where the ``*.cfg`` configuration files are configured for each " +"respective metadata repository. The above CSW endpoints can be interacted " +"with as usual." +msgstr "" +"只要有 ``*.cfg`` 这个配置文件,它就可以为每个元数据存储库进行配置。 以上的CSW" +"端点也可以像往常一样进行交互。" + +#: ../../distributedsearching.rst:27 +msgid "" +"To federate the discovery of the three (3) portals into a unified search, " +"pycsw realizes this functionality by deploying an additional configuration " +"which acts as the superset of CSW-1, CSW-2, CSW-3:" +msgstr "" +"将这3个门户联合成统一的搜索,pycsw就可以通过部署超集的CSW-1、 CSW-2、 CSW-3 " +"这些附加配置来实现此功能:" + +#: ../../distributedsearching.rst:29 +msgid "CSW-all: ``http://localhost/pycsw/csw.py?config=CSW-all.cfg``" +msgstr "所有的CSW: ``http://localhost/pycsw/csw.py?config=CSW-all.cfg``" + +#: ../../distributedsearching.rst:31 +msgid "" +"This allows the client to invoke one (1) CSW GetRecords request, in which " +"the CSW endpoint spawns the same GetRecords request to 1..n distributed CSW " +"endpoints. Distributed CSW endpoints are advertised in CSW Capabilities " +"XML via ``ows:Constraint``:" +msgstr "" +"这允许客户端调用 1 CSW GetRecords 请求,其中CSW端点就会生成相同的GetRecords" +"请求,从1到n分布各个CSW 终结点。分布式CSW端点通过 'ows:Constraint' 在CSW功" +"能 XML上发布广告︰" + +#: ../../distributedsearching.rst:45 +msgid "" +"...which advertises which CSW endpoint(s) the CSW server will spawn if a " +"distributed search is requested by the client." +msgstr "如果在客户端请求分布式搜索的话,CSW服务器将spawn。" + +#: ../../distributedsearching.rst:47 +msgid "in the CSW-all configuration:" +msgstr "CSW-all 配置" + +#: ../../distributedsearching.rst:55 +msgid "" +"At which point a CSW client request to CSW-all with " +"``distributedsearch=TRUE``, while specifying an optional ``hopCount``. " +"Query network topology:" +msgstr "" +"当指定选项``hopCount``时,CSW客户端就会用 ' distributedsearch = TRUE '请求所" +"有的CSW。 查询网络拓扑 ︰" + +#: ../../distributedsearching.rst:73 +msgid "" +"As a result, a pycsw deployment in this scenario may be approached on a per " +"'theme' basis, or at an aggregate level." +msgstr "" +"因此,在这个场景中,pycsw 部署就会深入每个 '主题' 的基础部分或总体水平。" + +#: ../../distributedsearching.rst:75 +msgid "" +"All interaction in this scenario is local to the pycsw installation, so " +"network performance would not be problematic." +msgstr "" +"在这个场景中的所有交互都是在本地pycsw 安装的,所以网络性能的好与坏是不会产生" +"影响的。" + +#: ../../distributedsearching.rst:77 +msgid "" +"A very important facet of distributed search is as per Annex B of OGC:CSW " +"2.0.2. Given that all the CSW endpoints are managed locally, duplicates " +"and infinite looping are not deemed to present an issue." +msgstr "" +"分布式搜索的一个非常重要的方面是OGC的附件B问题:CSW 2.0.2。鉴于所有的CSW端点" +"都是本地管理,因此复制和无限循环不会存在问题。" diff --git a/docs/locale/zh/LC_MESSAGES/geonode.po b/docs/locale/zh/LC_MESSAGES/geonode.po new file mode 100644 index 000000000..9731bde4f --- /dev/null +++ b/docs/locale/zh/LC_MESSAGES/geonode.po @@ -0,0 +1,61 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: pycsw 2.0-dev\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-17 17:33+0800\n" +"PO-Revision-Date: 2016-06-07 15:54+0800\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.3.4\n" + +#: ../../geonode.rst:4 +msgid "GeoNode Configuration" +msgstr "GeoNode配置" + +#: ../../geonode.rst:6 +msgid "" +"GeoNode (http://geonode.org/) is a platform for the management and " +"publication of geospatial data. It brings together mature and stable " +"open-source software projects under a consistent and easy-to-use " +"interface allowing users, with little training, to quickly and easily " +"share data and create interactive maps. GeoNode provides a cost-effective" +" and scalable tool for developing information management systems. " +"GeoNode uses CSW as a cataloguing mechanism to query and present " +"geospatial metadata." +msgstr "" +"GeoNode(http://geonode.org/)是地理空间数据管理和发布的平台。它是成熟且稳定的开源软件项目,具有一致性和易掌握性,只要稍加指导,就可以快速且轻松地分享数据,并能创建交互式地图。" +" " +"GeoNode是一种工具,为开发信息管理系统提供了节约成本且可伸缩等功能。GeoNode使用的是CSW,此CSW可查询编目,还可以显示当前的地理空间元数据。" +" " + +#: ../../geonode.rst:8 +msgid "" +"pycsw supports binding to an existing GeoNode repository for metadata " +"query. The binding is read-only (transactions are not in scope, as " +"GeoNode manages repository metadata changes in the application proper)." +msgstr "pycsw绑定到现有GeoNode库,此库用于元数据查询。此绑定是只读文件(交易不在范围内,GeoNode在适当的应用程序中管理库元数据)。" + +#: ../../geonode.rst:11 +msgid "GeoNode Setup" +msgstr "GeoNode设置" + +#: ../../geonode.rst:13 +msgid "" +"pycsw is enabled and configured by default in GeoNode, so there are no " +"additional steps required once GeoNode is setup. See the ``CATALOGUE`` " +"and ``PYCSW`` `settings.py entries`_ at " +"http://docs.geonode.org/en/latest/developers/reference/django-" +"apps.html#id1 for customizing pycsw within GeoNode." +msgstr "" +"在GeoNode中,pycsw 的启用和配置都是默认的,所以GeoNode的安装程序不需要额外步骤的。若想定制GeoNode-" +"pycsw,请参见http://docs.geonode.org/en/latest/developers/reference/django-" +"apps.html#id1中``CATALOGUE``和```PYCSW`` `settings.py entries`_ 。" + +#: ../../geonode.rst:15 +msgid "The GeoNode plugin is managed outside of pycsw within the GeoNode project." +msgstr "GeoNode插件不是由 GeoNode 项目中的 pycsw 管理。" + diff --git a/docs/locale/zh/LC_MESSAGES/hhypermap.po b/docs/locale/zh/LC_MESSAGES/hhypermap.po new file mode 100644 index 000000000..1924dc904 --- /dev/null +++ b/docs/locale/zh/LC_MESSAGES/hhypermap.po @@ -0,0 +1,72 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2010-2015, Tom Kralidis This work is licensed under a +# Creative Commons Attribution 4.0 International License +# This file is distributed under the same license as the pycsw package. +# FIRST AUTHOR , 2016. +# +msgid "" +msgstr "" +"Project-Id-Version: pycsw 2.0-dev\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-17 17:33+0800\n" +"PO-Revision-Date: 2016-06-06 16:04+0800\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.3.4\n" + +#: ../../hhypermap.rst:4 +msgid "HHypermap Configuration" +msgstr "HHypermap配置" + +#: ../../hhypermap.rst:6 +#, fuzzy +msgid "" +"HHypermap (Harvard Hypermap) Registry (https://github.com/cga-" +"harvard/HHypermap) is an application that manages OWS, Esri REST, and " +"other types of map service harvesting, and maintains uptime statistics " +"for services and layers. HHypermap Registry will publish to HHypermap " +"Search (based on Lucene) which provides a fast search and visualization " +"environment for spatio-temporal materials." +msgstr "" +"HHypermap (Harvard Hypermap) Supervisor(https://github.com/cga-" +"harvard/HHypermap)是管理OWS、ESRI " +"REST、其他类型的地图服务、维护服务和图层正常运行统计的一款应用程序。HHypermap " +"Supervisor会发布到HHypermap搜索中(基于Lucene),它可实现空间数据的快速搜索和可视化环境。" + +#: ../../hhypermap.rst:8 +msgid "" +"HHypermap uses CSW as a cataloguing mechanism to ingest, query and " +"present geospatial metadata." +msgstr "HHypermap使用CSW作为摄取、查询、地理空间元数据显示的编目。" + +#: ../../hhypermap.rst:10 +msgid "" +"pycsw supports binding to an existing HHypermap repository for metadata " +"query." +msgstr "为元数据查询,将pycsw绑定到已有的HHypermap存储库。" + +#: ../../hhypermap.rst:13 +msgid "HHypermap Setup" +msgstr "HHypermap设置" + +#: ../../hhypermap.rst:15 +msgid "" +"pycsw is enabled and configured by default in HHypermap, so there are no " +"additional steps required once HHypermap is setup. See the " +"``REGISTRY_PYCSW`` `hypermap/settings.py entries`_ for customizing pycsw " +"within HHypermap." +msgstr "" +"在HHypermap中,pycsw的启用与配置是默认设置的,所以HHypermap的安装程序是不需要额外步骤的。" +"想定制HHypermap-pycsw,请参见 " +"``REGISTRY_PYCSW`` `hypermap/settings.py entries`_ "。 + +#: ../../hhypermap.rst:17 +msgid "" +"The HHypermap plugin is managed outside of pycsw within the HHypermap " +"project. HHypermap settings must ensure that " +"``REGISTRY_PYCSW['repository']['source']`` is set " +"to``hypermap.search.pycsw_repository``." +msgstr "" diff --git a/docs/locale/zh/LC_MESSAGES/index.po b/docs/locale/zh/LC_MESSAGES/index.po new file mode 100644 index 000000000..218f14f3a --- /dev/null +++ b/docs/locale/zh/LC_MESSAGES/index.po @@ -0,0 +1,35 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: pycsw 2.0-dev\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-11-23 21:42+0800\n" +"PO-Revision-Date: 2016-06-06 16:09+0800\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: zh_CN\n" +"X-Generator: Poedit 1.8.7\n" + +#: ../../index.rst:5 +msgid "pycsw |release| Documentation" +msgstr "pycsw 发布 文档" + +#: ../../index.rst:7 +msgid "Tom Kralidis" +msgstr "Tom Kralidis" + +#: ../../index.rst:8 +msgid "tomkralidis at gmail.com" +msgstr "tomkralidis at gmail.com" + +#: ../../index.rst:9 +msgid "|release|" +msgstr "发布" + +#: ../../index.rst:10 +msgid "|today|" +msgstr "今天" diff --git a/docs/locale/zh/LC_MESSAGES/installation.po b/docs/locale/zh/LC_MESSAGES/installation.po new file mode 100644 index 000000000..735c784de --- /dev/null +++ b/docs/locale/zh/LC_MESSAGES/installation.po @@ -0,0 +1,270 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: pycsw 2.0-dev\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-07-21 21:02+0800\n" +"PO-Revision-Date: 2016-06-07 10:58+0800\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.3.4\n" + +#: ../../installation.rst:4 +msgid "Installation" +msgstr "安装" + +#: ../../installation.rst:7 +msgid "System Requirements" +msgstr "系统要求" + +#: ../../installation.rst:9 +msgid "" +"pycsw is written in `Python `_, and works with " +"(tested) version 2.6, 2.7 and 3.4" +msgstr "pycsw 编写语言是 `Python `_ ,版本(测试通过)为 2.6, 2.7及3.4" + +#: ../../installation.rst:11 +msgid "pycsw requires the following Python supporting libraries:" +msgstr "pycsw 是由以下Python库支撑的︰" + +#: ../../installation.rst:13 +msgid "`lxml`_ for XML support" +msgstr "`lxml`_ 用于XML 支撑" + +#: ../../installation.rst:14 +msgid "`SQLAlchemy`_ for database bindings" +msgstr "`SQLAlchemy`_ 用于数据库绑定" + +#: ../../installation.rst:15 +msgid "`pyproj`_ for coordinate transformations" +msgstr "`pyproj`_ 用于变换坐标" + +#: ../../installation.rst:16 +msgid "`Shapely`_ for spatial query / geometry support" +msgstr "`Shapely`_ 用于空间查询/ 几何支持" + +#: ../../installation.rst:17 +msgid "`OWSLib`_ for CSW client and metadata parser" +msgstr "`OWSLib`_ 用于CSW客户端和元数据分析" + +#: ../../installation.rst:18 +msgid "`six`_ for Python 2/3 compatibility" +msgstr "`six`_ 用于处理 Python 2/3 兼容性" + +#: ../../installation.rst:19 +msgid "`xmltodict`_ for working with XML similar to working with JSON" +msgstr "`xmltodict`_ ,来像使用 JSON 一样使用 XML" + +#: ../../installation.rst:20 +msgid "`geolinks`_ for dealing with geospatial links" +msgstr "`geolinks`_ 处理 地理空间链接" + +#: ../../installation.rst:24 +msgid "You can install these dependencies via `easy_install`_ or `pip`_" +msgstr "通过 `easy_install`_ or `pip`_ 可以安装一些与之相关的程序" + +#: ../../installation.rst:28 +msgid "" +"For :ref:`GeoNode ` or :ref:`Open Data Catalog ` or " +":ref:`HHypermap ` deployments, SQLAlchemy is not required" +msgstr "对于 :ref:`GeoNode ` 或 :ref:`Open Data Catalog ` ,或 :ref:`HHypermap ` 部署,SQLAlchemy 不是必需的" + +#: ../../installation.rst:31 +msgid "Installing from Source" +msgstr "从源代码安装" + +#: ../../installation.rst:33 +msgid "" +"`Download `_ the latest stable version or " +"fetch from Git." +msgstr " `下载`_ 最新稳定版本,或从 Git 获取。" + +#: ../../installation.rst:36 +msgid "For Developers and the Truly Impatient" +msgstr "为开发人员和真正Impatient" + +#: ../../installation.rst:38 +msgid "The 4 minute install:" +msgstr "安装需要4分钟" + +#: ../../installation.rst:56 +msgid "The Quick and Dirty Way" +msgstr "快速但并非完善的方式" + +#: ../../installation.rst:62 +msgid "" +"Ensure that CGI is enabled for the install directory. For example, on " +"Apache, if pycsw is installed in ``/srv/www/htdocs/pycsw`` (where the URL" +" will be ``http://host/pycsw/csw.py``), add the following to " +"``httpd.conf``:" +msgstr "" +"确保在安装目录中 CGI已启用。 例如,对 Apache,如果 pycsw 安装在 ``/srv/www/htdocs/pycsw`` " +"(这时,URL 就会在 ``http://host/pycsw/csw.py`` ),将以下信息添加至 ``httpd.conf`` :" + +#: ../../installation.rst:73 +msgid "" +"If pycsw is installed in ``cgi-bin``, this should work as expected. In " +"this case, the :ref:`tests ` application must be moved to a " +"different location to serve static HTML documents." +msgstr "" +"如果 pycsw安装在 ``cgi-bin`` 下,工作就能预期进行。在这种情况下, :ref:`tests` " +"应用程序就必须转移到其它位置,成为静态的 HTML 文件。" + +#: ../../installation.rst:75 +msgid "" +"Make sure, you have all the dependencies from ``requirements.txt and " +"requirements-standalone.txt``" +msgstr "" +"请确保你已经从 ``requirements.txt and requirements-standalone.txt`` " +"获得所有dependencies" + +#: ../../installation.rst:78 +msgid "The Clean and Proper Way" +msgstr "适当的方式" + +#: ../../installation.rst:86 +msgid "" +"At this point, pycsw is installed as a library and requires a CGI " +"``csw.py`` or WSGI ``pycsw/wsgi.py`` script to be served into your web " +"server environment (see below for WSGI configuration/deployment)." +msgstr "" +"在这一点上,pycsw 安装库将 CGI 'csw.py '或 WSGI' pycsw/wsgi.py ' 脚本发送到您的 web 服务器环境 " +"(参见下文 WSGI 配置/部署)。" + +#: ../../installation.rst:93 +msgid "Installing from the Python Package Index (PyPi)" +msgstr "从 Python Package 指数 (PyPi) 安装" + +#: ../../installation.rst:105 +msgid "Installing from OpenSUSE Build Service" +msgstr "从 OpenSUSE 生成服务安装" + +#: ../../installation.rst:107 +msgid "" +"In order to install the pycsw package in openSUSE Leap (stable " +"distribution), one can run the following commands as user ``root``:" +msgstr "若要在 openSUSE Leap (稳定版本) 安装 pycsw 包,就可以以用户 ``root`` 身份运行以下命令 ︰" + +#: ../../installation.rst:116 +msgid "" +"In order to install the pycsw package in openSUSE Tumbleweed (rolling " +"distribution), one can run the following commands as user ``root``:" +msgstr "若要在 openSUSE Tumbleweed (滚动版本) 安装 pycsw 包,就可以以用户 ``root`` 身份运行以下命令 ︰" + + +#: ../../installation.rst:124 +msgid "" +"An alternative method is to use the `One-Click Installer " +"`_." +msgstr "" +"另一种方法是使用一键式安装程序" +"`_." + +#: ../../installation.rst:129 +msgid "Installing on Ubuntu/Mint" +msgstr "在 Ubuntu/Mint系统上安装" + +#: ../../installation.rst:131 +msgid "" +"In order to install the most recent pycsw release to an Ubuntu-based " +"distribution, one can use the UbuntuGIS Unstable repository by running " +"the following commands:" +msgstr "为了在基于 Ubuntu 的发行版安装最新的 pycsw,可以运行以下命令来使用 UbuntuGIS 非稳定版本 ︰" + +#: ../../installation.rst:139 +msgid "" +"Alternatively, one can use the UbuntuGIS Stable repository which includes" +" older but very well tested versions:" +msgstr "" + +#: ../../installation.rst:141 +msgid "" +"# sudo add-apt-repository ppa:ubuntugis/ppa # sudo apt-get update # sudo " +"apt-get install python-pycsw pycsw-cgi" +msgstr "" + +#: ../../installation.rst:146 +msgid "" +"Since Ubuntu 16.04 LTS Xenial release, pycsw is included by default in " +"the official Multiverse repository." +msgstr "" + +#: ../../installation.rst:149 +msgid "Running on Windows" +msgstr "在 Windows 上运行" + +#: ../../installation.rst:151 +msgid "For Windows installs, change the first line of ``csw.py`` to:" +msgstr "对于Windows 安装,更改 'csw.py ' 的第一行 ︰" + +#: ../../installation.rst:158 +msgid "" +"The use of ``-u`` is required to properly output gzip-compressed " +"responses." +msgstr "使用 ``-u`` 需要正确输出 gzip 压缩响应。" + +#: ../../installation.rst:161 +msgid "Security" +msgstr "安全性" + +#: ../../installation.rst:163 +msgid "" +"By default, ``default.cfg`` is at the root of the pycsw install. If " +"pycsw is setup outside an HTTP server's ``cgi-bin`` area, this file could" +" be read. The following options protect the configuration:" +msgstr "" +"默认情况下,' default.cfg ' 是 pycsw 安装的根目录。 如果 pycsw 设置在 HTTP 服务器 'cgi-bin' " +"区域以外,此文件就可以被读取。 以下是几项保护配置的选项 ︰" + +#: ../../installation.rst:165 +msgid "" +"move ``default.cfg`` to a non HTTP accessible area, and modify ``csw.py``" +" to point to the updated location" +msgstr "将 'default.cfg' 移动到非 HTTP 可访问的区域,并修改 'csw.py' 以指向更新的位置" + +#: ../../installation.rst:166 +msgid "" +"configure web server to deny access to the configuration. For example, " +"in Apache, add the following to ``httpd.conf``:" +msgstr "配置 web 服务器,拒绝对配置的访问。 例如,在 Apache 中,在 'httpd.conf '下添加以下内容:" + +#: ../../installation.rst:177 +msgid "Running on WSGI" +msgstr "在 WSGI 上运行" + +#: ../../installation.rst:179 +msgid "" +"pycsw supports the `Web Server Gateway Interface`_ (WSGI). To run pycsw " +"in WSGI mode, use ``pycsw/wsgi.py`` in your WSGI server environment." +msgstr "" +"pycsw 支持 `Web 服务器网关接口`_ (WSGI)。 在 WSGI 模式下运行 pycsw,在 WSGI 服务器环境中使用 " +"``pycsw/wsgi.py`` 。" + +#: ../../installation.rst:184 +msgid "" +"``mod_wsgi`` supports only the version of python it was compiled with. If" +" the target server already supports WSGI applications, pycsw will need to" +" use the same python version. `WSGIDaemonProcess`_ provides a ``python-" +"path`` directive that may allow a virtualenv created from the python " +"version ``mod_wsgi`` uses." +msgstr "" +"``mod_wsgi`` 只支持已编译的python版本。如果目标服务器支持 WSGI 应用,pycsw也是相同的 python " +"版本。`WSGIDaemonProcess`_ 提供一个 ``python-path`` 指令,其允许从 python 版本 " +"``mod_wsgi`` 进行virtualenv 的创建。" + +#: ../../installation.rst:188 +msgid "Below is an example of configuring with Apache:" +msgstr "下面是Apache 配置的示例 ︰" + +#: ../../installation.rst:201 +msgid "or use the `WSGI reference implementation`_:" +msgstr "或者使用 `WSGI 参考实例`_ :" + +#: ../../installation.rst:208 +msgid "which will publish pycsw to ``http://localhost:8000/``" +msgstr " 将pycsw发布到 ``http://localhost:8000/`` " + + diff --git a/docs/locale/zh/LC_MESSAGES/introduction.po b/docs/locale/zh/LC_MESSAGES/introduction.po new file mode 100644 index 000000000..61b8d8c19 --- /dev/null +++ b/docs/locale/zh/LC_MESSAGES/introduction.po @@ -0,0 +1,558 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: pycsw 2.0-dev\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-07-21 21:52+0800\n" +"PO-Revision-Date: 2016-06-08 11:02+0800\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.3.4\n" + +#: ../../introduction.rst:4 +msgid "Introduction" +msgstr "引言" + +#: ../../introduction.rst:6 +msgid "pycsw is an OGC CSW server implementation written in Python." +msgstr "pycsw是使用 Python 语言实现的 OGC CSW 服务。" + +#: ../../introduction.rst:9 +msgid "Features" +msgstr "特性" + +#: ../../introduction.rst:11 +msgid "" +"certified OGC `Compliant`_ and OGC Reference Implementation for both CSW " +"2.0.2 and CSW 3.0.0" +msgstr "认证 OGC `Compliant`_ 与 OGC 参考实现" + +#: ../../introduction.rst:12 +msgid "harvesting support for WMS, WFS, WCS, WPS, WAF, CSW, SOS" +msgstr "WMS、WFS、WCS、WPS、WAF、CSW、SOS得到支持" + +#: ../../introduction.rst:13 +msgid "implements `INSPIRE Discovery Services 3.0`_" +msgstr "实现了 `INSPIRE Discovery Services 3.0`_" + +#: ../../introduction.rst:14 +msgid "implements `ISO Metadata Application Profile 1.0.0`_" +msgstr "实现了 `ISO Metadata Application Profile 1.0.0`_" + +#: ../../introduction.rst:15 +msgid "implements `FGDC CSDGM Application Profile for CSW 2.0`_" +msgstr "实现了 `FGDC CSDGM Application Profile for CSW 2.0`_" + +#: ../../introduction.rst:16 +msgid "implements the Search/Retrieval via URL (`SRU`_) search protocol" +msgstr "实现了通过URL (`SRU`_) 查找接口进行查找或抓取" + +#: ../../introduction.rst:17 +msgid "implements Full Text Search capabilities" +msgstr "实现了全文检索的功能" + +#: ../../introduction.rst:18 +msgid "implements OGC OpenSearch Geo and Time Extensions" +msgstr "实现了 OGC 开放搜索与时空扩展" + +#: ../../introduction.rst:19 +msgid "implements Open Archives Initiative Protocol for Metadata Harvesting" +msgstr "支持元数据主动文档开放协议" + +#: ../../introduction.rst:20 +msgid "supports ISO, Dublin Core, DIF, FGDC, Atom and GM03 metadata models" +msgstr "支持 ISO、Dublin Core、DIF、FGDC,Atom与 GM03 元数据模型" + +#: ../../introduction.rst:21 +msgid "CGI or WSGI deployment" +msgstr "CGI或WSCI部署" + +#: ../../introduction.rst:22 +msgid "Python 2 and 3 compatible" +msgstr "" + +#: ../../introduction.rst:23 +msgid "simple configuration" +msgstr "简单配置" + +#: ../../introduction.rst:24 +msgid "transactional capabilities (CSW-T)" +msgstr "事务功能(CSW-T))" + +#: ../../introduction.rst:25 +msgid "flexible repository configuration" +msgstr "灵活的存储配置" + +#: ../../introduction.rst:26 +msgid "`GeoNode`_ connectivity" +msgstr "连接 `GeoNode`_ " + +#: ../../introduction.rst:27 +msgid "`HHypermap`_ connectivity" +msgstr "连接 `HHypermap`_ " + +#: ../../introduction.rst:28 +msgid "`Open Data Catalog`_ connectivity" +msgstr "连接 `开放数据目录`_" + +#: ../../introduction.rst:29 +msgid "`CKAN`_ connectivity" +msgstr "连接 `CKAN`_ " + +#: ../../introduction.rst:30 +msgid "federated catalogue distributed searching" +msgstr "联合目录分布式搜索" + +#: ../../introduction.rst:31 +msgid "realtime XML Schema validation" +msgstr "实时XML Schema验证" + +#: ../../introduction.rst:32 +msgid "extensible profile plugin architecture" +msgstr "可扩展的配置文件插件架构" + +#: ../../introduction.rst:35 +msgid "Standards Support" +msgstr "支持的标准" + +#: ../../introduction.rst:38 +msgid "Standard" +msgstr "标准" + +#: ../../introduction.rst:38 +msgid "Version(s)" +msgstr "版本" + +#: ../../introduction.rst:40 +msgid "`OGC CSW`_" +msgstr "`OGC CSW`_" + +#: ../../introduction.rst:40 +msgid "2.0.2, 3.0.0" +msgstr "" + +#: ../../introduction.rst:42 +msgid "`OGC Filter`_" +msgstr "`OGC Filte`_" + +#: ../../introduction.rst:42 +msgid "1.1.0, 2.0.0" +msgstr "" + +#: ../../introduction.rst:44 +msgid "`OGC OWS Common`_" +msgstr "" + +#: ../../introduction.rst:44 +msgid "1.0.0, 2.0.0" +msgstr "" + +#: ../../introduction.rst:46 +msgid "`OGC GML`_" +msgstr "`OGC GML`_" + +#: ../../introduction.rst:46 +msgid "3.1.1" +msgstr "3.1.1" + +#: ../../introduction.rst:48 +msgid "`OGC SFSQL`_" +msgstr "`OGC SFSQL`_" + +#: ../../introduction.rst:48 +msgid "1.2.1" +msgstr "1.2.1" + +#: ../../introduction.rst:50 +msgid "`Dublin Core`_" +msgstr "`Dublin Core`_" + +#: ../../introduction.rst:50 ../../introduction.rst:66 +msgid "1.1" +msgstr "1.1" + +#: ../../introduction.rst:52 +msgid "`SOAP`_" +msgstr "`SOAP`_" + +#: ../../introduction.rst:52 +msgid "1.2" +msgstr "1.2" + +#: ../../introduction.rst:54 +msgid "`ISO 19115`_" +msgstr "`ISO 19115`_" + +#: ../../introduction.rst:54 +msgid "2003" +msgstr "2003" + +#: ../../introduction.rst:56 +msgid "`ISO 19139`_" +msgstr "`ISO 19139`_" + +#: ../../introduction.rst:56 +msgid "2007" +msgstr "2007" + +#: ../../introduction.rst:58 +msgid "`ISO 19119`_" +msgstr "`ISO 19119`_" + +#: ../../introduction.rst:58 +msgid "2005" +msgstr "2005" + +#: ../../introduction.rst:60 +msgid "`NASA DIF`_" +msgstr "`NASA DIF`_" + +#: ../../introduction.rst:60 +msgid "9.7" +msgstr "9.7" + +#: ../../introduction.rst:62 +msgid "`FGDC CSDGM`_" +msgstr "`FGDC CSDGM`_" + +#: ../../introduction.rst:62 +msgid "1998" +msgstr "1998" + +#: ../../introduction.rst:64 +msgid "`GM03`_" +msgstr "`GM03`_" + +#: ../../introduction.rst:64 +msgid "2.1" +msgstr "2.1" + +#: ../../introduction.rst:66 +msgid "`SRU`_" +msgstr "`SRU`_" + +#: ../../introduction.rst:68 +msgid "`OGC OpenSearch`_" +msgstr "`OGC OpenSearch`_" + +#: ../../introduction.rst:68 +msgid "1.0" +msgstr "1.0" + +#: ../../introduction.rst:70 +msgid "`OAI-PMH`_" +msgstr "" + +#: ../../introduction.rst:70 +msgid "2.0" +msgstr "2.0" + +#: ../../introduction.rst:74 +msgid "Supported Operations" +msgstr "支持的操作" + +#: ../../introduction.rst:1 +msgid "Request" +msgstr "请求" + +#: ../../introduction.rst:1 +msgid "Optionality" +msgstr "可选性" + +#: ../../introduction.rst:1 +msgid "Supported" +msgstr "支持" + +#: ../../introduction.rst:1 +msgid "HTTP method binding(s)" +msgstr "HTTP方法绑定" + +#: ../../introduction.rst:1 +msgid "GetCapabilities" +msgstr "功能" + +#: ../../introduction.rst:1 +msgid "mandatory" +msgstr "必填" + +#: ../../introduction.rst:1 +msgid "yes" +msgstr "是" + +#: ../../introduction.rst:1 +msgid "GET (KVP) / POST (XML) / SOAP" +msgstr "GET (KVP) / POST (XML) / SOAP" + +#: ../../introduction.rst:1 +msgid "DescribeRecord" +msgstr "记录详述" + +#: ../../introduction.rst:1 +msgid "GetRecords" +msgstr "获取记录" + +#: ../../introduction.rst:1 +msgid "GetRecordById" +msgstr "GetRecordById" + +#: ../../introduction.rst:1 +msgid "optional" +msgstr "选项" + +#: ../../introduction.rst:1 +msgid "GetRepositoryItem" +msgstr "项目库获取" + +#: ../../introduction.rst:1 +msgid "GET (KVP)" +msgstr "KVP获取" + +#: ../../introduction.rst:1 +msgid "GetDomain" +msgstr "GetDomain" + +#: ../../introduction.rst:1 +msgid "Harvest" +msgstr "获取" + +#: ../../introduction.rst:1 +msgid "UnHarvest" +msgstr "" + +#: ../../introduction.rst:1 +msgid "no" +msgstr "" + +#: ../../introduction.rst:1 +msgid "Transaction" +msgstr "订单" + +#: ../../introduction.rst:1 +msgid "POST (XML) / SOAP" +msgstr "POST (XML) / SOAP" + +#: ../../introduction.rst:91 +msgid "" +"Asynchronous processing supported for GetRecords and Harvest requests " +"(via ``csw:ResponseHandler``)" +msgstr "异步处理支持 GetRecords 和获取请求 (通过 ' csw:ResponseHandler ')" + +#: ../../introduction.rst:95 +msgid "Supported Harvest Resource Types are listed in :ref:`transactions`" +msgstr "获取资源类型请参考: :ref:`transactions` 中列表" + +#: ../../introduction.rst:98 +msgid "Supported Output Formats" +msgstr "支持的输出格式" + +#: ../../introduction.rst:100 +msgid "XML (default)" +msgstr "XML (默认值)" + +#: ../../introduction.rst:101 +msgid "JSON" +msgstr "JSON代码" + +#: ../../introduction.rst:104 +msgid "Supported Output Schemas" +msgstr "支持的输出模式" + +#: ../../introduction.rst:106 +msgid "Dublin Core" +msgstr "Dublin Core" + +#: ../../introduction.rst:107 +msgid "ISO 19139" +msgstr "ISO 19139" + +#: ../../introduction.rst:108 +msgid "FGDC CSDGM" +msgstr "FGDC CSDGM" + +#: ../../introduction.rst:109 +msgid "NASA DIF" +msgstr "NASA DIF" + +#: ../../introduction.rst:110 +msgid "Atom" +msgstr "Atom" + +#: ../../introduction.rst:111 +msgid "GM03" +msgstr "GM03" + +#: ../../introduction.rst:114 +msgid "Supported Sorting Functionality" +msgstr "支持排序功能 " + +#: ../../introduction.rst:116 +msgid "ogc:SortBy" +msgstr "ogc:SortBy" + +#: ../../introduction.rst:117 +msgid "ascending or descending" +msgstr "升序或降序" + +#: ../../introduction.rst:118 +msgid "aspatial (queryable properties)" +msgstr "非空间 (可查询属性)" + +#: ../../introduction.rst:119 +msgid "spatial (geometric area)" +msgstr "空间 (几何区域)" + +#: ../../introduction.rst:122 +msgid "Supported Filters" +msgstr "筛选条件" + +#: ../../introduction.rst:125 +msgid "Full Text Search" +msgstr "" + +#: ../../introduction.rst:127 +msgid "csw:AnyText" +msgstr "csw:任意文章" + +#: ../../introduction.rst:130 +msgid "Geometry Operands" +msgstr "几何操作" + +#: ../../introduction.rst:132 +msgid "gml:Point" +msgstr "gml:点" + +#: ../../introduction.rst:133 +msgid "gml:LineString" +msgstr "gml:线" + +#: ../../introduction.rst:134 +msgid "gml:Polygon" +msgstr "gml:面" + +#: ../../introduction.rst:135 +msgid "gml:Envelope" +msgstr "gml:外框" + +#: ../../introduction.rst:139 +msgid "Coordinate transformations are supported" +msgstr "坐标变换" + +#: ../../introduction.rst:142 +msgid "Spatial Operators" +msgstr "空间操作" + +#: ../../introduction.rst:144 +msgid "BBOX" +msgstr "BBOX" + +#: ../../introduction.rst:145 +msgid "Beyond" +msgstr "以外" + +#: ../../introduction.rst:146 +msgid "Contains" +msgstr "包括" + +#: ../../introduction.rst:147 +msgid "Crosses" +msgstr "交叉" + +#: ../../introduction.rst:148 +msgid "Disjoint" +msgstr "不相交" + +#: ../../introduction.rst:149 +msgid "DWithin" +msgstr "DWithin" + +#: ../../introduction.rst:150 +msgid "Equals" +msgstr "等于" + +#: ../../introduction.rst:151 +msgid "Intersects" +msgstr "相交" + +#: ../../introduction.rst:152 +msgid "Overlaps" +msgstr "重叠" + +#: ../../introduction.rst:153 +msgid "Touches" +msgstr "触动" + +#: ../../introduction.rst:154 +msgid "Within" +msgstr "内" + +#: ../../introduction.rst:157 +msgid "Logical Operators" +msgstr "逻辑运算符" + +#: ../../introduction.rst:159 +msgid "Between" +msgstr "两者之间" + +#: ../../introduction.rst:160 +msgid "EqualTo" +msgstr "等于" + +#: ../../introduction.rst:161 +msgid "LessThanEqualTo" +msgstr "小于等于" + +#: ../../introduction.rst:162 +msgid "GreaterThan" +msgstr "大于" + +#: ../../introduction.rst:163 +msgid "Like" +msgstr "似" + +#: ../../introduction.rst:164 +msgid "LessThan" +msgstr "小于" + +#: ../../introduction.rst:165 +msgid "GreaterThanEqualTo" +msgstr "大于等于" + +#: ../../introduction.rst:166 +msgid "NotEqualTo" +msgstr "不等于" + +#: ../../introduction.rst:167 +msgid "NullCheck" +msgstr "零检验" + +#: ../../introduction.rst:170 +msgid "Functions" +msgstr "功能" + +#: ../../introduction.rst:171 +msgid "length" +msgstr "长度" + +#: ../../introduction.rst:172 +msgid "lower" +msgstr "低于" + +#: ../../introduction.rst:173 +msgid "ltrim" +msgstr "函数:除去字符串开始的空格" + +#: ../../introduction.rst:174 +msgid "rtrim" +msgstr "函数:除去字符串尾部空格" + +#: ../../introduction.rst:175 +msgid "trim" +msgstr "函数:除去字符串开始和尾部空格" + +#: ../../introduction.rst:176 +msgid "upper" +msgstr "转成大写" + diff --git a/docs/locale/zh/LC_MESSAGES/json.po b/docs/locale/zh/LC_MESSAGES/json.po new file mode 100644 index 000000000..cfd82c4e6 --- /dev/null +++ b/docs/locale/zh/LC_MESSAGES/json.po @@ -0,0 +1,35 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2010-2015, Tom Kralidis This work is licensed under a +# Creative Commons Attribution 4.0 International License +# This file is distributed under the same license as the pycsw package. +# FIRST AUTHOR , 2016. +# +msgid "" +msgstr "" +"Project-Id-Version: pycsw 2.0-dev\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-05-28 11:06+0800\n" +"PO-Revision-Date: 2016-06-07 10:59+0800\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.3.4\n" +"Last-Translator: \n" +"Language-Team: \n" +"X-Generator: Poedit 1.8.7\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"Language: zh_TW\n" + +#: ../../json.rst:4 +msgid "JSON Support" +msgstr "对JSON的支持" + +#: ../../json.rst:6 +msgid "" +"pycsw supports JSON support for ``DescribeRecord``, ``GetRecords`` and " +"``GetRecordById`` requests. Adding ``outputFormat=application/json`` to " +"your CSW request will return the response as a JSON representation." +msgstr "" +"pycsw 对JSON 的支持包括 ``DescribeRecord``, ``GetRecords`` 和 " +"``GetRecordById`` 的请求。 在你的CSW请示中添加 " +"``outputFormat=application/json`` 会返回JSON格式表达的响应。" diff --git a/docs/locale/zh/LC_MESSAGES/license.po b/docs/locale/zh/LC_MESSAGES/license.po new file mode 100644 index 000000000..d45f6c4f8 --- /dev/null +++ b/docs/locale/zh/LC_MESSAGES/license.po @@ -0,0 +1,78 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: pycsw 2.0-dev\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-05-28 11:27+0800\n" +"PO-Revision-Date: 2016-06-07 15:12+0800\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.3.4\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: zh_CN\n" +"X-Generator: Poedit 1.8.7\n" + +#: ../../license.rst:4 +msgid "License" +msgstr "授权" + +#: ../../../LICENSE.txt:1 +msgid "The MIT License (MIT)" +msgstr "MIT 许可证 (MIT)" + +#: ../../../LICENSE.txt:3 +msgid "" +"Copyright (c) 2010-2015 Tom Kralidis Copyright (c) 2011-2015 Angelos " +"Tzotsos Copyright (c) 2012-2015 Adam Hinz Copyright (c) 2015 " +"Ricardo Garcia Silva" +msgstr "" +"版权所有 (c) 2010年-2015年Tom Kralidis 版权所有 (c) 2011年-2015年" +"Angelos Tzotsos 版权所有 (c) 2012年-2015年Adam Hinz Copyright版权所有 " +"(c) 2015年Ricardo Garcia Silva" + +#: ../../../LICENSE.txt:8 +msgid "" +"Permission is hereby granted, free of charge, to any person obtaining a " +"copy of this software and associated documentation files (the \"Software" +"\"), to deal in the Software without restriction, including without " +"limitation the rights to use, copy, modify, merge, publish, distribute, " +"sublicense, and/or sell copies of the Software, and to permit persons to " +"whom the Software is furnished to do so, subject to the following " +"conditions:" +msgstr "" +"特此授予权限,此软件是免费的,任何人都可获得本软件副本及相关文档文件 " +"(\"软件\"),处理软件也不受限制,包括使用、 复制、 修改、 合并、 发布、 " +"分发、 二次许可,或复印件转卖。给予授权的人应符合以下条件︰" + +#: ../../../LICENSE.txt:15 +msgid "" +"The above copyright notice and this permission notice shall be included " +"in all copies or substantial portions of the Software." +msgstr "上面的版权声明和许可声明应列入所有副本或软件的重要部分。" + +#: ../../../LICENSE.txt:18 +msgid "" +"THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, " +"EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF " +"MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. " +"IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY " +"CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, " +"TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE " +"SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." +msgstr "" +"该软件为“原版”,不做任何担保(明文或暗文的担保),包括对适销性、特定用途" +"和非侵权性的保证。在任何情况下,不论是合同,侵权或其他,软件使用或其他交" +"易。作者或版权持有者是法律责任的任何索赔、损害赔偿或其他责任。" + +#: ../../license.rst:9 +msgid "Documentation" +msgstr "说明文件" + +#: ../../license.rst:11 +msgid "" +"The documentation is released under the `Creative Commons Attribution " +"4.0 International (CC BY 4.0)`_ license." +msgstr "该文档是 `知识共享署名4.0国际发布(CC BY 4.0)`_ 许可证下发的。" diff --git a/docs/locale/zh/LC_MESSAGES/migration-guide.po b/docs/locale/zh/LC_MESSAGES/migration-guide.po new file mode 100644 index 000000000..45933e762 --- /dev/null +++ b/docs/locale/zh/LC_MESSAGES/migration-guide.po @@ -0,0 +1,57 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2010-2015, Tom Kralidis This work is licensed under a +# Creative Commons Attribution 4.0 International License +# This file is distributed under the same license as the pycsw package. +# FIRST AUTHOR , 2016. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: pycsw 2.1-dev\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-07-21 21:02+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.3.4\n" + +#: ../../migration-guide.rst:4 +msgid "pycsw Migration Guide" +msgstr "pycsw迁移向导" + +#: ../../migration-guide.rst:6 +msgid "" +"This page provides migration support across pycsw versions over time to " +"help with pycsw change management." +msgstr "这个页面提供了pycsw跨版本管理的支持" + +#: ../../migration-guide.rst:10 +msgid "pycsw 1.x to 2.0 Migration" +msgstr "pycsw 1.x到2.0的迁移" + +#: ../../migration-guide.rst:12 +msgid "" +"the default CSW version is now 3.0.0. CSW clients need to explicitly " +"specify ``version=2.0.2`` for CSW 2 behaviour. Also, pycsw " +"administrators can use a WSGI wrapper to the pycsw API to force " +"``version=2.0.2`` on init of ``pycsw.server.Csw`` from the server. See " +":ref:`csw-support` for more information." +msgstr "缺省的CSW版本是 3.0.0。 CSW 客户端需要显式地声明 ```version=2.0.2`` 来使用 CSW 2的行为。" +"另外,pycsw管理器可能通过在服务器端通过 ``pycsw.server.Csw`` 初始化来使用强制的 pycsw ``version=2.0.2``。 " +"查看 :ref:`csw-support` 来获取更多的信息。 " + +#: ../../migration-guide.rst:17 +msgid "" +"``pycsw.server.Csw.dispatch_wsgi()`` previously returned the response " +"content as a string. 2.0.0 introduces a compatability break to " +"additionally return the HTTP status code along with the response as a " +"list" +msgstr "" + +#: ../../migration-guide.rst:42 +msgid "See :ref:`api` for more information." +msgstr "查看 :ref:`api` 来获取更多的信息。" + diff --git a/docs/locale/zh/LC_MESSAGES/oaipmh.po b/docs/locale/zh/LC_MESSAGES/oaipmh.po new file mode 100644 index 000000000..6d6b366b4 --- /dev/null +++ b/docs/locale/zh/LC_MESSAGES/oaipmh.po @@ -0,0 +1,41 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: pycsw 2.0-dev\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-11-23 21:42+0800\n" +"PO-Revision-Date: 2016-06-07 15:16+0800\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: zh_CN\n" +"X-Generator: Poedit 1.8.7\n" + +#: ../../oaipmh.rst:4 +msgid "OAI-PMH Support" +msgstr "OAI-PMH支持" + +#: ../../oaipmh.rst:6 +msgid "" +"pycsw supports the `The Open Archives Initiative Protocol for Metadata " +"Harvesting`_ (OAI-PMH) standard." +msgstr "pycsw支持 `元数据获取的开放式档案协议`_ (OAI-PMH)标准" + +#: ../../oaipmh.rst:8 +msgid "" +"OAI-PMH OpenSearch support is enabled by default. HTTP requests must be " +"specified with ``mode=oaipmh`` in the base URL for OAI-PMH requests, e.g.:" +msgstr "" +"默认情况下是启用OAI-PMH OpenSearch的。 HTTP请求必须在 OAI-PMH要求的基准URL" +"中指定``mode= oaipmh``,例如:" + +#: ../../oaipmh.rst:14 +msgid "" +"See http://www.openarchives.org/OAI/openarchivesprotocol.html for more " +"information on OAI-PMH as well as request / reponse examples." +msgstr "" +"见 http://www.openarchives.org/OAI/openarchivesprotocol.html,是关于OAI-PMH" +"以及更多信息请求及回应的例子。" diff --git a/docs/locale/zh/LC_MESSAGES/odc.po b/docs/locale/zh/LC_MESSAGES/odc.po new file mode 100644 index 000000000..0982d5d6a --- /dev/null +++ b/docs/locale/zh/LC_MESSAGES/odc.po @@ -0,0 +1,70 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: pycsw 2.0-dev\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-17 17:33+0800\n" +"PO-Revision-Date: 2016-06-07 16:00+0800\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.3.4\n" + +#: ../../odc.rst:4 +msgid "Open Data Catalog Configuration" +msgstr "开放性数据目录配置" + +#: ../../odc.rst:6 +msgid "" +"Open Data Catalog (https://github.com/azavea/Open-Data-Catalog/) is an " +"open data catalog based on Django, Python and PostgreSQL. It was " +"originally developed for OpenDataPhilly.org, a portal that provides " +"access to open data sets, applications, and APIs related to the " +"Philadelphia region. The Open Data Catalog is a generalized version of " +"the original source code with a simple skin. It is intended to display " +"information and links to publicly available data in an easily searchable " +"format. The code also includes options for data owners to submit data for" +" consideration and for registered public users to nominate a type of data" +" they would like to see openly available to the public." +msgstr "" +"开放数据目录(https://github.com/azavea/open-data-" +"catalog/)是一种基于Django,Python和PostgreSQL的。它最初为opendataphilly.org(一个门户网站)提供开放的数据集,应用程序,并其API与费城地区相关。开放数据目录是一个通用的原始版本的源代码,其皮肤也很简易。它以显示信息为主,以检索便宜为主。该代码还包括数据所有者提交的数据代码,会指定一种数据类型供注册的公共用户参考,他们很乐意为公众公开信息。" + +#: ../../odc.rst:8 +msgid "" +"pycsw supports binding to an existing Open Data Catalog repository for " +"metadata query. The binding is read-only (transactions are not in scope," +" as Open Data Catalog manages repository metadata changes in the " +"application proper)." +msgstr "" +"pycsw绑定到用于元数据查询的现有公开数据目录库。此绑定是只读文件(交易不在范围内,Open Data " +"Catalog在适当的应用程序中管理元数据库)" + +#: ../../odc.rst:11 +msgid "Open Data Catalog Setup" +msgstr "开放数据目录设置" + +#: ../../odc.rst:13 +msgid "" +"Open Data Catalog provides CSW functionality using pycsw out of the box " +"(installing ODC will also install pycsw). Settings are defined in " +"https://github.com/azavea/Open-Data-" +"Catalog/blob/master/OpenDataCatalog/settings.py#L165." +msgstr "" +"开放数据目录提供了CSW功能,pycsw无需设置,开箱即用(安装ODC需安装pycsw)。设置在https://github.com/azavea" +"/Open-Data-Catalog/blob/master/OpenDataCatalog/settings.py#L165中。" + +#: ../../odc.rst:15 +msgid "" +"ODC settings must ensure that ``REGISTRY_PYCSW['repository']['source']`` " +"is set to``hypermap.search.pycsw_repository``." +msgstr "" + +#: ../../odc.rst:17 +msgid "" +"At this point, pycsw is able to read from the Open Data Catalog " +"repository using the Django ORM." +msgstr "在这一点上,pycsw可以用Django的ORM从数据目录库中读取。" + diff --git a/docs/locale/zh/LC_MESSAGES/opensearch.po b/docs/locale/zh/LC_MESSAGES/opensearch.po new file mode 100644 index 000000000..73f52d122 --- /dev/null +++ b/docs/locale/zh/LC_MESSAGES/opensearch.po @@ -0,0 +1,56 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: pycsw 2.0-dev\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-05-28 11:27+0800\n" +"PO-Revision-Date: 2016-06-08 11:03+0800\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.3.4\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: zh_CN\n" +"X-Generator: Poedit 1.8.7\n" + +#: ../../opensearch.rst:4 +msgid "OpenSearch Support" +msgstr "OpenSearch支撑" + +#: ../../opensearch.rst:6 +msgid "" +"pycsw supports the `OGC OpenSearch Geo and Time Extensions 1.0`_ " +"standard via the following conformance classes:" +msgstr "" +"pycsw通过以下分类支持 `OGC OpenSearch地理和时间扩展1.0`_ 标准:" + +#: ../../opensearch.rst:8 +msgid "" +"Core (GeoSpatial Service) ``{searchTerms}``, ``{geo:box}``, " +"``{startIndex}``, ``{count}``" +msgstr "" +"核心(地理空间服务)``{searchTerms}`,``{geo:box}``," +"``{startIndex}``,``{count}``" + +#: ../../opensearch.rst:9 +msgid "Temporal Search core ``{time:start}``, ``{time:end}``" +msgstr "时间搜索核心``{时间:开始}``,``{时间:结束}``" + +#: ../../opensearch.rst:11 +msgid "" +"OpenSearch support is enabled by default. HTTP requests must be " +"specified with ``mode=opensearch`` in the base URL for OpenSearch " +"requests, e.g.:" +msgstr "" +"OpenSearch启动是默认的。 HTTP请求必须在OpenSearch要求的基准URL中指" +"定``mode=opensearch``,例如:" + +#: ../../opensearch.rst:17 +msgid "" +"This will return the Description document which can then be " +"`autodiscovered `_." +msgstr "" +"将返回描述文档,此文档可以 `autodiscovered `_ 。" diff --git a/docs/locale/zh/LC_MESSAGES/outputschemas.po b/docs/locale/zh/LC_MESSAGES/outputschemas.po new file mode 100644 index 000000000..f84e07248 --- /dev/null +++ b/docs/locale/zh/LC_MESSAGES/outputschemas.po @@ -0,0 +1,96 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: pycsw 2.0-dev\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-05-28 11:27+0800\n" +"PO-Revision-Date: 2016-06-08 13:51+0800\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.3.4\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: zh_CN\n" +"X-Generator: Poedit 1.8.7\n" + +#: ../../outputschemas.rst:4 +msgid "Output Schema Plugins" +msgstr "输出模式插件" + +#: ../../outputschemas.rst:7 +msgid "Overview" +msgstr "视图" + +#: ../../outputschemas.rst:9 +msgid "" +"pycsw allows for extending the implementation of output schemas to the " +"core standard. outputschemas allow for a client to request metadata in " +"a specific format (ISO, Dublin Core, FGDC, NASA DIF Atom and GM03 are " +"default)." +msgstr "" +"pycsw 使输出架构达到核心标准。输出架构允许客户端请求特定格式的元数据 " +"(ISO, Dublin Core, FGDC, NASA DIF Atom、GM03是默认设置)。" + +#: ../../outputschemas.rst:11 +msgid "" +"All outputschemas must be placed in the ``pycsw/plugins/outputschemas`` " +"directory." +msgstr "" +"所有输出架构必须都放在 ' pycsw/插件/输出架构(`pycsw/plugins/" +"outputschemas`) 目录中。" + +#: ../../outputschemas.rst:14 +msgid "Requirements" +msgstr "要求" + +#: ../../outputschemas.rst:29 +msgid "Implementing a new outputschema" +msgstr "实施新的输出架构" + +#: ../../outputschemas.rst:31 +msgid "" +"Create a file in ``pycsw/plugins/outputschemas``, which defines the " +"following:" +msgstr "创建文件 ' pycsw/插件/输出架构 ',其中定义了以下内容 ︰" + +#: ../../outputschemas.rst:33 +msgid "" +"``NAMESPACE``: the default namespace of the outputschema which will be " +"advertised" +msgstr "命名空间: 输出架构的默认命名空间" + +#: ../../outputschemas.rst:34 +msgid "``NAMESPACE``: dict of all applicable namespaces to outputschema" +msgstr "命名空间: 所有适用的命名空间在输出架构中以目录显示" + +#: ../../outputschemas.rst:35 +msgid "" +"``XPATH_MAPPINGS``: dict of pycsw core queryables mapped to the " +"equivalent XPath of the outputschema" +msgstr "' XPATH_MAPPINGS ': pycsw 核心查询目录映射到输出空间的等效XPath" + +#: ../../outputschemas.rst:36 +msgid "" +"``write_record``: function which returns a record as an ``lxml.etree." +"Element`` object" +msgstr "'write_record ': 返回记录为' lxml.etree.Element ' 对象记录的功能" + +#: ../../outputschemas.rst:38 +msgid "" +"Add the name of the file to ``__init__.py:__all__``. The new " +"outputschema is now supported in pycsw." +msgstr "将文件名添加到 '__init__.py:__all__ '。 新的输出架构就在 pycsw中。" + +#: ../../outputschemas.rst:41 +msgid "Testing" +msgstr "测试" + +#: ../../outputschemas.rst:43 +msgid "" +"New outputschemas must add examples to the :ref:`tests` interface, which " +"must provide example requests specific to the profile." +msgstr "" +"新的输出架构必须添加到示例: :ref:`tests` 接口,此 '测试' 接口须提供特定于该配置" +"文件的示例请求。" diff --git a/docs/locale/zh/LC_MESSAGES/profiles.po b/docs/locale/zh/LC_MESSAGES/profiles.po new file mode 100644 index 000000000..af2eeb37a --- /dev/null +++ b/docs/locale/zh/LC_MESSAGES/profiles.po @@ -0,0 +1,277 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: pycsw 2.0-dev\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-11-23 21:42+0800\n" +"PO-Revision-Date: 2016-06-08 14:52+0800\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: zh_CN\n" +"X-Generator: Poedit 1.8.7\n" + +#: ../../profiles.rst:4 +msgid "Profile Plugins" +msgstr "配置文件的插件" + +#: ../../profiles.rst:7 ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:7 +#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:35 +#: ../../../pycsw/plugins/profiles/ebrim/docs/ebrim.rst:7 +msgid "Overview" +msgstr "视图" + +#: ../../profiles.rst:9 +msgid "" +"pycsw allows for the implementation of profiles to the core standard. " +"Profiles allow specification of additional metadata format types (i.e. ISO " +"19139:2007, NASA DIF, INSPIRE, etc.) to the repository, which can be " +"queried and presented to the client. pycsw supports a plugin architecture " +"which allows for runtime loading of Python code." +msgstr "" +"pycsw 使配置文件达到核心标准。配置文件允许其余元数据格式类型 (例如ISO " +"19139:2007, NASA DIF, INSPIRE等) 特定到存储库,此配置文件可以查询,也可以提" +"交给客户端。 pycsw 支持插件体系结构,也支持运行时加载的 Python 代码。" + +#: ../../profiles.rst:11 +msgid "" +"All profiles must be placed in the ``pycsw/plugins/profiles`` directory." +msgstr "所有的配置文件必须放在 ' pycsw/插件/配置文件 '目录中。" + +#: ../../profiles.rst:14 +msgid "Requirements" +msgstr "要求" + +#: ../../profiles.rst:30 +msgid "Abstract Base Class Definition" +msgstr "抽象基类定义" + +#: ../../profiles.rst:32 +msgid "" +"All profile code must be instantiated as a subclass of ``profile." +"Profile``. Below is an example to add a ``Foo`` profile:" +msgstr "" +"配置文件的所有代码须实例化为 ``profile.Profile`` 。下面是一个添加配置文件 ``Foo`` 的示例︰" + +#: ../../profiles.rst:53 +msgid "" +"Your profile plugin class (``FooProfile``) must implement all methods as " +"per ``profile.Profile``. Profile methods must always return ``lxml.etree." +"Element`` types, or ``None``." +msgstr "" +"您的配置插件类 (FooProfile) 必须按照``profile.Profile``完成所有的配置工作。 " +"配置文件方法须保持 ``lxml.etree.Element`` 类型或 ``None``" + +#: ../../profiles.rst:56 +msgid "Enabling Profiles" +msgstr "启用配置文件" + +#: ../../profiles.rst:58 +msgid "" +"All profiles are disabled by default. To specify profiles at runtime, set " +"the ``server.profiles`` value in the :ref:`configuration` to the name of " +"the package (in the ``pycsw/plugins/profiles`` directory). To enable " +"multiple profiles, specify as a comma separated value (see :ref:" +"`configuration`)." +msgstr "" +"所有配置文件默认是不可用的。 若要指定在运行时的配置文件,在参考文件" +" :ref:`configuration` 中设置 ``server.profiles`` 值(在 ``pycsw/plugins/profiles`` 目录" +"中)。 若要启用多个配置文件,请指定值(以逗号分隔) (请参见: :ref:`configuration` )。" + +#: ../../profiles.rst:61 +#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:27 +#: ../../../pycsw/plugins/profiles/ebrim/docs/ebrim.rst:27 +msgid "Testing" +msgstr "测试" + +#: ../../profiles.rst:63 +msgid "" +"Profiles must add examples to the :ref:`tests` interface, which must " +"provide example requests specific to the profile." +msgstr "" +"配置文件必须添加到 :ref:`tests` 接口,此接口须提供特定于该配置文件的示例请求。" + +#: ../../profiles.rst:66 +msgid "Supported Profiles" +msgstr "支持的配置文件" + +#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:4 +msgid "ISO Metadata Application Profile (1.0.0)" +msgstr "ISO 元数据应用程序配置文件 (1.0.0)" + +#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:8 +msgid "" +"The ISO Metadata Application Profile (APISO) is a profile of CSW 2.0.2 " +"which enables discovery of geospatial metadata following ISO 19139:2007 and " +"ISO 19119:2005/PDAM 1." +msgstr "" +"ISO 元数据应用程序配置文件 (APISO) 是CSW 2.0.2的配置文件,是继地理空间元数" +"据 ISO 19139:2007 和 ISO 19119:2005 之后开发的文件。" + +#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:11 +#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:40 +#: ../../../pycsw/plugins/profiles/ebrim/docs/ebrim.rst:11 +msgid "Configuration" +msgstr "配置" + +#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:13 +#: ../../../pycsw/plugins/profiles/ebrim/docs/ebrim.rst:13 +msgid "No extra configuration is required." +msgstr "不需要其余配置。" + +#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:16 +#: ../../../pycsw/plugins/profiles/ebrim/docs/ebrim.rst:16 +msgid "Querying" +msgstr "查询" + +#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:18 +msgid "**typename**: ``gmd:MD_Metadata``" +msgstr "类型名称:``gmd:MD_元数据``" + +#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:19 +msgid "**outputschema**: ``http://www.isotc211.org/2005/gmd``" +msgstr "输出模式: ``http://www.isotc211.org/2005/gmd``" + +#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:22 +msgid "Enabling APISO Support" +msgstr "启用 APISO 支持" + +#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:24 +msgid "" +"To enable APISO support, add ``apiso`` to ``server.profiles`` as specified " +"in :ref:`configuration`." +msgstr "" +"若要启用 APISO 支持,作为指定 :ref:`configuration` 信息,将 `apiso` 添加到 ``server.profiles`` " + +#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:29 +msgid "" +"A testing interface is available in ``tests/index.html`` which contains " +"tests specific to APISO to demonstrate functionality. See :ref:`tests` for " +"more information." +msgstr "" +"测试接口在 ``tests/index.html`` 可用,其包含特定于 APISO 演示功能的测试。请参" +"见: :ref:`tests` 及其它更多信息。" + +#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:32 +msgid "INSPIRE Extension" +msgstr "激发扩展" + +#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:37 +msgid "" +"APISO includes an extension for enabling `INSPIRE Discovery Services 3.0`_ " +"support. To enable the INSPIRE extension to APISO, create a ``[metadata:" +"inspire]`` section in the main configuration with ``enabled`` set to " +"``true``." +msgstr "" +"APISO 包括启用 `INSPIRE Discovery Services 3.0`_ 的扩展。 若要启用 INSPIRE扩展到 APISO,需" +"要用 ``enabled`` set to ``true``在主要的配置中创建 ``[metadata:inspire]`` 部分" + +#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:42 +msgid "**[metadata:inspire]**" +msgstr "元数据:inspire" + +#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:44 +msgid "" +"**enabled**: whether to enable the INSPIRE extension (``true`` or ``false``)" +msgstr "启用: 是否启用INSPIRE扩展 ('是 '或'否')" + +#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:45 +msgid "" +"**languages_supported**: supported languages (see http://inspire.ec.europa." +"eu/schemas/common/1.0/enums/enum_eng.xsd, simpleType ``euLanguageISO6392B``)" +msgstr "" +"支持的语言: (见 http://inspire.ec.europa.eu/schemas/common/1.0/enums/" +"enum_eng.xsd,simpleType ' euLanguageISO6392B ')" + +#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:46 +msgid "" +"**default_language**: the default language (see http://inspire.ec.europa.eu/" +"schemas/common/1.0/enums/enum_eng.xsd, simpleType ``euLanguageISO6392B``)" +msgstr "" +"默认语言 (见 http://inspire.ec.europa.eu/schemas/common/1.0/enums/enum_eng." +"xsd,simpleType ' euLanguageISO6392B ')" + +#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:47 +msgid "**date**: date of INSPIRE metadata offering (in `ISO 8601`_ format)" +msgstr "**date**: INSPIRE元数据的日期 (在 `ISO 8601`_ 格式中) " + +#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:48 +msgid "" +"**gemet_keywords**: a comma-seperated keyword list of `GEMET INSPIRE theme " +"keywords`_ about the service (see http://inspire.ec.europa.eu/schemas/" +"common/1.0/enums/enum_eng.xsd, complexType ``inspireTheme_eng``)" +msgstr "" +"**gemet_keywords**: 关于服务的,以逗号分隔的关键字列表 `GEMET INSPIRE 主题关键词`_ " +" (见 http://inspire.ec.europa.eu/schemas/common/1.0/enums/enum_eng.xsd," +"complexType ``inspireTheme_eng`` )" + +#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:49 +msgid "" +"**conformity_service**: the level of INSPIRE conformance for spatial data " +"sets and services (``conformant``, ``notConformant``, ``notEvaluated``)" +msgstr "" +"conformity_service: 以空间数据集和服务 (``conformant``, ``notConformant``, " +"``notEvaluated``)为目标的INSPIRE级别" + +#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:50 +msgid "" +"**contact_organization**: the organization name responsible for the INSPIRE " +"metadata" +msgstr "contact_organization: 负责 INSPIRE元数据的组织名称" + +#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:51 +msgid "" +"**contact_email**: the email address of entity responsible for the INSPIRE " +"metadata" +msgstr "contact_email: 负责 INSPIRE元数据实体的电子邮件地址" + +#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:52 +msgid "" +"**temp_extent**: temporal extent of the service (in `ISO 8601`_ format). " +"Either a single date (i.e. ``yyyy-mm-dd``), or an extent (i.e. ``yyyy-mm-dd/" +"yyyy-mm-dd``)" +msgstr "" +"**temp_extent**: ( `ISO 8601`_ 格式)服务时间。 单个日期 ( ``yyyy-mm-dd`` ) 或多" +"数以 ( ``yyyy-mm-dd/yyyy-mm-dd`` )" + +#: ../../../pycsw/plugins/profiles/ebrim/docs/ebrim.rst:4 +msgid "CSW-ebRIM Registry Service - Part 1: ebRIM profile of CSW" +msgstr "CSW-ebRIM注册服务-第一部分: CSW的ebRIM 配置文件" + +#: ../../../pycsw/plugins/profiles/ebrim/docs/ebrim.rst:8 +msgid "" +"The CSW-ebRIM Registry Service is a profile of CSW 2.0.2 which enables " +"discovery of geospatial metadata following the ebXML information model." +msgstr "" +"CSW-ebRIM注册服务是CSW 2.0.2的配置文件,是继ebXML 信息模型之后的地理空间元数" +"据配置文件。" + +#: ../../../pycsw/plugins/profiles/ebrim/docs/ebrim.rst:18 +msgid "**typename**: ``rim:RegistryObject``" +msgstr "类型名称: ' rim: RegistryObject '" + +#: ../../../pycsw/plugins/profiles/ebrim/docs/ebrim.rst:19 +msgid "**outputschema**: ``urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0``" +msgstr "输出模式: ' urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0' " + +#: ../../../pycsw/plugins/profiles/ebrim/docs/ebrim.rst:22 +msgid "Enabling ebRIM Support" +msgstr "启用 ebRIM 支持" + +#: ../../../pycsw/plugins/profiles/ebrim/docs/ebrim.rst:24 +msgid "" +"To enable ebRIM support, add ``ebrim`` to ``server.profiles`` as specified " +"in :ref:`configuration`." +msgstr "" +"若要启用 ebRIM 支持,需添加 ``ebrim`` 到 ``server.profiles`` ,以 作为指定的 :ref:`configuration`。 " + +#: ../../../pycsw/plugins/profiles/ebrim/docs/ebrim.rst:29 +msgid "" +"A testing interface is available in ``tests/index.html`` which contains " +"tests specific to ebRIM to demonstrate functionality. See :ref:`tests` for " +"more information." +msgstr "" +"测试接口在 ``tests/index.html`` 可用,其包含特定于ebRIM演示功能的测试。请参见: :ref:`tests` 及其它更多信息。" diff --git a/docs/locale/zh/LC_MESSAGES/repofilters.po b/docs/locale/zh/LC_MESSAGES/repofilters.po new file mode 100644 index 000000000..0e6c70116 --- /dev/null +++ b/docs/locale/zh/LC_MESSAGES/repofilters.po @@ -0,0 +1,179 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: pycsw 2.0-dev\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-11-23 21:42+0800\n" +"PO-Revision-Date: 2016-06-08 15:16+0800\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: zh_CN\n" +"X-Generator: Poedit 1.8.7\n" + +#: ../../repofilters.rst:4 +msgid "Repository Filters" +msgstr "存储库中的筛选器" + +#: ../../repofilters.rst:6 +msgid "" +"pycsw has the ability to perform server side repository / database filters " +"as a means to mask all CSW requests to query against a specific subset of " +"the metadata repository, thus providing the ability to deploy multiple " +"pycsw instances pointing to the same database in different ways via the " +"``repository.filter`` configuration option." +msgstr "" +"pycsw 有能力执行服务器端存储库或数据库筛选功能,以覆盖所有的CSW请求,目的是" +"查询元数据存储库中的一个特定子集,从而需部署多个 pycsw 实例,通过 " +"'repository.filter' 配置选项,以不同的方式指向同一个数据库。" + +#: ../../repofilters.rst:8 +msgid "" +"Repository filters are a convenient way to subset your repository at the " +"server level without the hassle of creating proper database views. For " +"large repositories, it may be better to subset at the database level for " +"performance." +msgstr "" +"存储库中的筛选器是一种便捷方式,是为了创建子数据库,以免去创建适当数据库视图" +"的服务器级别的步骤。 对于大型数据库而言,它可能比创建数据库级别的子集要更好" +"一些。" + +#: ../../repofilters.rst:11 +msgid "Scenario: One Database, Many Views" +msgstr "场景 ︰ 一个数据库,很多种视角" + +#: ../../repofilters.rst:13 +msgid "Imagine a sample database table of records (subset below for brevity):" +msgstr "想象一下,现在要记录数据库示例表(下面以子集做为简称):" + +#: ../../repofilters.rst:1 +msgid "identifier" +msgstr "标识" + +#: ../../repofilters.rst:1 +msgid "parentidentifier" +msgstr "母标识符" + +#: ../../repofilters.rst:1 +msgid "title" +msgstr "标题" + +#: ../../repofilters.rst:1 +msgid "abstract" +msgstr "摘要" + +#: ../../repofilters.rst:1 +msgid "1" +msgstr "1" + +#: ../../repofilters.rst:1 +msgid "33" +msgstr "33" + +#: ../../repofilters.rst:1 +msgid "foo1" +msgstr "第一页" + +#: ../../repofilters.rst:1 +msgid "bar1" +msgstr "第1条" + +#: ../../repofilters.rst:1 +msgid "2" +msgstr "2" + +#: ../../repofilters.rst:1 +msgid "foo2" +msgstr "第二页" + +#: ../../repofilters.rst:1 +msgid "bar2" +msgstr "第2条" + +#: ../../repofilters.rst:1 +msgid "3" +msgstr "3" + +#: ../../repofilters.rst:1 +msgid "55" +msgstr "55" + +#: ../../repofilters.rst:1 +msgid "foo3" +msgstr "第三页" + +#: ../../repofilters.rst:1 +msgid "bar3" +msgstr "第3条" + +#: ../../repofilters.rst:1 +msgid "4" +msgstr "4" + +#: ../../repofilters.rst:1 +msgid "5" +msgstr "5" + +#: ../../repofilters.rst:1 +msgid "21" +msgstr "21" + +#: ../../repofilters.rst:1 +msgid "foo5" +msgstr "第五页" + +#: ../../repofilters.rst:1 +msgid "bar5" +msgstr "第5条" + +#: ../../repofilters.rst:1 +msgid "foo6" +msgstr "第六页" + +#: ../../repofilters.rst:1 +msgid "bar6" +msgstr "第6条" + +#: ../../repofilters.rst:25 +msgid "" +"A default pycsw instance (with no ``repository.filters`` option) will " +"always process CSW requests against the entire table. So a CSW " +"`GetRecords` filter like:" +msgstr "" +"若没有``repository.filters``选项,pycsw默认是始终处理整个表的CSW请求。" +"CSW`GetRecords`过滤如:" + +#: ../../repofilters.rst:36 +msgid "...will return:" +msgstr "...将返回:" + +#: ../../repofilters.rst:44 +msgid "" +"Suppose you wanted to deploy another pycsw instance which serves metadata " +"from the same database, but only from a specific subset. Here we set the " +"``repository.filter`` option:" +msgstr "" +"假设你要部署其他pycsw应用实例,此实例来自同一个数据库的元数据,但它只能来自" +"一个特定子集。在这里,我们设置了``repository.filter``选项:" + +#: ../../repofilters.rst:52 ../../repofilters.rst:67 +msgid "" +"The same CSW `GetRecords` filter as per above then yields the following " +"results:" +msgstr "依上述所说,同一CSW`GetRecords`过滤器将得到以下结果:" + +#: ../../repofilters.rst:59 +msgid "Another example:" +msgstr "另一个例子:" + +#: ../../repofilters.rst:74 +msgid "" +"The ``repository.filter`` option accepts all core queryables set in the " +"pycsw core model (see ``pycsw.config.StaticContext.md_core_model`` for the " +"complete list)." +msgstr "" +"该``数据库.过滤器``选项功能是在pycsw核心模式中接收所有核心查询设置(见" +"``pycsw.config.StaticContext.md_core_model``的完整列表)。" diff --git a/docs/locale/zh/LC_MESSAGES/repositories.po b/docs/locale/zh/LC_MESSAGES/repositories.po new file mode 100644 index 000000000..afa7544d6 --- /dev/null +++ b/docs/locale/zh/LC_MESSAGES/repositories.po @@ -0,0 +1,91 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2010-2015, Tom Kralidis This work is licensed under a +# Creative Commons Attribution 4.0 International License +# This file is distributed under the same license as the pycsw package. +# FIRST AUTHOR , 2016. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: pycsw 2.1-dev\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-17 17:33+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.3.4\n" + +#: ../../repositories.rst:4 +msgid "Repository Plugins" +msgstr "" + +#: ../../repositories.rst:7 +msgid "Overview" +msgstr "" + +#: ../../repositories.rst:9 +msgid "" +"pycsw allows for the implementation of custom repositories in order to " +"connect to a backend different from the pycsw's default. This is " +"especially useful when downstream applications manage their own metadata " +"model/database/document store and want pycsw to connect to it directly " +"instead of using pycsw's default model, thus creating duplicate " +"repositories which then require syncronization/accounting. Repository " +"plugins enable a single metadata backend which is independent from the " +"pycsw setup. pycsw thereby becomes a pure wrapper around a given backend" +" in providing CSW and other APIs atop a given application." +msgstr "" + +#: ../../repositories.rst:11 +msgid "" +"All outputschemas must be placed in the ``pycsw/plugins/outputschemas`` " +"directory." +msgstr "" + +#: ../../repositories.rst:14 +msgid "Requirements" +msgstr "" + +#: ../../repositories.rst:16 +msgid "Repository plugins:" +msgstr "" + +#: ../../repositories.rst:18 +msgid "can be developed and referenced / connected external to pycsw" +msgstr "" + +#: ../../repositories.rst:19 +msgid "must be accessible within the ``PYTHONPATH`` of a given application" +msgstr "" + +#: ../../repositories.rst:20 +msgid "" +"must implement pycsw's ``pycsw.core.repository.Repository`` properties " +"and methods" +msgstr "" + +#: ../../repositories.rst:21 +msgid "" +"must be specified in the pycsw :ref:`configuration` as a class reference " +"(e.g. ``path.to.repo_plugin.MyRepository``)" +msgstr "" + +#: ../../repositories.rst:22 +msgid "" +"must minimally implement the ``query_insert``, ``query_domain``, " +"``query_ids``, and ``query`` methods" +msgstr "" + +#: ../../repositories.rst:25 +msgid "Configuration" +msgstr "" + +#: ../../repositories.rst:27 +msgid "" +"set pycsw's ``repository.source`` setting to the class which implements " +"the custom repository:" +msgstr "" + diff --git a/docs/locale/zh/LC_MESSAGES/sitemaps.po b/docs/locale/zh/LC_MESSAGES/sitemaps.po new file mode 100644 index 000000000..1918e454d --- /dev/null +++ b/docs/locale/zh/LC_MESSAGES/sitemaps.po @@ -0,0 +1,31 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: pycsw 2.0-dev\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-11-23 21:42+0800\n" +"PO-Revision-Date: 2016-06-08 15:18+0800\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: zh_CN\n" +"X-Generator: Poedit 1.8.7\n" + +#: ../../sitemaps.rst:4 +msgid "XML Sitemaps" +msgstr "XML网站地图" + +#: ../../sitemaps.rst:6 +msgid "`XML Sitemaps`_ can be generated by running:" +msgstr "`XML 网站地图`_ 可以通过以下……运行" + +#: ../../sitemaps.rst:12 +msgid "" +"The ``sitemap.xml`` file should be saved to an an area on your web server " +"(parallel to or above your pycsw install location) to enable web crawlers " +"to index your repository." +msgstr "" +"该 ``sitemap.xml`` 文件应保存到你Web服务器中任意一个地方(平行于或高于pycsw安装位置),使Web爬虫搜索你的数据库。" diff --git a/docs/locale/zh/LC_MESSAGES/soap.po b/docs/locale/zh/LC_MESSAGES/soap.po new file mode 100644 index 000000000..0d6be127b --- /dev/null +++ b/docs/locale/zh/LC_MESSAGES/soap.po @@ -0,0 +1,28 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: pycsw 2.0-dev\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-11-23 21:42+0800\n" +"PO-Revision-Date: 2016-06-08 15:23+0800\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: zh_CN\n" +"X-Generator: Poedit 1.8.7\n" + +#: ../../soap.rst:4 +msgid "SOAP" +msgstr "简单对象访问协议" + +#: ../../soap.rst:6 +msgid "" +"pycsw supports handling of SOAP encoded requests and responses as per " +"subclause 10.3.2 of OGC:CSW 2.0.2. SOAP request examples can be found in " +"``tests/index.html``." +msgstr "" +"pycsw支持SOAP编码请求,参照OGC:CSW 2.0.2分条款中10.3.2。 SOAP请求的示例在" +"``测试/ index.html``中。" diff --git a/docs/locale/zh/LC_MESSAGES/sru.po b/docs/locale/zh/LC_MESSAGES/sru.po new file mode 100644 index 000000000..161bfe79f --- /dev/null +++ b/docs/locale/zh/LC_MESSAGES/sru.po @@ -0,0 +1,39 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: pycsw 2.0-dev\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-11-23 21:42+0800\n" +"PO-Revision-Date: 2016-06-08 15:29+0800\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: zh_CN\n" +"X-Generator: Poedit 1.8.7\n" + +#: ../../sru.rst:4 +msgid "Search/Retrieval via URL (SRU) Support" +msgstr "通过UR(SRU) 查找或取回" + +#: ../../sru.rst:6 +msgid "" +"pycsw supports the `Search/Retrieval via URL`_ search protocol " +"implementation as per subclause 8.4 of the OpenGIS Catalogue Service " +"Implementation Specification." +msgstr "" +"pycsw支持 `Search/Retrieval via URL`_ 的搜索协议,参照的是OpenGIS目录服务实现规范的分条例8.4。" + +#: ../../sru.rst:8 +msgid "" +"SRU support is enabled by default. HTTP GET requests must be specified " +"with ``mode=sru`` for SRU requests, e.g.:" +msgstr "" +"SRU支持默认情况下启用。 HTTP GET请求必须用 ``mode=sru`` 特化SRU要求,例如:" + +#: ../../sru.rst:14 +msgid "" +"See http://www.loc.gov/standards/sru/simple.html for example SRU requests." +msgstr "参见 http://www.loc.gov/standards/sru/simple.html SRU 请求的示例。" diff --git a/docs/locale/zh/LC_MESSAGES/support.po b/docs/locale/zh/LC_MESSAGES/support.po new file mode 100644 index 000000000..8d6d39cf2 --- /dev/null +++ b/docs/locale/zh/LC_MESSAGES/support.po @@ -0,0 +1,31 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: pycsw 2.0-dev\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-11-23 21:42+0800\n" +"PO-Revision-Date: 2016-06-08 15:39+0800\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: zh_CN\n" +"X-Generator: Poedit 1.8.7\n" + +#: ../../support.rst:4 +msgid "Support" +msgstr "技术支持" + +#: ../../support.rst:7 +msgid "Community" +msgstr "团队" + +#: ../../support.rst:9 +msgid "" +"Please see the `Community `_ page for information on the " +"pycsw community, getting support, and how to get involved." +msgstr "" +"请参阅`Community `_ 有关pycsw团队信息,有关于获取支持的内容,以" +"及如何获取的内容。" diff --git a/docs/locale/zh/LC_MESSAGES/testing.po b/docs/locale/zh/LC_MESSAGES/testing.po new file mode 100644 index 000000000..3da8f87d0 --- /dev/null +++ b/docs/locale/zh/LC_MESSAGES/testing.po @@ -0,0 +1,248 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: pycsw 2.0-dev\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-11-23 21:42+0800\n" +"PO-Revision-Date: 2016-06-08 16:56+0800\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: zh_CN\n" +"X-Generator: Poedit 1.8.7\n" + +#: ../../testing.rst:4 +msgid "Testing" +msgstr "测试" + +#: ../../testing.rst:9 +msgid "OGC CITE" +msgstr "OGC引用" + +#: ../../testing.rst:11 +msgid "" +"Compliance benchmarking is done via the OGC `Compliance & Interoperability " +"Testing & Evaluation Initiative`_. The pycsw `wiki `_ documents testing procedures " +"and status." +msgstr "" +"合规性基准是通过OGC `合规性和互操作性测试与自发性评估`_ 完成的。该pycsw维基" +" ``_ 文档测试程序和状态。" + +#: ../../testing.rst:16 +msgid "Tester" +msgstr "测试仪" + +#: ../../testing.rst:18 +msgid "" +"The pycsw tests framework (in ``tests``) is a collection of testsuites to " +"perform automated regession testing of the codebase. Test are run against " +"all pushes to the GitHub repository via `Travis CI`_." +msgstr "" +"该pycsw测试框架(在 ``tests`` 里)是测试包的集合体,用来执行代码库的自动" +"regession测试。通过 `Travis CI`_ ,测试在GitHub的库中运行。" + +#: ../../testing.rst:21 +msgid "Running Locally" +msgstr "本地运行" + +#: ../../testing.rst:23 +msgid "" +"The tests framework can be run from ``tests`` using `Paver`_ (see " +"``pavement.py``) tasks for convenience:" +msgstr "" +"为方便工作,测试框架可以用 `Paver`_ (见 ``pavement.py``) 在 ``tests`` 中运行:" + +#: ../../testing.rst:35 +msgid "" +"The tests perform HTTP GET and POST requests against ``http://" +"localhost:8000``. The expected output for each test can be found in " +"``expected``. Results are categorized as ``passed``, ``failed``, or " +"``initialized``. A summary of results is output at the end of the run." +msgstr "" +"针对 ``http://localhost:8000``,测试执行HTTP GET和POST请求。每个测试的输出都" +"在``expected``中。结果被归类为``通过``,``失败``,或``初始化``。总结的结果会" +"在运行结束时输出。" + +#: ../../testing.rst:38 +msgid "Failed Tests" +msgstr "测试失败" + +#: ../../testing.rst:40 +msgid "" +"If a given test has failed, the output is saved in ``results``. The " +"resulting failure can be analyzed by running ``diff tests/expected/" +"name_of_test.xml tests/results/name_of_test.xml`` to find variances. The " +"Paver task returns a status code which indicates the number of tests which " +"have failed (i.e. ``echo $?``)." +msgstr "" +"如果某个测试失败,输出将保存在``结果``中。 运行``diff tests/expected/" +"name_of_test.xml tests/results/name_of_test.xml`` ,会自动统计失败结果以找到" +"差异。Paver任务会返回一个状态代码,表示已失败的测试数目(即``echo $?``)。" + +#: ../../testing.rst:43 +msgid "Test Suites" +msgstr "测试套件" + +#: ../../testing.rst:45 +msgid "" +"The tests framework is run against a series of 'suites' (in ``tests/" +"suites``), each of which specifies a given configuration to test various " +"functionality of the codebase. Each suite is structured as follows:" +msgstr "" +"测试框架将针对一系列“套件”(在``测试/ suites``)完成运行,其中每一项均指定一" +"个给定的配置,以测试基本代码的各种功能。每个套件的结构如下:" + +#: ../../testing.rst:47 +msgid "``tests/suites/suite/default.cfg``: the configuration for the suite" +msgstr "`tests/suites/suite/default.cfg`:对于该套件的配置" + +#: ../../testing.rst:48 +msgid "" +"``tests/suites/suite/post``: directory of XML documents for HTTP POST " +"requests" +msgstr "`tests/suites/suite/post`:XML文档目录的HTTP POST请求" + +#: ../../testing.rst:49 +msgid "" +"``tests/suites/suite/get/requests.txt``: directory and text file of KVP for " +"HTTP GET requests" +msgstr "" +"`tests/suites/suite/get/requests.txt`:KVP的目录和文本文件,用于HTTP GET请求" + +#: ../../testing.rst:50 +msgid "" +"``tests/suites/suite/data``: directory of sample XML data required for the " +"test suite. Database and test data are setup/loaded automatically as part " +"of testing" +msgstr "" +"`tests/suites/suite/data`:测试套件所需样本的XML数据目录。作为测试的一部分," +"数据库和测试数据是自动设置或自动加载的" + +#: ../../testing.rst:52 +msgid "When the tests are invoked, the following operations are run:" +msgstr "当测试被调用,将执行以下操作:" + +#: ../../testing.rst:54 +msgid "pycsw configuration is set to ``tests/suites/suite/default.cfg``" +msgstr "pycsw配置设置为`tests/suites/suite/default.cfg`" + +#: ../../testing.rst:55 +msgid "HTTP POST requests are run against ``tests/suites/suite/post/*.xml``" +msgstr "HTTP POST请求是针对 `tests/suites/suite/post/*.xml` 运行的" + +#: ../../testing.rst:56 +msgid "" +"HTTP GET requests are run against each request in ``tests/suites/suite/get/" +"requests.txt``" +msgstr "HTTP GET请求是针对 ``tests/suites/suite/get/requests.txt`` 运行的" + +#: ../../testing.rst:58 +msgid "" +"The CSV format of ``tests/suites/suite/get/requests.txt`` is ``testname," +"request``, with one line for each test. The ``testname`` value is a unique " +"test name (this value sets the name of the output file in the test " +"results). The ``request`` value is the HTTP GET request. The " +"``PYCSW_SERVER`` token is replaced at runtime with the URL to the pycsw " +"install." +msgstr "" +"在每项测试的第一行中, `tests/suites/suite/get/requests.txt` 的CSV格式是 " +" `testname,request` 。该 ``testname`` 值是唯一的测试名(此值设置在测试结果输出文" +"件的名称内)。该 ``request`` 值是HTTP GET请求的值。该 ``PYCSW_SERVER`` 在URL " +"pycsw安装运行时会被替换掉的。" + +#: ../../testing.rst:61 +msgid "Adding New Tests" +msgstr "添加新测试" + +#: ../../testing.rst:63 +msgid "To add tests to an existing suite:" +msgstr "在现有套件中添加测试:" + +#: ../../testing.rst:65 +msgid "for HTTP POST tests, add XML documents to ``tests/suites/suite/post``" +msgstr "对于HTTP POST测试,在 ``tests/suites/suite/post`` 添加XML文档" + +#: ../../testing.rst:66 +msgid "" +"for HTTP GET tests, add tests (one per line) to ``tests/suites/suite/get/" +"requests.txt``" +msgstr "" +"对于HTTP GET测试,在 ``tests/suites/suite/get/requests.txt`` 中添加测试(每行的第一项)" + +#: ../../testing.rst:67 +msgid "run ``paver test``" +msgstr "运行`paver test`" + +#: ../../testing.rst:69 +msgid "To add a new test suite:" +msgstr "添加新的测试套件:" + +#: ../../testing.rst:71 +msgid "create a new directory under ``tests/suites`` (e.g. ``foo``)" +msgstr "在 ``tests/suites`` (如 ``foo`` )下创建一个新目录" + +#: ../../testing.rst:72 +msgid "create a new configuration in ``tests/suites/foo/default.cfg``" +msgstr "在 ``tests/suites/foo/default.cfg`` 创建一个新的配置" + +#: ../../testing.rst:74 +msgid "Ensure that all file paths are relative to ``path/to/pycsw``" +msgstr "确保所有文件的路径都关联 ``path/to/pycsw`` " + +#: ../../testing.rst:75 +msgid "" +"Ensure that ``repository.database`` points to an SQLite3 database called " +"``tests/suites/foo/data/records.db``. The database *must* be called " +"``records.db`` and the directory ``tests/suites/foo/data`` *must* exist" +msgstr "" +"确保 ``repository.database`` 指定于 ``tests/suites/foo/data/records.db`` 的一个" +"sqlite3数据库。该数据库*必须*被写为 ``records.db``,目录 ``tests/suites/foo/data`` " +"也必须存在" + +#: ../../testing.rst:77 +msgid "populate HTTP POST requests in ``tests/suites/foo/post``" +msgstr "将HTTP POST请求移到 ``tests/suites/foo/post`` " + +#: ../../testing.rst:78 +msgid "populate HTTP GET requests in ``tests/suites/foo/get/requests.txt``" +msgstr "将HTTP GET请求移到 ``tests/suites/foo/get/requests.txt`` " + +#: ../../testing.rst:79 +msgid "" +"if the testsuite requires test data, create ``tests/suites/foo/data`` are " +"store XML file there" +msgstr "" +"如果需要测试组件的测试数据,创建 ``tests/suites/foo/data``,以存储XML文件" + +#: ../../testing.rst:80 +msgid "" +"run ``paver test`` (or ``paver test -s foo`` to test only the new test " +"suite)" +msgstr "运行 ``paver test`` (或 ``paver test-s foo`` , 仅用来测试新的测试套件)" + +#: ../../testing.rst:82 +msgid "" +"The new test suite database will be created automatically and used as part " +"of tests." +msgstr "新的测试套件数据库将自动创建,并且会成为测试的一部分。" + +#: ../../testing.rst:85 +msgid "Web Testing" +msgstr "Web测试" + +#: ../../testing.rst:87 +msgid "" +"You can also use the pycsw tests via your web browser to perform sample " +"requests against your pycsw install. The tests are is located in ``tests/" +"``. To generate the HTML page:" +msgstr "" +"您还可以通过Web浏览器使用pycsw测试,来执行你的pycsw安装样例申请。这些测试在" +"``tests/`` 中。生成HTML页面:" + +#: ../../testing.rst:93 +msgid "Then navigate to ``http://host/path/to/pycsw/tests/index.html``." +msgstr "然后导航到 ``http://host/path/to/pycsw/tests/index.html`` 。" diff --git a/docs/locale/zh/LC_MESSAGES/tools.po b/docs/locale/zh/LC_MESSAGES/tools.po new file mode 100644 index 000000000..567be86db --- /dev/null +++ b/docs/locale/zh/LC_MESSAGES/tools.po @@ -0,0 +1,91 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: pycsw 2.0-dev\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-07-21 19:51+0800\n" +"PO-Revision-Date: 2016-06-08 15:43+0800\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.3.4\n" + +#: ../../tools.rst:4 +msgid "Cataloguing and Metadata Tools" +msgstr "编目和元数据工具" + +#: ../../tools.rst:7 +msgid "CSW Clients" +msgstr "CSW客户端" + +#: ../../tools.rst:9 +msgid "" +"`Geoportal CSW Clients " +"`_" +msgstr "" +"`Geoportal CSW客户端 " +"`_" + +#: ../../tools.rst:10 +#, fuzzy +msgid "`OWSLib `_" +msgstr "OWSLib " + +#: ../../tools.rst:11 +msgid "" +"`MetaSearch `_ (`QGIS " +"`_ plugin)" +msgstr "" +" `联合检索`_ (`QGIS " +"`_ 插件)" + +#: ../../tools.rst:14 +msgid "CSW Servers" +msgstr "CSW服务器" + +#: ../../tools.rst:16 +msgid "`deegree `_" +msgstr "`deegree `_" + +#: ../../tools.rst:17 +msgid "`eXcat `_" +msgstr "`eXcat `_" + +#: ../../tools.rst:18 +msgid "`GeoNetwork opensource `_" +msgstr "`开源地理 `_" + +#: ../../tools.rst:21 +msgid "Metadata Editing Tools" +msgstr "元数据编辑工具" + +#: ../../tools.rst:23 +msgid "`CatMDEdit `_" +msgstr "`CatMDEdit `_" + +#: ../../tools.rst:24 +msgid "`EUOSME `_" +msgstr "`EUOSME `_" + +#: ../../tools.rst:25 +msgid "`GIMED `_" +msgstr "`GIMED `_" + +#: ../../tools.rst:26 +msgid "" +"`Metatools `_ (`QGIS " +"`_ plugin)" +msgstr "" +"`Metatools `_ (`QGIS " +"`_ plugin)" + +#: ../../tools.rst:27 +msgid "" +"`QSphere `_ (`QGIS " +"`_ plugin)" +msgstr "" +"`QSphere `_ (`QGIS " +"`_ plugin)" + diff --git a/docs/locale/zh/LC_MESSAGES/transactions.po b/docs/locale/zh/LC_MESSAGES/transactions.po new file mode 100644 index 000000000..0f1461093 --- /dev/null +++ b/docs/locale/zh/LC_MESSAGES/transactions.po @@ -0,0 +1,274 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: pycsw 2.0-dev\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-17 17:33+0800\n" +"PO-Revision-Date: 2016-06-08 16:20+0800\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.3.4\n" + +#: ../../transactions.rst:4 ../../transactions.rst:67 +msgid "Transactions" +msgstr "订单" + +#: ../../transactions.rst:6 +msgid "" +"pycsw has the ability to process CSW Harvest and Transaction requests " +"(CSW-T). Transactions are disabled by default; to enable, " +"``manager.transactions`` must be set to ``true``. Access to " +"transactional functionality is limited to IP addresses which must be set " +"in ``manager.allowed_ips``." +msgstr "pycsw可获取CSW和交易请求(CSW-T)。交易在默认情况下是禁用的;``manager.transactions``必须设置为值``是``。进入交易后,功能仅可以设置IP地址,IP地址必须在``manager.allowed_ips``中。" + +#: ../../transactions.rst:9 +msgid "Supported Resource Types" +msgstr "支持的源类型" + +#: ../../transactions.rst:11 +msgid "" +"For transactions and harvesting, pycsw supports the following metadata " +"resource types by default:" +msgstr "对于交易和获限,pycsw默认支持以下元数据源类型:" + +#: ../../transactions.rst:1 +msgid "Resource Type" +msgstr "源类型" + +#: ../../transactions.rst:1 +msgid "Namespace" +msgstr "空间名称" + +#: ../../transactions.rst:1 +msgid "Transaction" +msgstr "订单" + +#: ../../transactions.rst:1 +msgid "Harvest" +msgstr "获取" + +#: ../../transactions.rst:1 +msgid "Dublin Core" +msgstr "Dublin Core" + +#: ../../transactions.rst:1 +msgid "``http://www.opengis.net/cat/csw/2.0.2``" +msgstr "``http://www.opengis.net/cat/csw/2.0.2``" + +#: ../../transactions.rst:1 +msgid "yes" +msgstr "是" + +#: ../../transactions.rst:1 +msgid "FGDC" +msgstr "FGDC" + +#: ../../transactions.rst:1 +msgid "``http://www.opengis.net/cat/csw/csdgm``" +msgstr "``http://www.opengis.net/cat/csw/csdgm``" + +#: ../../transactions.rst:1 +msgid "GM03" +msgstr "GM03" + +#: ../../transactions.rst:1 +msgid "``http://www.interlis.ch/INTERLIS2.3``" +msgstr "``http://www.interlis.ch/INTERLIS2.3``" + +#: ../../transactions.rst:1 +msgid "ISO 19139" +msgstr "ISO 19139" + +#: ../../transactions.rst:1 +msgid "``http://www.isotc211.org/2005/gmd``" +msgstr "``http://www.isotc211.org/2005/gmd``" + +#: ../../transactions.rst:1 +msgid "ISO GMI" +msgstr "ISO GMI" + +#: ../../transactions.rst:1 +msgid "``http://www.isotc211.org/2005/gmi``" +msgstr "``http://www.isotc211.org/2005/gmi``" + +#: ../../transactions.rst:1 +msgid "OGC:CSW 2.0.2" +msgstr "OGC:CSW 2.0.2" + +#: ../../transactions.rst:1 +msgid "OGC:WMS 1.1.1/1.3.0" +msgstr "" + +#: ../../transactions.rst:1 +msgid "``http://www.opengis.net/wms``" +msgstr "``http://www.opengis.net/wms``" + +#: ../../transactions.rst:1 +msgid "OGC:WMTS 1.0.0" +msgstr "OGC:WMTS 1.0.0" + +#: ../../transactions.rst:1 +msgid "``http://www.opengis.net/wmts/1.0``" +msgstr "``http://www.opengis.net/wmts/1.0``" + +#: ../../transactions.rst:1 +msgid "OGC:WFS 1.0.0/1.1.0/2.0.0" +msgstr "" + +#: ../../transactions.rst:1 +msgid "``http://www.opengis.net/wfs``" +msgstr "``http://www.opengis.net/wfs``" + +#: ../../transactions.rst:1 +msgid "OGC:WCS 1.0.0" +msgstr "OGC:WCS 1.0.0" + +#: ../../transactions.rst:1 +msgid "``http://www.opengis.net/wcs``" +msgstr "``http://www.opengis.net/wcs``" + +#: ../../transactions.rst:1 +msgid "OGC:WPS 1.0.0" +msgstr "OGC:WPS 1.0.0" + +#: ../../transactions.rst:1 +msgid "``http://www.opengis.net/wps/1.0.0``" +msgstr "``http://www.opengis.net/wps/1.0.0``" + +#: ../../transactions.rst:1 +msgid "OGC:SOS 1.0.0" +msgstr "OGC:SOS 1.0.0" + +#: ../../transactions.rst:1 +msgid "``http://www.opengis.net/sos/1.0``" +msgstr "``http://www.opengis.net/sos/1.0``" + +#: ../../transactions.rst:1 +msgid "OGC:SOS 2.0.0" +msgstr "OGC:SOS 2.0.0" + +#: ../../transactions.rst:1 +msgid "``http://www.opengis.net/sos/2.0``" +msgstr "``http://www.opengis.net/sos/2.0``" + +#: ../../transactions.rst:1 +msgid "`WAF`_" +msgstr "`WAF`_" + +#: ../../transactions.rst:1 +msgid "``urn:geoss:urn``" +msgstr "``urn:geoss:urn``" + +#: ../../transactions.rst:31 +msgid "" +"Additional metadata models are supported by enabling the appropriate " +":ref:`profiles`." +msgstr "其它元数据模型,请参考 :ref:`profiles` 。" + +#: ../../transactions.rst:35 +msgid "" +"For transactions to be functional when using SQLite3, the SQLite3 " +"database file (**and its parent directory**) must be fully writable. For" +" example:" +msgstr "当使用sqlite3时,sqlite3的数据库文件(及其母目录)一定得完整可写的。例如:" + +#: ../../transactions.rst:44 +msgid "" +"For CSW-T deployments, it is strongly advised that this directory reside " +"in an area that is not accessible by HTTP." +msgstr "对于CSW-T部署,强烈建议在此目录驻留一定区域,此区域是HTTP访问不到的。" + +#: ../../transactions.rst:47 +msgid "Harvesting" +msgstr "获取" + +#: ../../transactions.rst:51 +msgid "" +"Your server must be able to make outgoing HTTP requests for this " +"functionality." +msgstr "你的服务器必须能够使此功能传出HTTP请求。" + +#: ../../transactions.rst:53 +msgid "" +"pycsw supports the CSW-T ``Harvest`` operation. Records which are " +"harvested require to setup a cronjob to periodically refresh records in " +"the local repository. A sample cronjob is available in ``etc/harvest-" +"all.cron`` which points to ``pycsw-admin.py`` (you must specify the " +"correct path to your configuration). Harvest operation results can be " +"sent by email (via ``mailto:``) or ftp (via ``ftp://``) if the Harvest " +"request specifies ``csw:ResponseHandler``." +msgstr "" +"pycsw支持CSW-T ``Harvest`` 操作。获取的记录需要设置一个cronjob来定期刷新本地数据库记录。在 ``etc" +"/harvest-all.cron`` 中,样本cronjob是可以利用到的,此样本cronjob指向 ``pycsw-admin.py`` " +"(必须指定一个配置的正确路径)。如果获取请求指定为 ``CSW:ResponseHandler`` ,其获取的结果会由电子邮件(通过 " +"``mailto`` )或是ftp(通过``FTP://`` )发送," + +#: ../../transactions.rst:57 +msgid "" +"For ``csw:ResponseHandler`` values using the ``mailto:`` protocol, you " +"must have ``server.smtp_host`` set in your :ref:`configuration " +"`." +msgstr "" +"对于使用 ``mailto:`` 协议的 ``csw:ResponseHandler`` 值,你必须在你的 :ref:`configuration" +" ` 设定 ``server.smtp_host`` " + +#: ../../transactions.rst:60 +msgid "OGC Web Services" +msgstr "OGC Web服务" + +#: ../../transactions.rst:62 +msgid "" +"When harvesting OGC web services, requests can provide the base URL of " +"the service as part of the Harvest request. pycsw will construct a " +"``GetCapabilities`` request dynamically." +msgstr "当获取OGC Web服务时,可以请求提供服务的基本URL作为获取的一部分。 pycsw将动态地创建``GetCapabilities``请求。" + +#: ../../transactions.rst:64 +msgid "" +"When harvesting other CSW servers, pycsw pages through the entire CSW in " +"default increments of 10. This value can be modified via the " +"``manager.csw_harvest_pagesize`` :ref:`configuration ` " +"option. It is strongly advised to use the ``csw:ResponseHandler`` " +"parameter for harvesting large CSW catalogues to prevent HTTP timeouts." +msgstr "" +"当获取其它CSW服务器时,pycsw页面就默认在10这个值上。可以在 ``manager.csw_harvest_pagesize`` " +"程序中将此值修改,请参照 :ref:`configuration ` 选项。强烈建议使用 " +"``CSW:ResponseHandler`` 参数为收获大的CSW目录,以防止HTTP超时。" + +#: ../../transactions.rst:69 +msgid "" +"pycsw supports 3 modes of the ``Transaction`` operation (``Insert``, " +"``Update``, ``Delete``):" +msgstr "pycsw支持 ``Transaction`` 操作( ``Insert`` , ``Update`` , ``Delete`` )的3种模式:" + +#: ../../transactions.rst:71 +msgid "**Insert**: full XML documents can be inserted as per CSW-T" +msgstr "**Insert**:完整的XML文档可以用CSW-T插入" + +#: ../../transactions.rst:72 +msgid "" +"**Update**: updates can be made as full record updates or record " +"properties against a ``csw:Constraint``" +msgstr "**Update**:针对``CSW:Constraint``,可做到完整记录的更新与记录属性的更新" + +#: ../../transactions.rst:73 +msgid "**Delete**: deletes can be made against a ``csw:Constraint``" +msgstr "删除:针对``CSW:Constraint``进行删除" + +#: ../../transactions.rst:75 +msgid "" +"Transaction operation results can be sent by email (via ``mailto:``) or " +"ftp (via ``ftp://``) if the Transaction request specifies " +"``csw:ResponseHandler``." +msgstr "" +"若交易请求指定于``csw:ResponseHandler``,可通过email ( ``mailto:``) " +"或ftp(``FTP://``)发送交易操作的结果" + +#: ../../transactions.rst:77 +msgid "The :ref:`tests` contain CSW-T request examples." +msgstr "参考: :ref:`tests` ,包含有CSW-T 请求示例。" + diff --git a/docs/testing.rst b/docs/testing.rst index 8729e8aba..5d2fe1d13 100644 --- a/docs/testing.rst +++ b/docs/testing.rst @@ -1,63 +1,312 @@ -.. _testing: +.. _tests: Testing ======= +Pycsw uses `pytest`_ for managing its automated tests. There are a number of +test suites that perform mostly functional testing. These tests ensure that +pycsw is compliant with the various supported standards. + +The tests can be run locally as part of the development cycle. They are also +run on pycsw's `Travis`_ continuous integration server against all pushes and +pull requests to the code repository. + + .. _ogc-cite: OGC CITE -------- -Compliance benchmarking is done via the OGC `Compliance & Interoperability Testing & Evaluation Initiative`_. The pycsw `wiki `_ documents testing procedures and status. +In addition to pycsw's own tests, all public releases are also tested via the +OGC `Compliance & Interoperability Testing & Evaluation Initiative`_ (CITE). +The pycsw `wiki`_ documents CITE testing procedures and status. + + +Test suites +----------- + +Currently most of pycsw's tests are `functional tests`_. This means that +each test case is based on the requirements mandated by the specifications of +the various standards that pycsw implements. These tests focus on making sure +that pycsw works as expected. + +Each test follows the same workflow: + +* Create a new pycsw instance with a custom configuration and data repository + for each suite of tests; + +* Perform a series of GET and POST requests to the running pycsw instance; + +* Compare the results of each request against a previously prepared expected + result. If the test result matches the expected outcome the test passes, + otherwise it fails. + + +A number of different test suites exist under ``tests/functionaltests/suites``. +Each suite specifies the following structure: + +* A mandatory ``default.cfg`` file with the pycsw configuration that must be + used by the test suite; + +* A mandatory ``expected/`` directory containing the expected results for each + request; + +* An optional ``data/`` directory that contains ``.xml`` files with testing + data that is to be loaded into the suite's database before running the tests. + The presence of this directory and its contents have the following meaning + for tests: + + * If ``data/`` directory is present and contains files, they will be loaded + into a new database for running the tests of the suite; + + * If ``data/`` directory is present and does not contain any data files, a + new empty database is used in the tests; + + * If ``data/`` directory is absent, the suite will use a database populated + with test data from the ``CITE`` suite. + +* An optional ``get/requests.txt`` file that holds request parameters used for + making HTTP GET requests. + + Each line in the file must be formatted with the following scheme: + + test_id,request_query_string + + For example: + + TestGetCapabilities,service=CSW&version=2.0.2&request=GetCapabilities + + When tests are run, the *test_id* is used for naming each test and for + finding the expected result. + +* An optional ``post/`` directory that holds ``.xml`` files used for making + HTTP POST requests + + +Test identifiers +^^^^^^^^^^^^^^^^ + +Each test has an identifier that is built using the following rule: + + [__] + +For example: + + test_suites[default_post_GetRecords-end] + + +Running tests +------------- + +Since pycsw uses `pytest`_, tests are run with the ``py.test`` runner. A basic +test run can be made with: + +.. code:: bash + + py.test + +This command will run all tests and report on the number of successes, failures +and also the time it took to run them. The `py.test` command accepts several +additional parameters that can be used in order to customize the execution of +tests. Look into `pytest's invocation documentation`_ for a more complete +description. You can also get a description of the available parameters by +running: + +.. code:: bash + + py.test --help + + + +Running specific suites and test cases +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Use the ``-k `` flag to select which tests to run. Since each +test's name includes the suite name, http method and an identifier for the +test, it is easy to run only certain tests. + +.. code:: bash + + py.test -k "apiso and GetRecords" # run only tests from the apiso suite that have GetRecords in their name + py.test -k "post and GetRecords" # run only tests that use HTTP POST and GetRecords in their name + py.test -k "not harvesting" # run all tests except those from the harvesting suite -.. _tests: + +Exiting fast +^^^^^^^^^^^^ + +The ``--exitfirst`` (or ``-x``) flag can be used to stop the test runner +immediately as soon as a test case fails. + +.. code:: bash + + py.test --exitfirst + + +Seeing more output +^^^^^^^^^^^^^^^^^^ + +There are three main ways to get more output from running tests: + +* The ``--verbose`` (or ``-v``) flag; + +* The ``--capture=no`` flag - Messages sent to stdout by a test are not + suppressed; + +* The ``--pycsw-loglevel`` flag - Sets the log level of the pycsw instance + under test. Set this value to ``debug`` in order to see all debug messages + sent by pycsw while processing a request. + + +.. code:: bash + + py.test --verbose + py.test --pycsw-loglevel=debug + py.test -v --capture=no --pycsw-loglevel=debug + + +Test coverage +^^^^^^^^^^^^^ + +Use the `--cov pycsw` flag in order to see information on code coverage. It is +possible to get output in a variety of formats. + +.. code:: bash + + py.test --cov pycsw + + +Specifying a timeout for tests +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The `--timeout ` option can be used to specify that if a test takes +more than `` to run it is considered to have failed. Seconds can be +a float, so it is possibe to specify sub-second timeouts + +.. code:: bash + + py.test --timeout=1.5 + + +Linting with flake8 +^^^^^^^^^^^^^^^^^^^ + +Use the `--flake8` flag to also check if the code complies with Python's style +guide + +.. code:: bash + + py.test --flake8 + + +Testing multiple python versions +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +For testing multiple python versions and configurations simultaneously you can +use `tox`_. pycsw includes a `tox.ini` file with a suitable configuration. It +can be used to run tests against multiple python versions and also multiple +database backends. When running `tox` you can send arguments to the `py.test` +runner by using the invocation `tox -- `. +Examples: + +.. code:: bash + + # install tox on your system + sudo pip install tox + + # run all tests on multiple python versions against all databases, + # with default arguments + tox + + # run tests only with python2.7 and using sqlite as backend + tox -e py27-sqlite + + # run only csw30 suite tests with python3.5 and postgresql as backend + tox -e py35-postgresql -- -k 'csw30' + + + +Running tests against a remote server +------------------------------------- + +TBD + + + +Running tests locally +--------------------- + +Tests Tester ------ -The pycsw tests framework (in ``tests``) is a collection of testsuites to perform automated regession testing of the codebase. Test are run against all pushes to the GitHub repository via `Travis CI`_. +The pycsw tests framework (in ``tests``) is a collection of testsuites to +perform automated regression testing of the codebase. Test are run against +all pushes to the GitHub repository via Travis CI. Running Locally ^^^^^^^^^^^^^^^ -The tests framework can be run from ``tests`` using `Paver`_ (see ``pavement.py``) tasks for convenience: +The tests framework can be run from ``tests`` using `Paver`_ +(see ``pavement.py``) tasks for convenience: .. code-block:: bash - $ cd /path/to/pycsw - # run all tests (starts up http://localhost:8000) - $ paver test - # run tests only against specific testsuites - $ paver test -s apiso,fgdc - # run all tests, including harvesting (this is turned off by default given the volatility of remote services/data testing) - $ paver test -r - # run all tests with 1000ms time benchmark - $ paver test -t 1000 - -The tests perform HTTP GET and POST requests against ``http://localhost:8000``. The expected output for each test can be found in ``expected``. Results are categorized as ``passed``, ``failed``, or ``initialized``. A summary of results is output at the end of the run. + cd /path/to/pycsw + # run all tests (starts up http://localhost:8000) + paver test + # run tests only against specific testsuites + paver test -s apiso,fgdc + # run all tests, including harvesting (this is turned off by default given + # the volatility of remote services/data testing) + paver test -r + # run all tests with 1000ms time benchmark + paver test -t 1000 + +The tests perform HTTP GET and POST requests against +``http://localhost:8000``. The expected output for each test can be found +in ``expected``. Results are categorized as ``passed``, ``failed``, +or ``initialized``. A summary of results is output at the end of the run. Failed Tests ^^^^^^^^^^^^ -If a given test has failed, the output is saved in ``results``. The resulting failure can be analyzed by running ``diff tests/expected/name_of_test.xml tests/results/name_of_test.xml`` to find variances. The Paver task returns a status code which indicates the number of tests which have failed (i.e. ``echo $?``). +If a given test has failed, the output is saved in ``results``. The +resulting failure can be analyzed by running +``diff tests/expected/name_of_test.xml tests/results/name_of_test.xml`` to +find variances. The Paver task returns a status code which indicates the +number of tests which have failed (i.e. ``echo $?``). Test Suites ^^^^^^^^^^^ -The tests framework is run against a series of 'suites' (in ``tests/suites``), each of which specifies a given configuration to test various functionality of the codebase. Each suite is structured as follows: +The tests framework is run against a series of 'suites' (in ``tests/suites``), +each of which specifies a given configuration to test various functionality +of the codebase. Each suite is structured as follows: * ``tests/suites/suite/default.cfg``: the configuration for the suite -* ``tests/suites/suite/post``: directory of XML documents for HTTP POST requests -* ``tests/suites/suite/get/requests.txt``: directory and text file of KVP for HTTP GET requests -* ``tests/suites/suite/data``: directory of sample XML data required for the test suite. Database and test data are setup/loaded automatically as part of testing +* ``tests/suites/suite/post``: directory of XML documents for HTTP POST + requests +* ``tests/suites/suite/get/requests.txt``: directory and text file of KVP + for HTTP GET requests +* ``tests/suites/suite/data``: directory of sample XML data required for the + test suite. Database and test data are setup/loaded automatically as part + of testing When the tests are invoked, the following operations are run: * pycsw configuration is set to ``tests/suites/suite/default.cfg`` * HTTP POST requests are run against ``tests/suites/suite/post/*.xml`` -* HTTP GET requests are run against each request in ``tests/suites/suite/get/requests.txt`` +* HTTP GET requests are run against each request in + ``tests/suites/suite/get/requests.txt`` -The CSV format of ``tests/suites/suite/get/requests.txt`` is ``testname,request``, with one line for each test. The ``testname`` value is a unique test name (this value sets the name of the output file in the test results). The ``request`` value is the HTTP GET request. The ``PYCSW_SERVER`` token is replaced at runtime with the URL to the pycsw install. +The CSV format of ``tests/suites/suite/get/requests.txt`` is +``testname,request``, with one line for each test. The ``testname`` value +is a unique test name (this value sets the name of the output file in the +test results). The ``request`` value is the HTTP GET request. The +``PYCSW_SERVER`` token is replaced at runtime with the URL to the pycsw +install. Adding New Tests ^^^^^^^^^^^^^^^^ @@ -65,7 +314,8 @@ Adding New Tests To add tests to an existing suite: * for HTTP POST tests, add XML documents to ``tests/suites/suite/post`` -* for HTTP GET tests, add tests (one per line) to ``tests/suites/suite/get/requests.txt`` +* for HTTP GET tests, add tests (one per line) to + ``tests/suites/suite/get/requests.txt`` * run ``paver test`` To add a new test suite: @@ -74,19 +324,27 @@ To add a new test suite: * create a new configuration in ``tests/suites/foo/default.cfg`` * Ensure that all file paths are relative to ``path/to/pycsw`` - * Ensure that ``repository.database`` points to an SQLite3 database called ``tests/suites/foo/data/records.db``. The database *must* be called ``records.db`` and the directory ``tests/suites/foo/data`` *must* exist + * Ensure that ``repository.database`` points to an SQLite3 database + called ``tests/suites/foo/data/records.db``. The database *must* be + called ``records.db`` and the directory ``tests/suites/foo/data`` + *must* exist * populate HTTP POST requests in ``tests/suites/foo/post`` * populate HTTP GET requests in ``tests/suites/foo/get/requests.txt`` -* if the testsuite requires test data, create ``tests/suites/foo/data`` are store XML file there -* run ``paver test`` (or ``paver test -s foo`` to test only the new test suite) +* if the testsuite requires test data, create ``tests/suites/foo/data`` are + store XML file there +* run ``paver test`` (or ``paver test -s foo`` to test only the new test + suite) -The new test suite database will be created automatically and used as part of tests. +The new test suite database will be created automatically and used as part of +tests. Web Testing ^^^^^^^^^^^ -You can also use the pycsw tests via your web browser to perform sample requests against your pycsw install. The tests are is located in ``tests/``. To generate the HTML page: +You can also use the pycsw tests via your web browser to perform sample +requests against your pycsw install. The tests are is located in +``tests/``. To generate the HTML page: .. code-block:: bash @@ -94,6 +352,12 @@ You can also use the pycsw tests via your web browser to perform sample requests Then navigate to ``http://host/path/to/pycsw/tests/index.html``. -.. _`Compliance & Interoperability Testing & Evaluation Initiative`: http://cite.opengeospatial.org/ -.. _`Travis CI`: http://travis-ci.org/geopython/pycsw +.. _Compliance & Interoperability Testing & Evaluation Initiative: http://cite.opengeospatial.org/ +.. _functional tests: https://en.wikipedia.org/wiki/Functional_testing .. _`Paver`: http://paver.github.io/paver/ +.. _pytest's invocation documentation: http://docs.pytest.org/en/latest/usage.html +.. _pytest: http://pytest.org/latest/ +.. _Travis: http://travis-ci.org/geopython/pycsw +.. _tox: https://tox.readthedocs.io +.. _wiki: https://github.com/geopython/pycsw/wiki/OGC-CITE-Compliance + diff --git a/pavement.py b/pavement.py index e9d70f536..664aaffe6 100644 --- a/pavement.py +++ b/pavement.py @@ -2,8 +2,10 @@ # ================================================================= # # Authors: Tom Kralidis +# Ricardo Garcia Silva # # Copyright (c) 2015 Tom Kralidis +# Copyright (c) 2016 Ricardo Garcia Silva # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation @@ -28,17 +30,10 @@ # # ================================================================= -from __future__ import (absolute_import, division, print_function) - -import glob import os -import sys -import time - -from six.moves import configparser from paver.easy import task, cmdopts, needs, \ - pushd, sh, call_task, path, info, BuildFailure + pushd, sh, call_task, path, info DOCS = 'docs' STAGE_DIR = '/tmp' @@ -145,198 +140,3 @@ def package_tar_gz(options): tar = tarfile.open(filename, 'w:gz') tar.add(package_name) tar.close() - -@task -def setup_testdata(): - """Create test databases and load test data""" - - test_database_parameters = { - # suite: has_testdata - 'apiso': True, - 'cite': True, - 'harvesting': False, - 'manager': False - } - - for suite in test_database_parameters.keys(): - dbfile = 'tests/suites/%s/data/records.db' % suite - if os.path.isfile(dbfile): - os.remove(dbfile) - - for database, has_testdata in test_database_parameters.items(): - info('Setting up test database %s' % database) - cfg = path('tests/suites/%s/default.cfg' % database) - sh('pycsw-admin.py -c setup_db -f %s' % cfg) - if has_testdata: - datapath = path('tests/suites/%s/data' % database) - info('Loading test data from %s' % datapath) - sh('pycsw-admin.py -c load_records -f %s -p %s' % (cfg, datapath)) - - -@task -@cmdopts([ - ('url=', 'u', 'pycsw endpoint'), - ('suites=', 's', 'comma-separated list of testsuites'), - ('database=', 'd', 'database (SQLite3 [default], PostgreSQL, MySQL)'), - ('user=', 'U', 'database username'), - ('pass=', 'p', 'database password'), - ('pedantic', 'P', 'run tests in pedantic mode (byte level diff check) (default: c14n mode)'), - ('remote', 'r', 'remote testing (harvesting)'), - ('time=', 't', 'time (milliseconds) in which requests should complete') -]) -def test(options): - """Run unit tests""" - - db_setup = False - db_conn = None - cfg_files = [] - status = 0 - - url = options.get('url', None) - suites = options.get('suites', None) - database = options.get('database', 'SQLite3') - remote = options.get('remote') - timems = options.get('time', None) - pedantic = options.get('pedantic', False) - - if url is None: - # run against default server - call_task('stop') - call_task('reset') - if database == 'SQLite3': - call_task('setup_testdata') - call_task('start') - url = 'http://localhost:8000' - - if suites is not None: - cmd = 'python run_tests.py -u %s -s %s' % (url, suites) - else: - cmd = 'python run_tests.py -u %s' % url - - if remote: - cmd = '%s -r' % cmd - - if pedantic: - cmd = '%s -p' % cmd - - if timems: - cmd = '%s -t %s' % (cmd, timems) - - # configure/setup database if not default - if database != 'SQLite3': - db_setup = True - temp_db = 'pycsw_ci_test_pid_%d' % os.getpid() - - if database == 'PostgreSQL': # configure PG - - from pycsw.admin import setup_db, load_records - from pycsw.config import StaticContext - - cmd = '%s -d %s' % (cmd, database) - - init_sfsql = True - home = os.path.abspath(os.path.dirname(__file__)) - user = options.get('user', 'postgres') - password = options.get('pass', '') - context = StaticContext() - - db_conn = 'postgresql://%s:%s@localhost/%s' % ( - user, password, temp_db) - - if password: - sh('set PGPASSWORD=%s' % password) - - sh('createdb %s -U %s' % (temp_db, user)) - sh('createlang --dbname=%s plpythonu -U %s' % (temp_db, user)) - - # update all default.cfg files to point to test DB - cfg_files = glob.glob('tests%ssuites%s*%s*.cfg' % (3*(os.sep,))) - - for cfg in cfg_files: - # generate table - suite = cfg.split(os.sep)[2] - - tablename = 'records_cite' - - if suite == 'manager': - tablename = 'records_manager' - elif suite == 'apiso': - tablename = 'records_apiso' - - config = configparser.SafeConfigParser() - with open(cfg) as read_data: - config.readfp(read_data) - config.set('repository', 'database', db_conn) - config.set('repository', 'table', tablename) - with open(cfg, 'wb') as config2: - config.write(config2) - - if suite in ['cite', 'manager', 'apiso']: # setup tables - setup_db(db_conn, tablename, home, init_sfsql, init_sfsql) - init_sfsql = False - - if suite in ['cite', 'apiso']: # load test data - dirname = '%s%sdata' % (os.path.dirname(cfg), os.sep) - load_records(context, db_conn, tablename, dirname) - - else: - raise Exception('Invalid database specified') - - with pushd('tests'): - try: - sh(cmd) - except BuildFailure as err: - status = 1 - # stop pycsw instance - call_task('stop') - - if db_setup: # tearDown - for cfg in cfg_files: - sh('git checkout %s' % cfg) - if database == 'PostgreSQL': - sh("psql -c \"select pg_terminate_backend(procpid) from pg_stat_activity where datname='%s';\" -U %s" % (temp_db, user)) - sh('dropdb %s -U %s' % (temp_db, user)) - sh('unset PGPASSWORD') - - sys.exit(status) - - -@task -def start(options): - """Start local WSGI server instance""" - sh('python pycsw/wsgi.py 8000 &') - time.sleep(10) - - -@task -def stop(): - """Stop local WSGI server instance""" - - kill_process('python', 'pycsw/wsgi.py') - - -@task -@cmdopts([ - ('force', 'f', 'forces git clean'), -]) -def reset(options): - """Return codebase to pristine state""" - - force = options.get('force') - if force: - sh('git clean -dxf') - - -def kill_process(procname, scriptname): - """kill WSGI processes that may be running in development""" - - # from http://stackoverflow.com/a/2940878 - import subprocess, signal - p = subprocess.Popen(['ps', 'aux'], stdout=subprocess.PIPE) - out, err = p.communicate() - - for line in out.decode().splitlines(): - if procname in line and scriptname in line: - pid = int(line.split()[1]) - info('Stopping %s %s %d' % (procname, scriptname, pid)) - os.kill(pid, signal.SIGKILL) diff --git a/pycsw/core/admin.py b/pycsw/core/admin.py index a350d6faf..c5cc4ef4e 100644 --- a/pycsw/core/admin.py +++ b/pycsw/core/admin.py @@ -391,9 +391,14 @@ def export_records(context, database, table, xml_dirpath): filename = os.path.join(dirpath, '%s.xml' % identifier) try: LOGGER.info('Writing to file %s', filename) + if hasattr(record.xml, 'decode'): + str_xml = record.xml.decode('utf-8') + else: + str_xml = record.xml with open(filename, 'w') as xml: xml.write('\n') - xml.write(record.xml) + xml.write(str_xml) + except Exception as err: raise RuntimeError("Error writing to %s" % filename, err) diff --git a/requirements-dev.txt b/requirements-dev.txt index 2f58df10a..4c713aaf9 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -1,2 +1,11 @@ +-r requirements.txt +-r requirements-standalone.txt +-r requirements-pg.txt + Paver==1.2.4 +pytest==3.0.3 +pytest-cov==2.4.0 +pytest-flake8==0.8.1 +pytest-timeout==1.2.0 +requests==2.10.0 sphinx diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 000000000..0881bbfe7 --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,103 @@ +# ================================================================= +# +# Authors: Ricardo Garcia Silva +# +# Copyright (c) 2016 Ricardo Garcia Silva +# +# Permission is hereby granted, free of charge, to any person +# obtaining a copy of this software and associated documentation +# files (the "Software"), to deal in the Software without +# restriction, including without limitation the rights to use, +# copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following +# conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +# OTHER DEALINGS IN THE SOFTWARE. +# +# ================================================================= +"""pytest configuration file""" + +import pytest + + +def pytest_configure(config): + """Configure pytest. + + This function adds additional markers to pytest. + + """ + + config.addinivalue_line( + "markers", + "functional: Run only functional tests" + ) + config.addinivalue_line( + "markers", + "unit: Run only unit tests" + ) + + +def pytest_addoption(parser): + """Add additional command-line parameters to pytest.""" + parser.addoption( + "--database-backend", + choices=["sqlite", "postgresql"], + default="sqlite", + help="Database backend to use when performing functional tests" + ) + parser.addoption( + "--database-user-postgresql", + default="postgres", + help="Username to use for creating and accessing local postgres " + "databases used for functional tests." + ) + parser.addoption( + "--database-password-postgresql", + default="", + help="Password to use for creating and accessing local postgres " + "databases used for functional tests." + ) + parser.addoption( + "--database-name-postgresql", + default="test_pycsw", + help="Name of the postgres database that is to be used for testing." + ) + parser.addoption( + "--database-host-postgresql", + default="127.0.0.1", + help="hostname or ip of the host that is running the postgres " + "database server to use in testing." + ) + parser.addoption( + "--database-port-postgresql", + default="5432", + help="Port where the postgres server is listening for connections." + ) + parser.addoption( + "--pycsw-loglevel", + default="warning", + help="Log level for the pycsw server." + ) + + +@pytest.fixture(scope="session") +def log_level(request): + """Log level to use when instantiating a new pycsw server. + + The value for this fixture is retrieved from the `--pycsw.loglevel` + command-line parameter. + + """ + + return request.config.getoption("pycsw_loglevel").upper() diff --git a/tests/functionaltests/conftest.py b/tests/functionaltests/conftest.py new file mode 100644 index 000000000..95a6460f0 --- /dev/null +++ b/tests/functionaltests/conftest.py @@ -0,0 +1,549 @@ +# ================================================================= +# +# Authors: Ricardo Garcia Silva +# +# Copyright (c) 2016 Ricardo Garcia Silva +# +# Permission is hereby granted, free of charge, to any person +# obtaining a copy of this software and associated documentation +# files (the "Software"), to deal in the Software without +# restriction, including without limitation the rights to use, +# copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following +# conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +# OTHER DEALINGS IN THE SOFTWARE. +# +# ================================================================= +"""pytest configuration file for functional tests""" + +import codecs +from collections import namedtuple +import logging +import os +import re +from six.moves import configparser + +import psycopg2 +import pytest + +from pycsw.core import admin +from pycsw.core.config import StaticContext + +TESTS_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + +SuiteDirs = namedtuple("SuiteDirs", [ + "get_tests_dir", + "post_tests_dir", + "data_tests_dir", + "expected_results_dir", +]) + + +def pytest_generate_tests(metafunc): + """Parametrize tests programmatically. + + This function scans the filesystem directories under + ``tests/functionaltests/suites`` and automatically generates pytest tests + based on the available test suites. Each suite directory has the + following structure: + + * A mandatory ``default.cfg`` file specifying the configuration for the + pycsw instance to use in the tests of the suite. + + * An optional ``get/`` subdirectory containing a ``requests.txt`` file + with any HTTP GET requests for which to generate tests for. Each request + is specified in a new line, with the following pattern: + + * , + + * An optional ``post/`` subdirectory containing files that are used as the + payload for HTTP POST requests. The name of each file is used as the name + of the test (without the file's extension); + + * An optional ``data/`` subdirectory. This directory, if present, indicates + that the suite uses a custom database. The database is populated with any + additional files that are contained inside this directory. If the + ``data`` directory does not exist then the suite's tests will use the + CITE database; + + * An ``expected/`` subdirectory containing a file for each of the expected + test outcomes. + + The tests are autogenerated by parametrizing the + ``tests/functionaltests/test_suites_functional::test_suites`` function + + Notes + ----- + + Check pytest's documentation for information on autogenerating + parametrized tests for further details on how the + ``pytest_generate_tests`` function can be used: + + http://pytest.org/latest/parametrize.html#basic-pytest-generate-tests-example + + """ + + global TESTS_ROOT + if metafunc.function.__name__ == "test_suites": + suites_root_dir = os.path.join(TESTS_ROOT, "functionaltests", "suites") + suite_names = os.listdir(suites_root_dir) + arg_values = [] + test_ids = [] + logging.basicConfig(level=getattr( + logging, metafunc.config.getoption("--pycsw-loglevel").upper())) + if metafunc.config.getoption("--database-backend") == "postgresql": + _recreate_postgresql_database(metafunc.config) + for suite in suite_names: + suite_dir = os.path.join(suites_root_dir, suite) + config_path = os.path.join(suite_dir, "default.cfg") + if not os.path.isfile(config_path): + print("Directory {0!r} does not have a suite " + "configuration file".format(suite_dir)) + continue + print("Generating tests for suite {0!r}...".format(suite)) + normalize_ids = True if suite in ("harvesting", + "manager") else False + suite_dirs = _get_suite_dirs(suite) + if suite_dirs.post_tests_dir is not None: + post_argvalues, post_ids = _get_post_parameters( + post_tests_dir=suite_dirs.post_tests_dir, + expected_tests_dir=suite_dirs.expected_results_dir, + config_path=config_path, + suite_name=suite, + normalize_ids=normalize_ids + ) + arg_values.extend(post_argvalues) + test_ids.extend(post_ids) + if suite_dirs.get_tests_dir is not None: + get_argvalues, get_ids = _get_get_parameters( + get_tests_dir=suite_dirs.get_tests_dir, + expected_tests_dir=suite_dirs.expected_results_dir, + config_path=config_path, + suite_name=suite, + normalize_ids=normalize_ids + ) + arg_values.extend(get_argvalues) + test_ids.extend(get_ids) + metafunc.parametrize( + argnames=["configuration", "request_method", "request_data", + "expected_result", "normalize_identifier_fields"], + argvalues=arg_values, + indirect=["configuration"], + ids=test_ids, + ) + + +@pytest.fixture() +def configuration(request, tests_directory, log_level): + """Configure a suite for execution in tests. + + This function is executed once for each individual test request, after + tests have been collected. + + The configuration file for each test suite is read into memory. Some + configuration parameters, like the repository's url and table name are + adjusted. The suite's repository is also created, if needed. + + Parameters + ---------- + request: pytest.fixtures.FixtureRequest + tests_directory: py.path.local + Directory created by pytest where any test artifacts are to be saved + log_level: str + Log level for the pycsw server instance that will be created during + tests. + + """ + + config_path = request.param + config = configparser.SafeConfigParser() + with codecs.open(config_path, encoding="utf-8") as fh: + config.readfp(fh) + suite_name = config_path.split(os.path.sep)[-2] + suite_dirs = _get_suite_dirs(suite_name) + data_dir = suite_dirs.data_tests_dir + if data_dir is not None: # suite has its own database + repository_url = _get_repository_url(request.config, suite_name, + tests_directory) + else: # suite uses the CITE database + data_dir = _get_cite_suite_data_dir() + repository_url = _get_repository_url(request.config, "cite", + tests_directory) + table_name = _get_table_name(suite_name, config, repository_url) + if not _repository_exists(repository_url, table_name): + _initialize_database(repository_url=repository_url, + table_name=table_name, + data_dir=data_dir, + test_dir=tests_directory) + config.set("server", "loglevel", log_level) + config.set("server", "logfile", "") + config.set("repository", "database", repository_url) + config.set("repository", "table", table_name) + return config + + +@pytest.fixture(scope="session", name="tests_directory") +def fixture_tests_directory(tmpdir_factory): + """Create a temporary directory for each test session. + + This directory is typically situated under ``/tmp`` and is used to create + eventual sqlite databases for each suite. + + This functionality is mostly provided by pytest's built-in + ``tmpdir_factory`` fixture. More information on this is available at: + + http://doc.pytest.org/en/2.9.0/tmpdir.html#the-tmpdir-factory-fixture + + """ + + tests_dir = tmpdir_factory.mktemp("functional_tests") + return tests_dir + + +def _get_cite_suite_data_dir(): + """Return the path to the data directory of the CITE test suite.""" + global TESTS_ROOT + suites_root_dir = os.path.join(TESTS_ROOT, "functionaltests", "suites") + suite_dir = os.path.join(suites_root_dir, "cite") + data_tests_dir = os.path.join(suite_dir, "data") + data_dir = data_tests_dir if os.path.isdir(data_tests_dir) else None + return data_dir + + +def _get_get_parameters(get_tests_dir, expected_tests_dir, config_path, + suite_name, normalize_ids): + """Return the parameters suitable for parametrizing HTTP GET tests.""" + method = "GET" + test_argvalues = [] + test_ids = [] + requests_file_path = os.path.join(get_tests_dir, "requests.txt") + with open(requests_file_path) as fh: + for line in fh: + test_name, test_params = [i.strip() for i in + line.partition(",")[::2]] + expected_result_path = os.path.join( + expected_tests_dir, + "{method}_{name}.xml".format(method=method.lower(), + name=test_name) + ) + test_argvalues.append( + (config_path, method, test_params, expected_result_path, + normalize_ids) + ) + test_ids.append( + "{suite}_{http_method}_{name}".format( + suite=suite_name, http_method=method.lower(), + name=test_name) + ) + return test_argvalues, test_ids + + +def _get_post_parameters(post_tests_dir, expected_tests_dir, config_path, + suite_name, normalize_ids): + """Return the parameters suitable for parametrizing HTTP POST tests.""" + method = "POST" + test_argvalues = [] + test_ids = [] + # we are sorting the directory contents because the + # `harvesting` suite requires tests to be executed in alphabetical order + directory_contents = sorted(os.listdir(post_tests_dir)) + for request_file_name in directory_contents: + request_path = os.path.join(post_tests_dir, + request_file_name) + expected_result_path = os.path.join( + expected_tests_dir, + "{method}_{filename}".format( + method=method.lower(), + filename=request_file_name + ) + ) + test_argvalues.append( + (config_path, method, request_path, + expected_result_path, normalize_ids) + ) + test_ids.append( + "{suite}_{http_method}_{file_name}".format( + suite=suite_name, + http_method=method.lower(), + file_name=os.path.splitext( + request_file_name)[0]) + ) + return test_argvalues, test_ids + + +def _get_repository_url(conf, suite_name, test_dir): + """Return the repository_url for the input parameters. + + Returns + ------- + repository_url: str + SQLAlchemy URL for the repository in use. + + """ + + db_type = conf.getoption("--database-backend") + if db_type == "sqlite": + repository_url = "sqlite:///{test_dir}/{suite}.db".format( + test_dir=test_dir, suite=suite_name) + elif db_type == "postgresql": + repository_url = ( + "postgresql://{user}:{password}@{host}:{port}/{database}".format( + user=conf.getoption("--database-user-postgresql"), + password=conf.getoption("--database-password-postgresql"), + host=conf.getoption("--database-host-postgresql"), + port=conf.getoption("--database-port-postgresql"), + database=conf.getoption("--database-name-postgresql")) + ) + else: + raise NotImplementedError + return repository_url + + +def _get_suite_dirs(suite_name): + """Get the paths to relevant suite directories. + + Parameters + ---------- + suite_name: str + Name of the site + + Returns + ------- + SuiteDirs + A four element named tuple with the input suite's relevant test + directories. + + """ + + global TESTS_ROOT + suites_root_dir = os.path.join(TESTS_ROOT, "functionaltests", "suites") + suite_dir = os.path.join(suites_root_dir, suite_name) + data_tests_dir = os.path.join(suite_dir, "data") + post_tests_dir = os.path.join(suite_dir, "post") + get_tests_dir = os.path.join(suite_dir, "get") + expected_results_dir = os.path.join(suite_dir, "expected") + data_dir = data_tests_dir if os.path.isdir(data_tests_dir) else None + posts_dir = post_tests_dir if os.path.isdir(post_tests_dir) else None + gets_dir = get_tests_dir if os.path.isdir(get_tests_dir) else None + expected_dir = (expected_results_dir if os.path.isdir( + expected_results_dir) else None) + return SuiteDirs(get_tests_dir=gets_dir, + post_tests_dir=posts_dir, + data_tests_dir=data_dir, + expected_results_dir=expected_dir) + + +def _get_table_name(suite, config, repository_url): + """Get the name of the table used to store records in the database. + + Parameters + ---------- + suite: str + Name of the suite. + config: SafeConfigParser + Configuration for the suite. + repository_url: str + SQLAlchemy URL for the repository in use. + + Returns + ------- + str + Name of the table to use in the database + + """ + + if repository_url.startswith("sqlite"): + result = config.get("repository", "table") + elif repository_url.startswith("postgresql"): + result = "{suite}_records".format(suite=suite) + else: + raise NotImplementedError + return result + + +def _initialize_database(repository_url, table_name, data_dir, test_dir): + """Initialize database for tests. + + This function will create the database and load any test data that + the suite may require. + + Parameters + ---------- + repository_url: str + URL for the repository, as used by SQLAlchemy engines + table_name: str + Name of the table that is to be used to store pycsw records + data_dir: str + Path to a directory that contains sample data records to be loaded + into the database + test_dir: str + Directory where the database is to be created, in case of sqlite. + + """ + + print("Setting up {0!r} repository...".format(repository_url)) + if repository_url.startswith("postgresql"): + extra_kwargs = { + "create_sfsql_tables": True, + "create_plpythonu_functions": False + } + else: + extra_kwargs = {} + admin.setup_db(database=repository_url, table=table_name, home=test_dir, + **extra_kwargs) + if len(os.listdir(data_dir)) > 0: + print("Loading database data...") + admin.load_records(context=StaticContext(), database=repository_url, + table=table_name, xml_dirpath=data_dir) + + +def _parse_postgresql_repository_url(repository_url): + """Parse a SQLAlchemy engine URL describing a postgresql database. + + Parameters + ---------- + repository_url: str + SQLAlchemy URL for the repository in use. + + Returns + ------- + dict + A mapping with the database's connection parameters. + + """ + + info_re = re.search(r"postgresql://(?P[\w_]+):(?P.*?)@" + r"(?P[\w_.]+):(?P\d+)/" + r"(?P[\w_]+)", + repository_url, + flags=re.UNICODE) + try: + db_info = info_re.groupdict() + except AttributeError: + raise RuntimeError("Could not parse repository url {0!r}".format( + repository_url)) + else: + return db_info + + +def _recreate_postgresql_database(configuration): + """Recreate a postgresql database. + + This function will try to create a new postgresql database for testing + purposes. If the database already exists it is deleted and then recreated. + + Parameters + ---------- + configuration: _pytest.config.Config + The configuration object used by pytest + + Raises + ------ + RuntimeError + If a connection to the postgresql server cannot be made + + """ + + connection = psycopg2.connect( + database="postgres", + user=configuration.getoption("--database-user-postgresql"), + password=configuration.getoption("--database-password-postgresql"), + host=configuration.getoption("--database-host-postgresql"), + port=configuration.getoption("--database-port-postgresql") + ) + connection.set_isolation_level( + psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT) + cursor = connection.cursor() + db_name = configuration.getoption("--database-name-postgresql") + cursor.execute("DROP DATABASE IF EXISTS {database}".format( + database=db_name)) + cursor.execute("CREATE DATABASE {database}".format(database=db_name)) + cursor.execute( + "SELECT COUNT(1) FROM pg_available_extensions WHERE name='postgis'") + postgis_available = bool(cursor.fetchone()[0]) + cursor.close() + connection.close() + if postgis_available: + _create_postgresql_extension(configuration, extension="postgis") + else: + _create_postgresql_extension(configuration, extension="plpythonu") + + +def _create_postgresql_extension(configuration, extension): + """Create a postgresql extension in a previously created database. + + Parameters + ---------- + configuration: _pytest.config.Config + The configuration object used by pytest + extension: str + Name of the extension to be created + + """ + + connection = psycopg2.connect( + database=configuration.getoption("--database-name-postgresql"), + user=configuration.getoption("--database-user-postgresql"), + password=configuration.getoption("--database-password-postgresql"), + host=configuration.getoption("--database-host-postgresql"), + port=configuration.getoption("--database-port-postgresql") + ) + connection.set_isolation_level( + psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT) + cursor = connection.cursor() + cursor.execute("CREATE EXTENSION {0}".format(extension)) + cursor.close() + connection.close() + + +def _repository_exists(repository_url, table_name): + """Test if the database already exists. + + Parameters + ---------- + repository_url: str + URL for the repository, as used by SQLAlchemy engines + table_name: str + Name of the table that is to be used to store pycsw records + + Returns + ------- + bool + Whether the repository exists or not. + + """ + + if repository_url.startswith("sqlite"): + repository_path = repository_url.replace("sqlite:///", "") + result = os.path.isfile(repository_path) + elif repository_url.startswith("postgresql"): + db_info = _parse_postgresql_repository_url(repository_url) + try: + connection = psycopg2.connect(user=db_info["user"], + password=db_info["password"], + host=db_info["host"], + port=db_info["port"], + database=db_info["database"]) + cursor = connection.cursor() + cursor.execute("SELECT COUNT(1) FROM {table_name}".format( + table_name=table_name)) + except (psycopg2.OperationalError, psycopg2.ProgrammingError): + # database or table does not exist yet + result = False + else: + result = True + else: + raise NotImplementedError + return result diff --git a/tests/suites/apiso-inspire/default.cfg b/tests/functionaltests/suites/apiso-inspire/default.cfg similarity index 100% rename from tests/suites/apiso-inspire/default.cfg rename to tests/functionaltests/suites/apiso-inspire/default.cfg diff --git a/tests/expected/suites_apiso-inspire_get_GetCapabilities-lang.xml b/tests/functionaltests/suites/apiso-inspire/expected/get_GetCapabilities-lang.xml similarity index 100% rename from tests/expected/suites_apiso-inspire_get_GetCapabilities-lang.xml rename to tests/functionaltests/suites/apiso-inspire/expected/get_GetCapabilities-lang.xml diff --git a/tests/expected/suites_apiso-inspire_get_GetCapabilities.xml b/tests/functionaltests/suites/apiso-inspire/expected/get_GetCapabilities.xml similarity index 100% rename from tests/expected/suites_apiso-inspire_get_GetCapabilities.xml rename to tests/functionaltests/suites/apiso-inspire/expected/get_GetCapabilities.xml diff --git a/tests/functionaltests/suites/apiso-inspire/get/requests.txt b/tests/functionaltests/suites/apiso-inspire/get/requests.txt new file mode 100644 index 000000000..09816a219 --- /dev/null +++ b/tests/functionaltests/suites/apiso-inspire/get/requests.txt @@ -0,0 +1,2 @@ +GetCapabilities,service=CSW&version=2.0.2&request=GetCapabilities +GetCapabilities-lang,service=CSW&version=2.0.2&request=GetCapabilities&lang=gre diff --git a/tests/suites/apiso/data/3e9a8c05.xml b/tests/functionaltests/suites/apiso/data/3e9a8c05.xml similarity index 97% rename from tests/suites/apiso/data/3e9a8c05.xml rename to tests/functionaltests/suites/apiso/data/3e9a8c05.xml index 5c9c97620..3635d7c8a 100644 --- a/tests/suites/apiso/data/3e9a8c05.xml +++ b/tests/functionaltests/suites/apiso/data/3e9a8c05.xml @@ -1,248 +1,248 @@ - - -3e9a8c05 - - -eng - - -service - - - - -NTUA - - - - - - -tzotsos@gmail.com - - - - - - -pointOfContact - - - - -2011-04-18 - - -ISO19115 - - -2003/Cor.1:2006 - - - - - - -test Title - - - - -2011-04-19 - - -creation - - - - - - -http://aiolos.survey.ntua.gr - - -ogc - - - - - - -test Abstract - - - - -NTUA - - - - - - -tzotsos@gmail.com - - - - - - -owner - - - - - - -Geographic viewer (humanGeographicViewer) - - - - - - -administration - - - - -GEMET Themes, version 2.3 - - - - -2011-04-18 - - -publication - - - - - - - - - - -Conditions unknown - - - - - - -no limitation - - - - - - - - -19.37 - - -29.61 - - -34.80 - - -41.75 - - - - - - - -2011-04-18 -2011-04-20 - - - - - - - -view - - - - - - - - - - - - - - - - - -http://aiolos.survey.ntua.gr/geoserver/wms - - - - - - - - - - - - -service - - - - - - - - -Conformity_001 - - -INSPIRE - - - - - - - - -Corrigendum to INSPIRE Metadata Regulation published in the Official Journal of the European Union, L 328, page 83 - - - - -2009-12-15 - - -publication - - - - - - -See the referenced specification - - -true - - - - - - - - + + +3e9a8c05 + + +eng + + +service + + + + +NTUA + + + + + + +tzotsos@gmail.com + + + + + + +pointOfContact + + + + +2011-04-18 + + +ISO19115 + + +2003/Cor.1:2006 + + + + + + +test Title + + + + +2011-04-19 + + +creation + + + + + + +http://aiolos.survey.ntua.gr + + +ogc + + + + + + +test Abstract + + + + +NTUA + + + + + + +tzotsos@gmail.com + + + + + + +owner + + + + + + +Geographic viewer (humanGeographicViewer) + + + + + + +administration + + + + +GEMET Themes, version 2.3 + + + + +2011-04-18 + + +publication + + + + + + + + + + +Conditions unknown + + + + + + +no limitation + + + + + + + + +19.37 + + +29.61 + + +34.80 + + +41.75 + + + + + + + +2011-04-18 +2011-04-20 + + + + + + + +view + + + + + + + + + + + + + + + + + +http://aiolos.survey.ntua.gr/geoserver/wms + + + + + + + + + + + + +service + + + + + + + + +Conformity_001 + + +INSPIRE + + + + + + + + +Corrigendum to INSPIRE Metadata Regulation published in the Official Journal of the European Union, L 328, page 83 + + + + +2009-12-15 + + +publication + + + + + + +See the referenced specification + + +true + + + + + + + + diff --git a/tests/suites/apiso/data/README.txt b/tests/functionaltests/suites/apiso/data/README.txt similarity index 100% rename from tests/suites/apiso/data/README.txt rename to tests/functionaltests/suites/apiso/data/README.txt diff --git a/tests/suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000012.xml b/tests/functionaltests/suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000012.xml similarity index 99% rename from tests/suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000012.xml rename to tests/functionaltests/suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000012.xml index de5188346..701c3d9a2 100644 --- a/tests/suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000012.xml +++ b/tests/functionaltests/suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000012.xml @@ -1,37 +1,37 @@ - - - 366f6257-19eb-4f20-ba78-0698ac4aae77 - eng - dataset - YPAATypaat@ypaat.grpointOfContact - 2009-10-09 -ISO19115 -2003/Cor.1:2006 - - - - - Aerial Photos - 2009-10-09creation - 366f6257-19eb-4f20-ba78-0698ac4aae77 - T_aerfo_RAS_1991_GR800P001800000012.tif - - - Aerial Photos -YPAATypaat@ypaat.growner - OrthoimageryGEMET - INSPIRE themes, version 1.02008-06-01publication - no conditions apply - otherRestrictionsno limitations - eng - geoscientificInformation - 20.0024.0038.0040.00 - 2009-10-092009-10-09 - - -http://www.ypaat.gr - -dataset -Conformity_001INSPIREINSPIRE2008-05-15publicationSee the referenced specificationtrue -test - - + + + 366f6257-19eb-4f20-ba78-0698ac4aae77 + eng + dataset + YPAATypaat@ypaat.grpointOfContact + 2009-10-09 +ISO19115 +2003/Cor.1:2006 + + + + + Aerial Photos + 2009-10-09creation + 366f6257-19eb-4f20-ba78-0698ac4aae77 + T_aerfo_RAS_1991_GR800P001800000012.tif + + + Aerial Photos +YPAATypaat@ypaat.growner + OrthoimageryGEMET - INSPIRE themes, version 1.02008-06-01publication + no conditions apply + otherRestrictionsno limitations + eng + geoscientificInformation + 20.0024.0038.0040.00 + 2009-10-092009-10-09 + + +http://www.ypaat.gr + +dataset +Conformity_001INSPIREINSPIRE2008-05-15publicationSee the referenced specificationtrue +test + + diff --git a/tests/suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000013.xml b/tests/functionaltests/suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000013.xml similarity index 99% rename from tests/suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000013.xml rename to tests/functionaltests/suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000013.xml index 0de59fea5..e91a4cc55 100644 --- a/tests/suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000013.xml +++ b/tests/functionaltests/suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000013.xml @@ -1,37 +1,37 @@ - - - 75a7eb5e-336e-453d-ab06-209b1070d396 - eng - dataset - YPAATypaat@ypaat.grpointOfContact - 2009-10-09 -ISO19115 -2003/Cor.1:2006 - - - - - Aerial Photos - 2009-10-09creation - 75a7eb5e-336e-453d-ab06-209b1070d396 - T_aerfo_RAS_1991_GR800P001800000013.tif - - - Aerial Photos -YPAATypaat@ypaat.growner - OrthoimageryGEMET - INSPIRE themes, version 1.02008-06-01publication - no conditions apply - otherRestrictionsno limitations - eng - geoscientificInformation - 20.0024.0038.0040.00 - 2009-10-092009-10-09 - - -http://www.ypaat.gr - -dataset -Conformity_001INSPIREINSPIRE2008-05-15publicationSee the referenced specificationtrue -test - - + + + 75a7eb5e-336e-453d-ab06-209b1070d396 + eng + dataset + YPAATypaat@ypaat.grpointOfContact + 2009-10-09 +ISO19115 +2003/Cor.1:2006 + + + + + Aerial Photos + 2009-10-09creation + 75a7eb5e-336e-453d-ab06-209b1070d396 + T_aerfo_RAS_1991_GR800P001800000013.tif + + + Aerial Photos +YPAATypaat@ypaat.growner + OrthoimageryGEMET - INSPIRE themes, version 1.02008-06-01publication + no conditions apply + otherRestrictionsno limitations + eng + geoscientificInformation + 20.0024.0038.0040.00 + 2009-10-092009-10-09 + + +http://www.ypaat.gr + +dataset +Conformity_001INSPIREINSPIRE2008-05-15publicationSee the referenced specificationtrue +test + + diff --git a/tests/suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000014.xml b/tests/functionaltests/suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000014.xml similarity index 99% rename from tests/suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000014.xml rename to tests/functionaltests/suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000014.xml index 5ac2f71c4..88b35f749 100644 --- a/tests/suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000014.xml +++ b/tests/functionaltests/suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000014.xml @@ -1,37 +1,37 @@ - - - a7308c0a-b748-48e2-bab7-0a608a51d416 - eng - dataset - YPAATypaat@ypaat.grpointOfContact - 2009-10-09 -ISO19115 -2003/Cor.1:2006 - - - - - Aerial Photos - 2009-10-09creation - a7308c0a-b748-48e2-bab7-0a608a51d416 - T_aerfo_RAS_1991_GR800P001800000014.tif - - - Aerial Photos -YPAATypaat@ypaat.growner - OrthoimageryGEMET - INSPIRE themes, version 1.02008-06-01publication - no conditions apply - otherRestrictionsno limitations - eng - geoscientificInformation - 20.0024.0038.0040.00 - 2009-10-092009-10-09 - - -http://www.ypaat.gr - -dataset -Conformity_001INSPIREINSPIRE2008-05-15publicationSee the referenced specificationtrue -test - - + + + a7308c0a-b748-48e2-bab7-0a608a51d416 + eng + dataset + YPAATypaat@ypaat.grpointOfContact + 2009-10-09 +ISO19115 +2003/Cor.1:2006 + + + + + Aerial Photos + 2009-10-09creation + a7308c0a-b748-48e2-bab7-0a608a51d416 + T_aerfo_RAS_1991_GR800P001800000014.tif + + + Aerial Photos +YPAATypaat@ypaat.growner + OrthoimageryGEMET - INSPIRE themes, version 1.02008-06-01publication + no conditions apply + otherRestrictionsno limitations + eng + geoscientificInformation + 20.0024.0038.0040.00 + 2009-10-092009-10-09 + + +http://www.ypaat.gr + +dataset +Conformity_001INSPIREINSPIRE2008-05-15publicationSee the referenced specificationtrue +test + + diff --git a/tests/suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000015.xml b/tests/functionaltests/suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000015.xml similarity index 99% rename from tests/suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000015.xml rename to tests/functionaltests/suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000015.xml index 63ff4cf35..603fb0c5b 100644 --- a/tests/suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000015.xml +++ b/tests/functionaltests/suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000015.xml @@ -1,37 +1,37 @@ - - - 0173e0d7-6ea9-4407-b846-f29d6bfa9903 - eng - dataset - YPAATypaat@ypaat.grpointOfContact - 2009-10-09 -ISO19115 -2003/Cor.1:2006 - - - - - Aerial Photos - 2009-10-09creation - 0173e0d7-6ea9-4407-b846-f29d6bfa9903 - T_aerfo_RAS_1991_GR800P001800000015.tif - - - Aerial Photos -YPAATypaat@ypaat.growner - OrthoimageryGEMET - INSPIRE themes, version 1.02008-06-01publication - no conditions apply - otherRestrictionsno limitations - eng - geoscientificInformation - 20.0024.0038.0040.00 - 2009-10-092009-10-09 - - -http://www.ypaat.gr - -dataset -Conformity_001INSPIREINSPIRE2008-05-15publicationSee the referenced specificationtrue -test - - + + + 0173e0d7-6ea9-4407-b846-f29d6bfa9903 + eng + dataset + YPAATypaat@ypaat.grpointOfContact + 2009-10-09 +ISO19115 +2003/Cor.1:2006 + + + + + Aerial Photos + 2009-10-09creation + 0173e0d7-6ea9-4407-b846-f29d6bfa9903 + T_aerfo_RAS_1991_GR800P001800000015.tif + + + Aerial Photos +YPAATypaat@ypaat.growner + OrthoimageryGEMET - INSPIRE themes, version 1.02008-06-01publication + no conditions apply + otherRestrictionsno limitations + eng + geoscientificInformation + 20.0024.0038.0040.00 + 2009-10-092009-10-09 + + +http://www.ypaat.gr + +dataset +Conformity_001INSPIREINSPIRE2008-05-15publicationSee the referenced specificationtrue +test + + diff --git a/tests/suites/apiso/data/T_ortho_RAS_1998_284404.xml b/tests/functionaltests/suites/apiso/data/T_ortho_RAS_1998_284404.xml similarity index 99% rename from tests/suites/apiso/data/T_ortho_RAS_1998_284404.xml rename to tests/functionaltests/suites/apiso/data/T_ortho_RAS_1998_284404.xml index 05d95c8d4..f9c584c34 100644 --- a/tests/suites/apiso/data/T_ortho_RAS_1998_284404.xml +++ b/tests/functionaltests/suites/apiso/data/T_ortho_RAS_1998_284404.xml @@ -1,37 +1,37 @@ - - - de53e931-778a-4792-94ad-9fe507aca483 - eng - dataset - YPAATypaat@ypaat.grpointOfContact - 2009-10-07 -ISO19115 -2003/Cor.1:2006 - - - - - Ortho - 2000-01-01publication - de53e931-778a-4792-94ad-9fe507aca483 - T_ortho_RAS_1998_284404.tif - - - Ortho -YPAATypaat@ypaat.growner - OrthoimageryGEMET - INSPIRE themes, version 1.02008-06-01publication - no conditions apply - otherRestrictionsno limitations - 5000 - eng - geoscientificInformation - 21.47878421.52731739.7600139.790341 - 1997-01-011999-01-01 - - -http://www.ypaat.gr - -dataset -test - - + + + de53e931-778a-4792-94ad-9fe507aca483 + eng + dataset + YPAATypaat@ypaat.grpointOfContact + 2009-10-07 +ISO19115 +2003/Cor.1:2006 + + + + + Ortho + 2000-01-01publication + de53e931-778a-4792-94ad-9fe507aca483 + T_ortho_RAS_1998_284404.tif + + + Ortho +YPAATypaat@ypaat.growner + OrthoimageryGEMET - INSPIRE themes, version 1.02008-06-01publication + no conditions apply + otherRestrictionsno limitations + 5000 + eng + geoscientificInformation + 21.47878421.52731739.7600139.790341 + 1997-01-011999-01-01 + + +http://www.ypaat.gr + +dataset +test + + diff --git a/tests/suites/apiso/data/T_ortho_RAS_1998_288395.xml b/tests/functionaltests/suites/apiso/data/T_ortho_RAS_1998_288395.xml similarity index 99% rename from tests/suites/apiso/data/T_ortho_RAS_1998_288395.xml rename to tests/functionaltests/suites/apiso/data/T_ortho_RAS_1998_288395.xml index e02d4ec22..c9328b797 100644 --- a/tests/suites/apiso/data/T_ortho_RAS_1998_288395.xml +++ b/tests/functionaltests/suites/apiso/data/T_ortho_RAS_1998_288395.xml @@ -1,37 +1,37 @@ - - - 4a5109d7-9ce5-4197-a423-b5fa8c426dee - eng - dataset - YPAATypaat@ypaat.grpointOfContact - 2009-10-07 -ISO19115 -2003/Cor.1:2006 - - - - - Ortho - 2000-01-01publication - 4a5109d7-9ce5-4197-a423-b5fa8c426dee - T_ortho_RAS_1998_288395.tif - - - Ortho -YPAATypaat@ypaat.growner - OrthoimageryGEMET - INSPIRE themes, version 1.02008-06-01publication - no conditions apply - otherRestrictionsno limitations - 5000 - eng - geoscientificInformation - 21.52833321.57683439.67999939.710309 - 1997-01-011999-01-01 - - -http://www.ypaat.gr - -dataset -test - - + + + 4a5109d7-9ce5-4197-a423-b5fa8c426dee + eng + dataset + YPAATypaat@ypaat.grpointOfContact + 2009-10-07 +ISO19115 +2003/Cor.1:2006 + + + + + Ortho + 2000-01-01publication + 4a5109d7-9ce5-4197-a423-b5fa8c426dee + T_ortho_RAS_1998_288395.tif + + + Ortho +YPAATypaat@ypaat.growner + OrthoimageryGEMET - INSPIRE themes, version 1.02008-06-01publication + no conditions apply + otherRestrictionsno limitations + 5000 + eng + geoscientificInformation + 21.52833321.57683439.67999939.710309 + 1997-01-011999-01-01 + + +http://www.ypaat.gr + +dataset +test + + diff --git a/tests/suites/apiso/data/T_ortho_RAS_1998_288398.xml b/tests/functionaltests/suites/apiso/data/T_ortho_RAS_1998_288398.xml similarity index 99% rename from tests/suites/apiso/data/T_ortho_RAS_1998_288398.xml rename to tests/functionaltests/suites/apiso/data/T_ortho_RAS_1998_288398.xml index 8766c0c7a..2b40aa4ba 100644 --- a/tests/suites/apiso/data/T_ortho_RAS_1998_288398.xml +++ b/tests/functionaltests/suites/apiso/data/T_ortho_RAS_1998_288398.xml @@ -1,37 +1,37 @@ - - - 5f37e0f8-4fb1-4637-b959-b415058bdb68 - eng - dataset - YPAATypaat@ypaat.grpointOfContact - 2009-10-07 -ISO19115 -2003/Cor.1:2006 - - - - - Ortho - 2000-01-01publication - 5f37e0f8-4fb1-4637-b959-b415058bdb68 - T_ortho_RAS_1998_288398.tif - - - Ortho -YPAATypaat@ypaat.growner - OrthoimageryGEMET - INSPIRE themes, version 1.02008-06-01publication - no conditions apply - otherRestrictionsno limitations - 5000 - eng - geoscientificInformation - 21.52736921.57588839.70700439.737315 - 1997-01-011999-01-01 - - -http://www.ypaat.gr - -dataset -test - - + + + 5f37e0f8-4fb1-4637-b959-b415058bdb68 + eng + dataset + YPAATypaat@ypaat.grpointOfContact + 2009-10-07 +ISO19115 +2003/Cor.1:2006 + + + + + Ortho + 2000-01-01publication + 5f37e0f8-4fb1-4637-b959-b415058bdb68 + T_ortho_RAS_1998_288398.tif + + + Ortho +YPAATypaat@ypaat.growner + OrthoimageryGEMET - INSPIRE themes, version 1.02008-06-01publication + no conditions apply + otherRestrictionsno limitations + 5000 + eng + geoscientificInformation + 21.52736921.57588839.70700439.737315 + 1997-01-011999-01-01 + + +http://www.ypaat.gr + +dataset +test + + diff --git a/tests/suites/apiso/data/T_ortho_RAS_1998_288401.xml b/tests/functionaltests/suites/apiso/data/T_ortho_RAS_1998_288401.xml similarity index 99% rename from tests/suites/apiso/data/T_ortho_RAS_1998_288401.xml rename to tests/functionaltests/suites/apiso/data/T_ortho_RAS_1998_288401.xml index 0ae753a1f..7cab9fab2 100644 --- a/tests/suites/apiso/data/T_ortho_RAS_1998_288401.xml +++ b/tests/functionaltests/suites/apiso/data/T_ortho_RAS_1998_288401.xml @@ -1,37 +1,37 @@ - - - f99cc358-f379-4e79-ab1e-cb2f7709f594 - eng - dataset - YPAATypaat@ypaat.grpointOfContact - 2009-10-07 -ISO19115 -2003/Cor.1:2006 - - - - - Ortho - 2000-01-01publication - f99cc358-f379-4e79-ab1e-cb2f7709f594 - T_ortho_RAS_1998_288401.tif - - - Ortho -YPAATypaat@ypaat.growner - OrthoimageryGEMET - INSPIRE themes, version 1.02008-06-01publication - no conditions apply - otherRestrictionsno limitations - 5000 - eng - geoscientificInformation - 21.52640421.57494139.73400939.764321 - 1997-01-011999-01-01 - - -http://www.ypaat.gr - -dataset -test - - + + + f99cc358-f379-4e79-ab1e-cb2f7709f594 + eng + dataset + YPAATypaat@ypaat.grpointOfContact + 2009-10-07 +ISO19115 +2003/Cor.1:2006 + + + + + Ortho + 2000-01-01publication + f99cc358-f379-4e79-ab1e-cb2f7709f594 + T_ortho_RAS_1998_288401.tif + + + Ortho +YPAATypaat@ypaat.growner + OrthoimageryGEMET - INSPIRE themes, version 1.02008-06-01publication + no conditions apply + otherRestrictionsno limitations + 5000 + eng + geoscientificInformation + 21.52640421.57494139.73400939.764321 + 1997-01-011999-01-01 + + +http://www.ypaat.gr + +dataset +test + + diff --git a/tests/suites/apiso/data/T_ortho_RAS_1998_288404.xml b/tests/functionaltests/suites/apiso/data/T_ortho_RAS_1998_288404.xml similarity index 99% rename from tests/suites/apiso/data/T_ortho_RAS_1998_288404.xml rename to tests/functionaltests/suites/apiso/data/T_ortho_RAS_1998_288404.xml index 6dca0cffc..eaa38230a 100644 --- a/tests/suites/apiso/data/T_ortho_RAS_1998_288404.xml +++ b/tests/functionaltests/suites/apiso/data/T_ortho_RAS_1998_288404.xml @@ -1,37 +1,37 @@ - - - ae200a05-2800-40b8-b85d-8f8d007b9e30 - eng - dataset - YPAATypaat@ypaat.grpointOfContact - 2009-10-07 -ISO19115 -2003/Cor.1:2006 - - - - - Ortho - 2000-01-01publication - ae200a05-2800-40b8-b85d-8f8d007b9e30 - T_ortho_RAS_1998_288404.tif - - - Ortho -YPAATypaat@ypaat.growner - OrthoimageryGEMET - INSPIRE themes, version 1.02008-06-01publication - no conditions apply - otherRestrictionsno limitations - 5000 - eng - geoscientificInformation - 21.52543721.57399239.76101539.791327 - 1997-01-011999-01-01 - - -http://www.ypaat.gr - -dataset -test - - + + + ae200a05-2800-40b8-b85d-8f8d007b9e30 + eng + dataset + YPAATypaat@ypaat.grpointOfContact + 2009-10-07 +ISO19115 +2003/Cor.1:2006 + + + + + Ortho + 2000-01-01publication + ae200a05-2800-40b8-b85d-8f8d007b9e30 + T_ortho_RAS_1998_288404.tif + + + Ortho +YPAATypaat@ypaat.growner + OrthoimageryGEMET - INSPIRE themes, version 1.02008-06-01publication + no conditions apply + otherRestrictionsno limitations + 5000 + eng + geoscientificInformation + 21.52543721.57399239.76101539.791327 + 1997-01-011999-01-01 + + +http://www.ypaat.gr + +dataset +test + + diff --git a/tests/suites/apiso/data/T_pmoed_DTM_1996_276395.xml b/tests/functionaltests/suites/apiso/data/T_pmoed_DTM_1996_276395.xml similarity index 99% rename from tests/suites/apiso/data/T_pmoed_DTM_1996_276395.xml rename to tests/functionaltests/suites/apiso/data/T_pmoed_DTM_1996_276395.xml index 2213557b4..30c75bbac 100644 --- a/tests/suites/apiso/data/T_pmoed_DTM_1996_276395.xml +++ b/tests/functionaltests/suites/apiso/data/T_pmoed_DTM_1996_276395.xml @@ -1,37 +1,37 @@ - - - a2744b0c-becd-426a-95a8-46e9850ccc6d - eng - dataset - YPAATypaat@ypaat.grpointOfContact - 2009-10-07 -ISO19115 -2003/Cor.1:2006 - - - - - DTM - 2009-10-07creation - a2744b0c-becd-426a-95a8-46e9850ccc6d - T_pmoed_DTM_1996_276395.tif - - - DTM -YPAATypaat@ypaat.growner - ElevationGEMET - INSPIRE themes, version 1.02008-06-01publication - no conditions apply - otherRestrictionsno limitations - 5000 - eng - elevation - 19.0030.0034.0042.00 - 2009-10-072009-10-07 - - -http://www.ypaat.gr - -dataset -test - - + + + a2744b0c-becd-426a-95a8-46e9850ccc6d + eng + dataset + YPAATypaat@ypaat.grpointOfContact + 2009-10-07 +ISO19115 +2003/Cor.1:2006 + + + + + DTM + 2009-10-07creation + a2744b0c-becd-426a-95a8-46e9850ccc6d + T_pmoed_DTM_1996_276395.tif + + + DTM +YPAATypaat@ypaat.growner + ElevationGEMET - INSPIRE themes, version 1.02008-06-01publication + no conditions apply + otherRestrictionsno limitations + 5000 + eng + elevation + 19.0030.0034.0042.00 + 2009-10-072009-10-07 + + +http://www.ypaat.gr + +dataset +test + + diff --git a/tests/suites/apiso/data/T_pmoed_DTM_1996_276398.xml b/tests/functionaltests/suites/apiso/data/T_pmoed_DTM_1996_276398.xml similarity index 99% rename from tests/suites/apiso/data/T_pmoed_DTM_1996_276398.xml rename to tests/functionaltests/suites/apiso/data/T_pmoed_DTM_1996_276398.xml index adf548664..29dfd6399 100644 --- a/tests/suites/apiso/data/T_pmoed_DTM_1996_276398.xml +++ b/tests/functionaltests/suites/apiso/data/T_pmoed_DTM_1996_276398.xml @@ -1,37 +1,37 @@ - - - 0dc824a6-b555-46c1-bd7b-bc66cb91a70f - eng - dataset - YPAATypaat@ypaat.grpointOfContact - 2009-10-07 -ISO19115 -2003/Cor.1:2006 - - - - - DTM - 2009-10-07creation - 0dc824a6-b555-46c1-bd7b-bc66cb91a70f - T_pmoed_DTM_1996_276398.tif - - - DTM -YPAATypaat@ypaat.growner - ElevationGEMET - INSPIRE themes, version 1.02008-06-01publication - no conditions apply - otherRestrictionsno limitations - 5000 - eng - elevation - 19.0030.0034.0042.00 - 2009-10-072009-10-07 - - -http://www.ypaat.gr - -dataset -test - - + + + 0dc824a6-b555-46c1-bd7b-bc66cb91a70f + eng + dataset + YPAATypaat@ypaat.grpointOfContact + 2009-10-07 +ISO19115 +2003/Cor.1:2006 + + + + + DTM + 2009-10-07creation + 0dc824a6-b555-46c1-bd7b-bc66cb91a70f + T_pmoed_DTM_1996_276398.tif + + + DTM +YPAATypaat@ypaat.growner + ElevationGEMET - INSPIRE themes, version 1.02008-06-01publication + no conditions apply + otherRestrictionsno limitations + 5000 + eng + elevation + 19.0030.0034.0042.00 + 2009-10-072009-10-07 + + +http://www.ypaat.gr + +dataset +test + + diff --git a/tests/suites/apiso/data/T_pmoed_DTM_1996_276401.xml b/tests/functionaltests/suites/apiso/data/T_pmoed_DTM_1996_276401.xml similarity index 99% rename from tests/suites/apiso/data/T_pmoed_DTM_1996_276401.xml rename to tests/functionaltests/suites/apiso/data/T_pmoed_DTM_1996_276401.xml index 343234780..22d507920 100644 --- a/tests/suites/apiso/data/T_pmoed_DTM_1996_276401.xml +++ b/tests/functionaltests/suites/apiso/data/T_pmoed_DTM_1996_276401.xml @@ -1,37 +1,37 @@ - - - 42c8e55a-2bf6-476d-a7c9-be3bcd697f13 - eng - dataset - YPAATypaat@ypaat.grpointOfContact - 2009-10-07 -ISO19115 -2003/Cor.1:2006 - - - - - DTM - 2009-10-07creation - 42c8e55a-2bf6-476d-a7c9-be3bcd697f13 - T_pmoed_DTM_1996_276401.tif - - - DTM -YPAATypaat@ypaat.growner - ElevationGEMET - INSPIRE themes, version 1.02008-06-01publication - no conditions apply - otherRestrictionsno limitations - 5000 - eng - elevation - 19.0030.0034.0042.00 - 2009-10-072009-10-07 - - -http://www.ypaat.gr - -dataset -test - - + + + 42c8e55a-2bf6-476d-a7c9-be3bcd697f13 + eng + dataset + YPAATypaat@ypaat.grpointOfContact + 2009-10-07 +ISO19115 +2003/Cor.1:2006 + + + + + DTM + 2009-10-07creation + 42c8e55a-2bf6-476d-a7c9-be3bcd697f13 + T_pmoed_DTM_1996_276401.tif + + + DTM +YPAATypaat@ypaat.growner + ElevationGEMET - INSPIRE themes, version 1.02008-06-01publication + no conditions apply + otherRestrictionsno limitations + 5000 + eng + elevation + 19.0030.0034.0042.00 + 2009-10-072009-10-07 + + +http://www.ypaat.gr + +dataset +test + + diff --git a/tests/suites/apiso/data/T_pmoed_DTM_1996_276404.xml b/tests/functionaltests/suites/apiso/data/T_pmoed_DTM_1996_276404.xml similarity index 99% rename from tests/suites/apiso/data/T_pmoed_DTM_1996_276404.xml rename to tests/functionaltests/suites/apiso/data/T_pmoed_DTM_1996_276404.xml index ef2357456..1bdc099d5 100644 --- a/tests/suites/apiso/data/T_pmoed_DTM_1996_276404.xml +++ b/tests/functionaltests/suites/apiso/data/T_pmoed_DTM_1996_276404.xml @@ -1,37 +1,37 @@ - - - c3bf29d4-d60a-4959-a415-2c03fb0d4aef - eng - dataset - YPAATypaat@ypaat.grpointOfContact - 2009-10-07 -ISO19115 -2003/Cor.1:2006 - - - - - DTM - 2009-10-07creation - c3bf29d4-d60a-4959-a415-2c03fb0d4aef - T_pmoed_DTM_1996_276404.tif - - - DTM -YPAATypaat@ypaat.growner - ElevationGEMET - INSPIRE themes, version 1.02008-06-01publication - no conditions apply - otherRestrictionsno limitations - 5000 - eng - elevation - 19.0030.0034.0042.00 - 2009-10-072009-10-07 - - -http://www.ypaat.gr - -dataset -test - - + + + c3bf29d4-d60a-4959-a415-2c03fb0d4aef + eng + dataset + YPAATypaat@ypaat.grpointOfContact + 2009-10-07 +ISO19115 +2003/Cor.1:2006 + + + + + DTM + 2009-10-07creation + c3bf29d4-d60a-4959-a415-2c03fb0d4aef + T_pmoed_DTM_1996_276404.tif + + + DTM +YPAATypaat@ypaat.growner + ElevationGEMET - INSPIRE themes, version 1.02008-06-01publication + no conditions apply + otherRestrictionsno limitations + 5000 + eng + elevation + 19.0030.0034.0042.00 + 2009-10-072009-10-07 + + +http://www.ypaat.gr + +dataset +test + + diff --git a/tests/suites/apiso/data/T_pmoed_DTM_1996_280395.xml b/tests/functionaltests/suites/apiso/data/T_pmoed_DTM_1996_280395.xml similarity index 99% rename from tests/suites/apiso/data/T_pmoed_DTM_1996_280395.xml rename to tests/functionaltests/suites/apiso/data/T_pmoed_DTM_1996_280395.xml index d65cce94f..422ca581c 100644 --- a/tests/suites/apiso/data/T_pmoed_DTM_1996_280395.xml +++ b/tests/functionaltests/suites/apiso/data/T_pmoed_DTM_1996_280395.xml @@ -1,37 +1,37 @@ - - - b8cc2388-5d0a-43d8-9473-0e86dd0396da - eng - dataset - YPAATypaat@ypaat.grpointOfContact - 2009-10-07 -ISO19115 -2003/Cor.1:2006 - - - - - DTM - 2009-10-07creation - b8cc2388-5d0a-43d8-9473-0e86dd0396da - T_pmoed_DTM_1996_280395.tif - - - DTM -YPAATypaat@ypaat.growner - ElevationGEMET - INSPIRE themes, version 1.02008-06-01publication - no conditions apply - otherRestrictionsno limitations - 5000 - eng - elevation - 19.0030.0034.0042.00 - 2009-10-072009-10-07 - - -http://www.ypaat.gr - -dataset -test - - + + + b8cc2388-5d0a-43d8-9473-0e86dd0396da + eng + dataset + YPAATypaat@ypaat.grpointOfContact + 2009-10-07 +ISO19115 +2003/Cor.1:2006 + + + + + DTM + 2009-10-07creation + b8cc2388-5d0a-43d8-9473-0e86dd0396da + T_pmoed_DTM_1996_280395.tif + + + DTM +YPAATypaat@ypaat.growner + ElevationGEMET - INSPIRE themes, version 1.02008-06-01publication + no conditions apply + otherRestrictionsno limitations + 5000 + eng + elevation + 19.0030.0034.0042.00 + 2009-10-072009-10-07 + + +http://www.ypaat.gr + +dataset +test + + diff --git a/tests/suites/apiso/data/pacioos-NS06agg.xml b/tests/functionaltests/suites/apiso/data/pacioos-NS06agg.xml similarity index 100% rename from tests/suites/apiso/data/pacioos-NS06agg.xml rename to tests/functionaltests/suites/apiso/data/pacioos-NS06agg.xml diff --git a/tests/suites/apiso/data/test.xml b/tests/functionaltests/suites/apiso/data/test.xml similarity index 100% rename from tests/suites/apiso/data/test.xml rename to tests/functionaltests/suites/apiso/data/test.xml diff --git a/tests/suites/apiso/default.cfg b/tests/functionaltests/suites/apiso/default.cfg similarity index 100% rename from tests/suites/apiso/default.cfg rename to tests/functionaltests/suites/apiso/default.cfg diff --git a/tests/expected/suites_apiso_post_DescribeRecord.xml b/tests/functionaltests/suites/apiso/expected/post_DescribeRecord.xml similarity index 100% rename from tests/expected/suites_apiso_post_DescribeRecord.xml rename to tests/functionaltests/suites/apiso/expected/post_DescribeRecord.xml diff --git a/tests/expected/suites_apiso_post_GetCapabilities.xml b/tests/functionaltests/suites/apiso/expected/post_GetCapabilities.xml similarity index 100% rename from tests/expected/suites_apiso_post_GetCapabilities.xml rename to tests/functionaltests/suites/apiso/expected/post_GetCapabilities.xml diff --git a/tests/expected/suites_apiso_post_GetDomain-property.xml b/tests/functionaltests/suites/apiso/expected/post_GetDomain-property.xml similarity index 100% rename from tests/expected/suites_apiso_post_GetDomain-property.xml rename to tests/functionaltests/suites/apiso/expected/post_GetDomain-property.xml diff --git a/tests/expected/suites_apiso_post_GetRecordById-brief.xml b/tests/functionaltests/suites/apiso/expected/post_GetRecordById-brief.xml similarity index 100% rename from tests/expected/suites_apiso_post_GetRecordById-brief.xml rename to tests/functionaltests/suites/apiso/expected/post_GetRecordById-brief.xml diff --git a/tests/expected/suites_apiso_post_GetRecordById-full-dc.xml b/tests/functionaltests/suites/apiso/expected/post_GetRecordById-full-dc.xml similarity index 100% rename from tests/expected/suites_apiso_post_GetRecordById-full-dc.xml rename to tests/functionaltests/suites/apiso/expected/post_GetRecordById-full-dc.xml diff --git a/tests/expected/suites_apiso_post_GetRecordById-full.xml b/tests/functionaltests/suites/apiso/expected/post_GetRecordById-full.xml similarity index 100% rename from tests/expected/suites_apiso_post_GetRecordById-full.xml rename to tests/functionaltests/suites/apiso/expected/post_GetRecordById-full.xml diff --git a/tests/expected/suites_apiso_post_GetRecordById-srv-brief.xml b/tests/functionaltests/suites/apiso/expected/post_GetRecordById-srv-brief.xml similarity index 100% rename from tests/expected/suites_apiso_post_GetRecordById-srv-brief.xml rename to tests/functionaltests/suites/apiso/expected/post_GetRecordById-srv-brief.xml diff --git a/tests/expected/suites_apiso_post_GetRecords-all-csw-output.xml b/tests/functionaltests/suites/apiso/expected/post_GetRecords-all-csw-output.xml similarity index 100% rename from tests/expected/suites_apiso_post_GetRecords-all-csw-output.xml rename to tests/functionaltests/suites/apiso/expected/post_GetRecords-all-csw-output.xml diff --git a/tests/expected/suites_apiso_post_GetRecords-all.xml b/tests/functionaltests/suites/apiso/expected/post_GetRecords-all.xml similarity index 100% rename from tests/expected/suites_apiso_post_GetRecords-all.xml rename to tests/functionaltests/suites/apiso/expected/post_GetRecords-all.xml diff --git a/tests/expected/suites_apiso_post_GetRecords-cql-title.xml b/tests/functionaltests/suites/apiso/expected/post_GetRecords-cql-title.xml similarity index 100% rename from tests/expected/suites_apiso_post_GetRecords-cql-title.xml rename to tests/functionaltests/suites/apiso/expected/post_GetRecords-cql-title.xml diff --git a/tests/expected/suites_apiso_post_GetRecords-elementname.xml b/tests/functionaltests/suites/apiso/expected/post_GetRecords-elementname.xml similarity index 100% rename from tests/expected/suites_apiso_post_GetRecords-elementname.xml rename to tests/functionaltests/suites/apiso/expected/post_GetRecords-elementname.xml diff --git a/tests/expected/suites_apiso_post_GetRecords-filter-and-nested-spatial-or-dateline.xml b/tests/functionaltests/suites/apiso/expected/post_GetRecords-filter-and-nested-spatial-or-dateline.xml similarity index 100% rename from tests/expected/suites_apiso_post_GetRecords-filter-and-nested-spatial-or-dateline.xml rename to tests/functionaltests/suites/apiso/expected/post_GetRecords-filter-and-nested-spatial-or-dateline.xml diff --git a/tests/expected/suites_apiso_post_GetRecords-filter-anytext.xml b/tests/functionaltests/suites/apiso/expected/post_GetRecords-filter-anytext.xml similarity index 100% rename from tests/expected/suites_apiso_post_GetRecords-filter-anytext.xml rename to tests/functionaltests/suites/apiso/expected/post_GetRecords-filter-anytext.xml diff --git a/tests/expected/suites_apiso_post_GetRecords-filter-bbox-csw-output.xml b/tests/functionaltests/suites/apiso/expected/post_GetRecords-filter-bbox-csw-output.xml similarity index 100% rename from tests/expected/suites_apiso_post_GetRecords-filter-bbox-csw-output.xml rename to tests/functionaltests/suites/apiso/expected/post_GetRecords-filter-bbox-csw-output.xml diff --git a/tests/expected/suites_apiso_post_GetRecords-filter-bbox.xml b/tests/functionaltests/suites/apiso/expected/post_GetRecords-filter-bbox.xml similarity index 100% rename from tests/expected/suites_apiso_post_GetRecords-filter-bbox.xml rename to tests/functionaltests/suites/apiso/expected/post_GetRecords-filter-bbox.xml diff --git a/tests/expected/suites_apiso_post_GetRecords-filter-servicetype.xml b/tests/functionaltests/suites/apiso/expected/post_GetRecords-filter-servicetype.xml similarity index 100% rename from tests/expected/suites_apiso_post_GetRecords-filter-servicetype.xml rename to tests/functionaltests/suites/apiso/expected/post_GetRecords-filter-servicetype.xml diff --git a/tests/suites/apiso/post/DescribeRecord.xml b/tests/functionaltests/suites/apiso/post/DescribeRecord.xml similarity index 100% rename from tests/suites/apiso/post/DescribeRecord.xml rename to tests/functionaltests/suites/apiso/post/DescribeRecord.xml diff --git a/tests/suites/apiso/post/GetCapabilities.xml b/tests/functionaltests/suites/apiso/post/GetCapabilities.xml similarity index 100% rename from tests/suites/apiso/post/GetCapabilities.xml rename to tests/functionaltests/suites/apiso/post/GetCapabilities.xml diff --git a/tests/suites/apiso/post/GetDomain-property.xml b/tests/functionaltests/suites/apiso/post/GetDomain-property.xml similarity index 100% rename from tests/suites/apiso/post/GetDomain-property.xml rename to tests/functionaltests/suites/apiso/post/GetDomain-property.xml diff --git a/tests/suites/apiso/post/GetRecordById-brief.xml b/tests/functionaltests/suites/apiso/post/GetRecordById-brief.xml similarity index 100% rename from tests/suites/apiso/post/GetRecordById-brief.xml rename to tests/functionaltests/suites/apiso/post/GetRecordById-brief.xml diff --git a/tests/suites/apiso/post/GetRecordById-full-dc.xml b/tests/functionaltests/suites/apiso/post/GetRecordById-full-dc.xml similarity index 100% rename from tests/suites/apiso/post/GetRecordById-full-dc.xml rename to tests/functionaltests/suites/apiso/post/GetRecordById-full-dc.xml diff --git a/tests/suites/apiso/post/GetRecordById-full.xml b/tests/functionaltests/suites/apiso/post/GetRecordById-full.xml similarity index 100% rename from tests/suites/apiso/post/GetRecordById-full.xml rename to tests/functionaltests/suites/apiso/post/GetRecordById-full.xml diff --git a/tests/suites/apiso/post/GetRecordById-srv-brief.xml b/tests/functionaltests/suites/apiso/post/GetRecordById-srv-brief.xml similarity index 100% rename from tests/suites/apiso/post/GetRecordById-srv-brief.xml rename to tests/functionaltests/suites/apiso/post/GetRecordById-srv-brief.xml diff --git a/tests/suites/apiso/post/GetRecords-all-csw-output.xml b/tests/functionaltests/suites/apiso/post/GetRecords-all-csw-output.xml similarity index 100% rename from tests/suites/apiso/post/GetRecords-all-csw-output.xml rename to tests/functionaltests/suites/apiso/post/GetRecords-all-csw-output.xml diff --git a/tests/suites/apiso/post/GetRecords-all.xml b/tests/functionaltests/suites/apiso/post/GetRecords-all.xml similarity index 100% rename from tests/suites/apiso/post/GetRecords-all.xml rename to tests/functionaltests/suites/apiso/post/GetRecords-all.xml diff --git a/tests/suites/apiso/post/GetRecords-cql-title.xml b/tests/functionaltests/suites/apiso/post/GetRecords-cql-title.xml similarity index 100% rename from tests/suites/apiso/post/GetRecords-cql-title.xml rename to tests/functionaltests/suites/apiso/post/GetRecords-cql-title.xml diff --git a/tests/suites/apiso/post/GetRecords-elementname.xml b/tests/functionaltests/suites/apiso/post/GetRecords-elementname.xml similarity index 100% rename from tests/suites/apiso/post/GetRecords-elementname.xml rename to tests/functionaltests/suites/apiso/post/GetRecords-elementname.xml diff --git a/tests/suites/apiso/post/GetRecords-filter-and-nested-spatial-or-dateline.xml b/tests/functionaltests/suites/apiso/post/GetRecords-filter-and-nested-spatial-or-dateline.xml similarity index 100% rename from tests/suites/apiso/post/GetRecords-filter-and-nested-spatial-or-dateline.xml rename to tests/functionaltests/suites/apiso/post/GetRecords-filter-and-nested-spatial-or-dateline.xml diff --git a/tests/suites/apiso/post/GetRecords-filter-anytext.xml b/tests/functionaltests/suites/apiso/post/GetRecords-filter-anytext.xml similarity index 100% rename from tests/suites/apiso/post/GetRecords-filter-anytext.xml rename to tests/functionaltests/suites/apiso/post/GetRecords-filter-anytext.xml diff --git a/tests/suites/apiso/post/GetRecords-filter-bbox-csw-output.xml b/tests/functionaltests/suites/apiso/post/GetRecords-filter-bbox-csw-output.xml similarity index 100% rename from tests/suites/apiso/post/GetRecords-filter-bbox-csw-output.xml rename to tests/functionaltests/suites/apiso/post/GetRecords-filter-bbox-csw-output.xml diff --git a/tests/suites/apiso/post/GetRecords-filter-bbox.xml b/tests/functionaltests/suites/apiso/post/GetRecords-filter-bbox.xml similarity index 100% rename from tests/suites/apiso/post/GetRecords-filter-bbox.xml rename to tests/functionaltests/suites/apiso/post/GetRecords-filter-bbox.xml diff --git a/tests/suites/apiso/post/GetRecords-filter-servicetype.xml b/tests/functionaltests/suites/apiso/post/GetRecords-filter-servicetype.xml similarity index 100% rename from tests/suites/apiso/post/GetRecords-filter-servicetype.xml rename to tests/functionaltests/suites/apiso/post/GetRecords-filter-servicetype.xml diff --git a/tests/suites/atom/default.cfg b/tests/functionaltests/suites/atom/default.cfg similarity index 100% rename from tests/suites/atom/default.cfg rename to tests/functionaltests/suites/atom/default.cfg diff --git a/tests/expected/suites_atom_get_opensearch-description.xml b/tests/functionaltests/suites/atom/expected/get_opensearch-description.xml similarity index 100% rename from tests/expected/suites_atom_get_opensearch-description.xml rename to tests/functionaltests/suites/atom/expected/get_opensearch-description.xml diff --git a/tests/expected/suites_atom_get_opensearch-ogc-bbox-and-time.xml b/tests/functionaltests/suites/atom/expected/get_opensearch-ogc-bbox-and-time.xml similarity index 100% rename from tests/expected/suites_atom_get_opensearch-ogc-bbox-and-time.xml rename to tests/functionaltests/suites/atom/expected/get_opensearch-ogc-bbox-and-time.xml diff --git a/tests/expected/suites_atom_get_opensearch-ogc-bbox.xml b/tests/functionaltests/suites/atom/expected/get_opensearch-ogc-bbox.xml similarity index 100% rename from tests/expected/suites_atom_get_opensearch-ogc-bbox.xml rename to tests/functionaltests/suites/atom/expected/get_opensearch-ogc-bbox.xml diff --git a/tests/expected/suites_atom_get_opensearch-ogc-count-and-page1.xml b/tests/functionaltests/suites/atom/expected/get_opensearch-ogc-count-and-page1.xml similarity index 100% rename from tests/expected/suites_atom_get_opensearch-ogc-count-and-page1.xml rename to tests/functionaltests/suites/atom/expected/get_opensearch-ogc-count-and-page1.xml diff --git a/tests/expected/suites_atom_get_opensearch-ogc-count-and-page2.xml b/tests/functionaltests/suites/atom/expected/get_opensearch-ogc-count-and-page2.xml similarity index 100% rename from tests/expected/suites_atom_get_opensearch-ogc-count-and-page2.xml rename to tests/functionaltests/suites/atom/expected/get_opensearch-ogc-count-and-page2.xml diff --git a/tests/expected/suites_atom_get_opensearch-ogc-q-and-bbox.xml b/tests/functionaltests/suites/atom/expected/get_opensearch-ogc-q-and-bbox.xml similarity index 100% rename from tests/expected/suites_atom_get_opensearch-ogc-q-and-bbox.xml rename to tests/functionaltests/suites/atom/expected/get_opensearch-ogc-q-and-bbox.xml diff --git a/tests/expected/suites_atom_get_opensearch-ogc-q-and-time.xml b/tests/functionaltests/suites/atom/expected/get_opensearch-ogc-q-and-time.xml similarity index 100% rename from tests/expected/suites_atom_get_opensearch-ogc-q-and-time.xml rename to tests/functionaltests/suites/atom/expected/get_opensearch-ogc-q-and-time.xml diff --git a/tests/expected/suites_atom_get_opensearch-ogc-q.xml b/tests/functionaltests/suites/atom/expected/get_opensearch-ogc-q.xml similarity index 100% rename from tests/expected/suites_atom_get_opensearch-ogc-q.xml rename to tests/functionaltests/suites/atom/expected/get_opensearch-ogc-q.xml diff --git a/tests/expected/suites_atom_get_opensearch-ogc-time.xml b/tests/functionaltests/suites/atom/expected/get_opensearch-ogc-time.xml similarity index 100% rename from tests/expected/suites_atom_get_opensearch-ogc-time.xml rename to tests/functionaltests/suites/atom/expected/get_opensearch-ogc-time.xml diff --git a/tests/expected/suites_atom_get_opensearch-ogc-timeend.xml b/tests/functionaltests/suites/atom/expected/get_opensearch-ogc-timeend.xml similarity index 100% rename from tests/expected/suites_atom_get_opensearch-ogc-timeend.xml rename to tests/functionaltests/suites/atom/expected/get_opensearch-ogc-timeend.xml diff --git a/tests/expected/suites_atom_get_opensearch-ogc-timestart.xml b/tests/functionaltests/suites/atom/expected/get_opensearch-ogc-timestart.xml similarity index 100% rename from tests/expected/suites_atom_get_opensearch-ogc-timestart.xml rename to tests/functionaltests/suites/atom/expected/get_opensearch-ogc-timestart.xml diff --git a/tests/expected/suites_atom_get_opensearch.xml b/tests/functionaltests/suites/atom/expected/get_opensearch.xml similarity index 100% rename from tests/expected/suites_atom_get_opensearch.xml rename to tests/functionaltests/suites/atom/expected/get_opensearch.xml diff --git a/tests/expected/suites_atom_post_DescribeRecord.xml b/tests/functionaltests/suites/atom/expected/post_DescribeRecord.xml similarity index 100% rename from tests/expected/suites_atom_post_DescribeRecord.xml rename to tests/functionaltests/suites/atom/expected/post_DescribeRecord.xml diff --git a/tests/expected/suites_atom_post_GetCapabilities.xml b/tests/functionaltests/suites/atom/expected/post_GetCapabilities.xml similarity index 100% rename from tests/expected/suites_atom_post_GetCapabilities.xml rename to tests/functionaltests/suites/atom/expected/post_GetCapabilities.xml diff --git a/tests/expected/suites_atom_post_GetRecords-filter-bbox.xml b/tests/functionaltests/suites/atom/expected/post_GetRecords-filter-bbox.xml similarity index 100% rename from tests/expected/suites_atom_post_GetRecords-filter-bbox.xml rename to tests/functionaltests/suites/atom/expected/post_GetRecords-filter-bbox.xml diff --git a/tests/functionaltests/suites/atom/get/requests.txt b/tests/functionaltests/suites/atom/get/requests.txt new file mode 100644 index 000000000..6734cd5a7 --- /dev/null +++ b/tests/functionaltests/suites/atom/get/requests.txt @@ -0,0 +1,12 @@ +opensearch,mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&resulttype=results&elementsetname=brief +opensearch-description,mode=opensearch&service=CSW&version=2.0.2&request=GetCapabilities +opensearch-ogc-q,mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&q=greece +opensearch-ogc-bbox,mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&bbox=-180,-90,180,90 +opensearch-ogc-time,mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&time=2001/2004 +opensearch-ogc-timestart,mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&time=2004/ +opensearch-ogc-timeend,mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&time=/2004 +opensearch-ogc-q-and-time,mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&time=2001/2007&q=vitae +opensearch-ogc-bbox-and-time,mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&time=2001/2007&bbox=-180,-90,180,90 +opensearch-ogc-q-and-bbox,mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&q=vegetation&bbox=-180,-90,180,90 +opensearch-ogc-count-and-page1,mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&q=vegetation&startposition=1 +opensearch-ogc-count-and-page2,mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&q=vegetation&startposition=1&maxrecords=1 diff --git a/tests/suites/atom/post/DescribeRecord.xml b/tests/functionaltests/suites/atom/post/DescribeRecord.xml similarity index 100% rename from tests/suites/atom/post/DescribeRecord.xml rename to tests/functionaltests/suites/atom/post/DescribeRecord.xml diff --git a/tests/suites/atom/post/GetCapabilities.xml b/tests/functionaltests/suites/atom/post/GetCapabilities.xml similarity index 100% rename from tests/suites/atom/post/GetCapabilities.xml rename to tests/functionaltests/suites/atom/post/GetCapabilities.xml diff --git a/tests/suites/atom/post/GetRecords-filter-bbox.xml b/tests/functionaltests/suites/atom/post/GetRecords-filter-bbox.xml similarity index 100% rename from tests/suites/atom/post/GetRecords-filter-bbox.xml rename to tests/functionaltests/suites/atom/post/GetRecords-filter-bbox.xml diff --git a/tests/suites/cite/data/README.txt b/tests/functionaltests/suites/cite/data/README.txt similarity index 100% rename from tests/suites/cite/data/README.txt rename to tests/functionaltests/suites/cite/data/README.txt diff --git a/tests/suites/cite/data/Record_19887a8a-f6b0-4a63-ae56-7fba0e17801f.xml b/tests/functionaltests/suites/cite/data/Record_19887a8a-f6b0-4a63-ae56-7fba0e17801f.xml similarity index 100% rename from tests/suites/cite/data/Record_19887a8a-f6b0-4a63-ae56-7fba0e17801f.xml rename to tests/functionaltests/suites/cite/data/Record_19887a8a-f6b0-4a63-ae56-7fba0e17801f.xml diff --git a/tests/suites/cite/data/Record_1ef30a8b-876d-4828-9246-c37ab4510bbd.xml b/tests/functionaltests/suites/cite/data/Record_1ef30a8b-876d-4828-9246-c37ab4510bbd.xml similarity index 100% rename from tests/suites/cite/data/Record_1ef30a8b-876d-4828-9246-c37ab4510bbd.xml rename to tests/functionaltests/suites/cite/data/Record_1ef30a8b-876d-4828-9246-c37ab4510bbd.xml diff --git a/tests/suites/cite/data/Record_66ae76b7-54ba-489b-a582-0f0633d96493.xml b/tests/functionaltests/suites/cite/data/Record_66ae76b7-54ba-489b-a582-0f0633d96493.xml similarity index 100% rename from tests/suites/cite/data/Record_66ae76b7-54ba-489b-a582-0f0633d96493.xml rename to tests/functionaltests/suites/cite/data/Record_66ae76b7-54ba-489b-a582-0f0633d96493.xml diff --git a/tests/suites/cite/data/Record_6a3de50b-fa66-4b58-a0e6-ca146fdd18d4.xml b/tests/functionaltests/suites/cite/data/Record_6a3de50b-fa66-4b58-a0e6-ca146fdd18d4.xml similarity index 100% rename from tests/suites/cite/data/Record_6a3de50b-fa66-4b58-a0e6-ca146fdd18d4.xml rename to tests/functionaltests/suites/cite/data/Record_6a3de50b-fa66-4b58-a0e6-ca146fdd18d4.xml diff --git a/tests/suites/cite/data/Record_784e2afd-a9fd-44a6-9a92-a3848371c8ec.xml b/tests/functionaltests/suites/cite/data/Record_784e2afd-a9fd-44a6-9a92-a3848371c8ec.xml similarity index 100% rename from tests/suites/cite/data/Record_784e2afd-a9fd-44a6-9a92-a3848371c8ec.xml rename to tests/functionaltests/suites/cite/data/Record_784e2afd-a9fd-44a6-9a92-a3848371c8ec.xml diff --git a/tests/suites/cite/data/Record_829babb0-b2f1-49e1-8cd5-7b489fe71a1e.xml b/tests/functionaltests/suites/cite/data/Record_829babb0-b2f1-49e1-8cd5-7b489fe71a1e.xml similarity index 100% rename from tests/suites/cite/data/Record_829babb0-b2f1-49e1-8cd5-7b489fe71a1e.xml rename to tests/functionaltests/suites/cite/data/Record_829babb0-b2f1-49e1-8cd5-7b489fe71a1e.xml diff --git a/tests/suites/cite/data/Record_88247b56-4cbc-4df9-9860-db3f8042e357.xml b/tests/functionaltests/suites/cite/data/Record_88247b56-4cbc-4df9-9860-db3f8042e357.xml similarity index 100% rename from tests/suites/cite/data/Record_88247b56-4cbc-4df9-9860-db3f8042e357.xml rename to tests/functionaltests/suites/cite/data/Record_88247b56-4cbc-4df9-9860-db3f8042e357.xml diff --git a/tests/suites/cite/data/Record_94bc9c83-97f6-4b40-9eb8-a8e8787a5c63.xml b/tests/functionaltests/suites/cite/data/Record_94bc9c83-97f6-4b40-9eb8-a8e8787a5c63.xml similarity index 100% rename from tests/suites/cite/data/Record_94bc9c83-97f6-4b40-9eb8-a8e8787a5c63.xml rename to tests/functionaltests/suites/cite/data/Record_94bc9c83-97f6-4b40-9eb8-a8e8787a5c63.xml diff --git a/tests/suites/cite/data/Record_9a669547-b69b-469f-a11f-2d875366bbdc.xml b/tests/functionaltests/suites/cite/data/Record_9a669547-b69b-469f-a11f-2d875366bbdc.xml similarity index 100% rename from tests/suites/cite/data/Record_9a669547-b69b-469f-a11f-2d875366bbdc.xml rename to tests/functionaltests/suites/cite/data/Record_9a669547-b69b-469f-a11f-2d875366bbdc.xml diff --git a/tests/suites/cite/data/Record_a06af396-3105-442d-8b40-22b57a90d2f2.xml b/tests/functionaltests/suites/cite/data/Record_a06af396-3105-442d-8b40-22b57a90d2f2.xml similarity index 100% rename from tests/suites/cite/data/Record_a06af396-3105-442d-8b40-22b57a90d2f2.xml rename to tests/functionaltests/suites/cite/data/Record_a06af396-3105-442d-8b40-22b57a90d2f2.xml diff --git a/tests/suites/cite/data/Record_ab42a8c4-95e8-4630-bf79-33e59241605a.xml b/tests/functionaltests/suites/cite/data/Record_ab42a8c4-95e8-4630-bf79-33e59241605a.xml similarity index 100% rename from tests/suites/cite/data/Record_ab42a8c4-95e8-4630-bf79-33e59241605a.xml rename to tests/functionaltests/suites/cite/data/Record_ab42a8c4-95e8-4630-bf79-33e59241605a.xml diff --git a/tests/suites/cite/data/Record_e9330592-0932-474b-be34-c3a3bb67c7db.xml b/tests/functionaltests/suites/cite/data/Record_e9330592-0932-474b-be34-c3a3bb67c7db.xml similarity index 100% rename from tests/suites/cite/data/Record_e9330592-0932-474b-be34-c3a3bb67c7db.xml rename to tests/functionaltests/suites/cite/data/Record_e9330592-0932-474b-be34-c3a3bb67c7db.xml diff --git a/tests/suites/cite/data/cite.db b/tests/functionaltests/suites/cite/data/cite.db similarity index 100% rename from tests/suites/cite/data/cite.db rename to tests/functionaltests/suites/cite/data/cite.db diff --git a/tests/suites/cite/default.cfg b/tests/functionaltests/suites/cite/default.cfg similarity index 100% rename from tests/suites/cite/default.cfg rename to tests/functionaltests/suites/cite/default.cfg diff --git a/tests/expected/suites_cite_get_27e17158-c57a-4493-92ac-dba8934cf462.xml b/tests/functionaltests/suites/cite/expected/get_27e17158-c57a-4493-92ac-dba8934cf462.xml similarity index 100% rename from tests/expected/suites_cite_get_27e17158-c57a-4493-92ac-dba8934cf462.xml rename to tests/functionaltests/suites/cite/expected/get_27e17158-c57a-4493-92ac-dba8934cf462.xml diff --git a/tests/expected/suites_cite_get_27f69b66-5f05-4311-a89c-73ca55c2686b.xml b/tests/functionaltests/suites/cite/expected/get_27f69b66-5f05-4311-a89c-73ca55c2686b.xml similarity index 100% rename from tests/expected/suites_cite_get_27f69b66-5f05-4311-a89c-73ca55c2686b.xml rename to tests/functionaltests/suites/cite/expected/get_27f69b66-5f05-4311-a89c-73ca55c2686b.xml diff --git a/tests/expected/suites_cite_get_2ab7d1fa-885b-459f-80e4-b6282eab4f8c.xml b/tests/functionaltests/suites/cite/expected/get_2ab7d1fa-885b-459f-80e4-b6282eab4f8c.xml similarity index 100% rename from tests/expected/suites_cite_get_2ab7d1fa-885b-459f-80e4-b6282eab4f8c.xml rename to tests/functionaltests/suites/cite/expected/get_2ab7d1fa-885b-459f-80e4-b6282eab4f8c.xml diff --git a/tests/expected/suites_cite_get_37aa90e2-6ff0-420c-af15-8b9463099a73.xml b/tests/functionaltests/suites/cite/expected/get_37aa90e2-6ff0-420c-af15-8b9463099a73.xml similarity index 100% rename from tests/expected/suites_cite_get_37aa90e2-6ff0-420c-af15-8b9463099a73.xml rename to tests/functionaltests/suites/cite/expected/get_37aa90e2-6ff0-420c-af15-8b9463099a73.xml diff --git a/tests/expected/suites_cite_get_3a8a3c47-455f-4f49-9078-03119f3e70b3.xml b/tests/functionaltests/suites/cite/expected/get_3a8a3c47-455f-4f49-9078-03119f3e70b3.xml similarity index 100% rename from tests/expected/suites_cite_get_3a8a3c47-455f-4f49-9078-03119f3e70b3.xml rename to tests/functionaltests/suites/cite/expected/get_3a8a3c47-455f-4f49-9078-03119f3e70b3.xml diff --git a/tests/expected/suites_cite_get_4515831f-834a-4699-95f6-ab0c2cbfcfd0.xml b/tests/functionaltests/suites/cite/expected/get_4515831f-834a-4699-95f6-ab0c2cbfcfd0.xml similarity index 100% rename from tests/expected/suites_cite_get_4515831f-834a-4699-95f6-ab0c2cbfcfd0.xml rename to tests/functionaltests/suites/cite/expected/get_4515831f-834a-4699-95f6-ab0c2cbfcfd0.xml diff --git a/tests/expected/suites_cite_get_477b23a3-baa9-47c8-9541-5fe27735ed49.xml b/tests/functionaltests/suites/cite/expected/get_477b23a3-baa9-47c8-9541-5fe27735ed49.xml similarity index 100% rename from tests/expected/suites_cite_get_477b23a3-baa9-47c8-9541-5fe27735ed49.xml rename to tests/functionaltests/suites/cite/expected/get_477b23a3-baa9-47c8-9541-5fe27735ed49.xml diff --git a/tests/expected/suites_cite_get_48f26761-3a9d-48db-bee1-da089f5fb857.xml b/tests/functionaltests/suites/cite/expected/get_48f26761-3a9d-48db-bee1-da089f5fb857.xml similarity index 100% rename from tests/expected/suites_cite_get_48f26761-3a9d-48db-bee1-da089f5fb857.xml rename to tests/functionaltests/suites/cite/expected/get_48f26761-3a9d-48db-bee1-da089f5fb857.xml diff --git a/tests/expected/suites_cite_get_4e38092f-1586-44b8-988e-0acfa5855916.xml b/tests/functionaltests/suites/cite/expected/get_4e38092f-1586-44b8-988e-0acfa5855916.xml similarity index 100% rename from tests/expected/suites_cite_get_4e38092f-1586-44b8-988e-0acfa5855916.xml rename to tests/functionaltests/suites/cite/expected/get_4e38092f-1586-44b8-988e-0acfa5855916.xml diff --git a/tests/expected/suites_cite_get_55c38f00-2553-42c1-99ab-33edbb561ad7.xml b/tests/functionaltests/suites/cite/expected/get_55c38f00-2553-42c1-99ab-33edbb561ad7.xml similarity index 100% rename from tests/expected/suites_cite_get_55c38f00-2553-42c1-99ab-33edbb561ad7.xml rename to tests/functionaltests/suites/cite/expected/get_55c38f00-2553-42c1-99ab-33edbb561ad7.xml diff --git a/tests/expected/suites_cite_get_5ab5db18-c87a-4fbf-a8d8-b7289b09ac81.xml b/tests/functionaltests/suites/cite/expected/get_5ab5db18-c87a-4fbf-a8d8-b7289b09ac81.xml similarity index 100% rename from tests/expected/suites_cite_get_5ab5db18-c87a-4fbf-a8d8-b7289b09ac81.xml rename to tests/functionaltests/suites/cite/expected/get_5ab5db18-c87a-4fbf-a8d8-b7289b09ac81.xml diff --git a/tests/expected/suites_cite_get_6a4f57ca-a1bd-4802-89c2-44860dbdb0f0.xml b/tests/functionaltests/suites/cite/expected/get_6a4f57ca-a1bd-4802-89c2-44860dbdb0f0.xml similarity index 100% rename from tests/expected/suites_cite_get_6a4f57ca-a1bd-4802-89c2-44860dbdb0f0.xml rename to tests/functionaltests/suites/cite/expected/get_6a4f57ca-a1bd-4802-89c2-44860dbdb0f0.xml diff --git a/tests/expected/suites_cite_get_6c375703-9c00-4aef-bec7-d2e964f849eb.xml b/tests/functionaltests/suites/cite/expected/get_6c375703-9c00-4aef-bec7-d2e964f849eb.xml similarity index 100% rename from tests/expected/suites_cite_get_6c375703-9c00-4aef-bec7-d2e964f849eb.xml rename to tests/functionaltests/suites/cite/expected/get_6c375703-9c00-4aef-bec7-d2e964f849eb.xml diff --git a/tests/expected/suites_cite_get_80f31def-4185-48b9-983a-960566918eae.xml b/tests/functionaltests/suites/cite/expected/get_80f31def-4185-48b9-983a-960566918eae.xml similarity index 100% rename from tests/expected/suites_cite_get_80f31def-4185-48b9-983a-960566918eae.xml rename to tests/functionaltests/suites/cite/expected/get_80f31def-4185-48b9-983a-960566918eae.xml diff --git a/tests/expected/suites_cite_get_8e2232ed-05d9-44ae-8b04-0911cbe6a507.xml b/tests/functionaltests/suites/cite/expected/get_8e2232ed-05d9-44ae-8b04-0911cbe6a507.xml similarity index 100% rename from tests/expected/suites_cite_get_8e2232ed-05d9-44ae-8b04-0911cbe6a507.xml rename to tests/functionaltests/suites/cite/expected/get_8e2232ed-05d9-44ae-8b04-0911cbe6a507.xml diff --git a/tests/expected/suites_cite_get_9697f0aa-3b6a-4125-83a5-61e8826127c4.xml b/tests/functionaltests/suites/cite/expected/get_9697f0aa-3b6a-4125-83a5-61e8826127c4.xml similarity index 100% rename from tests/expected/suites_cite_get_9697f0aa-3b6a-4125-83a5-61e8826127c4.xml rename to tests/functionaltests/suites/cite/expected/get_9697f0aa-3b6a-4125-83a5-61e8826127c4.xml diff --git a/tests/expected/suites_cite_get_9bfd17fa-15dc-4a10-8fa7-b3cff7013dd7.xml b/tests/functionaltests/suites/cite/expected/get_9bfd17fa-15dc-4a10-8fa7-b3cff7013dd7.xml similarity index 100% rename from tests/expected/suites_cite_get_9bfd17fa-15dc-4a10-8fa7-b3cff7013dd7.xml rename to tests/functionaltests/suites/cite/expected/get_9bfd17fa-15dc-4a10-8fa7-b3cff7013dd7.xml diff --git a/tests/expected/suites_cite_get_b81c3595-06d6-4693-82ea-1ff8650755ac.xml b/tests/functionaltests/suites/cite/expected/get_b81c3595-06d6-4693-82ea-1ff8650755ac.xml similarity index 100% rename from tests/expected/suites_cite_get_b81c3595-06d6-4693-82ea-1ff8650755ac.xml rename to tests/functionaltests/suites/cite/expected/get_b81c3595-06d6-4693-82ea-1ff8650755ac.xml diff --git a/tests/expected/suites_cite_get_ba5fc729-3b71-47a0-b7d0-42ec565cd185.xml b/tests/functionaltests/suites/cite/expected/get_ba5fc729-3b71-47a0-b7d0-42ec565cd185.xml similarity index 100% rename from tests/expected/suites_cite_get_ba5fc729-3b71-47a0-b7d0-42ec565cd185.xml rename to tests/functionaltests/suites/cite/expected/get_ba5fc729-3b71-47a0-b7d0-42ec565cd185.xml diff --git a/tests/expected/suites_cite_get_c4ea754f-c158-4d8d-8253-dc8f86021b52.xml b/tests/functionaltests/suites/cite/expected/get_c4ea754f-c158-4d8d-8253-dc8f86021b52.xml similarity index 100% rename from tests/expected/suites_cite_get_c4ea754f-c158-4d8d-8253-dc8f86021b52.xml rename to tests/functionaltests/suites/cite/expected/get_c4ea754f-c158-4d8d-8253-dc8f86021b52.xml diff --git a/tests/expected/suites_cite_get_f4692ec5-9547-4a05-88ab-e6154af2640a.xml b/tests/functionaltests/suites/cite/expected/get_f4692ec5-9547-4a05-88ab-e6154af2640a.xml similarity index 100% rename from tests/expected/suites_cite_get_f4692ec5-9547-4a05-88ab-e6154af2640a.xml rename to tests/functionaltests/suites/cite/expected/get_f4692ec5-9547-4a05-88ab-e6154af2640a.xml diff --git a/tests/expected/suites_cite_get_f997f25e-c865-4d53-a362-0ed1846337f2.xml b/tests/functionaltests/suites/cite/expected/get_f997f25e-c865-4d53-a362-0ed1846337f2.xml similarity index 100% rename from tests/expected/suites_cite_get_f997f25e-c865-4d53-a362-0ed1846337f2.xml rename to tests/functionaltests/suites/cite/expected/get_f997f25e-c865-4d53-a362-0ed1846337f2.xml diff --git a/tests/expected/suites_cite_post_0c976d98-c896-4b10-b1fe-a22ef50434e7.xml b/tests/functionaltests/suites/cite/expected/post_0c976d98-c896-4b10-b1fe-a22ef50434e7.xml similarity index 100% rename from tests/expected/suites_cite_post_0c976d98-c896-4b10-b1fe-a22ef50434e7.xml rename to tests/functionaltests/suites/cite/expected/post_0c976d98-c896-4b10-b1fe-a22ef50434e7.xml diff --git a/tests/expected/suites_cite_post_19d2a6ed-be28-4866-ae15-e3bb634486cb.xml b/tests/functionaltests/suites/cite/expected/post_19d2a6ed-be28-4866-ae15-e3bb634486cb.xml similarity index 100% rename from tests/expected/suites_cite_post_19d2a6ed-be28-4866-ae15-e3bb634486cb.xml rename to tests/functionaltests/suites/cite/expected/post_19d2a6ed-be28-4866-ae15-e3bb634486cb.xml diff --git a/tests/expected/suites_cite_post_1ab55aa3-6685-4595-8ecd-45987a7b8b59.xml b/tests/functionaltests/suites/cite/expected/post_1ab55aa3-6685-4595-8ecd-45987a7b8b59.xml similarity index 100% rename from tests/expected/suites_cite_post_1ab55aa3-6685-4595-8ecd-45987a7b8b59.xml rename to tests/functionaltests/suites/cite/expected/post_1ab55aa3-6685-4595-8ecd-45987a7b8b59.xml diff --git a/tests/expected/suites_cite_post_1c958b7a-ca09-4c38-98bd-ef1d1d28cc14.xml b/tests/functionaltests/suites/cite/expected/post_1c958b7a-ca09-4c38-98bd-ef1d1d28cc14.xml similarity index 100% rename from tests/expected/suites_cite_post_1c958b7a-ca09-4c38-98bd-ef1d1d28cc14.xml rename to tests/functionaltests/suites/cite/expected/post_1c958b7a-ca09-4c38-98bd-ef1d1d28cc14.xml diff --git a/tests/expected/suites_cite_post_1c97fc1a-61cd-4c1d-8054-933e17a6c5ee.xml b/tests/functionaltests/suites/cite/expected/post_1c97fc1a-61cd-4c1d-8054-933e17a6c5ee.xml similarity index 100% rename from tests/expected/suites_cite_post_1c97fc1a-61cd-4c1d-8054-933e17a6c5ee.xml rename to tests/functionaltests/suites/cite/expected/post_1c97fc1a-61cd-4c1d-8054-933e17a6c5ee.xml diff --git a/tests/expected/suites_cite_post_2102a460-5d62-465f-9668-d70b3faafbfa.xml b/tests/functionaltests/suites/cite/expected/post_2102a460-5d62-465f-9668-d70b3faafbfa.xml similarity index 100% rename from tests/expected/suites_cite_post_2102a460-5d62-465f-9668-d70b3faafbfa.xml rename to tests/functionaltests/suites/cite/expected/post_2102a460-5d62-465f-9668-d70b3faafbfa.xml diff --git a/tests/expected/suites_cite_post_225f455a-0035-486b-a94e-fee7ae881b2b.xml b/tests/functionaltests/suites/cite/expected/post_225f455a-0035-486b-a94e-fee7ae881b2b.xml similarity index 100% rename from tests/expected/suites_cite_post_225f455a-0035-486b-a94e-fee7ae881b2b.xml rename to tests/functionaltests/suites/cite/expected/post_225f455a-0035-486b-a94e-fee7ae881b2b.xml diff --git a/tests/expected/suites_cite_post_2d53ffea-60e4-4652-abf5-36eb23042fd5.xml b/tests/functionaltests/suites/cite/expected/post_2d53ffea-60e4-4652-abf5-36eb23042fd5.xml similarity index 100% rename from tests/expected/suites_cite_post_2d53ffea-60e4-4652-abf5-36eb23042fd5.xml rename to tests/functionaltests/suites/cite/expected/post_2d53ffea-60e4-4652-abf5-36eb23042fd5.xml diff --git a/tests/expected/suites_cite_post_34a019a9-1581-42cb-9827-fbfdda2773b7.xml b/tests/functionaltests/suites/cite/expected/post_34a019a9-1581-42cb-9827-fbfdda2773b7.xml similarity index 100% rename from tests/expected/suites_cite_post_34a019a9-1581-42cb-9827-fbfdda2773b7.xml rename to tests/functionaltests/suites/cite/expected/post_34a019a9-1581-42cb-9827-fbfdda2773b7.xml diff --git a/tests/expected/suites_cite_post_3e76fd38-e035-41c9-83dc-61356f680c97.xml b/tests/functionaltests/suites/cite/expected/post_3e76fd38-e035-41c9-83dc-61356f680c97.xml similarity index 100% rename from tests/expected/suites_cite_post_3e76fd38-e035-41c9-83dc-61356f680c97.xml rename to tests/functionaltests/suites/cite/expected/post_3e76fd38-e035-41c9-83dc-61356f680c97.xml diff --git a/tests/expected/suites_cite_post_418a6fb0-a89c-4a94-afc9-3f8168eb2980.xml b/tests/functionaltests/suites/cite/expected/post_418a6fb0-a89c-4a94-afc9-3f8168eb2980.xml similarity index 100% rename from tests/expected/suites_cite_post_418a6fb0-a89c-4a94-afc9-3f8168eb2980.xml rename to tests/functionaltests/suites/cite/expected/post_418a6fb0-a89c-4a94-afc9-3f8168eb2980.xml diff --git a/tests/expected/suites_cite_post_420b745e-0c4b-404e-9f2d-61fa580ff05a.xml b/tests/functionaltests/suites/cite/expected/post_420b745e-0c4b-404e-9f2d-61fa580ff05a.xml similarity index 100% rename from tests/expected/suites_cite_post_420b745e-0c4b-404e-9f2d-61fa580ff05a.xml rename to tests/functionaltests/suites/cite/expected/post_420b745e-0c4b-404e-9f2d-61fa580ff05a.xml diff --git a/tests/expected/suites_cite_post_4735d649-a2b1-42fd-a101-14e1d7e4607f.xml b/tests/functionaltests/suites/cite/expected/post_4735d649-a2b1-42fd-a101-14e1d7e4607f.xml similarity index 100% rename from tests/expected/suites_cite_post_4735d649-a2b1-42fd-a101-14e1d7e4607f.xml rename to tests/functionaltests/suites/cite/expected/post_4735d649-a2b1-42fd-a101-14e1d7e4607f.xml diff --git a/tests/expected/suites_cite_post_5c5861bc-f742-40a5-9998-5342615d674b.xml b/tests/functionaltests/suites/cite/expected/post_5c5861bc-f742-40a5-9998-5342615d674b.xml similarity index 100% rename from tests/expected/suites_cite_post_5c5861bc-f742-40a5-9998-5342615d674b.xml rename to tests/functionaltests/suites/cite/expected/post_5c5861bc-f742-40a5-9998-5342615d674b.xml diff --git a/tests/expected/suites_cite_post_6e736fd0-c266-4852-9eb3-0656f5d0f5c4.xml b/tests/functionaltests/suites/cite/expected/post_6e736fd0-c266-4852-9eb3-0656f5d0f5c4.xml similarity index 100% rename from tests/expected/suites_cite_post_6e736fd0-c266-4852-9eb3-0656f5d0f5c4.xml rename to tests/functionaltests/suites/cite/expected/post_6e736fd0-c266-4852-9eb3-0656f5d0f5c4.xml diff --git a/tests/expected/suites_cite_post_73f1551c-e269-4ef9-9dae-e535b5eebfc7.xml b/tests/functionaltests/suites/cite/expected/post_73f1551c-e269-4ef9-9dae-e535b5eebfc7.xml similarity index 100% rename from tests/expected/suites_cite_post_73f1551c-e269-4ef9-9dae-e535b5eebfc7.xml rename to tests/functionaltests/suites/cite/expected/post_73f1551c-e269-4ef9-9dae-e535b5eebfc7.xml diff --git a/tests/expected/suites_cite_post_78297c88-4850-4927-adc6-511cd9a3d539.xml b/tests/functionaltests/suites/cite/expected/post_78297c88-4850-4927-adc6-511cd9a3d539.xml similarity index 100% rename from tests/expected/suites_cite_post_78297c88-4850-4927-adc6-511cd9a3d539.xml rename to tests/functionaltests/suites/cite/expected/post_78297c88-4850-4927-adc6-511cd9a3d539.xml diff --git a/tests/expected/suites_cite_post_7c89cdf5-0def-4cfb-8c55-2b8ffea5d92f.xml b/tests/functionaltests/suites/cite/expected/post_7c89cdf5-0def-4cfb-8c55-2b8ffea5d92f.xml similarity index 100% rename from tests/expected/suites_cite_post_7c89cdf5-0def-4cfb-8c55-2b8ffea5d92f.xml rename to tests/functionaltests/suites/cite/expected/post_7c89cdf5-0def-4cfb-8c55-2b8ffea5d92f.xml diff --git a/tests/expected/suites_cite_post_7e2cd105-daec-4d25-bc8e-d49d21364912.xml b/tests/functionaltests/suites/cite/expected/post_7e2cd105-daec-4d25-bc8e-d49d21364912.xml similarity index 100% rename from tests/expected/suites_cite_post_7e2cd105-daec-4d25-bc8e-d49d21364912.xml rename to tests/functionaltests/suites/cite/expected/post_7e2cd105-daec-4d25-bc8e-d49d21364912.xml diff --git a/tests/expected/suites_cite_post_87f2f670-9cd6-4907-b82c-1b46a7dd2a78.xml b/tests/functionaltests/suites/cite/expected/post_87f2f670-9cd6-4907-b82c-1b46a7dd2a78.xml similarity index 100% rename from tests/expected/suites_cite_post_87f2f670-9cd6-4907-b82c-1b46a7dd2a78.xml rename to tests/functionaltests/suites/cite/expected/post_87f2f670-9cd6-4907-b82c-1b46a7dd2a78.xml diff --git a/tests/expected/suites_cite_post_88b4e1ba-3bd4-4cbe-81e5-e004056d6ca3.xml b/tests/functionaltests/suites/cite/expected/post_88b4e1ba-3bd4-4cbe-81e5-e004056d6ca3.xml similarity index 100% rename from tests/expected/suites_cite_post_88b4e1ba-3bd4-4cbe-81e5-e004056d6ca3.xml rename to tests/functionaltests/suites/cite/expected/post_88b4e1ba-3bd4-4cbe-81e5-e004056d6ca3.xml diff --git a/tests/expected/suites_cite_post_898cd63b-2585-4ec0-8720-d554bd324174.xml b/tests/functionaltests/suites/cite/expected/post_898cd63b-2585-4ec0-8720-d554bd324174.xml similarity index 100% rename from tests/expected/suites_cite_post_898cd63b-2585-4ec0-8720-d554bd324174.xml rename to tests/functionaltests/suites/cite/expected/post_898cd63b-2585-4ec0-8720-d554bd324174.xml diff --git a/tests/expected/suites_cite_post_8fb13dc3-5818-45e2-9e29-46abc16e7d38.xml b/tests/functionaltests/suites/cite/expected/post_8fb13dc3-5818-45e2-9e29-46abc16e7d38.xml similarity index 100% rename from tests/expected/suites_cite_post_8fb13dc3-5818-45e2-9e29-46abc16e7d38.xml rename to tests/functionaltests/suites/cite/expected/post_8fb13dc3-5818-45e2-9e29-46abc16e7d38.xml diff --git a/tests/expected/suites_cite_post_928c1896-52d4-4ac7-9832-f98e3eb65f02.xml b/tests/functionaltests/suites/cite/expected/post_928c1896-52d4-4ac7-9832-f98e3eb65f02.xml similarity index 100% rename from tests/expected/suites_cite_post_928c1896-52d4-4ac7-9832-f98e3eb65f02.xml rename to tests/functionaltests/suites/cite/expected/post_928c1896-52d4-4ac7-9832-f98e3eb65f02.xml diff --git a/tests/expected/suites_cite_post_93bdbb9d-2734-4f01-92fb-48634cca41de.xml b/tests/functionaltests/suites/cite/expected/post_93bdbb9d-2734-4f01-92fb-48634cca41de.xml similarity index 100% rename from tests/expected/suites_cite_post_93bdbb9d-2734-4f01-92fb-48634cca41de.xml rename to tests/functionaltests/suites/cite/expected/post_93bdbb9d-2734-4f01-92fb-48634cca41de.xml diff --git a/tests/expected/suites_cite_post_948b39d5-bb4f-45b8-a8f2-4ff9501aaedd.xml b/tests/functionaltests/suites/cite/expected/post_948b39d5-bb4f-45b8-a8f2-4ff9501aaedd.xml similarity index 100% rename from tests/expected/suites_cite_post_948b39d5-bb4f-45b8-a8f2-4ff9501aaedd.xml rename to tests/functionaltests/suites/cite/expected/post_948b39d5-bb4f-45b8-a8f2-4ff9501aaedd.xml diff --git a/tests/expected/suites_cite_post_9fd64fcc-f69c-4626-b72e-5c7776a29aa9.xml b/tests/functionaltests/suites/cite/expected/post_9fd64fcc-f69c-4626-b72e-5c7776a29aa9.xml similarity index 100% rename from tests/expected/suites_cite_post_9fd64fcc-f69c-4626-b72e-5c7776a29aa9.xml rename to tests/functionaltests/suites/cite/expected/post_9fd64fcc-f69c-4626-b72e-5c7776a29aa9.xml diff --git a/tests/expected/suites_cite_post_a06d04ab-e0d0-4a86-bfe8-71460f41fe37.xml b/tests/functionaltests/suites/cite/expected/post_a06d04ab-e0d0-4a86-bfe8-71460f41fe37.xml similarity index 100% rename from tests/expected/suites_cite_post_a06d04ab-e0d0-4a86-bfe8-71460f41fe37.xml rename to tests/functionaltests/suites/cite/expected/post_a06d04ab-e0d0-4a86-bfe8-71460f41fe37.xml diff --git a/tests/expected/suites_cite_post_ad61686c-d304-42d1-b845-8c1f3070c83e.xml b/tests/functionaltests/suites/cite/expected/post_ad61686c-d304-42d1-b845-8c1f3070c83e.xml similarity index 100% rename from tests/expected/suites_cite_post_ad61686c-d304-42d1-b845-8c1f3070c83e.xml rename to tests/functionaltests/suites/cite/expected/post_ad61686c-d304-42d1-b845-8c1f3070c83e.xml diff --git a/tests/expected/suites_cite_post_af39c020-7b1d-429c-b474-f45c3164cb79.xml b/tests/functionaltests/suites/cite/expected/post_af39c020-7b1d-429c-b474-f45c3164cb79.xml similarity index 100% rename from tests/expected/suites_cite_post_af39c020-7b1d-429c-b474-f45c3164cb79.xml rename to tests/functionaltests/suites/cite/expected/post_af39c020-7b1d-429c-b474-f45c3164cb79.xml diff --git a/tests/expected/suites_cite_post_b90e2de6-3d25-4298-a13e-dc9492a8fc73.xml b/tests/functionaltests/suites/cite/expected/post_b90e2de6-3d25-4298-a13e-dc9492a8fc73.xml similarity index 100% rename from tests/expected/suites_cite_post_b90e2de6-3d25-4298-a13e-dc9492a8fc73.xml rename to tests/functionaltests/suites/cite/expected/post_b90e2de6-3d25-4298-a13e-dc9492a8fc73.xml diff --git a/tests/expected/suites_cite_post_ba9b0107-dcee-46ef-823a-a2e25a911a96.xml b/tests/functionaltests/suites/cite/expected/post_ba9b0107-dcee-46ef-823a-a2e25a911a96.xml similarity index 100% rename from tests/expected/suites_cite_post_ba9b0107-dcee-46ef-823a-a2e25a911a96.xml rename to tests/functionaltests/suites/cite/expected/post_ba9b0107-dcee-46ef-823a-a2e25a911a96.xml diff --git a/tests/expected/suites_cite_post_bb66ebc5-7121-48b5-9f53-b56537d9561b.xml b/tests/functionaltests/suites/cite/expected/post_bb66ebc5-7121-48b5-9f53-b56537d9561b.xml similarity index 100% rename from tests/expected/suites_cite_post_bb66ebc5-7121-48b5-9f53-b56537d9561b.xml rename to tests/functionaltests/suites/cite/expected/post_bb66ebc5-7121-48b5-9f53-b56537d9561b.xml diff --git a/tests/expected/suites_cite_post_c02d1c85-df9f-45ee-bea7-345c35e02a98.xml b/tests/functionaltests/suites/cite/expected/post_c02d1c85-df9f-45ee-bea7-345c35e02a98.xml similarity index 100% rename from tests/expected/suites_cite_post_c02d1c85-df9f-45ee-bea7-345c35e02a98.xml rename to tests/functionaltests/suites/cite/expected/post_c02d1c85-df9f-45ee-bea7-345c35e02a98.xml diff --git a/tests/expected/suites_cite_post_c311a342-72e3-4983-be39-868e6ed9740f.xml b/tests/functionaltests/suites/cite/expected/post_c311a342-72e3-4983-be39-868e6ed9740f.xml similarity index 100% rename from tests/expected/suites_cite_post_c311a342-72e3-4983-be39-868e6ed9740f.xml rename to tests/functionaltests/suites/cite/expected/post_c311a342-72e3-4983-be39-868e6ed9740f.xml diff --git a/tests/expected/suites_cite_post_c38916c2-4bc6-446d-b7aa-ab006d6ba31c.xml b/tests/functionaltests/suites/cite/expected/post_c38916c2-4bc6-446d-b7aa-ab006d6ba31c.xml similarity index 100% rename from tests/expected/suites_cite_post_c38916c2-4bc6-446d-b7aa-ab006d6ba31c.xml rename to tests/functionaltests/suites/cite/expected/post_c38916c2-4bc6-446d-b7aa-ab006d6ba31c.xml diff --git a/tests/expected/suites_cite_post_c8588f47-8e65-45f5-ad34-ff4524cad84d.xml b/tests/functionaltests/suites/cite/expected/post_c8588f47-8e65-45f5-ad34-ff4524cad84d.xml similarity index 100% rename from tests/expected/suites_cite_post_c8588f47-8e65-45f5-ad34-ff4524cad84d.xml rename to tests/functionaltests/suites/cite/expected/post_c8588f47-8e65-45f5-ad34-ff4524cad84d.xml diff --git a/tests/expected/suites_cite_post_da228d4c-e1be-43d7-9ccb-c3f27ee32541.xml b/tests/functionaltests/suites/cite/expected/post_da228d4c-e1be-43d7-9ccb-c3f27ee32541.xml similarity index 100% rename from tests/expected/suites_cite_post_da228d4c-e1be-43d7-9ccb-c3f27ee32541.xml rename to tests/functionaltests/suites/cite/expected/post_da228d4c-e1be-43d7-9ccb-c3f27ee32541.xml diff --git a/tests/expected/suites_cite_post_dc92c2c4-87d8-4a13-964e-ff9b0e0c27b3.xml b/tests/functionaltests/suites/cite/expected/post_dc92c2c4-87d8-4a13-964e-ff9b0e0c27b3.xml similarity index 100% rename from tests/expected/suites_cite_post_dc92c2c4-87d8-4a13-964e-ff9b0e0c27b3.xml rename to tests/functionaltests/suites/cite/expected/post_dc92c2c4-87d8-4a13-964e-ff9b0e0c27b3.xml diff --git a/tests/expected/suites_cite_post_dcb13791-379e-4739-bcd4-dbaa69f0efdb.xml b/tests/functionaltests/suites/cite/expected/post_dcb13791-379e-4739-bcd4-dbaa69f0efdb.xml similarity index 100% rename from tests/expected/suites_cite_post_dcb13791-379e-4739-bcd4-dbaa69f0efdb.xml rename to tests/functionaltests/suites/cite/expected/post_dcb13791-379e-4739-bcd4-dbaa69f0efdb.xml diff --git a/tests/expected/suites_cite_post_e308f030-c097-4036-a838-44bad74c9ef7.xml b/tests/functionaltests/suites/cite/expected/post_e308f030-c097-4036-a838-44bad74c9ef7.xml similarity index 100% rename from tests/expected/suites_cite_post_e308f030-c097-4036-a838-44bad74c9ef7.xml rename to tests/functionaltests/suites/cite/expected/post_e308f030-c097-4036-a838-44bad74c9ef7.xml diff --git a/tests/expected/suites_cite_post_e6e9efb2-e2b7-4b0a-a3a2-7deea3f9b8e2.xml b/tests/functionaltests/suites/cite/expected/post_e6e9efb2-e2b7-4b0a-a3a2-7deea3f9b8e2.xml similarity index 100% rename from tests/expected/suites_cite_post_e6e9efb2-e2b7-4b0a-a3a2-7deea3f9b8e2.xml rename to tests/functionaltests/suites/cite/expected/post_e6e9efb2-e2b7-4b0a-a3a2-7deea3f9b8e2.xml diff --git a/tests/expected/suites_cite_post_f7976c55-a156-4421-8199-bc0487da4b0f.xml b/tests/functionaltests/suites/cite/expected/post_f7976c55-a156-4421-8199-bc0487da4b0f.xml similarity index 100% rename from tests/expected/suites_cite_post_f7976c55-a156-4421-8199-bc0487da4b0f.xml rename to tests/functionaltests/suites/cite/expected/post_f7976c55-a156-4421-8199-bc0487da4b0f.xml diff --git a/tests/expected/suites_cite_post_f7d79701-f10b-4087-a33c-f62df0a04fd1.xml b/tests/functionaltests/suites/cite/expected/post_f7d79701-f10b-4087-a33c-f62df0a04fd1.xml similarity index 100% rename from tests/expected/suites_cite_post_f7d79701-f10b-4087-a33c-f62df0a04fd1.xml rename to tests/functionaltests/suites/cite/expected/post_f7d79701-f10b-4087-a33c-f62df0a04fd1.xml diff --git a/tests/expected/suites_cite_post_fc1bc094-88f1-4851-bc2b-dfc56be9f3c7.xml b/tests/functionaltests/suites/cite/expected/post_fc1bc094-88f1-4851-bc2b-dfc56be9f3c7.xml similarity index 100% rename from tests/expected/suites_cite_post_fc1bc094-88f1-4851-bc2b-dfc56be9f3c7.xml rename to tests/functionaltests/suites/cite/expected/post_fc1bc094-88f1-4851-bc2b-dfc56be9f3c7.xml diff --git a/tests/expected/suites_cite_post_fe20960f-a26c-4f13-852d-470a0d3233f9.xml b/tests/functionaltests/suites/cite/expected/post_fe20960f-a26c-4f13-852d-470a0d3233f9.xml similarity index 100% rename from tests/expected/suites_cite_post_fe20960f-a26c-4f13-852d-470a0d3233f9.xml rename to tests/functionaltests/suites/cite/expected/post_fe20960f-a26c-4f13-852d-470a0d3233f9.xml diff --git a/tests/functionaltests/suites/cite/get/requests.txt b/tests/functionaltests/suites/cite/get/requests.txt new file mode 100644 index 000000000..271982886 --- /dev/null +++ b/tests/functionaltests/suites/cite/get/requests.txt @@ -0,0 +1,22 @@ +27e17158-c57a-4493-92ac-dba8934cf462,service=CSW&version=2.0.2&request=GetCapabilities +27f69b66-5f05-4311-a89c-73ca55c2686b,Service=CSW&Version=2.0.2&Request=GetRecordById&ElementSetName=brief&ID=urn%3Auuid%3A19887a8a-f6b0-4a63-ae56-7fba0e17801f +2ab7d1fa-885b-459f-80e4-b6282eab4f8c,service=CSW&request=GetCapabilities&acceptversions=2.0.2&date=2006-10-20 +37aa90e2-6ff0-420c-af15-8b9463099a73,service=CSW&version=2.0.2&request=GetRecordById&id=urn%3Auuid%3A9a669547-b69b-469f-a11f-2d875366bbdc +3a8a3c47-455f-4f49-9078-03119f3e70b3,service=CSW&request=GetCapabilities&acceptformats=message/example +4515831f-834a-4699-95f6-ab0c2cbfcfd0,service=CSW&version=2.0.2&request=GetRecordById +477b23a3-baa9-47c8-9541-5fe27735ed49,service=CSW&request=GetCapabilities§ions= +48f26761-3a9d-48db-bee1-da089f5fb857,sErViCe=CSW&REQUEST=GetCapabilities&version=2.0.2 +4e38092f-1586-44b8-988e-0acfa5855916,Service=CSW&Version=2.0.2&Request=GetRecordById&OutputFormat=application/bogus_xml&id=urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2,urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f,urn:uuid:ab42a8c4-95e8-4630-bf79-33e59241605a +55c38f00-2553-42c1-99ab-33edbb561ad7,service=CSW&request=GetCapabilities§ions=OperationsMetadata,ServiceIdentification +5ab5db18-c87a-4fbf-a8d8-b7289b09ac81,service=FOO&request=GetCapabilities +6a4f57ca-a1bd-4802-89c2-44860dbdb0f0,service=CSW&version=2.0.2&request=GetRecordById&id=urn:uuid:ce8627a0-685c-11db-bd13-0800200c9a66,urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4 +6c375703-9c00-4aef-bec7-d2e964f849eb,Service=CSW&Version=2.0.2&Request=GetRecordById&OutputSchema=http://www.w3.org/2005/Atom&Id=urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f +80f31def-4185-48b9-983a-960566918eae,service=CSW&request=GetCapabilities +8e2232ed-05d9-44ae-8b04-0911cbe6a507,SERVICE=CSW&REQUEST=GetCapabilities&ACCEPTVERSIONS=2006.10.29 +9697f0aa-3b6a-4125-83a5-61e8826127c4,service=CSW&request=GetCapabilities +9bfd17fa-15dc-4a10-8fa7-b3cff7013dd7,Service=CSW&Version=2.0.2&Request=GetRecordById&ElementSetName=full&ID=urn%3Auuid%3Ae9330592-0932-474b-be34-c3a3bb67c7db +b81c3595-06d6-4693-82ea-1ff8650755ac,service=CSW&version=2.0.2&request=GetRecordById&id=urn:uuid:ce8627a0-685c-11db-bd13-0800200c9a66 +ba5fc729-3b71-47a0-b7d0-42ec565cd185,SERVICE=CSW&REQUEST=GetCapabilities&ACCEPTVERSIONS=2.0.2,2.0.0 +c4ea754f-c158-4d8d-8253-dc8f86021b52,request=GetCapabilities +f4692ec5-9547-4a05-88ab-e6154af2640a,service=CSW&version=2.0.2&request=GetCapabilities +f997f25e-c865-4d53-a362-0ed1846337f2,service=CSW&version=2.0.2&request=GetRecordById&id=urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 diff --git a/tests/suites/cite/post/0c976d98-c896-4b10-b1fe-a22ef50434e7.xml b/tests/functionaltests/suites/cite/post/0c976d98-c896-4b10-b1fe-a22ef50434e7.xml similarity index 100% rename from tests/suites/cite/post/0c976d98-c896-4b10-b1fe-a22ef50434e7.xml rename to tests/functionaltests/suites/cite/post/0c976d98-c896-4b10-b1fe-a22ef50434e7.xml diff --git a/tests/suites/cite/post/19d2a6ed-be28-4866-ae15-e3bb634486cb.xml b/tests/functionaltests/suites/cite/post/19d2a6ed-be28-4866-ae15-e3bb634486cb.xml similarity index 100% rename from tests/suites/cite/post/19d2a6ed-be28-4866-ae15-e3bb634486cb.xml rename to tests/functionaltests/suites/cite/post/19d2a6ed-be28-4866-ae15-e3bb634486cb.xml diff --git a/tests/suites/cite/post/1ab55aa3-6685-4595-8ecd-45987a7b8b59.xml b/tests/functionaltests/suites/cite/post/1ab55aa3-6685-4595-8ecd-45987a7b8b59.xml similarity index 100% rename from tests/suites/cite/post/1ab55aa3-6685-4595-8ecd-45987a7b8b59.xml rename to tests/functionaltests/suites/cite/post/1ab55aa3-6685-4595-8ecd-45987a7b8b59.xml diff --git a/tests/suites/cite/post/1c958b7a-ca09-4c38-98bd-ef1d1d28cc14.xml b/tests/functionaltests/suites/cite/post/1c958b7a-ca09-4c38-98bd-ef1d1d28cc14.xml similarity index 100% rename from tests/suites/cite/post/1c958b7a-ca09-4c38-98bd-ef1d1d28cc14.xml rename to tests/functionaltests/suites/cite/post/1c958b7a-ca09-4c38-98bd-ef1d1d28cc14.xml diff --git a/tests/suites/cite/post/1c97fc1a-61cd-4c1d-8054-933e17a6c5ee.xml b/tests/functionaltests/suites/cite/post/1c97fc1a-61cd-4c1d-8054-933e17a6c5ee.xml similarity index 100% rename from tests/suites/cite/post/1c97fc1a-61cd-4c1d-8054-933e17a6c5ee.xml rename to tests/functionaltests/suites/cite/post/1c97fc1a-61cd-4c1d-8054-933e17a6c5ee.xml diff --git a/tests/suites/cite/post/2102a460-5d62-465f-9668-d70b3faafbfa.xml b/tests/functionaltests/suites/cite/post/2102a460-5d62-465f-9668-d70b3faafbfa.xml similarity index 100% rename from tests/suites/cite/post/2102a460-5d62-465f-9668-d70b3faafbfa.xml rename to tests/functionaltests/suites/cite/post/2102a460-5d62-465f-9668-d70b3faafbfa.xml diff --git a/tests/suites/cite/post/225f455a-0035-486b-a94e-fee7ae881b2b.xml b/tests/functionaltests/suites/cite/post/225f455a-0035-486b-a94e-fee7ae881b2b.xml similarity index 100% rename from tests/suites/cite/post/225f455a-0035-486b-a94e-fee7ae881b2b.xml rename to tests/functionaltests/suites/cite/post/225f455a-0035-486b-a94e-fee7ae881b2b.xml diff --git a/tests/suites/cite/post/2d53ffea-60e4-4652-abf5-36eb23042fd5.xml b/tests/functionaltests/suites/cite/post/2d53ffea-60e4-4652-abf5-36eb23042fd5.xml similarity index 100% rename from tests/suites/cite/post/2d53ffea-60e4-4652-abf5-36eb23042fd5.xml rename to tests/functionaltests/suites/cite/post/2d53ffea-60e4-4652-abf5-36eb23042fd5.xml diff --git a/tests/suites/cite/post/34a019a9-1581-42cb-9827-fbfdda2773b7.xml b/tests/functionaltests/suites/cite/post/34a019a9-1581-42cb-9827-fbfdda2773b7.xml similarity index 100% rename from tests/suites/cite/post/34a019a9-1581-42cb-9827-fbfdda2773b7.xml rename to tests/functionaltests/suites/cite/post/34a019a9-1581-42cb-9827-fbfdda2773b7.xml diff --git a/tests/suites/cite/post/3e76fd38-e035-41c9-83dc-61356f680c97.xml b/tests/functionaltests/suites/cite/post/3e76fd38-e035-41c9-83dc-61356f680c97.xml similarity index 100% rename from tests/suites/cite/post/3e76fd38-e035-41c9-83dc-61356f680c97.xml rename to tests/functionaltests/suites/cite/post/3e76fd38-e035-41c9-83dc-61356f680c97.xml diff --git a/tests/suites/cite/post/418a6fb0-a89c-4a94-afc9-3f8168eb2980.xml b/tests/functionaltests/suites/cite/post/418a6fb0-a89c-4a94-afc9-3f8168eb2980.xml similarity index 100% rename from tests/suites/cite/post/418a6fb0-a89c-4a94-afc9-3f8168eb2980.xml rename to tests/functionaltests/suites/cite/post/418a6fb0-a89c-4a94-afc9-3f8168eb2980.xml diff --git a/tests/suites/cite/post/420b745e-0c4b-404e-9f2d-61fa580ff05a.xml b/tests/functionaltests/suites/cite/post/420b745e-0c4b-404e-9f2d-61fa580ff05a.xml similarity index 100% rename from tests/suites/cite/post/420b745e-0c4b-404e-9f2d-61fa580ff05a.xml rename to tests/functionaltests/suites/cite/post/420b745e-0c4b-404e-9f2d-61fa580ff05a.xml diff --git a/tests/suites/cite/post/4735d649-a2b1-42fd-a101-14e1d7e4607f.xml b/tests/functionaltests/suites/cite/post/4735d649-a2b1-42fd-a101-14e1d7e4607f.xml similarity index 100% rename from tests/suites/cite/post/4735d649-a2b1-42fd-a101-14e1d7e4607f.xml rename to tests/functionaltests/suites/cite/post/4735d649-a2b1-42fd-a101-14e1d7e4607f.xml diff --git a/tests/suites/cite/post/5c5861bc-f742-40a5-9998-5342615d674b.xml b/tests/functionaltests/suites/cite/post/5c5861bc-f742-40a5-9998-5342615d674b.xml similarity index 100% rename from tests/suites/cite/post/5c5861bc-f742-40a5-9998-5342615d674b.xml rename to tests/functionaltests/suites/cite/post/5c5861bc-f742-40a5-9998-5342615d674b.xml diff --git a/tests/suites/cite/post/6e736fd0-c266-4852-9eb3-0656f5d0f5c4.xml b/tests/functionaltests/suites/cite/post/6e736fd0-c266-4852-9eb3-0656f5d0f5c4.xml similarity index 100% rename from tests/suites/cite/post/6e736fd0-c266-4852-9eb3-0656f5d0f5c4.xml rename to tests/functionaltests/suites/cite/post/6e736fd0-c266-4852-9eb3-0656f5d0f5c4.xml diff --git a/tests/suites/cite/post/73f1551c-e269-4ef9-9dae-e535b5eebfc7.xml b/tests/functionaltests/suites/cite/post/73f1551c-e269-4ef9-9dae-e535b5eebfc7.xml similarity index 100% rename from tests/suites/cite/post/73f1551c-e269-4ef9-9dae-e535b5eebfc7.xml rename to tests/functionaltests/suites/cite/post/73f1551c-e269-4ef9-9dae-e535b5eebfc7.xml diff --git a/tests/suites/cite/post/78297c88-4850-4927-adc6-511cd9a3d539.xml b/tests/functionaltests/suites/cite/post/78297c88-4850-4927-adc6-511cd9a3d539.xml similarity index 100% rename from tests/suites/cite/post/78297c88-4850-4927-adc6-511cd9a3d539.xml rename to tests/functionaltests/suites/cite/post/78297c88-4850-4927-adc6-511cd9a3d539.xml diff --git a/tests/suites/cite/post/7c89cdf5-0def-4cfb-8c55-2b8ffea5d92f.xml b/tests/functionaltests/suites/cite/post/7c89cdf5-0def-4cfb-8c55-2b8ffea5d92f.xml similarity index 100% rename from tests/suites/cite/post/7c89cdf5-0def-4cfb-8c55-2b8ffea5d92f.xml rename to tests/functionaltests/suites/cite/post/7c89cdf5-0def-4cfb-8c55-2b8ffea5d92f.xml diff --git a/tests/suites/cite/post/7e2cd105-daec-4d25-bc8e-d49d21364912.xml b/tests/functionaltests/suites/cite/post/7e2cd105-daec-4d25-bc8e-d49d21364912.xml similarity index 100% rename from tests/suites/cite/post/7e2cd105-daec-4d25-bc8e-d49d21364912.xml rename to tests/functionaltests/suites/cite/post/7e2cd105-daec-4d25-bc8e-d49d21364912.xml diff --git a/tests/suites/cite/post/87f2f670-9cd6-4907-b82c-1b46a7dd2a78.xml b/tests/functionaltests/suites/cite/post/87f2f670-9cd6-4907-b82c-1b46a7dd2a78.xml similarity index 100% rename from tests/suites/cite/post/87f2f670-9cd6-4907-b82c-1b46a7dd2a78.xml rename to tests/functionaltests/suites/cite/post/87f2f670-9cd6-4907-b82c-1b46a7dd2a78.xml diff --git a/tests/suites/cite/post/88b4e1ba-3bd4-4cbe-81e5-e004056d6ca3.xml b/tests/functionaltests/suites/cite/post/88b4e1ba-3bd4-4cbe-81e5-e004056d6ca3.xml similarity index 100% rename from tests/suites/cite/post/88b4e1ba-3bd4-4cbe-81e5-e004056d6ca3.xml rename to tests/functionaltests/suites/cite/post/88b4e1ba-3bd4-4cbe-81e5-e004056d6ca3.xml diff --git a/tests/suites/cite/post/898cd63b-2585-4ec0-8720-d554bd324174.xml b/tests/functionaltests/suites/cite/post/898cd63b-2585-4ec0-8720-d554bd324174.xml similarity index 100% rename from tests/suites/cite/post/898cd63b-2585-4ec0-8720-d554bd324174.xml rename to tests/functionaltests/suites/cite/post/898cd63b-2585-4ec0-8720-d554bd324174.xml diff --git a/tests/suites/cite/post/8fb13dc3-5818-45e2-9e29-46abc16e7d38.xml b/tests/functionaltests/suites/cite/post/8fb13dc3-5818-45e2-9e29-46abc16e7d38.xml similarity index 100% rename from tests/suites/cite/post/8fb13dc3-5818-45e2-9e29-46abc16e7d38.xml rename to tests/functionaltests/suites/cite/post/8fb13dc3-5818-45e2-9e29-46abc16e7d38.xml diff --git a/tests/suites/cite/post/928c1896-52d4-4ac7-9832-f98e3eb65f02.xml b/tests/functionaltests/suites/cite/post/928c1896-52d4-4ac7-9832-f98e3eb65f02.xml similarity index 100% rename from tests/suites/cite/post/928c1896-52d4-4ac7-9832-f98e3eb65f02.xml rename to tests/functionaltests/suites/cite/post/928c1896-52d4-4ac7-9832-f98e3eb65f02.xml diff --git a/tests/suites/cite/post/93bdbb9d-2734-4f01-92fb-48634cca41de.xml b/tests/functionaltests/suites/cite/post/93bdbb9d-2734-4f01-92fb-48634cca41de.xml similarity index 100% rename from tests/suites/cite/post/93bdbb9d-2734-4f01-92fb-48634cca41de.xml rename to tests/functionaltests/suites/cite/post/93bdbb9d-2734-4f01-92fb-48634cca41de.xml diff --git a/tests/suites/cite/post/948b39d5-bb4f-45b8-a8f2-4ff9501aaedd.xml b/tests/functionaltests/suites/cite/post/948b39d5-bb4f-45b8-a8f2-4ff9501aaedd.xml similarity index 100% rename from tests/suites/cite/post/948b39d5-bb4f-45b8-a8f2-4ff9501aaedd.xml rename to tests/functionaltests/suites/cite/post/948b39d5-bb4f-45b8-a8f2-4ff9501aaedd.xml diff --git a/tests/suites/cite/post/9fd64fcc-f69c-4626-b72e-5c7776a29aa9.xml b/tests/functionaltests/suites/cite/post/9fd64fcc-f69c-4626-b72e-5c7776a29aa9.xml similarity index 100% rename from tests/suites/cite/post/9fd64fcc-f69c-4626-b72e-5c7776a29aa9.xml rename to tests/functionaltests/suites/cite/post/9fd64fcc-f69c-4626-b72e-5c7776a29aa9.xml diff --git a/tests/suites/cite/post/a06d04ab-e0d0-4a86-bfe8-71460f41fe37.xml b/tests/functionaltests/suites/cite/post/a06d04ab-e0d0-4a86-bfe8-71460f41fe37.xml similarity index 100% rename from tests/suites/cite/post/a06d04ab-e0d0-4a86-bfe8-71460f41fe37.xml rename to tests/functionaltests/suites/cite/post/a06d04ab-e0d0-4a86-bfe8-71460f41fe37.xml diff --git a/tests/suites/cite/post/ad61686c-d304-42d1-b845-8c1f3070c83e.xml b/tests/functionaltests/suites/cite/post/ad61686c-d304-42d1-b845-8c1f3070c83e.xml similarity index 100% rename from tests/suites/cite/post/ad61686c-d304-42d1-b845-8c1f3070c83e.xml rename to tests/functionaltests/suites/cite/post/ad61686c-d304-42d1-b845-8c1f3070c83e.xml diff --git a/tests/suites/cite/post/af39c020-7b1d-429c-b474-f45c3164cb79.xml b/tests/functionaltests/suites/cite/post/af39c020-7b1d-429c-b474-f45c3164cb79.xml similarity index 100% rename from tests/suites/cite/post/af39c020-7b1d-429c-b474-f45c3164cb79.xml rename to tests/functionaltests/suites/cite/post/af39c020-7b1d-429c-b474-f45c3164cb79.xml diff --git a/tests/suites/cite/post/b90e2de6-3d25-4298-a13e-dc9492a8fc73.xml b/tests/functionaltests/suites/cite/post/b90e2de6-3d25-4298-a13e-dc9492a8fc73.xml similarity index 100% rename from tests/suites/cite/post/b90e2de6-3d25-4298-a13e-dc9492a8fc73.xml rename to tests/functionaltests/suites/cite/post/b90e2de6-3d25-4298-a13e-dc9492a8fc73.xml diff --git a/tests/suites/cite/post/ba9b0107-dcee-46ef-823a-a2e25a911a96.xml b/tests/functionaltests/suites/cite/post/ba9b0107-dcee-46ef-823a-a2e25a911a96.xml similarity index 100% rename from tests/suites/cite/post/ba9b0107-dcee-46ef-823a-a2e25a911a96.xml rename to tests/functionaltests/suites/cite/post/ba9b0107-dcee-46ef-823a-a2e25a911a96.xml diff --git a/tests/suites/cite/post/bb66ebc5-7121-48b5-9f53-b56537d9561b.xml b/tests/functionaltests/suites/cite/post/bb66ebc5-7121-48b5-9f53-b56537d9561b.xml similarity index 100% rename from tests/suites/cite/post/bb66ebc5-7121-48b5-9f53-b56537d9561b.xml rename to tests/functionaltests/suites/cite/post/bb66ebc5-7121-48b5-9f53-b56537d9561b.xml diff --git a/tests/suites/cite/post/c02d1c85-df9f-45ee-bea7-345c35e02a98.xml b/tests/functionaltests/suites/cite/post/c02d1c85-df9f-45ee-bea7-345c35e02a98.xml similarity index 100% rename from tests/suites/cite/post/c02d1c85-df9f-45ee-bea7-345c35e02a98.xml rename to tests/functionaltests/suites/cite/post/c02d1c85-df9f-45ee-bea7-345c35e02a98.xml diff --git a/tests/suites/cite/post/c311a342-72e3-4983-be39-868e6ed9740f.xml b/tests/functionaltests/suites/cite/post/c311a342-72e3-4983-be39-868e6ed9740f.xml similarity index 100% rename from tests/suites/cite/post/c311a342-72e3-4983-be39-868e6ed9740f.xml rename to tests/functionaltests/suites/cite/post/c311a342-72e3-4983-be39-868e6ed9740f.xml diff --git a/tests/suites/cite/post/c38916c2-4bc6-446d-b7aa-ab006d6ba31c.xml b/tests/functionaltests/suites/cite/post/c38916c2-4bc6-446d-b7aa-ab006d6ba31c.xml similarity index 100% rename from tests/suites/cite/post/c38916c2-4bc6-446d-b7aa-ab006d6ba31c.xml rename to tests/functionaltests/suites/cite/post/c38916c2-4bc6-446d-b7aa-ab006d6ba31c.xml diff --git a/tests/suites/cite/post/c8588f47-8e65-45f5-ad34-ff4524cad84d.xml b/tests/functionaltests/suites/cite/post/c8588f47-8e65-45f5-ad34-ff4524cad84d.xml similarity index 100% rename from tests/suites/cite/post/c8588f47-8e65-45f5-ad34-ff4524cad84d.xml rename to tests/functionaltests/suites/cite/post/c8588f47-8e65-45f5-ad34-ff4524cad84d.xml diff --git a/tests/suites/cite/post/da228d4c-e1be-43d7-9ccb-c3f27ee32541.xml b/tests/functionaltests/suites/cite/post/da228d4c-e1be-43d7-9ccb-c3f27ee32541.xml similarity index 100% rename from tests/suites/cite/post/da228d4c-e1be-43d7-9ccb-c3f27ee32541.xml rename to tests/functionaltests/suites/cite/post/da228d4c-e1be-43d7-9ccb-c3f27ee32541.xml diff --git a/tests/suites/cite/post/dc92c2c4-87d8-4a13-964e-ff9b0e0c27b3.xml b/tests/functionaltests/suites/cite/post/dc92c2c4-87d8-4a13-964e-ff9b0e0c27b3.xml similarity index 100% rename from tests/suites/cite/post/dc92c2c4-87d8-4a13-964e-ff9b0e0c27b3.xml rename to tests/functionaltests/suites/cite/post/dc92c2c4-87d8-4a13-964e-ff9b0e0c27b3.xml diff --git a/tests/suites/cite/post/dcb13791-379e-4739-bcd4-dbaa69f0efdb.xml b/tests/functionaltests/suites/cite/post/dcb13791-379e-4739-bcd4-dbaa69f0efdb.xml similarity index 100% rename from tests/suites/cite/post/dcb13791-379e-4739-bcd4-dbaa69f0efdb.xml rename to tests/functionaltests/suites/cite/post/dcb13791-379e-4739-bcd4-dbaa69f0efdb.xml diff --git a/tests/suites/cite/post/e308f030-c097-4036-a838-44bad74c9ef7.xml b/tests/functionaltests/suites/cite/post/e308f030-c097-4036-a838-44bad74c9ef7.xml similarity index 100% rename from tests/suites/cite/post/e308f030-c097-4036-a838-44bad74c9ef7.xml rename to tests/functionaltests/suites/cite/post/e308f030-c097-4036-a838-44bad74c9ef7.xml diff --git a/tests/suites/cite/post/e6e9efb2-e2b7-4b0a-a3a2-7deea3f9b8e2.xml b/tests/functionaltests/suites/cite/post/e6e9efb2-e2b7-4b0a-a3a2-7deea3f9b8e2.xml similarity index 100% rename from tests/suites/cite/post/e6e9efb2-e2b7-4b0a-a3a2-7deea3f9b8e2.xml rename to tests/functionaltests/suites/cite/post/e6e9efb2-e2b7-4b0a-a3a2-7deea3f9b8e2.xml diff --git a/tests/suites/cite/post/f7976c55-a156-4421-8199-bc0487da4b0f.xml b/tests/functionaltests/suites/cite/post/f7976c55-a156-4421-8199-bc0487da4b0f.xml similarity index 100% rename from tests/suites/cite/post/f7976c55-a156-4421-8199-bc0487da4b0f.xml rename to tests/functionaltests/suites/cite/post/f7976c55-a156-4421-8199-bc0487da4b0f.xml diff --git a/tests/suites/cite/post/f7d79701-f10b-4087-a33c-f62df0a04fd1.xml b/tests/functionaltests/suites/cite/post/f7d79701-f10b-4087-a33c-f62df0a04fd1.xml similarity index 100% rename from tests/suites/cite/post/f7d79701-f10b-4087-a33c-f62df0a04fd1.xml rename to tests/functionaltests/suites/cite/post/f7d79701-f10b-4087-a33c-f62df0a04fd1.xml diff --git a/tests/suites/cite/post/fc1bc094-88f1-4851-bc2b-dfc56be9f3c7.xml b/tests/functionaltests/suites/cite/post/fc1bc094-88f1-4851-bc2b-dfc56be9f3c7.xml similarity index 100% rename from tests/suites/cite/post/fc1bc094-88f1-4851-bc2b-dfc56be9f3c7.xml rename to tests/functionaltests/suites/cite/post/fc1bc094-88f1-4851-bc2b-dfc56be9f3c7.xml diff --git a/tests/suites/cite/post/fe20960f-a26c-4f13-852d-470a0d3233f9.xml b/tests/functionaltests/suites/cite/post/fe20960f-a26c-4f13-852d-470a0d3233f9.xml similarity index 100% rename from tests/suites/cite/post/fe20960f-a26c-4f13-852d-470a0d3233f9.xml rename to tests/functionaltests/suites/cite/post/fe20960f-a26c-4f13-852d-470a0d3233f9.xml diff --git a/tests/suites/csw30/default.cfg b/tests/functionaltests/suites/csw30/default.cfg similarity index 100% rename from tests/suites/csw30/default.cfg rename to tests/functionaltests/suites/csw30/default.cfg diff --git a/tests/expected/suites_csw30_get_002258f0-627f-457f-b2ad-025777c77ac8.xml b/tests/functionaltests/suites/csw30/expected/get_002258f0-627f-457f-b2ad-025777c77ac8.xml similarity index 100% rename from tests/expected/suites_csw30_get_002258f0-627f-457f-b2ad-025777c77ac8.xml rename to tests/functionaltests/suites/csw30/expected/get_002258f0-627f-457f-b2ad-025777c77ac8.xml diff --git a/tests/expected/suites_csw30_get_045c600d-973d-41eb-9f60-eba1b717b720.xml b/tests/functionaltests/suites/csw30/expected/get_045c600d-973d-41eb-9f60-eba1b717b720.xml similarity index 100% rename from tests/expected/suites_csw30_get_045c600d-973d-41eb-9f60-eba1b717b720.xml rename to tests/functionaltests/suites/csw30/expected/get_045c600d-973d-41eb-9f60-eba1b717b720.xml diff --git a/tests/expected/suites_csw30_get_0bbcf862-5211-4351-9988-63f8bec49c98.xml b/tests/functionaltests/suites/csw30/expected/get_0bbcf862-5211-4351-9988-63f8bec49c98.xml similarity index 100% rename from tests/expected/suites_csw30_get_0bbcf862-5211-4351-9988-63f8bec49c98.xml rename to tests/functionaltests/suites/csw30/expected/get_0bbcf862-5211-4351-9988-63f8bec49c98.xml diff --git a/tests/expected/suites_csw30_get_0bdf8457-971e-4ed1-be4a-5feca4dcd8fa.xml b/tests/functionaltests/suites/csw30/expected/get_0bdf8457-971e-4ed1-be4a-5feca4dcd8fa.xml similarity index 100% rename from tests/expected/suites_csw30_get_0bdf8457-971e-4ed1-be4a-5feca4dcd8fa.xml rename to tests/functionaltests/suites/csw30/expected/get_0bdf8457-971e-4ed1-be4a-5feca4dcd8fa.xml diff --git a/tests/expected/suites_csw30_get_0d8bbdec-0846-42ca-8dc8-b7f4cba41d67.xml b/tests/functionaltests/suites/csw30/expected/get_0d8bbdec-0846-42ca-8dc8-b7f4cba41d67.xml similarity index 100% rename from tests/expected/suites_csw30_get_0d8bbdec-0846-42ca-8dc8-b7f4cba41d67.xml rename to tests/functionaltests/suites/csw30/expected/get_0d8bbdec-0846-42ca-8dc8-b7f4cba41d67.xml diff --git a/tests/expected/suites_csw30_get_0e1dca37-477a-4060-99fe-7799b52d656c.xml b/tests/functionaltests/suites/csw30/expected/get_0e1dca37-477a-4060-99fe-7799b52d656c.xml similarity index 100% rename from tests/expected/suites_csw30_get_0e1dca37-477a-4060-99fe-7799b52d656c.xml rename to tests/functionaltests/suites/csw30/expected/get_0e1dca37-477a-4060-99fe-7799b52d656c.xml diff --git a/tests/expected/suites_csw30_get_13c87956-51a4-4780-a8e9-6e0b5c0bb473.xml b/tests/functionaltests/suites/csw30/expected/get_13c87956-51a4-4780-a8e9-6e0b5c0bb473.xml similarity index 100% rename from tests/expected/suites_csw30_get_13c87956-51a4-4780-a8e9-6e0b5c0bb473.xml rename to tests/functionaltests/suites/csw30/expected/get_13c87956-51a4-4780-a8e9-6e0b5c0bb473.xml diff --git a/tests/expected/suites_csw30_get_151d982f-ebd3-4cb2-b507-a667713a1e92.xml b/tests/functionaltests/suites/csw30/expected/get_151d982f-ebd3-4cb2-b507-a667713a1e92.xml similarity index 100% rename from tests/expected/suites_csw30_get_151d982f-ebd3-4cb2-b507-a667713a1e92.xml rename to tests/functionaltests/suites/csw30/expected/get_151d982f-ebd3-4cb2-b507-a667713a1e92.xml diff --git a/tests/expected/suites_csw30_get_1869e495-1a61-4713-8285-76d1336ee1a6.xml b/tests/functionaltests/suites/csw30/expected/get_1869e495-1a61-4713-8285-76d1336ee1a6.xml similarity index 100% rename from tests/expected/suites_csw30_get_1869e495-1a61-4713-8285-76d1336ee1a6.xml rename to tests/functionaltests/suites/csw30/expected/get_1869e495-1a61-4713-8285-76d1336ee1a6.xml diff --git a/tests/expected/suites_csw30_get_1bcb42a9-538c-4f0a-9d4c-d6f10b720aa6.xml b/tests/functionaltests/suites/csw30/expected/get_1bcb42a9-538c-4f0a-9d4c-d6f10b720aa6.xml similarity index 100% rename from tests/expected/suites_csw30_get_1bcb42a9-538c-4f0a-9d4c-d6f10b720aa6.xml rename to tests/functionaltests/suites/csw30/expected/get_1bcb42a9-538c-4f0a-9d4c-d6f10b720aa6.xml diff --git a/tests/expected/suites_csw30_get_22f44168-2ccf-4801-ad96-204212566d56.xml b/tests/functionaltests/suites/csw30/expected/get_22f44168-2ccf-4801-ad96-204212566d56.xml similarity index 100% rename from tests/expected/suites_csw30_get_22f44168-2ccf-4801-ad96-204212566d56.xml rename to tests/functionaltests/suites/csw30/expected/get_22f44168-2ccf-4801-ad96-204212566d56.xml diff --git a/tests/expected/suites_csw30_get_2499a9c9-8d33-449c-bc92-d494adfcc84d.xml b/tests/functionaltests/suites/csw30/expected/get_2499a9c9-8d33-449c-bc92-d494adfcc84d.xml similarity index 100% rename from tests/expected/suites_csw30_get_2499a9c9-8d33-449c-bc92-d494adfcc84d.xml rename to tests/functionaltests/suites/csw30/expected/get_2499a9c9-8d33-449c-bc92-d494adfcc84d.xml diff --git a/tests/expected/suites_csw30_get_27f4f39c-d92a-4e3c-b961-c6aa8c24e513.xml b/tests/functionaltests/suites/csw30/expected/get_27f4f39c-d92a-4e3c-b961-c6aa8c24e513.xml similarity index 100% rename from tests/expected/suites_csw30_get_27f4f39c-d92a-4e3c-b961-c6aa8c24e513.xml rename to tests/functionaltests/suites/csw30/expected/get_27f4f39c-d92a-4e3c-b961-c6aa8c24e513.xml diff --git a/tests/expected/suites_csw30_get_28e569df-8596-4128-8d9a-29ad03138915.xml b/tests/functionaltests/suites/csw30/expected/get_28e569df-8596-4128-8d9a-29ad03138915.xml similarity index 100% rename from tests/expected/suites_csw30_get_28e569df-8596-4128-8d9a-29ad03138915.xml rename to tests/functionaltests/suites/csw30/expected/get_28e569df-8596-4128-8d9a-29ad03138915.xml diff --git a/tests/expected/suites_csw30_get_2b06a5c8-0df2-4af1-8d2e-a425de11c845.xml b/tests/functionaltests/suites/csw30/expected/get_2b06a5c8-0df2-4af1-8d2e-a425de11c845.xml similarity index 100% rename from tests/expected/suites_csw30_get_2b06a5c8-0df2-4af1-8d2e-a425de11c845.xml rename to tests/functionaltests/suites/csw30/expected/get_2b06a5c8-0df2-4af1-8d2e-a425de11c845.xml diff --git a/tests/expected/suites_csw30_get_2ba1418a-444d-4cce-9cfe-4c94efcf8b55.xml b/tests/functionaltests/suites/csw30/expected/get_2ba1418a-444d-4cce-9cfe-4c94efcf8b55.xml similarity index 100% rename from tests/expected/suites_csw30_get_2ba1418a-444d-4cce-9cfe-4c94efcf8b55.xml rename to tests/functionaltests/suites/csw30/expected/get_2ba1418a-444d-4cce-9cfe-4c94efcf8b55.xml diff --git a/tests/expected/suites_csw30_get_397fe17a-d5b4-4f96-8cc4-4ce467ed4d0a.xml b/tests/functionaltests/suites/csw30/expected/get_397fe17a-d5b4-4f96-8cc4-4ce467ed4d0a.xml similarity index 100% rename from tests/expected/suites_csw30_get_397fe17a-d5b4-4f96-8cc4-4ce467ed4d0a.xml rename to tests/functionaltests/suites/csw30/expected/get_397fe17a-d5b4-4f96-8cc4-4ce467ed4d0a.xml diff --git a/tests/expected/suites_csw30_get_3dcd1b15-73d2-4b7d-a3e3-ff15bf14aae4.xml b/tests/functionaltests/suites/csw30/expected/get_3dcd1b15-73d2-4b7d-a3e3-ff15bf14aae4.xml similarity index 100% rename from tests/expected/suites_csw30_get_3dcd1b15-73d2-4b7d-a3e3-ff15bf14aae4.xml rename to tests/functionaltests/suites/csw30/expected/get_3dcd1b15-73d2-4b7d-a3e3-ff15bf14aae4.xml diff --git a/tests/expected/suites_csw30_get_405e1ff1-5c75-4846-a28b-cfaff2a6921a.xml b/tests/functionaltests/suites/csw30/expected/get_405e1ff1-5c75-4846-a28b-cfaff2a6921a.xml similarity index 100% rename from tests/expected/suites_csw30_get_405e1ff1-5c75-4846-a28b-cfaff2a6921a.xml rename to tests/functionaltests/suites/csw30/expected/get_405e1ff1-5c75-4846-a28b-cfaff2a6921a.xml diff --git a/tests/expected/suites_csw30_get_43cd6471-6ac7-45bd-8ff9-148cb2de9a52.xml b/tests/functionaltests/suites/csw30/expected/get_43cd6471-6ac7-45bd-8ff9-148cb2de9a52.xml similarity index 100% rename from tests/expected/suites_csw30_get_43cd6471-6ac7-45bd-8ff9-148cb2de9a52.xml rename to tests/functionaltests/suites/csw30/expected/get_43cd6471-6ac7-45bd-8ff9-148cb2de9a52.xml diff --git a/tests/expected/suites_csw30_get_4566d2ec-1283-4a02-baed-a74fc5b47e37.xml b/tests/functionaltests/suites/csw30/expected/get_4566d2ec-1283-4a02-baed-a74fc5b47e37.xml similarity index 100% rename from tests/expected/suites_csw30_get_4566d2ec-1283-4a02-baed-a74fc5b47e37.xml rename to tests/functionaltests/suites/csw30/expected/get_4566d2ec-1283-4a02-baed-a74fc5b47e37.xml diff --git a/tests/expected/suites_csw30_get_461bd4c5-6623-490d-9036-d91a2201e87b.xml b/tests/functionaltests/suites/csw30/expected/get_461bd4c5-6623-490d-9036-d91a2201e87b.xml similarity index 100% rename from tests/expected/suites_csw30_get_461bd4c5-6623-490d-9036-d91a2201e87b.xml rename to tests/functionaltests/suites/csw30/expected/get_461bd4c5-6623-490d-9036-d91a2201e87b.xml diff --git a/tests/expected/suites_csw30_get_5496894a-3877-4f62-a20b-5d7126f94925.xml b/tests/functionaltests/suites/csw30/expected/get_5496894a-3877-4f62-a20b-5d7126f94925.xml similarity index 100% rename from tests/expected/suites_csw30_get_5496894a-3877-4f62-a20b-5d7126f94925.xml rename to tests/functionaltests/suites/csw30/expected/get_5496894a-3877-4f62-a20b-5d7126f94925.xml diff --git a/tests/expected/suites_csw30_get_5a015f6a-bf14-4977-b1e3-6577eb0223c8.xml b/tests/functionaltests/suites/csw30/expected/get_5a015f6a-bf14-4977-b1e3-6577eb0223c8.xml similarity index 100% rename from tests/expected/suites_csw30_get_5a015f6a-bf14-4977-b1e3-6577eb0223c8.xml rename to tests/functionaltests/suites/csw30/expected/get_5a015f6a-bf14-4977-b1e3-6577eb0223c8.xml diff --git a/tests/expected/suites_csw30_get_5c3a2390-1fb9-43f0-b96c-f48c7a69c990.xml b/tests/functionaltests/suites/csw30/expected/get_5c3a2390-1fb9-43f0-b96c-f48c7a69c990.xml similarity index 100% rename from tests/expected/suites_csw30_get_5c3a2390-1fb9-43f0-b96c-f48c7a69c990.xml rename to tests/functionaltests/suites/csw30/expected/get_5c3a2390-1fb9-43f0-b96c-f48c7a69c990.xml diff --git a/tests/expected/suites_csw30_get_5e9e67dc-18d6-4645-8111-c6263c88a61f.xml b/tests/functionaltests/suites/csw30/expected/get_5e9e67dc-18d6-4645-8111-c6263c88a61f.xml similarity index 100% rename from tests/expected/suites_csw30_get_5e9e67dc-18d6-4645-8111-c6263c88a61f.xml rename to tests/functionaltests/suites/csw30/expected/get_5e9e67dc-18d6-4645-8111-c6263c88a61f.xml diff --git a/tests/expected/suites_csw30_get_604d9379-741c-42e5-b4cf-92e56c87fa64.xml b/tests/functionaltests/suites/csw30/expected/get_604d9379-741c-42e5-b4cf-92e56c87fa64.xml similarity index 100% rename from tests/expected/suites_csw30_get_604d9379-741c-42e5-b4cf-92e56c87fa64.xml rename to tests/functionaltests/suites/csw30/expected/get_604d9379-741c-42e5-b4cf-92e56c87fa64.xml diff --git a/tests/expected/suites_csw30_get_60e6af95-d5fc-465a-82e2-fd2e6d85e4af.xml b/tests/functionaltests/suites/csw30/expected/get_60e6af95-d5fc-465a-82e2-fd2e6d85e4af.xml similarity index 100% rename from tests/expected/suites_csw30_get_60e6af95-d5fc-465a-82e2-fd2e6d85e4af.xml rename to tests/functionaltests/suites/csw30/expected/get_60e6af95-d5fc-465a-82e2-fd2e6d85e4af.xml diff --git a/tests/expected/suites_csw30_get_62ad94c2-b558-4265-a427-23d6677975d6.xml b/tests/functionaltests/suites/csw30/expected/get_62ad94c2-b558-4265-a427-23d6677975d6.xml similarity index 100% rename from tests/expected/suites_csw30_get_62ad94c2-b558-4265-a427-23d6677975d6.xml rename to tests/functionaltests/suites/csw30/expected/get_62ad94c2-b558-4265-a427-23d6677975d6.xml diff --git a/tests/expected/suites_csw30_get_6a5e247b-0961-4b8a-a0d6-35a491d9cfe7.xml b/tests/functionaltests/suites/csw30/expected/get_6a5e247b-0961-4b8a-a0d6-35a491d9cfe7.xml similarity index 100% rename from tests/expected/suites_csw30_get_6a5e247b-0961-4b8a-a0d6-35a491d9cfe7.xml rename to tests/functionaltests/suites/csw30/expected/get_6a5e247b-0961-4b8a-a0d6-35a491d9cfe7.xml diff --git a/tests/expected/suites_csw30_get_6a9d0558-9d87-495b-b999-b49a3ef1cf99.xml b/tests/functionaltests/suites/csw30/expected/get_6a9d0558-9d87-495b-b999-b49a3ef1cf99.xml similarity index 100% rename from tests/expected/suites_csw30_get_6a9d0558-9d87-495b-b999-b49a3ef1cf99.xml rename to tests/functionaltests/suites/csw30/expected/get_6a9d0558-9d87-495b-b999-b49a3ef1cf99.xml diff --git a/tests/expected/suites_csw30_get_6bd790c9-6019-4652-9c91-330a894d6700.xml b/tests/functionaltests/suites/csw30/expected/get_6bd790c9-6019-4652-9c91-330a894d6700.xml similarity index 100% rename from tests/expected/suites_csw30_get_6bd790c9-6019-4652-9c91-330a894d6700.xml rename to tests/functionaltests/suites/csw30/expected/get_6bd790c9-6019-4652-9c91-330a894d6700.xml diff --git a/tests/expected/suites_csw30_get_6e9cba43-5e27-415d-adbd-a92851c2c173.xml b/tests/functionaltests/suites/csw30/expected/get_6e9cba43-5e27-415d-adbd-a92851c2c173.xml similarity index 100% rename from tests/expected/suites_csw30_get_6e9cba43-5e27-415d-adbd-a92851c2c173.xml rename to tests/functionaltests/suites/csw30/expected/get_6e9cba43-5e27-415d-adbd-a92851c2c173.xml diff --git a/tests/expected/suites_csw30_get_7630d230-e142-4a09-accf-f091000b90cd.xml b/tests/functionaltests/suites/csw30/expected/get_7630d230-e142-4a09-accf-f091000b90cd.xml similarity index 100% rename from tests/expected/suites_csw30_get_7630d230-e142-4a09-accf-f091000b90cd.xml rename to tests/functionaltests/suites/csw30/expected/get_7630d230-e142-4a09-accf-f091000b90cd.xml diff --git a/tests/expected/suites_csw30_get_7e82446a-b5dc-43fe-9a73-4cc1f2f2f0bf.xml b/tests/functionaltests/suites/csw30/expected/get_7e82446a-b5dc-43fe-9a73-4cc1f2f2f0bf.xml similarity index 100% rename from tests/expected/suites_csw30_get_7e82446a-b5dc-43fe-9a73-4cc1f2f2f0bf.xml rename to tests/functionaltests/suites/csw30/expected/get_7e82446a-b5dc-43fe-9a73-4cc1f2f2f0bf.xml diff --git a/tests/expected/suites_csw30_get_8025978e-1a35-4d70-80c2-e8329e0c7864.xml b/tests/functionaltests/suites/csw30/expected/get_8025978e-1a35-4d70-80c2-e8329e0c7864.xml similarity index 100% rename from tests/expected/suites_csw30_get_8025978e-1a35-4d70-80c2-e8329e0c7864.xml rename to tests/functionaltests/suites/csw30/expected/get_8025978e-1a35-4d70-80c2-e8329e0c7864.xml diff --git a/tests/expected/suites_csw30_get_8184ae4f-536d-4978-8b28-ad703be96967.xml b/tests/functionaltests/suites/csw30/expected/get_8184ae4f-536d-4978-8b28-ad703be96967.xml similarity index 100% rename from tests/expected/suites_csw30_get_8184ae4f-536d-4978-8b28-ad703be96967.xml rename to tests/functionaltests/suites/csw30/expected/get_8184ae4f-536d-4978-8b28-ad703be96967.xml diff --git a/tests/expected/suites_csw30_get_88f63a89-664f-4315-b4f8-04a0b33803a7.xml b/tests/functionaltests/suites/csw30/expected/get_88f63a89-664f-4315-b4f8-04a0b33803a7.xml similarity index 100% rename from tests/expected/suites_csw30_get_88f63a89-664f-4315-b4f8-04a0b33803a7.xml rename to tests/functionaltests/suites/csw30/expected/get_88f63a89-664f-4315-b4f8-04a0b33803a7.xml diff --git a/tests/expected/suites_csw30_get_8987f8f0-4d93-4481-968c-a2ccbd6b8be2.xml b/tests/functionaltests/suites/csw30/expected/get_8987f8f0-4d93-4481-968c-a2ccbd6b8be2.xml similarity index 100% rename from tests/expected/suites_csw30_get_8987f8f0-4d93-4481-968c-a2ccbd6b8be2.xml rename to tests/functionaltests/suites/csw30/expected/get_8987f8f0-4d93-4481-968c-a2ccbd6b8be2.xml diff --git a/tests/expected/suites_csw30_get_8e5fa0f6-3f29-4d1f-abe2-d9866f3def98.xml b/tests/functionaltests/suites/csw30/expected/get_8e5fa0f6-3f29-4d1f-abe2-d9866f3def98.xml similarity index 100% rename from tests/expected/suites_csw30_get_8e5fa0f6-3f29-4d1f-abe2-d9866f3def98.xml rename to tests/functionaltests/suites/csw30/expected/get_8e5fa0f6-3f29-4d1f-abe2-d9866f3def98.xml diff --git a/tests/expected/suites_csw30_get_9000ec29-5649-474e-b2d6-55c00f8a52c0.xml b/tests/functionaltests/suites/csw30/expected/get_9000ec29-5649-474e-b2d6-55c00f8a52c0.xml similarity index 100% rename from tests/expected/suites_csw30_get_9000ec29-5649-474e-b2d6-55c00f8a52c0.xml rename to tests/functionaltests/suites/csw30/expected/get_9000ec29-5649-474e-b2d6-55c00f8a52c0.xml diff --git a/tests/expected/suites_csw30_get_91914d35-7bbf-45e6-9b37-5ef484869a4e.xml b/tests/functionaltests/suites/csw30/expected/get_91914d35-7bbf-45e6-9b37-5ef484869a4e.xml similarity index 100% rename from tests/expected/suites_csw30_get_91914d35-7bbf-45e6-9b37-5ef484869a4e.xml rename to tests/functionaltests/suites/csw30/expected/get_91914d35-7bbf-45e6-9b37-5ef484869a4e.xml diff --git a/tests/expected/suites_csw30_get_92d4844d-57d5-4cf3-8f47-ba50e369dc04.xml b/tests/functionaltests/suites/csw30/expected/get_92d4844d-57d5-4cf3-8f47-ba50e369dc04.xml similarity index 100% rename from tests/expected/suites_csw30_get_92d4844d-57d5-4cf3-8f47-ba50e369dc04.xml rename to tests/functionaltests/suites/csw30/expected/get_92d4844d-57d5-4cf3-8f47-ba50e369dc04.xml diff --git a/tests/expected/suites_csw30_get_9c0e2a4b-b4e6-41c0-b630-c8c99fc89ff3.xml b/tests/functionaltests/suites/csw30/expected/get_9c0e2a4b-b4e6-41c0-b630-c8c99fc89ff3.xml similarity index 100% rename from tests/expected/suites_csw30_get_9c0e2a4b-b4e6-41c0-b630-c8c99fc89ff3.xml rename to tests/functionaltests/suites/csw30/expected/get_9c0e2a4b-b4e6-41c0-b630-c8c99fc89ff3.xml diff --git a/tests/expected/suites_csw30_get_9d7ffac8-9798-428d-8e27-3cd12497ee6b.xml b/tests/functionaltests/suites/csw30/expected/get_9d7ffac8-9798-428d-8e27-3cd12497ee6b.xml similarity index 100% rename from tests/expected/suites_csw30_get_9d7ffac8-9798-428d-8e27-3cd12497ee6b.xml rename to tests/functionaltests/suites/csw30/expected/get_9d7ffac8-9798-428d-8e27-3cd12497ee6b.xml diff --git a/tests/expected/suites_csw30_get_Exception-GetDomain-value-reference.xml b/tests/functionaltests/suites/csw30/expected/get_Exception-GetDomain-value-reference.xml similarity index 100% rename from tests/expected/suites_csw30_get_Exception-GetDomain-value-reference.xml rename to tests/functionaltests/suites/csw30/expected/get_Exception-GetDomain-value-reference.xml diff --git a/tests/expected/suites_csw30_get_Exception-GetDomain.xml b/tests/functionaltests/suites/csw30/expected/get_Exception-GetDomain.xml similarity index 100% rename from tests/expected/suites_csw30_get_Exception-GetDomain.xml rename to tests/functionaltests/suites/csw30/expected/get_Exception-GetDomain.xml diff --git a/tests/expected/suites_csw30_get_Exception-GetRecordById-404.xml b/tests/functionaltests/suites/csw30/expected/get_Exception-GetRecordById-404.xml similarity index 100% rename from tests/expected/suites_csw30_get_Exception-GetRecordById-404.xml rename to tests/functionaltests/suites/csw30/expected/get_Exception-GetRecordById-404.xml diff --git a/tests/expected/suites_csw30_get_Exception-GetRecordById-dc.xml.xml b/tests/functionaltests/suites/csw30/expected/get_Exception-GetRecordById-dc.xml.xml similarity index 100% rename from tests/expected/suites_csw30_get_Exception-GetRecordById-dc.xml.xml rename to tests/functionaltests/suites/csw30/expected/get_Exception-GetRecordById-dc.xml.xml diff --git a/tests/expected/suites_csw30_get_Exception-GetRepositoryItem-notfound.xml b/tests/functionaltests/suites/csw30/expected/get_Exception-GetRepositoryItem-notfound.xml similarity index 100% rename from tests/expected/suites_csw30_get_Exception-GetRepositoryItem-notfound.xml rename to tests/functionaltests/suites/csw30/expected/get_Exception-GetRepositoryItem-notfound.xml diff --git a/tests/expected/suites_csw30_get_Exception-invalid-request.xml b/tests/functionaltests/suites/csw30/expected/get_Exception-invalid-request.xml similarity index 100% rename from tests/expected/suites_csw30_get_Exception-invalid-request.xml rename to tests/functionaltests/suites/csw30/expected/get_Exception-invalid-request.xml diff --git a/tests/expected/suites_csw30_get_GetCapabilities-base-url.xml b/tests/functionaltests/suites/csw30/expected/get_GetCapabilities-base-url.xml similarity index 100% rename from tests/expected/suites_csw30_get_GetCapabilities-base-url.xml rename to tests/functionaltests/suites/csw30/expected/get_GetCapabilities-base-url.xml diff --git a/tests/expected/suites_csw30_get_GetCapabilities-no-version.xml b/tests/functionaltests/suites/csw30/expected/get_GetCapabilities-no-version.xml similarity index 100% rename from tests/expected/suites_csw30_get_GetCapabilities-no-version.xml rename to tests/functionaltests/suites/csw30/expected/get_GetCapabilities-no-version.xml diff --git a/tests/expected/suites_csw30_get_GetCapabilities.xml b/tests/functionaltests/suites/csw30/expected/get_GetCapabilities.xml similarity index 100% rename from tests/expected/suites_csw30_get_GetCapabilities.xml rename to tests/functionaltests/suites/csw30/expected/get_GetCapabilities.xml diff --git a/tests/expected/suites_csw30_get_GetDomain-parameter.xml b/tests/functionaltests/suites/csw30/expected/get_GetDomain-parameter.xml similarity index 100% rename from tests/expected/suites_csw30_get_GetDomain-parameter.xml rename to tests/functionaltests/suites/csw30/expected/get_GetDomain-parameter.xml diff --git a/tests/expected/suites_csw30_get_GetDomain-value-reference.xml b/tests/functionaltests/suites/csw30/expected/get_GetDomain-value-reference.xml similarity index 100% rename from tests/expected/suites_csw30_get_GetDomain-value-reference.xml rename to tests/functionaltests/suites/csw30/expected/get_GetDomain-value-reference.xml diff --git a/tests/expected/suites_csw30_get_GetRepositoryItem.xml b/tests/functionaltests/suites/csw30/expected/get_GetRepositoryItem.xml similarity index 100% rename from tests/expected/suites_csw30_get_GetRepositoryItem.xml rename to tests/functionaltests/suites/csw30/expected/get_GetRepositoryItem.xml diff --git a/tests/expected/suites_csw30_get_OpenSearch-description.xml b/tests/functionaltests/suites/csw30/expected/get_OpenSearch-description.xml similarity index 100% rename from tests/expected/suites_csw30_get_OpenSearch-description.xml rename to tests/functionaltests/suites/csw30/expected/get_OpenSearch-description.xml diff --git a/tests/expected/suites_csw30_get_a2f18643-e24e-4fa5-b780-6de4a2dbc814.xml b/tests/functionaltests/suites/csw30/expected/get_a2f18643-e24e-4fa5-b780-6de4a2dbc814.xml similarity index 100% rename from tests/expected/suites_csw30_get_a2f18643-e24e-4fa5-b780-6de4a2dbc814.xml rename to tests/functionaltests/suites/csw30/expected/get_a2f18643-e24e-4fa5-b780-6de4a2dbc814.xml diff --git a/tests/expected/suites_csw30_get_abc90c8c-5868-4405-a73e-64c849be3b2a.xml b/tests/functionaltests/suites/csw30/expected/get_abc90c8c-5868-4405-a73e-64c849be3b2a.xml similarity index 100% rename from tests/expected/suites_csw30_get_abc90c8c-5868-4405-a73e-64c849be3b2a.xml rename to tests/functionaltests/suites/csw30/expected/get_abc90c8c-5868-4405-a73e-64c849be3b2a.xml diff --git a/tests/expected/suites_csw30_get_ad0c0571-09ed-436a-9a4f-a5de744c88fe.xml b/tests/functionaltests/suites/csw30/expected/get_ad0c0571-09ed-436a-9a4f-a5de744c88fe.xml similarity index 100% rename from tests/expected/suites_csw30_get_ad0c0571-09ed-436a-9a4f-a5de744c88fe.xml rename to tests/functionaltests/suites/csw30/expected/get_ad0c0571-09ed-436a-9a4f-a5de744c88fe.xml diff --git a/tests/expected/suites_csw30_get_af502903-f4ee-47ee-b76e-af878d238bcc.xml b/tests/functionaltests/suites/csw30/expected/get_af502903-f4ee-47ee-b76e-af878d238bcc.xml similarity index 100% rename from tests/expected/suites_csw30_get_af502903-f4ee-47ee-b76e-af878d238bcc.xml rename to tests/functionaltests/suites/csw30/expected/get_af502903-f4ee-47ee-b76e-af878d238bcc.xml diff --git a/tests/expected/suites_csw30_get_b2aafc3f-4f35-47bc-affd-08590972deae.xml b/tests/functionaltests/suites/csw30/expected/get_b2aafc3f-4f35-47bc-affd-08590972deae.xml similarity index 100% rename from tests/expected/suites_csw30_get_b2aafc3f-4f35-47bc-affd-08590972deae.xml rename to tests/functionaltests/suites/csw30/expected/get_b2aafc3f-4f35-47bc-affd-08590972deae.xml diff --git a/tests/expected/suites_csw30_get_b6069623-f7d8-4021-8582-98f0aea0f763.xml b/tests/functionaltests/suites/csw30/expected/get_b6069623-f7d8-4021-8582-98f0aea0f763.xml similarity index 100% rename from tests/expected/suites_csw30_get_b6069623-f7d8-4021-8582-98f0aea0f763.xml rename to tests/functionaltests/suites/csw30/expected/get_b6069623-f7d8-4021-8582-98f0aea0f763.xml diff --git a/tests/expected/suites_csw30_get_b9a07a54-75a8-45bd-b341-2823600211e3.xml b/tests/functionaltests/suites/csw30/expected/get_b9a07a54-75a8-45bd-b341-2823600211e3.xml similarity index 100% rename from tests/expected/suites_csw30_get_b9a07a54-75a8-45bd-b341-2823600211e3.xml rename to tests/functionaltests/suites/csw30/expected/get_b9a07a54-75a8-45bd-b341-2823600211e3.xml diff --git a/tests/expected/suites_csw30_get_baa4a7d0-0c01-42b6-adc3-0d03e9949fa3.xml b/tests/functionaltests/suites/csw30/expected/get_baa4a7d0-0c01-42b6-adc3-0d03e9949fa3.xml similarity index 100% rename from tests/expected/suites_csw30_get_baa4a7d0-0c01-42b6-adc3-0d03e9949fa3.xml rename to tests/functionaltests/suites/csw30/expected/get_baa4a7d0-0c01-42b6-adc3-0d03e9949fa3.xml diff --git a/tests/expected/suites_csw30_get_bfbe6409-f64a-4c89-acb3-50f260a5c743.xml b/tests/functionaltests/suites/csw30/expected/get_bfbe6409-f64a-4c89-acb3-50f260a5c743.xml similarity index 100% rename from tests/expected/suites_csw30_get_bfbe6409-f64a-4c89-acb3-50f260a5c743.xml rename to tests/functionaltests/suites/csw30/expected/get_bfbe6409-f64a-4c89-acb3-50f260a5c743.xml diff --git a/tests/expected/suites_csw30_get_bfe20134-d1da-42ef-9c0f-8e1307bbf92b.xml b/tests/functionaltests/suites/csw30/expected/get_bfe20134-d1da-42ef-9c0f-8e1307bbf92b.xml similarity index 100% rename from tests/expected/suites_csw30_get_bfe20134-d1da-42ef-9c0f-8e1307bbf92b.xml rename to tests/functionaltests/suites/csw30/expected/get_bfe20134-d1da-42ef-9c0f-8e1307bbf92b.xml diff --git a/tests/expected/suites_csw30_get_c03d173a-3f42-4956-89c8-1fe02c3a0873.xml b/tests/functionaltests/suites/csw30/expected/get_c03d173a-3f42-4956-89c8-1fe02c3a0873.xml similarity index 100% rename from tests/expected/suites_csw30_get_c03d173a-3f42-4956-89c8-1fe02c3a0873.xml rename to tests/functionaltests/suites/csw30/expected/get_c03d173a-3f42-4956-89c8-1fe02c3a0873.xml diff --git a/tests/expected/suites_csw30_get_cb43d8c3-e14c-4a9f-9231-4384b7dd21f3.xml b/tests/functionaltests/suites/csw30/expected/get_cb43d8c3-e14c-4a9f-9231-4384b7dd21f3.xml similarity index 100% rename from tests/expected/suites_csw30_get_cb43d8c3-e14c-4a9f-9231-4384b7dd21f3.xml rename to tests/functionaltests/suites/csw30/expected/get_cb43d8c3-e14c-4a9f-9231-4384b7dd21f3.xml diff --git a/tests/expected/suites_csw30_get_d03c6fd3-e821-4a26-b62f-d20a474e25af.xml b/tests/functionaltests/suites/csw30/expected/get_d03c6fd3-e821-4a26-b62f-d20a474e25af.xml similarity index 100% rename from tests/expected/suites_csw30_get_d03c6fd3-e821-4a26-b62f-d20a474e25af.xml rename to tests/functionaltests/suites/csw30/expected/get_d03c6fd3-e821-4a26-b62f-d20a474e25af.xml diff --git a/tests/expected/suites_csw30_get_d4ccbf96-a529-480e-a53d-5b88dc1dea7f.xml b/tests/functionaltests/suites/csw30/expected/get_d4ccbf96-a529-480e-a53d-5b88dc1dea7f.xml similarity index 100% rename from tests/expected/suites_csw30_get_d4ccbf96-a529-480e-a53d-5b88dc1dea7f.xml rename to tests/functionaltests/suites/csw30/expected/get_d4ccbf96-a529-480e-a53d-5b88dc1dea7f.xml diff --git a/tests/expected/suites_csw30_get_d94c801a-1207-4897-b84a-53f3a192515b.xml b/tests/functionaltests/suites/csw30/expected/get_d94c801a-1207-4897-b84a-53f3a192515b.xml similarity index 100% rename from tests/expected/suites_csw30_get_d94c801a-1207-4897-b84a-53f3a192515b.xml rename to tests/functionaltests/suites/csw30/expected/get_d94c801a-1207-4897-b84a-53f3a192515b.xml diff --git a/tests/expected/suites_csw30_get_da859e34-91fc-495a-8c09-285a40c0900b.xml b/tests/functionaltests/suites/csw30/expected/get_da859e34-91fc-495a-8c09-285a40c0900b.xml similarity index 100% rename from tests/expected/suites_csw30_get_da859e34-91fc-495a-8c09-285a40c0900b.xml rename to tests/functionaltests/suites/csw30/expected/get_da859e34-91fc-495a-8c09-285a40c0900b.xml diff --git a/tests/expected/suites_csw30_get_dc246fb8-5af5-4fda-82bb-c18b3ecd439c.xml b/tests/functionaltests/suites/csw30/expected/get_dc246fb8-5af5-4fda-82bb-c18b3ecd439c.xml similarity index 100% rename from tests/expected/suites_csw30_get_dc246fb8-5af5-4fda-82bb-c18b3ecd439c.xml rename to tests/functionaltests/suites/csw30/expected/get_dc246fb8-5af5-4fda-82bb-c18b3ecd439c.xml diff --git a/tests/expected/suites_csw30_get_de016645-6d5c-4855-943c-2db07ae9f49a.xml b/tests/functionaltests/suites/csw30/expected/get_de016645-6d5c-4855-943c-2db07ae9f49a.xml similarity index 100% rename from tests/expected/suites_csw30_get_de016645-6d5c-4855-943c-2db07ae9f49a.xml rename to tests/functionaltests/suites/csw30/expected/get_de016645-6d5c-4855-943c-2db07ae9f49a.xml diff --git a/tests/expected/suites_csw30_get_dff3ec6b-bb2d-4887-bd17-8fcf15def042.xml b/tests/functionaltests/suites/csw30/expected/get_dff3ec6b-bb2d-4887-bd17-8fcf15def042.xml similarity index 100% rename from tests/expected/suites_csw30_get_dff3ec6b-bb2d-4887-bd17-8fcf15def042.xml rename to tests/functionaltests/suites/csw30/expected/get_dff3ec6b-bb2d-4887-bd17-8fcf15def042.xml diff --git a/tests/expected/suites_csw30_get_e38e6bfb-8ac4-4ae4-8b87-0aafbc8d3c6b.xml b/tests/functionaltests/suites/csw30/expected/get_e38e6bfb-8ac4-4ae4-8b87-0aafbc8d3c6b.xml similarity index 100% rename from tests/expected/suites_csw30_get_e38e6bfb-8ac4-4ae4-8b87-0aafbc8d3c6b.xml rename to tests/functionaltests/suites/csw30/expected/get_e38e6bfb-8ac4-4ae4-8b87-0aafbc8d3c6b.xml diff --git a/tests/expected/suites_csw30_get_e67ca935-d65d-4d8c-8302-1405333dded0.xml b/tests/functionaltests/suites/csw30/expected/get_e67ca935-d65d-4d8c-8302-1405333dded0.xml similarity index 100% rename from tests/expected/suites_csw30_get_e67ca935-d65d-4d8c-8302-1405333dded0.xml rename to tests/functionaltests/suites/csw30/expected/get_e67ca935-d65d-4d8c-8302-1405333dded0.xml diff --git a/tests/expected/suites_csw30_get_e7704509-3441-458f-8ef0-e333c6b6043f.xml b/tests/functionaltests/suites/csw30/expected/get_e7704509-3441-458f-8ef0-e333c6b6043f.xml similarity index 100% rename from tests/expected/suites_csw30_get_e7704509-3441-458f-8ef0-e333c6b6043f.xml rename to tests/functionaltests/suites/csw30/expected/get_e7704509-3441-458f-8ef0-e333c6b6043f.xml diff --git a/tests/expected/suites_csw30_get_f1223a49-6d08-44ff-97fe-4c32cbbfad82.xml b/tests/functionaltests/suites/csw30/expected/get_f1223a49-6d08-44ff-97fe-4c32cbbfad82.xml similarity index 100% rename from tests/expected/suites_csw30_get_f1223a49-6d08-44ff-97fe-4c32cbbfad82.xml rename to tests/functionaltests/suites/csw30/expected/get_f1223a49-6d08-44ff-97fe-4c32cbbfad82.xml diff --git a/tests/expected/suites_csw30_get_f89dd4e1-3a81-4433-afd2-a3fa1bdb1e18.xml b/tests/functionaltests/suites/csw30/expected/get_f89dd4e1-3a81-4433-afd2-a3fa1bdb1e18.xml similarity index 100% rename from tests/expected/suites_csw30_get_f89dd4e1-3a81-4433-afd2-a3fa1bdb1e18.xml rename to tests/functionaltests/suites/csw30/expected/get_f89dd4e1-3a81-4433-afd2-a3fa1bdb1e18.xml diff --git a/tests/expected/suites_csw30_post_Exception-GetDomain-parametername-bad.xml b/tests/functionaltests/suites/csw30/expected/post_Exception-GetDomain-parametername-bad.xml similarity index 100% rename from tests/expected/suites_csw30_post_Exception-GetDomain-parametername-bad.xml rename to tests/functionaltests/suites/csw30/expected/post_Exception-GetDomain-parametername-bad.xml diff --git a/tests/expected/suites_csw30_post_Exception-GetDomain-valuereference-bad.xml b/tests/functionaltests/suites/csw30/expected/post_Exception-GetDomain-valuereference-bad.xml similarity index 100% rename from tests/expected/suites_csw30_post_Exception-GetDomain-valuereference-bad.xml rename to tests/functionaltests/suites/csw30/expected/post_Exception-GetDomain-valuereference-bad.xml diff --git a/tests/expected/suites_csw30_post_Exception-GetRecordById-404.xml b/tests/functionaltests/suites/csw30/expected/post_Exception-GetRecordById-404.xml similarity index 100% rename from tests/expected/suites_csw30_post_Exception-GetRecordById-404.xml rename to tests/functionaltests/suites/csw30/expected/post_Exception-GetRecordById-404.xml diff --git a/tests/expected/suites_csw30_post_Exception-GetRecordById-bad-esn.xml b/tests/functionaltests/suites/csw30/expected/post_Exception-GetRecordById-bad-esn.xml similarity index 100% rename from tests/expected/suites_csw30_post_Exception-GetRecordById-bad-esn.xml rename to tests/functionaltests/suites/csw30/expected/post_Exception-GetRecordById-bad-esn.xml diff --git a/tests/expected/suites_csw30_post_Exception-bad-xml.xml b/tests/functionaltests/suites/csw30/expected/post_Exception-bad-xml.xml similarity index 100% rename from tests/expected/suites_csw30_post_Exception-bad-xml.xml rename to tests/functionaltests/suites/csw30/expected/post_Exception-bad-xml.xml diff --git a/tests/expected/suites_csw30_post_Exception-not-xml.xml b/tests/functionaltests/suites/csw30/expected/post_Exception-not-xml.xml similarity index 100% rename from tests/expected/suites_csw30_post_Exception-not-xml.xml rename to tests/functionaltests/suites/csw30/expected/post_Exception-not-xml.xml diff --git a/tests/expected/suites_csw30_post_GetCapabilities.xml b/tests/functionaltests/suites/csw30/expected/post_GetCapabilities.xml similarity index 100% rename from tests/expected/suites_csw30_post_GetCapabilities.xml rename to tests/functionaltests/suites/csw30/expected/post_GetCapabilities.xml diff --git a/tests/expected/suites_csw30_post_GetDomain-parametername.xml b/tests/functionaltests/suites/csw30/expected/post_GetDomain-parametername.xml similarity index 100% rename from tests/expected/suites_csw30_post_GetDomain-parametername.xml rename to tests/functionaltests/suites/csw30/expected/post_GetDomain-parametername.xml diff --git a/tests/expected/suites_csw30_post_GetDomain-valuereference.xml b/tests/functionaltests/suites/csw30/expected/post_GetDomain-valuereference.xml similarity index 100% rename from tests/expected/suites_csw30_post_GetDomain-valuereference.xml rename to tests/functionaltests/suites/csw30/expected/post_GetDomain-valuereference.xml diff --git a/tests/expected/suites_csw30_post_GetRecordById-dc-full.xml b/tests/functionaltests/suites/csw30/expected/post_GetRecordById-dc-full.xml similarity index 100% rename from tests/expected/suites_csw30_post_GetRecordById-dc-full.xml rename to tests/functionaltests/suites/csw30/expected/post_GetRecordById-dc-full.xml diff --git a/tests/expected/suites_csw30_post_GetRecordById-dc.xml b/tests/functionaltests/suites/csw30/expected/post_GetRecordById-dc.xml similarity index 100% rename from tests/expected/suites_csw30_post_GetRecordById-dc.xml rename to tests/functionaltests/suites/csw30/expected/post_GetRecordById-dc.xml diff --git a/tests/functionaltests/suites/csw30/get/requests.txt b/tests/functionaltests/suites/csw30/get/requests.txt new file mode 100644 index 000000000..5b2c3dfaf --- /dev/null +++ b/tests/functionaltests/suites/csw30/get/requests.txt @@ -0,0 +1,82 @@ +GetCapabilities-base-url, +GetCapabilities-no-version,service=CSW&request=GetCapabilities +GetCapabilities,service=CSW&version=3.0.0&request=GetCapabilities +Exception-invalid-request,service=CSW&version=3.0.0&request=GetCapabilities-foo +Exception-GetDomain,service=CSW&version=3.0.0&request=GetDomain +GetDomain-parameter,service=CSW&version=3.0.0&request=GetDomain¶metername=GetRecords.ElementSetName +GetDomain-value-reference,service=CSW&version=3.0.0&request=GetDomain&valuereference=dc:title +Exception-GetDomain-value-reference,service=CSW&version=3.0.0&request=GetDomain&valuereference=dc:title2 +Exception-GetRecordById-dc.xml,service=CSW&version=3.0.0&request=GetRecordById&id=urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e +Exception-GetRecordById-404,service=CSW&version=3.0.0&request=GetRecordById&id=does_not_exist2 +OpenSearch-description,mode=opensearch&service=CSW&version=3.0.0&request=GetCapabilities +GetRepositoryItem,service=CSW&version=3.0.0&request=GetRepositoryItem&id=urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f +Exception-GetRepositoryItem-notfound,service=CSW&version=3.0.0&request=GetRepositoryItem&id=NOTFOUND +002258f0-627f-457f-b2ad-025777c77ac8,mode=opensearch&service=CSW&version=3.0.0&request=GetCapabilities +045c600d-973d-41eb-9f60-eba1b717b720,mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=Fusc%C3%A9%20Land&bbox=&time=/&outputformat=application/atom%2Bxml&startposition=1&maxrecords=&recordids= +0bbcf862-5211-4351-9988-63f8bec49c98,elementSetName=summary&outputFormat=application/atom%2Bxml&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0&SortBy=dc:identifier:A +0bdf8457-971e-4ed1-be4a-5feca4dcd8fa, +0d8bbdec-0846-42ca-8dc8-b7f4cba41d67,elementName=tns:title&request=GetRecords&service=CSW&typeNames=Record&namespace=xmlns(tns%3Dhttp://purl.org/dc/elements/1.1/)&version=3.0.0&SortBy=dc:identifier:A +0e1dca37-477a-4060-99fe-7799b52d656c,mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=lpppclq&bbox=&time=/&outputformat=application/atom%2Bxml&startposition=1&maxrecords=&recordids= +13c87956-51a4-4780-a8e9-6e0b5c0bb473,elementSetName=full&maxRecords=20&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0&SortBy=dc:identifier:A +151d982f-ebd3-4cb2-b507-a667713a1e92,acceptFormats=model/x3d%2Bxml&acceptVersions=3.0.0&request=GetCapabilities&service=CSW +1869e495-1a61-4713-8285-76d1336ee1a6,acceptVersions=3.0.0&request=GetCapabilities +1bcb42a9-538c-4f0a-9d4c-d6f10b720aa6,request=GetRecordById&service=CSW&version=3.0.0 +22f44168-2ccf-4801-ad96-204212566d56, +2499a9c9-8d33-449c-bc92-d494adfcc84d,acceptVersions=3.0.0§ions=All&request=GetCapabilities&service=CSW +27f4f39c-d92a-4e3c-b961-c6aa8c24e513,acceptFormats=application/xml&acceptVersions=3.0.0&request=GetCapabilities&service=CSW +28e569df-8596-4128-8d9a-29ad03138915,id=urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2&request=GetRecordById&service=CSW&version=3.0.0 +2b06a5c8-0df2-4af1-8d2e-a425de11c845, +2ba1418a-444d-4cce-9cfe-4c94efcf8b55,maxRecords=2&elementSetName=summary&outputFormat=application/atom%2Bxml&request=GetRecords&service=CSW&typeNames=csw3:Record&startPosition=3&namespace=xmlns(csw3%3Dhttp://www.opengis.net/cat/csw/3.0)&version=3.0.0 +397fe17a-d5b4-4f96-8cc4-4ce467ed4d0a,service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=ipsum&bbox=&time=/&outputformat=application/xml&outputschema=http://www.opengis.net/cat/csw/3.0&startposition=1&maxrecords=&recordids= +3dcd1b15-73d2-4b7d-a3e3-ff15bf14aae4,elementSetName=brief&request=GetRecords&service=CSW&typeNames=tns:Record&namespace=xmlns(tns%3Dhttp://www.opengis.net/cat/csw/3.0)&version=3.0.0&SortBy=dc:identifier:A +405e1ff1-5c75-4846-a28b-cfaff2a6921a,elementSetName=summary&recordIds=urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f,urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 +43cd6471-6ac7-45bd-8ff9-148cb2de9a52, +4566d2ec-1283-4a02-baed-a74fc5b47e37,acceptVersions=3.0.0§ions=ServiceIdentification&request=GetCapabilities&service=CSW +461bd4c5-6623-490d-9036-d91a2201e87b,acceptVersions=3.0.0§ions=Filter_Capabilities&request=GetCapabilities&service=CSW +5496894a-3877-4f62-a20b-5d7126f94925,service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=&bbox=514432,5429689,529130,5451619&time=/&outputformat=application/xml&outputschema=http://www.opengis.net/cat/csw/3.0&startposition=1&maxrecords=&recordids= +5a015f6a-bf14-4977-b1e3-6577eb0223c8,service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=&bbox=-6.17,44.79,17.92,68.41&time=/&outputformat=application/xml&outputschema=http://www.opengis.net/cat/csw/3.0&startposition=1&maxrecords=&recordids=&SortBy=dc:identifier:A +5c3a2390-1fb9-43f0-b96c-f48c7a69c990,id=urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357&outputFormat=model/vnd.collada%2Bxml&request=GetRecordById&service=CSW&version=3.0.0 +5e9e67dc-18d6-4645-8111-c6263c88a61f,acceptVersions=3.0.0§ions=OperationsMetadata&request=GetCapabilities&service=CSW +604d9379-741c-42e5-b4cf-92e56c87fa64,elementSetName=full&q=amet&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 +60e6af95-d5fc-465a-82e2-fd2e6d85e4af,request=GetRecords&service=CSW&typeNames=UnknownType&version=3.0.0 +62ad94c2-b558-4265-a427-23d6677975d6,mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=&bbox=&time=/&outputformat=application/atom%2Bxml&startposition=1&maxrecords=&recordids=uid-bc5017e6-5cc8-4b03-aee7-d88f88caba0a +6a5e247b-0961-4b8a-a0d6-35a491d9cfe7,elementSetName=undefined-view&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 +6a9d0558-9d87-495b-b999-b49a3ef1cf99, +6bd790c9-6019-4652-9c91-330a894d6700,service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=Fusc%C3%A9%20Land&bbox=&time=/&outputformat=application/xml&outputschema=http://www.opengis.net/cat/csw/3.0&startposition=1&maxrecords=&recordids= +6e9cba43-5e27-415d-adbd-a92851c2c173,acceptVersions=3.0.0&request=GetCapabilities&service=CSW +7630d230-e142-4a09-accf-f091000b90cd,id=urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493&request=GetRecordById&service=CSW&version=3.0.0 +7e82446a-b5dc-43fe-9a73-4cc1f2f2f0bf,acceptFormats=text/xml&acceptVersions=3.0.0&request=GetCapabilities&service=CSW +8025978e-1a35-4d70-80c2-e8329e0c7864, +8184ae4f-536d-4978-8b28-ad703be96967,elementSetName=brief&bbox=44.79,-6.17,68.41,17.92,urn:ogc:def:crs:EPSG::4326&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0&SortBy=dc:identifier:A +88f63a89-664f-4315-b4f8-04a0b33803a7,maxRecords=15&elementSetName=summary&q=Mauris&bbox=-6.17,44.79,17.92,68.41&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 +8987f8f0-4d93-4481-968c-a2ccbd6b8be2,id=urn:example:1461546298217&request=GetRecordById&service=CSW&version=3.0.0 +8e5fa0f6-3f29-4d1f-abe2-d9866f3def98,mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=&bbox=-180,-90,180,90&time=/&outputformat=application/atom%2Bxml&startposition=1&maxrecords=&recordids=&SortBy=dc:identifier:A +9000ec29-5649-474e-b2d6-55c00f8a52c0,acceptVersions=9999.12.31&request=GetCapabilities&service=CSW +91914d35-7bbf-45e6-9b37-5ef484869a4e,elementSetName=summary&bbox=-6.17,44.79,17.92,68.41&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0&SortBy=dc:identifier:A +92d4844d-57d5-4cf3-8f47-ba50e369dc04,elementSetName=full&q=atkovxqmf&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 +9c0e2a4b-b4e6-41c0-b630-c8c99fc89ff3,elementSetName=brief&outputSchema=urn:uuid:6a29d2a8-9651-47a6-9b14-f05d2b5644f0&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 +9d7ffac8-9798-428d-8e27-3cd12497ee6b,id=urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd&outputSchema=http://www.example.org/ns/alpha&request=GetRecordById&service=CSW&version=3.0.0 +a2f18643-e24e-4fa5-b780-6de4a2dbc814,id=urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e&outputFormat=application/atom%2Bxml&request=GetRecordById&service=CSW&version=3.0.0 +abc90c8c-5868-4405-a73e-64c849be3b2a,mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=&bbox=514432,5429689,529130,5451619&time=/&outputformat=application/atom%2Bxml&startposition=1&maxrecords=&recordids= +ad0c0571-09ed-436a-9a4f-a5de744c88fe,maxRecords=2&elementSetName=summary&request=GetRecords&service=CSW&typeNames=csw3:Record&startPosition=3&namespace=xmlns(csw3%3Dhttp://www.opengis.net/cat/csw/3.0)&version=3.0.0 +af502903-f4ee-47ee-b76e-af878d238bcc,service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=&bbox=-180,-90,180,90&time=/&outputformat=application/xml&outputschema=http://www.opengis.net/cat/csw/3.0&startposition=1&maxrecords=&recordids=&SortBy=dc:identifier:A +b2aafc3f-4f35-47bc-affd-08590972deae,mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=&bbox=-6.17,44.79,17.92,68.41&time=/&outputformat=application/atom%2Bxml&startposition=1&maxrecords=&recordids=&SortBy=dc:identifier:A +b6069623-f7d8-4021-8582-98f0aea0f763,mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=&bbox=&time=/&outputformat=application/atom%2Bxml&startposition=3&maxrecords=4&recordids=&SortBy=dc:identifier:A +b9a07a54-75a8-45bd-b341-2823600211e3,elementSetName=brief&bbox=472944,5363287,492722,5455253,urn:ogc:def:crs:EPSG::0000&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 +baa4a7d0-0c01-42b6-adc3-0d03e9949fa3,acceptVersions=3.0.0&request=getCapabilities&service=CSW +bfbe6409-f64a-4c89-acb3-50f260a5c743,elementSetName=summary&q=Fusc%C3%A9%20Land&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 +bfe20134-d1da-42ef-9c0f-8e1307bbf92b,service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=&bbox=&time=/&outputformat=application/xml&outputschema=http://www.opengis.net/cat/csw/3.0&startposition=3&maxrecords=4&recordids=&SortBy=dc:identifier:A +c03d173a-3f42-4956-89c8-1fe02c3a0873,SERVICE=CSW&Request=GetCapabilities&acceptversions=3.0.0 +cb43d8c3-e14c-4a9f-9231-4384b7dd21f3,elementName=undefined&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 +d03c6fd3-e821-4a26-b62f-d20a474e25af,acceptVersions=3.0.0§ions=ServiceProvider&request=GetCapabilities&service=CSW +d4ccbf96-a529-480e-a53d-5b88dc1dea7f,service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=&bbox=&time=/&outputformat=application/xml&outputschema=http://www.opengis.net/cat/csw/3.0&startposition=1&maxrecords=&recordids=uid-bc5017e6-5cc8-4b03-aee7-d88f88caba0a +d94c801a-1207-4897-b84a-53f3a192515b,service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=lpppclq&bbox=&time=/&outputformat=application/xml&outputschema=http://www.opengis.net/cat/csw/3.0&startposition=1&maxrecords=&recordids= +da859e34-91fc-495a-8c09-285a40c0900b,id=urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63&elementSetName=full&request=GetRecordById&service=CSW&version=3.0.0 +dc246fb8-5af5-4fda-82bb-c18b3ecd439c,mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=ipsum&bbox=&time=/&outputformat=application/atom%2Bxml&startposition=1&maxrecords=&recordids= +de016645-6d5c-4855-943c-2db07ae9f49a,mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=&bbox=&time=/&outputformat=application/atom%2Bxml&startposition=1&maxrecords=&recordids=urn%3Auuid%3A94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 +dff3ec6b-bb2d-4887-bd17-8fcf15def042,elementSetName=summary&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0&SortBy=dc:identifier:A +e38e6bfb-8ac4-4ae4-8b87-0aafbc8d3c6b,id=urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd&elementSetName=brief&request=GetRecordById&service=CSW&version=3.0.0 +e67ca935-d65d-4d8c-8302-1405333dded0, +e7704509-3441-458f-8ef0-e333c6b6043f,elementName=ns1:subject&elementSetName=brief&request=GetRecords&service=CSW&typeNames=Record&namespace=xmlns(ns1%3Dhttp://purl.org/dc/elements/1.1/)&version=3.0.0 +f1223a49-6d08-44ff-97fe-4c32cbbfad82,elementSetName=summary&maxRecords=0&q=titles&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 +f89dd4e1-3a81-4433-afd2-a3fa1bdb1e18,elementSetName=full&outputFormat=text/example&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 diff --git a/tests/suites/csw30/post/Exception-GetDomain-parametername-bad.xml b/tests/functionaltests/suites/csw30/post/Exception-GetDomain-parametername-bad.xml similarity index 100% rename from tests/suites/csw30/post/Exception-GetDomain-parametername-bad.xml rename to tests/functionaltests/suites/csw30/post/Exception-GetDomain-parametername-bad.xml diff --git a/tests/suites/csw30/post/Exception-GetDomain-valuereference-bad.xml b/tests/functionaltests/suites/csw30/post/Exception-GetDomain-valuereference-bad.xml similarity index 100% rename from tests/suites/csw30/post/Exception-GetDomain-valuereference-bad.xml rename to tests/functionaltests/suites/csw30/post/Exception-GetDomain-valuereference-bad.xml diff --git a/tests/suites/csw30/post/Exception-GetRecordById-404.xml b/tests/functionaltests/suites/csw30/post/Exception-GetRecordById-404.xml similarity index 100% rename from tests/suites/csw30/post/Exception-GetRecordById-404.xml rename to tests/functionaltests/suites/csw30/post/Exception-GetRecordById-404.xml diff --git a/tests/suites/csw30/post/Exception-GetRecordById-bad-esn.xml b/tests/functionaltests/suites/csw30/post/Exception-GetRecordById-bad-esn.xml similarity index 100% rename from tests/suites/csw30/post/Exception-GetRecordById-bad-esn.xml rename to tests/functionaltests/suites/csw30/post/Exception-GetRecordById-bad-esn.xml diff --git a/tests/suites/csw30/post/Exception-bad-xml.xml b/tests/functionaltests/suites/csw30/post/Exception-bad-xml.xml similarity index 100% rename from tests/suites/csw30/post/Exception-bad-xml.xml rename to tests/functionaltests/suites/csw30/post/Exception-bad-xml.xml diff --git a/tests/suites/csw30/post/Exception-not-xml.xml b/tests/functionaltests/suites/csw30/post/Exception-not-xml.xml similarity index 100% rename from tests/suites/csw30/post/Exception-not-xml.xml rename to tests/functionaltests/suites/csw30/post/Exception-not-xml.xml diff --git a/tests/suites/csw30/post/GetCapabilities.xml b/tests/functionaltests/suites/csw30/post/GetCapabilities.xml similarity index 100% rename from tests/suites/csw30/post/GetCapabilities.xml rename to tests/functionaltests/suites/csw30/post/GetCapabilities.xml diff --git a/tests/suites/csw30/post/GetDomain-parametername.xml b/tests/functionaltests/suites/csw30/post/GetDomain-parametername.xml similarity index 100% rename from tests/suites/csw30/post/GetDomain-parametername.xml rename to tests/functionaltests/suites/csw30/post/GetDomain-parametername.xml diff --git a/tests/suites/csw30/post/GetDomain-valuereference.xml b/tests/functionaltests/suites/csw30/post/GetDomain-valuereference.xml similarity index 100% rename from tests/suites/csw30/post/GetDomain-valuereference.xml rename to tests/functionaltests/suites/csw30/post/GetDomain-valuereference.xml diff --git a/tests/suites/csw30/post/GetRecordById-dc-full.xml b/tests/functionaltests/suites/csw30/post/GetRecordById-dc-full.xml similarity index 100% rename from tests/suites/csw30/post/GetRecordById-dc-full.xml rename to tests/functionaltests/suites/csw30/post/GetRecordById-dc-full.xml diff --git a/tests/suites/csw30/post/GetRecordById-dc.xml b/tests/functionaltests/suites/csw30/post/GetRecordById-dc.xml similarity index 100% rename from tests/suites/csw30/post/GetRecordById-dc.xml rename to tests/functionaltests/suites/csw30/post/GetRecordById-dc.xml diff --git a/tests/suites/default/default.cfg b/tests/functionaltests/suites/default/default.cfg similarity index 100% rename from tests/suites/default/default.cfg rename to tests/functionaltests/suites/default/default.cfg diff --git a/tests/expected/suites_default_get_Exception-GetRepositoryItem-notfound.xml b/tests/functionaltests/suites/default/expected/get_Exception-GetRepositoryItem-notfound.xml similarity index 100% rename from tests/expected/suites_default_get_Exception-GetRepositoryItem-notfound.xml rename to tests/functionaltests/suites/default/expected/get_Exception-GetRepositoryItem-notfound.xml diff --git a/tests/expected/suites_default_get_Exception-GetRepositoryItem-service-invalid1.xml b/tests/functionaltests/suites/default/expected/get_Exception-GetRepositoryItem-service-invalid1.xml similarity index 100% rename from tests/expected/suites_default_get_Exception-GetRepositoryItem-service-invalid1.xml rename to tests/functionaltests/suites/default/expected/get_Exception-GetRepositoryItem-service-invalid1.xml diff --git a/tests/expected/suites_default_get_Exception-GetRepositoryItem-service-invalid2.xml b/tests/functionaltests/suites/default/expected/get_Exception-GetRepositoryItem-service-invalid2.xml similarity index 100% rename from tests/expected/suites_default_get_Exception-GetRepositoryItem-service-invalid2.xml rename to tests/functionaltests/suites/default/expected/get_Exception-GetRepositoryItem-service-invalid2.xml diff --git a/tests/expected/suites_default_get_Exception-GetRepositoryItem-version-invalid.xml b/tests/functionaltests/suites/default/expected/get_Exception-GetRepositoryItem-version-invalid.xml similarity index 100% rename from tests/expected/suites_default_get_Exception-GetRepositoryItem-version-invalid.xml rename to tests/functionaltests/suites/default/expected/get_Exception-GetRepositoryItem-version-invalid.xml diff --git a/tests/expected/suites_default_get_GetCapabilities-invalid-request.xml b/tests/functionaltests/suites/default/expected/get_GetCapabilities-invalid-request.xml similarity index 100% rename from tests/expected/suites_default_get_GetCapabilities-invalid-request.xml rename to tests/functionaltests/suites/default/expected/get_GetCapabilities-invalid-request.xml diff --git a/tests/expected/suites_default_get_GetCapabilities.xml b/tests/functionaltests/suites/default/expected/get_GetCapabilities.xml similarity index 100% rename from tests/expected/suites_default_get_GetCapabilities.xml rename to tests/functionaltests/suites/default/expected/get_GetCapabilities.xml diff --git a/tests/expected/suites_default_get_GetRecords-all.xml b/tests/functionaltests/suites/default/expected/get_GetRecords-all.xml similarity index 100% rename from tests/expected/suites_default_get_GetRecords-all.xml rename to tests/functionaltests/suites/default/expected/get_GetRecords-all.xml diff --git a/tests/expected/suites_default_get_GetRecords-empty-maxrecords.xml b/tests/functionaltests/suites/default/expected/get_GetRecords-empty-maxrecords.xml similarity index 100% rename from tests/expected/suites_default_get_GetRecords-empty-maxrecords.xml rename to tests/functionaltests/suites/default/expected/get_GetRecords-empty-maxrecords.xml diff --git a/tests/expected/suites_default_get_GetRecords-filter-cql-title-or-abstract-with-spaces.xml b/tests/functionaltests/suites/default/expected/get_GetRecords-filter-cql-title-or-abstract-with-spaces.xml similarity index 100% rename from tests/expected/suites_default_get_GetRecords-filter-cql-title-or-abstract-with-spaces.xml rename to tests/functionaltests/suites/default/expected/get_GetRecords-filter-cql-title-or-abstract-with-spaces.xml diff --git a/tests/expected/suites_default_get_GetRecords-filter-cql-title-or-abstract.xml b/tests/functionaltests/suites/default/expected/get_GetRecords-filter-cql-title-or-abstract.xml similarity index 100% rename from tests/expected/suites_default_get_GetRecords-filter-cql-title-or-abstract.xml rename to tests/functionaltests/suites/default/expected/get_GetRecords-filter-cql-title-or-abstract.xml diff --git a/tests/expected/suites_default_get_GetRecords-filter-cql-title-with-spaces-or-abstract-with-spaces.xml b/tests/functionaltests/suites/default/expected/get_GetRecords-filter-cql-title-with-spaces-or-abstract-with-spaces.xml similarity index 100% rename from tests/expected/suites_default_get_GetRecords-filter-cql-title-with-spaces-or-abstract-with-spaces.xml rename to tests/functionaltests/suites/default/expected/get_GetRecords-filter-cql-title-with-spaces-or-abstract-with-spaces.xml diff --git a/tests/expected/suites_default_get_GetRecords-filter-cql-title-with-spaces-or-abstract.xml b/tests/functionaltests/suites/default/expected/get_GetRecords-filter-cql-title-with-spaces-or-abstract.xml similarity index 100% rename from tests/expected/suites_default_get_GetRecords-filter-cql-title-with-spaces-or-abstract.xml rename to tests/functionaltests/suites/default/expected/get_GetRecords-filter-cql-title-with-spaces-or-abstract.xml diff --git a/tests/expected/suites_default_get_GetRecords-filter-cql-title-with-spaces.xml b/tests/functionaltests/suites/default/expected/get_GetRecords-filter-cql-title-with-spaces.xml similarity index 100% rename from tests/expected/suites_default_get_GetRecords-filter-cql-title-with-spaces.xml rename to tests/functionaltests/suites/default/expected/get_GetRecords-filter-cql-title-with-spaces.xml diff --git a/tests/expected/suites_default_get_GetRecords-filter-cql-title.xml b/tests/functionaltests/suites/default/expected/get_GetRecords-filter-cql-title.xml similarity index 100% rename from tests/expected/suites_default_get_GetRecords-filter-cql-title.xml rename to tests/functionaltests/suites/default/expected/get_GetRecords-filter-cql-title.xml diff --git a/tests/expected/suites_default_get_GetRecords-filter.xml b/tests/functionaltests/suites/default/expected/get_GetRecords-filter.xml similarity index 100% rename from tests/expected/suites_default_get_GetRecords-filter.xml rename to tests/functionaltests/suites/default/expected/get_GetRecords-filter.xml diff --git a/tests/expected/suites_default_get_GetRecords-sortby-asc.xml b/tests/functionaltests/suites/default/expected/get_GetRecords-sortby-asc.xml similarity index 100% rename from tests/expected/suites_default_get_GetRecords-sortby-asc.xml rename to tests/functionaltests/suites/default/expected/get_GetRecords-sortby-asc.xml diff --git a/tests/expected/suites_default_get_GetRecords-sortby-desc.xml b/tests/functionaltests/suites/default/expected/get_GetRecords-sortby-desc.xml similarity index 100% rename from tests/expected/suites_default_get_GetRecords-sortby-desc.xml rename to tests/functionaltests/suites/default/expected/get_GetRecords-sortby-desc.xml diff --git a/tests/expected/suites_default_get_GetRecords-sortby-invalid-order.xml b/tests/functionaltests/suites/default/expected/get_GetRecords-sortby-invalid-order.xml similarity index 100% rename from tests/expected/suites_default_get_GetRecords-sortby-invalid-order.xml rename to tests/functionaltests/suites/default/expected/get_GetRecords-sortby-invalid-order.xml diff --git a/tests/expected/suites_default_get_GetRecords-sortby-invalid-propertyname.xml b/tests/functionaltests/suites/default/expected/get_GetRecords-sortby-invalid-propertyname.xml similarity index 100% rename from tests/expected/suites_default_get_GetRecords-sortby-invalid-propertyname.xml rename to tests/functionaltests/suites/default/expected/get_GetRecords-sortby-invalid-propertyname.xml diff --git a/tests/expected/suites_default_get_GetRepositoryItem.xml b/tests/functionaltests/suites/default/expected/get_GetRepositoryItem.xml similarity index 100% rename from tests/expected/suites_default_get_GetRepositoryItem.xml rename to tests/functionaltests/suites/default/expected/get_GetRepositoryItem.xml diff --git a/tests/expected/suites_default_post_DescribeRecord-json.xml b/tests/functionaltests/suites/default/expected/post_DescribeRecord-json.xml similarity index 100% rename from tests/expected/suites_default_post_DescribeRecord-json.xml rename to tests/functionaltests/suites/default/expected/post_DescribeRecord-json.xml diff --git a/tests/expected/suites_default_post_DescribeRecord.xml b/tests/functionaltests/suites/default/expected/post_DescribeRecord.xml similarity index 100% rename from tests/expected/suites_default_post_DescribeRecord.xml rename to tests/functionaltests/suites/default/expected/post_DescribeRecord.xml diff --git a/tests/expected/suites_default_post_Exception-GetRecords-badsrsname.xml b/tests/functionaltests/suites/default/expected/post_Exception-GetRecords-badsrsname.xml similarity index 100% rename from tests/expected/suites_default_post_Exception-GetRecords-badsrsname.xml rename to tests/functionaltests/suites/default/expected/post_Exception-GetRecords-badsrsname.xml diff --git a/tests/expected/suites_default_post_Exception-GetRecords-elementname.xml b/tests/functionaltests/suites/default/expected/post_Exception-GetRecords-elementname.xml similarity index 100% rename from tests/expected/suites_default_post_Exception-GetRecords-elementname.xml rename to tests/functionaltests/suites/default/expected/post_Exception-GetRecords-elementname.xml diff --git a/tests/expected/suites_default_post_Exception-GetRecords-invalid-xml.xml b/tests/functionaltests/suites/default/expected/post_Exception-GetRecords-invalid-xml.xml similarity index 100% rename from tests/expected/suites_default_post_Exception-GetRecords-invalid-xml.xml rename to tests/functionaltests/suites/default/expected/post_Exception-GetRecords-invalid-xml.xml diff --git a/tests/expected/suites_default_post_GetCapabilities-SOAP.xml b/tests/functionaltests/suites/default/expected/post_GetCapabilities-SOAP.xml similarity index 100% rename from tests/expected/suites_default_post_GetCapabilities-SOAP.xml rename to tests/functionaltests/suites/default/expected/post_GetCapabilities-SOAP.xml diff --git a/tests/expected/suites_default_post_GetCapabilities-sections.xml b/tests/functionaltests/suites/default/expected/post_GetCapabilities-sections.xml similarity index 100% rename from tests/expected/suites_default_post_GetCapabilities-sections.xml rename to tests/functionaltests/suites/default/expected/post_GetCapabilities-sections.xml diff --git a/tests/expected/suites_default_post_GetCapabilities-updatesequence.xml b/tests/functionaltests/suites/default/expected/post_GetCapabilities-updatesequence.xml similarity index 100% rename from tests/expected/suites_default_post_GetCapabilities-updatesequence.xml rename to tests/functionaltests/suites/default/expected/post_GetCapabilities-updatesequence.xml diff --git a/tests/expected/suites_default_post_GetCapabilities.xml b/tests/functionaltests/suites/default/expected/post_GetCapabilities.xml similarity index 100% rename from tests/expected/suites_default_post_GetCapabilities.xml rename to tests/functionaltests/suites/default/expected/post_GetCapabilities.xml diff --git a/tests/expected/suites_default_post_GetDomain-parameter.xml b/tests/functionaltests/suites/default/expected/post_GetDomain-parameter.xml similarity index 100% rename from tests/expected/suites_default_post_GetDomain-parameter.xml rename to tests/functionaltests/suites/default/expected/post_GetDomain-parameter.xml diff --git a/tests/expected/suites_default_post_GetDomain-property.xml b/tests/functionaltests/suites/default/expected/post_GetDomain-property.xml similarity index 100% rename from tests/expected/suites_default_post_GetDomain-property.xml rename to tests/functionaltests/suites/default/expected/post_GetDomain-property.xml diff --git a/tests/expected/suites_default_post_GetRecordById-json.xml b/tests/functionaltests/suites/default/expected/post_GetRecordById-json.xml similarity index 100% rename from tests/expected/suites_default_post_GetRecordById-json.xml rename to tests/functionaltests/suites/default/expected/post_GetRecordById-json.xml diff --git a/tests/expected/suites_default_post_GetRecordById.xml b/tests/functionaltests/suites/default/expected/post_GetRecordById.xml similarity index 100% rename from tests/expected/suites_default_post_GetRecordById.xml rename to tests/functionaltests/suites/default/expected/post_GetRecordById.xml diff --git a/tests/expected/suites_default_post_GetRecords-all-json.xml b/tests/functionaltests/suites/default/expected/post_GetRecords-all-json.xml similarity index 100% rename from tests/expected/suites_default_post_GetRecords-all-json.xml rename to tests/functionaltests/suites/default/expected/post_GetRecords-all-json.xml diff --git a/tests/expected/suites_default_post_GetRecords-all-resulttype-hits.xml b/tests/functionaltests/suites/default/expected/post_GetRecords-all-resulttype-hits.xml similarity index 100% rename from tests/expected/suites_default_post_GetRecords-all-resulttype-hits.xml rename to tests/functionaltests/suites/default/expected/post_GetRecords-all-resulttype-hits.xml diff --git a/tests/expected/suites_default_post_GetRecords-all-resulttype-validate.xml b/tests/functionaltests/suites/default/expected/post_GetRecords-all-resulttype-validate.xml similarity index 100% rename from tests/expected/suites_default_post_GetRecords-all-resulttype-validate.xml rename to tests/functionaltests/suites/default/expected/post_GetRecords-all-resulttype-validate.xml diff --git a/tests/expected/suites_default_post_GetRecords-all-sortby-bbox.xml b/tests/functionaltests/suites/default/expected/post_GetRecords-all-sortby-bbox.xml similarity index 100% rename from tests/expected/suites_default_post_GetRecords-all-sortby-bbox.xml rename to tests/functionaltests/suites/default/expected/post_GetRecords-all-sortby-bbox.xml diff --git a/tests/expected/suites_default_post_GetRecords-all.xml b/tests/functionaltests/suites/default/expected/post_GetRecords-all.xml similarity index 100% rename from tests/expected/suites_default_post_GetRecords-all.xml rename to tests/functionaltests/suites/default/expected/post_GetRecords-all.xml diff --git a/tests/expected/suites_default_post_GetRecords-bbox-filter-crs84.xml b/tests/functionaltests/suites/default/expected/post_GetRecords-bbox-filter-crs84.xml similarity index 100% rename from tests/expected/suites_default_post_GetRecords-bbox-filter-crs84.xml rename to tests/functionaltests/suites/default/expected/post_GetRecords-bbox-filter-crs84.xml diff --git a/tests/expected/suites_default_post_GetRecords-cql-title-and-abstract.xml b/tests/functionaltests/suites/default/expected/post_GetRecords-cql-title-and-abstract.xml similarity index 100% rename from tests/expected/suites_default_post_GetRecords-cql-title-and-abstract.xml rename to tests/functionaltests/suites/default/expected/post_GetRecords-cql-title-and-abstract.xml diff --git a/tests/expected/suites_default_post_GetRecords-cql-title.xml b/tests/functionaltests/suites/default/expected/post_GetRecords-cql-title.xml similarity index 100% rename from tests/expected/suites_default_post_GetRecords-cql-title.xml rename to tests/functionaltests/suites/default/expected/post_GetRecords-cql-title.xml diff --git a/tests/expected/suites_default_post_GetRecords-distributedsearch.xml b/tests/functionaltests/suites/default/expected/post_GetRecords-distributedsearch.xml similarity index 100% rename from tests/expected/suites_default_post_GetRecords-distributedsearch.xml rename to tests/functionaltests/suites/default/expected/post_GetRecords-distributedsearch.xml diff --git a/tests/expected/suites_default_post_GetRecords-elementname.xml b/tests/functionaltests/suites/default/expected/post_GetRecords-elementname.xml similarity index 100% rename from tests/expected/suites_default_post_GetRecords-elementname.xml rename to tests/functionaltests/suites/default/expected/post_GetRecords-elementname.xml diff --git a/tests/expected/suites_default_post_GetRecords-end.xml b/tests/functionaltests/suites/default/expected/post_GetRecords-end.xml similarity index 100% rename from tests/expected/suites_default_post_GetRecords-end.xml rename to tests/functionaltests/suites/default/expected/post_GetRecords-end.xml diff --git a/tests/expected/suites_default_post_GetRecords-filter-and-bbox-freetext.xml b/tests/functionaltests/suites/default/expected/post_GetRecords-filter-and-bbox-freetext.xml similarity index 100% rename from tests/expected/suites_default_post_GetRecords-filter-and-bbox-freetext.xml rename to tests/functionaltests/suites/default/expected/post_GetRecords-filter-and-bbox-freetext.xml diff --git a/tests/expected/suites_default_post_GetRecords-filter-and-nested-or.xml b/tests/functionaltests/suites/default/expected/post_GetRecords-filter-and-nested-or.xml similarity index 100% rename from tests/expected/suites_default_post_GetRecords-filter-and-nested-or.xml rename to tests/functionaltests/suites/default/expected/post_GetRecords-filter-and-nested-or.xml diff --git a/tests/expected/suites_default_post_GetRecords-filter-and-nested-or2.xml b/tests/functionaltests/suites/default/expected/post_GetRecords-filter-and-nested-or2.xml similarity index 100% rename from tests/expected/suites_default_post_GetRecords-filter-and-nested-or2.xml rename to tests/functionaltests/suites/default/expected/post_GetRecords-filter-and-nested-or2.xml diff --git a/tests/expected/suites_default_post_GetRecords-filter-anytext-and-not.xml b/tests/functionaltests/suites/default/expected/post_GetRecords-filter-anytext-and-not.xml similarity index 100% rename from tests/expected/suites_default_post_GetRecords-filter-anytext-and-not.xml rename to tests/functionaltests/suites/default/expected/post_GetRecords-filter-anytext-and-not.xml diff --git a/tests/expected/suites_default_post_GetRecords-filter-anytext-equal.xml b/tests/functionaltests/suites/default/expected/post_GetRecords-filter-anytext-equal.xml similarity index 100% rename from tests/expected/suites_default_post_GetRecords-filter-anytext-equal.xml rename to tests/functionaltests/suites/default/expected/post_GetRecords-filter-anytext-equal.xml diff --git a/tests/expected/suites_default_post_GetRecords-filter-anytext.xml b/tests/functionaltests/suites/default/expected/post_GetRecords-filter-anytext.xml similarity index 100% rename from tests/expected/suites_default_post_GetRecords-filter-anytext.xml rename to tests/functionaltests/suites/default/expected/post_GetRecords-filter-anytext.xml diff --git a/tests/expected/suites_default_post_GetRecords-filter-bbox-reproject.xml b/tests/functionaltests/suites/default/expected/post_GetRecords-filter-bbox-reproject.xml similarity index 100% rename from tests/expected/suites_default_post_GetRecords-filter-bbox-reproject.xml rename to tests/functionaltests/suites/default/expected/post_GetRecords-filter-bbox-reproject.xml diff --git a/tests/expected/suites_default_post_GetRecords-filter-bbox-sortby.xml b/tests/functionaltests/suites/default/expected/post_GetRecords-filter-bbox-sortby.xml similarity index 100% rename from tests/expected/suites_default_post_GetRecords-filter-bbox-sortby.xml rename to tests/functionaltests/suites/default/expected/post_GetRecords-filter-bbox-sortby.xml diff --git a/tests/expected/suites_default_post_GetRecords-filter-bbox.xml b/tests/functionaltests/suites/default/expected/post_GetRecords-filter-bbox.xml similarity index 100% rename from tests/expected/suites_default_post_GetRecords-filter-bbox.xml rename to tests/functionaltests/suites/default/expected/post_GetRecords-filter-bbox.xml diff --git a/tests/expected/suites_default_post_GetRecords-filter-between.xml b/tests/functionaltests/suites/default/expected/post_GetRecords-filter-between.xml similarity index 100% rename from tests/expected/suites_default_post_GetRecords-filter-between.xml rename to tests/functionaltests/suites/default/expected/post_GetRecords-filter-between.xml diff --git a/tests/expected/suites_default_post_GetRecords-filter-function-bad.xml b/tests/functionaltests/suites/default/expected/post_GetRecords-filter-function-bad.xml similarity index 100% rename from tests/expected/suites_default_post_GetRecords-filter-function-bad.xml rename to tests/functionaltests/suites/default/expected/post_GetRecords-filter-function-bad.xml diff --git a/tests/expected/suites_default_post_GetRecords-filter-function.xml b/tests/functionaltests/suites/default/expected/post_GetRecords-filter-function.xml similarity index 100% rename from tests/expected/suites_default_post_GetRecords-filter-function.xml rename to tests/functionaltests/suites/default/expected/post_GetRecords-filter-function.xml diff --git a/tests/expected/suites_default_post_GetRecords-filter-not-bbox.xml b/tests/functionaltests/suites/default/expected/post_GetRecords-filter-not-bbox.xml similarity index 100% rename from tests/expected/suites_default_post_GetRecords-filter-not-bbox.xml rename to tests/functionaltests/suites/default/expected/post_GetRecords-filter-not-bbox.xml diff --git a/tests/expected/suites_default_post_GetRecords-filter-or-bbox-freetext.xml b/tests/functionaltests/suites/default/expected/post_GetRecords-filter-or-bbox-freetext.xml similarity index 100% rename from tests/expected/suites_default_post_GetRecords-filter-or-bbox-freetext.xml rename to tests/functionaltests/suites/default/expected/post_GetRecords-filter-or-bbox-freetext.xml diff --git a/tests/expected/suites_default_post_GetRecords-filter-or-nested-and.xml b/tests/functionaltests/suites/default/expected/post_GetRecords-filter-or-nested-and.xml similarity index 100% rename from tests/expected/suites_default_post_GetRecords-filter-or-nested-and.xml rename to tests/functionaltests/suites/default/expected/post_GetRecords-filter-or-nested-and.xml diff --git a/tests/expected/suites_default_post_GetRecords-filter-or-title-abstract.xml b/tests/functionaltests/suites/default/expected/post_GetRecords-filter-or-title-abstract.xml similarity index 100% rename from tests/expected/suites_default_post_GetRecords-filter-or-title-abstract.xml rename to tests/functionaltests/suites/default/expected/post_GetRecords-filter-or-title-abstract.xml diff --git a/tests/expected/suites_default_post_GetRecords-maxrecords.xml b/tests/functionaltests/suites/default/expected/post_GetRecords-maxrecords.xml similarity index 100% rename from tests/expected/suites_default_post_GetRecords-maxrecords.xml rename to tests/functionaltests/suites/default/expected/post_GetRecords-maxrecords.xml diff --git a/tests/expected/suites_default_post_GetRecords-requestid.xml b/tests/functionaltests/suites/default/expected/post_GetRecords-requestid.xml similarity index 100% rename from tests/expected/suites_default_post_GetRecords-requestid.xml rename to tests/functionaltests/suites/default/expected/post_GetRecords-requestid.xml diff --git a/tests/expected/suites_default_post_Harvest-default.xml b/tests/functionaltests/suites/default/expected/post_Harvest-default.xml similarity index 100% rename from tests/expected/suites_default_post_Harvest-default.xml rename to tests/functionaltests/suites/default/expected/post_Harvest-default.xml diff --git a/tests/expected/suites_default_post_Harvest-response-handler.xml b/tests/functionaltests/suites/default/expected/post_Harvest-response-handler.xml similarity index 100% rename from tests/expected/suites_default_post_Harvest-response-handler.xml rename to tests/functionaltests/suites/default/expected/post_Harvest-response-handler.xml diff --git a/tests/expected/suites_default_post_Transaction-delete.xml b/tests/functionaltests/suites/default/expected/post_Transaction-delete.xml similarity index 100% rename from tests/expected/suites_default_post_Transaction-delete.xml rename to tests/functionaltests/suites/default/expected/post_Transaction-delete.xml diff --git a/tests/expected/suites_default_post_Transaction-insert.xml b/tests/functionaltests/suites/default/expected/post_Transaction-insert.xml similarity index 100% rename from tests/expected/suites_default_post_Transaction-insert.xml rename to tests/functionaltests/suites/default/expected/post_Transaction-insert.xml diff --git a/tests/expected/suites_default_post_Transaction-update-full.xml b/tests/functionaltests/suites/default/expected/post_Transaction-update-full.xml similarity index 100% rename from tests/expected/suites_default_post_Transaction-update-full.xml rename to tests/functionaltests/suites/default/expected/post_Transaction-update-full.xml diff --git a/tests/expected/suites_default_post_Transaction-update-recordproperty.xml b/tests/functionaltests/suites/default/expected/post_Transaction-update-recordproperty.xml similarity index 100% rename from tests/expected/suites_default_post_Transaction-update-recordproperty.xml rename to tests/functionaltests/suites/default/expected/post_Transaction-update-recordproperty.xml diff --git a/tests/functionaltests/suites/default/get/requests.txt b/tests/functionaltests/suites/default/get/requests.txt new file mode 100644 index 000000000..299790a0f --- /dev/null +++ b/tests/functionaltests/suites/default/get/requests.txt @@ -0,0 +1,20 @@ +GetCapabilities,service=CSW&version=2.0.2&request=GetCapabilities +GetCapabilities-invalid-request,service=CSW&version=2.0.2&request=GetCapabilitiese +GetRecords-all,service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full +GetRecords-sortby-asc,service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&sortby=dc:title:A +GetRecords-sortby-desc,service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&sortby=dc:title:D +GetRecords-sortby-invalid-propertyname,service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&sortby=dc:titlei:A +GetRecords-sortby-invalid-order,service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&sortby=dc:title:FOO +GetRecords-filter,service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&constraintlanguage=FILTER&constraint=%3Cogc%3AFilter%20xmlns%3Aogc%3D%22http%3A%2F%2Fwww.opengis.net%2Fogc%22%3E%3Cogc%3APropertyIsEqualTo%3E%3Cogc%3APropertyName%3Edc%3Atitle%3C%2Fogc%3APropertyName%3E%3Cogc%3ALiteral%3ELorem%20ipsum%3C%2Fogc%3ALiteral%3E%3C%2Fogc%3APropertyIsEqualTo%3E%3C%2Fogc%3AFilter%3E +GetRecords-filter-cql-title,service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&constraintlanguage=CQL_TEXT&constraint=dc%3Atitle%20like%20%27%25lor%25%27 +GetRecords-filter-cql-title-with-spaces,service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&constraintlanguage=CQL_TEXT&constraint=dc%3Atitle%20like%20%27%25Lorem%20ipsum%25%27 +GetRecords-filter-cql-title-or-abstract,service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&constraintlanguage=CQL_TEXT&constraint=dc%3Atitle%20like%20%27%25lor%25%27%20or%20dct%3Aabstract%20like%20%27%25pharetra%25%27 +GetRecords-filter-cql-title-with-spaces-or-abstract,service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&constraintlanguage=CQL_TEXT&constraint=dc%3Atitle%20like%20%27%25dolor%20sit%25%27%20or%20dct%3Aabstract%20like%20%27%25pharetra%25%27 +GetRecords-filter-cql-title-or-abstract-with-spaces,service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&constraintlanguage=CQL_TEXT&constraint=dc%3Atitle%20like%20%27%25lor%25%27%20or%20dct%3Aabstract%20like%20%27%25pharetra%20in%25%27 +GetRecords-filter-cql-title-with-spaces-or-abstract-with-spaces,service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&constraintlanguage=CQL_TEXT&constraint=dc%3Atitle%20like%20%27%25dolor%20sit%25%27%20or%20dct%3Aabstract%20like%20%27%25pharetra%20in%25%27 +GetRecords-empty-maxrecords,service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&maxrecords= +GetRepositoryItem,service=CSW&version=2.0.2&request=GetRepositoryItem&id=urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 +Exception-GetRepositoryItem-notfound,service=CSW&version=2.0.2&request=GetRepositoryItem&id=NOTFOUND +Exception-GetRepositoryItem-service-invalid1,service=CSW%00&version=2.0.2&request=GetRepositoryItem&id=123 +Exception-GetRepositoryItem-service-invalid2,service=CSW%00'&version=2.0.2&request=GetRepositoryItem&id=123 +Exception-GetRepositoryItem-version-invalid,service=CSW&version=2.0.2'&request=GetRepositoryItem&id=123 diff --git a/tests/suites/default/post/DescribeRecord-json.xml b/tests/functionaltests/suites/default/post/DescribeRecord-json.xml similarity index 100% rename from tests/suites/default/post/DescribeRecord-json.xml rename to tests/functionaltests/suites/default/post/DescribeRecord-json.xml diff --git a/tests/suites/default/post/DescribeRecord.xml b/tests/functionaltests/suites/default/post/DescribeRecord.xml similarity index 100% rename from tests/suites/default/post/DescribeRecord.xml rename to tests/functionaltests/suites/default/post/DescribeRecord.xml diff --git a/tests/suites/default/post/Exception-GetRecords-badsrsname.xml b/tests/functionaltests/suites/default/post/Exception-GetRecords-badsrsname.xml similarity index 100% rename from tests/suites/default/post/Exception-GetRecords-badsrsname.xml rename to tests/functionaltests/suites/default/post/Exception-GetRecords-badsrsname.xml diff --git a/tests/suites/default/post/Exception-GetRecords-elementname.xml b/tests/functionaltests/suites/default/post/Exception-GetRecords-elementname.xml similarity index 100% rename from tests/suites/default/post/Exception-GetRecords-elementname.xml rename to tests/functionaltests/suites/default/post/Exception-GetRecords-elementname.xml diff --git a/tests/suites/default/post/Exception-GetRecords-invalid-xml.xml b/tests/functionaltests/suites/default/post/Exception-GetRecords-invalid-xml.xml similarity index 100% rename from tests/suites/default/post/Exception-GetRecords-invalid-xml.xml rename to tests/functionaltests/suites/default/post/Exception-GetRecords-invalid-xml.xml diff --git a/tests/suites/default/post/GetCapabilities-SOAP.xml b/tests/functionaltests/suites/default/post/GetCapabilities-SOAP.xml similarity index 100% rename from tests/suites/default/post/GetCapabilities-SOAP.xml rename to tests/functionaltests/suites/default/post/GetCapabilities-SOAP.xml diff --git a/tests/suites/default/post/GetCapabilities-sections.xml b/tests/functionaltests/suites/default/post/GetCapabilities-sections.xml similarity index 100% rename from tests/suites/default/post/GetCapabilities-sections.xml rename to tests/functionaltests/suites/default/post/GetCapabilities-sections.xml diff --git a/tests/suites/default/post/GetCapabilities-updatesequence.xml b/tests/functionaltests/suites/default/post/GetCapabilities-updatesequence.xml similarity index 100% rename from tests/suites/default/post/GetCapabilities-updatesequence.xml rename to tests/functionaltests/suites/default/post/GetCapabilities-updatesequence.xml diff --git a/tests/suites/default/post/GetCapabilities.xml b/tests/functionaltests/suites/default/post/GetCapabilities.xml similarity index 100% rename from tests/suites/default/post/GetCapabilities.xml rename to tests/functionaltests/suites/default/post/GetCapabilities.xml diff --git a/tests/suites/default/post/GetDomain-parameter.xml b/tests/functionaltests/suites/default/post/GetDomain-parameter.xml similarity index 100% rename from tests/suites/default/post/GetDomain-parameter.xml rename to tests/functionaltests/suites/default/post/GetDomain-parameter.xml diff --git a/tests/suites/default/post/GetDomain-property.xml b/tests/functionaltests/suites/default/post/GetDomain-property.xml similarity index 100% rename from tests/suites/default/post/GetDomain-property.xml rename to tests/functionaltests/suites/default/post/GetDomain-property.xml diff --git a/tests/suites/default/post/GetRecordById-json.xml b/tests/functionaltests/suites/default/post/GetRecordById-json.xml similarity index 100% rename from tests/suites/default/post/GetRecordById-json.xml rename to tests/functionaltests/suites/default/post/GetRecordById-json.xml diff --git a/tests/suites/default/post/GetRecordById.xml b/tests/functionaltests/suites/default/post/GetRecordById.xml similarity index 100% rename from tests/suites/default/post/GetRecordById.xml rename to tests/functionaltests/suites/default/post/GetRecordById.xml diff --git a/tests/suites/default/post/GetRecords-all-json.xml b/tests/functionaltests/suites/default/post/GetRecords-all-json.xml similarity index 100% rename from tests/suites/default/post/GetRecords-all-json.xml rename to tests/functionaltests/suites/default/post/GetRecords-all-json.xml diff --git a/tests/suites/default/post/GetRecords-all-resulttype-hits.xml b/tests/functionaltests/suites/default/post/GetRecords-all-resulttype-hits.xml similarity index 100% rename from tests/suites/default/post/GetRecords-all-resulttype-hits.xml rename to tests/functionaltests/suites/default/post/GetRecords-all-resulttype-hits.xml diff --git a/tests/suites/default/post/GetRecords-all-resulttype-validate.xml b/tests/functionaltests/suites/default/post/GetRecords-all-resulttype-validate.xml similarity index 100% rename from tests/suites/default/post/GetRecords-all-resulttype-validate.xml rename to tests/functionaltests/suites/default/post/GetRecords-all-resulttype-validate.xml diff --git a/tests/suites/default/post/GetRecords-all-sortby-bbox.xml b/tests/functionaltests/suites/default/post/GetRecords-all-sortby-bbox.xml similarity index 100% rename from tests/suites/default/post/GetRecords-all-sortby-bbox.xml rename to tests/functionaltests/suites/default/post/GetRecords-all-sortby-bbox.xml diff --git a/tests/suites/default/post/GetRecords-all.xml b/tests/functionaltests/suites/default/post/GetRecords-all.xml similarity index 100% rename from tests/suites/default/post/GetRecords-all.xml rename to tests/functionaltests/suites/default/post/GetRecords-all.xml diff --git a/tests/suites/default/post/GetRecords-bbox-filter-crs84.xml b/tests/functionaltests/suites/default/post/GetRecords-bbox-filter-crs84.xml similarity index 100% rename from tests/suites/default/post/GetRecords-bbox-filter-crs84.xml rename to tests/functionaltests/suites/default/post/GetRecords-bbox-filter-crs84.xml diff --git a/tests/suites/default/post/GetRecords-cql-title-and-abstract.xml b/tests/functionaltests/suites/default/post/GetRecords-cql-title-and-abstract.xml similarity index 100% rename from tests/suites/default/post/GetRecords-cql-title-and-abstract.xml rename to tests/functionaltests/suites/default/post/GetRecords-cql-title-and-abstract.xml diff --git a/tests/suites/default/post/GetRecords-cql-title.xml b/tests/functionaltests/suites/default/post/GetRecords-cql-title.xml similarity index 100% rename from tests/suites/default/post/GetRecords-cql-title.xml rename to tests/functionaltests/suites/default/post/GetRecords-cql-title.xml diff --git a/tests/suites/default/post/GetRecords-distributedsearch.xml b/tests/functionaltests/suites/default/post/GetRecords-distributedsearch.xml similarity index 100% rename from tests/suites/default/post/GetRecords-distributedsearch.xml rename to tests/functionaltests/suites/default/post/GetRecords-distributedsearch.xml diff --git a/tests/suites/default/post/GetRecords-elementname.xml b/tests/functionaltests/suites/default/post/GetRecords-elementname.xml similarity index 100% rename from tests/suites/default/post/GetRecords-elementname.xml rename to tests/functionaltests/suites/default/post/GetRecords-elementname.xml diff --git a/tests/suites/default/post/GetRecords-end.xml b/tests/functionaltests/suites/default/post/GetRecords-end.xml similarity index 100% rename from tests/suites/default/post/GetRecords-end.xml rename to tests/functionaltests/suites/default/post/GetRecords-end.xml diff --git a/tests/suites/default/post/GetRecords-filter-and-bbox-freetext.xml b/tests/functionaltests/suites/default/post/GetRecords-filter-and-bbox-freetext.xml similarity index 100% rename from tests/suites/default/post/GetRecords-filter-and-bbox-freetext.xml rename to tests/functionaltests/suites/default/post/GetRecords-filter-and-bbox-freetext.xml diff --git a/tests/suites/default/post/GetRecords-filter-and-nested-or.xml b/tests/functionaltests/suites/default/post/GetRecords-filter-and-nested-or.xml similarity index 100% rename from tests/suites/default/post/GetRecords-filter-and-nested-or.xml rename to tests/functionaltests/suites/default/post/GetRecords-filter-and-nested-or.xml diff --git a/tests/suites/default/post/GetRecords-filter-and-nested-or2.xml b/tests/functionaltests/suites/default/post/GetRecords-filter-and-nested-or2.xml similarity index 100% rename from tests/suites/default/post/GetRecords-filter-and-nested-or2.xml rename to tests/functionaltests/suites/default/post/GetRecords-filter-and-nested-or2.xml diff --git a/tests/suites/default/post/GetRecords-filter-anytext-and-not.xml b/tests/functionaltests/suites/default/post/GetRecords-filter-anytext-and-not.xml similarity index 100% rename from tests/suites/default/post/GetRecords-filter-anytext-and-not.xml rename to tests/functionaltests/suites/default/post/GetRecords-filter-anytext-and-not.xml diff --git a/tests/suites/default/post/GetRecords-filter-anytext-equal.xml b/tests/functionaltests/suites/default/post/GetRecords-filter-anytext-equal.xml similarity index 100% rename from tests/suites/default/post/GetRecords-filter-anytext-equal.xml rename to tests/functionaltests/suites/default/post/GetRecords-filter-anytext-equal.xml diff --git a/tests/suites/default/post/GetRecords-filter-anytext.xml b/tests/functionaltests/suites/default/post/GetRecords-filter-anytext.xml similarity index 100% rename from tests/suites/default/post/GetRecords-filter-anytext.xml rename to tests/functionaltests/suites/default/post/GetRecords-filter-anytext.xml diff --git a/tests/suites/default/post/GetRecords-filter-bbox-reproject.xml b/tests/functionaltests/suites/default/post/GetRecords-filter-bbox-reproject.xml similarity index 100% rename from tests/suites/default/post/GetRecords-filter-bbox-reproject.xml rename to tests/functionaltests/suites/default/post/GetRecords-filter-bbox-reproject.xml diff --git a/tests/suites/default/post/GetRecords-filter-bbox-sortby.xml b/tests/functionaltests/suites/default/post/GetRecords-filter-bbox-sortby.xml similarity index 100% rename from tests/suites/default/post/GetRecords-filter-bbox-sortby.xml rename to tests/functionaltests/suites/default/post/GetRecords-filter-bbox-sortby.xml diff --git a/tests/suites/default/post/GetRecords-filter-bbox.xml b/tests/functionaltests/suites/default/post/GetRecords-filter-bbox.xml similarity index 100% rename from tests/suites/default/post/GetRecords-filter-bbox.xml rename to tests/functionaltests/suites/default/post/GetRecords-filter-bbox.xml diff --git a/tests/suites/default/post/GetRecords-filter-between.xml b/tests/functionaltests/suites/default/post/GetRecords-filter-between.xml similarity index 100% rename from tests/suites/default/post/GetRecords-filter-between.xml rename to tests/functionaltests/suites/default/post/GetRecords-filter-between.xml diff --git a/tests/suites/default/post/GetRecords-filter-function-bad.xml b/tests/functionaltests/suites/default/post/GetRecords-filter-function-bad.xml similarity index 100% rename from tests/suites/default/post/GetRecords-filter-function-bad.xml rename to tests/functionaltests/suites/default/post/GetRecords-filter-function-bad.xml diff --git a/tests/suites/default/post/GetRecords-filter-function.xml b/tests/functionaltests/suites/default/post/GetRecords-filter-function.xml similarity index 100% rename from tests/suites/default/post/GetRecords-filter-function.xml rename to tests/functionaltests/suites/default/post/GetRecords-filter-function.xml diff --git a/tests/suites/default/post/GetRecords-filter-not-bbox.xml b/tests/functionaltests/suites/default/post/GetRecords-filter-not-bbox.xml similarity index 100% rename from tests/suites/default/post/GetRecords-filter-not-bbox.xml rename to tests/functionaltests/suites/default/post/GetRecords-filter-not-bbox.xml diff --git a/tests/suites/default/post/GetRecords-filter-or-bbox-freetext.xml b/tests/functionaltests/suites/default/post/GetRecords-filter-or-bbox-freetext.xml similarity index 100% rename from tests/suites/default/post/GetRecords-filter-or-bbox-freetext.xml rename to tests/functionaltests/suites/default/post/GetRecords-filter-or-bbox-freetext.xml diff --git a/tests/suites/default/post/GetRecords-filter-or-nested-and.xml b/tests/functionaltests/suites/default/post/GetRecords-filter-or-nested-and.xml similarity index 100% rename from tests/suites/default/post/GetRecords-filter-or-nested-and.xml rename to tests/functionaltests/suites/default/post/GetRecords-filter-or-nested-and.xml diff --git a/tests/suites/default/post/GetRecords-filter-or-title-abstract.xml b/tests/functionaltests/suites/default/post/GetRecords-filter-or-title-abstract.xml similarity index 100% rename from tests/suites/default/post/GetRecords-filter-or-title-abstract.xml rename to tests/functionaltests/suites/default/post/GetRecords-filter-or-title-abstract.xml diff --git a/tests/suites/default/post/GetRecords-maxrecords.xml b/tests/functionaltests/suites/default/post/GetRecords-maxrecords.xml similarity index 100% rename from tests/suites/default/post/GetRecords-maxrecords.xml rename to tests/functionaltests/suites/default/post/GetRecords-maxrecords.xml diff --git a/tests/suites/default/post/GetRecords-requestid.xml b/tests/functionaltests/suites/default/post/GetRecords-requestid.xml similarity index 100% rename from tests/suites/default/post/GetRecords-requestid.xml rename to tests/functionaltests/suites/default/post/GetRecords-requestid.xml diff --git a/tests/suites/default/post/Harvest-default.xml b/tests/functionaltests/suites/default/post/Harvest-default.xml similarity index 100% rename from tests/suites/default/post/Harvest-default.xml rename to tests/functionaltests/suites/default/post/Harvest-default.xml diff --git a/tests/suites/default/post/Harvest-response-handler.xml b/tests/functionaltests/suites/default/post/Harvest-response-handler.xml similarity index 100% rename from tests/suites/default/post/Harvest-response-handler.xml rename to tests/functionaltests/suites/default/post/Harvest-response-handler.xml diff --git a/tests/suites/default/post/Transaction-delete.xml b/tests/functionaltests/suites/default/post/Transaction-delete.xml similarity index 100% rename from tests/suites/default/post/Transaction-delete.xml rename to tests/functionaltests/suites/default/post/Transaction-delete.xml diff --git a/tests/suites/default/post/Transaction-insert.xml b/tests/functionaltests/suites/default/post/Transaction-insert.xml similarity index 100% rename from tests/suites/default/post/Transaction-insert.xml rename to tests/functionaltests/suites/default/post/Transaction-insert.xml diff --git a/tests/suites/default/post/Transaction-update-full.xml b/tests/functionaltests/suites/default/post/Transaction-update-full.xml similarity index 100% rename from tests/suites/default/post/Transaction-update-full.xml rename to tests/functionaltests/suites/default/post/Transaction-update-full.xml diff --git a/tests/suites/default/post/Transaction-update-recordproperty.xml b/tests/functionaltests/suites/default/post/Transaction-update-recordproperty.xml similarity index 100% rename from tests/suites/default/post/Transaction-update-recordproperty.xml rename to tests/functionaltests/suites/default/post/Transaction-update-recordproperty.xml diff --git a/tests/suites/dif/default.cfg b/tests/functionaltests/suites/dif/default.cfg similarity index 100% rename from tests/suites/dif/default.cfg rename to tests/functionaltests/suites/dif/default.cfg diff --git a/tests/expected/suites_dif_post_DescribeRecord.xml b/tests/functionaltests/suites/dif/expected/post_DescribeRecord.xml similarity index 100% rename from tests/expected/suites_dif_post_DescribeRecord.xml rename to tests/functionaltests/suites/dif/expected/post_DescribeRecord.xml diff --git a/tests/expected/suites_dif_post_GetCapabilities.xml b/tests/functionaltests/suites/dif/expected/post_GetCapabilities.xml similarity index 100% rename from tests/expected/suites_dif_post_GetCapabilities.xml rename to tests/functionaltests/suites/dif/expected/post_GetCapabilities.xml diff --git a/tests/expected/suites_dif_post_GetRecords-filter-bbox.xml b/tests/functionaltests/suites/dif/expected/post_GetRecords-filter-bbox.xml similarity index 100% rename from tests/expected/suites_dif_post_GetRecords-filter-bbox.xml rename to tests/functionaltests/suites/dif/expected/post_GetRecords-filter-bbox.xml diff --git a/tests/suites/dif/post/DescribeRecord.xml b/tests/functionaltests/suites/dif/post/DescribeRecord.xml similarity index 100% rename from tests/suites/dif/post/DescribeRecord.xml rename to tests/functionaltests/suites/dif/post/DescribeRecord.xml diff --git a/tests/suites/dif/post/GetCapabilities.xml b/tests/functionaltests/suites/dif/post/GetCapabilities.xml similarity index 100% rename from tests/suites/dif/post/GetCapabilities.xml rename to tests/functionaltests/suites/dif/post/GetCapabilities.xml diff --git a/tests/suites/dif/post/GetRecords-filter-bbox.xml b/tests/functionaltests/suites/dif/post/GetRecords-filter-bbox.xml similarity index 100% rename from tests/suites/dif/post/GetRecords-filter-bbox.xml rename to tests/functionaltests/suites/dif/post/GetRecords-filter-bbox.xml diff --git a/tests/suites/ebrim/default.cfg b/tests/functionaltests/suites/ebrim/default.cfg similarity index 100% rename from tests/suites/ebrim/default.cfg rename to tests/functionaltests/suites/ebrim/default.cfg diff --git a/tests/expected/suites_ebrim_post_DescribeRecord.xml b/tests/functionaltests/suites/ebrim/expected/post_DescribeRecord.xml similarity index 100% rename from tests/expected/suites_ebrim_post_DescribeRecord.xml rename to tests/functionaltests/suites/ebrim/expected/post_DescribeRecord.xml diff --git a/tests/expected/suites_ebrim_post_GetCapabilities.xml b/tests/functionaltests/suites/ebrim/expected/post_GetCapabilities.xml similarity index 100% rename from tests/expected/suites_ebrim_post_GetCapabilities.xml rename to tests/functionaltests/suites/ebrim/expected/post_GetCapabilities.xml diff --git a/tests/expected/suites_ebrim_post_GetRecords-filter-bbox-full.xml b/tests/functionaltests/suites/ebrim/expected/post_GetRecords-filter-bbox-full.xml similarity index 100% rename from tests/expected/suites_ebrim_post_GetRecords-filter-bbox-full.xml rename to tests/functionaltests/suites/ebrim/expected/post_GetRecords-filter-bbox-full.xml diff --git a/tests/expected/suites_ebrim_post_GetRecords-filter-bbox.xml b/tests/functionaltests/suites/ebrim/expected/post_GetRecords-filter-bbox.xml similarity index 100% rename from tests/expected/suites_ebrim_post_GetRecords-filter-bbox.xml rename to tests/functionaltests/suites/ebrim/expected/post_GetRecords-filter-bbox.xml diff --git a/tests/suites/ebrim/post/DescribeRecord.xml b/tests/functionaltests/suites/ebrim/post/DescribeRecord.xml similarity index 100% rename from tests/suites/ebrim/post/DescribeRecord.xml rename to tests/functionaltests/suites/ebrim/post/DescribeRecord.xml diff --git a/tests/suites/ebrim/post/GetCapabilities.xml b/tests/functionaltests/suites/ebrim/post/GetCapabilities.xml similarity index 100% rename from tests/suites/ebrim/post/GetCapabilities.xml rename to tests/functionaltests/suites/ebrim/post/GetCapabilities.xml diff --git a/tests/suites/ebrim/post/GetRecords-filter-bbox-full.xml b/tests/functionaltests/suites/ebrim/post/GetRecords-filter-bbox-full.xml similarity index 100% rename from tests/suites/ebrim/post/GetRecords-filter-bbox-full.xml rename to tests/functionaltests/suites/ebrim/post/GetRecords-filter-bbox-full.xml diff --git a/tests/suites/ebrim/post/GetRecords-filter-bbox.xml b/tests/functionaltests/suites/ebrim/post/GetRecords-filter-bbox.xml similarity index 100% rename from tests/suites/ebrim/post/GetRecords-filter-bbox.xml rename to tests/functionaltests/suites/ebrim/post/GetRecords-filter-bbox.xml diff --git a/tests/suites/fgdc/default.cfg b/tests/functionaltests/suites/fgdc/default.cfg similarity index 100% rename from tests/suites/fgdc/default.cfg rename to tests/functionaltests/suites/fgdc/default.cfg diff --git a/tests/expected/suites_fgdc_post_DescribeRecord.xml b/tests/functionaltests/suites/fgdc/expected/post_DescribeRecord.xml similarity index 100% rename from tests/expected/suites_fgdc_post_DescribeRecord.xml rename to tests/functionaltests/suites/fgdc/expected/post_DescribeRecord.xml diff --git a/tests/expected/suites_fgdc_post_GetCapabilities.xml b/tests/functionaltests/suites/fgdc/expected/post_GetCapabilities.xml similarity index 100% rename from tests/expected/suites_fgdc_post_GetCapabilities.xml rename to tests/functionaltests/suites/fgdc/expected/post_GetCapabilities.xml diff --git a/tests/expected/suites_fgdc_post_GetRecords-filter-bbox.xml b/tests/functionaltests/suites/fgdc/expected/post_GetRecords-filter-bbox.xml similarity index 100% rename from tests/expected/suites_fgdc_post_GetRecords-filter-bbox.xml rename to tests/functionaltests/suites/fgdc/expected/post_GetRecords-filter-bbox.xml diff --git a/tests/suites/fgdc/post/DescribeRecord.xml b/tests/functionaltests/suites/fgdc/post/DescribeRecord.xml similarity index 100% rename from tests/suites/fgdc/post/DescribeRecord.xml rename to tests/functionaltests/suites/fgdc/post/DescribeRecord.xml diff --git a/tests/suites/fgdc/post/GetCapabilities.xml b/tests/functionaltests/suites/fgdc/post/GetCapabilities.xml similarity index 100% rename from tests/suites/fgdc/post/GetCapabilities.xml rename to tests/functionaltests/suites/fgdc/post/GetCapabilities.xml diff --git a/tests/suites/fgdc/post/GetRecords-filter-bbox.xml b/tests/functionaltests/suites/fgdc/post/GetRecords-filter-bbox.xml similarity index 100% rename from tests/suites/fgdc/post/GetRecords-filter-bbox.xml rename to tests/functionaltests/suites/fgdc/post/GetRecords-filter-bbox.xml diff --git a/tests/suites/gm03/default.cfg b/tests/functionaltests/suites/gm03/default.cfg similarity index 100% rename from tests/suites/gm03/default.cfg rename to tests/functionaltests/suites/gm03/default.cfg diff --git a/tests/expected/suites_gm03_post_GetCapabilities.xml b/tests/functionaltests/suites/gm03/expected/post_GetCapabilities.xml similarity index 100% rename from tests/expected/suites_gm03_post_GetCapabilities.xml rename to tests/functionaltests/suites/gm03/expected/post_GetCapabilities.xml diff --git a/tests/expected/suites_gm03_post_GetRecords-filter-bbox.xml b/tests/functionaltests/suites/gm03/expected/post_GetRecords-filter-bbox.xml similarity index 100% rename from tests/expected/suites_gm03_post_GetRecords-filter-bbox.xml rename to tests/functionaltests/suites/gm03/expected/post_GetRecords-filter-bbox.xml diff --git a/tests/suites/gm03/post/GetCapabilities.xml b/tests/functionaltests/suites/gm03/post/GetCapabilities.xml similarity index 100% rename from tests/suites/gm03/post/GetCapabilities.xml rename to tests/functionaltests/suites/gm03/post/GetCapabilities.xml diff --git a/tests/suites/gm03/post/GetRecords-filter-bbox.xml b/tests/functionaltests/suites/gm03/post/GetRecords-filter-bbox.xml similarity index 100% rename from tests/suites/gm03/post/GetRecords-filter-bbox.xml rename to tests/functionaltests/suites/gm03/post/GetRecords-filter-bbox.xml diff --git a/tests/functionaltests/suites/harvesting/data/.gitignore b/tests/functionaltests/suites/harvesting/data/.gitignore new file mode 100644 index 000000000..709918b3c --- /dev/null +++ b/tests/functionaltests/suites/harvesting/data/.gitignore @@ -0,0 +1,30 @@ +# This file exists to force git to include this directory in the code +# repository. +# +# git does not include empty directories in code repositories. +# +# Functional tests are automatically generated by py.test. The way that the +# tests are set up, the presence of a ``data/`` directory inside a test suite +# has the following meaning: +# +# * if a ``data/`` directory does not exist, the tests of the suite use data +# from the CITE suite; +# +# * if an empty ``data/`` directory exists, then a new empty database is +# created and used; +# +# * if the ``data/`` directory exists and has files inside, a new database is +# created and the files are loaded into the database as records. +# +# As such, the current suite needs an empty ``data/`` directory because its +# functional tests depend on the existence of an empty database. + + +# ignore all files in this directory (in case some file is put here by mistake, +# we do not want it to be sent to the git repository and mess up the functional +# tests) +* + +# however, be sure to not ignore this file, as we need at least one file inside +# this directory, so that git will aknowledge its existence +!.gitignore diff --git a/tests/suites/harvesting/default.cfg b/tests/functionaltests/suites/harvesting/default.cfg similarity index 100% rename from tests/suites/harvesting/default.cfg rename to tests/functionaltests/suites/harvesting/default.cfg diff --git a/tests/expected/suites_harvesting_get_Exception-Harvest-invalid-resourcetype.xml b/tests/functionaltests/suites/harvesting/expected/get_Exception-Harvest-invalid-resourcetype.xml similarity index 100% rename from tests/expected/suites_harvesting_get_Exception-Harvest-invalid-resourcetype.xml rename to tests/functionaltests/suites/harvesting/expected/get_Exception-Harvest-invalid-resourcetype.xml diff --git a/tests/expected/suites_harvesting_get_Exception-Harvest-missing-resourcetype.xml b/tests/functionaltests/suites/harvesting/expected/get_Exception-Harvest-missing-resourcetype.xml similarity index 100% rename from tests/expected/suites_harvesting_get_Exception-Harvest-missing-resourcetype.xml rename to tests/functionaltests/suites/harvesting/expected/get_Exception-Harvest-missing-resourcetype.xml diff --git a/tests/expected/suites_harvesting_get_Exception-Harvest-missing-source.xml b/tests/functionaltests/suites/harvesting/expected/get_Exception-Harvest-missing-source.xml similarity index 100% rename from tests/expected/suites_harvesting_get_Exception-Harvest-missing-source.xml rename to tests/functionaltests/suites/harvesting/expected/get_Exception-Harvest-missing-source.xml diff --git a/tests/expected/suites_harvesting_get_Exception-Harvest-waf-bad-value.xml b/tests/functionaltests/suites/harvesting/expected/get_Exception-Harvest-waf-bad-value.xml similarity index 100% rename from tests/expected/suites_harvesting_get_Exception-Harvest-waf-bad-value.xml rename to tests/functionaltests/suites/harvesting/expected/get_Exception-Harvest-waf-bad-value.xml diff --git a/tests/expected/suites_harvesting_get_Exception-Harvest-waf-no-records-found.xml b/tests/functionaltests/suites/harvesting/expected/get_Exception-Harvest-waf-no-records-found.xml similarity index 100% rename from tests/expected/suites_harvesting_get_Exception-Harvest-waf-no-records-found.xml rename to tests/functionaltests/suites/harvesting/expected/get_Exception-Harvest-waf-no-records-found.xml diff --git a/tests/expected/suites_harvesting_post_Clear-000-delete-all.xml b/tests/functionaltests/suites/harvesting/expected/post_Clear-000-delete-all.xml similarity index 100% rename from tests/expected/suites_harvesting_post_Clear-000-delete-all.xml rename to tests/functionaltests/suites/harvesting/expected/post_Clear-000-delete-all.xml diff --git a/tests/expected/suites_harvesting_post_Exception-Havest-csw-404.xml b/tests/functionaltests/suites/harvesting/expected/post_Exception-Havest-csw-404.xml similarity index 100% rename from tests/expected/suites_harvesting_post_Exception-Havest-csw-404.xml rename to tests/functionaltests/suites/harvesting/expected/post_Exception-Havest-csw-404.xml diff --git a/tests/expected/suites_harvesting_post_GetCapabilities.xml b/tests/functionaltests/suites/harvesting/expected/post_GetCapabilities.xml similarity index 100% rename from tests/expected/suites_harvesting_post_GetCapabilities.xml rename to tests/functionaltests/suites/harvesting/expected/post_GetCapabilities.xml diff --git a/tests/expected/suites_harvesting_post_GetDomain-parameter.xml b/tests/functionaltests/suites/harvesting/expected/post_GetDomain-parameter.xml similarity index 100% rename from tests/expected/suites_harvesting_post_GetDomain-parameter.xml rename to tests/functionaltests/suites/harvesting/expected/post_GetDomain-parameter.xml diff --git a/tests/expected/suites_harvesting_post_Harvest-csw-iso.xml b/tests/functionaltests/suites/harvesting/expected/post_Harvest-csw-iso.xml similarity index 100% rename from tests/expected/suites_harvesting_post_Harvest-csw-iso.xml rename to tests/functionaltests/suites/harvesting/expected/post_Harvest-csw-iso.xml diff --git a/tests/expected/suites_harvesting_post_Harvest-csw-run1.xml b/tests/functionaltests/suites/harvesting/expected/post_Harvest-csw-run1.xml similarity index 100% rename from tests/expected/suites_harvesting_post_Harvest-csw-run1.xml rename to tests/functionaltests/suites/harvesting/expected/post_Harvest-csw-run1.xml diff --git a/tests/expected/suites_harvesting_post_Harvest-csw-run2.xml b/tests/functionaltests/suites/harvesting/expected/post_Harvest-csw-run2.xml similarity index 100% rename from tests/expected/suites_harvesting_post_Harvest-csw-run2.xml rename to tests/functionaltests/suites/harvesting/expected/post_Harvest-csw-run2.xml diff --git a/tests/expected/suites_harvesting_post_Harvest-dc.xml b/tests/functionaltests/suites/harvesting/expected/post_Harvest-dc.xml similarity index 100% rename from tests/expected/suites_harvesting_post_Harvest-dc.xml rename to tests/functionaltests/suites/harvesting/expected/post_Harvest-dc.xml diff --git a/tests/expected/suites_harvesting_post_Harvest-fgdc.xml b/tests/functionaltests/suites/harvesting/expected/post_Harvest-fgdc.xml similarity index 100% rename from tests/expected/suites_harvesting_post_Harvest-fgdc.xml rename to tests/functionaltests/suites/harvesting/expected/post_Harvest-fgdc.xml diff --git a/tests/expected/suites_harvesting_post_Harvest-iso.xml b/tests/functionaltests/suites/harvesting/expected/post_Harvest-iso.xml similarity index 100% rename from tests/expected/suites_harvesting_post_Harvest-iso.xml rename to tests/functionaltests/suites/harvesting/expected/post_Harvest-iso.xml diff --git a/tests/expected/suites_harvesting_post_Harvest-rdf.xml b/tests/functionaltests/suites/harvesting/expected/post_Harvest-rdf.xml similarity index 100% rename from tests/expected/suites_harvesting_post_Harvest-rdf.xml rename to tests/functionaltests/suites/harvesting/expected/post_Harvest-rdf.xml diff --git a/tests/expected/suites_harvesting_post_Harvest-sos100.xml b/tests/functionaltests/suites/harvesting/expected/post_Harvest-sos100.xml similarity index 100% rename from tests/expected/suites_harvesting_post_Harvest-sos100.xml rename to tests/functionaltests/suites/harvesting/expected/post_Harvest-sos100.xml diff --git a/tests/expected/suites_harvesting_post_Harvest-sos200.xml b/tests/functionaltests/suites/harvesting/expected/post_Harvest-sos200.xml similarity index 100% rename from tests/expected/suites_harvesting_post_Harvest-sos200.xml rename to tests/functionaltests/suites/harvesting/expected/post_Harvest-sos200.xml diff --git a/tests/expected/suites_harvesting_post_Harvest-waf.xml b/tests/functionaltests/suites/harvesting/expected/post_Harvest-waf.xml similarity index 100% rename from tests/expected/suites_harvesting_post_Harvest-waf.xml rename to tests/functionaltests/suites/harvesting/expected/post_Harvest-waf.xml diff --git a/tests/expected/suites_harvesting_post_Harvest-wcs.xml b/tests/functionaltests/suites/harvesting/expected/post_Harvest-wcs.xml similarity index 100% rename from tests/expected/suites_harvesting_post_Harvest-wcs.xml rename to tests/functionaltests/suites/harvesting/expected/post_Harvest-wcs.xml diff --git a/tests/expected/suites_harvesting_post_Harvest-wfs110.xml b/tests/functionaltests/suites/harvesting/expected/post_Harvest-wfs110.xml similarity index 100% rename from tests/expected/suites_harvesting_post_Harvest-wfs110.xml rename to tests/functionaltests/suites/harvesting/expected/post_Harvest-wfs110.xml diff --git a/tests/expected/suites_harvesting_post_Harvest-wfs200.xml b/tests/functionaltests/suites/harvesting/expected/post_Harvest-wfs200.xml similarity index 100% rename from tests/expected/suites_harvesting_post_Harvest-wfs200.xml rename to tests/functionaltests/suites/harvesting/expected/post_Harvest-wfs200.xml diff --git a/tests/expected/suites_harvesting_post_Harvest-wms-run1.xml b/tests/functionaltests/suites/harvesting/expected/post_Harvest-wms-run1.xml similarity index 100% rename from tests/expected/suites_harvesting_post_Harvest-wms-run1.xml rename to tests/functionaltests/suites/harvesting/expected/post_Harvest-wms-run1.xml diff --git a/tests/expected/suites_harvesting_post_Harvest-wms-run2.xml b/tests/functionaltests/suites/harvesting/expected/post_Harvest-wms-run2.xml similarity index 100% rename from tests/expected/suites_harvesting_post_Harvest-wms-run2.xml rename to tests/functionaltests/suites/harvesting/expected/post_Harvest-wms-run2.xml diff --git a/tests/expected/suites_harvesting_post_Harvest-wmts.xml b/tests/functionaltests/suites/harvesting/expected/post_Harvest-wmts.xml similarity index 100% rename from tests/expected/suites_harvesting_post_Harvest-wmts.xml rename to tests/functionaltests/suites/harvesting/expected/post_Harvest-wmts.xml diff --git a/tests/expected/suites_harvesting_post_Harvest-wps.xml b/tests/functionaltests/suites/harvesting/expected/post_Harvest-wps.xml similarity index 100% rename from tests/expected/suites_harvesting_post_Harvest-wps.xml rename to tests/functionaltests/suites/harvesting/expected/post_Harvest-wps.xml diff --git a/tests/expected/suites_harvesting_post_Harvest-zzz-post-GetRecords-filter-ows-dc.xml b/tests/functionaltests/suites/harvesting/expected/post_Harvest-zzz-post-GetRecords-filter-ows-dc.xml similarity index 100% rename from tests/expected/suites_harvesting_post_Harvest-zzz-post-GetRecords-filter-ows-dc.xml rename to tests/functionaltests/suites/harvesting/expected/post_Harvest-zzz-post-GetRecords-filter-ows-dc.xml diff --git a/tests/expected/suites_harvesting_post_Harvest-zzz-post-GetRecords-filter-sos-abstract-dc.xml b/tests/functionaltests/suites/harvesting/expected/post_Harvest-zzz-post-GetRecords-filter-sos-abstract-dc.xml similarity index 100% rename from tests/expected/suites_harvesting_post_Harvest-zzz-post-GetRecords-filter-sos-abstract-dc.xml rename to tests/functionaltests/suites/harvesting/expected/post_Harvest-zzz-post-GetRecords-filter-sos-abstract-dc.xml diff --git a/tests/expected/suites_harvesting_post_Harvest-zzz-post-GetRecords-filter-sos-dc.xml b/tests/functionaltests/suites/harvesting/expected/post_Harvest-zzz-post-GetRecords-filter-sos-dc.xml similarity index 100% rename from tests/expected/suites_harvesting_post_Harvest-zzz-post-GetRecords-filter-sos-dc.xml rename to tests/functionaltests/suites/harvesting/expected/post_Harvest-zzz-post-GetRecords-filter-sos-dc.xml diff --git a/tests/expected/suites_harvesting_post_Harvest-zzz-post-GetRecords-filter-sos-iso.xml b/tests/functionaltests/suites/harvesting/expected/post_Harvest-zzz-post-GetRecords-filter-sos-iso.xml similarity index 100% rename from tests/expected/suites_harvesting_post_Harvest-zzz-post-GetRecords-filter-sos-iso.xml rename to tests/functionaltests/suites/harvesting/expected/post_Harvest-zzz-post-GetRecords-filter-sos-iso.xml diff --git a/tests/expected/suites_harvesting_post_Harvest-zzz-post-GetRecords-filter-wfs-iso.xml b/tests/functionaltests/suites/harvesting/expected/post_Harvest-zzz-post-GetRecords-filter-wfs-iso.xml similarity index 100% rename from tests/expected/suites_harvesting_post_Harvest-zzz-post-GetRecords-filter-wfs-iso.xml rename to tests/functionaltests/suites/harvesting/expected/post_Harvest-zzz-post-GetRecords-filter-wfs-iso.xml diff --git a/tests/expected/suites_harvesting_post_Harvest-zzz-post-GetRecords-filter-wms-dc.xml b/tests/functionaltests/suites/harvesting/expected/post_Harvest-zzz-post-GetRecords-filter-wms-dc.xml similarity index 100% rename from tests/expected/suites_harvesting_post_Harvest-zzz-post-GetRecords-filter-wms-dc.xml rename to tests/functionaltests/suites/harvesting/expected/post_Harvest-zzz-post-GetRecords-filter-wms-dc.xml diff --git a/tests/expected/suites_harvesting_post_Harvest-zzz-post-GetRecords-filter-wms-iso.xml b/tests/functionaltests/suites/harvesting/expected/post_Harvest-zzz-post-GetRecords-filter-wms-iso.xml similarity index 100% rename from tests/expected/suites_harvesting_post_Harvest-zzz-post-GetRecords-filter-wms-iso.xml rename to tests/functionaltests/suites/harvesting/expected/post_Harvest-zzz-post-GetRecords-filter-wms-iso.xml diff --git a/tests/expected/suites_harvesting_post_Harvest-zzz-post-GetRecords-filter-wms-layer.xml b/tests/functionaltests/suites/harvesting/expected/post_Harvest-zzz-post-GetRecords-filter-wms-layer.xml similarity index 100% rename from tests/expected/suites_harvesting_post_Harvest-zzz-post-GetRecords-filter-wms-layer.xml rename to tests/functionaltests/suites/harvesting/expected/post_Harvest-zzz-post-GetRecords-filter-wms-layer.xml diff --git a/tests/expected/suites_harvesting_post_Harvest-zzz-post-GetRecords-filter-wps-process.xml b/tests/functionaltests/suites/harvesting/expected/post_Harvest-zzz-post-GetRecords-filter-wps-process.xml similarity index 100% rename from tests/expected/suites_harvesting_post_Harvest-zzz-post-GetRecords-filter-wps-process.xml rename to tests/functionaltests/suites/harvesting/expected/post_Harvest-zzz-post-GetRecords-filter-wps-process.xml diff --git a/tests/expected/suites_harvesting_post_Transaction-000-delete-all.xml b/tests/functionaltests/suites/harvesting/expected/post_Transaction-000-delete-all.xml similarity index 100% rename from tests/expected/suites_harvesting_post_Transaction-000-delete-all.xml rename to tests/functionaltests/suites/harvesting/expected/post_Transaction-000-delete-all.xml diff --git a/tests/functionaltests/suites/harvesting/get/requests.txt b/tests/functionaltests/suites/harvesting/get/requests.txt new file mode 100644 index 000000000..3b13c3b11 --- /dev/null +++ b/tests/functionaltests/suites/harvesting/get/requests.txt @@ -0,0 +1,5 @@ +Exception-Harvest-missing-resourcetype,service=CSW&version=2.0.2&request=Harvest +Exception-Harvest-missing-source,service=CSW&version=2.0.2&request=Harvest&resourcetype=http://www.opengis.net/wms +Exception-Harvest-invalid-resourcetype,service=CSW&version=2.0.2&request=Harvest&resourcetype=http://www.opengis.net/wms1234&source=http://demo.pycsw.org/cite/csw +Exception-Harvest-waf-no-records-found,service=CSW&version=2.0.2&request=Harvest&resourcetype=urn:geoss:waf&source=http://demo.pycsw.org +Exception-Harvest-waf-bad-value,service=CSW&version=2.0.2&request=Harvest&resourcetype=urn:geoss:waf&source=badvalue diff --git a/tests/suites/harvesting/post/Clear-000-delete-all.xml b/tests/functionaltests/suites/harvesting/post/Clear-000-delete-all.xml similarity index 100% rename from tests/suites/harvesting/post/Clear-000-delete-all.xml rename to tests/functionaltests/suites/harvesting/post/Clear-000-delete-all.xml diff --git a/tests/suites/harvesting/post/Exception-Havest-csw-404.xml b/tests/functionaltests/suites/harvesting/post/Exception-Havest-csw-404.xml similarity index 100% rename from tests/suites/harvesting/post/Exception-Havest-csw-404.xml rename to tests/functionaltests/suites/harvesting/post/Exception-Havest-csw-404.xml diff --git a/tests/suites/harvesting/post/GetCapabilities.xml b/tests/functionaltests/suites/harvesting/post/GetCapabilities.xml similarity index 100% rename from tests/suites/harvesting/post/GetCapabilities.xml rename to tests/functionaltests/suites/harvesting/post/GetCapabilities.xml diff --git a/tests/suites/harvesting/post/GetDomain-parameter.xml b/tests/functionaltests/suites/harvesting/post/GetDomain-parameter.xml similarity index 100% rename from tests/suites/harvesting/post/GetDomain-parameter.xml rename to tests/functionaltests/suites/harvesting/post/GetDomain-parameter.xml diff --git a/tests/suites/harvesting/post/Harvest-csw-iso.xml b/tests/functionaltests/suites/harvesting/post/Harvest-csw-iso.xml similarity index 100% rename from tests/suites/harvesting/post/Harvest-csw-iso.xml rename to tests/functionaltests/suites/harvesting/post/Harvest-csw-iso.xml diff --git a/tests/suites/harvesting/post/Harvest-csw-run1.xml b/tests/functionaltests/suites/harvesting/post/Harvest-csw-run1.xml similarity index 100% rename from tests/suites/harvesting/post/Harvest-csw-run1.xml rename to tests/functionaltests/suites/harvesting/post/Harvest-csw-run1.xml diff --git a/tests/suites/harvesting/post/Harvest-csw-run2.xml b/tests/functionaltests/suites/harvesting/post/Harvest-csw-run2.xml similarity index 100% rename from tests/suites/harvesting/post/Harvest-csw-run2.xml rename to tests/functionaltests/suites/harvesting/post/Harvest-csw-run2.xml diff --git a/tests/suites/harvesting/post/Harvest-dc.xml b/tests/functionaltests/suites/harvesting/post/Harvest-dc.xml similarity index 100% rename from tests/suites/harvesting/post/Harvest-dc.xml rename to tests/functionaltests/suites/harvesting/post/Harvest-dc.xml diff --git a/tests/suites/harvesting/post/Harvest-fgdc.xml b/tests/functionaltests/suites/harvesting/post/Harvest-fgdc.xml similarity index 100% rename from tests/suites/harvesting/post/Harvest-fgdc.xml rename to tests/functionaltests/suites/harvesting/post/Harvest-fgdc.xml diff --git a/tests/suites/harvesting/post/Harvest-iso.xml b/tests/functionaltests/suites/harvesting/post/Harvest-iso.xml similarity index 100% rename from tests/suites/harvesting/post/Harvest-iso.xml rename to tests/functionaltests/suites/harvesting/post/Harvest-iso.xml diff --git a/tests/suites/harvesting/post/Harvest-rdf.xml b/tests/functionaltests/suites/harvesting/post/Harvest-rdf.xml similarity index 100% rename from tests/suites/harvesting/post/Harvest-rdf.xml rename to tests/functionaltests/suites/harvesting/post/Harvest-rdf.xml diff --git a/tests/suites/harvesting/post/Harvest-sos100.xml b/tests/functionaltests/suites/harvesting/post/Harvest-sos100.xml similarity index 100% rename from tests/suites/harvesting/post/Harvest-sos100.xml rename to tests/functionaltests/suites/harvesting/post/Harvest-sos100.xml diff --git a/tests/suites/harvesting/post/Harvest-sos200.xml b/tests/functionaltests/suites/harvesting/post/Harvest-sos200.xml similarity index 100% rename from tests/suites/harvesting/post/Harvest-sos200.xml rename to tests/functionaltests/suites/harvesting/post/Harvest-sos200.xml diff --git a/tests/suites/harvesting/post/Harvest-waf.xml b/tests/functionaltests/suites/harvesting/post/Harvest-waf.xml similarity index 100% rename from tests/suites/harvesting/post/Harvest-waf.xml rename to tests/functionaltests/suites/harvesting/post/Harvest-waf.xml diff --git a/tests/suites/harvesting/post/Harvest-wcs.xml b/tests/functionaltests/suites/harvesting/post/Harvest-wcs.xml similarity index 100% rename from tests/suites/harvesting/post/Harvest-wcs.xml rename to tests/functionaltests/suites/harvesting/post/Harvest-wcs.xml diff --git a/tests/suites/harvesting/post/Harvest-wfs110.xml b/tests/functionaltests/suites/harvesting/post/Harvest-wfs110.xml similarity index 100% rename from tests/suites/harvesting/post/Harvest-wfs110.xml rename to tests/functionaltests/suites/harvesting/post/Harvest-wfs110.xml diff --git a/tests/suites/harvesting/post/Harvest-wfs200.xml b/tests/functionaltests/suites/harvesting/post/Harvest-wfs200.xml similarity index 100% rename from tests/suites/harvesting/post/Harvest-wfs200.xml rename to tests/functionaltests/suites/harvesting/post/Harvest-wfs200.xml diff --git a/tests/suites/harvesting/post/Harvest-wms-run1.xml b/tests/functionaltests/suites/harvesting/post/Harvest-wms-run1.xml similarity index 100% rename from tests/suites/harvesting/post/Harvest-wms-run1.xml rename to tests/functionaltests/suites/harvesting/post/Harvest-wms-run1.xml diff --git a/tests/suites/harvesting/post/Harvest-wms-run2.xml b/tests/functionaltests/suites/harvesting/post/Harvest-wms-run2.xml similarity index 100% rename from tests/suites/harvesting/post/Harvest-wms-run2.xml rename to tests/functionaltests/suites/harvesting/post/Harvest-wms-run2.xml diff --git a/tests/suites/harvesting/post/Harvest-wmts.xml b/tests/functionaltests/suites/harvesting/post/Harvest-wmts.xml similarity index 100% rename from tests/suites/harvesting/post/Harvest-wmts.xml rename to tests/functionaltests/suites/harvesting/post/Harvest-wmts.xml diff --git a/tests/suites/harvesting/post/Harvest-wps.xml b/tests/functionaltests/suites/harvesting/post/Harvest-wps.xml similarity index 100% rename from tests/suites/harvesting/post/Harvest-wps.xml rename to tests/functionaltests/suites/harvesting/post/Harvest-wps.xml diff --git a/tests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-ows-dc.xml b/tests/functionaltests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-ows-dc.xml similarity index 100% rename from tests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-ows-dc.xml rename to tests/functionaltests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-ows-dc.xml diff --git a/tests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-sos-abstract-dc.xml b/tests/functionaltests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-sos-abstract-dc.xml similarity index 100% rename from tests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-sos-abstract-dc.xml rename to tests/functionaltests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-sos-abstract-dc.xml diff --git a/tests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-sos-dc.xml b/tests/functionaltests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-sos-dc.xml similarity index 100% rename from tests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-sos-dc.xml rename to tests/functionaltests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-sos-dc.xml diff --git a/tests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-sos-iso.xml b/tests/functionaltests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-sos-iso.xml similarity index 100% rename from tests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-sos-iso.xml rename to tests/functionaltests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-sos-iso.xml diff --git a/tests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-wfs-iso.xml b/tests/functionaltests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-wfs-iso.xml similarity index 100% rename from tests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-wfs-iso.xml rename to tests/functionaltests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-wfs-iso.xml diff --git a/tests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-wms-dc.xml b/tests/functionaltests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-wms-dc.xml similarity index 100% rename from tests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-wms-dc.xml rename to tests/functionaltests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-wms-dc.xml diff --git a/tests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-wms-iso.xml b/tests/functionaltests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-wms-iso.xml similarity index 100% rename from tests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-wms-iso.xml rename to tests/functionaltests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-wms-iso.xml diff --git a/tests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-wms-layer.xml b/tests/functionaltests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-wms-layer.xml similarity index 100% rename from tests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-wms-layer.xml rename to tests/functionaltests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-wms-layer.xml diff --git a/tests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-wps-process.xml b/tests/functionaltests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-wps-process.xml similarity index 100% rename from tests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-wps-process.xml rename to tests/functionaltests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-wps-process.xml diff --git a/tests/suites/harvesting/post/Transaction-000-delete-all.xml b/tests/functionaltests/suites/harvesting/post/Transaction-000-delete-all.xml similarity index 100% rename from tests/suites/harvesting/post/Transaction-000-delete-all.xml rename to tests/functionaltests/suites/harvesting/post/Transaction-000-delete-all.xml diff --git a/tests/functionaltests/suites/manager/data/.gitignore b/tests/functionaltests/suites/manager/data/.gitignore new file mode 100644 index 000000000..709918b3c --- /dev/null +++ b/tests/functionaltests/suites/manager/data/.gitignore @@ -0,0 +1,30 @@ +# This file exists to force git to include this directory in the code +# repository. +# +# git does not include empty directories in code repositories. +# +# Functional tests are automatically generated by py.test. The way that the +# tests are set up, the presence of a ``data/`` directory inside a test suite +# has the following meaning: +# +# * if a ``data/`` directory does not exist, the tests of the suite use data +# from the CITE suite; +# +# * if an empty ``data/`` directory exists, then a new empty database is +# created and used; +# +# * if the ``data/`` directory exists and has files inside, a new database is +# created and the files are loaded into the database as records. +# +# As such, the current suite needs an empty ``data/`` directory because its +# functional tests depend on the existence of an empty database. + + +# ignore all files in this directory (in case some file is put here by mistake, +# we do not want it to be sent to the git repository and mess up the functional +# tests) +* + +# however, be sure to not ignore this file, as we need at least one file inside +# this directory, so that git will aknowledge its existence +!.gitignore diff --git a/tests/suites/manager/default.cfg b/tests/functionaltests/suites/manager/default.cfg similarity index 100% rename from tests/suites/manager/default.cfg rename to tests/functionaltests/suites/manager/default.cfg diff --git a/tests/expected/suites_manager_post_Clear-000-delete-all.xml b/tests/functionaltests/suites/manager/expected/post_Clear-000-delete-all.xml similarity index 100% rename from tests/expected/suites_manager_post_Clear-000-delete-all.xml rename to tests/functionaltests/suites/manager/expected/post_Clear-000-delete-all.xml diff --git a/tests/expected/suites_manager_post_GetCapabilities.xml b/tests/functionaltests/suites/manager/expected/post_GetCapabilities.xml similarity index 100% rename from tests/expected/suites_manager_post_GetCapabilities.xml rename to tests/functionaltests/suites/manager/expected/post_GetCapabilities.xml diff --git a/tests/expected/suites_manager_post_GetDomain-parameter.xml b/tests/functionaltests/suites/manager/expected/post_GetDomain-parameter.xml similarity index 100% rename from tests/expected/suites_manager_post_GetDomain-parameter.xml rename to tests/functionaltests/suites/manager/expected/post_GetDomain-parameter.xml diff --git a/tests/expected/suites_manager_post_Transaction-000-delete-all.xml b/tests/functionaltests/suites/manager/expected/post_Transaction-000-delete-all.xml similarity index 100% rename from tests/expected/suites_manager_post_Transaction-000-delete-all.xml rename to tests/functionaltests/suites/manager/expected/post_Transaction-000-delete-all.xml diff --git a/tests/expected/suites_manager_post_Transaction-dc-01-insert.xml b/tests/functionaltests/suites/manager/expected/post_Transaction-dc-01-insert.xml similarity index 100% rename from tests/expected/suites_manager_post_Transaction-dc-01-insert.xml rename to tests/functionaltests/suites/manager/expected/post_Transaction-dc-01-insert.xml diff --git a/tests/expected/suites_manager_post_Transaction-dc-02-update-full.xml b/tests/functionaltests/suites/manager/expected/post_Transaction-dc-02-update-full.xml similarity index 100% rename from tests/expected/suites_manager_post_Transaction-dc-02-update-full.xml rename to tests/functionaltests/suites/manager/expected/post_Transaction-dc-02-update-full.xml diff --git a/tests/expected/suites_manager_post_Transaction-fgdc-01-insert.xml b/tests/functionaltests/suites/manager/expected/post_Transaction-fgdc-01-insert.xml similarity index 100% rename from tests/expected/suites_manager_post_Transaction-fgdc-01-insert.xml rename to tests/functionaltests/suites/manager/expected/post_Transaction-fgdc-01-insert.xml diff --git a/tests/expected/suites_manager_post_Transaction-fgdc-02-update-recprop.xml b/tests/functionaltests/suites/manager/expected/post_Transaction-fgdc-02-update-recprop.xml similarity index 100% rename from tests/expected/suites_manager_post_Transaction-fgdc-02-update-recprop.xml rename to tests/functionaltests/suites/manager/expected/post_Transaction-fgdc-02-update-recprop.xml diff --git a/tests/expected/suites_manager_post_Transaction-fgdc-03-delete-all.xml b/tests/functionaltests/suites/manager/expected/post_Transaction-fgdc-03-delete-all.xml similarity index 100% rename from tests/expected/suites_manager_post_Transaction-fgdc-03-delete-all.xml rename to tests/functionaltests/suites/manager/expected/post_Transaction-fgdc-03-delete-all.xml diff --git a/tests/expected/suites_manager_post_Transaction-iso-00-delete-all.xml b/tests/functionaltests/suites/manager/expected/post_Transaction-iso-00-delete-all.xml similarity index 100% rename from tests/expected/suites_manager_post_Transaction-iso-00-delete-all.xml rename to tests/functionaltests/suites/manager/expected/post_Transaction-iso-00-delete-all.xml diff --git a/tests/expected/suites_manager_post_Transaction-iso-01-insert.xml b/tests/functionaltests/suites/manager/expected/post_Transaction-iso-01-insert.xml similarity index 100% rename from tests/expected/suites_manager_post_Transaction-iso-01-insert.xml rename to tests/functionaltests/suites/manager/expected/post_Transaction-iso-01-insert.xml diff --git a/tests/expected/suites_manager_post_Transaction-iso-02-update-full.xml b/tests/functionaltests/suites/manager/expected/post_Transaction-iso-02-update-full.xml similarity index 100% rename from tests/expected/suites_manager_post_Transaction-iso-02-update-full.xml rename to tests/functionaltests/suites/manager/expected/post_Transaction-iso-02-update-full.xml diff --git a/tests/expected/suites_manager_post_Transaction-iso-03-update-recprop.xml b/tests/functionaltests/suites/manager/expected/post_Transaction-iso-03-update-recprop.xml similarity index 100% rename from tests/expected/suites_manager_post_Transaction-iso-03-update-recprop.xml rename to tests/functionaltests/suites/manager/expected/post_Transaction-iso-03-update-recprop.xml diff --git a/tests/expected/suites_manager_post_Transaction-iso-04-update-recprop-no-matches.xml b/tests/functionaltests/suites/manager/expected/post_Transaction-iso-04-update-recprop-no-matches.xml similarity index 100% rename from tests/expected/suites_manager_post_Transaction-iso-04-update-recprop-no-matches.xml rename to tests/functionaltests/suites/manager/expected/post_Transaction-iso-04-update-recprop-no-matches.xml diff --git a/tests/expected/suites_manager_post_Transaction-iso-05-delete.xml b/tests/functionaltests/suites/manager/expected/post_Transaction-iso-05-delete.xml similarity index 100% rename from tests/expected/suites_manager_post_Transaction-iso-05-delete.xml rename to tests/functionaltests/suites/manager/expected/post_Transaction-iso-05-delete.xml diff --git a/tests/expected/suites_manager_post_Transaction-xxx-delete-all.xml b/tests/functionaltests/suites/manager/expected/post_Transaction-xxx-delete-all.xml similarity index 100% rename from tests/expected/suites_manager_post_Transaction-xxx-delete-all.xml rename to tests/functionaltests/suites/manager/expected/post_Transaction-xxx-delete-all.xml diff --git a/tests/suites/manager/post/Clear-000-delete-all.xml b/tests/functionaltests/suites/manager/post/Clear-000-delete-all.xml similarity index 100% rename from tests/suites/manager/post/Clear-000-delete-all.xml rename to tests/functionaltests/suites/manager/post/Clear-000-delete-all.xml diff --git a/tests/suites/manager/post/GetCapabilities.xml b/tests/functionaltests/suites/manager/post/GetCapabilities.xml similarity index 100% rename from tests/suites/manager/post/GetCapabilities.xml rename to tests/functionaltests/suites/manager/post/GetCapabilities.xml diff --git a/tests/suites/manager/post/GetDomain-parameter.xml b/tests/functionaltests/suites/manager/post/GetDomain-parameter.xml similarity index 100% rename from tests/suites/manager/post/GetDomain-parameter.xml rename to tests/functionaltests/suites/manager/post/GetDomain-parameter.xml diff --git a/tests/suites/manager/post/Transaction-000-delete-all.xml b/tests/functionaltests/suites/manager/post/Transaction-000-delete-all.xml similarity index 100% rename from tests/suites/manager/post/Transaction-000-delete-all.xml rename to tests/functionaltests/suites/manager/post/Transaction-000-delete-all.xml diff --git a/tests/suites/manager/post/Transaction-dc-01-insert.xml b/tests/functionaltests/suites/manager/post/Transaction-dc-01-insert.xml similarity index 100% rename from tests/suites/manager/post/Transaction-dc-01-insert.xml rename to tests/functionaltests/suites/manager/post/Transaction-dc-01-insert.xml diff --git a/tests/suites/manager/post/Transaction-dc-02-update-full.xml b/tests/functionaltests/suites/manager/post/Transaction-dc-02-update-full.xml similarity index 100% rename from tests/suites/manager/post/Transaction-dc-02-update-full.xml rename to tests/functionaltests/suites/manager/post/Transaction-dc-02-update-full.xml diff --git a/tests/suites/manager/post/Transaction-fgdc-01-insert.xml b/tests/functionaltests/suites/manager/post/Transaction-fgdc-01-insert.xml similarity index 100% rename from tests/suites/manager/post/Transaction-fgdc-01-insert.xml rename to tests/functionaltests/suites/manager/post/Transaction-fgdc-01-insert.xml diff --git a/tests/suites/manager/post/Transaction-fgdc-02-update-recprop.xml b/tests/functionaltests/suites/manager/post/Transaction-fgdc-02-update-recprop.xml similarity index 100% rename from tests/suites/manager/post/Transaction-fgdc-02-update-recprop.xml rename to tests/functionaltests/suites/manager/post/Transaction-fgdc-02-update-recprop.xml diff --git a/tests/suites/manager/post/Transaction-fgdc-03-delete-all.xml b/tests/functionaltests/suites/manager/post/Transaction-fgdc-03-delete-all.xml similarity index 100% rename from tests/suites/manager/post/Transaction-fgdc-03-delete-all.xml rename to tests/functionaltests/suites/manager/post/Transaction-fgdc-03-delete-all.xml diff --git a/tests/suites/manager/post/Transaction-iso-00-delete-all.xml b/tests/functionaltests/suites/manager/post/Transaction-iso-00-delete-all.xml similarity index 100% rename from tests/suites/manager/post/Transaction-iso-00-delete-all.xml rename to tests/functionaltests/suites/manager/post/Transaction-iso-00-delete-all.xml diff --git a/tests/suites/manager/post/Transaction-iso-01-insert.xml b/tests/functionaltests/suites/manager/post/Transaction-iso-01-insert.xml similarity index 100% rename from tests/suites/manager/post/Transaction-iso-01-insert.xml rename to tests/functionaltests/suites/manager/post/Transaction-iso-01-insert.xml diff --git a/tests/suites/manager/post/Transaction-iso-02-update-full.xml b/tests/functionaltests/suites/manager/post/Transaction-iso-02-update-full.xml similarity index 100% rename from tests/suites/manager/post/Transaction-iso-02-update-full.xml rename to tests/functionaltests/suites/manager/post/Transaction-iso-02-update-full.xml diff --git a/tests/suites/manager/post/Transaction-iso-03-update-recprop.xml b/tests/functionaltests/suites/manager/post/Transaction-iso-03-update-recprop.xml similarity index 100% rename from tests/suites/manager/post/Transaction-iso-03-update-recprop.xml rename to tests/functionaltests/suites/manager/post/Transaction-iso-03-update-recprop.xml diff --git a/tests/suites/manager/post/Transaction-iso-04-update-recprop-no-matches.xml b/tests/functionaltests/suites/manager/post/Transaction-iso-04-update-recprop-no-matches.xml similarity index 100% rename from tests/suites/manager/post/Transaction-iso-04-update-recprop-no-matches.xml rename to tests/functionaltests/suites/manager/post/Transaction-iso-04-update-recprop-no-matches.xml diff --git a/tests/suites/manager/post/Transaction-iso-05-delete.xml b/tests/functionaltests/suites/manager/post/Transaction-iso-05-delete.xml similarity index 100% rename from tests/suites/manager/post/Transaction-iso-05-delete.xml rename to tests/functionaltests/suites/manager/post/Transaction-iso-05-delete.xml diff --git a/tests/suites/manager/post/Transaction-xxx-delete-all.xml b/tests/functionaltests/suites/manager/post/Transaction-xxx-delete-all.xml similarity index 100% rename from tests/suites/manager/post/Transaction-xxx-delete-all.xml rename to tests/functionaltests/suites/manager/post/Transaction-xxx-delete-all.xml diff --git a/tests/suites/oaipmh/default.cfg b/tests/functionaltests/suites/oaipmh/default.cfg similarity index 100% rename from tests/suites/oaipmh/default.cfg rename to tests/functionaltests/suites/oaipmh/default.cfg diff --git a/tests/expected/suites_oaipmh_get_GetRecord_bad_metadata_prefix.xml b/tests/functionaltests/suites/oaipmh/expected/get_GetRecord_bad_metadata_prefix.xml similarity index 100% rename from tests/expected/suites_oaipmh_get_GetRecord_bad_metadata_prefix.xml rename to tests/functionaltests/suites/oaipmh/expected/get_GetRecord_bad_metadata_prefix.xml diff --git a/tests/expected/suites_oaipmh_get_GetRecord_dc.xml b/tests/functionaltests/suites/oaipmh/expected/get_GetRecord_dc.xml similarity index 100% rename from tests/expected/suites_oaipmh_get_GetRecord_dc.xml rename to tests/functionaltests/suites/oaipmh/expected/get_GetRecord_dc.xml diff --git a/tests/expected/suites_oaipmh_get_GetRecord_iso.xml b/tests/functionaltests/suites/oaipmh/expected/get_GetRecord_iso.xml similarity index 100% rename from tests/expected/suites_oaipmh_get_GetRecord_iso.xml rename to tests/functionaltests/suites/oaipmh/expected/get_GetRecord_iso.xml diff --git a/tests/expected/suites_oaipmh_get_GetRecord_oai_dc.xml b/tests/functionaltests/suites/oaipmh/expected/get_GetRecord_oai_dc.xml similarity index 100% rename from tests/expected/suites_oaipmh_get_GetRecord_oai_dc.xml rename to tests/functionaltests/suites/oaipmh/expected/get_GetRecord_oai_dc.xml diff --git a/tests/expected/suites_oaipmh_get_Identify.xml b/tests/functionaltests/suites/oaipmh/expected/get_Identify.xml similarity index 100% rename from tests/expected/suites_oaipmh_get_Identify.xml rename to tests/functionaltests/suites/oaipmh/expected/get_Identify.xml diff --git a/tests/expected/suites_oaipmh_get_ListIdentifiers_bad_metadata_prefix.xml b/tests/functionaltests/suites/oaipmh/expected/get_ListIdentifiers_bad_metadata_prefix.xml similarity index 100% rename from tests/expected/suites_oaipmh_get_ListIdentifiers_bad_metadata_prefix.xml rename to tests/functionaltests/suites/oaipmh/expected/get_ListIdentifiers_bad_metadata_prefix.xml diff --git a/tests/expected/suites_oaipmh_get_ListIdentifiers_dc.xml b/tests/functionaltests/suites/oaipmh/expected/get_ListIdentifiers_dc.xml similarity index 100% rename from tests/expected/suites_oaipmh_get_ListIdentifiers_dc.xml rename to tests/functionaltests/suites/oaipmh/expected/get_ListIdentifiers_dc.xml diff --git a/tests/expected/suites_oaipmh_get_ListIdentifiers_iso.xml b/tests/functionaltests/suites/oaipmh/expected/get_ListIdentifiers_iso.xml similarity index 100% rename from tests/expected/suites_oaipmh_get_ListIdentifiers_iso.xml rename to tests/functionaltests/suites/oaipmh/expected/get_ListIdentifiers_iso.xml diff --git a/tests/expected/suites_oaipmh_get_ListIdentifiers_missing_metadata_prefix.xml b/tests/functionaltests/suites/oaipmh/expected/get_ListIdentifiers_missing_metadata_prefix.xml similarity index 100% rename from tests/expected/suites_oaipmh_get_ListIdentifiers_missing_metadata_prefix.xml rename to tests/functionaltests/suites/oaipmh/expected/get_ListIdentifiers_missing_metadata_prefix.xml diff --git a/tests/expected/suites_oaipmh_get_ListIdentifiers_oai_dc.xml b/tests/functionaltests/suites/oaipmh/expected/get_ListIdentifiers_oai_dc.xml similarity index 100% rename from tests/expected/suites_oaipmh_get_ListIdentifiers_oai_dc.xml rename to tests/functionaltests/suites/oaipmh/expected/get_ListIdentifiers_oai_dc.xml diff --git a/tests/expected/suites_oaipmh_get_ListMetadataFormats.xml b/tests/functionaltests/suites/oaipmh/expected/get_ListMetadataFormats.xml similarity index 100% rename from tests/expected/suites_oaipmh_get_ListMetadataFormats.xml rename to tests/functionaltests/suites/oaipmh/expected/get_ListMetadataFormats.xml diff --git a/tests/expected/suites_oaipmh_get_ListRecords_dc.xml b/tests/functionaltests/suites/oaipmh/expected/get_ListRecords_dc.xml similarity index 100% rename from tests/expected/suites_oaipmh_get_ListRecords_dc.xml rename to tests/functionaltests/suites/oaipmh/expected/get_ListRecords_dc.xml diff --git a/tests/expected/suites_oaipmh_get_ListRecords_dc_bad_metadata_prefix.xml b/tests/functionaltests/suites/oaipmh/expected/get_ListRecords_dc_bad_metadata_prefix.xml similarity index 100% rename from tests/expected/suites_oaipmh_get_ListRecords_dc_bad_metadata_prefix.xml rename to tests/functionaltests/suites/oaipmh/expected/get_ListRecords_dc_bad_metadata_prefix.xml diff --git a/tests/expected/suites_oaipmh_get_ListRecords_iso19139.xml b/tests/functionaltests/suites/oaipmh/expected/get_ListRecords_iso19139.xml similarity index 100% rename from tests/expected/suites_oaipmh_get_ListRecords_iso19139.xml rename to tests/functionaltests/suites/oaipmh/expected/get_ListRecords_iso19139.xml diff --git a/tests/expected/suites_oaipmh_get_ListRecords_oai_dc.xml b/tests/functionaltests/suites/oaipmh/expected/get_ListRecords_oai_dc.xml similarity index 100% rename from tests/expected/suites_oaipmh_get_ListRecords_oai_dc.xml rename to tests/functionaltests/suites/oaipmh/expected/get_ListRecords_oai_dc.xml diff --git a/tests/expected/suites_oaipmh_get_ListSets.xml b/tests/functionaltests/suites/oaipmh/expected/get_ListSets.xml similarity index 100% rename from tests/expected/suites_oaipmh_get_ListSets.xml rename to tests/functionaltests/suites/oaipmh/expected/get_ListSets.xml diff --git a/tests/expected/suites_oaipmh_get_bad_verb.xml b/tests/functionaltests/suites/oaipmh/expected/get_bad_verb.xml similarity index 100% rename from tests/expected/suites_oaipmh_get_bad_verb.xml rename to tests/functionaltests/suites/oaipmh/expected/get_bad_verb.xml diff --git a/tests/expected/suites_oaipmh_get_empty.xml b/tests/functionaltests/suites/oaipmh/expected/get_empty.xml similarity index 100% rename from tests/expected/suites_oaipmh_get_empty.xml rename to tests/functionaltests/suites/oaipmh/expected/get_empty.xml diff --git a/tests/expected/suites_oaipmh_get_empty_with_amp.xml b/tests/functionaltests/suites/oaipmh/expected/get_empty_with_amp.xml similarity index 100% rename from tests/expected/suites_oaipmh_get_empty_with_amp.xml rename to tests/functionaltests/suites/oaipmh/expected/get_empty_with_amp.xml diff --git a/tests/expected/suites_oaipmh_get_illegal_verb.xml b/tests/functionaltests/suites/oaipmh/expected/get_illegal_verb.xml similarity index 100% rename from tests/expected/suites_oaipmh_get_illegal_verb.xml rename to tests/functionaltests/suites/oaipmh/expected/get_illegal_verb.xml diff --git a/tests/functionaltests/suites/oaipmh/get/requests.txt b/tests/functionaltests/suites/oaipmh/get/requests.txt new file mode 100644 index 000000000..bf6955232 --- /dev/null +++ b/tests/functionaltests/suites/oaipmh/get/requests.txt @@ -0,0 +1,20 @@ +empty,mode=oaipmh +empty_with_amp,mode=oaipmh& +bad_verb,mode=oaipmh&verb=foo +illegal_verb,mode=oaipmh&verb=foo&foo=bar +Identify,mode=oaipmh&verb=Identify +ListSets,mode=oaipmh&verb=ListSets +ListMetadataFormats,mode=oaipmh&verb=ListMetadataFormats +GetRecord_dc,mode=oaipmh&verb=GetRecord&identifier=urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f&metadataPrefix=csw-record +GetRecord_bad_metadata_prefix,mode=oaipmh&verb=GetRecord&identifier=urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f&metadataPrefix=csw-recordd +GetRecord_oai_dc,mode=oaipmh&verb=GetRecord&identifier=urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f&metadataPrefix=oai_dc +GetRecord_iso,mode=oaipmh&verb=GetRecord&identifier=urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f&metadataPrefix=iso19139 +ListIdentifiers_missing_metadata_prefix,mode=oaipmh&verb=ListIdentifiers +ListIdentifiers_dc,mode=oaipmh&verb=ListIdentifiers&metadataPrefix=csw-record +ListIdentifiers_iso,mode=oaipmh&verb=ListIdentifiers&metadataPrefix=iso19139 +ListIdentifiers_oai_dc,mode=oaipmh&verb=ListIdentifiers&metadataPrefix=oai_dc +ListIdentifiers_bad_metadata_prefix,mode=oaipmh&verb=ListIdentifiers&metadataPrefix=foo +ListRecords_dc,mode=oaipmh&verb=ListRecords&metadataPrefix=csw-record +ListRecords_dc_bad_metadata_prefix,mode=oaipmh&verb=ListRecords&metadataPrefix=csw-recording +ListRecords_oai_dc,mode=oaipmh&verb=ListRecords&metadataPrefix=oai_dc +ListRecords_iso19139,mode=oaipmh&verb=ListRecords&metadataPrefix=iso19139 diff --git a/tests/suites/repofilter/default.cfg b/tests/functionaltests/suites/repofilter/default.cfg similarity index 100% rename from tests/suites/repofilter/default.cfg rename to tests/functionaltests/suites/repofilter/default.cfg diff --git a/tests/expected/suites_repofilter_post_GetRecordById-masked.xml b/tests/functionaltests/suites/repofilter/expected/post_GetRecordById-masked.xml similarity index 100% rename from tests/expected/suites_repofilter_post_GetRecordById-masked.xml rename to tests/functionaltests/suites/repofilter/expected/post_GetRecordById-masked.xml diff --git a/tests/expected/suites_repofilter_post_GetRecords-all.xml b/tests/functionaltests/suites/repofilter/expected/post_GetRecords-all.xml similarity index 100% rename from tests/expected/suites_repofilter_post_GetRecords-all.xml rename to tests/functionaltests/suites/repofilter/expected/post_GetRecords-all.xml diff --git a/tests/suites/repofilter/post/GetRecordById-masked.xml b/tests/functionaltests/suites/repofilter/post/GetRecordById-masked.xml similarity index 100% rename from tests/suites/repofilter/post/GetRecordById-masked.xml rename to tests/functionaltests/suites/repofilter/post/GetRecordById-masked.xml diff --git a/tests/suites/repofilter/post/GetRecords-all.xml b/tests/functionaltests/suites/repofilter/post/GetRecords-all.xml similarity index 100% rename from tests/suites/repofilter/post/GetRecords-all.xml rename to tests/functionaltests/suites/repofilter/post/GetRecords-all.xml diff --git a/tests/suites/sru/default.cfg b/tests/functionaltests/suites/sru/default.cfg similarity index 100% rename from tests/suites/sru/default.cfg rename to tests/functionaltests/suites/sru/default.cfg diff --git a/tests/expected/suites_sru_get_explain.xml b/tests/functionaltests/suites/sru/expected/get_explain.xml similarity index 100% rename from tests/expected/suites_sru_get_explain.xml rename to tests/functionaltests/suites/sru/expected/get_explain.xml diff --git a/tests/expected/suites_sru_get_search.xml b/tests/functionaltests/suites/sru/expected/get_search.xml similarity index 100% rename from tests/expected/suites_sru_get_search.xml rename to tests/functionaltests/suites/sru/expected/get_search.xml diff --git a/tests/expected/suites_sru_get_search_cql.xml b/tests/functionaltests/suites/sru/expected/get_search_cql.xml similarity index 100% rename from tests/expected/suites_sru_get_search_cql.xml rename to tests/functionaltests/suites/sru/expected/get_search_cql.xml diff --git a/tests/expected/suites_sru_get_search_maxrecords.xml b/tests/functionaltests/suites/sru/expected/get_search_maxrecords.xml similarity index 100% rename from tests/expected/suites_sru_get_search_maxrecords.xml rename to tests/functionaltests/suites/sru/expected/get_search_maxrecords.xml diff --git a/tests/expected/suites_sru_get_search_startrecord_maxrecords.xml b/tests/functionaltests/suites/sru/expected/get_search_startrecord_maxrecords.xml similarity index 100% rename from tests/expected/suites_sru_get_search_startrecord_maxrecords.xml rename to tests/functionaltests/suites/sru/expected/get_search_startrecord_maxrecords.xml diff --git a/tests/functionaltests/suites/sru/get/requests.txt b/tests/functionaltests/suites/sru/get/requests.txt new file mode 100644 index 000000000..3db4b8cd0 --- /dev/null +++ b/tests/functionaltests/suites/sru/get/requests.txt @@ -0,0 +1,5 @@ +explain,mode=sru +search,mode=sru&version=1.1&operation=searchRetrieve&query=lor +search_maxrecords,mode=sru&operation=searchRetrieve&query=lor&maximumRecords=2 +search_startrecord_maxrecords,mode=sru&operation=searchRetrieve&query=lor&maximumRecords=2&startRecord=1 +search_cql,mode=sru&operation=searchRetrieve&query=dc:title%20like%20'%lor%'&maximumRecords=5 diff --git a/tests/suites/utf-8/default.cfg b/tests/functionaltests/suites/utf-8/default.cfg similarity index 100% rename from tests/suites/utf-8/default.cfg rename to tests/functionaltests/suites/utf-8/default.cfg diff --git a/tests/expected/suites_utf-8_post_GetCapabilities.xml b/tests/functionaltests/suites/utf-8/expected/post_GetCapabilities.xml similarity index 100% rename from tests/expected/suites_utf-8_post_GetCapabilities.xml rename to tests/functionaltests/suites/utf-8/expected/post_GetCapabilities.xml diff --git a/tests/suites/utf-8/post/GetCapabilities.xml b/tests/functionaltests/suites/utf-8/post/GetCapabilities.xml similarity index 100% rename from tests/suites/utf-8/post/GetCapabilities.xml rename to tests/functionaltests/suites/utf-8/post/GetCapabilities.xml diff --git a/tests/functionaltests/test_suites_functional.py b/tests/functionaltests/test_suites_functional.py new file mode 100644 index 000000000..2ccabcc8a --- /dev/null +++ b/tests/functionaltests/test_suites_functional.py @@ -0,0 +1,346 @@ +# ================================================================= +# +# Authors: Ricardo Garcia Silva +# Tom Kralidis +# +# Copyright (c) 2016 Ricardo Garcia Silva +# Copyright (c) 2016 Tom Kralidis +# +# Permission is hereby granted, free of charge, to any person +# obtaining a copy of this software and associated documentation +# files (the "Software"), to deal in the Software without +# restriction, including without limitation the rights to use, +# copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following +# conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +# OTHER DEALINGS IN THE SOFTWARE. +# +# ================================================================= +"""Functional tests for several test suites""" + +import codecs +from difflib import SequenceMatcher +from io import BytesIO +import json +import re +import wsgiref.util + +from lxml import etree +from lxml import objectify +import pytest + +from pycsw import server + +pytestmark = pytest.mark.functional + + +def test_suites(configuration, request_method, request_data, expected_result, + normalize_identifier_fields): + """Test suites. + + This function is automatically parametrized by pytest as a result of the + ``conftest:pytest_generate_tests`` function. The input parameters are thus + supplied by pytest as a result of discovering and parsing the existing + test suites located under ``tests/functionaltests/suites``. + + Parameters + ---------- + configuration: SafeConfigParser + The configuration to use with the pycsw server instance under test + request_method: str + The HTTP method of the request. Either GET or POST. + request_data: str + Either the path to the request file, for POST requests or the request + parameters for GET requests + expected_result: str + Path to the file that holds the expected result + normalize_identifier_fields: bool + Whether to normalize the identifier fields in responses. This + parameter is used only in the 'harvesting' and 'manager' suites + + """ + + request_environment = _prepare_wsgi_test_environment(request_method, + request_data) + pycsw_server = server.Csw(rtconfig=configuration, env=request_environment) + encoding = "utf-8" + status, raw_contents = pycsw_server.dispatch_wsgi() + contents = raw_contents.decode(encoding) + with codecs.open(expected_result, encoding=encoding) as fh: + expected = fh.read() + normalized_result = _normalize( + contents, + normalize_identifiers=normalize_identifier_fields + ) + try: + matches_expected = _test_xml_result(normalized_result, expected) + except etree.XMLSyntaxError: + # the file is either not XML (perhaps JSON?) or malformed + matches_expected = _test_json_result(normalized_result, expected) + except etree.C14NError: + print("XML canonicalization has failed. Trying to compare result " + "with expected using difflib") + matches_expected = _test_xml_diff(normalized_result, expected) + if not matches_expected: + print("expected: {0}".format(expected.encode(encoding))) + print("response: {0}".format(normalized_result.encode(encoding))) + #print("expected: {0}".format(expected)) + #print("response: {0}".format(normalized_result)) + assert matches_expected + + +def _prepare_wsgi_test_environment(request_method, request_data): + """Set up a testing environment for tests. + + Parameters + ---------- + request_method: str + The HTTP method of the request. Sould be either GET or POST. + request_data: str + Either the path to the request file, for POST requests or the request + parameters for GET requests. + + Returns + ------- + dict + A dict with the environment variables to use in the test + + """ + + request_environment = { + "REQUEST_METHOD": request_method.upper(), + "QUERY_STRING": "", + "REMOTE_ADDR": "127.0.0.1" + } + if request_method == "POST": + print("request_path: {0}".format(request_data)) + request_buffer = BytesIO() + encoding = "utf-8" + with codecs.open(request_data, encoding=encoding) as fh: + contents = fh.read() + request_buffer.write(contents.encode(encoding)) + request_environment["CONTENT_LENGTH"] = request_buffer.tell() + request_buffer.seek(0) + request_environment["wsgi.input"] = request_buffer + else: + print("Request contents: {0}".format(request_data)) + request_environment["QUERY_STRING"] = request_data + wsgiref.util.setup_testing_defaults(request_environment) + return request_environment + + +def _test_xml_result(result, expected, encoding="utf-8"): + """Compare the XML test results with an expected value. + + This function compares the test result with the expected values by + performing XML canonicalization (c14n)[1]_, which compares the semantic + meanings of both XML files. + + Parameters + ---------- + result: str + The result of running the test as a unicode string + expected: str + The expected outcome as a unicode string. + + Returns + ------- + bool + Whether the result matches the expectations or not. + + Raises + ------ + etree.XMLSyntaxError + If any of the input parameters is not a valid XMl. + etree.C14NError + If any of the input parameters cannot be canonicalized. This may + happen if there are relative namespace URIs in any of the XML + documents, as they are explicitly not allowed when doing XML c14n + + References + ---------- + .. [1] http://www.w3.org/TR/xml-c14n + + """ + + result_element = etree.fromstring(result.encode(encoding)) + expected_element = etree.fromstring(expected.encode(encoding)) + result_buffer = BytesIO() + result_tree = result_element.getroottree() + objectify.deannotate(result_tree, cleanup_namespaces=True) + result_tree.write_c14n(result_buffer) + expected_buffer = BytesIO() + expected_tree = expected_element.getroottree() + objectify.deannotate(expected_tree, cleanup_namespaces=True) + expected_tree.write_c14n(expected_buffer) + matches = result_buffer.getvalue() == expected_buffer.getvalue() + return matches + + +def _test_json_result(result, expected, encoding="utf-8"): + """Compare the JSON test results with an expected value. + + Parameters + ---------- + result: str + The result of running the test. + expected: str + The expected outcome. + + Returns + ------- + bool + Whether the result matches the expectations or not. + + """ + + result_dict = json.loads(result, encoding=encoding) + expected_dict = json.loads(expected, encoding=encoding) + return result_dict == expected_dict + + +def _test_xml_diff(result, expected): + """Compare two XML strings by using python's ``difflib.SequenceMatcher``. + + This is a character-by-cahracter comparison and does not take into account + the semantic meaning of XML elements and attributes. + + Parameters + ---------- + result: str + The result of running the test. + expected: str + The expected outcome. + + Returns + ------- + bool + Whether the result matches the expectations or not. + + """ + + sequence_matcher = SequenceMatcher(None, result, expected) + ratio = sequence_matcher.ratio() + return ratio == pytest.approx(1.0) + + +def _normalize(sresult, normalize_identifiers=False): + """Normalize test output so it can be compared with the expected result. + + Several dynamic elements of a pycsw response (such as time, + updateSequence, etc) are replaced with static constants to ease comparison. + + Parameters + ---------- + sresult: str + The test result as a unicode string. + normalize_identifiers: bool, optional + Whether identifier fields should be normalized. + + Returns + ------- + str + The normalized response. + + """ + + # XML responses + version = re.search(r'', sresult) + updatesequence = re.search(r'updateSequence="(\S+)"', sresult) + timestamp = re.search(r'timestamp="(.*)"', sresult) + timestamp2 = re.search(r'timeStamp="(.*)"', sresult) + timestamp3 = re.search( + r'(.*)', + sresult + ) + timestamp4 = re.search( + r'(.*)', + sresult + ) + zrhost = re.search(r'(.*)', sresult) + zrport = re.search(r'(.*)', sresult) + elapsed_time = re.search(r'elapsedTime="(.*)"', sresult) + expires = re.search(r'expires="(.*?)"', sresult) + atom_updated = re.findall(r'(.*)', + sresult) + if version: + sresult = sresult.replace(version.group(0), + r'') + if updatesequence: + sresult = sresult.replace(updatesequence.group(0), + r'updateSequence="PYCSW_UPDATESEQUENCE"') + if timestamp: + sresult = sresult.replace(timestamp.group(0), + r'timestamp="PYCSW_TIMESTAMP"') + if timestamp2: + sresult = sresult.replace(timestamp2.group(0), + r'timeStamp="PYCSW_TIMESTAMP"') + if timestamp3: + sresult = sresult.replace( + timestamp3.group(0), + r'PYCSW_TIMESTAMP' + ) + if timestamp4: + sresult = sresult.replace( + timestamp4.group(0), + r'PYCSW_TIMESTAMP' + ) + if zrport: + sresult = sresult.replace(zrport.group(0), + r'PYCSW_PORT') + if zrhost: + sresult = sresult.replace(zrhost.group(0), + r'PYCSW_HOST') + if elapsed_time: + sresult = sresult.replace(elapsed_time.group(0), + r'elapsedTime="PYCSW_ELAPSED_TIME"') + if expires: + sresult = sresult.replace(expires.group(0), + r'expires="PYCSW_EXPIRES"') + for au in atom_updated: + sresult = sresult.replace(au, r'PYCSW_TIMESTAMP') + # for csw:HarvestResponse documents, mask identifiers + # which are dynamically generated for OWS endpoints + if sresult.find(r'HarvestResponse') != -1: + identifier = re.findall( + r'(\S+)', + sresult + ) + for i in identifier: + sresult = sresult.replace(i, r'PYCSW_IDENTIFIER') + # JSON responses + timestamp = re.search(r'"@timestamp": "(.*?)"', sresult) + + if timestamp: + sresult = sresult.replace(timestamp.group(0), + r'"@timestamp": "PYCSW_TIMESTAMP"') + # harvesting-based GetRecords/GetRecordById responses + if normalize_identifiers: + dcid = re.findall( + r'(urn:uuid.*)', + sresult + ) + isoid = re.findall(r'id="(urn:uuid.*)"', sresult) + isoid2 = re.findall( + r'(urn:uuid.*) ''') -for root, dirs, files in os.walk('suites'): +for root, dirs, files in os.walk('functionaltests/suites'): if files: for sfile in files: if os.path.splitext(sfile)[1] in ['.xml']: # it's a POST request query = '%s%s%s' % (root.replace(os.sep, '/'), '/', sfile) - print(' ' % (root.split(os.sep)[1], query, query)) + print(' ' % (root.split(os.sep)[1], query, query)) print(''' @@ -133,16 +131,21 @@
    ''') -for root, dirs, files in os.walk('suites'): +for root, dirs, files in os.walk('functionaltests/suites'): if files: for sfile in files: if sfile == 'requests.txt': # it's a list of GET requests - with open('%s%s%s' % (root.replace(os.sep, '/'), '/', sfile)) as f: - gets = csv.reader(f) - for row in gets: - baseurl, query_string = row[1].split('?') - query = '%s?%s' % (baseurl.replace('PYCSW_SERVER', '../csw.py'), query_string.replace('&', '&')) - print('
  • %s
  • ' % (query, row[0])) + file_path = os.path.join(root, sfile) + with open(file_path) as f: + for line in f: + name, query_string = line.strip().partition(",")[::2] + baseurl = "../csw.py" + query = "{baseurl}?{query_string}".format( + baseurl=baseurl, + query_string=query_string.replace("&", "&") + ) + print('
  • {name}
  • '.format( + query=query, name=name)) print('''

diff --git a/tests/run_tests.py b/tests/run_tests.py deleted file mode 100644 index bae2e4bea..000000000 --- a/tests/run_tests.py +++ /dev/null @@ -1,575 +0,0 @@ -#!/usr/bin/python -# ================================================================= -# -# Authors: Tom Kralidis -# Ricardo Garcia Silva -# -# Copyright (c) 2016 Tom Kralidis -# Copyright (c) 2016 Ricardo Garcia Silva -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. -# -# ================================================================= - -# simple testing framework inspired by MapServer msautotest - -import codecs -import csv -import filecmp -import getopt -import glob -from io import BytesIO -import json -import os -import re -import sys -import time - -from lxml import etree -from lxml import objectify - -from pycsw.core.util import get_elapsed_time, http_request - -ENCODING = 'utf-8' - -def plural(num): - """Determine plurality given an integer""" - if num != 1: - return 's' - else: - return '' - - -def test_xml_result(result, expected, encoding=ENCODING): - """Compare the XML test results with an expected value. - - This function compares the test result with the expected values by - performing XML canonicalization (c14n)[1]_. - - Parameters - ---------- - result: str - The result of running the test. - expected: str - The expected outcome. - - Returns - ------- - bool - Whether the result matches the expectations or not. - - Raises - ------ - etree.XMLSyntaxError - If any of the input parameters is not a valid XMl. - etree.C14NError - If any of the input parameters cannot be canonicalized. This may - happen if there are relative namespace URIs in any of the XML - documents, as they are explicitly not allowed when doing XML c14n - - References - ---------- - .. [1] http://www.w3.org/TR/xml-c14n - - """ - - try: - result_element = etree.fromstring(result) - expected_element = etree.fromstring(expected.encode(encoding)) - result_buffer = BytesIO() - result_tree = result_element.getroottree() - objectify.deannotate(result_tree, cleanup_namespaces=True) - result_tree.write_c14n(result_buffer) - expected_buffer = BytesIO() - expected_tree = expected_element.getroottree() - objectify.deannotate(expected_tree, cleanup_namespaces=True) - expected_tree.write_c14n(expected_buffer) - matches = result_buffer.getvalue() == expected_buffer.getvalue() - if not matches: - print("result:") - print(result_buffer.getvalue()) - print("+++++++++++++++++++++++") - print("expected:") - print(expected_buffer.getvalue()) - - except etree.XMLSyntaxError: - matches = None - return matches - - -def test_json_result(result, expected, encoding=ENCODING): - """Compare the JSON test results with an expected value. - - Parameters - ---------- - result: str - The result of running the test. - expected: str - The expected outcome. - - Returns - ------- - bool - Whether the result matches the expectations or not. - - """ - - try: - result_dict = json.loads(result.decode(encoding), encoding=encoding) - expected_dict = json.loads(expected, encoding=encoding) - except ValueError: - matches = None - else: - matches = result_dict == expected_dict - return matches - - -def get_validity(expected_path, result, output_file_name, force_id_mask=False): - """Test whether the test result matches the expected outcome. - - This function deals with both XML and JSON results. It first tries to - parse the result and the expected outcome as XML and evaluates them using - XML canonicalization (c14n). If the result cannot be parsed as XML, it then - tries to load it as JSON and does a sorted comparison. - - Parameters - ---------- - expected_path: str - The path to the file that has the expected test outcome - result: str - The actual result that was generated by running the test code - output_file_name: str - Name of the file that will be written to disk with the contents of - the result - force_id_mask: bool, optional - Whether to apply result normalization to id fields - - Returns - ------- - int - One of three possible values: - - * If the input `expected_path` could not be found, the results will - be used to generate a new expected file. In this case the return - value will be 0; - * If the result matches the expected outcome, the return value is 1; - * If the result does not match the expected outcome the return value is - -1. - - """ - - normalized_result = normalize(result, force_id_mask=force_id_mask) - if not os.path.exists(expected_path): # create expected file - with codecs.open(expected_path, 'w', encoding=ENCODING) as f: - f.write(normalized_result) - status = 0 - else: # compare result with expected - with codecs.open(expected_path, encoding=ENCODING) as expected_fh: - expected = expected_fh.read() - matches_expected = test_xml_result(normalized_result, expected) - if matches_expected is None: - # the file is either not XML (perhaps JSON?) or malformed - matches_expected = test_json_result( - normalized_result, expected, encoding=ENCODING) - if matches_expected: # pass - status = 1 - else: # failed - status = -1 - if not os.path.exists('results'): - os.mkdir('results') - with open('results%s%s' % (os.sep, output_file_name), 'wb') as f: - f.write(normalized_result) - return status - - -def pedantic_get_validity(sexpected, sresult, soutfile, force_id_mask=False): - """Decipher whether the output passes, fails, or initializes""" - if not os.path.exists(sexpected): # create expected file - with open(sexpected, 'w') as f: - f.write(normalize(sresult, force_id_mask)) - sstatus = 0 - else: # compare result with expected - if not os.path.exists('results'): - os.mkdir('results') - with open('results%s%s' % (os.sep, soutfile), 'wb') as f: - f.write(normalize(sresult, force_id_mask)) - if filecmp.cmp(sexpected, 'results%s%s' % (os.sep, soutfile)): # pass - os.remove('results%s%s' % (os.sep, soutfile)) - sstatus = 1 - else: # fail - import difflib - with codecs.open(sexpected, encoding=ENCODING) as a: - with codecs.open('results%s%s' % (os.sep, soutfile), - encoding=ENCODING) as b: - a2 = a.readlines() - b2 = b.readlines() - diff = difflib.unified_diff(a2, b2) - print('\n'.join(list(diff))) - if len(a2) != len(b2): - print('LINE COUNT: expected: %d, result: %d' % (len(a2), len(b2))) - sstatus = -1 - return sstatus - - -def normalize(sresult, force_id_mask=False): - """Replace time, updateSequence and version specific values with generic - values""" - - # XML responses - version = re.search(b'', sresult) - updatesequence = re.search(b'updateSequence="(\S+)"', sresult) - timestamp = re.search(b'timestamp="(.*)"', sresult) - timestamp2 = re.search(b'timeStamp="(.*)"', sresult) - timestamp3 = re.search(b'(.*)', sresult) - timestamp4 = re.search(b'(.*)', sresult) - zrhost = re.search(b'(.*)', sresult) - zrport = re.search(b'(.*)', sresult) - elapsed_time = re.search(b'elapsedTime="(.*)"', sresult) - expires = re.search(b'expires="(.*?)"', sresult) - atom_updated = re.findall(b'(.*)', sresult) - - if version: - sresult = sresult.replace(version.group(0), b'') - if updatesequence: - sresult = sresult.replace(updatesequence.group(0), - b'updateSequence="PYCSW_UPDATESEQUENCE"') - if timestamp: - sresult = sresult.replace(timestamp.group(0), - b'timestamp="PYCSW_TIMESTAMP"') - if timestamp2: - sresult = sresult.replace(timestamp2.group(0), - b'timeStamp="PYCSW_TIMESTAMP"') - if timestamp3: - sresult = sresult.replace(timestamp3.group(0), - b'PYCSW_TIMESTAMP') - if timestamp4: - sresult = sresult.replace(timestamp4.group(0), - b'PYCSW_TIMESTAMP') - if zrport: - sresult = sresult.replace(zrport.group(0), - b'PYCSW_PORT') - if zrhost: - sresult = sresult.replace(zrhost.group(0), - b'PYCSW_HOST') - if elapsed_time: - sresult = sresult.replace(elapsed_time.group(0), - b'elapsedTime="PYCSW_ELAPSED_TIME"') - if expires: - sresult = sresult.replace(expires.group(0), - b'expires="PYCSW_EXPIRES"') - for au in atom_updated: - sresult = sresult.replace(au, b'PYCSW_TIMESTAMP') - - # for csw:HarvestResponse documents, mask identifiers - # which are dynamically generated for OWS endpoints - if sresult.find(b'HarvestResponse') != -1: - identifier = re.findall(b'(\S+)', - sresult) - for i in identifier: - sresult = sresult.replace(i, b'PYCSW_IDENTIFIER') - - # JSON responses - timestamp = re.search(b'"@timestamp": "(.*?)"', sresult) - - if timestamp: - sresult = sresult.replace(timestamp.group(0), - b'"@timestamp": "PYCSW_TIMESTAMP"') - - # harvesting-based GetRecords/GetRecordById responses - if force_id_mask: - dcid = re.findall(b'(urn:uuid.*)', sresult) - isoid = re.findall(b'id="(urn:uuid.*)"', sresult) - isoid2 = re.findall(b'(urn:uuid.*) [-l logfile] [-s suite1[,suite2]] - - Available options: - - -u URL to test - - -l log results to file - - -s testsuites to run (comma-seperated list) - - -p run tests in pedantic mode (byte level diff check) (default: c14n mode) - - -d database (SQLite3 [default], PostgreSQL, MySQL) - - -r run tests which harvest remote resources (default off) - - -t time (milliseconds) in which requests should complete - -EXAMPLES - - 1.) default test example - - run_tests.py -u http://localhost:8000/ - - 2.) log results to logfile - - run_tests.py -u http://localhost:8000/ -l /path/to/results.log - - 3.) run only specified testsuites - - run_tests.py -u http://localhost:8000/ -s default,apiso - - 4.) run tests including remote harvest tests - - run_tests.py -u http://localhost:8000/ -s default,apiso -r - - 5.) default test example with 1000ms time benchmark - - run_tests.py -u http://localhost:8000/ -t 1000 - - -''' - -# main - -if len(sys.argv) < 2: - print(usage()) - sys.exit(1) - -URL = sys.argv[1] - -URL = None -LOGFILE = None -TESTSUITES = [] - -PASSED = 0 -FAILED = 0 -WARNING = 0 -INITED = 0 - -LOGWRITER = None -DATABASE = 'SQLite3' -REMOTE = False -PEDANTIC = False -TIME = None - -try: - OPTS, ARGS = getopt.getopt(sys.argv[1:], 'u:l:s:d:t:rhp') -except getopt.GetoptError as err: - print('\nERROR: %s' % err) - print(usage()) - sys.exit(2) - -for o, a in OPTS: - if o == '-u': - URL = a - if o == '-l': - LOGFILE = a - if o == '-d': - DATABASE = a - if o == '-t': - TIME = int(a) - if o == '-r': - REMOTE = True - if o == '-p': - PEDANTIC = True - if o == '-s': - TESTSUITES = a.split(',') - if o == '-h': # dump help and exit - print(usage()) - sys.exit(3) - -print('\nRunning tests against %s' % URL) - -if LOGFILE is not None: # write detailed output to CSV - LOGWRITER = csv.writer(open(LOGFILE, 'wb')) - LOGWRITER.writerow(['url', 'configuration', 'testname', 'result']) - -if TIME is not None: # perform benchmarking - print('Benchmark: %dms' % TIME) - -if TESTSUITES: - if 'harvesting' in TESTSUITES: - REMOTE = True - TESTSUITES_LIST = ['suites%s%s' % (os.sep, x) for x in TESTSUITES] -else: - TESTSUITES_LIST = glob.glob('suites%s*' % os.sep) - -for testsuite in TESTSUITES_LIST: - if not os.path.exists(testsuite): - raise RuntimeError('Testsuite %s not found' % testsuite) - - if testsuite == 'suites%sharvesting' % os.sep and not REMOTE: - continue - - force_id_mask = False - if testsuite in ['suites%smanager' % os.sep, 'suites%sharvesting' % os.sep]: - force_id_mask = True - - # get configuration - for cfg in glob.glob('%s%s*.cfg' % (testsuite, os.sep)): - print('\nTesting configuration %s' % cfg) - - for root, dirs, files in os.walk(testsuite): - if files: - for sfile in sorted(files): - if os.path.splitext(sfile)[1] not in ['.xml', '.txt']: - break - - if sfile == 'requests.txt': # GET requests - filename = '%s%s%s' % (root, os.sep, sfile) - with open(filename) as f: - gets = csv.reader(f) - for row in gets: - testfile = '%s%s%s' % (root, os.sep, sfile) - request = ','.join(row[1:]).replace('PYCSW_SERVER', - URL) - outfile = '%s%s' % (root.replace(os.sep, '_'), - '_%s.xml' % row[0]) - expected = 'expected%s%s' % (os.sep, outfile) - print('\n test %s:%s' % (testfile, row[0])) - - try: - begin = time.time() - result = http_request('GET', request) - end = time.time() - elapsed = get_elapsed_time(begin, end) - print(' completed in %dms' % elapsed) - except Exception as err: - result = err.read() - if PEDANTIC: - status = pedantic_get_validity( - expected, result, outfile, - force_id_mask - ) - else: - try: - status = get_validity(expected, result, - outfile, - force_id_mask) - except etree.C14NError: - print("Could not canonicalize {0}. " - "Using pedantic " - "mode".format(row[0])) - status = pedantic_get_validity( - expected, result, outfile, - force_id_mask - ) - - if status == 1: - print(' passed') - PASSED += 1 - elif status == 0: - print(' initialized') - INITED += 1 - elif status == -1 and DATABASE == 'PostgreSQL': - print(' warning: possible collation issue') - WARNING += 1 - else: - print(' FAILED') - FAILED += 1 - - if TIME and get_elapsed_time(begin, end) > TIME: - print(' FAILED BENCHMARK') - - if LOGWRITER is not None: - LOGWRITER.writerow([URL, cfg, - testfile, status]) - - else: # POST requests - testfile = '%s%s%s' % (root, os.sep, sfile) - if '%sdata' % os.sep in testfile: # sample data - break - outfile = '%s%s' % (os.sep, - testfile.replace(os.sep, '_')) - expected = 'expected%s%s' % (os.sep, outfile) - print('\n test %s' % testfile) - - # read test - with codecs.open(testfile, encoding=ENCODING) as fh: - request = fh.read().encode(ENCODING) - - configkvp = 'config=tests%s%s' % (os.sep, cfg) - url2 = '%s?%s' % (URL, configkvp) - - # invoke request - try: - begin = time.time() - result = http_request('POST', url2, request) - end = time.time() - elapsed = get_elapsed_time(begin, end) - print(' completed in %dms' % elapsed) - except Exception as err: - result = err.read() - if PEDANTIC: - status = pedantic_get_validity( - expected, result, outfile, force_id_mask) - else: - try: - status = get_validity(expected, result, outfile, - force_id_mask) - except etree.C14NError: - print("Could not canonicalize {0}. Using " - "pedantic mode".format(sfile)) - status = pedantic_get_validity( - expected, result, outfile, force_id_mask) - - if status == 1: - print(' passed') - PASSED += 1 - elif status == 0: - print(' initialized') - INITED += 1 - elif status == -1 and DATABASE == 'PostgreSQL': - print(' warning: possible sorting collation issue') - WARNING += 1 - else: - print(' FAILED') - FAILED += 1 - - if TIME and get_elapsed_time(begin, end) > TIME: - print(' FAILED BENCHMARK') - - if LOGWRITER is not None: - LOGWRITER.writerow([URL, cfg, testfile, status]) - -if LOGWRITER is not None: - LOGWRITER.close() - -print('\nResults (%d/%d - %.2f%%)' % - (PASSED, PASSED + FAILED, float(PASSED) / float(PASSED + FAILED) * 100)) -print(' %d test%s passed' % (PASSED, plural(PASSED))) -print(' %d test%s warnings' % (WARNING, plural(WARNING))) -print(' %d test%s failed' % (FAILED, plural(FAILED))) -print(' %d test%s initialized' % (INITED, plural(INITED))) - -sys.exit(FAILED) diff --git a/tests/suites/apiso-inspire/get/requests.txt b/tests/suites/apiso-inspire/get/requests.txt deleted file mode 100644 index 862e409d5..000000000 --- a/tests/suites/apiso-inspire/get/requests.txt +++ /dev/null @@ -1,2 +0,0 @@ -GetCapabilities,PYCSW_SERVER?config=tests/suites/apiso-inspire/default.cfg&service=CSW&version=2.0.2&request=GetCapabilities -GetCapabilities-lang,PYCSW_SERVER?config=tests/suites/apiso-inspire/default.cfg&service=CSW&version=2.0.2&request=GetCapabilities&lang=gre diff --git a/tests/suites/atom/get/requests.txt b/tests/suites/atom/get/requests.txt deleted file mode 100644 index ba73cf845..000000000 --- a/tests/suites/atom/get/requests.txt +++ /dev/null @@ -1,12 +0,0 @@ -opensearch,PYCSW_SERVER?config=tests/suites/atom/default.cfg&mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&resulttype=results&elementsetname=brief -opensearch-description,PYCSW_SERVER?config=tests/suites/atom/default.cfg&mode=opensearch&service=CSW&version=2.0.2&request=GetCapabilities -opensearch-ogc-q,PYCSW_SERVER?config=tests/suites/atom/default.cfg&mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&q=greece -opensearch-ogc-bbox,"PYCSW_SERVER?config=tests/suites/atom/default.cfg&mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&bbox=-180,-90,180,90" -opensearch-ogc-time,PYCSW_SERVER?config=tests/suites/atom/default.cfg&mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&time=2001/2004 -opensearch-ogc-timestart,PYCSW_SERVER?config=tests/suites/atom/default.cfg&mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&time=2004/ -opensearch-ogc-timeend,PYCSW_SERVER?config=tests/suites/atom/default.cfg&mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&time=/2004 -opensearch-ogc-q-and-time,PYCSW_SERVER?config=tests/suites/atom/default.cfg&mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&time=2001/2007&q=vitae -opensearch-ogc-bbox-and-time,"PYCSW_SERVER?config=tests/suites/atom/default.cfg&mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&time=2001/2007&bbox=-180,-90,180,90" -opensearch-ogc-q-and-bbox,"PYCSW_SERVER?config=tests/suites/atom/default.cfg&mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&q=vegetation&bbox=-180,-90,180,90" -opensearch-ogc-count-and-page1,"PYCSW_SERVER?config=tests/suites/atom/default.cfg&mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&q=vegetation&startposition=1" -opensearch-ogc-count-and-page2,"PYCSW_SERVER?config=tests/suites/atom/default.cfg&mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&q=vegetation&startposition=1&maxrecords=1" diff --git a/tests/suites/cite/get/requests.txt b/tests/suites/cite/get/requests.txt deleted file mode 100644 index 9eb5bc23f..000000000 --- a/tests/suites/cite/get/requests.txt +++ /dev/null @@ -1,22 +0,0 @@ -27e17158-c57a-4493-92ac-dba8934cf462,PYCSW_SERVER?config=tests/suites/cite/default.cfg&service=CSW&version=2.0.2&request=GetCapabilities -27f69b66-5f05-4311-a89c-73ca55c2686b,PYCSW_SERVER?config=tests/suites/cite/default.cfg&Service=CSW&Version=2.0.2&Request=GetRecordById&ElementSetName=brief&ID=urn%3Auuid%3A19887a8a-f6b0-4a63-ae56-7fba0e17801f -2ab7d1fa-885b-459f-80e4-b6282eab4f8c,PYCSW_SERVER?config=tests/suites/cite/default.cfg&service=CSW&request=GetCapabilities&acceptversions=2.0.2&date=2006-10-20 -37aa90e2-6ff0-420c-af15-8b9463099a73,PYCSW_SERVER?config=tests/suites/cite/default.cfg&service=CSW&version=2.0.2&request=GetRecordById&id=urn%3Auuid%3A9a669547-b69b-469f-a11f-2d875366bbdc -3a8a3c47-455f-4f49-9078-03119f3e70b3,PYCSW_SERVER?config=tests/suites/cite/default.cfg&service=CSW&request=GetCapabilities&acceptformats=message/example -4515831f-834a-4699-95f6-ab0c2cbfcfd0,PYCSW_SERVER?config=tests/suites/cite/default.cfg&service=CSW&version=2.0.2&request=GetRecordById -477b23a3-baa9-47c8-9541-5fe27735ed49,PYCSW_SERVER?config=tests/suites/cite/default.cfg&service=CSW&request=GetCapabilities§ions= -48f26761-3a9d-48db-bee1-da089f5fb857,PYCSW_SERVER?config=tests/suites/cite/default.cfg&sErViCe=CSW&REQUEST=GetCapabilities&version=2.0.2 -4e38092f-1586-44b8-988e-0acfa5855916,PYCSW_SERVER?config=tests/suites/cite/default.cfg&Service=CSW&Version=2.0.2&Request=GetRecordById&OutputFormat=application/bogus_xml&id=urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2,urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f,urn:uuid:ab42a8c4-95e8-4630-bf79-33e59241605a -55c38f00-2553-42c1-99ab-33edbb561ad7,PYCSW_SERVER?config=tests/suites/cite/default.cfg&service=CSW&request=GetCapabilities§ions=OperationsMetadata,ServiceIdentification -5ab5db18-c87a-4fbf-a8d8-b7289b09ac81,PYCSW_SERVER?config=tests/suites/cite/default.cfg&service=FOO&request=GetCapabilities -6a4f57ca-a1bd-4802-89c2-44860dbdb0f0,PYCSW_SERVER?config=tests/suites/cite/default.cfg&service=CSW&version=2.0.2&request=GetRecordById&id=urn:uuid:ce8627a0-685c-11db-bd13-0800200c9a66,urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4 -6c375703-9c00-4aef-bec7-d2e964f849eb,PYCSW_SERVER?config=tests/suites/cite/default.cfg&Service=CSW&Version=2.0.2&Request=GetRecordById&OutputSchema=http://www.w3.org/2005/Atom&Id=urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f -80f31def-4185-48b9-983a-960566918eae,PYCSW_SERVER?config=tests/suites/cite/default.cfg&service=CSW&request=GetCapabilities -8e2232ed-05d9-44ae-8b04-0911cbe6a507,PYCSW_SERVER?config=tests/suites/cite/default.cfg&SERVICE=CSW&REQUEST=GetCapabilities&ACCEPTVERSIONS=2006.10.29 -9697f0aa-3b6a-4125-83a5-61e8826127c4,PYCSW_SERVER?config=tests/suites/cite/default.cfg&service=CSW&request=GetCapabilities -9bfd17fa-15dc-4a10-8fa7-b3cff7013dd7,PYCSW_SERVER?config=tests/suites/cite/default.cfg&Service=CSW&Version=2.0.2&Request=GetRecordById&ElementSetName=full&ID=urn%3Auuid%3Ae9330592-0932-474b-be34-c3a3bb67c7db -b81c3595-06d6-4693-82ea-1ff8650755ac,PYCSW_SERVER?config=tests/suites/cite/default.cfg&service=CSW&version=2.0.2&request=GetRecordById&id=urn:uuid:ce8627a0-685c-11db-bd13-0800200c9a66 -ba5fc729-3b71-47a0-b7d0-42ec565cd185,PYCSW_SERVER?config=tests/suites/cite/default.cfg&SERVICE=CSW&REQUEST=GetCapabilities&ACCEPTVERSIONS=2.0.2,2.0.0 -c4ea754f-c158-4d8d-8253-dc8f86021b52,PYCSW_SERVER?config=tests/suites/cite/default.cfg&request=GetCapabilities -f4692ec5-9547-4a05-88ab-e6154af2640a,PYCSW_SERVER?config=tests/suites/cite/default.cfg&service=CSW&version=2.0.2&request=GetCapabilities -f997f25e-c865-4d53-a362-0ed1846337f2,PYCSW_SERVER?config=tests/suites/cite/default.cfg&service=CSW&version=2.0.2&request=GetRecordById&id=urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 diff --git a/tests/suites/csw30/get/requests.txt b/tests/suites/csw30/get/requests.txt deleted file mode 100644 index d93dd98d0..000000000 --- a/tests/suites/csw30/get/requests.txt +++ /dev/null @@ -1,82 +0,0 @@ -GetCapabilities-base-url,PYCSW_SERVER?config=tests/suites/csw30/default.cfg -GetCapabilities-no-version,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&service=CSW&request=GetCapabilities -GetCapabilities,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&service=CSW&version=3.0.0&request=GetCapabilities -Exception-invalid-request,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&service=CSW&version=3.0.0&request=GetCapabilities-foo -Exception-GetDomain,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&service=CSW&version=3.0.0&request=GetDomain -GetDomain-parameter,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&service=CSW&version=3.0.0&request=GetDomain¶metername=GetRecords.ElementSetName -GetDomain-value-reference,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&service=CSW&version=3.0.0&request=GetDomain&valuereference=dc:title -Exception-GetDomain-value-reference,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&service=CSW&version=3.0.0&request=GetDomain&valuereference=dc:title2 -Exception-GetRecordById-dc.xml,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&service=CSW&version=3.0.0&request=GetRecordById&id=urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e -Exception-GetRecordById-404,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&service=CSW&version=3.0.0&request=GetRecordById&id=does_not_exist2 -OpenSearch-description,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&mode=opensearch&service=CSW&version=3.0.0&request=GetCapabilities -GetRepositoryItem,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&service=CSW&version=3.0.0&request=GetRepositoryItem&id=urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f -Exception-GetRepositoryItem-notfound,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&service=CSW&version=3.0.0&request=GetRepositoryItem&id=NOTFOUND -002258f0-627f-457f-b2ad-025777c77ac8,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&mode=opensearch&service=CSW&version=3.0.0&request=GetCapabilities -045c600d-973d-41eb-9f60-eba1b717b720,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=Fusc%C3%A9%20Land&bbox=&time=/&outputformat=application/atom%2Bxml&startposition=1&maxrecords=&recordids= -0bbcf862-5211-4351-9988-63f8bec49c98,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&elementSetName=summary&outputFormat=application/atom%2Bxml&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 -0bdf8457-971e-4ed1-be4a-5feca4dcd8fa,PYCSW_SERVER?config=tests/suites/csw30/default.cfg -0d8bbdec-0846-42ca-8dc8-b7f4cba41d67,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&elementName=tns:title&request=GetRecords&service=CSW&typeNames=Record&namespace=xmlns(tns%3Dhttp://purl.org/dc/elements/1.1/)&version=3.0.0 -0e1dca37-477a-4060-99fe-7799b52d656c,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=lpppclq&bbox=&time=/&outputformat=application/atom%2Bxml&startposition=1&maxrecords=&recordids= -13c87956-51a4-4780-a8e9-6e0b5c0bb473,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&elementSetName=full&maxRecords=20&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 -151d982f-ebd3-4cb2-b507-a667713a1e92,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&acceptFormats=model/x3d%2Bxml&acceptVersions=3.0.0&request=GetCapabilities&service=CSW -1869e495-1a61-4713-8285-76d1336ee1a6,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&acceptVersions=3.0.0&request=GetCapabilities -1bcb42a9-538c-4f0a-9d4c-d6f10b720aa6,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&request=GetRecordById&service=CSW&version=3.0.0 -22f44168-2ccf-4801-ad96-204212566d56,PYCSW_SERVER?config=tests/suites/csw30/default.cfg -2499a9c9-8d33-449c-bc92-d494adfcc84d,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&acceptVersions=3.0.0§ions=All&request=GetCapabilities&service=CSW -27f4f39c-d92a-4e3c-b961-c6aa8c24e513,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&acceptFormats=application/xml&acceptVersions=3.0.0&request=GetCapabilities&service=CSW -28e569df-8596-4128-8d9a-29ad03138915,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&id=urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2&request=GetRecordById&service=CSW&version=3.0.0 -2b06a5c8-0df2-4af1-8d2e-a425de11c845,PYCSW_SERVER?config=tests/suites/csw30/default.cfg -2ba1418a-444d-4cce-9cfe-4c94efcf8b55,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&maxRecords=2&elementSetName=summary&outputFormat=application/atom%2Bxml&request=GetRecords&service=CSW&typeNames=csw3:Record&startPosition=3&namespace=xmlns(csw3%3Dhttp://www.opengis.net/cat/csw/3.0)&version=3.0.0 -397fe17a-d5b4-4f96-8cc4-4ce467ed4d0a,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=ipsum&bbox=&time=/&outputformat=application/xml&outputschema=http://www.opengis.net/cat/csw/3.0&startposition=1&maxrecords=&recordids= -3dcd1b15-73d2-4b7d-a3e3-ff15bf14aae4,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&elementSetName=brief&request=GetRecords&service=CSW&typeNames=tns:Record&namespace=xmlns(tns%3Dhttp://www.opengis.net/cat/csw/3.0)&version=3.0.0 -405e1ff1-5c75-4846-a28b-cfaff2a6921a,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&elementSetName=summary&recordIds=urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f,urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 -43cd6471-6ac7-45bd-8ff9-148cb2de9a52,PYCSW_SERVER?config=tests/suites/csw30/default.cfg -4566d2ec-1283-4a02-baed-a74fc5b47e37,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&acceptVersions=3.0.0§ions=ServiceIdentification&request=GetCapabilities&service=CSW -461bd4c5-6623-490d-9036-d91a2201e87b,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&acceptVersions=3.0.0§ions=Filter_Capabilities&request=GetCapabilities&service=CSW -5496894a-3877-4f62-a20b-5d7126f94925,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=&bbox=514432,5429689,529130,5451619&time=/&outputformat=application/xml&outputschema=http://www.opengis.net/cat/csw/3.0&startposition=1&maxrecords=&recordids= -5a015f6a-bf14-4977-b1e3-6577eb0223c8,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=&bbox=-6.17,44.79,17.92,68.41&time=/&outputformat=application/xml&outputschema=http://www.opengis.net/cat/csw/3.0&startposition=1&maxrecords=&recordids= -5c3a2390-1fb9-43f0-b96c-f48c7a69c990,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&id=urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357&outputFormat=model/vnd.collada%2Bxml&request=GetRecordById&service=CSW&version=3.0.0 -5e9e67dc-18d6-4645-8111-c6263c88a61f,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&acceptVersions=3.0.0§ions=OperationsMetadata&request=GetCapabilities&service=CSW -604d9379-741c-42e5-b4cf-92e56c87fa64,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&elementSetName=full&q=amet&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 -60e6af95-d5fc-465a-82e2-fd2e6d85e4af,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&request=GetRecords&service=CSW&typeNames=UnknownType&version=3.0.0 -62ad94c2-b558-4265-a427-23d6677975d6,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=&bbox=&time=/&outputformat=application/atom%2Bxml&startposition=1&maxrecords=&recordids=uid-bc5017e6-5cc8-4b03-aee7-d88f88caba0a -6a5e247b-0961-4b8a-a0d6-35a491d9cfe7,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&elementSetName=undefined-view&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 -6a9d0558-9d87-495b-b999-b49a3ef1cf99,PYCSW_SERVER?config=tests/suites/csw30/default.cfg -6bd790c9-6019-4652-9c91-330a894d6700,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=Fusc%C3%A9%20Land&bbox=&time=/&outputformat=application/xml&outputschema=http://www.opengis.net/cat/csw/3.0&startposition=1&maxrecords=&recordids= -6e9cba43-5e27-415d-adbd-a92851c2c173,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&acceptVersions=3.0.0&request=GetCapabilities&service=CSW -7630d230-e142-4a09-accf-f091000b90cd,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&id=urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493&request=GetRecordById&service=CSW&version=3.0.0 -7e82446a-b5dc-43fe-9a73-4cc1f2f2f0bf,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&acceptFormats=text/xml&acceptVersions=3.0.0&request=GetCapabilities&service=CSW -8025978e-1a35-4d70-80c2-e8329e0c7864,PYCSW_SERVER?config=tests/suites/csw30/default.cfg -8184ae4f-536d-4978-8b28-ad703be96967,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&elementSetName=brief&bbox=44.79,-6.17,68.41,17.92,urn:ogc:def:crs:EPSG::4326&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 -88f63a89-664f-4315-b4f8-04a0b33803a7,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&maxRecords=15&elementSetName=summary&q=Mauris&bbox=-6.17,44.79,17.92,68.41&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 -8987f8f0-4d93-4481-968c-a2ccbd6b8be2,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&id=urn:example:1461546298217&request=GetRecordById&service=CSW&version=3.0.0 -8e5fa0f6-3f29-4d1f-abe2-d9866f3def98,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=&bbox=-180,-90,180,90&time=/&outputformat=application/atom%2Bxml&startposition=1&maxrecords=&recordids= -9000ec29-5649-474e-b2d6-55c00f8a52c0,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&acceptVersions=9999.12.31&request=GetCapabilities&service=CSW -91914d35-7bbf-45e6-9b37-5ef484869a4e,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&elementSetName=summary&bbox=-6.17,44.79,17.92,68.41&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 -92d4844d-57d5-4cf3-8f47-ba50e369dc04,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&elementSetName=full&q=atkovxqmf&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 -9c0e2a4b-b4e6-41c0-b630-c8c99fc89ff3,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&elementSetName=brief&outputSchema=urn:uuid:6a29d2a8-9651-47a6-9b14-f05d2b5644f0&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 -9d7ffac8-9798-428d-8e27-3cd12497ee6b,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&id=urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd&outputSchema=http://www.example.org/ns/alpha&request=GetRecordById&service=CSW&version=3.0.0 -a2f18643-e24e-4fa5-b780-6de4a2dbc814,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&id=urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e&outputFormat=application/atom%2Bxml&request=GetRecordById&service=CSW&version=3.0.0 -abc90c8c-5868-4405-a73e-64c849be3b2a,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=&bbox=514432,5429689,529130,5451619&time=/&outputformat=application/atom%2Bxml&startposition=1&maxrecords=&recordids= -ad0c0571-09ed-436a-9a4f-a5de744c88fe,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&maxRecords=2&elementSetName=summary&request=GetRecords&service=CSW&typeNames=csw3:Record&startPosition=3&namespace=xmlns(csw3%3Dhttp://www.opengis.net/cat/csw/3.0)&version=3.0.0 -af502903-f4ee-47ee-b76e-af878d238bcc,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=&bbox=-180,-90,180,90&time=/&outputformat=application/xml&outputschema=http://www.opengis.net/cat/csw/3.0&startposition=1&maxrecords=&recordids= -b2aafc3f-4f35-47bc-affd-08590972deae,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=&bbox=-6.17,44.79,17.92,68.41&time=/&outputformat=application/atom%2Bxml&startposition=1&maxrecords=&recordids= -b6069623-f7d8-4021-8582-98f0aea0f763,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=&bbox=&time=/&outputformat=application/atom%2Bxml&startposition=3&maxrecords=4&recordids= -b9a07a54-75a8-45bd-b341-2823600211e3,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&elementSetName=brief&bbox=472944,5363287,492722,5455253,urn:ogc:def:crs:EPSG::0000&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 -baa4a7d0-0c01-42b6-adc3-0d03e9949fa3,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&acceptVersions=3.0.0&request=getCapabilities&service=CSW -bfbe6409-f64a-4c89-acb3-50f260a5c743,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&elementSetName=summary&q=Fusc%C3%A9%20Land&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 -bfe20134-d1da-42ef-9c0f-8e1307bbf92b,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=&bbox=&time=/&outputformat=application/xml&outputschema=http://www.opengis.net/cat/csw/3.0&startposition=3&maxrecords=4&recordids= -c03d173a-3f42-4956-89c8-1fe02c3a0873,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&SERVICE=CSW&Request=GetCapabilities&acceptversions=3.0.0 -cb43d8c3-e14c-4a9f-9231-4384b7dd21f3,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&elementName=undefined&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 -d03c6fd3-e821-4a26-b62f-d20a474e25af,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&acceptVersions=3.0.0§ions=ServiceProvider&request=GetCapabilities&service=CSW -d4ccbf96-a529-480e-a53d-5b88dc1dea7f,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=&bbox=&time=/&outputformat=application/xml&outputschema=http://www.opengis.net/cat/csw/3.0&startposition=1&maxrecords=&recordids=uid-bc5017e6-5cc8-4b03-aee7-d88f88caba0a -d94c801a-1207-4897-b84a-53f3a192515b,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=lpppclq&bbox=&time=/&outputformat=application/xml&outputschema=http://www.opengis.net/cat/csw/3.0&startposition=1&maxrecords=&recordids= -da859e34-91fc-495a-8c09-285a40c0900b,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&id=urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63&elementSetName=full&request=GetRecordById&service=CSW&version=3.0.0 -dc246fb8-5af5-4fda-82bb-c18b3ecd439c,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=ipsum&bbox=&time=/&outputformat=application/atom%2Bxml&startposition=1&maxrecords=&recordids= -de016645-6d5c-4855-943c-2db07ae9f49a,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=&bbox=&time=/&outputformat=application/atom%2Bxml&startposition=1&maxrecords=&recordids=urn%3Auuid%3A94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 -dff3ec6b-bb2d-4887-bd17-8fcf15def042,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&elementSetName=summary&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 -e38e6bfb-8ac4-4ae4-8b87-0aafbc8d3c6b,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&id=urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd&elementSetName=brief&request=GetRecordById&service=CSW&version=3.0.0 -e67ca935-d65d-4d8c-8302-1405333dded0,PYCSW_SERVER?config=tests/suites/csw30/default.cfg -e7704509-3441-458f-8ef0-e333c6b6043f,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&elementName=ns1:subject&elementSetName=brief&request=GetRecords&service=CSW&typeNames=Record&namespace=xmlns(ns1%3Dhttp://purl.org/dc/elements/1.1/)&version=3.0.0 -f1223a49-6d08-44ff-97fe-4c32cbbfad82,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&elementSetName=summary&maxRecords=0&q=titles&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 -f89dd4e1-3a81-4433-afd2-a3fa1bdb1e18,PYCSW_SERVER?config=tests/suites/csw30/default.cfg&elementSetName=full&outputFormat=text/example&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0 diff --git a/tests/suites/default/get/requests.txt b/tests/suites/default/get/requests.txt deleted file mode 100644 index ee368671b..000000000 --- a/tests/suites/default/get/requests.txt +++ /dev/null @@ -1,20 +0,0 @@ -GetCapabilities,PYCSW_SERVER?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetCapabilities -GetCapabilities-invalid-request,PYCSW_SERVER?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetCapabilitiese -GetRecords-all,PYCSW_SERVER?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full -GetRecords-sortby-asc,PYCSW_SERVER?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&sortby=dc:title:A -GetRecords-sortby-desc,PYCSW_SERVER?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&sortby=dc:title:D -GetRecords-sortby-invalid-propertyname,PYCSW_SERVER?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&sortby=dc:titlei:A -GetRecords-sortby-invalid-order,PYCSW_SERVER?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&sortby=dc:title:FOO -GetRecords-filter,PYCSW_SERVER?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&constraintlanguage=FILTER&constraint=%3Cogc%3AFilter%20xmlns%3Aogc%3D%22http%3A%2F%2Fwww.opengis.net%2Fogc%22%3E%3Cogc%3APropertyIsEqualTo%3E%3Cogc%3APropertyName%3Edc%3Atitle%3C%2Fogc%3APropertyName%3E%3Cogc%3ALiteral%3ELorem%20ipsum%3C%2Fogc%3ALiteral%3E%3C%2Fogc%3APropertyIsEqualTo%3E%3C%2Fogc%3AFilter%3E -GetRecords-filter-cql-title,PYCSW_SERVER?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&constraintlanguage=CQL_TEXT&constraint=dc%3Atitle%20like%20%27%25lor%25%27 -GetRecords-filter-cql-title-with-spaces,PYCSW_SERVER?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&constraintlanguage=CQL_TEXT&constraint=dc%3Atitle%20like%20%27%25Lorem%20ipsum%25%27 -GetRecords-filter-cql-title-or-abstract,PYCSW_SERVER?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&constraintlanguage=CQL_TEXT&constraint=dc%3Atitle%20like%20%27%25lor%25%27%20or%20dct%3Aabstract%20like%20%27%25pharetra%25%27 -GetRecords-filter-cql-title-with-spaces-or-abstract,PYCSW_SERVER?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&constraintlanguage=CQL_TEXT&constraint=dc%3Atitle%20like%20%27%25dolor%20sit%25%27%20or%20dct%3Aabstract%20like%20%27%25pharetra%25%27 -GetRecords-filter-cql-title-or-abstract-with-spaces,PYCSW_SERVER?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&constraintlanguage=CQL_TEXT&constraint=dc%3Atitle%20like%20%27%25lor%25%27%20or%20dct%3Aabstract%20like%20%27%25pharetra%20in%25%27 -GetRecords-filter-cql-title-with-spaces-or-abstract-with-spaces,PYCSW_SERVER?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&constraintlanguage=CQL_TEXT&constraint=dc%3Atitle%20like%20%27%25dolor%20sit%25%27%20or%20dct%3Aabstract%20like%20%27%25pharetra%20in%25%27 -GetRecords-empty-maxrecords,PYCSW_SERVER?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&maxrecords= -GetRepositoryItem,PYCSW_SERVER?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetRepositoryItem&id=urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63 -Exception-GetRepositoryItem-notfound,PYCSW_SERVER?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2&request=GetRepositoryItem&id=NOTFOUND -Exception-GetRepositoryItem-service-invalid1,PYCSW_SERVER?config=tests/suites/default/default.cfg&service=CSW%00&version=2.0.2&request=GetRepositoryItem&id=123 -Exception-GetRepositoryItem-service-invalid2,PYCSW_SERVER?config=tests/suites/default/default.cfg&service=CSW%00'&version=2.0.2&request=GetRepositoryItem&id=123 -Exception-GetRepositoryItem-version-invalid,PYCSW_SERVER?config=tests/suites/default/default.cfg&service=CSW&version=2.0.2'&request=GetRepositoryItem&id=123 diff --git a/tests/suites/harvesting/data/.gitkeep b/tests/suites/harvesting/data/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/tests/suites/harvesting/get/requests.txt b/tests/suites/harvesting/get/requests.txt deleted file mode 100644 index 9033d798f..000000000 --- a/tests/suites/harvesting/get/requests.txt +++ /dev/null @@ -1,5 +0,0 @@ -Exception-Harvest-missing-resourcetype,PYCSW_SERVER?config=tests/suites/manager/default.cfg&service=CSW&version=2.0.2&request=Harvest -Exception-Harvest-missing-source,PYCSW_SERVER?config=tests/suites/manager/default.cfg&service=CSW&version=2.0.2&request=Harvest&resourcetype=http://www.opengis.net/wms -Exception-Harvest-invalid-resourcetype,PYCSW_SERVER?config=tests/suites/manager/default.cfg&service=CSW&version=2.0.2&request=Harvest&resourcetype=http://www.opengis.net/wms1234&source=http://demo.pycsw.org/cite/csw -Exception-Harvest-waf-no-records-found,PYCSW_SERVER?config=tests/suites/manager/default.cfg&service=CSW&version=2.0.2&request=Harvest&resourcetype=urn:geoss:waf&source=http://demo.pycsw.org -Exception-Harvest-waf-bad-value,PYCSW_SERVER?config=tests/suites/manager/default.cfg&service=CSW&version=2.0.2&request=Harvest&resourcetype=urn:geoss:waf&source=badvalue diff --git a/tests/suites/manager/data/.gitkeep b/tests/suites/manager/data/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/tests/suites/oaipmh/get/requests.txt b/tests/suites/oaipmh/get/requests.txt deleted file mode 100644 index e9f859c16..000000000 --- a/tests/suites/oaipmh/get/requests.txt +++ /dev/null @@ -1,20 +0,0 @@ -empty,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh -empty_with_amp,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh& -bad_verb,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=foo -illegal_verb,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=foo&foo=bar -Identify,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=Identify -ListSets,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=ListSets -ListMetadataFormats,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=ListMetadataFormats -GetRecord_dc,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=GetRecord&identifier=urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f&metadataPrefix=csw-record -GetRecord_bad_metadata_prefix,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=GetRecord&identifier=urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f&metadataPrefix=csw-recordd -GetRecord_oai_dc,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=GetRecord&identifier=urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f&metadataPrefix=oai_dc -GetRecord_iso,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=GetRecord&identifier=urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f&metadataPrefix=iso19139 -ListIdentifiers_missing_metadata_prefix,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=ListIdentifiers -ListIdentifiers_dc,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=ListIdentifiers&metadataPrefix=csw-record -ListIdentifiers_iso,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=ListIdentifiers&metadataPrefix=iso19139 -ListIdentifiers_oai_dc,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=ListIdentifiers&metadataPrefix=oai_dc -ListIdentifiers_bad_metadata_prefix,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=ListIdentifiers&metadataPrefix=foo -ListRecords_dc,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=ListRecords&metadataPrefix=csw-record -ListRecords_dc_bad_metadata_prefix,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=ListRecords&metadataPrefix=csw-recording -ListRecords_oai_dc,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=ListRecords&metadataPrefix=oai_dc -ListRecords_iso19139,PYCSW_SERVER?config=tests/suites/oaipmh/default.cfg&mode=oaipmh&verb=ListRecords&metadataPrefix=iso19139 diff --git a/tests/suites/sru/get/requests.txt b/tests/suites/sru/get/requests.txt deleted file mode 100644 index 24170ae2d..000000000 --- a/tests/suites/sru/get/requests.txt +++ /dev/null @@ -1,5 +0,0 @@ -explain,PYCSW_SERVER?config=tests/suites/sru/default.cfg&mode=sru -search,PYCSW_SERVER?config=tests/suites/sru/default.cfg&mode=sru&version=1.1&operation=searchRetrieve&query=lor -search_maxrecords,PYCSW_SERVER?config=tests/suites/sru/default.cfg&mode=sru&operation=searchRetrieve&query=lor&maximumRecords=2 -search_startrecord_maxrecords,PYCSW_SERVER?config=tests/suites/sru/default.cfg&mode=sru&operation=searchRetrieve&query=lor&maximumRecords=2&startRecord=1 -search_cql,PYCSW_SERVER?config=tests/suites/sru/default.cfg&mode=sru&operation=searchRetrieve&query=dc:title%20like%20'%lor%'&maximumRecords=5 diff --git a/tox.ini b/tox.ini new file mode 100644 index 000000000..deb7d9cd6 --- /dev/null +++ b/tox.ini @@ -0,0 +1,17 @@ +# Tox (http://tox.testrun.org/) is a tool for running tests +# in multiple virtualenvs. This configuration file will run the +# test suite on all supported python versions. To use it, "pip install tox" +# and then run "tox" from this directory. + +[tox] +envlist = {py26,py27,py34,py35}-sqlite +skip_missing_interpreters = True + + +[testenv] +deps = + -rrequirements-dev.txt +usedevelop=True +commands = + py{26,27,35}-sqlite: py.test {posargs} + py34-sqlite: py.test --cov pycsw {posargs}