-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Bug fixes, GetFeatureInfo tests, RESTful tests #78
Conversation
…ct.Format and GetCapabilities.Response.Layer.LegendURL.Correct.Size which are fully covered by GetCapabilities.Response.Layer.LegendURL.Correct.Resource
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for providing the pull request.
However, when testing the pull request, the current reference implementation does not pass all mandatory tests anymore: https://cite.deegree.org/deegree-webservices-3.5.0/services/wmts100?service=WMTS&request=GetCapabilities
This is because group GetTile.Implemented.KVP.GET
is now executed which was not the case before. One of the test fails making the complete conformance class GetTile.main
fail.
Before merging the PR it must be clarified if this behavior is correct.
This pull request will be on hold until opengeospatial/teamengine#593 is merged and installed on Beta. |
The reference implementation @dstenger provided was failing due to an issue with style selection in the Server.KVP.GET.GetTile.Valid.Tile.Transparency test. I've fixed it and the RI now passes. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@cmorriscmps Thank you for the fix. I can confirm that the reference implementation passes all tests again, now.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It seems that this pull request breaks the REST interface.
When requesting http://localhost:8081/teamengine/rest/suites/, following stack trace is returned:
Type Exception Report
Message java.util.ServiceConfigurationError: com.occamlab.te.spi.jaxrs.TestSuiteController: Provider org.opengis.cite.wmts10.CtlController could not be instantiated
Description The server encountered an unexpected condition that prevented it from fulfilling the request.
Exception
javax.servlet.ServletException: java.util.ServiceConfigurationError: com.occamlab.te.spi.jaxrs.TestSuiteController: Provider org.opengis.cite.wmts10.CtlController could not be instantiated
com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:420)
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558)
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:733)
javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.occamlab.te.realm.RestAuthenticationFilter.doFilter(RestAuthenticationFilter.java:72)
Root Cause
java.util.ServiceConfigurationError: com.occamlab.te.spi.jaxrs.TestSuiteController: Provider org.opengis.cite.wmts10.CtlController could not be instantiated
java.util.ServiceLoader.fail(ServiceLoader.java:232)
java.util.ServiceLoader.access$100(ServiceLoader.java:185)
java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:384)
java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
java.util.ServiceLoader$1.next(ServiceLoader.java:480)
com.occamlab.te.spi.jaxrs.TestSuiteRegistry.loadControllers(TestSuiteRegistry.java:96)
com.occamlab.te.spi.jaxrs.TestSuiteRegistry.<init>(TestSuiteRegistry.java:89)
com.occamlab.te.spi.jaxrs.TestSuiteRegistry.getInstance(TestSuiteRegistry.java:53)
com.occamlab.te.spi.jaxrs.resources.TestSuiteSetResource.listTestSuites(TestSuiteSetResource.java:91)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185)
com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)
com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542)
com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473)
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419)
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409)
com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409)
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558)
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:733)
javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.occamlab.te.realm.RestAuthenticationFilter.doFilter(RestAuthenticationFilter.java:72)
Root Cause
java.lang.NullPointerException
org.opengis.cite.wmts10.CtlController.findScriptFile(CtlController.java:121)
org.opengis.cite.wmts10.CtlController.<init>(CtlController.java:39)
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
java.lang.reflect.Constructor.newInstance(Constructor.java:423)
java.lang.Class.newInstance(Class.java:442)
java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:380)
java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
java.util.ServiceLoader$1.next(ServiceLoader.java:480)
com.occamlab.te.spi.jaxrs.TestSuiteRegistry.loadControllers(TestSuiteRegistry.java:96)
com.occamlab.te.spi.jaxrs.TestSuiteRegistry.<init>(TestSuiteRegistry.java:89)
com.occamlab.te.spi.jaxrs.TestSuiteRegistry.getInstance(TestSuiteRegistry.java:53)
com.occamlab.te.spi.jaxrs.resources.TestSuiteSetResource.listTestSuites(TestSuiteSetResource.java:91)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185)
com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)
com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542)
com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473)
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419)
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409)
com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409)
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558)
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:733)
javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.occamlab.te.realm.RestAuthenticationFilter.doFilter(RestAuthenticationFilter.java:72)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The error with the REST interface is occurring because script src/main/scripts/ctl/wmts-auto.xml
was deleted which is set as main-script
in ets.properties
file.
@cmorriscmps Can you recall why this script was deleted?
I really have no idea what the purpose of wmts-auto.xml was supposed to be. It appeared to be a copy of WMTS_ETS.xml, except wmts-auto.xml includes other files with xinclude. It doesn't really make sense to maintain two copies of the file. The config.xml file references the ctl directory, which loads all of the ctl files. They are all loaded twice if wmts-auto.xml is included. |
The wmts-auto.xml file is used by the I just checked the file and it seems that all changes are required by the REST interface. So, I propose to restore the file to make this pull requests merge able. However, I agree that the implementation should reduce duplication. So, we could create a new issue with the aim to improve/simplify/merge the two main CTL scripts. |
@cmorriscmps Also, I am currently doing a functional review of the pull request and come back to you if I have any questions. |
I did a functional review of the pull request and these are my results. Questions:
This should be adjusted:
Further comments:
|
@cmorriscmps |
I'll take a closer look and respond by the end of the week. |
To answer the question about the "Fail early on schema validation errors" option, If the option is selected then the root test will validate the capabilities document against the schema and fail without executing any subtests if validation fails. So yes, it will speed up test runs if validation fails. I agree that the upload button for a capabilities document and that the wmts-auto.xml file should be restored. I can update the pull request with these changes. I also agree that the ATS needs to be updated to reflect the current state of the ETS. However, it has been out of date long before this pull request was introduced, so I don't think that updating it falls under the scope of this pull request. |
Thank you for updating the pull request.
@cmorriscmps |
@dstenger I've fixed the optional test labels. The Upload capability has been restored. There is no Upload button on the initial form, but if you leave the Capabilities URL field blank, it will present another form asking for a file upload. Feel free to update any other wording however you and/or Gobe think is appropriate. I'll also leave updating the ATS doc and the pom.xml up to you. You can accept the pull request and make additional changes in the opengeospatial repository, or I've given you permission to edit the pull request if you would prefer to make changes there. |
Thank you for updating the pull request.
|
Further, I created a new issue for an update of the ATS: #83 |
This PR has now been installed on the Beta validator. |
Contains bug fixes as well as options to execute tests for the GetFeatureInfo operation and the REST encoding.
Summary of Changes:
wmtsFunctions.xml
WMTS_ETS.xml
owsFunctions.xml
bootstrap.xml