| 1 | = ZOO Project WPS implementation testing = |
| 2 | |
| 3 | ZOO-PSC would like to report results of tests conducted on ZOO-Kernel WPS |
| 4 | implementation. Comparison of some current WPS implementation was reported in |
| 5 | presentation entitled "COMPLIANCE TESTING OF OPEN SOURCE SOFTWARE FOR WEB |
| 6 | PROCESSING SERVICES" [http://www.slideshare.net/TheodorFoerster/compliance-testing-of-open-source-software-for-web-processing-services link]. |
| 7 | |
| 8 | Our testing results are presented in more details below. The test with ZOO WPS are |
| 9 | contrary to the presentation mentioned above [http://www.slideshare.net/TheodorFoerster/compliance-testing-of-open-source-software-for-web-processing-services link]. We call upon the authors of the presentation referred above to make appropriate corrections in their presentation in light of our test results outlined below. We hope that a more well planned and coordinated implementation testing can be done in the future. |
| 10 | |
| 11 | Gérald Fenoy (Chair ZOO PSC) |
| 12 | |
| 13 | = ZOO Project WPS testing details = |
| 14 | |
| 15 | In the FOSS4G2010 presentation [http://www.slideshare.net/TheodorFoerster/compliance-testing-of-open-source-software-for-web-processing-services link], some unusual behavior of the ZOO Kernel was pointed out. Hence, the ZOO PSC decided to conduct our own tests with ZOO WPS implementation using the same method reported in the FOSS4G2010 presentation. |
| 16 | |
| 17 | First note about this response that we have prepared, we weren't able to use XMLSpy 2007 Professional version as no more Evaluation version is available, so we used the XMLSpy 2011 Professional one as we can use it for an evaluation period of 30 days. |
| 18 | |
| 19 | All the following requests give documents which are valid (using XMLSpy 2011 Professional) against the used schemas. |
| 20 | |
| 21 | == !GetCapabilities request == |
| 22 | |
| 23 | In the FOSS4G2010 presentation [http://www.slideshare.net/TheodorFoerster/compliance-testing-of-open-source-software-for-web-processing-services link], an error was pointed out about some unexpected metadata : namely Test attribute to the Metadata node getting the "Demo" value. This was due to wrong ZCFG files of the first Services we made in the beginning of the 2009 year. |
| 24 | |
| 25 | The provided URL to run this test is wrong, the correct one to use is as below : |
| 26 | |
| 27 | http://zoo-project.org/cgi-bin-new/zoo_loader.cgi?REQUEST=GetCapabilities&SERVICE=WPS&version=1.0.0 |
| 28 | |
| 29 | {{{ |
| 30 | #!html |
| 31 | <!-- |
| 32 | The annex II linked to this section contains strangely a !ProcessDescription document when it shall be a Capabilities Document instead. Maybe we don't have the final version of the report (at least ZOO-Team hope so). |
| 33 | --> |
| 34 | }}} |
| 35 | So, for the !GetCapabilities request, the Capabilities document output by the ZOO Kernel is '''Valid'''. |
| 36 | |
| 37 | == !DescribeProcess request == |
| 38 | |
| 39 | It was also reported in the presentation that ZOO Kernel can not handle the !DescribeProcess request and output a valid !ProcessDescriptions Document. Indeed the first versions of ZOO Kernel was wrong in that, but hopefully the last one, included in OSGeoLiveDVD 4.0 returns already the valid !ProcessDescriptions document. |
| 40 | |
| 41 | http://zoo-project.org/cgi-bin-new/zoo_loader.cgi?REQUEST=DescribeProcess&SERVICE=WPS&version=1.0.0&Identifier=Buffer |
| 42 | |
| 43 | Using the url above we can confirm that ZOO Kernel provide '''Valid''' response for the !DescribeProcess request. |
| 44 | |
| 45 | Note that this request is '''Valid''' also : |
| 46 | |
| 47 | http://zoo-project.org/cgi-bin-new/zoo_loader.cgi?REQUEST=DescribeProcess&SERVICE=WPS&version=1.0.0&Identifier=Buffer,Boundary,Centroid,ConvexHull,Simplify,Union,Intersection,Difference,SymDifference |
| 48 | |
| 49 | == Execute request == |
| 50 | |
| 51 | ZOO WPS provides valid response for Execute as XML POST requests, as it is the mandatory method. |
| 52 | |
| 53 | To use the XML POST requests, please copy/paste from this page, please follow this [http://zoo-project.org/test_services.html link] to paste in the HTML form. |
| 54 | |
| 55 | === Synchronous call using asReference === |
| 56 | |
| 57 | {{{ |
| 58 | #!xml |
| 59 | <wps:Execute service="WPS" version="1.0.0" xmlns:wps="http://www.opengis.net/wps/1.0.0" xmlns:ows="http://www.opengis.net/ows/1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wps/1.0.0 http://schemas.opengis.net/wps/1.0.0/wpsExecute_request.xsd"> |
| 60 | <ows:Identifier>Buffer</ows:Identifier> |
| 61 | <wps:DataInputs> |
| 62 | <wps:Input> |
| 63 | <ows:Identifier>InputPolygon</ows:Identifier> |
| 64 | <ows:Title>Playground area</ows:Title> |
| 65 | <wps:Reference xlink:href="http://dreal-official.geolabs.fr/mapjax/webservices/wfs/dreal_lr_general/?VERSION=1.1.0&version=1.0.0&request=GetFeature&typename=Znieff1&maxfeatures=1"/></wps:Input> |
| 66 | <wps:Input> |
| 67 | <ows:Identifier>BufferDistance</ows:Identifier> |
| 68 | <ows:Title>Distance which people will walk to get to a playground.</ows:Title> |
| 69 | <wps:Data> |
| 70 | <wps:LiteralData>10</wps:LiteralData> |
| 71 | </wps:Data> |
| 72 | </wps:Input> |
| 73 | </wps:DataInputs> |
| 74 | <wps:ResponseForm> |
| 75 | <wps:ResponseDocument storeExecuteResponse="false"> |
| 76 | <wps:Output asReference="true"> |
| 77 | <ows:Identifier>Result</ows:Identifier> |
| 78 | </wps:Output> |
| 79 | </wps:ResponseDocument> |
| 80 | </wps:ResponseForm> |
| 81 | </wps:Execute> |
| 82 | }}} |
| 83 | |
| 84 | === Synchronous call with data included === |
| 85 | |
| 86 | {{{ |
| 87 | #!xml |
| 88 | <wps:Execute service="WPS" version="1.0.0" xmlns:wps="http://www.opengis.net/wps/1.0.0" xmlns:ows="http://www.opengis.net/ows/1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wps/1.0.0 http://schemas.opengis.net/wps/1.0.0/wpsExecute_request.xsd"> |
| 89 | <ows:Identifier>Buffer</ows:Identifier> |
| 90 | <wps:DataInputs> |
| 91 | <wps:Input> |
| 92 | <ows:Identifier>InputPolygon</ows:Identifier> |
| 93 | <ows:Title>Playground area</ows:Title> |
| 94 | <wps:Reference xlink:href="http://dreal-official.geolabs.fr/mapjax/webservices/wfs/dreal_lr_general/?VERSION=1.1.0&version=1.0.0&request=GetFeature&typename=Znieff1&maxfeatures=1"/></wps:Input> |
| 95 | <wps:Input> |
| 96 | <ows:Identifier>BufferDistance</ows:Identifier> |
| 97 | <ows:Title>Distance which people will walk to get to a playground.</ows:Title> |
| 98 | <wps:Data> |
| 99 | <wps:LiteralData>10</wps:LiteralData> |
| 100 | </wps:Data> |
| 101 | </wps:Input> |
| 102 | </wps:DataInputs> |
| 103 | <wps:ResponseForm> |
| 104 | <wps:ResponseDocument storeExecuteResponse="false"> |
| 105 | <wps:Output asReference="false"> |
| 106 | <ows:Identifier>Result</ows:Identifier> |
| 107 | </wps:Output> |
| 108 | </wps:ResponseDocument> |
| 109 | </wps:ResponseForm> |
| 110 | </wps:Execute> |
| 111 | }}} |
| 112 | |
| 113 | === Asynchronous call with data asReference === |
| 114 | |
| 115 | {{{ |
| 116 | #!xml |
| 117 | <wps:Execute service="WPS" version="1.0.0" xmlns:wps="http://www.opengis.net/wps/1.0.0" xmlns:ows="http://www.opengis.net/ows/1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wps/1.0.0 http://schemas.opengis.net/wps/1.0.0/wpsExecute_request.xsd"> |
| 118 | <ows:Identifier>Buffer</ows:Identifier> |
| 119 | <wps:DataInputs> |
| 120 | <wps:Input> |
| 121 | <ows:Identifier>InputPolygon</ows:Identifier> |
| 122 | <ows:Title>Playground area</ows:Title> |
| 123 | <wps:Reference xlink:href="http://dreal-official.geolabs.fr/mapjax/webservices/wfs/dreal_lr_general/?VERSION=1.1.0&version=1.0.0&request=GetFeature&typename=Znieff1&maxfeatures=1"/></wps:Input> |
| 124 | <wps:Input> |
| 125 | <ows:Identifier>BufferDistance</ows:Identifier> |
| 126 | <ows:Title>Distance which people will walk to get to a playground.</ows:Title> |
| 127 | <wps:Data> |
| 128 | <wps:LiteralData>10</wps:LiteralData> |
| 129 | </wps:Data> |
| 130 | </wps:Input> |
| 131 | </wps:DataInputs> |
| 132 | <wps:ResponseForm> |
| 133 | <wps:ResponseDocument storeExecuteResponse="true" status="true"> |
| 134 | <wps:Output asReference="true"> |
| 135 | <ows:Identifier>Result</ows:Identifier> |
| 136 | </wps:Output> |
| 137 | </wps:ResponseDocument> |
| 138 | </wps:ResponseForm> |
| 139 | </wps:Execute> |
| 140 | }}} |
| 141 | |
| 142 | Here both statusLocation file and response are '''Valid'''. |
| 143 | |
| 144 | === Asynchronous call with full data included === |
| 145 | |
| 146 | You can also use the storeExecuteReponse="true" for !ResponseDocument with the asReference attribute for the Output settled to true as in the following request : |
| 147 | |
| 148 | {{{ |
| 149 | #!xml |
| 150 | <wps:Execute service="WPS" version="1.0.0" xmlns:wps="http://www.opengis.net/wps/1.0.0" xmlns:ows="http://www.opengis.net/ows/1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wps/1.0.0 http://schemas.opengis.net/wps/1.0.0/wpsExecute_request.xsd"> |
| 151 | <ows:Identifier>Buffer</ows:Identifier> |
| 152 | <wps:DataInputs> |
| 153 | <wps:Input> |
| 154 | <ows:Identifier>InputPolygon</ows:Identifier> |
| 155 | <ows:Title>Playground area</ows:Title> |
| 156 | <wps:Reference xlink:href="http://dreal-official.geolabs.fr/mapjax/webservices/wfs/dreal_lr_general/?VERSION=1.1.0&version=1.0.0&request=GetFeature&typename=Znieff1&maxfeatures=1"/></wps:Input> |
| 157 | <wps:Input> |
| 158 | <ows:Identifier>BufferDistance</ows:Identifier> |
| 159 | <ows:Title>Distance which people will walk to get to a playground.</ows:Title> |
| 160 | <wps:Data> |
| 161 | <wps:LiteralData>10</wps:LiteralData> |
| 162 | </wps:Data> |
| 163 | </wps:Input> |
| 164 | </wps:DataInputs> |
| 165 | <wps:ResponseForm> |
| 166 | <wps:ResponseDocument storeExecuteResponse="true" status="true"> |
| 167 | <wps:Output asReference="false"> |
| 168 | <ows:Identifier>Result</ows:Identifier> |
| 169 | </wps:Output> |
| 170 | </wps:ResponseDocument> |
| 171 | </wps:ResponseForm> |
| 172 | </wps:Execute> |
| 173 | }}} |
| 174 | |
| 175 | The resulting document and the statusLocation document are both '''Valid'''. |
| 176 | |
| 177 | === !RawDataOutput test === |
| 178 | |
| 179 | {{{ |
| 180 | #!xml |
| 181 | <wps:Execute service="WPS" version="1.0.0" xmlns:wps="http://www.opengis.net/wps/1.0.0" xmlns:ows="http://www.opengis.net/ows/1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wps/1.0.0 http://schemas.opengis.net/wps/1.0.0/wpsExecute_request.xsd"> |
| 182 | <ows:Identifier>Buffer</ows:Identifier> |
| 183 | <wps:DataInputs> |
| 184 | <wps:Input> |
| 185 | <ows:Identifier>InputPolygon</ows:Identifier> |
| 186 | <ows:Title>Playground area</ows:Title> |
| 187 | <wps:Reference xlink:href="http://dreal-official.geolabs.fr/mapjax/webservices/wfs/dreal_lr_general/?VERSION=1.1.0&version=1.0.0&request=GetFeature&typename=Znieff1&maxfeatures=1"/></wps:Input> |
| 188 | <wps:Input> |
| 189 | <ows:Identifier>BufferDistance</ows:Identifier> |
| 190 | <ows:Title>Distance which people will walk to get to a playground.</ows:Title> |
| 191 | <wps:Data> |
| 192 | <wps:LiteralData>10</wps:LiteralData> |
| 193 | </wps:Data> |
| 194 | </wps:Input> |
| 195 | </wps:DataInputs> |
| 196 | <wps:ResponseForm> |
| 197 | <wps:RawDataOutput> |
| 198 | <ows:Identifier>Result</ows:Identifier> |
| 199 | </wps:RawDataOutput> |
| 200 | </wps:ResponseForm> |
| 201 | </wps:Execute> |
| 202 | }}} |
| 203 | |
| 204 | The result is valid in the sens that it is a JSON string representing the resulting polygon. |