Exemplo n.º 1
0
        public static OrchestrationInstance FunctionTest(
            ARMOrchestartionFixture fixture,
            string filename,
            Dictionary <string, string> result,
            string managementGroupId = null)
        {
            var(instance, taskResult) = FunctionTestNotCheckResult(fixture, filename, managementGroupId);
            var outputString   = taskResult.Content;
            var templateString = TestHelper.GetFunctionInputContent(filename);

            using var templateDoc = JsonDocument.Parse(templateString);
            using var outputDoc   = JsonDocument.Parse(outputString);
            var outputRoot = outputDoc.RootElement.GetProperty("properties").GetProperty("outputs");

            if (templateDoc.RootElement.TryGetProperty("outputs", out JsonElement outputDefineElement))
            {
                List <string> child = new List <string>();
                foreach (var item in outputDefineElement.EnumerateObject())
                {
                    Assert.True(outputRoot.TryGetProperty(item.Name, out JsonElement o), $"cannot find {item.Name} in output");
                    Assert.True(o.TryGetProperty("type", out JsonElement _type));
                    Assert.True(o.TryGetProperty("value", out JsonElement v));

                    if (v.ValueKind == JsonValueKind.String)
                    {
                        Assert.True(result[item.Name] == v.GetString(), $"{item.Name} test fail, Expected:{result[item.Name]},Actual:{v.GetString()}");
                    }
                    else
                    {
                        Assert.True(result[item.Name] == v.GetRawText(), $"{item.Name} test fail, Expected:{result[item.Name]},Actual:{v.GetRawText()}");
                    }
                }
            }
            return(instance);
        }
Exemplo n.º 2
0
        public static (OrchestrationInstance, TaskResult) FunctionTestNotCheckResult(
            ARMOrchestartionFixture fixture,
            string filename,
            string managementGroupId = null)
        {
            var templateString = TestHelper.GetFunctionInputContent(filename);
            var deployment     = fixture.ARMOrchestrationClient.Run(new DeploymentOrchestrationInput()
            {
                TemplateContent   = templateString,
                Parameters        = string.Empty,
                CorrelationId     = Guid.NewGuid().ToString("N"),
                DeploymentName    = filename.Replace('/', '-'),
                SubscriptionId    = string.IsNullOrEmpty(managementGroupId) ? TestHelper.SubscriptionId : null,
                ManagementGroupId = managementGroupId,
                ResourceGroup     = TestHelper.ResourceGroup,
                GroupId           = Guid.NewGuid().ToString("N"),
                GroupType         = "ResourceGroup",
                HierarchyId       = "001002003004005",
                CreateByUserId    = TestHelper.CreateByUserId,
                ApiVersion        = "1.0",
                TenantId          = TestHelper.TenantId,
                DeploymentId      = Guid.NewGuid().ToString("N")
            }).Result;
            var instance = new OrchestrationInstance()
            {
                InstanceId = deployment.InstanceId, ExecutionId = deployment.ExecutionId
            };
            TaskCompletionSource <string> t = new TaskCompletionSource <string>();

            fixture.OrchestrationWorker.RegistOrchestrationCompletedAction((args) =>
            {
                if (!args.IsSubOrchestration && args.InstanceId == instance.InstanceId)
                {
                    t.SetResult(args.Result);
                }
            });
            t.Task.Wait();
            var reslut = DataConverter.Deserialize <TaskResult>(t.Task.Result);

            return(instance, reslut);
        }
 public ARMOrchestrationClientTest(ARMOrchestartionFixture fixture)
 {
     this._Fixture = fixture;
     this._Client = this._Fixture.ServiceProvider.GetService<ARMOrchestrationClient>();
 }