use of org.opencastproject.job.api.Job in project opencast by opencast.
the class AwsS3DistributionServiceRemoteImpl method distribute.
@Override
public Job distribute(String channelId, final MediaPackage mediaPackage, Set<String> elementIds, boolean checkAvailability) throws DistributionException {
logger.info(format("Distributing %s elements to %s@%s", elementIds.size(), channelId, distributionChannel));
final HttpPost req = post(param(PARAM_CHANNEL_ID, channelId), param(PARAM_MEDIAPACKAGE, MediaPackageParser.getAsXml(mediaPackage)), param(PARAM_ELEMENT_ID, gson.toJson(elementIds)), param(PARAM_CHECK_AVAILABILITY, Boolean.toString(checkAvailability)));
for (Job job : join(runRequest(req, jobFromHttpResponse))) {
return job;
}
throw new DistributionException(format("Unable to distribute '%s' elements of " + "mediapackage '%s' using a remote destribution service proxy", elementIds.size(), mediaPackage.getIdentifier().toString()));
}
use of org.opencastproject.job.api.Job in project opencast by opencast.
the class AwsS3DistributionServiceRemoteImpl method retract.
@Override
public Job retract(String channelId, MediaPackage mediaPackage, Set<String> elementIds) throws DistributionException {
logger.info(format("Retracting %s elements from %s@%s", elementIds.size(), channelId, distributionChannel));
final HttpPost req = post("/retract", param(PARAM_MEDIAPACKAGE, MediaPackageParser.getAsXml(mediaPackage)), param(PARAM_ELEMENT_ID, gson.toJson(elementIds)), param(PARAM_CHANNEL_ID, channelId));
for (Job job : join(runRequest(req, jobFromHttpResponse))) {
return job;
}
throw new DistributionException(format("Unable to retract '%s' elements of " + "mediapackage '%s' using a remote destribution service proxy", elementIds.size(), mediaPackage.getIdentifier().toString()));
}
use of org.opencastproject.job.api.Job in project opencast by opencast.
the class LiveScheduleServiceImplTest method testUpdateLiveEvent.
@Test
public void testUpdateLiveEvent() throws Exception {
URI mpURI = LiveScheduleServiceImplTest.class.getResource("/assetmanager-mp-with-live.xml").toURI();
MediaPackage mp = MediaPackageBuilderFactory.newInstance().newMediaPackageBuilder().loadFromXml(mpURI.toURL().openStream());
setUpAssetManager(mp);
mpURI = LiveScheduleServiceImplTest.class.getResource("/live-mp.xml").toURI();
MediaPackage previousMp = MediaPackageBuilderFactory.newInstance().newMediaPackageBuilder().loadFromXml(mpURI.toURL().openStream());
URI catalogURI = LiveScheduleServiceImplTest.class.getResource("/episode.xml").toURI();
DublinCoreCatalog episodeDC = DublinCores.read(catalogURI.toURL().openStream());
catalogURI = LiveScheduleServiceImplTest.class.getResource("/series.xml").toURI();
DublinCoreCatalog seriesDC = DublinCores.read(catalogURI.toURL().openStream());
EasyMock.expect(seriesService.getSeries(SERIES_ID)).andReturn(seriesDC).anyTimes();
Job job = createJob(1L, "anything", "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>" + "<catalog id=\"9ad6ebcb-b414-4b15-ab62-5e5ddede447e\" type=\"dublincore/episode\" xmlns=\"http://mediapackage.opencastproject.org\">" + "<mimetype>text/xml</mimetype>" + "<url>http://10.10.10.50/static/mh_default_org/engage-live/episode_updated.xml</url></catalog>" + "###<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>" + "<catalog id=\"23113662-1a84-457a-85d5-0b3e32d2413a\" type=\"dublincore/series\" xmlns=\"http://mediapackage.opencastproject.org\">" + "<mimetype>text/xml</mimetype>" + "<url>http://10.10.10.50/static/mh_default_org/engage-live/series.xml</url></catalog>" + "###<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>" + "<attachment id=\"security-policy-episode\" type=\"security/xacml+episode\" xmlns=\"http://mediapackage.opencastproject.org\">" + "<mimetype>text/xml</mimetype>" + "<url>http://10.10.10.50/static/mh_default_org/engage-live/security_policy_episode.xml</url></attachment>");
EasyMock.expect(downloadDistributionService.distribute(EasyMock.anyString(), EasyMock.anyObject(MediaPackage.class), EasyMock.anyObject(Set.class), EasyMock.anyBoolean())).andReturn(job);
EasyMock.expect(serviceRegistry.getJob(1L)).andReturn(job).anyTimes();
Job jobPub = createJob(2L, "anything", "anything");
Capture<MediaPackage> capturedMp = Capture.newInstance();
EasyMock.expect(searchService.add(EasyMock.capture(capturedMp))).andReturn(jobPub);
EasyMock.expect(serviceRegistry.getJob(2L)).andReturn(job).anyTimes();
Job jobRetract = createJob(3L, "anything", "anything");
EasyMock.expect(downloadDistributionService.retract(EasyMock.anyString(), EasyMock.anyObject(MediaPackage.class), EasyMock.anyObject(Set.class))).andReturn(jobRetract);
EasyMock.expect(serviceRegistry.getJob(3L)).andReturn(jobRetract).anyTimes();
replayServices();
service.setDownloadDistributionService(downloadDistributionService);
// Capture agent change
episodeDC.set(DublinCore.PROPERTY_SPATIAL, DublinCoreValue.mk("another_ca"));
// Duration change
episodeDC.set(DublinCore.PROPERTY_TEMPORAL, DublinCoreValue.mk("start=2017-10-12T19:00:00Z;end=2017-10-12T19:02:00Z; scheme=W3C-DTF;"));
Assert.assertTrue(service.updateLiveEvent(previousMp, episodeDC));
// Check published live media package
MediaPackage searchMp = capturedMp.getValue();
Assert.assertEquals(MP_ID, searchMp.getIdentifier().compact());
Assert.assertEquals(120000L, searchMp.getDuration().longValue());
Assert.assertEquals(2, searchMp.getCatalogs().length);
assertExpectedLiveTracks(searchMp.getTracks(), 120000L, "another_ca", "_suffix", false);
Assert.assertEquals(0, searchMp.getPublications().length);
}
use of org.opencastproject.job.api.Job in project opencast by opencast.
the class LiveScheduleServiceImplTest method testCreateLiveEvent.
@Test
public void testCreateLiveEvent() throws Exception {
URI mpURI = LiveScheduleServiceImplTest.class.getResource("/assetmanager-mp.xml").toURI();
MediaPackage mp = MediaPackageBuilderFactory.newInstance().newMediaPackageBuilder().loadFromXml(mpURI.toURL().openStream());
setUpAssetManager(mp);
URI catalogURI = LiveScheduleServiceImplTest.class.getResource("/episode.xml").toURI();
DublinCoreCatalog episodeDC = DublinCores.read(catalogURI.toURL().openStream());
catalogURI = LiveScheduleServiceImplTest.class.getResource("/series.xml").toURI();
DublinCoreCatalog seriesDC = DublinCores.read(catalogURI.toURL().openStream());
EasyMock.expect(seriesService.getSeries(SERIES_ID)).andReturn(seriesDC).anyTimes();
Job job = createJob(1L, "anything", "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>" + "<catalog id=\"9ad6ebcb-b414-4b15-ab62-5e5ddede447e\" type=\"dublincore/episode\" xmlns=\"http://mediapackage.opencastproject.org\">" + "<mimetype>text/xml</mimetype>" + "<url>http://10.10.10.50/static/mh_default_org/engage-live/episode.xml</url></catalog>" + "###<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>" + "<catalog id=\"23113662-1a84-457a-85d5-0b3e32d2413a\" type=\"dublincore/series\" xmlns=\"http://mediapackage.opencastproject.org\">" + "<mimetype>text/xml</mimetype>" + "<url>http://10.10.10.50/static/mh_default_org/engage-live/series.xml</url></catalog>" + "###<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>" + "<attachment id=\"security-policy-episode\" type=\"security/xacml+episode\" xmlns=\"http://mediapackage.opencastproject.org\">" + "<mimetype>text/xml</mimetype>" + "<url>http://10.10.10.50/static/mh_default_org/engage-live/security_policy_episode.xml</url></attachment>");
EasyMock.expect(downloadDistributionService.distribute(EasyMock.anyString(), EasyMock.anyObject(MediaPackage.class), EasyMock.anyObject(Set.class), EasyMock.anyBoolean())).andReturn(job);
EasyMock.expect(serviceRegistry.getJob(1L)).andReturn(job).anyTimes();
Job jobPub = createJob(2L, "anything", "anything");
Capture<MediaPackage> capturedMp = Capture.newInstance();
EasyMock.expect(searchService.add(EasyMock.capture(capturedMp))).andReturn(jobPub);
EasyMock.expect(serviceRegistry.getJob(2L)).andReturn(job).anyTimes();
Capture<MediaPackage> capturedSnapshotMp = Capture.newInstance();
Version v = EasyMock.createNiceMock(Version.class);
Snapshot s = EasyMock.createNiceMock(Snapshot.class);
EasyMock.expect(s.getVersion()).andReturn(v);
EasyMock.replay(s, v);
EasyMock.expect(assetManager.takeSnapshot(EasyMock.capture(capturedSnapshotMp))).andReturn(s);
replayServices();
service.setDownloadDistributionService(downloadDistributionService);
service.createLiveEvent(MP_ID, episodeDC);
// Check published live media package
MediaPackage searchMp = capturedMp.getValue();
Assert.assertEquals(MP_ID, searchMp.getIdentifier().compact());
Assert.assertEquals(DURATION, searchMp.getDuration().longValue());
Assert.assertEquals(2, searchMp.getCatalogs().length);
assertExpectedLiveTracks(searchMp.getTracks(), DURATION, CAPTURE_AGENT_NAME, "_suffix", false);
// Check archived media package
MediaPackage archivedMp = capturedSnapshotMp.getValue();
Assert.assertEquals(MP_ID, archivedMp.getIdentifier().compact());
Assert.assertEquals(1, archivedMp.getPublications().length);
Assert.assertEquals(LiveScheduleService.CHANNEL_ID, archivedMp.getPublications()[0].getChannel());
// Check that version got into local cache
Assert.assertEquals(v, service.getSnapshotVersionCache().getIfPresent(MP_ID));
}
use of org.opencastproject.job.api.Job in project opencast by opencast.
the class JobTest method testGetJobs.
@Test
public void testGetJobs() throws Exception {
Job job = serviceRegistry.createJob(LOCALHOST, JOB_TYPE_1, OPERATION_NAME, null, null, false, null);
job.setStatus(Status.RUNNING);
job = serviceRegistry.updateJob(job);
long id = job.getId();
// Search using both the job type and status
List<Job> jobs = serviceRegistry.getJobs(JOB_TYPE_1, Status.RUNNING);
assertEquals(1, jobs.size());
// Search using just the job type
jobs = serviceRegistry.getJobs(JOB_TYPE_1, null);
assertEquals(1, jobs.size());
// Search using just the status
jobs = serviceRegistry.getJobs(null, Status.RUNNING);
assertEquals(1, jobs.size());
// Search using nulls (return everything)
jobs = serviceRegistry.getJobs(null, null);
assertEquals(1, jobs.size());
Job receipt = serviceRegistry.getJob(id);
receipt.setStatus(Status.FINISHED);
receipt = serviceRegistry.updateJob(receipt);
long queuedJobs = serviceRegistry.count(JOB_TYPE_1, Status.RUNNING);
assertEquals(0, queuedJobs);
}
Aggregations