[cups-devel] Simulating an IPP printer with desired attributes using ipptool and ipptoolfile

Sahil Arora sahilarora.535 at gmail.com
Mon Jun 19 12:48:17 PDT 2017


Hi,
I recently came across a test file while creates a printer in cups:

### Start of test file create-printer.test
# Create a local (temporary) print queue
#
# Usage:
#
#    ipptool -tv -d name=... -d device=ipp://... ipp://localhost:port/
cups-create-local-printer.test
{
    # The name of the test...
    NAME "Create local print queue"

    # The operation to use
    OPERATION CUPS-Create-Local-Printer

    # Attributes, starting in the operation group...
    GROUP operation-attributes-tag
    ATTR charset attributes-charset utf-8
    ATTR language attributes-natural-language en
    ATTR uri printer-uri $uri
    ATTR name requesting-user-name $user

    GROUP printer-attributes-tag
    ATTR name printer-name $name
    ATTR uri device-uri $device

    # What statuses are OK?
    STATUS successful-ok

    # What attributes do we expect?
    EXPECT printer-is-accepting-jobs OF-TYPE boolean
    EXPECT printer-state OF-TYPE enum
    EXPECT printer-state-reasons OF-TYPE keyword
    EXPECT printer-uri-supported OF-TYPE uri
}
### End of test file

This does indeed create a printer for me in cups with the name
"customPrinter" when I run this file using the command:

`ipptool -tv -d name=customPrinter -d device=ipp://customPrinter
ipp://localhost:631/ create-printer.test`

However, in this test file, the operation "CUPS-Create-Local-Printer" is
not defined in the IANA IPP Registrations assignments for Operations<
https://www.iana.org/assignments/ipp-registrations/ipp-registrations.xhtml#ipp-registrations-7
>

Is this operation local to CUPS? If yes, then where can I find all such
operations local to CUPS, since I could not find any in the ipptoolfile man
page<https://www.cups.org/doc/man-ipptoolfile.html?TOPIC=Man+Pages> or the
ipptool man page<

2. If I try to change/update the values of some attributes of my virtual
printer, for instance the location, I write the following line in my
"create-printer.test" file in group "printer-attributes-tag":

# Change value of attribute printer-location
ATTR textWithoutLanguage printer-location TESTLOCATION

This indeed changes the value of the attribute and is reflected when I run
"get-printer-attributes.test" on the printer. However, if I try to change
some other attribute, for instance "copies-supported" or
"print-quality-default" or any other attribute, it does not reflect in the
get-printer-attributes request. The code I used to modify these attributes
in the test file are:

# Change custom attributes
ATTR enum print-quality-default high
ATTR boolean server-is-sharing-printers true
ATTR integer copies-default 13

3. In some printers, there are other attributes as well. For instance, in a
printer which supports PCLm, there are attributes like:

pclm-source-resolution-default (resolution) = 600dpi
pclm-strip-height-supported (integer) = 16
pclm-strip-height-preferred (integer) = 16

How should these attributes be added to the virtual printer so that they
come up on a get-printer-attributes request? I tried adding them using the
same format, but to no avail.

Thanks.
--
Sahil Arora


More information about the cups-devel mailing list