STILTS-TAPLINT(1)
π stilts-taplint β the tea on testing TAP services
okay bestie, so this is stilts-taplint, one of the stilts commands, and it Tests TAP services. yes literally that's the whole job description. π
β¨ SYNOPSIS β¨
stilts taplint [tapurl=<url-value>] [stages=[+/-]XXX ...]
[maxtable=<int-value>] [tables=<name-list>]
[format=text|json] [report=[EWISF]+] [maxrepeat=<int-value>]
[truncate=<int-value>] [debug=true|false]
[interface=tap1.0|tap1.1|cap] [auth=true|false]
[syncurl=<url-value>] [asyncurl=<url-value>]
[tablesurl=<url-value>] [capabilitiesurl=<url-value>]
[availabilityurl=<url-value>] [examplesurl=<url-value>]
πΈ DESCRIPTION πΈ
so taplint runs a whole series of tests against a Table Access Protocol (TAP) service and then reports back what it found. and no cap, unlike basically every other tool in this package, this one is not really for normal users β it's for the people developing or operating TAP services, so they can vibe check their own service, probably with the goal of making it more compliant. π«Ά
π the stages of grief (jk it's just stages)
Testing happens in a bunch of stages, and you can pick which ones actually run using the stages parameter. β¨
the default output (format=text) is line-based text going to standard output, and every report line has this (extremely greppable, honestly iconic) shape:
T-SSS-MMMMxN aaaaa...
and here's what each lil piece means, bestie: π
Tβ the Report type, one ofE(rror),W(arning),I(nfo),S(ummary),F(ailure). go read the docs for thereportparameter if you want the full breakdown of what those actually mean. you can usereportto suppress some of them β and FYI, onlyEmeans there's a genuine service compliance error, but keeping the others around can make it way easier to see what's going on. πSSSβ the Stage abbreviation, same ones used by thestagesparameter. and yes,stagesis how you select which stages actually get run. πMMMMβ the Message label. it's always the same for messages coming from the same test, usually different for messages from different tests, and it may be a lil bit mnemonic. lowkey helpful.xβ the Continuation indicator, either-or+. most of the time it's-meaning "this is the first line of a message", but multi-line messages (rare, don't worry about them) use-for the first line and+for every continuation line after. π¦Nβ the Sequence number. it's1the first time messageT-SSS-MMMMgets reported, and it goes up by one every time that same message shows up again. but after a certain maximum (and that max is decided by themaxrepeatparameter) any extra reports with the same code stop being output individually β instead a summary of how many got discarded is written at the end of the section, with the character"x"where the sequence number would be. this is the behaviour that stops your output from being completely swamped by the same issue screaming at you a million times. and note: ifmaxrepeatis pushed above9, more than one digit gets used here, so like formaxrepeat=999the format would beNNNnotN. βaaaaa...β the Message text. just a free text description of whatever is being reported. π¬
if that format isn't your vibe, there are others you can pick with the format parameter, which right now also supports JSON. and if you want even more flexible interaction with the output, you can invoke taplint programmatically and supply your own instance. main character energy tbh. β¨
π§ the honest disclaimer (she's complicated)
TAP is a complicated beast, fr fr. it references so many standards, including TAP, UWS, VODataService, ADQL, VOResource, VOSI, TAPRegExt, DALI, ObsCore, ObsLocTAP, EPN-TAP, VOTable, UCD, VOUnits, SSO, SoftID, HTTP, RDFa Lite β and writing a validator that's genuinely comprehensive is hard, especially one that still manages to produce useful output for services sitting at a whole range of compliance levels. π
this tool tries to make a wide range of tests, but it does not claim to be comprehensive. if you wanna get an idea of what tests it actually performs, look at the stages listed in the description of the stages parameter. π
things it does do pretty well:
- it checks that declared metadata is consistent, and that it actually matches the data really returned from queries β
- it tests job submission in most of the various ways the TAP standard permits β
- it checks all returned VOTables by effectively running them through
votlintβ
things it does not test much:
- complex ADQL queries π
- coordinate/STC-related data types π
- queries in non-ADQL languages π
- and service registration π
π one more thing: HTTP connections made by this validator are flagged in theUser-Agentfield with the token"(IVOA-test)". iykyk.
to be continued, bestie... π
π OPTIONS π
okay bestie, this is the part where we set all the knobs and dials. Every single parameter is right here, no skipping, fr fr. β¨
tapurl=<url-value>β this is the base URL of a Table Access Protocol service. It's the bare URL, no trailing"/[a]sync"attached. In the usual case, the default values of the various endpoints (sync and async query submission, tables metadata, service-provided examples etc) use this URL as a parent and append standard sub-paths. But sometimes endpoint determination is more complicated, as determined by theinterfaceparameter which may cause endpoints to be read from the capabilities document attapurl/capabilities, and by other endpoint-specific parameters (syncurl,asyncurl,tablesurl,capabilitiesurl,availabilityurl,examplesurl) for fine tuning.stages=[+/-]XXX ...β determines the validation stages which the validator will perform. Each stage is represented by a short code, as follows:TMV: Validate table metadata against XML schemaTME: Check content of tables metadata from/tablesTMS: Check content of tables metadata fromTAP_SCHEMATMC: Compare table metadata from/tablesandTAP_SCHEMACPV: Validate capabilities against XML schemaCAP: Check TAP and TAPRegExt content of capabilities documentAVV: Validate availability against XML schemaQGE: Make ADQL queries in sync GET modeQPO: Make ADQL queries in sync POST modeQAS: Make ADQL queries in async modeUWS: Test asynchronous UWS/TAP behaviourMDQ: Check table query result columns against declared metadataOBS: Test implementation of ObsCore Data ModelLOC: Test implementation of ObsLocTAP Data ModelUPL: Make queries with table uploadsEXA: Check content of examples document
This parameter can specify what stages to run in the following ways:
- if left blank, the default list of stages (which is most or all of them) will be run
- if the value is a space-separated list of three-letter codes, it lists the stages that will be run
- if the value is a space separated list of three-letter codes preceded by a
"+"or"-"character, the named stages will be removed or added to the default list
So "TME CAP" will run only Table Metadata and Capability stages, while "-EXA -UPL" will run all the default stages apart from Examples and Upload. The order in which stages are listed is not significant.
Note that removing some stages may affect the operation of others; for instance table metadata is acquired from the metadata stages, and avoiding those will mean that later stages which use the table metadata to pose queries will not be able to do so with knowledge of the database schema. π
maxtable=<int-value>β limits the number of tables from the service that will be tested. Currently, this only affects stageMDQ. If the value is left blank (the default), or if it is larger than the number of tables actually present in the service, it will have no effect.tables=<name-list>β if supplied, this specifies a list of tables to test. It may be set to a space- or comma-separated list of table names for consideration; any tables not covered by this list are mostly ignored for the purposes of reporting. Matching against table names is case-insensitive, and the asterisk character"*"may be used as a wildcard to match any sequence of characters. Note that matching is against the declared table name which may or may not include a schema name prefix depending on service behaviour. By default this parameter is not set, which means that all tables are considered.format=text|jsonβ determines the format of the output. Possible values aretext,json. Note not all of the other parameters may be applicable to all output formats.report=[EWISF]+β letters indicating which message types should be listed. Each character of the string is one of the lettersE,W,I,S,Fwith the following meanings:E: Error in operation or standard compliance of the service.W: Warning that service behaviour is questionable, or contravenes a standard recommendation, but is not in actual violation of the standard.I: Information about progress, for instance details of queries made.S: Summary of previous successful/unsuccessful reports.F: Failure of the validator to perform some testing. The cause is either some error internal to the validator, or some error or missing functionality in the service which has already been reported.
maxrepeat=<int-value>β puts a limit on the number of times that a single message will be repeated. By setting this to some reasonably small number, you can ensure that the output does not get cluttered up by millions of repetitions of essentially the same error. πtruncate=<int-value>β limits the line length written to the output.debug=true|falseβ if true, debugging output including stack traces will be output along with the normal validation messages.interface=tap1.0|tap1.1|capβ defines how the service endpoints and the version of the TAP protocol to use for queries is determined. This may take one of the following (case-insensitive) values:TAP1.0: The standard TAP endpoints are used, without examining the service's capabilities document. The service is queried using version 1.0 of the TAP protocol.TAP1.1: The standard TAP endpoints are used, without examining the service's capabilities document. The service is queried using version 1.1 of the TAP protocol.cap: The service's capabilities document is examined, and the endpoints listed there are used.
The capabilities document, if used, is read from tapurl/capabilities unless the capabilitiesurl parameter is defined, in which case that is used.
The baseline value of all the TAP service endpoints (sync, async, tables, capabilities, examples) are determined by this parameter, but each of those endpoint values may be overridden individually by other endpoint-specific parameters (syncurl, asyncurl, tablesurl, capabilitiesurl, availabilityurl, examplesurl).
For default (unauthenticated) access, the default value is usually suitable.
auth=true|falseβ if true, then an attempt will be made to authenticate with the TAP service even if anonymous operation is permitted. If the service offers authentication, you will be asked for credentials. To use this option in non-interactive contexts, you may want to use theauth.usernameandauth.passwordsystem properties.syncurl=<url-value>β sets the URL to use for the sync endpoint of the TAP service. The default value would be<tapurl>/sync, but it may be influenced by the choseninterfacevalue, and it can be further overridden by setting this value.asyncurl=<url-value>β sets the URL to use for the async endpoint of the TAP service. The default value would be<tapurl>/async, but it may be influenced by the choseninterfacevalue, and it can be further overridden by setting this value.tablesurl=<url-value>β sets the URL to use for the tables endpoint of the TAP service. The default value would be<tapurl>/tables, but it may be influenced by the choseninterfacevalue, and it can be further overridden by setting this value.capabilitiesurl=<url-value>β sets the URL to use for the capabilities endpoint of the TAP service. The default value would be<tapurl>/capabilities, but it may be influenced by the choseninterfacevalue, and it can be further overridden by setting this value.availabilityurl=<url-value>β sets the URL to use for the availability endpoint of the TAP service. The default value would be<tapurl>/availability, but it may be influenced by the choseninterfacevalue, and it can be further overridden by setting this value.examplesurl=<url-value>β sets the URL to use for the examples endpoint of the TAP service. The default value would be<tapurl>/examples, but it may be influenced by the choseninterfacevalue, and it can be further overridden by setting this value.
π¦ SEE ALSO π¦
If the package stilts-doc is installed, the full documentation SUN/256 is available in HTML format: file:///usr/share/doc/stilts/sun256/index.html
π VERSION π
STILTS version 3.5.4-debian
This is the Debian version of Stilts, which lack the support of some file formats and network protocols. For differences see file:///usr/share/doc/stilts/README.Debian
πΈ AUTHOR πΈ
Mark Taylor (Bristol University)
okay that's the whole vibe check, bestie. This page is STILTS-TAPLINT(1), dated Mar 2017, and the version we're repping is STILTS version 3.5.4-debian. Now go tap some tables, you icon. π
β¨
π¦ where this page comes from
- ubuntu stonking: stilts 3.5.4-1 Β· LGPL-2.1-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms