WMS Tester
The WMS Tester is provided as a standalone tool to assist with testing Web Map Services (WMS). It is a useful tool for narrowing down problems with a WMS as it runs independently of Weave. As a Weave administrator the WMS Tester can be used with other tools (Weave Administrator Tool and Weave console commands) to help you identify and rectify problems with the operation of WMS within Weave.
What is the WMS Tester
The WMS Tester is a java program that will test the responses from a WMS. It can be used on any WMS, either those from within your organisation or external to it. It can be used when you are having problems with a WMS that is used in Weave, as it will test the WMS itself, without any reference to the WMS in the Weave environment. Sometimes it is difficult to determine whether a problem is originating in Weave or in the data and services that Weave is using and with the WMS Tester you will at least be able to test the performance of the WMS in isolation from Weave.
Downloading the WMS Tester
You can download the latest version of the WMS Tester tool from here.
Using the WMS Tester
The WMS Tester file, wmstest.jar,
can be stored anywhere but for the purpose of simplicity we will assume it's been downloaded and stored in your c:\<weave installation folder>
, e.g. c:\weave
. It requires java to run so if you don't have Java installed you can use the Java executable that is installed with Weave (e.g. c:\weave\jre\bin
).
Alternatively you can also download wmstester.jar
to your local PC and run it from there, but then you need to ensure that you already have Java installed.
In a Windows environment, open Windows Command Line, and run the following to get a help listing:
c:\weave\jre\bin\java -jar c:\weave\wmstest.jar -h usage: wmstest -f <filename> | -u <url> [-e <minx,miny,maxx,maxy> | -l <x,y,scale>] [-c <crs>] [-x <scale>] [-s <width,height>] [-D <DPI>] [--ignorescales] [-t <timeout>] [-n] [-o <filename>] [-d] [-b <threads>] [--format <format>] [-U <username>] [-P <password>] [-q] [-h] [-V]
The parameters that can be used in the tester are given in the table below. The - or -- syntax can be used:
Parameter | Description |
---|---|
-f, --file <filename> | Filename of a text file that has a list of base URL's for the WMS services. Each line in the file should contain a single WMS URL. |
-u, --url <url> | The base URL for the WMS service, this can be added more than once, but the -f command can also be used for multiple URL's. |
-e, --envelope <minx,miny,maxx,maxy> | The envelope to use to draw the map. This is alternative to -l, and can not be set if -l is set. |
-l, --location <x,y,scale> | The centre location to use to draw the map. This is alternative to -e, and can not be set if -e is set. |
-c, --crs <crs> | The CRS to use for the map requests. If not set a suitable CRS wil be determined by the following logic:
|
-x, --maxscale <scale> | The maximum scale to use to generate the map. |
-s, --size <width,height> | The width and height, in pixels, of the generated map image. The default is 400,400 |
-D, --dpi <DPI> | DPI to use when creating the map images. The default is 90.71. |
-t, --timeout <timeout> | The network timeout in seconds. The default is 120 |
-n, --nomap | Just retrieve the capabilities document, and do not generate a map request. |
-o, --output <filename> | Output results to a CSV file. |
-d, --dump <filename> | Dump the generated images to a file, the default is image.zip. |
-b, --background <threads> | Create all the connections in the background at the same time, rather than processing the URLs one by one. Including the <threads> value will specify how may tasks to do at once, if a value for <threads> is not set then all tasks will be performed at once, if this option isn't included at all then each task will be performed one after the other. |
-U, --username <username> | Username to connect with, and must be supplied if the password is set. |
-P, --password <password> | Password to connect with, and must be supplied if username is set. |
-q, --quiet | Do not output results to the console. |
-h, --help | Show this help and quit. |
-V, --version | Print the version of the WMS Tester and exit. |
--ignorescales | Don't make use of the scale ranges reported by the WMS service to adjust the extents of the generated map images. |
--format <format> | Set the format of the image to generate, the default is jpg . The image formats supported are dependant upon what the WMS server is setup to support. |
If neither |
Examples of the WMS Tester
The WMS Tester allows you to test various aspects of a WMS including specifying the extent, scale, size of images, etc. But it can be used in its simplest form in the following ways:
Return the layers in the WMS, the scale at which the layer is drawn and the time taken to draw layer (in milliseconds)
c:\weave\jre\bin\java -jar c:\weave\wmstest.jar -u http://qgis/cgi-bin/qgis_mapserv.fcgi?map=/mnt/storage/weave/qgis/project.qgs connected to http://qgis/cgi-bin/qgis_mapserv.fcgi?map=/mnt/storage/weave/qgis/project.qgs in 2,521ms drew "topp:secondary_schools" as jpg at 1:70,894 in 411ms drew "topp:school_primary" as jpg at 1:112,940 in 415ms drew "topp:buildings" as jpg at 1:119,980 in 417ms drew "topp:busstops" as jpg at 1:127,470 in 704ms drew "topp:contour10" as jpg at 1:154,230 in 930ms drew "topp:contour05" as jpg at 1:152,730 in 1,366ms drew "topp:contour02" as jpg at 1:152,720 in 2,765ms drew "topp:contour01" as jpg at 1:152,900 in 5,156ms drew "topp:drainage" as jpg at 1:127,120 in 764ms drew "topp:sewer_pipe" as jpg at 1:136,970 in 711ms drew "topp:water_pipe" as jpg at 1:187,430 in 1,710ms drew "topp:busroutes" as jpg at 1:130,490 in 431ms drew "topp:road" as jpg at 1:17,678 in 359ms drew "topp:mainroad" as jpg at 1:140,600 in 452ms drew "topp:hydro" as jpg at 1:148,400 in 444ms drew "topp:mainhydro" as jpg at 1:146,910 in 459ms drew "topp:easement" as jpg at 1:7,071 in 361ms drew "topp:property_dissolved" as jpg at 1:7,071 in 367ms drew "topp:property" as jpg at 1:7,071 in 363ms drew "topp:ward" as jpg at 1:147,260 in 431ms drew "topp:suburb" as jpg at 1:149,110 in 461ms drew "topp:mccbound" as jpg at 1:147,300 in 426ms
Testing a WMS with background processing to simulate multiple users hitting the WMS server at the same time
c:\weave\jre\bin\java -jar c:\weave\wmstest.jar -u http://qgis/cgi-bin/qgis_mapserv.fcgi?map=/mnt/storage/weave/qgis/project.qgs -b connected to http://qgis/cgi-bin/qgis_mapserv.fcgi?map=/mnt/storage/weave/qgis/project.qgs in 2,825ms drew "topp:secondary_schools" as image/jpeg at 1:72,316 in 13,051ms drew "topp:ward" as jpg at 1:149,830 in 13,432ms drew "topp:busroutes" as jpg at 1:132,220 in 13,689ms drew "topp:easement" as jpg at 1:10,000 in 13,856ms drew "topp:property" as jpg at 1:10,000 in 14,133ms drew "topp:hydro" as jpg at 1:151,100 in 14,472ms drew "topp:school_primary" as jpg at 1:114,310 in 14,643ms drew "topp:mainhydro" as jpg at 1:149,790 in 14,664ms drew "topp:buildings" as jpg at 1:121,840 in 14,698ms drew "topp:property_dissolved" as jpg at 1:10,000 in 14,809ms drew "topp:mccbound" as jpg at 1:149,860 in 14,860ms drew "topp:mainroad" as jpg at 1:142,520 in 14,949ms drew "topp:road" as jpg at 1:25,000 in 14,962ms drew "topp:suburb" as jpg at 1:151,750 in 15,435ms drew "topp:busstops" as jpg at 1:128,880 in 17,027ms drew "topp:sewer_pipe" as jpg at 1:139,040 in 17,370ms drew "topp:contour10" as jpg at 1:156,830 in 17,761ms drew "topp:drainage" as jpg at 1:129,140 in 17,818ms drew "topp:contour05" as jpg at 1:155,440 in 18,993ms drew "topp:water_pipe" as jpg at 1:190,730 in 20,413ms drew "topp:contour02" as jpg at 1:155,440 in 22,174ms drew "topp:contour01" as jpg at 1:155,440 in 24,777ms
c:\weave\jre\bin\java -jar c:\weave\wmstest.jar -u http://qgis/cgi-bin/qgis_mapserv.fcgi?map=/mnt/storage/weave/qgis/project.qgs -b 2 connected to http://qgis/cgi-bin/qgis_mapserv.fcgi?map=/mnt/storage/weave/qgis/project.qgs in 2,885ms drew "topp:school_primary" as image/jpeg at 1:114,310 in 755ms drew "topp:secondary_schools" as image/jpeg at 1:72,316 in 757ms drew "topp:buildings" as jpg at 1:121,840 in 781ms drew "topp:busstops" as jpg at 1:128,880 in 1,393ms drew "topp:contour10" as jpg at 1:156,830 in 1,629ms drew "topp:contour05" as jpg at 1:155,440 in 2,310ms drew "topp:contour02" as jpg at 1:155,440 in 5,141ms drew "topp:drainage" as jpg at 1:129,140 in 1,440ms drew "topp:sewer_pipe" as jpg at 1:139,040 in 1,340ms drew "topp:contour01" as jpg at 1:155,440 in 8,851ms drew "topp:busroutes" as jpg at 1:132,220 in 850ms drew "topp:water_pipe" as jpg at 1:190,730 in 3,369ms drew "topp:road" as jpg at 1:25,000 in 769ms drew "topp:mainroad" as jpg at 1:142,520 in 696ms drew "topp:hydro" as jpg at 1:151,100 in 730ms drew "topp:mainhydro" as jpg at 1:149,790 in 787ms drew "topp:easement" as jpg at 1:10,000 in 719ms drew "topp:property_dissolved" as jpg at 1:10,000 in 764ms drew "topp:property" as jpg at 1:10,000 in 749ms drew "topp:ward" as jpg at 1:149,830 in 675ms drew "topp:suburb" as jpg at 1:151,750 in 736ms drew "topp:mccbound" as jpg at 1:149,860 in 629ms
Getting map images from a WMS: Creates a file (
images.zip
) in the current folder containing map images generated based on parameters submittedc:\weave\jre\bin\java -jar c:\weave\wmstest.jar -u http://qgis/cgi-bin/qgis_mapserv.fcgi?map=/mnt/storage/weave/qgis/project.qgs -d connected to http://qgis/cgi-bin/qgis_mapserv.fcgi?map=/mnt/storage/weave/qgis/project.qgs in 2,914ms drew "topp:secondary_schools" as image/jpeg at 1:72,316 in 406ms drew "topp:school_primary" as jpg at 1:114,310 in 425ms drew "topp:buildings" as jpg at 1:121,840 in 426ms drew "topp:busstops" as jpg at 1:128,880 in 730ms drew "topp:contour10" as jpg at 1:156,830 in 981ms drew "topp:contour05" as jpg at 1:155,440 in 1,471ms drew "topp:contour02" as jpg at 1:155,440 in 3,085ms drew "topp:contour01" as jpg at 1:155,440 in 5,450ms drew "topp:drainage" as jpg at 1:129,140 in 823ms drew "topp:sewer_pipe" as jpg at 1:139,040 in 789ms drew "topp:water_pipe" as jpg at 1:190,730 in 1,876ms drew "topp:busroutes" as jpg at 1:132,220 in 462ms drew "topp:road" as jpg at 1:25,000 in 443ms drew "topp:mainroad" as jpg at 1:142,520 in 444ms drew "topp:hydro" as jpg at 1:151,100 in 450ms drew "topp:mainhydro" as jpg at 1:149,790 in 460ms drew "topp:easement" as jpg at 1:10,000 in 437ms drew "topp:property_dissolved" as jpg at 1:10,000 in 460ms drew "topp:property" as jpg at 1:10,000 in 466ms drew "topp:ward" as jpg at 1:149,830 in 439ms drew "topp:suburb" as jpg at 1:151,750 in 476ms drew "topp:mccbound" as jpg at 1:149,860 in 433ms