public void TestAccessPolicyCreateRetry() { var dataContextMock = new Mock <IMediaDataServiceContext>(); int exceptionCount = 2; var expected = new AccessPolicyData { Name = "testData" }; var fakeResponse = new TestMediaDataServiceResponse { AsyncState = expected }; var fakeException = new WebException("testException", WebExceptionStatus.ConnectionClosed); dataContextMock.Setup((ctxt) => ctxt.AddObject("AccessPolicies", It.IsAny <object>())); dataContextMock.Setup((ctxt) => ctxt .SaveChangesAsync(It.IsAny <object>())) .Returns(() => Task.Factory.StartNew <IMediaDataServiceResponse>(() => { if (--exceptionCount > 0) { throw fakeException; } return(fakeResponse); })); _mediaContext.MediaServicesClassFactory = new TestMediaServicesClassFactory(dataContextMock.Object); IAccessPolicy policy = _mediaContext.AccessPolicies.Create("Empty", TimeSpan.FromSeconds(1), AccessPermissions.None); Assert.AreEqual(expected.Name, policy.Name); Assert.AreEqual(0, exceptionCount); }
public void JobTemplateTestSaveAsyncRetry() { JobTemplateData data = new JobTemplateData { JobTemplateBodyCopied = "" }; var fakeResponse = new TestMediaDataServiceResponse { AsyncState = data }; var fakeException = new WebException("test", WebExceptionStatus.ConnectionClosed); var dataContextMock = new Mock <IMediaDataServiceContext>(); dataContextMock.Setup((ctxt) => ctxt.AttachTo("Jobs", data)); dataContextMock.Setup((ctxt) => ctxt.DeleteObject(data)); int saveChangesExceptionCount = 2; dataContextMock.Setup((ctxt) => ctxt .SaveChangesAsync(SaveChangesOptions.Batch, data)) .Returns(() => Task.Factory.StartNew <IMediaDataServiceResponse>(() => { if (--saveChangesExceptionCount > 0) { throw fakeException; } return(fakeResponse); })); int loadPropertiesExceptionCount = 2; dataContextMock.Setup((ctxt) => ctxt .LoadProperty(data, It.IsAny <string>())) .Returns(() => { if (--loadPropertiesExceptionCount > 0) { throw fakeException; } return(null); }); _mediaContext.MediaServicesClassFactory = new TestMediaServicesClassFactory(dataContextMock.Object); data.SetMediaContext(_mediaContext); data.SaveAsync().Wait(); dataContextMock.Verify((ctxt) => ctxt.LoadProperty(data, "TaskTemplates"), Times.Exactly(2)); Assert.AreEqual(0, saveChangesExceptionCount); Assert.AreEqual(0, loadPropertiesExceptionCount); }
public void TestLocatorDeleteRetry() { var dataContextMock = new Mock <IMediaDataServiceContext>(); int exceptionCount = 2; var locator = new LocatorData { Name = "testData", Type = (int)LocatorType.OnDemandOrigin }; var fakeResponse = new TestMediaDataServiceResponse { AsyncState = locator }; var fakeException = new WebException("test", WebExceptionStatus.ConnectionClosed); dataContextMock.Setup((ctxt) => ctxt.AttachTo("Locators", locator)); dataContextMock.Setup((ctxt) => ctxt.DeleteObject(locator)); dataContextMock.Setup((ctxt) => ctxt .SaveChangesAsync(locator)) .Returns(() => Task.Factory.StartNew <IMediaDataServiceResponse>(() => { if (--exceptionCount > 0) { throw fakeException; } return(fakeResponse); })); // Cannot mock DataServiceQuery. Throw artificial exception to mark pass through saving changes. string artificialExceptionMessage = "artificialException"; dataContextMock.Setup((ctxt) => ctxt.CreateQuery <IAsset, AssetData>("Assets")).Throws(new Exception(artificialExceptionMessage)); _mediaContext.MediaServicesClassFactory = new TestMediaServicesClassFactory(dataContextMock.Object); locator.SetMediaContext(_mediaContext); try { locator.Delete(); } catch (Exception x) { Assert.AreEqual(artificialExceptionMessage, x.Message); } Assert.AreEqual(0, exceptionCount); }
public void CdnSettingsTest() { var dataContextMock = new Mock <IMediaDataServiceContext>(); var streamingEndpointMock = new Mock <IStreamingEndpoint>(); var originCreationOptions = new StreamingEndpointCreationOptions("unittest", 1) { CdnEnabled = true, CdnProfile = "testCdnProfile", CdnProvider = CdnProviderType.StandardAkamai, StreamingEndpointVersion = new Version("1.0") }; var fakeResponse = new TestMediaDataServiceResponse(new Dictionary <string, string> { { StreamingConstants.OperationIdHeader, "" } }) { AsyncState = new TestStreamingEndpointData(originCreationOptions) }; dataContextMock.Setup(ctxt => ctxt.AddObject("StreamingEndpoints", It.IsAny <object>())); dataContextMock.Setup(ctxt => ctxt.SaveChangesAsync(It.IsAny <object>())) .Returns(() => Task <IMediaDataServiceResponse> .Factory.StartNew(() => fakeResponse)); dataContextMock.Setup(ctxt => ctxt.Execute <OperationData>(It.IsAny <Uri>())) .Returns(() => new List <OperationData> { new OperationData { State = OperationState.Succeeded.ToString() } }); _mediaContext.MediaServicesClassFactory = new TestMediaServicesClassFactory(dataContextMock.Object); var actual = _mediaContext.StreamingEndpoints.Create(originCreationOptions); dataContextMock.Verify(ctxt => ctxt.SaveChangesAsync(It.IsAny <object>()), Times.Exactly(1)); Assert.AreEqual(originCreationOptions.Name, actual.Name); Assert.AreEqual(originCreationOptions.ScaleUnits, actual.ScaleUnits); Assert.AreEqual(originCreationOptions.CdnEnabled, actual.CdnEnabled); Assert.AreEqual(originCreationOptions.CdnProvider.ToString(), actual.CdnProvider); Assert.AreEqual(originCreationOptions.CdnProfile, actual.CdnProfile); Assert.AreEqual(originCreationOptions.StreamingEndpointVersion.ToString(), actual.StreamingEndpointVersion); }
public void TestAssetFileUpdateRetry() { var dataContextMock = new Mock <IMediaDataServiceContext>(); int exceptionCount = 2; var asset = new AssetData { Name = "testData" }; var file = new AssetFileData { Name = "testData" }; var fakeResponse = new TestMediaDataServiceResponse { AsyncState = file }; var fakeException = new WebException("test", WebExceptionStatus.ConnectionClosed); dataContextMock.Setup((ctxt) => ctxt.AttachTo("Files", file)); dataContextMock.Setup((ctxt) => ctxt.UpdateObject(file)); dataContextMock.Setup((ctxt) => ctxt .SaveChangesAsync(file)) .Returns(() => Task.Factory.StartNew <IMediaDataServiceResponse>(() => { if (--exceptionCount > 0) { throw fakeException; } return(fakeResponse); })); _mediaContext.MediaServicesClassFactory = new TestMediaServicesClassFactory(dataContextMock.Object); file.SetMediaContext(_mediaContext); SetFileAsset(file, asset); file.Update(); Assert.AreEqual(0, exceptionCount); }
public void TestLocatorCreateRetry() { var dataContextMock = new Mock <IMediaDataServiceContext>(); int exceptionCount = 2; var expected = new LocatorData { Name = "testData" }; var fakeResponse = new TestMediaDataServiceResponse { AsyncState = expected }; var fakeException = new WebException("testException", WebExceptionStatus.ConnectionClosed); dataContextMock.Setup((ctxt) => ctxt.AddObject("Files", It.IsAny <object>())); dataContextMock.Setup((ctxt) => ctxt .SaveChangesAsync(It.IsAny <object>())) .Returns(() => Task.Factory.StartNew <IMediaDataServiceResponse>(() => { if (--exceptionCount > 0) { throw fakeException; } return(fakeResponse); })); _mediaContext.MediaServicesClassFactory = new TestMediaServicesClassFactory(dataContextMock.Object); var asset = new AssetData { Name = "testAssetData" }; asset.SetMediaContext(_mediaContext); ILocator locator = _mediaContext.Locators.CreateLocator(LocatorType.None, asset, new AccessPolicyData()); Assert.AreEqual(expected.Name, locator.Name); Assert.AreEqual(0, exceptionCount); }
public void TestJobSubmitRetry() { var dataContextMock = new Mock <IMediaDataServiceContext>(); int exceptionCount = 2; var job = new JobData { Name = "testData", TemplateId = "id:sometemplate" }; var fakeResponse = new TestMediaDataServiceResponse { AsyncState = job }; var fakeException = new WebException("test", WebExceptionStatus.ConnectionClosed); dataContextMock.Setup((ctxt) => ctxt.AttachTo("Jobs", job)); dataContextMock.Setup((ctxt) => ctxt.DeleteObject(job)); dataContextMock.Setup((ctxt) => ctxt .SaveChangesAsync(SaveChangesOptions.Batch, job)) .Returns(() => Task.Factory.StartNew <IMediaDataServiceResponse>(() => { if (--exceptionCount > 0) { throw fakeException; } job.Id = Guid.NewGuid().ToString(); return(fakeResponse); })); _mediaContext.MediaServicesClassFactory = new TestMediaServicesClassFactory(dataContextMock.Object); job.SetMediaContext(_mediaContext); job.Submit(); Assert.AreEqual(0, exceptionCount); }
public void TestLocatorUpdateRetry() { var dataContextMock = new Mock <IMediaDataServiceContext>(); int exceptionCount = 2; var locator = new LocatorData { Name = "testData", Type = (int)LocatorType.OnDemandOrigin }; var fakeResponse = new TestMediaDataServiceResponse { AsyncState = locator }; var fakeException = new WebException("test", WebExceptionStatus.ConnectionClosed); dataContextMock.Setup((ctxt) => ctxt.AttachTo("Locators", locator)); dataContextMock.Setup((ctxt) => ctxt.UpdateObject(locator)); dataContextMock.Setup((ctxt) => ctxt .SaveChangesAsync(locator)) .Returns(() => Task.Factory.StartNew <IMediaDataServiceResponse>(() => { if (--exceptionCount > 0) { throw fakeException; } return(fakeResponse); })); _mediaContext.MediaServicesClassFactory = new TestMediaServicesClassFactory(dataContextMock.Object); locator.SetMediaContext(_mediaContext); locator.Update(DateTime.Now); Assert.AreEqual(0, exceptionCount); }