# CUPS Software Test Plan

CUPS-STP-1.1
Easy Software Products
Copyright 1997-2004, All Rights Reserved

# Table of Contents

1 Scope

- 1.1 Identification
- 1.2 System Overview
- 1.3 Document Overview

2 References

- 2.1 CUPS Documentation
- 2.2 Other Documents

3 Test Procedure
4 IPP Compliance Tests

- 4.1 Request Tests
- 4.2 CUPS Printer Operation Tests
- 4.3 Job Operation Tests

5 Command Tests

- 5.1 lpadmin
- 5.2 lpc
- 5.3 lpq
- 5.4 lpstat
- 5.5 lp
- 5.6 lpr
- 5.7 lprm
- 5.8 cancel
- 5.9 lpinfo

A Glossary

- A.1 Terms
- A.2 Acronyms

# 1 Scope

## 1.1 Identification

This software test plan provides detailed tests that are used to evaluate the stability and compliance of the Common UNIX Printing System ("CUPS") Version 1.1.

## 1.2 System Overview

CUPS provides a portable printing layer for UNIX®-based operating systems. It has been developed by Easy Software Products to promote a standard printing solution for all UNIX vendors and users. CUPS provides the System V and Berkeley command-line interfaces.

CUPS uses the Internet Printing Protocol ("IPP") as the basis for managing print jobs and queues. The Line Printer Daemon ("LPD") Server Message Block ("SMB"), and AppSocket (a.k.a. JetDirect) protocols are also supported with reduced functionality. CUPS adds network printer browsing and PostScript Printer Description ("PPD") based printing options to support real-world printing under UNIX.

CUPS includes an image file RIP that supports printing of image files to non-PostScript printers. A customized version of GNU Ghostscript 7.05 for CUPS called ESP Ghostscript is available separately to support printing of PostScript files within the CUPS driver framework. Sample drivers for Dymo, EPSON, HP, and OKIDATA printers are included that use these filters.

Drivers for thousands of printers are provided with our ESP Print Pro software, available at:

        http://www.easysw.com/printpro/

CUPS is licensed under the GNU General Public License and GNU Library General Public License. Please contact Easy Software Products for commercial support and "binary distribution" rights.

## 1.3 Document Overview

This software test plan is organized into the following sections:

- 1 - Scope
- 2 - References
- 3 - Test Procedure
- 4 - IPP Compliance Tests
- 5 - Command Tests
- A - Glossary

# 2 References

## 2.1 CUPS Documentation

The following CUPS documentation is referenced by this document:

- CUPS-CMP-1.1: CUPS Configuration Management Plan
- CUPS-IDD-1.1: CUPS System Interface Design Description
- CUPS-IPP-1.1: CUPS Implementation of IPP
- CUPS-SAM-1.1.x: CUPS Software Administrators Manual
- CUPS-SDD-1.1: CUPS Software Design Description
- CUPS-SPM-1.1.x: CUPS Software Programming Manual
- CUPS-SSR-1.1: CUPS Software Security Report
- CUPS-STP-1.1: CUPS Software Test Plan
- CUPS-SUM-1.1.x: CUPS Software Users Manual
- CUPS-SVD-1.1: CUPS Software Version Description

## 2.2 Other Documents

The following non-CUPS documents are referenced by this document:

- Adobe PostScript Printer Description File Format Specification, Version 4.3.
- Adobe PostScript Language Reference, Third Edition.
- IPP/1.1: Implementers Guide
- RFC 1179, Line Printer Daemon Protocol
- RFC 2396, Uniform Resource Identifiers (URI): Generic Syntax
- RFC 2567, Design Goals for an Internet Printing Protocol
- RFC 2568, Rationale for the Structure of the Model and Protocol for the Internet Printing Protocol
- RFC 2569, Mapping between LPD and IPP Protocols
- RFC 2616, Hypertext Transfer Protocol -- HTTP/1.1
- RFC 2617, HTTP Authentication: Basic and Digest Access Authentication
- RFC 2910, IPP/1.1: Encoding and Transport
- RFC 2911, IPP/1.1: Model and Semantics
- RFC 3380, IPP: Job and Printer Set Operations

# 3 Test Procedure

The test software and data files are located in the test subdirectory of the source distribution. A script is provided to compile the `ipptest` program and run all of the tests that follow, producing a success/fail report.

The `test` target of the top-level makefile can be used to run this script:

    make test

or you can run the test script directly:

    cd test
    ./run-stp-tests

A Software Test Report is stored in HTML and PDF files that are generated using the HTMLDOC software.

# 4 IPP Compliance Tests

This section describes the tests used to validate the IPP standards compliance of the CUPS server.

## 4.1 Request Tests

These tests verify that the CUPS scheduler only accepts valid IPP requests that start with the `attributes-charset` and `attributes-natural-language` attributes and also contain a `printer-uri` or `job-uri` attribute.

It also verifies that the CUPS scheduler always responds with `attributes-charset` and `attributes-natural-language` attributes, using default values if they are not provided by the client.

## 4.2 CUPS Printer Operation Tests

These tests verify that the CUPS printer operations are supported and function properly. Two printers called `Test1` and `Test2` are created, one as a PostScript printer and one as a raster printer.

## 4.3 Job Operation Tests

These test verify that the CUPS scheduler accepts print jobs for all supported file formats and that the `cancel-job`, `hold-job`, and `resume-job` operations work.

# 5 Command Tests

This section describes the tests used to validate the Berkeley and System V commands included with CUPS.

## 5.1 lpadmin

This test verifies that printers can be added, modified, and defaulted using the `lpadmin` command.

## 5.2 lpc

This test verifies that the `lpc` command can show the current status of all print queues.

## 5.3 lpq

This test verifies that the `lpq` command lists any jobs in the queue.

## 5.4 lpstat

This test verifies that the `lpstat` command works with all reports using the "`-t`" option.

## 5.5 lp

This test verifies that the `lp` command works with both the default destination and a specific destination.

## 5.6 lpr

This test verifies that the `lpr` command works with both the default destination and a specific destination.

## 5.7 lprm

This test verifies that the `lprm` command can properly cancel a job.

## 5.8 cancel

This test verifies that the `cancel` command can properly cancel a job or all jobs.

## 5.9 lpinfo

This test verifies that the `lpinfo` command returns a list of available printer drivers and devices.

# A Glossary

## A.1 Terms

C
  A computer language.
parallel
  Sending or receiving data more than 1 bit at a time.
pipe
  A one-way communications channel between two programs.
serial
  Sending or receiving data 1 bit at a time.
socket
  A two-way network communications channel.

## A.2 Acronyms

ASCII
  American Standard Code for Information Interchange
CUPS
  Common UNIX Printing System
ESC/P
  EPSON Standard Code for Printers
FTP
  File Transfer Protocol
HP-GL
  Hewlett-Packard Graphics Language
HP-PCL
  Hewlett-Packard Page Control Language
HP-PJL
  Hewlett-Packard Printer Job Language
IETF
  Internet Engineering Task Force
IPP
  Internet Printing Protocol
ISO
  International Standards Organization
LPD
  Line Printer Daemon
MIME
  Multimedia Internet Mail Exchange
PPD
  PostScript Printer Description
SMB
  Server Message Block
TFTP
  Trivial File Transfer Protocol