Bug ID 1065543
Summary [CUPS] Include some unbuilt-by-default utilities in package (most important: `testipp`)
Classification openSUSE
Product openSUSE Distribution
Version Leap 42.3
Hardware All
OS Other
Status NEW
Severity Enhancement
Priority P5 - None
Component Printing
Assignee jsmeix@suse.com
Reporter kurt.pfeifle@gmail.com
QA Contact jsmeix@suse.com
Found By ---
Blocker ---

If you look into the CUPS source code, subdirectory "cups", and into the
Makefile as well, you'll see that there are several utilities included, all
starting with "cups..." in their names. 

These are not built by default. They spring to life if you have configured
"--with-unit-tests" or if you build them one by one in the "cups" subdir with
"make test*" or "make unittests". However, some of these tools have a benefit
even beyond unit testing. See below.

Here is the complete list:

* testipp, testadmin, testarray, testcache, testconflicts, testcreds,
  testcups, testdest, testfile, testgetdests, testhttp, testi18n,
  testipp, testlang, testoptions, testppd, testpwg, testsnmp.

While these utilities are primarily of use for CUPS developers -- system
administrators and advanced power users may be able to take advantage from some
of the features they provide.

I'll just give one example (this is not the place to start documenting them
all):

* `testipp`, when run on its own, may not show any useful output to you.
  But feed it one of the "c00xxx" files from the cups/spool directory,
  which hold the job attributes for job number 00xxx (and about which
  you always may have wondered how to decode them, other than with using
  good-ol' "strings" on them), then you'll see what it is good for:


-----> snip <--------------------------------------------
$> sudo ./testipp /var/spool/cups/c00222

/var/spool/cups/c00241:

operation-attributes-tag:

    attributes-charset (charset): utf-8
    attributes-natural-language (naturalLanguage): en-us

job-attributes-tag:

    printer-uri (uri): ipp://localhost:631/printers/OJ6500
    job-originating-user-name (nameWithoutLanguage): kp
    job-name (nameWithoutLanguage): fingerfood-gek�rzt_odt.pdf
    AP_ColorMatchingMode (nameWithoutLanguage): AP_ApplicationColorMatching
    AP_D_InputSlot (nameWithoutLanguage): 
    BookletBinding..b. (boolean): false
    BookletType..n. (nameWithoutLanguage): 0
    collate (boolean): true
    com.apple.print.DocumentTicket.PMSpoolFormat (nameWithoutLanguage):
application/pdf
    com.apple.print.JobInfo.PMApplicationName (nameWithoutLanguage): Preview
    com.apple.print.JobInfo.PMJobName (nameWithoutLanguage):
fingerfood-gek�rzt_odt.pdf
    [....]
    [....]
    [....]
    date-time-at-completed (dateTime): 2017-10-13T10:44:39Z
    date-time-at-creation (dateTime): 2017-10-13T10:01:25Z
    date-time-at-processing (dateTime): 2017-10-13T10:05:50Z
    time-at-completed (integer): 1507891479
    time-at-creation (integer): 1507888885
    time-at-processing (integer): 1507889150
    job-id (integer): 241
    job-state (enum): completed
    job-state-reasons (keyword): processing-to-stop-point
    job-impressions-completed (integer): 20
    job-media-sheets-completed (integer): 20
    job-printer-uri (uri): ipp://mbp2-5.local:631/printers/OJ6500
    job-k-octets (integer): 1672
    document-format-supplied (mimeMediaType): application/pdf
    document-format (mimeMediaType): application/pdf
    document-name-supplied (nameWithoutLanguage): fingerfood-gek�rzt_odt.pdf
    job-hold-until (keyword): no-hold
    job-impressions (integer): 20
    com.apple.print.PrintSettings.PMTotalSidesImaged..n. (integer): 20
    com.apple.print.PrintSettings.PMTotalBeginPages..n. (integer): 20
    job-printer-state-message (textWithoutLanguage): 
    job-printer-state-reasons (1setOf keyword):
com.hp.m.1.19.3-warning,com.hp.m.1.19.0-warning,com.hp.m.1.19.1-warning,com.hp.m.1.19.2-warning,other-warning
-----> snip <--------------------------------------------

As you noticed, these "c00xxx" files hold the complete job ticketing (job
attributes) information about any given job (before printing happens as well as
after it is complete), and "testipp" can decode these files, making the
full-names of each respective job's IPP attributes to the user or admin.

So "testipp" is a completely useful tool for anybody who may have to debug and
troubleshoot CUPS printing problems.

Please build all these test* tools (even the seemingly useless ones) and
provide them as an additional CUPS utilities package, for example as
"cups-testtools". (I'll volunteer then to contribute a little README file
documenting the most important use cases for these tools.)


You are receiving this mail because: