private static BlobQueueTriggerExecutor CreateProductUnderTest(IBlobETagReader eTagReader, IBlobCausalityReader causalityReader, IBlobWrittenWatcher blobWrittenWatcher) { IStorageBlobClient client = CreateClient(); return(new BlobQueueTriggerExecutor(client, eTagReader, causalityReader, blobWrittenWatcher)); }
public BlobQueueTriggerExecutor(IBlobCausalityReader causalityReader, IBlobWrittenWatcher blobWrittenWatcher, ILogger <BlobListener> logger) { _causalityReader = causalityReader; _blobWrittenWatcher = blobWrittenWatcher; _registrations = new ConcurrentDictionary <string, BlobQueueRegistration>(); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); }
public void ExecuteAsync_IfBlobIsUnchanged_CallsInnerExecutor() { // Arrange string functionId = "FunctionId"; string matchingETag = "ETag"; Guid expectedParentId = Guid.NewGuid(); IBlobETagReader eTagReader = CreateStubETagReader(matchingETag); IBlobCausalityReader causalityReader = CreateStubCausalityReader(expectedParentId); Mock <IFunctionExecutor> mock = new Mock <IFunctionExecutor>(MockBehavior.Strict); mock.Setup(e => e.TryExecuteAsync(It.Is <IFunctionInstance>(f => f.ParentId == expectedParentId), It.IsAny <CancellationToken>())) .Returns(Task.FromResult <IDelayedException>(null)) .Verifiable(); IFunctionExecutor innerExecutor = mock.Object; BlobQueueTriggerExecutor product = CreateProductUnderTest(eTagReader, causalityReader, innerExecutor); product.Register(functionId, CreateFakeInstanceFactory()); IStorageQueueMessage message = CreateMessage(functionId, matchingETag); // Act Task <bool> task = product.ExecuteAsync(message, CancellationToken.None); // Assert task.WaitUntilCompleted(); mock.Verify(); }
public void ExecuteAsync_IfInnerExecutorFails_ReturnsFailureResult() { // Arrange string functionId = "FunctionId"; string matchingETag = TouchBlob(TestContainerName, TestBlobName); IBlobCausalityReader causalityReader = CreateStubCausalityReader(); FunctionResult expectedResult = new FunctionResult(false); Mock <ITriggeredFunctionExecutor> mock = new Mock <ITriggeredFunctionExecutor>(MockBehavior.Strict); mock.Setup(e => e.TryExecuteAsync( It.IsAny <TriggeredFunctionData>(), It.IsAny <CancellationToken>())) .ReturnsAsync(expectedResult) .Verifiable(); BlobQueueTriggerExecutor product = CreateProductUnderTest(causalityReader); ITriggeredFunctionExecutor innerExecutor = mock.Object; BlobQueueRegistration registration = new BlobQueueRegistration { BlobServiceClient = _blobServiceClient, Executor = innerExecutor }; product.Register(functionId, registration); var message = CreateMessage(functionId, matchingETag); // Act Task <FunctionResult> task = product.ExecuteAsync(message, CancellationToken.None); // Assert Assert.False(task.Result.Succeeded); }
public void ExecuteAsync_IfInnerExecutorFails_ReturnsFailureResult() { // Arrange string functionId = "FunctionId"; string matchingETag = "ETag"; IBlobETagReader eTagReader = CreateStubETagReader(matchingETag); IBlobCausalityReader causalityReader = CreateStubCausalityReader(); FunctionResult expectedResult = new FunctionResult(false); Mock <ITriggeredFunctionExecutor> mock = new Mock <ITriggeredFunctionExecutor>(MockBehavior.Strict); mock.Setup(e => e.TryExecuteAsync( It.IsAny <TriggeredFunctionData>(), It.IsAny <CancellationToken>())) .ReturnsAsync(expectedResult) .Verifiable(); BlobQueueTriggerExecutor product = CreateProductUnderTest(eTagReader, causalityReader); ITriggeredFunctionExecutor innerExecutor = mock.Object; product.Register(functionId, innerExecutor); IStorageQueueMessage message = CreateMessage(functionId, matchingETag); // Act Task <FunctionResult> task = product.ExecuteAsync(message, CancellationToken.None); // Assert Assert.False(task.Result.Succeeded); }
private static BlobQueueTriggerExecutor CreateProductUnderTest(IBlobETagReader eTagReader, IBlobWrittenWatcher blobWrittenWatcher) { IBlobCausalityReader causalityReader = CreateDummyCausalityReader(); IFunctionExecutor innerExecutor = CreateDummyInnerExecutor(); return(CreateProductUnderTest(eTagReader, causalityReader, innerExecutor, blobWrittenWatcher)); }
public BlobQueueTriggerExecutor(IBlobETagReader eTagReader, IBlobCausalityReader causalityReader, IBlobWrittenWatcher blobWrittenWatcher) { _eTagReader = eTagReader; _causalityReader = causalityReader; _blobWrittenWatcher = blobWrittenWatcher; _registrations = new ConcurrentDictionary <string, BlobQueueRegistration>(); }
public BlobQueueTriggerExecutor(IStorageBlobClient client, IBlobETagReader eTagReader, IBlobCausalityReader causalityReader, IBlobWrittenWatcher blobWrittenWatcher) { _client = client; _eTagReader = eTagReader; _causalityReader = causalityReader; _blobWrittenWatcher = blobWrittenWatcher; _registrations = new ConcurrentDictionary <string, ITriggeredFunctionExecutor>(); }
public async Task ExecuteAsync_IfBlobIsUnchanged_CallsInnerExecutor() { // Arrange var account = new FakeAccount(); string functionId = "FunctionId"; string matchingETag = "ETag"; Guid expectedParentId = Guid.NewGuid(); var message = CreateMessage(functionId, matchingETag); SetEtag(account, TestContainerName, TestBlobName, matchingETag); IBlobCausalityReader causalityReader = CreateStubCausalityReader(expectedParentId); FunctionResult expectedResult = new FunctionResult(true); Mock <ITriggeredFunctionExecutor> mock = new Mock <ITriggeredFunctionExecutor>(MockBehavior.Strict); mock.Setup(e => e.TryExecuteAsync(It.IsAny <TriggeredFunctionData>(), It.IsAny <CancellationToken>())) .Callback <TriggeredFunctionData, CancellationToken>( (mockInput, mockCancellationToken) => { Assert.Equal(expectedParentId, mockInput.ParentId); var resultBlob = (ICloudBlob)mockInput.TriggerValue; Assert.Equal(TestBlobName, resultBlob.Name); }) .ReturnsAsync(expectedResult) .Verifiable(); ITriggeredFunctionExecutor innerExecutor = mock.Object; BlobQueueTriggerExecutor product = CreateProductUnderTest(causalityReader); BlobQueueRegistration registration = new BlobQueueRegistration { BlobClient = account.CreateCloudBlobClient(), Executor = innerExecutor }; product.Register(functionId, registration); // Act FunctionResult result = await product.ExecuteAsync(message, CancellationToken.None); // Assert Assert.Same(expectedResult, result); mock.Verify(); }
public void ExecuteAsync_IfInnerExecutorFails_ReturnsFalse() { // Arrange string functionId = "FunctionId"; string matchingETag = "ETag"; IBlobETagReader eTagReader = CreateStubETagReader(matchingETag); IBlobCausalityReader causalityReader = CreateStubCausalityReader(); IFunctionExecutor innerExecutor = CreateStubInnerExecutor(CreateDummyDelayedException()); BlobQueueTriggerExecutor product = CreateProductUnderTest(eTagReader, causalityReader, innerExecutor); product.Register(functionId, CreateFakeInstanceFactory()); IStorageQueueMessage message = CreateMessage(functionId, matchingETag); // Act Task <bool> task = product.ExecuteAsync(message, CancellationToken.None); // Assert Assert.False(task.Result); }
public void ExecuteAsync_IfInnerExecutorSucceeds_ReturnsSuccessResult() { // Arrange var account = new FakeAccount(); string functionId = "FunctionId"; string matchingETag = "ETag"; SetEtag(account, TestContainerName, TestBlobName, matchingETag); IBlobCausalityReader causalityReader = CreateStubCausalityReader(); FunctionResult expectedResult = new FunctionResult(true); Mock <ITriggeredFunctionExecutor> mock = new Mock <ITriggeredFunctionExecutor>(MockBehavior.Strict); mock.Setup(e => e.TryExecuteAsync( It.IsAny <TriggeredFunctionData>(), It.IsAny <CancellationToken>())) .ReturnsAsync(expectedResult) .Verifiable(); BlobQueueTriggerExecutor product = CreateProductUnderTest(causalityReader); ITriggeredFunctionExecutor innerExecutor = mock.Object; BlobQueueRegistration registration = new BlobQueueRegistration { BlobClient = account.CreateCloudBlobClient(), Executor = innerExecutor }; product.Register(functionId, registration); var message = CreateMessage(functionId, matchingETag); // Act Task <FunctionResult> task = product.ExecuteAsync(message, CancellationToken.None); // Assert Assert.Same(expectedResult, task.Result); }
public async Task ExecuteAsync_IfBlobIsUnchanged_CallsInnerExecutor() { // Arrange string functionId = "FunctionId"; string matchingETag = "ETag"; Guid expectedParentId = Guid.NewGuid(); IStorageQueueMessage message = CreateMessage(functionId, matchingETag); IBlobETagReader eTagReader = CreateStubETagReader(matchingETag); IBlobCausalityReader causalityReader = CreateStubCausalityReader(expectedParentId); FunctionResult expectedResult = new FunctionResult(true); Mock <ITriggeredFunctionExecutor> mock = new Mock <ITriggeredFunctionExecutor>(MockBehavior.Strict); mock.Setup(e => e.TryExecuteAsync(It.IsAny <TriggeredFunctionData>(), It.IsAny <CancellationToken>())) .Callback <TriggeredFunctionData, CancellationToken>( (mockInput, mockCancellationToken) => { Assert.Equal(expectedParentId, mockInput.ParentId); StorageBlockBlob resultBlob = (StorageBlockBlob)mockInput.TriggerValue; Assert.Equal(TestBlobName, resultBlob.Name); }) .ReturnsAsync(expectedResult) .Verifiable(); ITriggeredFunctionExecutor innerExecutor = mock.Object; BlobQueueTriggerExecutor product = CreateProductUnderTest(eTagReader, causalityReader); product.Register(functionId, innerExecutor); // Act FunctionResult result = await product.ExecuteAsync(message, CancellationToken.None); // Assert Assert.Same(expectedResult, result); mock.Verify(); }
private BlobQueueTriggerExecutor CreateProductUnderTest( IBlobCausalityReader causalityReader, IBlobWrittenWatcher blobWrittenWatcher) { return(new BlobQueueTriggerExecutor(causalityReader, blobWrittenWatcher, _logger)); }
private static BlobQueueTriggerExecutor CreateProductUnderTest(IBlobWrittenWatcher blobWrittenWatcher) { IBlobCausalityReader causalityReader = CreateDummyCausalityReader(); return(CreateProductUnderTest(causalityReader, blobWrittenWatcher)); }
private BlobQueueTriggerExecutor CreateProductUnderTest( IBlobCausalityReader causalityReader) { return(CreateProductUnderTest(causalityReader, CreateDummyBlobWrittenWatcher())); }
private BlobQueueTriggerExecutor CreateProductUnderTest( IBlobCausalityReader causalityReader, IBlobWrittenWatcher blobWrittenWatcher) { return(new BlobQueueTriggerExecutor(causalityReader, BlobTriggerSource.LogsAndContainerScan, blobWrittenWatcher, _logger)); }
private static BlobQueueTriggerExecutor CreateProductUnderTest(IBlobETagReader eTagReader, IBlobCausalityReader causalityReader, IBlobWrittenWatcher blobWrittenWatcher) { return new BlobQueueTriggerExecutor(eTagReader, causalityReader, blobWrittenWatcher); }
private static BlobQueueTriggerExecutor CreateProductUnderTest(IBlobETagReader eTagReader, IBlobCausalityReader causalityReader) { return CreateProductUnderTest(eTagReader, causalityReader, CreateDummyBlobWrittenWatcher()); }
private static BlobQueueTriggerExecutor CreateProductUnderTest(IBlobETagReader eTagReader, IBlobCausalityReader causalityReader, IBlobWrittenWatcher blobWrittenWatcher) { return(new BlobQueueTriggerExecutor(eTagReader, causalityReader, blobWrittenWatcher)); }
private static BlobQueueTriggerExecutor CreateProductUnderTest(IBlobETagReader eTagReader, IBlobCausalityReader causalityReader, IBlobWrittenWatcher blobWrittenWatcher) { IStorageBlobClient client = CreateClient(); return new BlobQueueTriggerExecutor(client, eTagReader, causalityReader, blobWrittenWatcher); }