Skip to content

Commit

Permalink
Merge pull request Azure#47 from gcheng/fixfailedjobtests
Browse files Browse the repository at this point in the history
Re-enable JobIntegration tests.
  • Loading branch information
Albert Cheng committed Dec 4, 2012
2 parents 4157475 + e9cc365 commit 580c4b4
Showing 1 changed file with 62 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,27 +17,38 @@

import static org.junit.Assert.*;

import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.net.URI;
import java.util.ArrayList;
import java.util.Date;
import java.util.EnumSet;
import java.util.List;

import javax.ws.rs.core.MultivaluedMap;

import org.junit.Ignore;
import org.junit.Test;

import com.microsoft.windowsazure.services.core.ServiceException;
import com.microsoft.windowsazure.services.media.models.AccessPolicy;
import com.microsoft.windowsazure.services.media.models.AccessPolicyInfo;
import com.microsoft.windowsazure.services.media.models.AccessPolicyPermission;
import com.microsoft.windowsazure.services.media.models.Asset;
import com.microsoft.windowsazure.services.media.models.AssetFile;
import com.microsoft.windowsazure.services.media.models.AssetInfo;
import com.microsoft.windowsazure.services.media.models.Job;
import com.microsoft.windowsazure.services.media.models.JobInfo;
import com.microsoft.windowsazure.services.media.models.ListResult;
import com.microsoft.windowsazure.services.media.models.Locator;
import com.microsoft.windowsazure.services.media.models.LocatorInfo;
import com.microsoft.windowsazure.services.media.models.LocatorType;
import com.microsoft.windowsazure.services.media.models.Task;
import com.sun.jersey.core.util.MultivaluedMapImpl;

public class JobIntegrationTest extends IntegrationTestBase {

private final String testJobPrefix = "testJobPrefix";
private final byte[] testBlobData = new byte[] { 0, 1, 2 };
private final String taskBody = "<?xml version=\"1.0\" encoding=\"utf-8\"?><taskBody>"
+ "<inputAsset>JobInputAsset(0)</inputAsset><outputAsset>JobOutputAsset(0)</outputAsset>" + "</taskBody>";

Expand All @@ -47,6 +58,43 @@ private void verifyJobInfoEqual(String message, JobInfo expected, JobInfo actual
expected.getOutputMediaAssets(), actual);
}

private AccessPolicyInfo createWritableAccessPolicy(String name, int durationInMinutes) throws ServiceException {
return service.create(AccessPolicy.create(testPolicyPrefix + name, durationInMinutes,
EnumSet.of(AccessPolicyPermission.WRITE)));
}

private void createAndUploadBlob(WritableBlobContainerContract blobWriter, String blobName, byte[] blobData)
throws ServiceException {
InputStream blobContent = new ByteArrayInputStream(blobData);
blobWriter.createBlockBlob(blobName, blobContent);
}

private String createFileAsset(String name) throws ServiceException {
String testBlobName = "test" + name + ".bin";
AssetInfo assetInfo = service.create(Asset.create().setName(name));
AccessPolicyInfo accessPolicyInfo = createWritableAccessPolicy(name, 10);
LocatorInfo locator = createLocator(accessPolicyInfo, assetInfo, 5, 10);
WritableBlobContainerContract blobWriter = MediaService.createBlobWriter(locator);
createAndUploadBlob(blobWriter, testBlobName, testBlobData);

service.create(AssetFile.create(assetInfo.getId(), testBlobName).setIsPrimary(true).setIsEncrypted(false)
.setContentFileSize(new Long(testBlobData.length)));

service.action(AssetFile.createFileInfos(assetInfo.getId()));
return assetInfo.getId();
}

private LocatorInfo createLocator(AccessPolicyInfo accessPolicy, AssetInfo asset, int startDeltaMinutes,
int expirationDeltaMinutes) throws ServiceException {

Date now = new Date();
Date start = new Date(now.getTime() - (startDeltaMinutes * 60 * 1000));
Date expire = new Date(now.getTime() + (expirationDeltaMinutes * 60 * 1000));

return service.create(Locator.create(accessPolicy.getId(), asset.getId(), LocatorType.SAS)
.setStartDateTime(start).setExpirationDateTime(expire));
}

private void verifyJobProperties(String message, String testName, Integer priority, Double runningDuration,
Integer state, String templateId, List<String> inputMediaAssets, List<String> outputMediaAssets,
JobInfo actualJob) {
Expand All @@ -63,20 +111,19 @@ private void verifyJobProperties(String message, String testName, Integer priori
}

private JobInfo createJob(String name) throws ServiceException {
AssetInfo assetInfo = service.create(Asset.create().setName(name));
String assetId = createFileAsset(name);
URI serviceUri = service.getRestServiceUri();
return service.create(Job
.create(serviceUri)
.setName("My Encoding Job")
.setPriority(3)
.addInputMediaAsset(assetInfo.getId())
.addInputMediaAsset(assetId)
.addTaskCreator(
Task.create().setConfiguration("H.264 256k DSL CBR")
.setMediaProcessorId("nb:mpid:UUID:2f381738-c504-4e4a-a38e-d199e207fcd5")
.setName("My encoding Task").setTaskBody(taskBody)));
}

@Ignore("due to issue 480")
@Test
public void createJobSuccess() throws Exception {
// Arrange
Expand All @@ -87,6 +134,17 @@ public void createJobSuccess() throws Exception {
expectedJob.setPriority(3);
expectedJob.setRunningDuration(0.0);
expectedJob.setState(0);

AccessPolicyInfo accessPolicyInfo = createWritableAccessPolicy("createJobSuccess", 10);
LocatorInfo locator = createLocator(accessPolicyInfo, assetInfo, 5, 10);
WritableBlobContainerContract blobWriter = MediaService.createBlobWriter(locator);
createAndUploadBlob(blobWriter, "blob1.bin", testBlobData);

service.create(AssetFile.create(assetInfo.getId(), "blob1.bin").setIsPrimary(true).setIsEncrypted(false)
.setContentFileSize(new Long(testBlobData.length)));

service.action(AssetFile.createFileInfos(assetInfo.getId()));

URI serviceURI = service.getRestServiceUri();

// Act
Expand All @@ -104,11 +162,9 @@ public void createJobSuccess() throws Exception {
verifyJobInfoEqual("actualJob", expectedJob, actualJob);
}

@Ignore("due to issue 480")
@Test
public void getJobSuccess() throws Exception {
// Arrange

JobInfo expectedJob = new JobInfo();
expectedJob.setName("My Encoding Job");
expectedJob.setPriority(3);
Expand All @@ -130,7 +186,6 @@ public void getJobInvalidIdFailed() throws ServiceException {
service.get(Job.get(invalidId));
}

@Ignore("due to issue 480")
@Test
public void listJobSuccess() throws ServiceException {
// Arrange
Expand All @@ -151,7 +206,6 @@ public void verifyEquals(String message, Object expected, Object actual) {
});
}

@Ignore("due to issue 480")
@Test
public void canListJobsWithOptions() throws ServiceException {
String[] assetNames = new String[] { testJobPrefix + "assetListOptionsA", testJobPrefix + "assetListOptionsB",
Expand All @@ -171,7 +225,6 @@ public void canListJobsWithOptions() throws ServiceException {
assertEquals(2, listJobsResult.size());
}

@Ignore("due to issue 480")
@Test
public void cancelJobSuccess() throws Exception {
// Arrange
Expand All @@ -198,7 +251,6 @@ public void cancelJobFailedWithInvalidId() throws ServiceException {
// Assert
}

@Ignore("due to issue 480")
@Test
public void deleteJobSuccess() throws ServiceException {
// Arrange
Expand Down

0 comments on commit 580c4b4

Please sign in to comment.