private TestResponse SuccessfulSecFwUpdateForUpdatePsuFirmware() { // Change test case Id and fwFilePath if testing Les or Non-Les Psus int testCaseId = -1; string fwFilePath; if (lesPsusInChassis == "1") // currently testing LES PSU { testCaseId = 22745; fwFilePath = this.secLesFwFilePath; } else { testCaseId = 22746; fwFilePath = this.secNonLesFwFilePath; } TestCase testCase = new TestCase("SuccessfulSecFwUpdateForUpdatePsuFirmware", testCaseId); CmTestLog.Info(string.Format( "\n !!!!!!Verifying {0} Returns Successful Secondary Psu Fw Image Update for Psu. WorkItemId: {1}!!!!!!", this.currentApi, testCase.WorkItemId)); TestResponse response = new TestResponse(); // Get random valid Psu Id int[] psuIds = null; if (!ReturnSingleOrMultipleRandomPsus(1, ref psuIds, ref response)) return response; UpdatePsu psu = new UpdatePsu(psuIds[0], fwFilePath, secondaryImage); // Initialize List to contain UpdatePsu elements List<UpdatePsu> psuList = new List<UpdatePsu>(); psuList.Add(psu); // Verify Secondary Psu Fw Update VerifyPsuFwUpdate(ref psuList, ref response); testCase.LogPassOrFail(ref response, currentApi); return response; }
private TestResponse SuccessfulPriOrSecNotBothFwUpdateForUpdatePsuFirmware() { // Change test case Id and fwFilePath if testing Les or Non-Les Psus int testCaseId = -1; string fwFilePath; if (lesPsusInChassis == "1") // currently testing LES PSU { testCaseId = 22848; fwFilePath = this.priLesFwFilePath; } else { testCaseId = 22864; fwFilePath = this.priNonLesFwFilePath; } TestCase testCase = new TestCase("SuccessfulMultiplePriSecFwUpdatesForUpdatePsuFirmware", testCaseId); CmTestLog.Info(string.Format( "\n !!!!!!Verifying {0} Only Allows Successful Primary Or Secondary Psu Fw Image To Be Updated, Not Both. WorkItemId: {1}!!!!!!", this.currentApi, testCase.WorkItemId)); TestResponse response = new TestResponse(); // Get random valid Psu Id int[] psuIds = null; if (!ReturnSingleOrMultipleRandomPsus(1, ref psuIds, ref response)) return response; UpdatePsu psu = new UpdatePsu(psuIds[0], fwFilePath, primaryImage); // Run test case using WcsCmAdmin this.TestChannelContext = this.ListTestChannelContexts[(int)WCSSecurityRole.WcsCmAdmin]; psu.psuFwStatus = this.TestChannelContext.GetPSUFirmwareStatus(psu.index); LogMessage.Message = string.Format( "{0}: GetPsuFirmwareStatus for PSU {1} before update - fwRevision: {2} completionCode: {3} fwUpdateStatus: {4} fwUpdateStage: {5}", this.currentApi, psu.index, psu.psuFwStatus.fwRevision, psu.psuFwStatus.completionCode, psu.psuFwStatus.fwUpdateStatus, psu.psuFwStatus.fwUpdateStage); // Verify PSU is available for update if (psu.psuFwStatus.completionCode != CompletionCode.Success || psu.psuFwStatus.fwUpdateStatus == "InProgress") { LogMessage.Log(LogMessage.MessageType.Failure, ref response); return response; } else LogMessage.Log(LogMessage.MessageType.Success, ref response); // Update PSU psu.psuFwUpdateResponse = this.TestChannelContext.UpdatePSUFirmware(psu.index, psu.psuFwFilePath, psu.primaryImage); LogMessage.Message = string.Format( "{0}: Psu {1} returned completion code {2} and status description {3}", this.currentApi, psu.index, psu.psuFwUpdateResponse.completionCode, psu.psuFwUpdateResponse.statusDescription); if (psu.psuFwUpdateResponse.completionCode != CompletionCode.Success) { LogMessage.Log(LogMessage.MessageType.Failure, ref response); return response; } else LogMessage.Log(LogMessage.MessageType.Success, ref response); // Sleep for 5 minutes LogMessage.Message = "Thread sleeping for 5 minutes..."; LogMessage.Log(LogMessage.MessageType.Info, ref response); Thread.Sleep(TimeSpan.FromMinutes(5)); // Verify PSU is still updating psu.psuFwStatus = this.TestChannelContext.GetPSUFirmwareStatus(psu.index); LogMessage.Message = string.Format( "{0}: GetPsuFirmwareStatus for PSU {1} after 5 minutes - fwRevision: {2} completionCode: {3} fwUpdateStatus: {4} fwUpdateStage: {5}", this.currentApi, psu.index, psu.psuFwStatus.fwRevision, psu.psuFwStatus.completionCode, psu.psuFwStatus.fwUpdateStatus, psu.psuFwStatus.fwUpdateStage); // Verify PSU is still updating if (psu.psuFwStatus.completionCode != CompletionCode.Success || psu.psuFwStatus.fwUpdateStatus != "InProgress") { LogMessage.Log(LogMessage.MessageType.Failure, ref response); return response; } else LogMessage.Log(LogMessage.MessageType.Success, ref response); // Attempt to update PSU with secondary image and verify Failure if (lesPsusInChassis == "1") psu.psuFwFilePath = this.secLesFwFilePath; else psu.psuFwFilePath = this.secNonLesFwFilePath; psu.psuFwUpdateResponse = this.TestChannelContext.UpdatePSUFirmware(psu.index, psu.psuFwFilePath, secondaryImage); LogMessage.Message = string.Format( "{0}: Psu {1} returned completion code {2} and status description {3}", this.currentApi, psu.index, psu.psuFwUpdateResponse.completionCode, psu.psuFwUpdateResponse.statusDescription); if (psu.psuFwUpdateResponse.completionCode != CompletionCode.Failure) { LogMessage.Log(LogMessage.MessageType.Failure, ref response); return response; } else LogMessage.Log(LogMessage.MessageType.Success, ref response); // Sleep for 7 more minutes LogMessage.Message = "Thread sleeping for 7 minutes..."; LogMessage.Log(LogMessage.MessageType.Info, ref response); Thread.Sleep(TimeSpan.FromMinutes(7)); // Verify successful Primary PSU Fw Update psu.psuFwStatus = this.TestChannelContext.GetPSUFirmwareStatus(psu.index); LogMessage.Message = string.Format( "{0}: GetPsuFWStatus for Psu {1} - fwRevision: {2} completionCode: {3} fwUpdateStatus: {4} fwUpdateStage: {5}", currentApi, psu.index, psu.psuFwStatus.fwRevision, psu.psuFwStatus.completionCode, psu.psuFwStatus.fwUpdateStatus, psu.psuFwStatus.fwUpdateStage); if (psu.psuFwStatus.completionCode != CompletionCode.Success || ((psu.psuFwStatus.fwUpdateStatus != "Success") && (psu.psuFwStatus.fwUpdateStage != "Completed"))) LogMessage.Log(LogMessage.MessageType.Failure, ref response); else LogMessage.Log(LogMessage.MessageType.Success, ref response); // Verify Successful Secondary PSU Fw Update if Primary was successful List<UpdatePsu> psuList = new List<UpdatePsu>(); psuList.Add(psu); if (response.Result) VerifyPsuFwUpdate(ref psuList, ref response); testCase.LogPassOrFail(ref response, this.currentApi); return response; }
private TestResponse SuccessfulPriSecUpdateForPrimaryImageTrueFalseForUpdatePsuFirmware() { TestCase testCase = new TestCase("SuccessfulPriSecUpdateForPrimaryImageTrueFalseForUpdatePsuFirmware", 22711); CmTestLog.Info(string.Format( "\n !!!!!!Verifying {0} Updates Primary Image When PrimaryImage True, Secondary Image When False. WorkItemId: {1}!!!!!!", this.currentApi, testCase.WorkItemId)); TestResponse response = new TestResponse(); // Get random valid Psu Ids int[] psuIds = null; if (!ReturnSingleOrMultipleRandomPsus(2, ref psuIds, ref response)) return response; // Initialize multiple UpdatePsu elements and add to psuList List<UpdatePsu> psuList = new List<UpdatePsu>(); if (lesPsusInChassis == "1") // currently testing LES PSU { psuList.Add(new UpdatePsu(psuIds[0], this.priLesFwFilePath, primaryImage)); psuList.Add(new UpdatePsu(psuIds[1], this.secLesFwFilePath, secondaryImage)); } else { psuList.Add(new UpdatePsu(psuIds[0], this.priNonLesFwFilePath, primaryImage)); psuList.Add(new UpdatePsu(psuIds[1], this.secNonLesFwFilePath, secondaryImage)); } // Verify Psu Update VerifyPsuFwUpdate(ref psuList, ref response); testCase.LogPassOrFail(ref response, this.currentApi); return response; }
private TestResponse PsuDoesNotOutputPowerForUpdatePsuFirmware() { TestCase testCase = new TestCase("PsuDoesNotOutputPowerForUpdatePsuFirmware", 22840); CmTestLog.Info(string.Format( "\n !!!!!!Verifying {0} Causes Psu To Not Output Power During Fw Update. WorkItemId: {1}!!!!!!", this.currentApi, testCase.WorkItemId)); TestResponse response = new TestResponse(); // Get random Psu int[] psuIds = null; if (!ReturnSingleOrMultipleRandomPsus(1, ref psuIds, ref response)) return response; UpdatePsu psu = new UpdatePsu(psuIds[0], this.priLesFwFilePath, primaryImage); // Run test case using WcsCmAdmin this.TestChannelContext = this.ListTestChannelContexts[(int)WCSSecurityRole.WcsCmAdmin]; psu.psuFwStatus = this.TestChannelContext.GetPSUFirmwareStatus(psu.index); LogMessage.Message = string.Format( "{0}: GetPsuFirmwareStatus for PSU {1} before update - fwRevision: {2} completionCode: {3} fwUpdateStatus: {4} fwUpdateStage: {5}", this.currentApi, psu.index, psu.psuFwStatus.fwRevision, psu.psuFwStatus.completionCode, psu.psuFwStatus.fwUpdateStatus, psu.psuFwStatus.fwUpdateStage); // Verify PSU is available for update if (psu.psuFwStatus.completionCode != CompletionCode.Success || psu.psuFwStatus.fwUpdateStatus == "InProgress") { LogMessage.Log(LogMessage.MessageType.Failure, ref response); return response; } else LogMessage.Log(LogMessage.MessageType.Success, ref response); // Update PSU psu.psuFwUpdateResponse = this.TestChannelContext.UpdatePSUFirmware(psu.index, psu.psuFwFilePath, psu.primaryImage); LogMessage.Message = string.Format( "{0}: Psu {1} returned completion code {2} and status description {3}", this.currentApi, psu.index, psu.psuFwUpdateResponse.completionCode, psu.psuFwUpdateResponse.statusDescription); if (psu.psuFwUpdateResponse.completionCode != CompletionCode.Success) { LogMessage.Log(LogMessage.MessageType.Failure, ref response); return response; } else LogMessage.Log(LogMessage.MessageType.Success, ref response); // Sleep for 1 minute LogMessage.Message = "Thread sleeping for 1 minutes..."; LogMessage.Log(LogMessage.MessageType.Info, ref response); Thread.Sleep(TimeSpan.FromMinutes(1)); // Check Psu Power Output is 0 using GetChassisHealth ChassisHealthResponse getChassisHealthResponse = new ChassisHealthResponse(); getChassisHealthResponse = this.TestChannelContext.GetChassisHealth(false, true, false, false); PsuInfo psuHealth = getChassisHealthResponse.psuInfoCollection .FirstOrDefault(x => x.id == psu.index); LogMessage.Message = string.Format( "{0}: GetChassisHealth for Psu {1} - completionCode {2} and powerOut {3}", this.currentApi, psuHealth.id, getChassisHealthResponse.completionCode, psuHealth.powerOut); if (getChassisHealthResponse.completionCode == CompletionCode.Success && psuHealth.powerOut == 0) LogMessage.Log(LogMessage.MessageType.Success, ref response); else LogMessage.Log(LogMessage.MessageType.Failure, ref response); testCase.LogPassOrFail(ref response, this.currentApi); return response; }
private TestResponse InvalidRequestForInvalidPassThroughSetBladeMezzPassThroughMode(int bladeId) { TestCase testCase = new TestCase("InvalidRequestForInvalidPassThroughSetBladeMezzPassThroughMode", 24197); CmTestLog.Info(string.Format( "\n !!!!!!Verifying {0} Returns Status Description InvalidRequest for Invalid PassThroughModeEnabled. WorkItemId: {1}!!!!!!", this.currentApi, testCase.WorkItemId)); TestResponse response = new TestResponse(); BladeResponse setBladeMezzResponse = new BladeResponse(); this.TestChannelContext = this.ListTestChannelContexts[(int)WCSSecurityRole.WcsCmAdmin]; Dictionary<string, string> InvalidPassThroughModeEnabled = new Dictionary<string, string>(); InvalidPassThroughModeEnabled.Add("min64", "-9223372036854775808"); InvalidPassThroughModeEnabled.Add("max64", "9223372036854775807"); InvalidPassThroughModeEnabled.Add("invalidString", "abc123_!&"); InvalidPassThroughModeEnabled.Add("emptyString", string.Empty); InvalidPassThroughModeEnabled.Add("invalidTrue1", "ttrue"); InvalidPassThroughModeEnabled.Add("invalidTrue2", "frue"); InvalidPassThroughModeEnabled.Add("invalidFalse1", "ffalse"); InvalidPassThroughModeEnabled.Add("invalidFalse2", "fazse"); InvalidPassThroughModeEnabled.Add("nullString", null); // test SetBladeMezzPassThroughMode passThroughModeEnabled parameter for each invalid value foreach (string invalidValue in InvalidPassThroughModeEnabled.Values) { setBladeMezzResponse = this.TestChannelContext.SetBladeMezzPassThroughMode(bladeId, invalidValue); LogMessage.Message = string.Format( "{0}: Command returns completion code {1} and status description {2} for invalid passThroughModeEnabled {3} for bladeId {4}", currentApi, setBladeMezzResponse.completionCode, setBladeMezzResponse.statusDescription, invalidValue, bladeId); if (setBladeMezzResponse.completionCode == CompletionCode.Failure && setBladeMezzResponse.statusDescription == "Invalid Request") LogMessage.Log(LogMessage.MessageType.Success, ref response); else LogMessage.Log(LogMessage.MessageType.Failure, ref response); } testCase.LogPassOrFail(ref response, currentApi); return response; }
private TestResponse InvalidPsuFwFileUpdateFailForUpdatePsuFirmware() { // Change test case Id and fwFilePath if testing Les or Non-Les Psus int testCaseId = -1; string fwFilePath; if (lesPsusInChassis == "1") // currently testing LES PSU { testCaseId = 22896; fwFilePath = this.secLesFwFilePath; } else { testCaseId = 22909; fwFilePath = this.secNonLesFwFilePath; } TestCase testCase = new TestCase("InvalidPsuFwFileUpdateFailForUpdatePsuFirmware", testCaseId); CmTestLog.Info(string.Format( "\n !!!!!!Verifying {0} Fails Update for Invalid Psu Fw File. WorkItemId: {1}!!!!!!", this.currentApi, testCase.WorkItemId)); TestResponse response = new TestResponse(); // Get random valid Psu Id int[] psuIds = null; if (!ReturnSingleOrMultipleRandomPsus(1, ref psuIds, ref response)) return response; UpdatePsu psu = new UpdatePsu(psuIds[0], fwFilePath, primaryImage); // Run test case using WcsCmAdmin this.TestChannelContext = this.ListTestChannelContexts[(int)WCSSecurityRole.WcsCmAdmin]; psu.psuFwStatus = this.TestChannelContext.GetPSUFirmwareStatus(psu.index); LogMessage.Message = string.Format( "{0}: GetPsuFirmwareStatus for PSU {1} before update - fwRevision: {2} completionCode: {3} fwUpdateStatus: {4} fwUpdateStage: {5}", this.currentApi, psu.index, psu.psuFwStatus.fwRevision, psu.psuFwStatus.completionCode, psu.psuFwStatus.fwUpdateStatus, psu.psuFwStatus.fwUpdateStage); // Verify PSU is available for update if (psu.psuFwStatus.completionCode != CompletionCode.Success || psu.psuFwStatus.fwUpdateStatus == "InProgress") { LogMessage.Log(LogMessage.MessageType.Failure, ref response); return response; } else LogMessage.Log(LogMessage.MessageType.Success, ref response); // Update Psu with secondary fw image and true value for primaryImage psu.psuFwUpdateResponse = this.TestChannelContext.UpdatePSUFirmware(psu.index, psu.psuFwFilePath, primaryImage); LogMessage.Message = string.Format( "{0}: Psu {1} returned completion code {2} and status description {3}", this.currentApi, psu.index, psu.psuFwUpdateResponse.completionCode, psu.psuFwUpdateResponse.statusDescription); if (psu.psuFwUpdateResponse.completionCode != CompletionCode.Success) { LogMessage.Log(LogMessage.MessageType.Failure, ref response); return response; } else LogMessage.Log(LogMessage.MessageType.Success, ref response); // Sleep for 5 minutes LogMessage.Message = "Thread sleeping for 5 minutes..."; LogMessage.Log(LogMessage.MessageType.Info, ref response); Thread.Sleep(TimeSpan.FromMinutes(5)); // Verify Psu Fw Update has failed psu.psuFwStatus = this.TestChannelContext.GetPSUFirmwareStatus(psu.index); LogMessage.Message = string.Format( "{0}: GetPsuFirmwareStatus for PSU {1} - fwRevision: {2} completionCode: {3} fwUpdateStatus: {4} fwUpdateStage: {5}", this.currentApi, psu.index, psu.psuFwStatus.fwRevision, psu.psuFwStatus.completionCode, psu.psuFwStatus.fwUpdateStatus, psu.psuFwStatus.fwUpdateStage); if (psu.psuFwStatus.completionCode == CompletionCode.Success && psu.psuFwStatus.fwUpdateStatus == "Failed" && psu.psuFwStatus.fwUpdateStage == "SendModelId") LogMessage.Log(LogMessage.MessageType.Success, ref response); else { LogMessage.Log(LogMessage.MessageType.Failure, ref response); return response; } // Update Psu with invalid psu image and true value for primaryImage string invalidFwFilePath = ConfigurationManager.AppSettings["InvalidPsuFwFilePath"].ToString(); psu.psuFwUpdateResponse = this.TestChannelContext.UpdatePSUFirmware(psu.index, invalidFwFilePath, primaryImage); LogMessage.Message = string.Format( "{0}: Psu {1} returned completion code {2} and status description {3}", this.currentApi, psu.index, psu.psuFwUpdateResponse.completionCode, psu.psuFwUpdateResponse.statusDescription); if (psu.psuFwUpdateResponse.completionCode != CompletionCode.Success) { LogMessage.Log(LogMessage.MessageType.Failure, ref response); return response; } else LogMessage.Log(LogMessage.MessageType.Success, ref response); // Sleep for 5 minutes LogMessage.Message = "Thread sleeping for 5 minutes..."; LogMessage.Log(LogMessage.MessageType.Info, ref response); Thread.Sleep(TimeSpan.FromMinutes(5)); // Verify Psu Fw Update has failed psu.psuFwStatus = this.TestChannelContext.GetPSUFirmwareStatus(psu.index); LogMessage.Message = string.Format( "{0}: GetPsuFirmwareStatus for PSU {1} - fwRevision: {2} completionCode: {3} fwUpdateStatus: {4} fwUpdateStage: {5}", this.currentApi, psu.index, psu.psuFwStatus.fwRevision, psu.psuFwStatus.completionCode, psu.psuFwStatus.fwUpdateStatus, psu.psuFwStatus.fwUpdateStage); if (psu.psuFwStatus.completionCode == CompletionCode.Success && psu.psuFwStatus.fwUpdateStatus == "Failed" && psu.psuFwStatus.fwUpdateStage == "ExtractModelId") LogMessage.Log(LogMessage.MessageType.Success, ref response); else { LogMessage.Log(LogMessage.MessageType.Failure, ref response); return response; } testCase.LogPassOrFail(ref response, this.currentApi); return response; }
private TestResponse ParameterOutOfRangePsuIdGetPsuFirmwareStatus() { TestCase testCase = new TestCase("ParameterOutOfRangePsuIdGetPsuFirmwareStatus", 22804); CmTestLog.Info(string.Format( "\n !!!!!!Verifying {0} Returns ParameterOutOfRange for Invalid PsuId. WorkItemId: {1}!!!!!!", this.currentApi, testCase.WorkItemId)); TestResponse response = new TestResponse(); PsuFirmwareStatus getPsuFwResponse = new PsuFirmwareStatus(); this.TestChannelContext = this.ListTestChannelContexts[(int)WCSSecurityRole.WcsCmAdmin]; foreach (int invalidValue in Enum.GetValues(typeof(InvalidPsuId))) { getPsuFwResponse = this.TestChannelContext.GetPSUFirmwareStatus(invalidValue); LogMessage.Message = string.Format( "{0}: Command returns completion code {1} for invalid Psu Id {2}", this.currentApi, getPsuFwResponse.completionCode, invalidValue); if (getPsuFwResponse.completionCode != CompletionCode.ParameterOutOfRange) LogMessage.Log(LogMessage.MessageType.Failure, ref response); else LogMessage.Log(LogMessage.MessageType.Success, ref response); } testCase.LogPassOrFail(ref response, currentApi); return response; }
private TestResponse CommandNotValidJBODGetBladeMezzPassThroughMode(int bladeId) { TestCase testCase = new TestCase("CommandNotValidJBODGetBladeMezzPassThroughMode", 24167); CmTestLog.Info(string.Format("\n !!!!!!Verifying {0} Returns CommandNotValidForBlade for JBOD. WorkItemId: {1}!!!!!!", this.currentApi, testCase.WorkItemId)); TestResponse response = new TestResponse(); BladeMezzPassThroughModeResponse getBladeMezzResponse = new BladeMezzPassThroughModeResponse(); this.TestChannelContext = this.ListTestChannelContexts[(int)WCSSecurityRole.WcsCmAdmin]; // Call API and verify CommandNotValidForBlade getBladeMezzResponse = this.TestChannelContext.GetBladeMezzPassThroughMode(bladeId); LogMessage.Message = string.Format( "{0}: Command for JBOD location returned completion code {1} and blade Id {2}", this.currentApi, getBladeMezzResponse.completionCode, bladeId); if (getBladeMezzResponse.completionCode != CompletionCode.CommandNotValidForBlade) LogMessage.Log(LogMessage.MessageType.Failure, ref response); else LogMessage.Log(LogMessage.MessageType.Success, ref response); testCase.LogPassOrFail(ref response, this.currentApi); return response; }
private TestResponse CorrectFruContentForGetBladeMezzAssetInfo(int bladeId) { TestCase testCase = new TestCase("CorrectFruContentForGetBladeMezzAssetInfo", 27202); CmTestLog.Info(string.Format("\n !!!!!!Verifying {0} Returns Correct Fru Information. WorkItemId: {1}!!!!!!", this.currentApi, testCase.WorkItemId)); TestResponse response = new TestResponse(); BladeMessAssetInfoResponse getMezzAssetResponse = new BladeMessAssetInfoResponse(); this.TestChannelContext = this.ListTestChannelContexts[(int)WCSSecurityRole.WcsCmAdmin]; // Call API and verify FRU output is correct getMezzAssetResponse = this.TestChannelContext.GetBladeMezzAssetInfo(bladeId); VerifyMezzFruContent(getMezzAssetResponse, ref response); testCase.LogPassOrFail(ref response, this.currentApi); return response; }
private TestResponse VerifySuccessWithCapitalizationOfPassThroughSetBladeMezzPassThroughMode(int bladeId) { TestCase testCase = new TestCase("VerifySuccessWithCapitalizationOfPassThroughSetBladeMezzPassThroughMode", 24201); CmTestLog.Info(string.Format( "\n !!!!!!Verifying {0} Returns Completion Code Success for PassThroughModeEnabled With Capitalization. WorkItemIds: 24200 and {1}!!!!!!", this.currentApi, testCase.WorkItemId)); TestResponse response = new TestResponse(); BladeResponse setBladeMezzResponse = new BladeResponse(); this.TestChannelContext = this.ListTestChannelContexts[(int)WCSSecurityRole.WcsCmAdmin]; Dictionary<string, string> CapitalizedPassThroughModeEnabled = new Dictionary<string, string>(); CapitalizedPassThroughModeEnabled.Add("Value1", "true"); CapitalizedPassThroughModeEnabled.Add("Value2", "false"); CapitalizedPassThroughModeEnabled.Add("Value3", "TRUE"); CapitalizedPassThroughModeEnabled.Add("Value4", "FALSE"); CapitalizedPassThroughModeEnabled.Add("Value5", "tRue"); CapitalizedPassThroughModeEnabled.Add("Value6", "faLse"); foreach (string capitalizedValue in CapitalizedPassThroughModeEnabled.Values) { setBladeMezzResponse = this.TestChannelContext.SetBladeMezzPassThroughMode(bladeId, capitalizedValue); LogMessage.Message = string.Format( "{0}: Command returned Completion Code {1} for PassThroughModeEnabled value {2} for blade Id {3}", this.currentApi, setBladeMezzResponse.completionCode, capitalizedValue, bladeId); if (setBladeMezzResponse.completionCode != CompletionCode.Success) LogMessage.Log(LogMessage.MessageType.Failure, ref response); else LogMessage.Log(LogMessage.MessageType.Success, ref response); } testCase.LogPassOrFail(ref response, currentApi); return response; }
private TestResponse AllGroupsCanExecuteGetBladeMezzPassThroughMode(int bladeId) { TestCase testCase = new TestCase("AllGroupsCanExecuteGetBladeMezzPassThroughMode", 24166); CmTestLog.Info(string.Format("\n !!!!!!Verifying {0} Can Be Executed By All Users. WorkItemId: {1}.!!!!!!", this.currentApi, testCase.WorkItemId)); TestResponse response = new TestResponse(); // Loop through different user types foreach (WCSSecurityRole roleId in Enum.GetValues(typeof(WCSSecurityRole))) { BladeMezzPassThroughModeResponse getBladeMezzResponse = new BladeMezzPassThroughModeResponse(); // Use different user context this.TestChannelContext = this.ListTestChannelContexts[(int)roleId]; // Get Pass Through Mode and verify getBladeMezzResponse = this.TestChannelContext.GetBladeMezzPassThroughMode(bladeId); LogMessage.Message = string.Format( "{0}: Command returned completion code {1} for user {2} and blade Id {3}", this.currentApi, getBladeMezzResponse.completionCode, Enum.GetName(typeof(WCSSecurityRole), roleId), bladeId); if (getBladeMezzResponse.completionCode != CompletionCode.Success) LogMessage.Log(LogMessage.MessageType.Failure, ref response); else LogMessage.Log(LogMessage.MessageType.Success, ref response); } testCase.LogPassOrFail(ref response, this.currentApi); return response; }
private TestResponse TrueAfterRestartGetBladeMezzPassThroughMode(int bladeId) { TestCase testCase = new TestCase("TrueAfterRestartGetBladeMezzPassThroughMode", 24181); CmTestLog.Info(string.Format( "\n !!!!!!Verifying {0} Returns Correct Pass-ThroughMode After Restarting Blade. WorkItemId: {1}!!!!!!", this.currentApi, testCase.WorkItemId)); TestResponse response = new TestResponse(); BladeResponse setBladeActivePowerCycleResponse = new BladeResponse(); BladeStateResponse getBladeStateResponse = new BladeStateResponse(); this.TestChannelContext = this.ListTestChannelContexts[(int)WCSSecurityRole.WcsCmAdmin]; // Restart blade setBladeActivePowerCycleResponse = this.TestChannelContext.SetBladeActivePowerCycle(bladeId, Convert.ToInt32(CmConstants.OffTimeSec)); if (setBladeActivePowerCycleResponse.completionCode != CompletionCode.Success) { LogMessage.Message = string.Format( "{0}: Failed to restart blade {1} with completion code {2}", this.currentApi, bladeId, setBladeActivePowerCycleResponse.completionCode); LogMessage.Log(LogMessage.MessageType.Failure, ref response); } // Sleep Thread for 2 minutes 30 seconds CmTestLog.Info(string.Format("Thread sleeping for {0} seconds...", TimeSpan.FromSeconds(150))); Thread.Sleep(TimeSpan.FromSeconds(150)); // Verify blade soft-powered on getBladeStateResponse = this.TestChannelContext.GetBladeState(bladeId); if (getBladeStateResponse.completionCode != CompletionCode.Success || getBladeStateResponse.bladeState != PowerState.ON) { LogMessage.Message = string.Format( "{0}: Blade {1} did not soft-power ON", this.currentApi, bladeId); LogMessage.Log(LogMessage.MessageType.Failure, ref response); } else { CallAndVerifyGetBladeMezzPassThroughMode(bladeId, ref response, "true"); } testCase.LogPassOrFail(ref response, currentApi); return response; }
private TestResponse ParameterOutOfRangeBladeIdSetBladeMezzPassThroughMode() { TestCase testCase = new TestCase("ParameterOutOfRangeBladeIdSetBladeMezzPassThroughMode", 24178); CmTestLog.Info(string.Format( "\n !!!!!!Verifying {0} Returns ParameterOutOfRange for Invalid BladeId. WorkItemId: {1}!!!!!!", this.currentApi, testCase.WorkItemId)); TestResponse response = new TestResponse(); BladeResponse setBladeMezzResponse = new BladeResponse(); this.TestChannelContext = this.ListTestChannelContexts[(int)WCSSecurityRole.WcsCmAdmin]; foreach (int invalidValue in Enum.GetValues(typeof(InvalidBladeId))) { setBladeMezzResponse = this.TestChannelContext.SetBladeMezzPassThroughMode(invalidValue, "true"); LogMessage.Message = string.Format( "{0}: Command returns completion code {1} for invalid blade Id {2}", this.currentApi, setBladeMezzResponse.completionCode, invalidValue); if (setBladeMezzResponse.completionCode != CompletionCode.ParameterOutOfRange) LogMessage.Log(LogMessage.MessageType.Failure, ref response); else LogMessage.Log(LogMessage.MessageType.Success, ref response); } testCase.LogPassOrFail(ref response, currentApi); return response; }
private TestResponse OnlyAdminCanExecuteSetBladeMezzPassThroughMode(int bladeId) { TestCase testCase = new TestCase("OnlyAdminCanExecuteSetBladeMezzPassThroughMode", 24171); CmTestLog.Info(string.Format( "\n !!!!!!Verifying {0} Can Only Be Executed By WcsCmAdmin Users. WorkItemId: {1}!!!!!!", this.currentApi, testCase.WorkItemId)); TestResponse response = new TestResponse(); BladeResponse setBladeMezzResponse = new BladeResponse(); // Loop through different user types foreach (WCSSecurityRole roleId in Enum.GetValues(typeof(WCSSecurityRole))) { this.TestChannelContext = this.ListTestChannelContexts[(int)roleId]; try { setBladeMezzResponse = this.TestChannelContext.SetBladeMezzPassThroughMode(bladeId, "true"); LogMessage.Message = string.Format( "{0}: Command returns completion code {1} for user {2} for blade Id {3}", currentApi, setBladeMezzResponse.completionCode, Enum.GetName(typeof(WCSSecurityRole), roleId), bladeId); if (setBladeMezzResponse.completionCode == CompletionCode.Success && roleId == WCSSecurityRole.WcsCmAdmin) LogMessage.Log(LogMessage.MessageType.Success, ref response); else LogMessage.Log(LogMessage.MessageType.Failure, ref response); } catch (Exception ex) { // Check error is due to permission HTTP 400 unauthorize if (ex.Message.Contains("400")) { // Check if 400 error due to WcsAdmin (fail) LogMessage.Message = string.Format("{0}: Command returned Bad Request for user {1} for bladeId {2}", currentApi, Enum.GetName(typeof(WCSSecurityRole), roleId), bladeId); if (roleId != WCSSecurityRole.WcsCmAdmin) LogMessage.Log(LogMessage.MessageType.Success, ref response); else LogMessage.Log(LogMessage.MessageType.Failure, ref response); } else { ChassisManagerTestHelper.IsTrue(false, "Exception: " + ex.Message); response.Result = false; response.ResultDescription.Append(ex.Message); } } } testCase.LogPassOrFail(ref response, currentApi); return response; }
private TestResponse AllGroupsCanExecuteGetPsuFirmwareStatus() { TestCase testCase = new TestCase("AllGroupsCanExecuteGetPsuFirmwareStatus", 22696); CmTestLog.Info(string.Format("\n !!!!!!Verifying {0} Can Be Executed By All Users. WorkItemId: {1}.!!!!!!", this.currentApi, testCase.WorkItemId)); TestResponse response = new TestResponse(); // Get random Psu int[] psuIds = null; if (!ReturnSingleOrMultipleRandomPsus(1, ref psuIds, ref response)) return response; UpdatePsu psu = new UpdatePsu(psuIds[0]); // Loop through different user types foreach (WCSSecurityRole roleId in Enum.GetValues(typeof(WCSSecurityRole))) { // Use different user context this.TestChannelContext = this.ListTestChannelContexts[(int)roleId]; // Get Pass Through Mode and verify psu.psuFwStatus = this.TestChannelContext.GetPSUFirmwareStatus(psu.index); LogMessage.Message = string.Format( "{0}: Command returned completion code {1} for user {2} and psu Id {3}", this.currentApi, psu.psuFwStatus.completionCode, Enum.GetName(typeof(WCSSecurityRole), roleId), psu.index); if (psu.psuFwStatus.completionCode != CompletionCode.Success) LogMessage.Log(LogMessage.MessageType.Failure, ref response); else LogMessage.Log(LogMessage.MessageType.Success, ref response); // Verify Correct psuId returned by GetPsuFirmwareStatus LogMessage.Message = string.Format( "{0}: Command returned psu Id {0} for expected psu Id {1}", this.currentApi, psu.psuFwStatus.id, psu.index); if (psu.psuFwStatus.id != psu.index) LogMessage.Log(LogMessage.MessageType.Failure, ref response); else LogMessage.Log(LogMessage.MessageType.Success, ref response); } testCase.LogPassOrFail(ref response, this.currentApi); return response; }
private TestResponse CorrectModeAfterToggleGetBladeMezzPassThroughMode(int bladeId) { TestCase testCase = new TestCase("CorrectModeAfterToggleGetBladeMezzPassThroughMode", 24180); CmTestLog.Info(string.Format( "\n !!!!!!Verifying {0} Returns Correct Pass-ThroughMode After Toggling SetBladeMezzPassThroughMode. WorkItemId: {1}!!!!!!", this.currentApi, testCase.WorkItemId)); TestResponse response = new TestResponse(); this.TestChannelContext = this.ListTestChannelContexts[(int)WCSSecurityRole.WcsCmAdmin]; CallAndVerifySetBladeMezzPassThroughMode(bladeId, ref response, "true"); CallAndVerifyGetBladeMezzPassThroughMode(bladeId, ref response, "true"); CallAndVerifyGetBladeMezzPassThroughMode(bladeId, ref response, "true"); CallAndVerifySetBladeMezzPassThroughMode(bladeId, ref response, "false"); CallAndVerifyGetBladeMezzPassThroughMode(bladeId, ref response, "false"); CallAndVerifyGetBladeMezzPassThroughMode(bladeId, ref response, "false"); CallAndVerifySetBladeMezzPassThroughMode(bladeId, ref response, "true"); CallAndVerifyGetBladeMezzPassThroughMode(bladeId, ref response, "true"); CallAndVerifySetBladeMezzPassThroughMode(bladeId, ref response, "true"); CallAndVerifyGetBladeMezzPassThroughMode(bladeId, ref response, "true"); CallAndVerifySetBladeMezzPassThroughMode(bladeId, ref response, "false"); CallAndVerifyGetBladeMezzPassThroughMode(bladeId, ref response, "false"); CallAndVerifySetBladeMezzPassThroughMode(bladeId, ref response, "false"); CallAndVerifyGetBladeMezzPassThroughMode(bladeId, ref response, "false"); testCase.LogPassOrFail(ref response, currentApi); return response; }
private TestResponse ForceEmersonPsuFwUpdateAfterCmServiceRestartForUpdatePsuFirmware() { // Change test case Id and fwFilePath if testing Les or Non-Les Psus int testCaseId = -1; string fwFilePath; if (lesPsusInChassis == "1") // currently testing LES PSU { testCaseId = 22934; fwFilePath = this.priLesFwFilePath; } else { testCaseId = 22935; fwFilePath = this.priNonLesFwFilePath; } TestCase testCase = new TestCase("ForceEmersonPsuFwUpdateAfterCmServiceRestartForUpdatePsuFirmware", testCaseId); CmTestLog.Info(string.Format( "\n !!!!!!Verifying {0} Requires ForceEmersonPsu App Config Key for Psu Fw Update After CM Service Restart. WorkItemId: {1}!!!!!!", this.currentApi, testCase.WorkItemId)); TestResponse response = new TestResponse(); // Get random valid Psu Id int[] psuIds = null; if (!ReturnSingleOrMultipleRandomPsus(1, ref psuIds, ref response)) return response; UpdatePsu psu = new UpdatePsu(psuIds[0], fwFilePath, primaryImage); // Initialize FRU Writes Remaining Dictionary KeyValue Pair Dictionary<string, string> forceEmersonPsuKeyValue = new Dictionary<string, string> { {"ForceEmersonPsu", "0"} }; // configure app.config and restart CM ConfigureAppConfig(forceEmersonPsuKeyValue, false); RestartCmService(this.currentApi); // Run test case using WcsCmAdmin this.TestChannelContext = this.ListTestChannelContexts[(int)WCSSecurityRole.WcsCmAdmin]; psu.psuFwStatus = this.TestChannelContext.GetPSUFirmwareStatus(psu.index); LogMessage.Message = string.Format( "{0}: GetPsuFirmwareStatus for PSU {1} before update - fwRevision: {2} completionCode: {3} fwUpdateStatus: {4} fwUpdateStage: {5}", this.currentApi, psu.index, psu.psuFwStatus.fwRevision, psu.psuFwStatus.completionCode, psu.psuFwStatus.fwUpdateStatus, psu.psuFwStatus.fwUpdateStage); // Verify PSU is available for update if (psu.psuFwStatus.completionCode != CompletionCode.Success || psu.psuFwStatus.fwUpdateStatus == "InProgress") { LogMessage.Log(LogMessage.MessageType.Failure, ref response); return response; } else LogMessage.Log(LogMessage.MessageType.Success, ref response); // Update PSU psu.psuFwUpdateResponse = this.TestChannelContext.UpdatePSUFirmware(psu.index, psu.psuFwFilePath, psu.primaryImage); LogMessage.Message = string.Format( "{0}: Psu {1} returned completion code {2} and status description {3}", this.currentApi, psu.index, psu.psuFwUpdateResponse.completionCode, psu.psuFwUpdateResponse.statusDescription); if (psu.psuFwUpdateResponse.completionCode != CompletionCode.Success) { LogMessage.Log(LogMessage.MessageType.Failure, ref response); return response; } else LogMessage.Log(LogMessage.MessageType.Success, ref response); // Sleep for 5 minutes LogMessage.Message = "Thread sleeping for 5 minutes..."; LogMessage.Log(LogMessage.MessageType.Info, ref response); Thread.Sleep(TimeSpan.FromMinutes(5)); // Restart CM Service LogMessage.Message = "Restarting CM Service"; LogMessage.Log(LogMessage.MessageType.Info, ref response); RestartCmService(this.currentApi); // Verify Psu Fw Update has failed psu.psuFwUpdateResponse = this.TestChannelContext.UpdatePSUFirmware(psu.index, psu.psuFwFilePath, psu.primaryImage); LogMessage.Message = string.Format( "{0}: Psu {1} returned completion code {2} and status description {3}", this.currentApi, psu.index, psu.psuFwUpdateResponse.completionCode, psu.psuFwUpdateResponse.statusDescription); if (psu.psuFwUpdateResponse.completionCode == CompletionCode.Failure && psu.psuFwUpdateResponse.statusDescription == "UpdatePSUFirmware() only supported on Emerson PSU.") LogMessage.Log(LogMessage.MessageType.Success, ref response); else { LogMessage.Log(LogMessage.MessageType.Failure, ref response); return response; } // Configure ForceEmersonPsu App Config Key forceEmersonPsuKeyValue["ForceEmersonPsu"] = "1"; ConfigureAppConfig(forceEmersonPsuKeyValue, false); RestartCmService(this.currentApi); // Verify ForceEmersonPsu allows for successful Psu Fw Update List<UpdatePsu> psuList = new List<UpdatePsu>(); psuList.Add(psu); VerifyPsuFwUpdate(ref psuList, ref response); // Code Clean-Up: restore App.Config in CM ConfigureAppConfig(null, true); testCase.LogPassOrFail(ref response, this.currentApi); return response; }
private TestResponse DevicePoweredOffForHardOffGetBladeMezzAssetInfo(int bladeId) { TestCase testCase = new TestCase("FailureForHardOffGetBladeMezzAssetInfo", 27452); CmTestLog.Info(string.Format( "\n !!!!!!Verifying {0} Returns DevicePoweredOff for Server Blade Hard-Powered Off. WorkItemId: {1}!!!!!!", this.currentApi, testCase.WorkItemId)); TestResponse response = new TestResponse(); BladeMessAssetInfoResponse getMezzAssetResponse = new BladeMessAssetInfoResponse(); this.TestChannelContext = this.ListTestChannelContexts[(int)WCSSecurityRole.WcsCmAdmin]; // Hard-Power Off server blade BladeResponse bladeResponse = this.TestChannelContext.SetPowerOff(bladeId); if (bladeResponse.completionCode != CompletionCode.Success) { LogMessage.Message = string.Format( "{0}: Unable to hard-power Off server blade {1}", this.currentApi, bladeId); LogMessage.Log(LogMessage.MessageType.Failure, ref response); } else { CmTestLog.Info(string.Format("Hard-powered Off blade {0}. Thread sleeping for {1} seconds...", bladeId, CmConstants.BladePowerOffSeconds)); Thread.Sleep(TimeSpan.FromSeconds(CmConstants.BladePowerOffSeconds)); // Call API and verify DevicePoweredOff getMezzAssetResponse = this.TestChannelContext.GetBladeMezzAssetInfo(bladeId); LogMessage.Message = string.Format( "{0}: Command returns completion code {1} after blade {2} is hard-powered Off", this.currentApi, getMezzAssetResponse.completionCode, bladeId); if (getMezzAssetResponse.completionCode != CompletionCode.DevicePoweredOff) LogMessage.Log(LogMessage.MessageType.Failure, ref response); else LogMessage.Log(LogMessage.MessageType.Success, ref response); } // Test CleanUp: Hard-Power On and Soft-Power On Blade bladeResponse = this.TestChannelContext.SetPowerOn(bladeId); if (bladeResponse.completionCode != CompletionCode.Success) { LogMessage.Message = string.Format( "{0}: Unable to hard-power On server blade {1}", this.currentApi, bladeId); LogMessage.Log(LogMessage.MessageType.Failure, ref response); return response; } CmTestLog.Info(string.Format("Hard-powered On blade {0}. Thread sleeping for {1} seconds...", bladeId, CmConstants.BladePowerOnSeconds)); Thread.Sleep(TimeSpan.FromSeconds(CmConstants.BladePowerOnSeconds)); bladeResponse = this.TestChannelContext.SetBladeOn(bladeId); if (bladeResponse.completionCode != CompletionCode.Success) { LogMessage.Message = string.Format( "{0}: Unable to soft-power on server blade {1}", this.currentApi, bladeId); LogMessage.Log(LogMessage.MessageType.Failure, ref response); return response; } CmTestLog.Info(string.Format("Soft-powered on blade {0}. Thread sleeping for {1} seconds...", bladeId, CmConstants.BladePowerOnSeconds)); Thread.Sleep(TimeSpan.FromSeconds(CmConstants.BladePowerOnSeconds)); testCase.LogPassOrFail(ref response, this.currentApi); return response; }
private TestResponse OnlyAdminCanExecuteUpdatePsuFirmware() { TestCase testCase = new TestCase("OnlyAdminCanExecuteUpdatePsuFirmware", 22713); CmTestLog.Info(string.Format( "\n !!!!!!Verifying {0} Can Only Be Executed By WcsCmAdmin Users. WorkItemId: {1}!!!!!!", this.currentApi, testCase.WorkItemId)); TestResponse response = new TestResponse(); // Get random Psu int[] psuIds = null; if (!ReturnSingleOrMultipleRandomPsus(1, ref psuIds, ref response)) return response; UpdatePsu psu = new UpdatePsu(psuIds[0]); // Loop through different user types foreach (WCSSecurityRole roleId in Enum.GetValues(typeof(WCSSecurityRole))) { this.TestChannelContext = this.ListTestChannelContexts[(int)roleId]; try { string fwFilePath = lesPsusInChassis == "1" ? priLesFwFilePath : priNonLesFwFilePath; psu.psuFwUpdateResponse = this.TestChannelContext.UpdatePSUFirmware(psu.index, fwFilePath, primaryImage); LogMessage.Message = string.Format( "{0}: Command returns completion code {1} for user {2} for psu Id {3}", currentApi, psu.psuFwUpdateResponse.completionCode, Enum.GetName(typeof(WCSSecurityRole), roleId), psu.index); if (psu.psuFwUpdateResponse.completionCode == CompletionCode.Success && roleId == WCSSecurityRole.WcsCmAdmin) LogMessage.Log(LogMessage.MessageType.Success, ref response); else LogMessage.Log(LogMessage.MessageType.Failure, ref response); } catch (Exception ex) { // Check error is due to permission HTTP 400 unauthorize if (ex.Message.Contains("400")) { // Check if 400 error due to WcsAdmin (fail) LogMessage.Message = string.Format("{0}: Command returned Bad Request for user {1} for psuId {2}", currentApi, Enum.GetName(typeof(WCSSecurityRole), roleId), psu.index); if (roleId != WCSSecurityRole.WcsCmAdmin) LogMessage.Log(LogMessage.MessageType.Success, ref response); else LogMessage.Log(LogMessage.MessageType.Failure, ref response); } else { ChassisManagerTestHelper.IsTrue(false, "Exception: " + ex.Message); response.Result = false; response.ResultDescription.Append(ex.Message); } } } testCase.LogPassOrFail(ref response, currentApi); return response; }
private TestResponse FailureForEmptySetBladeMezzPassThroughMode(int bladeId) { TestCase testCase = new TestCase("FailureForEmptySetBladeMezzPassThroughMode", 24169); CmTestLog.Info(string.Format("\n !!!!!!Verifying {0} Returns Failure for Empty Location. WorkItemId: {1}!!!!!!", this.currentApi, testCase.WorkItemId)); TestResponse response = new TestResponse(); BladeResponse setBladeMezzResponse = new BladeResponse(); this.TestChannelContext = this.ListTestChannelContexts[(int)WCSSecurityRole.WcsCmAdmin]; // Call API and verify Failure setBladeMezzResponse = this.TestChannelContext.SetBladeMezzPassThroughMode(bladeId, "true"); LogMessage.Message = string.Format( "{0}: Command failed for empty location with completion code {1} and blade Id {2}", this.currentApi, setBladeMezzResponse.completionCode, bladeId); if (setBladeMezzResponse.completionCode != CompletionCode.Failure) LogMessage.Log(LogMessage.MessageType.Failure, ref response); else LogMessage.Log(LogMessage.MessageType.Success, ref response); testCase.LogPassOrFail(ref response, currentApi); return response; }
private TestResponse ParameterOutOfRangePsuIdUpdatePsuFirmware() { TestCase testCase = new TestCase("ParameterOutOfRangePsuIdUpdatePsuFirmware", 22773); CmTestLog.Info(string.Format( "\n !!!!!!Verifying {0} Returns ParameterOutOfRange for Invalid PsuId. WorkItemId: {1}!!!!!!", this.currentApi, testCase.WorkItemId)); TestResponse response = new TestResponse(); ChassisResponse updatePsuFwResponse = new ChassisResponse(); this.TestChannelContext = this.ListTestChannelContexts[(int)WCSSecurityRole.WcsCmAdmin]; string fwFilePath = lesPsusInChassis == "1" ? priLesFwFilePath : priNonLesFwFilePath; foreach (int invalidValue in Enum.GetValues(typeof(InvalidPsuId))) { updatePsuFwResponse = this.TestChannelContext.UpdatePSUFirmware(invalidValue, fwFilePath, primaryImage); LogMessage.Message = string.Format( "{0}: Command returns completion code {1} for invalid Psu Id {2}", this.currentApi, updatePsuFwResponse.completionCode, invalidValue); if (updatePsuFwResponse.completionCode != CompletionCode.ParameterOutOfRange) LogMessage.Log(LogMessage.MessageType.Failure, ref response); else LogMessage.Log(LogMessage.MessageType.Success, ref response); } testCase.LogPassOrFail(ref response, currentApi); return response; }
private TestResponse FailureForSoftOffSetBladeMezzPassThroughMode(int bladeId) { TestCase testCase = new TestCase("FailureForSoftOffSetBladeMezzPassThroughMode", 27172); CmTestLog.Info(string.Format( "\n !!!!!!Verifying {0} Returns Failure for Server Blade Soft-Powered Off. WorkItemId: {1}!!!!!!", this.currentApi, testCase.WorkItemId)); TestResponse response = new TestResponse(); BladeResponse setBladeMezzResponse = new BladeResponse(); this.TestChannelContext = this.ListTestChannelContexts[(int)WCSSecurityRole.WcsCmAdmin]; // Soft-Power Off server blade BladeResponse bladeResponse = this.TestChannelContext.SetBladeOff(bladeId); if (bladeResponse.completionCode != CompletionCode.Success) { LogMessage.Message = string.Format( "{0}: Unable to soft-power off server blade {1}", this.currentApi, bladeId); LogMessage.Log(LogMessage.MessageType.Failure, ref response); } else { CmTestLog.Info(string.Format("Hard-powered On blade {0}. Thread sleeping for {1} seconds...", bladeId, CmConstants.BladePowerOnSeconds)); Thread.Sleep(TimeSpan.FromSeconds(CmConstants.BladePowerOnSeconds)); // Call API and verify Failure setBladeMezzResponse = this.TestChannelContext.SetBladeMezzPassThroughMode(bladeId, "true"); LogMessage.Message = string.Format( "{0}: Command returns completion code {1} after blade {2} is soft-powered off", this.currentApi, setBladeMezzResponse.completionCode, bladeId); if (setBladeMezzResponse.completionCode != CompletionCode.Failure) LogMessage.Log(LogMessage.MessageType.Failure, ref response); else LogMessage.Log(LogMessage.MessageType.Success, ref response); } // Code clean-up. Soft-power on blade bladeResponse = this.TestChannelContext.SetBladeOn(bladeId); if (bladeResponse.completionCode != CompletionCode.Success) { LogMessage.Message = string.Format( "{0}: Unable to soft-power on server blade {1}", this.currentApi, bladeId); LogMessage.Log(LogMessage.MessageType.Failure, ref response); return response; } testCase.LogPassOrFail(ref response, currentApi); return response; }
private TestResponse SuccessfulMultiplePriSecFwUpdatesForUpdatePsuFirmware() { // Change test case Id and fwFilePath if testing Les or Non-Les Psus int testCaseId = -1; if (lesPsusInChassis == "1") // currently testing LES PSU testCaseId = 22765; else testCaseId = 22768; TestCase testCase = new TestCase("SuccessfulMultiplePriSecFwUpdatesForUpdatePsuFirmware", testCaseId); CmTestLog.Info(string.Format( "\n !!!!!!Verifying {0} Returns Successful Psu Fw Image Updates for Multiple Primary and Secondary Fw Psus. WorkItemId: {1}!!!!!!", this.currentApi, testCase.WorkItemId)); TestResponse response = new TestResponse(); // Get random valid Psu Ids int[] psuIds = null; if (!ReturnSingleOrMultipleRandomPsus(3, ref psuIds, ref response)) return response; // Initialize multiple UpdatePsu elements and add to psuList List<UpdatePsu> psuList = new List<UpdatePsu>(); if (lesPsusInChassis == "1") { psuList.Add(new UpdatePsu(psuIds[0], this.priLesFwFilePath, primaryImage)); psuList.Add(new UpdatePsu(psuIds[1], this.secLesFwFilePath, secondaryImage)); psuList.Add(new UpdatePsu(psuIds[2], this.priLesFwFilePath, primaryImage)); } else { psuList.Add(new UpdatePsu(psuIds[0], this.priNonLesFwFilePath, primaryImage)); psuList.Add(new UpdatePsu(psuIds[1], this.secNonLesFwFilePath, secondaryImage)); psuList.Add(new UpdatePsu(psuIds[2], this.priNonLesFwFilePath, primaryImage)); } // Verify Primary and Secondary Psu Fw Update VerifyPsuFwUpdate(ref psuList, ref response); testCase.LogPassOrFail(ref response, currentApi); return response; }
private TestResponse FruContentMatchesAfterSoftCycleForGetBladeMezzAssetInfo(int bladeId) { TestCase testCase = new TestCase("FruContentMatchesAfterSoftCycleForGetBladeMezzAssetInfo", 27450); CmTestLog.Info(string.Format("\n !!!!!!Verifying {0} Returns Same Fru Information After Soft-Power Cycle. WorkItemId: {1}!!!!!!", this.currentApi, testCase.WorkItemId)); TestResponse response = new TestResponse(); BladeMessAssetInfoResponse previousGetMezzAssetResponse = new BladeMessAssetInfoResponse(); BladeMessAssetInfoResponse currentGetMezzAssetResponse = new BladeMessAssetInfoResponse(); this.TestChannelContext = this.ListTestChannelContexts[(int)WCSSecurityRole.WcsCmAdmin]; previousGetMezzAssetResponse = this.TestChannelContext.GetBladeMezzAssetInfo(bladeId); // Soft-Power Cycle Blade BladeResponse setPowerResponse = this.TestChannelContext.SetBladeActivePowerCycle(bladeId, (int)CmConstants.OffTimeSec); LogMessage.Message = string.Format("{0}: Soft-Power Cycled Blade {1}", this.currentApi, bladeId); if (setPowerResponse.completionCode != CompletionCode.Success) { LogMessage.Log(LogMessage.MessageType.Failure, ref response); return response; } else LogMessage.Log(LogMessage.MessageType.Success, ref response); // Thread Sleep LogMessage.Message = string.Format("Blade Soft-Power Cycling. Thread sleeping for {0} seconds...", (CmConstants.BladePowerOffSeconds + CmConstants.BladePowerOnSeconds)); LogMessage.Log(LogMessage.MessageType.Info, ref response); Thread.Sleep(TimeSpan.FromSeconds(CmConstants.BladePowerOffSeconds + CmConstants.BladePowerOnSeconds)); // Get Fru Content after Soft-Power cycle currentGetMezzAssetResponse = this.TestChannelContext.GetBladeMezzAssetInfo(bladeId); LogMessage.Message = string.Format( "{0}: Command returns completionCode {1} for blade {2}", this.currentApi, currentGetMezzAssetResponse.completionCode, bladeId); if (currentGetMezzAssetResponse.completionCode != CompletionCode.Success) { LogMessage.Log(LogMessage.MessageType.Failure, ref response); return response; } else LogMessage.Log(LogMessage.MessageType.Success, ref response); // Verify Fru Contents are same as before VerifyFruStringsMatch(previousGetMezzAssetResponse.bladeNumber.ToString(), currentGetMezzAssetResponse.bladeNumber.ToString(), ref response); VerifyFruStringsMatch(previousGetMezzAssetResponse.productAreaManufactureName, currentGetMezzAssetResponse.productAreaManufactureName, ref response); VerifyFruStringsMatch(previousGetMezzAssetResponse.productAreaProductName, currentGetMezzAssetResponse.productAreaProductName, ref response); VerifyFruStringsMatch(previousGetMezzAssetResponse.productAreaPartModelNumber, currentGetMezzAssetResponse.productAreaPartModelNumber, ref response); VerifyFruStringsMatch(previousGetMezzAssetResponse.productAreaProductVersion, currentGetMezzAssetResponse.productAreaProductVersion, ref response); VerifyFruStringsMatch(previousGetMezzAssetResponse.productAreaSerialNumber, currentGetMezzAssetResponse.productAreaSerialNumber, ref response); VerifyFruStringsMatch(previousGetMezzAssetResponse.productAreaAssetTag, currentGetMezzAssetResponse.productAreaAssetTag, ref response); testCase.LogPassOrFail(ref response, this.currentApi); return response; }