コード例 #1
0
        internal void AfterFunctionInvocation_ClearsOrchestrationContext(DurableFunctionType durableFunctionType)
        {
            var durableController = CreateDurableController(durableFunctionType);

            _mockPowerShellServices.Setup(_ => _.ClearOrchestrationContext());

            durableController.AfterFunctionInvocation();

            _mockPowerShellServices.Verify(_ => _.ClearOrchestrationContext(), Times.Once);
        }
コード例 #2
0
        private DurableController CreateDurableController(
            DurableFunctionType durableFunctionType,
            string durableClientBindingName = null)
        {
            var durableFunctionInfo = new DurableFunctionInfo(durableFunctionType, durableClientBindingName);

            return(new DurableController(
                       durableFunctionInfo,
                       _mockPowerShellServices.Object,
                       _mockOrchestrationInvoker.Object));
        }
        internal void SuppressPipelineTracesForDurableActivityFunctionOnly(DurableFunctionType durableFunctionType, bool shouldSuppressPipelineTraces)
        {
            s_testLogger.FullLog.Clear();

            var path = Path.Join(s_funcDirectory, "testFunctionWithOutput.ps1");

            var(functionInfo, testManager)        = PrepareFunction(path, string.Empty);
            functionInfo.DurableFunctionInfo.Type = durableFunctionType;

            try
            {
                FunctionMetadata.RegisterFunctionMetadata(testManager.InstanceId, functionInfo.OutputBindings);

                var result = testManager.InvokeFunction(functionInfo, null, null, null, CreateOrchestratorInputData(), new FunctionInvocationPerformanceStopwatch());

                var relevantLogs = s_testLogger.FullLog.Where(message => message.StartsWith("Information: OUTPUT:")).ToList();
                var expected     = shouldSuppressPipelineTraces ? new string[0] : new[] { "Information: OUTPUT: Hello" };
                Assert.Equal(expected, relevantLogs);
            }
            finally
            {
                FunctionMetadata.UnregisterFunctionMetadata(testManager.InstanceId);
            }
        }
コード例 #4
0
        internal void BeforeFunctionInvocation_DoesNothing_ForNonOrchestrationFunction(DurableFunctionType durableFunctionType)
        {
            var durableController    = CreateDurableController(durableFunctionType);
            var orchestrationContext = new OrchestrationContext {
                InstanceId = Guid.NewGuid().ToString()
            };

            var inputData = new[]
            {
                // Even if a parameter similar to orchestration context is passed:
                CreateParameterBinding("ParameterName", orchestrationContext)
            };

            durableController.BeforeFunctionInvocation(inputData);
        }
コード例 #5
0
        internal void SuppressPipelineTracesForActivityFunctionOnly(DurableFunctionType durableFunctionType, bool shouldSuppressPipelineTraces)
        {
            var durableController = CreateDurableController(durableFunctionType);

            Assert.Equal(shouldSuppressPipelineTraces, durableController.ShouldSuppressPipelineTraces());
        }
コード例 #6
0
        internal void AddPipelineOutputIfNecessary_DoesNotAddDollarReturn_ForNonActivityFunction(DurableFunctionType durableFunctionType)
        {
            var durableController = CreateDurableController(durableFunctionType);

            var pipelineItems = new Collection <object> {
                "Item1", "Item2", "Item3"
            };
            var result = new Hashtable {
                { "FieldA", "ValueA" }, { "FieldB", "ValueB" }
            };

            durableController.AddPipelineOutputIfNecessary(pipelineItems, result);

            Assert.False(result.ContainsKey(AzFunctionInfo.DollarReturn));
        }
コード例 #7
0
        internal void TryInvokeOrchestrationFunction_DoesNotInvokeNonOrchestrationFunction(DurableFunctionType durableFunctionType)
        {
            var contextParameterName = "ParameterName";
            var orchestrationContext = new OrchestrationContext {
                InstanceId = Guid.NewGuid().ToString()
            };
            var inputData = new[] { CreateParameterBinding(contextParameterName, orchestrationContext) };

            var durableController = CreateDurableController(durableFunctionType);

            _mockPowerShellServices.Setup(_ => _.SetOrchestrationContext(It.IsAny <OrchestrationContext>()));
            durableController.BeforeFunctionInvocation(inputData);

            var invoked = durableController.TryInvokeOrchestrationFunction(out var actualResult);

            Assert.False(invoked);
            Assert.Null(actualResult);
        }
コード例 #8
0
        internal void TryGetInputBindingParameterValue_RetrievesNothing_ForNonOrchestrationFunction(DurableFunctionType durableFunctionType)
        {
            var durableController = CreateDurableController(durableFunctionType);

            var orchestrationContext = new OrchestrationContext {
                InstanceId = Guid.NewGuid().ToString()
            };
            const string contextParameterName = "ParameterName";
            var          inputData            = new[]
            {
                CreateParameterBinding(contextParameterName, orchestrationContext)
            };

            _mockPowerShellServices.Setup(_ => _.SetOrchestrationContext(It.IsAny <OrchestrationContext>()));
            durableController.BeforeFunctionInvocation(inputData);

            Assert.False(durableController.TryGetInputBindingParameterValue(contextParameterName, out var value));
            Assert.Null(value);
        }
 public DurableFunctionInfo(DurableFunctionType type, string durableClientBindingName)
 {
     Type = type;
     DurableClientBindingName = durableClientBindingName;
 }