/// <summary> /// Test Command: ReadChassisLogWithTimestamp. The test case verifies: /// The command returns completion code success; /// Verifies all the entries with in the time stamp /// </summary> /// <returns>True if all check-points pass; false, otherwise.</returns> public bool ReadChassisLogWithTimestamp() { CmTestLog.Start(); bool testPassed = true; ChassisLogResponse cmLogReponse = null; ChassisLogResponse CMLogReponseWithTime = null; CmTestLog.Info("!!!!!!!!! Starting execution of ReadChassisLogWithTimestampTest !!!!!!!!!"); cmLogReponse = this.Channel.ReadChassisLog(); testPassed &= ChassisManagerTestHelper.AreEqual(CompletionCode.Success, cmLogReponse.completionCode, "Received for read chassis log"); // Make sure log entries should not be more than 50 testPassed &= ChassisManagerTestHelper.IsTrue(cmLogReponse.logEntries.Count <= CmConstants.LogEntries, string.Format("Received {0} log entries", cmLogReponse.logEntries.Count)); DateTime invalidStart = DateTime.Now.AddDays(1); DateTime invalidEnd = DateTime.Now.AddDays(2); CMLogReponseWithTime = this.Channel.ReadChassisLogWithTimestamp(invalidStart, invalidEnd); testPassed &= ChassisManagerTestHelper.AreEqual(CompletionCode.Success, CMLogReponseWithTime.completionCode, "Received success for ReadChassisLogWithTimestamp"); testPassed &= ChassisManagerTestHelper.IsTrue(CMLogReponseWithTime.logEntries.Count == 0, "Received zero entries for invalid timestamp"); //need to clear the chassis log so the response is not too big ChassisResponse response = this.Channel.ClearChassisLog(); //Add couple more calls this.Channel.SetChassisAttentionLEDOn(); this.Channel.SetChassisAttentionLEDOff(); cmLogReponse = this.Channel.ReadChassisLog(); DateTime start = DateTime.Now.AddDays(-1); DateTime end = DateTime.Now.AddDays(1); CMLogReponseWithTime = this.Channel.ReadChassisLogWithTimestamp(start, end); testPassed &= ChassisManagerTestHelper.AreEqual(CompletionCode.Success, CMLogReponseWithTime.completionCode, "Received success for ReadChassisLogWithTimestamp"); testPassed &= ChassisManagerTestHelper.IsTrue(cmLogReponse.logEntries[1].eventTime > start, "Log entires start time"); testPassed &= ChassisManagerTestHelper.IsTrue(cmLogReponse.logEntries[cmLogReponse.logEntries.Count - 1].eventTime < end, "Log entires end time"); int logSize = CMLogReponseWithTime.logEntries.Count; if (!CMLogReponseWithTime.logEntries[logSize - 1].eventDescription.Contains("SetChassisAttentionLEDOn")) { CmTestLog.Failure("!!!Failed to read the CM logs with a time range."); return(false); } //This will require that the CM doesn't receive any other user commands. if (!CMLogReponseWithTime.logEntries[0].eventDescription.Contains("ReadChassisLog")) { CmTestLog.Failure("!!!Failed to read the CM logs with a time range."); return(false); } CmTestLog.End(testPassed); return(testPassed); }
/// <summary> /// GetACSocketPowerState: Verify that all users can execute the command /// </summary> /// <returns></returns> protected bool AcSocketPowerGetByAllUserTest() { CmTestLog.Start(); bool testPassed = true; string failureMessage; ChassisResponse acSocketResponse = null; ACSocketStateResponse acSocketPower = null; uint numAcSocket = CmConstants.NumPowerSwitches; Console.WriteLine("!!!!!!!!! Started execution of ACSocketPowerTest."); foreach (WCSSecurityRole roleId in Enum.GetValues(typeof(WCSSecurityRole))) { //Change test connection to different role this.TestChannelContext = this.ListTestChannelContexts[(int)roleId]; for (int testedAcSocket = 1; testedAcSocket <= numAcSocket; testedAcSocket++) { // Turn off ACSocket Power state acSocketResponse = this.Channel.SetACSocketPowerStateOff(testedAcSocket); if (acSocketResponse.completionCode == CompletionCode.Success) { // Check to see if socket power state is return correctly acSocketPower = this.TestChannelContext.GetACSocketPowerState(testedAcSocket); if (acSocketPower.powerState != PowerState.OFF) { failureMessage = string.Format("!!!Failed to get power state for AC socket#{0}", testedAcSocket); CmTestLog.Failure(failureMessage); testPassed = false; } } // Turn on ACSocket Power state acSocketResponse = this.Channel.SetACSocketPowerStateOn(testedAcSocket); if (acSocketResponse.completionCode == CompletionCode.Success) { // Check to see if socket power state is return correctly acSocketPower = this.TestChannelContext.GetACSocketPowerState(testedAcSocket); if (acSocketPower.powerState != PowerState.ON) { failureMessage = string.Format("!!!Failed to get power state for AC socket#{0}", testedAcSocket); CmTestLog.Failure(failureMessage); testPassed = false; } } } } failureMessage = "!!!!!!!!! Successfully finished execution of ACSocketPowerTests."; Console.WriteLine(failureMessage); CmTestLog.End(testPassed); return(testPassed); }
internal static bool ValidateResponse(string message, ChassisResponse response, bool echoSuccess = true) { if (response == null) { Console.WriteLine(WcsCliConstants.serviceResponseEmpty); return(false); } if (response.completionCode == Contracts.CompletionCode.Success) { if (echoSuccess) { Console.WriteLine(WcsCliConstants.commandSuccess + " " + (string.IsNullOrEmpty(message) ? WcsCliConstants.commandComplete: message)); } return(true); } if (response.completionCode == Contracts.CompletionCode.Failure) { Console.WriteLine(WcsCliConstants.commandFailure); return(false); } else if (response.completionCode == Contracts.CompletionCode.Timeout) { Console.WriteLine(WcsCliConstants.commandTimeout); return(false); } else if (response.completionCode == Contracts.CompletionCode.SerialSessionActive) { Console.WriteLine(WcsCliConstants.commandSerialSessionActive); return(false); } else if (response.completionCode == Contracts.CompletionCode.UserNotFound) { Console.WriteLine(WcsCliConstants.commandUserNotFound); return(false); } else if (response.completionCode == Contracts.CompletionCode.UserPasswordDoesNotMeetRequirement) { Console.WriteLine(WcsCliConstants.commandUserPwdDoesNotMeetReq); return(false); } else if (response.completionCode == Contracts.CompletionCode.FirmwareDecompressing) { Console.WriteLine(WcsCliConstants.decompressing + (string.IsNullOrEmpty(response.statusDescription) ? WcsCliConstants.defaultTimeout: response.statusDescription)); return(false); } else { Console.WriteLine(WcsCliConstants.commandFailure + string.Format(" Completion Code: {0}", response.completionCode)); return(false); } }
/// <summary> /// Test Command: ClearChassisLog. Test case verifies: /// The command returns completion code success for WcsAdmin; /// Bad Request for WcsOperator and WcsUser /// </summary> /// <returns>True if all check-points pass; false, otherwise.</returns> // [TFS WorkItem:2585] ClearChassisLog: Verify ONLY users from WcsCmAdmin are able to execute the command public bool ClearChassisLogByAllUsers() { CmTestLog.Start(); bool testPassed = true; // Loop through different user types and ReadChassisLogWithTimestamp foreach (WCSSecurityRole roleId in Enum.GetValues(typeof(WCSSecurityRole))) { try { // Use different user context this.TestChannelContext = this.ListTestChannelContexts[(int)roleId]; CmTestLog.Info(string.Format("Trying to ClearChassisLog with user type {0} ", roleId.ToString())); ChassisResponse clearChassisLog = this.TestChannelContext.ClearChassisLog(); testPassed &= ChassisManagerTestHelper.AreEqual(CompletionCode.Success, clearChassisLog.completionCode, "Received ClearChassisLog for user " + roleId.ToString()); } catch (Exception ex) { // Check error is due to permission HTTP 400 bad request if (ex.Message.Contains("400") && roleId == WCSSecurityRole.WcsCmUser) { ChassisManagerTestHelper.IsTrue(true, "ClearChassisLog returned Bad Request for user " + roleId.ToString()); } else { ChassisManagerTestHelper.IsTrue(false, "Exception: " + ex.Message); testPassed = false; } } } CmTestLog.End(testPassed); return(testPassed); }
internal static bool ValidateBladeResponse(int bladeId, string message, ChassisResponse response, bool echoSuccess = true) { if (response == null) { Console.WriteLine(WcsCliConstants.serviceResponseEmpty); return(false); } if (response.completionCode == Contracts.CompletionCode.Success) { if (echoSuccess) { Console.WriteLine(WcsCliConstants.commandSuccess + " Blade " + bladeId + ": " + (string.IsNullOrEmpty(message) ? WcsCliConstants.commandComplete: message)); } return(true); } else if (response.completionCode == Contracts.CompletionCode.Unknown) { Console.WriteLine(WcsCliConstants.bladeStateUnknown + " Blade " + bladeId); return(false); } else if (response.completionCode == Contracts.CompletionCode.Failure) { Console.WriteLine(WcsCliConstants.commandFailure + " Blade " + bladeId + ": " + response.completionCode.ToString()); return(false); } else if (response.completionCode == Contracts.CompletionCode.FirmwareDecompressing) { Console.WriteLine(WcsCliConstants.decompressing + " Blade " + bladeId + ": " + (string.IsNullOrEmpty(response.statusDescription) ? WcsCliConstants.defaultTimeout: response.statusDescription)); return(false); } else { Console.WriteLine(WcsCliConstants.commandFailure + string.Format(" Blade {0}: Completion Code: {1}", bladeId, response.completionCode)); return(false); } }
/// <summary> /// Basic functional validation test for AC SocketPower /// </summary> /// <returns></returns> protected bool AcSocketPowerTest() { CmTestLog.Start(); bool testPassed = true; string failureMessage; ChassisResponse acSocketResponse = null; ACSocketStateResponse acSocketPower = null; uint NumACSocket = CmConstants.NumPowerSwitches; Console.WriteLine("!!!!!!!!! Started execution of ACSocketPowerTest."); for (int testedAcSocket = 1; testedAcSocket <= NumACSocket; testedAcSocket++) { acSocketResponse = this.Channel.SetACSocketPowerStateOff(testedAcSocket); if (acSocketResponse.completionCode != CompletionCode.Success) { failureMessage = string.Format("!!!Failed to power off from unknown state for AC socket#{0}", testedAcSocket); CmTestLog.Failure(failureMessage); testPassed = false; } acSocketPower = this.Channel.GetACSocketPowerState(testedAcSocket); if (acSocketPower.powerState != PowerState.OFF) { failureMessage = string.Format("!!!Failed to get power state for AC socket#{0}", testedAcSocket); CmTestLog.Failure(failureMessage); testPassed = false; } acSocketResponse = this.Channel.SetACSocketPowerStateOff(testedAcSocket); if (acSocketResponse.completionCode != CompletionCode.Success) { failureMessage = string.Format("!!!Failed to power off AC socket when it is already off for socket#{0}", testedAcSocket); CmTestLog.Failure(failureMessage); testPassed = false; } acSocketPower = this.Channel.GetACSocketPowerState(testedAcSocket); if (acSocketPower.powerState != PowerState.OFF) { failureMessage = string.Format("!!!Failed to get power state for AC socket#{0}", testedAcSocket); CmTestLog.Failure(failureMessage); testPassed = false; } acSocketResponse = this.Channel.SetACSocketPowerStateOn(testedAcSocket); if (acSocketResponse.completionCode != CompletionCode.Success) { failureMessage = string.Format("!!!Failed to power ON AC socket#{0}", testedAcSocket); CmTestLog.Failure(failureMessage); testPassed = false; } acSocketPower = this.Channel.GetACSocketPowerState(testedAcSocket); if (acSocketPower.powerState != PowerState.ON) { failureMessage = string.Format("!!!Failed to get power state for AC socket#{0}", testedAcSocket); CmTestLog.Failure(failureMessage); testPassed = false; } acSocketResponse = this.Channel.SetACSocketPowerStateOn(testedAcSocket); if (acSocketResponse.completionCode != CompletionCode.Success) { failureMessage = string.Format("!!!Failed to power ON AC socket when it is already ON for AC Socket#{0}", testedAcSocket); CmTestLog.Failure(failureMessage); testPassed = false; } acSocketResponse = this.Channel.SetACSocketPowerStateOff(testedAcSocket); if (acSocketResponse.completionCode != CompletionCode.Success) { failureMessage = string.Format("!!!Failed to power off AC socket from ON state for AC Socket#{0}", testedAcSocket); CmTestLog.Failure(failureMessage); testPassed = false; } acSocketPower = this.Channel.GetACSocketPowerState(testedAcSocket); if (acSocketPower.powerState != PowerState.OFF) { failureMessage = string.Format("!!!Failed to get power state for AC socket#{0}", testedAcSocket); CmTestLog.Failure(failureMessage); testPassed = false; } acSocketPower = this.Channel.GetACSocketPowerState(testedAcSocket); if (acSocketPower.powerState != PowerState.OFF) { failureMessage = string.Format("!!!Failed to get power state for AC socket#{0}", testedAcSocket); CmTestLog.Failure(failureMessage); testPassed = false; } } //Test for invalid parameters acSocketResponse = this.Channel.SetACSocketPowerStateOn(0); if (acSocketResponse.completionCode != CompletionCode.ParameterOutOfRange) { failureMessage = string.Format("!!!Failed During SetACSocketPowerStateOn(0), response is: {0}", acSocketResponse.completionCode); CmTestLog.Failure(failureMessage); testPassed = false; } acSocketResponse = this.Channel.SetACSocketPowerStateOn(9999); if (acSocketResponse.completionCode != CompletionCode.ParameterOutOfRange) { failureMessage = string.Format("!!!Failed During SetACSocketPowerStateOn(0), response is: {0}", acSocketResponse.completionCode); CmTestLog.Failure(failureMessage); testPassed = false; } acSocketResponse = this.Channel.SetACSocketPowerStateOn(4); if (acSocketResponse.completionCode != CompletionCode.ParameterOutOfRange) { failureMessage = string.Format("!!!Failed During SetACSocketPowerStateOn(0), response is: {0}", acSocketResponse.completionCode); CmTestLog.Failure(failureMessage); testPassed = false; } Console.WriteLine("\n++++++++++++++++++++++++++++++++"); failureMessage = "!!!!!!!!! Successfully finished execution of ACSocketPowerTests."; Console.WriteLine(failureMessage); CmTestLog.End(testPassed); return(testPassed); }
/// <summary> /// SetACSocketPowerStateOff: Verify that only Operator and Admin can execute the command /// </summary> /// <param name="testPassed"></param> /// <param name="failureMessage"></param> /// <param name="numAcSocket"></param> /// <param name="roleId"></param> private void AcSocketSetGetValidation(ref bool testPassed, ref string failureMessage, uint numAcSocket, WCSSecurityRole roleId) { ChassisResponse acSocketResponse = null; ACSocketStateResponse acSocketPower = null; // Use different user context this.TestChannelContext = this.ListTestChannelContexts[(int)roleId]; for (int testedAcSocket = 1; testedAcSocket <= numAcSocket; testedAcSocket++) { // Turn On ACSocket acSocketResponse = this.TestChannelContext.SetACSocketPowerStateOn(testedAcSocket); if (acSocketResponse.completionCode != CompletionCode.Success && (roleId == WCSSecurityRole.WcsCmAdmin || roleId == WCSSecurityRole.WcsCmOperator)) { failureMessage = string.Format("!!!Failed to power ON AC socket when it is already ON for AC Socket# {0}", testedAcSocket); CmTestLog.Failure(failureMessage); testPassed = false; } else if (acSocketResponse.completionCode == CompletionCode.Success && (roleId == WCSSecurityRole.WcsCmUser)) { failureMessage = string.Format("User is not allow to called out to SetACSocketPowerStateOn {0} Socket# {1}", roleId, testedAcSocket); CmTestLog.Failure(failureMessage); testPassed = false; } else { // Verify power state acSocketPower = this.Channel.GetACSocketPowerState(testedAcSocket); if (acSocketPower.powerState != PowerState.ON) { failureMessage = string.Format( "!!!Failed to power ON AC socket when it is already ON for AC Socket# {0}", testedAcSocket); CmTestLog.Failure(failureMessage); testPassed = false; } } // Turn off ACSocket acSocketResponse = this.TestChannelContext.SetACSocketPowerStateOff(testedAcSocket); if (acSocketResponse.completionCode != CompletionCode.Success && (roleId == WCSSecurityRole.WcsCmAdmin || roleId == WCSSecurityRole.WcsCmOperator)) { failureMessage = string.Format("!!!Failed to power ON AC socket when it is already ON for AC Socket# {0}", testedAcSocket); CmTestLog.Failure(failureMessage); testPassed = false; } else if (acSocketResponse.completionCode == CompletionCode.Success && roleId == WCSSecurityRole.WcsCmUser) { failureMessage = string.Format( "User is not allow to called out to SetACSocketPowerStateOff {0} Socket# {1}", roleId, testedAcSocket); CmTestLog.Failure(failureMessage); testPassed = false; } else { // Verify power state acSocketPower = this.Channel.GetACSocketPowerState(testedAcSocket); if (acSocketPower.powerState != PowerState.OFF) { failureMessage = string.Format( "!!!Failed to power ON AC socket when it is already ON for AC Socket# {0}", testedAcSocket); CmTestLog.Failure(failureMessage); testPassed = false; } } }// end of for loop }