def test_ical_create_mp(self): repo = repository.Repository(self.tmppath) events = ical.get_events_from_file_ical(path.join(self.base_dir, 'test.ical')) for event in events: ical.create_mp(repo, event) next = repo.get_next_mediapackage() self.assertEqual(next.getDate(), datetime.strptime('3016-04-05 11:00:00', '%Y-%m-%d %H:%M:%S')) self.assertEqual(len(next.getElements()), 2) self.assertEqual(len(next.getAttachments()), 1) self.assertTrue(next.getAttachment('org.opencastproject.capture.agent.properties')) self.assertEqual(len(next.getCatalogs()), 1) nexts = repo.get_next_mediapackages() self.assertEqual(nexts[0].getDate(), datetime.strptime('3016-04-05 11:00:00', '%Y-%m-%d %H:%M:%S')) self.assertEqual(nexts[0].getDuration(), 1000*60*10)
def test_update(self): repo = repository.Repository(self.tmppath) mp = mediapackage.Mediapackage() mp.add(self.track1) mp.add(self.track2) mp.add(self.catalog) mp.metadata_episode["title"] = "Title" self.assertRaises(KeyError, repo.update, mp) repo.add(mp) self.assertEqual(repo.size(), 1) mp.metadata_episode["title"] = "new Title" repo.update(mp) self.assertEqual(repo.size(), 1)
def test_save_system_zip(self): mp = mediapackage.Mediapackage() mp.add(self.track1,mediapackage.TYPE_TRACK, "presentation/source", "video/mpeg", 532) mp.add(self.track2,mediapackage.TYPE_TRACK, "presenter/source", "video/mpeg", 532) mp.add(self.catalog,mediapackage.TYPE_CATALOG, "catalog/source","xml") tmppath = mkdtemp() repo = repository.Repository(tmppath) repo.add(mp) path_zip = "system.zip" serializer.save_system_zip(mp,path_zip) zfile = zipfile.ZipFile(path_zip,'r') files=zfile.namelist() for element in mp.getElements(): self.assertTrue(path.split(element.getURI())[1] in files) rmtree(tmppath) remove(path_zip)
def test_get_next_and_past_mediapackages(self): repo = repository.Repository(self.tmppath) now = datetime.datetime.utcnow() mp = mediapackage.Mediapackage(identifier="1", title='MP#1', date=(now - datetime.timedelta(days=1))) repo.add(mp) mp = mediapackage.Mediapackage(identifier="2", title='MP#2', date=(now - datetime.timedelta(days=30))) repo.add(mp) mp = mediapackage.Mediapackage(identifier="3", title='MP#3', date=(now - datetime.timedelta(days=60))) repo.add(mp) mp_next = mediapackage.Mediapackage(identifier="4", title='MP#4', date=(now + datetime.timedelta(days=1))) repo.add(mp_next) mp = mediapackage.Mediapackage(identifier="5", title='MP#5', date=(now + datetime.timedelta(days=30))) repo.add(mp) self.assertEqual(repo.get_next_mediapackage(), mp_next) self.assertEqual(len(repo.get_next_mediapackages()), 2) self.assertEqual(len(repo.get_past_mediapackages()), 3) self.assertEqual(len(repo.get_past_mediapackages(40)), 1)
def test_add_after_rec_no_manual(self): duration = 134 repo = repository.Repository(self.tmppath) mp = mediapackage.Mediapackage() repo.add(mp) mp.addAttachmentAsString('capture.device.names=name1,name3', name='org.opencastproject.capture.agent.properties', identifier='org.opencastproject.capture.agent.properties') mp.manual = False #TODO file extension to mimetype??? bins = [self.__get_tmp_bin('t.avi', {'device': 'test', 'name': 'name1', 'dev': 'dev1', 'mimetype': 'video/mp4', 'flavor': 'presenter' }), self.__get_tmp_bin('t.mp4', {'device': 'test', 'name': 'name2', 'dev': 'dev2', 'mimetype': 'video/mp4', 'flavor': 'presentation' }) ] self.assertFalse(mp.manual) repo.add_after_rec(mp, bins, duration) self.assertEqual(mp.getDuration(), duration) self.assertEqual(len(repo), 1) self.assertEqual(len(mp.getTracks()), 1)
def test_repair_inconsistencies(self): repo = repository.Repository(self.tmppath) mp = mediapackage.Mediapackage() mp.status = mediapackage.INGESTED mp.setOpStatus("pr0", mediapackage.OP_IDLE) mp.setOpStatus("pr1", mediapackage.OP_PENDING) mp.setOpStatus("pr2", mediapackage.OP_PROCESSING) mp.setOpStatus("pr3", mediapackage.OP_DONE) mp.setOpStatus("pr4", mediapackage.OP_FAILED) repo.add(mp) repo.repair_inconsistencies(mp) self.assertEqual(mp.status, mediapackage.RECORDED) self.assertEqual(mp.getOpStatus("pr0"), mediapackage.OP_IDLE) self.assertEqual(mp.getOpStatus("pr1"), mediapackage.OP_FAILED) self.assertEqual(mp.getOpStatus("pr2"), mediapackage.OP_FAILED) self.assertEqual(mp.getOpStatus("pr3"), mediapackage.OP_DONE) self.assertEqual(mp.getOpStatus("pr4"), mediapackage.OP_FAILED)
def test_repository(self): root = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'resources') repo = repository.Repository(root) self.assertEqual(repo.size(), 1)
def test_big_repository(self): root = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'resources', 'repository') repo = repository.Repository(root) self.assertEqual(len(repo), 5) self.assertEqual(len(repo.list_by_status(mediapackage.FAILED)), 1) for (key, mp) in list(repo.items()): self.assertTrue(mp.getDuration() >= 0) self.assertEqual( repo["dae91194-2114-481b-8908-8a8962baf8da"].getIdentifier(), "dae91194-2114-481b-8908-8a8962baf8da") self.assertFalse( repo.get("dae91194-2114-481b-8908-8a8962baf8da").manual) self.assertTrue( repo.get("dae91194-2114-481b-8908-8a8962baf8db").manual) self.assertFalse( repo.get("dae91194-2114-481b-8908-8a8962baf8dd").manual) self.assertTrue( repo.get("dae91194-2114-481b-8908-8a8962baf8de").manual) self.assertEqual( repo.get("dae91194-2114-481b-8908-8a8962baf8da").status, mediapackage.SCHEDULED) self.assertEqual( repo.get("dae91194-2114-481b-8908-8a8962baf8db").status, mediapackage.RECORDING) self.assertEqual( repo.get("dae91194-2114-481b-8908-8a8962baf8dc").status, mediapackage.RECORDED) self.assertEqual( repo.get("dae91194-2114-481b-8908-8a8962baf8dd").status, mediapackage.FAILED) self.assertEqual( repo.get("dae91194-2114-481b-8908-8a8962baf8de").status, mediapackage.RECORDED) self.assertEqual( len(repo.get("dae91194-2114-481b-8908-8a8962baf8da").operations), 0) self.assertEqual( len(repo.get("dae91194-2114-481b-8908-8a8962baf8db").operations), 0) self.assertEqual( len(repo.get("dae91194-2114-481b-8908-8a8962baf8dc").operations), 1) self.assertEqual( len(repo.get("dae91194-2114-481b-8908-8a8962baf8dd").operations), 2) self.assertEqual( len(repo.get("dae91194-2114-481b-8908-8a8962baf8de").operations), 3) mp_duration = repo.get( "dae91194-2114-481b-8908-8a8962baf8da").getDuration() self.assertEqual(mp_duration, 2106) track_duration = repo.get("dae91194-2114-481b-8908-8a8962baf8da" ).getTrack("track-1").getDuration() self.assertEqual(track_duration, 2160)