コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        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);
        }
コード例 #8
0
        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);
        }