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?
