| # Gaudi Framework, version v21r10p1 |

Home |  | Generated: 29 Jul 2010

# JobHistory.cpp

Go to the documentation of this file.

    00001
    00002 //
    00003 // $Id: JobHistory.cpp,v 1.1 2006/11/09 10:24:05 mato Exp $
    00004 //
    00005 // GaudiHistory/JobHistory.cpp
    00006 //
    00007 // Contains history information for a job. Imports all environment vars
    00008 // and info from uname
    00009 //
    00010 //
    00011 // @author: Charles Leggett
    00012 //
    00014
    00015 #include "GaudiKernel/JobHistory.h"
    00016 #include "GaudiKernel/System.h"
    00017 #include "GaudiKernel/Property.h"
    00018
    00019 #include <cstdlib>
    00020 #include <iostream>
    00021
    00022 using std::string;
    00023 using std::ostream;
    00024 using std::endl;
    00025 using std::vector;
    00026
    00027 //**********************************************************************
    00028 // Member functions.
    00029 //**********************************************************************
    00030
    00031 // Constructor.
    00032
    00033 JobHistory::JobHistory()
    00034 : m_start_time(0) {
    00035
    00036   time(&m_start_time);
    00037
    00038   std::string rel;
    00039
    00040   if  ( (rel = System::getEnv("ATLAS_BASE_RELEASE")) != "UNKNOWN" ) {
    00041     m_release_version = rel;
    00042   } else if ( (rel = System::getEnv("GAUDIROOT")) != "UNKNOWN" ) {
    00043     m_release_version = rel;
    00044   } else {
    00045     m_release_version = "UNKNOWN";
    00046   }
    00047   m_dir = System::getEnv("PWD");
    00048   m_cmtconfig = System::getEnv("CMTCONFIG");
    00049
    00050   m_osname = System::osName();
    00051   m_hostname = System::hostName();
    00052   m_os_version = System::osVersion();
    00053   m_machine = System::machineType();
    00054
    00055   m_environ = System::getEnv();
    00056
    00057 }
    00058
    00059 JobHistory::JobHistory(const std::string& rel, const std::string& os,
    00060                        const std::string& host, const std::string& dir,
    00061                        const std::string& osver, const std::string& mach,
    00062                        const std::string& cmtconfig,
    00063                        const time_t& time):
    00064   m_release_version(rel), m_dir(dir), m_cmtconfig(cmtconfig), m_osname(os),
    00065   m_hostname(host),
    00066   m_os_version(osver), m_machine(mach), m_start_time(time) {
    00067
    00068 }
    00069
    00070
    00071 //**********************************************************************
    00072
    00073 // Destructor.
    00074
    00075 JobHistory::~JobHistory() {
    00076 }
    00077
    00078 const CLID& JobHistory::classID() {
    00079
    00080   static CLID CLID_JobHistory = 247994533;
    00081   return CLID_JobHistory;
    00082
    00083 }
    00084
    00085 void
    00086 JobHistory::addProperty(const std::string& client, const Property* prop) {
    00087 //  if (m_props.find(prop) == m_props.end()) {
    00088     m_props.push_back( std::pair<std::string, const Property*>(client,prop) );
    00089 //  }
    00090 }
    00091
    00092 //**********************************************************************
    00093 // Free functions.
    00094 //**********************************************************************
    00095
    00096 // Output stream.
    00097
    00098 ostream& operator<<(ostream& lhs, const JobHistory& rhs) {
    00099   lhs << "Release: " << rhs.release_version() << endl;
    00100   lhs << "OS:      " << rhs.os() << endl;
    00101   lhs << "OS ver:  " << rhs.os_version() << endl;
    00102   lhs << "Host:    " << rhs.hostname() << endl;
    00103   lhs << "Machine: " << rhs.machine() << endl;
    00104   lhs << "Run dir: " << rhs.dir() << endl;
    00105   lhs << "CMTCONFIG: " << rhs.cmtconfig() << endl;
    00106   lhs << "Job start time: " << rhs.start_time() << endl << endl;
    00107   lhs << "Properties: [" << endl;;
    00108   for ( JobHistory::PropertyList::const_iterator
    00109         ipprop=rhs.properties().begin();
    00110         ipprop!=rhs.properties().end(); ++ipprop ) {
    00111      std::string client = ipprop->first;
    00112      const Property* prop = ipprop->second;
    00113      lhs << client << ":  ";
    00114      prop->fillStream(lhs);
    00115      lhs << endl;
    00116   }
    00117   lhs << "]" << endl;
    00118   vector<string> env = rhs.environment();
    00119   for (vector<string>::const_iterator itr=env.begin();  itr != env.end();
    00120        ++itr) {
    00121     lhs << *itr << endl;
    00122   }
    00123   return lhs;
    00124 }
    00125
    00126 //**********************************************************************