Beispiel #1
0
 def test_pack_unpack_presentationStatus(self):
     STATUSES=[
         ( ["okay"], "okay" ),
         ( ["transitioning"], "transitioning" ),
         ( ["fault"], "fault" ),
         ( ["other"], "other" ),
         ( ["okay", "sub"], "okay sub" ),
         ( ["transitioning", "sub1", "sub2"], "transitioning sub1 sub2" ),
     ]
     for (VALUE, ENCODED) in STATUSES:
         c=CII(presentationStatus=VALUE)
         self.assertEquals(c.presentationStatus, VALUE)
         
         msg=c.pack()
         j=json.loads(msg)
         self.assertEquals(j["presentationStatus"], ENCODED)
         self.assertEquals(len(j.keys()), 1)
         
         d=CII.unpack(msg)
         self.assertEquals(OMIT, d.protocolVersion)
         self.assertEquals(OMIT, d.contentId)
         self.assertEquals(OMIT, d.contentIdStatus)
         self.assertEquals(VALUE, d.presentationStatus)
         self.assertEquals(OMIT, d.mrsUrl)
         self.assertEquals(OMIT, d.wcUrl)
         self.assertEquals(OMIT, d.tsUrl)
         self.assertEquals(OMIT, d.teUrl)
         self.assertEquals(OMIT, d.timelines)
         self.assertEquals(OMIT, d.private)
Beispiel #2
0
 def _ws_on_message(self, msg):
     self.log.debug("Message received.")
     if not msg.is_text:
         self._ws_on_error("Protocol error - message received was not a text frame")
         return
     try:
         cii = CII.unpack(msg.data)
     except Exception,e:
         self._ws_on_error("Protocol error - message received could not be parsed as a CII message: "+str(msg)+". Continuing anyway. Cause was: "+str(e)+"\n")
         return
Beispiel #3
0
 def test_unpack_ignore_unknown_fields(self):
     msg="""{ "flurble" : 5 }"""
     c=CII.unpack(msg)
     self.assertEquals(OMIT, c.protocolVersion)
     self.assertEquals(OMIT, c.contentId)
     self.assertEquals(OMIT, c.contentIdStatus)
     self.assertEquals(OMIT, c.presentationStatus)
     self.assertEquals(OMIT, c.mrsUrl)
     self.assertEquals(OMIT, c.wcUrl)
     self.assertEquals(OMIT, c.tsUrl)
     self.assertEquals(OMIT, c.teUrl)
     self.assertEquals(OMIT, c.timelines)
     self.assertEquals(OMIT, c.private)
Beispiel #4
0
 def test_unpack_empty_message(self):
     msg="{}"
     c=CII.unpack(msg)
     self.assertEquals(OMIT, c.protocolVersion)
     self.assertEquals(OMIT, c.contentId)
     self.assertEquals(OMIT, c.contentIdStatus)
     self.assertEquals(OMIT, c.presentationStatus)
     self.assertEquals(OMIT, c.mrsUrl)
     self.assertEquals(OMIT, c.wcUrl)
     self.assertEquals(OMIT, c.tsUrl)
     self.assertEquals(OMIT, c.teUrl)
     self.assertEquals(OMIT, c.timelines)
     self.assertEquals(OMIT, c.private)
Beispiel #5
0
 def _ws_on_message(self, msg):
     self.log.debug("Message received.")
     if not msg.is_text:
         self._ws_on_error(
             "Protocol error - message received was not a text frame")
         return
     try:
         cii = CII.unpack(msg.data)
     except Exception, e:
         self._ws_on_error(
             "Protocol error - message received could not be parsed as a CII message: "
             + str(msg) + ". Continuing anyway. Cause was: " + str(e) +
             "\n")
         return
Beispiel #6
0
 def test_pack_unpack_protocolVersion(self):
     c=CII(protocolVersion="1.1")
     self.assertEquals(c.protocolVersion, "1.1")
     
     msg=c.pack()
     j=json.loads(msg)
     self.assertEquals(j["protocolVersion"], "1.1")
     self.assertEquals(len(j.keys()), 1)
     
     d=CII.unpack(msg)
     self.assertEquals("1.1", c.protocolVersion)
     self.assertEquals(OMIT, d.contentId)
     self.assertEquals(OMIT, d.contentIdStatus)
     self.assertEquals(OMIT, d.presentationStatus)
     self.assertEquals(OMIT, d.mrsUrl)
     self.assertEquals(OMIT, d.wcUrl)
     self.assertEquals(OMIT, d.tsUrl)
     self.assertEquals(OMIT, d.teUrl)
     self.assertEquals(OMIT, d.timelines)
     self.assertEquals(OMIT, d.private)
Beispiel #7
0
 def _onClientMessage(self, webSock, message):
     msg = json.loads(str(message))
     print msg
     print
     
     if "cii" in msg:
         cii = CII.unpack(json.dumps(msg["cii"]))
     else:
         cii = CII()
         
     controlTimestamps = {}
     if "controlTimestamps" in msg:
         for timelineSelector, recvControlTimestamp in msg["controlTimestamps"].items():
             ct = ControlTimestamp.unpack(json.dumps(recvControlTimestamp))
             controlTimestamps[timelineSelector] = ct
         
     options = {}
     if "options" in msg:
         options = msg["options"]
         
     self.onUpdate(cii,controlTimestamps, options)
Beispiel #8
0
 def test_pack_unpack_contentId(self):
     VALUE="dvb://a.b.c.d"
     c=CII(contentId=VALUE)
     self.assertEquals(c.contentId, VALUE)
     
     msg=c.pack()
     j=json.loads(msg)
     self.assertEquals(j["contentId"], VALUE)
     self.assertEquals(len(j.keys()), 1)
     
     d=CII.unpack(msg)
     self.assertEquals(OMIT, d.protocolVersion)
     self.assertEquals(VALUE, d.contentId)
     self.assertEquals(OMIT, d.contentIdStatus)
     self.assertEquals(OMIT, d.presentationStatus)
     self.assertEquals(OMIT, d.mrsUrl)
     self.assertEquals(OMIT, d.wcUrl)
     self.assertEquals(OMIT, d.tsUrl)
     self.assertEquals(OMIT, d.teUrl)
     self.assertEquals(OMIT, d.timelines)
     self.assertEquals(OMIT, d.private)
Beispiel #9
0
 def test_pack_unpack_teUrl(self):
     VALUE="ws://1.2.3.4:5678/seilgr"
     c=CII(teUrl=VALUE)
     self.assertEquals(c.teUrl, VALUE)
     
     msg=c.pack()
     j=json.loads(msg)
     self.assertEquals(j["teUrl"], VALUE)
     self.assertEquals(len(j.keys()), 1)
     
     d=CII.unpack(msg)
     self.assertEquals(OMIT, d.protocolVersion)
     self.assertEquals(OMIT, d.contentId)
     self.assertEquals(OMIT, d.contentIdStatus)
     self.assertEquals(OMIT, d.presentationStatus)
     self.assertEquals(OMIT, d.mrsUrl)
     self.assertEquals(OMIT, d.wcUrl)
     self.assertEquals(OMIT, d.tsUrl)
     self.assertEquals(VALUE, d.teUrl)
     self.assertEquals(OMIT, d.timelines)
     self.assertEquals(OMIT, d.private)
Beispiel #10
0
 def test_pack_unpack_mrsUrl(self):
     VALUE="http://blah.com"
     c=CII(mrsUrl=VALUE)
     self.assertEquals(c.mrsUrl, VALUE)
     
     msg=c.pack()
     j=json.loads(msg)
     self.assertEquals(j["mrsUrl"], VALUE)
     self.assertEquals(len(j.keys()), 1)
     
     d=CII.unpack(msg)
     self.assertEquals(OMIT, d.protocolVersion)
     self.assertEquals(OMIT, d.contentId)
     self.assertEquals(OMIT, d.contentIdStatus)
     self.assertEquals(OMIT, d.presentationStatus)
     self.assertEquals(VALUE, d.mrsUrl)
     self.assertEquals(OMIT, d.wcUrl)
     self.assertEquals(OMIT, d.tsUrl)
     self.assertEquals(OMIT, d.teUrl)
     self.assertEquals(OMIT, d.timelines)
     self.assertEquals(OMIT, d.private)
Beispiel #11
0
 def test_pack_unpack_contentIdStatus(self):
     for VALUE in ["partial","final"]:
         c=CII(contentIdStatus=VALUE)
         self.assertEquals(c.contentIdStatus, VALUE)
         
         msg=c.pack()
         j=json.loads(msg)
         self.assertEquals(j["contentIdStatus"], VALUE)
         self.assertEquals(len(j.keys()), 1)
         
         d=CII.unpack(msg)
         self.assertEquals(OMIT, d.protocolVersion)
         self.assertEquals(OMIT, d.contentId)
         self.assertEquals(VALUE, d.contentIdStatus)
         self.assertEquals(OMIT, d.presentationStatus)
         self.assertEquals(OMIT, d.mrsUrl)
         self.assertEquals(OMIT, d.wcUrl)
         self.assertEquals(OMIT, d.tsUrl)
         self.assertEquals(OMIT, d.teUrl)
         self.assertEquals(OMIT, d.timelines)
         self.assertEquals(OMIT, d.private)
Beispiel #12
0
 def test_pack_unpack_timelines(self):
     TIMELINES=[
         ( [], [] ),
         ( [ TimelineOption("urn:dvb:css:timeline:pts", 1, 1000, 0.2, OMIT) ],
           [ { "timelineSelector" : "urn:dvb:css:timeline:pts",
               "timelineProperties" : {
                   "unitsPerTick" : 1,
                   "unitsPerSecond" : 1000,
                   "accuracy" : 0.2
               }
             }
           ]
         ),
         ( [ TimelineOption("urn:dvb:css:timeline:pts", 1, 1000, 0.2, OMIT),
             TimelineOption("urn:dvb:css:timeline:temi:1:5", 1001, 30000, OMIT, []),
             TimelineOption("urn:dvb:css:timeline:temi:1:6", 1, 25, OMIT, [{'type':'blah','abc':5},{'type':'bbc','pqr':None}]),
             
           ],
           [ { "timelineSelector" : "urn:dvb:css:timeline:pts",
               "timelineProperties" : {
                   "unitsPerTick" : 1,
                   "unitsPerSecond" : 1000,
                   "accuracy" : 0.2
               }
             },
             { "timelineSelector" : "urn:dvb:css:timeline:temi:1:5",
               "timelineProperties" : {
                   "unitsPerTick" : 1001,
                   "unitsPerSecond" : 30000
               },
               "private" : []
             },
             { "timelineSelector" : "urn:dvb:css:timeline:temi:1:6",
               "timelineProperties" : {
                   "unitsPerTick" : 1,
                   "unitsPerSecond" : 25,
               },
               "private" : [{'type':'blah','abc':5},{'type':'bbc','pqr':None}]
             }
           ]
         ),
     ]
     for (VALUE, ENCODED) in TIMELINES:
         c=CII(timelines=VALUE)
         self.assertEquals(c.timelines, VALUE)
         
         msg=c.pack()
         j=json.loads(msg)
         self.assertEquals(j["timelines"], ENCODED)
         self.assertEquals(len(j.keys()), 1)
         
         d=CII.unpack(msg)
         self.assertEquals(OMIT, d.protocolVersion)
         self.assertEquals(OMIT, d.contentId)
         self.assertEquals(OMIT, d.contentIdStatus)
         self.assertEquals(OMIT, d.presentationStatus)
         self.assertEquals(OMIT, d.mrsUrl)
         self.assertEquals(OMIT, d.wcUrl)
         self.assertEquals(OMIT, d.tsUrl)
         self.assertEquals(OMIT, d.teUrl)
         self.assertEquals(VALUE, d.timelines)
         self.assertEquals(OMIT, d.private)