GeoPose 1.0 Conformance Test Suite

Scope

This executable test suite (ETS) verifies the conformance of the implementation under test (IUT) with respect to the OGC GeoPose 1.0 Data Exchange Standard. Conformance testing is a kind of "black box" testing that examines the externally visible characteristics or behaviors of the IUT while disregarding any implementation details.

The following conformance classes from OGC 21-056r11 are implemented:

  • Basic-YPR SDU JSON, Annex A.5.2.

  • Basic-Quaternion SDU JSON - Permissive, Annex A.5.3.

  • Advanced SDU JSON, Annex A.5.4.

  • Graph SDU JSON, Annex A.5.5.

  • Chain SDU JSON, Annex A.5.6.

  • Regular Series SDU JSON, Annex A.5.7.

  • Stream SDU JSON, Annex A.5.9.

Test requirements

The documents listed below stipulate requirements that must be satisfied by a conforming implementation.

Test suite structure

The test suite definition file (testng.xml) is located in the root package, org.opengis.cite.geopose10. A conformance class corresponds to a <test> element, each of which includes a set of test classes that contain the actual test methods. The general structure of the test suite is shown in Table 1.

Table 1. Test suite structure
Conformance class Test classes

Basic YPR

org.opengis.cite.geopose10.encodings.json.BasicYPR

Basic Quaternion

org.opengis.cite.geopose10.encodings.json.BasicQuaternion

Advanced

org.opengis.cite.geopose10.encodings.json.Advanced

Chain

org.opengis.cite.geopose10.encodings.json.Chain

Graph

org.opengis.cite.geopose10.encodings.json.Graph

Regular Series

org.opengis.cite.geopose10.encodings.json.SeriesRegular

Stream Element

org.opengis.cite.geopose10.encodings.json.StreamElement

Stream Header

org.opengis.cite.geopose10.encodings.json.StreamHeader

Stream Record

org.opengis.cite.geopose10.encodings.json.StreamRecord

The Javadoc documentation provides more detailed information about the test methods that constitute the suite.

How to run the tests

The options for running the test suite are summarized below.

As entry point the Landing Page of the GeoPose 1.0 is expected.

1. Integrated development environment (IDE)

Use a Java IDE such as Eclipse, NetBeans, or IntelliJ. Clone the repository and build the project.

Set the main class to run: org.opengis.cite.geopose10.TestNGController

Arguments: The first argument must refer to an XML properties file containing the required test run arguments. If not specified, the default location at $ {user.home}/test-run-props.xml will be used.

You can modify the sample file in src/main/config/test-run-props.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties version="1.0">
    <comment>Sample test run arguments</comment>
    <entry key="basicypr">file:///Users/dev/resources/sample2_BasicEuler.json</entry>
    <entry key="basicquaternion">file:///Users/dev/resources/sample3_BasicQuaternion.json</entry>
    <entry key="advanced">file:///Users/dev/resources/sample4_Advanced.json</entry>
    <entry key="chain">file:///Users/dev/resources/sample5_Chain.json</entry>
    <entry key="graph">file:///Users/dev/resources/sample6_Graph.json</entry>
    <entry key="seriesregular">file:///Users/dev/resources/sample7_SeriesRegular.json</entry>
    <entry key="streamelement">file:///Users/dev/resources/sample8_StreamElement.json</entry>
    <entry key="streamheader">file:///Users/dev/resources/sample9_StreamHeader.json</entry>
    <entry key="streamrecord">file:///Users/dev/resources/sample10_StreamRecord.json</entry>
</properties>

The TestNG results file (testng-results.xml) will be written to a subdirectory in ${user.home}/testng/ having a UUID value as its name.

2. Command shell (console)

One of the build artifacts is an "all-in-one" JAR file that includes the test suite and all of its dependencies; this makes it very easy to execute the test suite in a command shell:

java -jar ets-geopose10-0.1-SNAPSHOT-aio.jar [-o|--outputDir $TMPDIR] [test-run-props.xml]

3. Docker

This test suite comes with a Dockerfile which can be used to easily setup the OGC test harness with the test suite. Details can be found on Create Docker Image and create and start Docker Container.

4. OGC test harness

Use TEAM Engine, the official OGC test harness. The latest test suite release are usually available at the beta testing facility. You can also build and deploy the test harness yourself and use a local installation.

Using the REST API

Using the REST API of the TEAM Engine requires some run arguments. These ate summarized in Table 2. The Obligation descriptor can have the following values: M (mandatory), O (optional), or C (conditional).

Table 2. Test run arguments
Name Value domain Obligation Description

basicypr

file

O

A file to upload

basicquaternion

file

O

A file to upload

advanced

file

O

A file to upload

chain

file

O

A file to upload

graph

file

O

A file to upload

seriesregular

file

O

A file to upload

streamelement

file

O

A file to upload

streamheader

file

O

A file to upload

streamrecord

file

O

A file to upload