TestScenarios

some ideas about how to test UPnP setups, a bit more structured at the moment,
at this stage focused on UPnP A/V ControlPoints, MediaServers and MediaRenderers

Discovery:

  • do we receive NOTIFY messages from all devices/services: root device, uuid, device and services?
    • d embedded devices, s embedded services, k service types --> 3+2d+k NOTIFY broadcasts
  • did we receive all service notifications necessary for a certain device type?
    • e.g. MS needs to propagate at least information about a ContentDirectory and a ContentManager
  • check if alive notifications are scheduled and sent within a reasonable time?
    • CACHE-CONTROL value
    • does the renewing alive notification arrive before the old one times out?
  • are the notifications correct: all fields, reasonable values?
    • NOTIFY HTTP header
  • do we receive responses to a M-SEARCH request from all devices?
  • do we receive M-SEARCH requests from a devices we havn't got a notification before?
  • do we receive a response to a M-SEARCH ssdp:all request for a device we havn't got a notification before?
  • do known devices respond to M-SEARCH requests?
  • are the M-SEARCH responses correct?
  • does a CP send M-SEARCH requests in a certain interval, not only just once?
  • does a device answer with a 412 error if the M-SEARCH request isn't correct?
  • if we send a byebye, do we still get messages like Action requests or Event messages?

Description

  • are all the propagated device and service descriptions accessible?
  • reasonable XML (valid against the XML Schema)?
  • are the device and service descriptions correct: all fields, reasonable values, naming conventions?
  • can we retrieve all service descriptions (and do we get all state variables) necessary for a certain device type?
  • does a service provide all necessary actions and variables?
  • if a custom device/service is used, does the description comply to a given XML Schema?

Control

  • does it respond to all propagated actions?
  • are the responses correct for correct requests?
  • do we get a reasonable and well-formed error for an incorrect request?
  • are the requests from the device correct?
  • does it handle errors or incorrect responses from us?
  • do we get a corresponding ConnectionComplete? request for a PrepareForConnection? like the specs claim?

Eventing

  • can we subscribe to events?
  • do we get events within our subscription time?
  • are the events correct: all fields, reasonable values?
  • are there missing SEQs?
  • is the new SEQ an increment of the old one?
  • what happens, if we continue to send with the same SEQ?
  • do we still get events even if we haven't renewed the subscription?
  • does a remote device subscribe to our events?
  • do we get the renewal of its subscription in time?
  • if we send out an UNSUBSCRIBE notification, do we still get Event messages?

Presentation

  • if a presentation url is given in the device description, is it accessible?
  • is it valid (X)HTML?