public void ShouldReportJobProgress()
{
IAsset asset = AssetTests.CreateAsset(_mediaContext, _smallWmv, AssetCreationOptions.StorageEncrypted);
IMediaProcessor mediaProcessor = GetMediaProcessor(_mediaContext, WindowsAzureMediaServicesTestConfiguration.MpEncoderName);
string name = GenerateName("Job 1");
IJob job = CreateAndSubmitOneTaskJob(_mediaContext, name, mediaProcessor, GetWamePreset(mediaProcessor), asset, TaskOptions.None);
bool progressChanged = false;
var task = Task.Factory.StartNew(delegate
{
while (!IsFinalJobState(job.State))
{
Thread.Sleep(100);
double progress = job.Tasks[0].Progress;
if (progress > 0 && progress < 100)
{
progressChanged = true;
}
job.Refresh();
}
});
task.Wait();
task.ThrowIfFaulted();
Assert.AreEqual(JobState.Finished, job.State);
Assert.IsTrue(progressChanged, "Task progress has not been changed while job is expected to be finished");
}