private async Task Run() { Debug.WriteLine("--------------------FbmBackgroundTask.Run(): Start"); //IMutex mutex = new RefreshTokenMutex(); IMutexService mutex = new MutexService(); MutexOperationResult mutexAcquired = null; MutexOperationResult mutexReleased = null; try { Debug.WriteLine("--------------------FbmBackgroundTask.Run(): enter mutex"); mutexAcquired = await mutex.AcquireAsync(5000); Debug.WriteLine("--------------------FbmBackgroundTask.Run():" + mutexAcquired.ToString()); if ((mutexAcquired.Result & MutexOperationResultEnum.Acquired) != MutexOperationResultEnum.NoValue) { // Do work here for (var i = 0; i < 10; i++) { await Task.Delay(1000); Debug.WriteLine("--------------------FbmBackgroundTask.Run():" + "doing some work"); } } } catch (Exception ex) { Debug.WriteLine("--------------------FbmBackgroundTask.Run(): exception {0}", ex.ToString()); } finally { if (mutexAcquired != null && mutexAcquired.ResultIs(MutexOperationResultEnum.Acquired)) { mutexReleased = await mutex.ReleaseAsync(mutexAcquired.AcquisitionKey); Debug.WriteLine("--------------------FbmBackgroundTask.Run(): " + mutexReleased.ToString()); if (mutexReleased == null || !mutexReleased.ResultIs(MutexOperationResultEnum.Released)) { var mutexCleared = await mutex.ClearAsync(); Debug.WriteLine("--------------------FbmBackgroundTask.Run(): " + "Clear: " + mutexCleared.ToString()); } } } }
public async void Get_null_record() { var mock = new ServiceMockFacade <IMutexRepository>(); mock.RepositoryMock.Setup(x => x.Get(It.IsAny <string>())).Returns(Task.FromResult <Mutex>(null)); var service = new MutexService(mock.LoggerMock.Object, mock.RepositoryMock.Object, mock.ModelValidatorMockFactory.MutexModelValidatorMock.Object, mock.BOLMapperMockFactory.BOLMutexMapperMock, mock.DALMapperMockFactory.DALMutexMapperMock); ApiMutexResponseModel response = await service.Get(default(string)); response.Should().BeNull(); mock.RepositoryMock.Verify(x => x.Get(It.IsAny <string>())); }
public async void Create() { var mock = new ServiceMockFacade <IMutexRepository>(); var model = new ApiMutexRequestModel(); mock.RepositoryMock.Setup(x => x.Create(It.IsAny <Mutex>())).Returns(Task.FromResult(new Mutex())); var service = new MutexService(mock.LoggerMock.Object, mock.RepositoryMock.Object, mock.ModelValidatorMockFactory.MutexModelValidatorMock.Object, mock.BOLMapperMockFactory.BOLMutexMapperMock, mock.DALMapperMockFactory.DALMutexMapperMock); CreateResponse <ApiMutexResponseModel> response = await service.Create(model); response.Should().NotBeNull(); mock.ModelValidatorMockFactory.MutexModelValidatorMock.Verify(x => x.ValidateCreateAsync(It.IsAny <ApiMutexRequestModel>())); mock.RepositoryMock.Verify(x => x.Create(It.IsAny <Mutex>())); }
public async void All() { var mock = new ServiceMockFacade <IMutexRepository>(); var records = new List <Mutex>(); records.Add(new Mutex()); mock.RepositoryMock.Setup(x => x.All(It.IsAny <int>(), It.IsAny <int>())).Returns(Task.FromResult(records)); var service = new MutexService(mock.LoggerMock.Object, mock.RepositoryMock.Object, mock.ModelValidatorMockFactory.MutexModelValidatorMock.Object, mock.BOLMapperMockFactory.BOLMutexMapperMock, mock.DALMapperMockFactory.DALMutexMapperMock); List <ApiMutexResponseModel> response = await service.All(); response.Should().HaveCount(1); mock.RepositoryMock.Verify(x => x.All(It.IsAny <int>(), It.IsAny <int>())); }
public async void Delete() { var mock = new ServiceMockFacade <IMutexRepository>(); var model = new ApiMutexRequestModel(); mock.RepositoryMock.Setup(x => x.Delete(It.IsAny <string>())).Returns(Task.CompletedTask); var service = new MutexService(mock.LoggerMock.Object, mock.RepositoryMock.Object, mock.ModelValidatorMockFactory.MutexModelValidatorMock.Object, mock.BOLMapperMockFactory.BOLMutexMapperMock, mock.DALMapperMockFactory.DALMutexMapperMock); ActionResponse response = await service.Delete(default(string)); response.Should().NotBeNull(); mock.RepositoryMock.Verify(x => x.Delete(It.IsAny <string>())); mock.ModelValidatorMockFactory.MutexModelValidatorMock.Verify(x => x.ValidateDeleteAsync(It.IsAny <string>())); }