Skip to content
IPP Test Suite for IPP System Service
Branch: master
Clone or download
Latest commit c591f03 Aug 26, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
README.md Last Commit for Google Summer of Code 2019 Aug 26, 2019
allocate-printer-resources.test
cancel-resource.test The second leg of test: Aug 25, 2019
cancel-subscription.test
create-job-withJobTemplate.test The third leg of addition of test files. Aug 26, 2019
create-printer-minimal-resource.test The first leg of addition of test-files : Aug 22, 2019
create-printer-minimal.test The first leg of addition of test-files : Aug 22, 2019
create-printer.test The first leg of addition of test-files : Aug 22, 2019
create-resource-static-icc-profile.test The first leg of addition of test-files : Aug 22, 2019
create-resource-static-image.test The first leg of addition of test-files : Aug 22, 2019
create-resource-static-job.test The first leg of addition of test-files : Aug 22, 2019
create-resource-static-printer.test The first leg of addition of test-files : Aug 22, 2019
create-resource-static-strings.test The first leg of addition of test-files : Aug 22, 2019
create-resource-subscriptions-pullMethod.test The second leg of test: Aug 25, 2019
create-resource-subscriptions-pushMethod.test The second leg of test: Aug 25, 2019
create-resource-template-document.test The first leg of addition of test-files : Aug 22, 2019
create-resource-template-job.test The first leg of addition of test-files : Aug 22, 2019
create-resource-template-printer.test The first leg of addition of test-files : Aug 22, 2019
create-system-subscriptions-pullMethod.test The second leg of test: Aug 25, 2019
create-system-subscriptions-pushMethod.test The second leg of test: Aug 25, 2019
deallocate-printer-resources.test The second leg of test: Aug 25, 2019
delete-printer.test The second leg of test: Aug 25, 2019
disable-all-printers.test The second leg of test: Aug 25, 2019
enable-all-printers.test The second leg of test: Aug 25, 2019
get-printer-attributes-all.test The third leg of addition of test files. Aug 26, 2019
get-printer-attributes-job-template.test The third leg of addition of test files. Aug 26, 2019
get-printer-attributes-printer-description.test The third leg of addition of test files. Aug 26, 2019
get-printer-resources.test The third leg of addition of test files. Aug 26, 2019
get-printers.test The third leg of addition of test files. Aug 26, 2019
get-resource-attributes-all.test The first leg of addition of test-files : Aug 22, 2019
get-resource-attributes-resource-description.test The first leg of addition of test-files : Aug 22, 2019
get-resource-attributes-resource-status.test The first leg of addition of test-files : Aug 22, 2019
get-resources-all-minimal.test The second leg of test: Aug 25, 2019
get-resources-all-opt.test The second leg of test: Aug 25, 2019
get-resources-description-minimal.test The second leg of test: Aug 25, 2019
get-resources-description-opt.test The second leg of test: Aug 25, 2019
get-resources-none-minimal.test The second leg of test: Aug 25, 2019
get-resources-none-opt.test The second leg of test: Aug 25, 2019
get-resources-status-minimal.test The second leg of test: Aug 25, 2019
get-resources-status-opt.test The second leg of test: Aug 25, 2019
get-subscription-attributes-all.test
get-subscription-attributes-description.test The second leg of test: Aug 25, 2019
get-subscription-attributes-template.test The second leg of test: Aug 25, 2019
get-subscriptions-resource-all-minimal.test The second leg of test: Aug 25, 2019
get-subscriptions-resource-all-opt.test The second leg of test: Aug 25, 2019
get-subscriptions-resource-description-minimal.test The second leg of test: Aug 25, 2019
get-subscriptions-resource-description-opt.test The second leg of test: Aug 25, 2019
get-subscriptions-resource-template-minimal.test The second leg of test: Aug 25, 2019
get-subscriptions-resource-template-opt.test The second leg of test: Aug 25, 2019
get-system-attributes-all.test The first leg of addition of test-files : Aug 22, 2019
get-system-attributes-description.test The first leg of addition of test-files : Aug 22, 2019
get-system-attributes-no-input.test The first leg of addition of test-files : Aug 22, 2019
get-system-attributes-status.test The first leg of addition of test-files : Aug 22, 2019
install-resource.test The first leg of addition of test-files : Aug 22, 2019
pause-all-printers-after-current-job.test The second leg of test: Aug 25, 2019
pause-all-printers.test The second leg of test: Aug 25, 2019
print-job-withJobTemplate.test The third leg of addition of test files. Aug 26, 2019
print-uri-withJobTemplate.test The third leg of addition of test files. Aug 26, 2019
register-output-device.test The third leg of addition of test files. Aug 26, 2019
renew-subscription.test The third leg of addition of test files. Aug 26, 2019
restart-one-printer.test The first leg of addition of test-files : Aug 22, 2019
restart-system.test The first leg of addition of test-files : Aug 22, 2019
resume-all-printers.test The second leg of test: Aug 25, 2019
send-resource-data.test The first leg of addition of test-files : Aug 22, 2019
set-resource-attributes.test The third leg of addition of test files. Aug 26, 2019
set-system-attributes-default-configured.test The third leg of addition of test files. Aug 26, 2019
set-system-attributes-general.test The third leg of addition of test files. Aug 26, 2019
set-system-attributes-power-calendar.test The third leg of addition of test files. Aug 26, 2019
set-system-attributes-power-event.test
set-system-attributes-power-timeout.test
set-system-attributes-system-contact.test The third leg of addition of test files. Aug 26, 2019
set-system-attributes-xri-uri.test The third leg of addition of test files. Aug 26, 2019
shutdown-all-printers.test The first leg of addition of test-files : Aug 22, 2019
shutdown-one-printer.test The first leg of addition of test-files : Aug 22, 2019
startup-all-printers.test
startup-one-printer.test The first leg of addition of test-files : Aug 22, 2019

README.md

Google Summer of Code 2019 - "IPP Test Suite for IPP System Service"

The repository contains the code created for the project IPP Test Suite for IPP System Service during the Google Summer of Code 2019, under the aegis of The Linux Foundation.

Overview - Existing tools and technologies

The section briefly describes the relevant Printer Working Group (PWG) tools and technologies.

Internet Printing Protocol (IPP)

The Internet Printing Protocol is a ubiquitous application level protocol that enables communication between Application Program Clients and Printing Resources (or the Print Server) over a local network or the Internet. The protocol is supported by all modern network printers and supercedes legacy protocols.

The client can perform tasks like querying the printer capabilities, status, submit mutliple print jobs, receive job status and cancel print jobs. The protocol also enables security capabilities like authentication,access control and encryption.

IPP Tool

IPP Tool is a program that sends IPP requests to the specified printer-uri and tests and/or displays the results based on requests by a testfile. The results include the expected response status, attributes, and values. Output is either a plain text, formatted text, CSV,or XML report on the standard output.

IPP System Service

IPP System Service is an organization-wide framework being developed by the Printer Working Group that acts as a central service to manage and control all the printing, scanning resources on the network under one roof. It enables clients to store common resources like static images, strings, template printer objects, administratively manage access controls on printing resources. This makes doing system wide changes easy and tractable.

IPP Tool Test-File

An ipptoolfile is a file that satisfies a predefined syntax and contains all information to be included in a request to be issued to a printer by ipptool. Apart from that, it also includes information to be expected in a response from the printer.

Project Work

I will issue a pull-request for the project soon on the organization repository: https://github.com/istopwg/ippsample

This repository contains the test-suite, that is a set of ipptest-files to check the conformance of a given system with the IPP System Service Standards. System managers can use these test-files to verify the status of different components like system,printers and resources under different system operations.

I have written a total of 76 test files for the purposes of this project. The create-printer test file still requires a few changes.

Future Work

  • The current parser does not support parenthesis for data-types for the OF-TYPE predicate. Currently, one has to manually do few changes before running the test script. We'll introduce a transient parenthesis-devoid version soon.
  • To alleviate the problem of manually running so many test, we will develop a bash script that will do the same.
  • If there are changes to the ipptoolfile that supports dynamic testing, these files will have to be modified or replaced

Acknowledgements

I would like to extend my heart-felt gratitude to Mr. Michael Sweet, who helped me through all of the technical difficulties encountered in this project. Needless to say, without his guidance, none of this work would have been possible. I would also like to thank my mentors Ira McDonald, Danny Brennan, Till Kamppeter and Aveek Basu. I would also like to specially thank Aveek for his administrative, technical and moral support throughout my journey at the Open Prinitng Division of Linux Foundation.

Conclusion

Google Summer of Code 2019 has been a unique experience and has helped me understand the workings of the Open-Source Industry. It has made me all the more confident in my abilities to make fruitful contributions to Open Source in the future. I would like to thank Google for providing this wonderful opportunity that helped me spend my Summers in the best way possible!

You can’t perform that action at this time.