Search in sources :

Example 86 with Job

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()));
}
Also used : HttpPost(org.apache.http.client.methods.HttpPost) DistributionException(org.opencastproject.distribution.api.DistributionException) Job(org.opencastproject.job.api.Job)

Example 87 with Job

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()));
}
Also used : HttpPost(org.apache.http.client.methods.HttpPost) DistributionException(org.opencastproject.distribution.api.DistributionException) Job(org.opencastproject.job.api.Job)

Example 88 with Job

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);
}
Also used : Set(java.util.Set) MediaPackage(org.opencastproject.mediapackage.MediaPackage) DublinCoreCatalog(org.opencastproject.metadata.dublincore.DublinCoreCatalog) Job(org.opencastproject.job.api.Job) URI(java.net.URI) Test(org.junit.Test)

Example 89 with Job

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));
}
Also used : Snapshot(org.opencastproject.assetmanager.api.Snapshot) Set(java.util.Set) Version(org.opencastproject.assetmanager.api.Version) MediaPackage(org.opencastproject.mediapackage.MediaPackage) DublinCoreCatalog(org.opencastproject.metadata.dublincore.DublinCoreCatalog) Job(org.opencastproject.job.api.Job) URI(java.net.URI) Test(org.junit.Test)

Example 90 with Job

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);
}
Also used : JaxbJob(org.opencastproject.job.api.JaxbJob) Job(org.opencastproject.job.api.Job) Test(org.junit.Test)

Aggregations

Job (org.opencastproject.job.api.Job)282 MediaPackage (org.opencastproject.mediapackage.MediaPackage)89 ArrayList (java.util.ArrayList)82 Test (org.junit.Test)82 URI (java.net.URI)68 NotFoundException (org.opencastproject.util.NotFoundException)58 Track (org.opencastproject.mediapackage.Track)56 JaxbJob (org.opencastproject.job.api.JaxbJob)52 MediaPackageException (org.opencastproject.mediapackage.MediaPackageException)51 WorkflowOperationException (org.opencastproject.workflow.api.WorkflowOperationException)50 MediaPackageElement (org.opencastproject.mediapackage.MediaPackageElement)49 IOException (java.io.IOException)45 ServiceRegistryException (org.opencastproject.serviceregistry.api.ServiceRegistryException)42 HttpPost (org.apache.http.client.methods.HttpPost)33 Path (javax.ws.rs.Path)31 Produces (javax.ws.rs.Produces)30 JobBarrier (org.opencastproject.job.api.JobBarrier)30 RestQuery (org.opencastproject.util.doc.rest.RestQuery)30 POST (javax.ws.rs.POST)29 HttpResponse (org.apache.http.HttpResponse)29