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") }; }
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") }; }
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; }
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")); }); }