// Copyright (c) 2005 DMTF.  All rights reserved.
// <change cr="ArchCR00066.004" type="add">Add UmlPackagePath
// qualifier values to CIM Schema.</change>
// ==================================================================
//  CIM_DiagnosticServiceRecord 
// ==================================================================
   [Version ( "2.9.0" ), 
    UMLPackagePath ( "CIM::System::Diagnostics" ), 
    Description ( 
       "While a DiagnosticService is running, data generated by the "
       "service may be recorded in DiagnosticServiceRecord objects. A "
       "DiagnosticServiceRecord is related to its MessageLog via an "
       "instance of the RecordInLog aggregation class." )]
class CIM_DiagnosticServiceRecord : CIM_DiagnosticRecord {

      [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_DiagnosticServiceRecord.ErrorCount" }]
   string ErrorCode[];

      [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_DiagnosticServiceRecord.ErrorCode" }]
   uint32 ErrorCount[];

      [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. \n"
          "A value for this property would likely be reported with "
          "a DiagnosticServiceRecord.RecordType value = "
          "\"ResultSummary\", which contains a summary result "
          "covering all iterations of a looped service." )]
   uint32 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. \n"
          "A value for this property would likely be reported with "
          "a DiagnosticServiceRecord.RecordType value = "
          "\"ResultSummary\", which contains a summary result "
          "covering all iterations of a looped service." )]
   uint32 LoopsPassed;


};
