Example #1
0
        public ScriptActionTests()
        {
            base.SetupTestsForManagement();

            scriptActionDetail = new RuntimeScriptActionDetail
            {
                ApplicationName  = "AppName",
                DebugInformation = "DebugInfo",
                EndTime          = new DateTime(2016, 1, 1),
                ExecutionSummary =
                    new List <Microsoft.Azure.Management.HDInsight.Models.ScriptActionExecutionSummary>
                {
                    new Microsoft.Azure.Management.HDInsight.Models.ScriptActionExecutionSummary
                    {
                        Status        = "Succeeded",
                        InstanceCount = 4
                    }
                },
                Name       = "ScriptName",
                Operation  = "PostCreation",
                Parameters = "Parameters",
                Roles      = new List <string> {
                    "HeadNode", "WorkerNode"
                },
                ScriptExecutionId = DateTime.UtcNow.Ticks,
                StartTime         = new DateTime(2016, 1, 2),
                Status            = "Succeeded",
                Uri = new Uri("http://bing.com")
            };
        }
Example #2
0
        private void ValidateHistoryDetail(RuntimeScriptActionDetail runtimeScriptActionDetail, bool includeDebugInfo, string scriptName)
        {
            Assert.Equal(2, runtimeScriptActionDetail.Roles.Count);

            Assert.Equal("PostClusterCreateScriptActionRequest", runtimeScriptActionDetail.Operation);

            Assert.Equal("Succeeded", runtimeScriptActionDetail.Status);

            Assert.Equal(scriptName, runtimeScriptActionDetail.Name);

            Assert.Equal(1, runtimeScriptActionDetail.ExecutionSummary.Count);

            Assert.Equal(5, runtimeScriptActionDetail.ExecutionSummary[0].InstanceCount);

            Assert.Equal("COMPLETED", runtimeScriptActionDetail.ExecutionSummary[0].Status);

            Assert.NotNull(runtimeScriptActionDetail.EndTime);

            Assert.NotNull(runtimeScriptActionDetail.StartTime);

            Assert.Null(runtimeScriptActionDetail.ApplicationName);

            if (includeDebugInfo)
            {
                Assert.NotEmpty(runtimeScriptActionDetail.DebugInformation);

                Assert.NotNull(runtimeScriptActionDetail.DebugInformation);
            }
        }
        public ScriptActionTests(Xunit.Abstractions.ITestOutputHelper output)
        {
            ServiceManagement.Common.Models.XunitTracingInterceptor.AddToContext(new ServiceManagement.Common.Models.XunitTracingInterceptor(output));
            base.SetupTestsForManagement();


            scriptActionDetail = new RuntimeScriptActionDetail
                                 (
                applicationName: "AppName",
                debugInformation: "DebugInfo",
                endTime: new DateTime(2016, 1, 1).ToString(),
                executionSummary:
                new List <Microsoft.Azure.Management.HDInsight.Models.ScriptActionExecutionSummary>
            {
                new Microsoft.Azure.Management.HDInsight.Models.ScriptActionExecutionSummary
                (
                    status: "Succeeded",
                    instanceCount: 4
                )
            },
                name: "ScriptName",
                operation: "PostCreation",
                parameters: "Parameters",
                roles: new List <string> {
                "HeadNode", "WorkerNode"
            },
                scriptExecutionId: DateTime.UtcNow.Ticks,
                startTime: new DateTime(2016, 1, 2).ToString(),
                status: "Succeeded",
                uri: "http://bing.com"
                                 );

            scriptActionDetailWithApplicationName = new RuntimeScriptActionDetail
                                                    (
                applicationName: "AppName",
                debugInformation: "DebugInfo",
                endTime: new DateTime(2016, 1, 1).ToString(),
                executionSummary:
                new List <Microsoft.Azure.Management.HDInsight.Models.ScriptActionExecutionSummary>
            {
                new Microsoft.Azure.Management.HDInsight.Models.ScriptActionExecutionSummary
                (
                    status: "Succeeded",
                    instanceCount: 1
                )
            },
                name: "ScriptNameWithApp",
                operation: "PostCreation",
                parameters: "Parameters",
                roles: new List <string> {
                "EdgeNode"
            },
                scriptExecutionId: DateTime.UtcNow.Ticks,
                startTime: new DateTime(2016, 1, 2).ToString(),
                status: "Succeeded",
                uri: "http://bing.com"
                                                    );
        }
        public ScriptActionTests(Xunit.Abstractions.ITestOutputHelper output)
        {
            ServiceManagemenet.Common.Models.XunitTracingInterceptor.AddToContext(new ServiceManagemenet.Common.Models.XunitTracingInterceptor(output));
            base.SetupTestsForManagement();

            scriptActionDetail = new RuntimeScriptActionDetail
            {
                ApplicationName  = "AppName",
                DebugInformation = "DebugInfo",
                EndTime          = new DateTime(2016, 1, 1),
                ExecutionSummary =
                    new List <Microsoft.Azure.Management.HDInsight.Models.ScriptActionExecutionSummary>
                {
                    new Microsoft.Azure.Management.HDInsight.Models.ScriptActionExecutionSummary
                    {
                        Status        = "Succeeded",
                        InstanceCount = 4
                    }
                },
                Name       = "ScriptName",
                Operation  = "PostCreation",
                Parameters = "Parameters",
                Roles      = new List <string> {
                    "HeadNode", "WorkerNode"
                },
                ScriptExecutionId = DateTime.UtcNow.Ticks,
                StartTime         = new DateTime(2016, 1, 2),
                Status            = "Succeeded",
                Uri = new Uri("http://bing.com")
            };

            scriptActionDetailWithApplicationName = new RuntimeScriptActionDetail
            {
                ApplicationName  = "AppName",
                DebugInformation = "DebugInfo",
                EndTime          = new DateTime(2016, 1, 1),
                ExecutionSummary =
                    new List <Microsoft.Azure.Management.HDInsight.Models.ScriptActionExecutionSummary>
                {
                    new Microsoft.Azure.Management.HDInsight.Models.ScriptActionExecutionSummary
                    {
                        Status        = "Succeeded",
                        InstanceCount = 1
                    }
                },
                Name       = "ScriptNameWithApp",
                Operation  = "PostCreation",
                Parameters = "Parameters",
                Roles      = new List <string> {
                    "EdgeNode"
                },
                ScriptExecutionId = DateTime.UtcNow.Ticks,
                StartTime         = new DateTime(2016, 1, 2),
                Status            = "Succeeded",
                Uri = new Uri("http://bing.com")
            };
        }
Example #5
0
        public AzureHDInsightRuntimeScriptActionDetail(RuntimeScriptActionDetail runtimeScriptActionDetail)
            : base(runtimeScriptActionDetail)
        {
            ScriptExecutionId = runtimeScriptActionDetail.ScriptExecutionId;
            StartTime         = runtimeScriptActionDetail.StartTime;
            EndTime           = runtimeScriptActionDetail.EndTime;
            Status            = runtimeScriptActionDetail.Status;
            Operation         = runtimeScriptActionDetail.Operation;

            if (runtimeScriptActionDetail.ExecutionSummary != null)
            {
                ExecutionSummary = runtimeScriptActionDetail.ExecutionSummary
                                   .Select(e => string.Format("{{{0}: {1}}}", e.Status, e.InstanceCount))
                                   .ToList();
            }
            DebugInformation = runtimeScriptActionDetail.DebugInformation;
        }
        public AzureHDInsightRuntimeScriptActionDetail(RuntimeScriptActionDetail runtimeScriptActionDetail)
            : base(runtimeScriptActionDetail)
        {
            ScriptExecutionId = runtimeScriptActionDetail.ScriptExecutionId ?? 0;
            StartTime         = DateTime.Parse(runtimeScriptActionDetail.StartTime, CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind);
            EndTime           = DateTime.Parse(runtimeScriptActionDetail.EndTime, CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind);
            Status            = runtimeScriptActionDetail.Status;
            Operation         = runtimeScriptActionDetail.Operation;

            if (runtimeScriptActionDetail.ExecutionSummary != null)
            {
                ExecutionSummary = runtimeScriptActionDetail.ExecutionSummary
                                   .Select(e => string.Format("{{{0}: {1}}}", e.Status, e.InstanceCount))
                                   .ToList();
            }
            DebugInformation = runtimeScriptActionDetail.DebugInformation;
        }
Example #7
0
        public void TestScriptActionsOnRunningCluster()
        {
            string clusterName = "hdisdk-scriptactions";
            string testName    = "TestScriptActionsOnRunningCluster";
            string suiteName   = GetType().FullName;
            ClusterCreateParameters createParams = ClusterCreateParametersHelpers.GetCustomCreateParametersIaas(testName);

            HDInsightManagementTestUtilities.CreateClusterInNewResourceGroupAndRunTest(suiteName, testName, clusterName, createParams, (client, rgName) =>
            {
                string scriptName = "script1";

                //Upload script to storage account.
                UploadScriptToStorageAccount(createParams);

                //Execute script actions, and persist on success.
                IList <RuntimeScriptAction> scriptActionParams = GetExecuteScriptActionParams(scriptName, InstallGiraph);
                client.Clusters.ExecuteScriptActions(rgName, clusterName, scriptActionParams, true);

                //List script actions and validate script is persisted.
                IPage <RuntimeScriptActionDetail> scriptActionsList = client.ScriptActions.ListByCluster(rgName, clusterName);
                Assert.Single(scriptActionsList);
                RuntimeScriptActionDetail scriptAction = scriptActionsList.First();
                Assert.Equal(scriptActionParams[0].Name, scriptAction.Name);
                Assert.Equal(scriptActionParams[0].Uri, scriptAction.Uri);
                Assert.Equal(scriptActionParams[0].Roles, scriptAction.Roles);

                //Delete script action.
                client.ScriptActions.Delete(rgName, clusterName, scriptName);

                //List script actions and validate script is deleted.
                scriptActionsList = client.ScriptActions.ListByCluster(rgName, clusterName);
                Assert.Empty(scriptActionsList);

                //List script action history and validate script appears there.
                IPage <RuntimeScriptActionDetail> listHistoryResponse = client.ScriptExecutionHistory.ListByCluster(rgName, clusterName);
                Assert.Single(listHistoryResponse);
                scriptAction = listHistoryResponse.First();
                Assert.Equal(1, scriptAction.ExecutionSummary.Count);
                Assert.Equal(scriptActionParams[0].Name, scriptAction.Name);
                Assert.Equal(scriptActionParams[0].Uri, scriptAction.Uri);
                Assert.Equal(scriptActionParams[0].Roles, scriptAction.Roles);
                Assert.Equal("Succeeded", scriptAction.Status);

                //Get the script action by ID and validate it's the same action.
                scriptAction = client.ScriptActions.GetExecutionDetail(rgName, clusterName, listHistoryResponse.First().ScriptExecutionId.Value.ToString());
                Assert.Equal(scriptActionParams[0].Name, scriptAction.Name);

                //Execute script actions, but don't persist on success.
                scriptActionParams = GetExecuteScriptActionParams("script5baf", InstallGiraph);
                client.Clusters.ExecuteScriptActions(rgName, clusterName, scriptActionParams, false);

                //List script action history and validate the new script also appears.
                listHistoryResponse = client.ScriptExecutionHistory.ListByCluster(rgName, clusterName);
                Assert.Equal(2, listHistoryResponse.Count());
                scriptAction = listHistoryResponse.FirstOrDefault(a => a.Name.Equals(scriptActionParams[0].Name, StringComparison.OrdinalIgnoreCase));
                Assert.NotNull(scriptAction);
                Assert.Equal(1, scriptAction.ExecutionSummary.Count);
                Assert.Equal(scriptActionParams[0].Name, scriptAction.Name);
                Assert.Equal(scriptActionParams[0].Uri, scriptAction.Uri);
                Assert.Equal(scriptActionParams[0].Roles, scriptAction.Roles);
                Assert.Equal("Succeeded", scriptAction.Status);

                //Promote non-persisted script.
                client.ScriptExecutionHistory.Promote(rgName, clusterName, listHistoryResponse.First().ScriptExecutionId.Value.ToString());

                //Execute failing script action.
                string failingScriptUri = GetFailingScriptUri(createParams);
                IList <RuntimeScriptAction> failingScriptActionParams = GetExecuteScriptActionParams(string.Format("script0cc4", Guid.NewGuid()).Substring(0, 10), failingScriptUri);
                CloudException ex = Assert.Throws <CloudException>(() => client.Clusters.ExecuteScriptActions(rgName, clusterName, failingScriptActionParams, true));

                //List script action list and validate the promoted script is the only one there.
                scriptActionsList = client.ScriptActions.ListByCluster(rgName, clusterName);
                Assert.Single(scriptActionsList);
                Assert.Equal(1, scriptAction.ExecutionSummary.Count);
                Assert.Equal(scriptActionParams[0].Name, scriptAction.Name);
                Assert.Equal(scriptActionParams[0].Uri, scriptAction.Uri);
                Assert.Equal(scriptActionParams[0].Roles, scriptAction.Roles);
                Assert.Equal("Succeeded", scriptAction.Status);

                //List script action history and validate all three scripts are there.
                listHistoryResponse = client.ScriptExecutionHistory.ListByCluster(rgName, clusterName);
                Assert.Equal(3, listHistoryResponse.Count());
                Assert.Equal(2, listHistoryResponse.Count(a => a.Status == "Succeeded"));
                Assert.Equal(1, listHistoryResponse.Count(a => a.Status == "Failed"));
            });
        }