// Copyright (c) 2005 DMTF.  All rights reserved.
// <change cr="ArchCR00066.004" type="add">Add UmlPackagePath
// qualifier values to CIM Schema.</change>
// ==================================================================
//  CIM_DiagnosticResult 
// ==================================================================
   [Deprecated { "CIM_DiagnosticServiceRecord" }, 
    Version ( "2.7.0" ), 
    UMLPackagePath ( "CIM::System::Diagnostics" ), 
    Description ( 
       "When a DiagnosticTest Service is running, test results are "
       "reported using a DiagnosticResult object, or one of its "
       "subclasses. A DiagnosticTest may be running because its "
       "Service is Started or due to an invocation of the RunTest "
       "method. Diagnostic Results are related to their Test via an "
       "instance of the DiagnosticResultsForMSE association. \n"
       "For every running of DiagnosticTest, a new instance of "
       "DiagnosticResult, or one of it\'s subclasses should be "
       "created." )]
class CIM_DiagnosticResult {

      [Deprecated { "No Value" }, 
       Key, Description ( "The scoping Test\'s CreationClassName." ), 
       MaxLen ( 256 ), 
       Propagated ( "CIM_DiagnosticTest.CreationClassName" )]
   string DiagnosticCreationClassName;

      [Deprecated { "No Value" }, 
       Key, Description ( "The scoping Test\'s Name." ), 
       MaxLen ( 256 ), 
       Propagated ( "CIM_DiagnosticTest.Name" )]
   string DiagnosticName;

      [Deprecated { "No Value" }, 
       Key, Description ( 
          "The scoping Test\'s SystemCreationClassName." ), 
       MaxLen ( 256 ), 
       Propagated ( "CIM_DiagnosticTest.SystemCreationClassName" )]
   string DiagSystemCreationClassName;

      [Deprecated { "No Value" }, 
       Key, Description ( "The scoping Test\'s SystemName." ), 
       MaxLen ( 256 ), 
       Propagated ( "CIM_DiagnosticTest.SystemName" )]
   string DiagSystemName;

      [Deprecated { "CIM_DiagnosticRecord.InstanceID" }, 
       Key, Description ( 
          "The Unique identifier for an instance of Diagnostic Results."
           ), 
       MaxLen ( 1024 )]
   string ExecutionID;

      [Deprecated { "CIM_LogRecord.MessageTimestamp" }, 
       Description ( 
          "The date and time the result was last updated." )]
   datetime TimeStamp;

      [Deprecated { "No Value" }, 
       Description ( 
          "This property is being deprecated. Tests should be "
          "grouped at the test level, not by the model. /n If this "
          "property is TRUE, then this DiagnosticResult summarizes "
          "the results from the execution of a packaged set of "
          "DiagnosticTests. The Tests in the package can be "
          "identified by following the DiagnosticResultForTest "
          "association to the test and then using the "
          "DiagnosticTest InPackage aggregation. The individual "
          "Results can be broken out by instantiating "
          "DiagnosticResults for the individual lower level tests "
          "and aggregating into the \'summary\' Result using the "
          "DiagnosticResultInPackage association." )]
   boolean IsPackage;

      [Deprecated { "CIM_Job.StartTime" }, 
       Description ( "The date and time when this test started." )]
   datetime TestStartTime;

      [Deprecated { "No Value" }, 
       Description ( "The date and time when this test completed." )]
   datetime TestCompletionTime;

      [Deprecated { "No Value" }, 
       Description ( 
          "Describes how the test is progressing. For example, if "
          "the test was discontinued, the TestState will be "
          "\"Stopped\" (value=5), or if testing is currently "
          "executing, TestState will be \"In Progress\" (4)." ), 
       ValueMap { "0", "1", "2", "3", "4", "5" }, 
       Values { "Unknown", "Other", "Passed", "Failed", 
          "In Progress", "Stopped" }, 
       ModelCorrespondence { 
          "CIM_DiagnosticResult.OtherStateDescription" }]
   uint16 TestState;

      [Deprecated { "No Value" }, 
       Description ( 
          "When \"Other\" (value=1) is entered in the TestState "
          "property, OtherStateDescription can be used to describe "
          "the test\'s state." ), 
       ModelCorrespondence { "CIM_DiagnosticResult.TestState" }]
   string OtherStateDescription;

      [Deprecated { "No Value" }, 
       Description ( 
          "Estimated number of seconds to perform the Diagnostic "
          "Test indicated by the DiagnosticCreationClassName and "
          "DiagnosticName properties. After the test has completed, "
          "the actual elapsed time can be determined by subtracting "
          "the TestStartTime from the TestCompletionTime. A similar "
          "property is defined in the association, DiagnosticTest "
          "ForMSE. The difference between the two properties is "
          "that the value stored in the association is a generic "
          "test execution time for the Element and the Test. But, "
          "the value here (in DiagnosticResult) is the estimated "
          "time that this instance with the given settings would "
          "take to run the test. A CIM Consumer can compare this "
          "value with the value in the association "
          "DiagnosticTestForMSE to get an idea what impact their "
          "settings have on test execution." ), 
       Units ( "Seconds" ), 
       ModelCorrespondence { 
          "CIM_DiagnosticTestForMSE.EstimatedTimeOfPerforming" }]
   uint32 EstimatedTimeOfPerforming;

      [Deprecated { "CIM_LogRecord.RecordData" }, 
       Description ( 
          "TestResults stores one or more textual results from the "
          "execution of the DiagnosticTest(s) referenced by the "
          "DiagnosticCreationClassName and DiagnosticName "
          "properties. One entry is considered a cell location in "
          "the array. Each entry is time stamped and contains the "
          "following information, in the following format: \n"
          "LogOption|yyymmddhhttssoutc|TestName|message_text \n"
          "Where: \n"
          "LogOption = string identical to the LogOption value in "
          "DiagnosticSetting that was used to enable logging this "
          "message. \n"
          "yyyy = year, e.g. 2000 \n"
          "mm = month (01 - 12) \n"
          "dd = day (01 - 31) \n"
          "hh = hour (00 - 24) \n"
          "tt = minute (00-59) \n"
          "ss = second (00-59) \n"
          "o = \"+\" or \"-\" indicating the sign of the UTC "
          "correction field \n"
          "utc = offset from UTC (Universal Coordinated Time) in "
          "minutes \n"
          "TestName = Internal test name or current internal "
          "subtest name that sent the message. \n"
          "Textual message = free form string that is the \'test "
          "result\'." ), 
       ArrayType ( "Ordered" )]
   string TestResults[];

      [Deprecated { "CIM_Job.PercentComplete" }, 
       Description ( 
          "The percentage of the test that has executed thus far, "
          "if the TestState property is set to \"In Progress\" or "
          "the percentage of the complete test that was executed if "
          "the TestState property is set to any of the completed "
          "states (\"Passed\", \"Failed\" or \"Stopped\"). Final "
          "results may be based on less than 100% coverage due to "
          "the parameters defined in DiagnosticSetting (such as "
          "QuickMode, PercentOfTestCoverage or HaltOnError)." ), 
       Units ( "Percent" ), 
       MinValue ( 0 ), 
       MaxValue ( 100 )]
   uint8 PercentComplete;

      [Deprecated { "CIM_DiagnosticServiceRecord.ErrorCode" }, 
       Description ( 
          "If applicable, this string should contain one or more "
          "vendor specific error codes that the diagnostic service "
          "detected. These error codes may be used by the vendor "
          "for variety of purposes such as: fault data base "
          "indexing, field service trouble ticketing, product "
          "quality tracking, part failure history, etc. Since these "
          "codes are for vendor purposes they may assume any form. "
          "Details on suggested use cases will be left to white "
          "papers. The array of error codes has model "
          "correspondence with an ErrorCount array so the number of "
          "errors reported can be analyzed by individual error "
          "code." ), 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { "CIM_DiagnosticResult.ErrorCount" }]
   string ErrorCode[];

      [Deprecated { "CIM_DiagnosticServiceRecord.ErrorCount" }, 
       Description ( 
          "Since some tests may detect transient and correctable "
          "errors such as a network diagnostic or memory test, an "
          "error count is useful to indicate the severity of the "
          "failure. This field contains an integer value of the "
          "number of errors detected by the test. The ErrorCount is "
          "an array with model correspondence to ErrorCode so that "
          "the test can report an ErrorCount on each type of error "
          "encountered. It is recommended that hard errors and "
          "correctable or recoverable errors be given different "
          "codes so that clients with knowledge of the error codes "
          "can evaluate correctable, recoverable, and hard errors "
          "independently." ), 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { "CIM_DiagnosticResult.ErrorCode" }]
   uint32 ErrorCount[];

      [Deprecated { "CIM_DiagnosticServiceRecord.LoopsFailed" }, 
       Description ( 
          "Since some tests may be looped, it is useful to report "
          "how many iterations passed and failed. This is relevant "
          "in analyzing transitory failures. For example, if all "
          "the errors occurred in just one of 100 iterations, the "
          "device may be viewed as OK or marginal, to be monitored "
          "further rather then failed. Note: LoopsPassed & "
          "LoopsFailed should add up to the loops completed." )]
   uint32 LoopsFailed;

      [Deprecated { "CIM_DiagnosticServiceRecord.LoopsPassed" }, 
       Description ( 
          "Since some tests may be looped, it is useful to report "
          "how many iterations passed and failed. This is relevant "
          "in analyzing transitory failures. For example if all the "
          "errors occurred in just one of 100 iterations, the "
          "device may be viewed as OK or marginal, to be monitored "
          "further rather then failed. Note: LoopsPassed & "
          "LoopsFailed should add up to the loops completed." )]
   uint32 LoopsPassed;

      [Deprecated { "CIM_DiagnosticSetting.LogOptions" }, 
       Write, Description ( 
          "Sets the level of warning messages to be logged. If for "
          "example no warning information is required, the level "
          "would be set to \"No Warnings\" (value=0). Using "
          "\"Missing Resources\" (value=1) will cause warnings to "
          "be generated when required resources or hardware are not "
          "found. Setting the value to 2, \"Testing Impacts\", "
          "results in both missing resources and \'test impact\' "
          "warnings (for example, multiple retries required) to be "
          "reported." ), 
       ValueMap { "0", "1", "2", "3" }, 
       Values { "No Warnings", "Missing Resources", 
          "Testing Impacts", "All Warnings" }]
   uint16 TestWarningLevel;

      [Deprecated { "CIM_DiagnosticSetting.LogOptions" }, 
       Write, Description ( 
          "When this flag is true, the diagnostic test will report "
          "\'soft errors\'. In this context, a soft error is a "
          "message from the diagnostic reporting a known defect in "
          "the hardware or driver configuration, or execution "
          "environment. Examples are: \'Not enough memory\', "
          "\'Driver IOCTL not implemented\', \'Video RAM compare "
          "failed during polygon fill test (A known defect in the "
          "video chipset)\', etc." )]
   boolean ReportSoftErrors;

      [Deprecated { "CIM_DiagnosticSetting.LogOptions" }, 
       Write, Description ( 
          "When this flag is true, the diagnostic test will report "
          "\'status messages\'. In this context, a status message "
          "indicates that the diagnostic code is at a checkpoint. "
          "Examples are: \"Completion of phase 1\", \"Complex "
          "pattern\", etc." )]
   boolean ReportStatusMessages;

      [Deprecated { "CIM_DiagnosticSettingRecord.HaltOnError" }, 
       Write, Description ( 
          "When this flag is true, the test will halt after finding "
          "the first error." )]
   boolean HaltOnError;

      [Deprecated { "CIM_DiagnosticSettingRecord.QuickMode" }, 
       Write, Description ( 
          "When this flag is true, the test software should attempt "
          "to run in an accelerated fashion either by reducing the "
          "coverage or number of tests performed." )]
   boolean QuickMode;

      [Deprecated { 
          "CIM_DiagnosticSettingRecord.PercentOfTestCoverage" }, 
       Write, Description ( 
          "Requests the diagnostic software to reduce test coverage "
          "to the specified percentage. For example, a hard drive "
          "scan test could be asked to run at 50%. The most "
          "effective way to accomplish this is for the test "
          "software to scan every other track, as opposed to only "
          "scanning the first half of a drive. It is assumed that "
          "the effectiveness of the test is impacted proportional "
          "to the percentage of testing requested. Permissible "
          "values for this property range from 0 to 100. \n"
          "This property may not be applicable to all tests. If it "
          "can be set for a test, the value 7 (\"Supports PercentOf "
          "TestCoverage\") should be entered into the "
          "DiagnosticTest\'s Characteristics array." ), 
       Units ( "Percent" ), 
       MinValue ( 0 ), 
       MaxValue ( 100 ), 
       ModelCorrespondence { "CIM_DiagnosticTest.Characteristics" }]
   uint8 PercentOfTestCoverage;


};
