Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
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
00029
00030
00031
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
00074
00075 JobHistory::~JobHistory() {
00076 }
00077
00078 const CLID&
00079 JobHistory::classID() {
00080
00081 static CLID CLID_JobHistory = 247994533;
00082 return CLID_JobHistory;
00083
00084 }
00085
00086 void
00087 JobHistory::addProperty(const std::string& client, const Property* prop) {
00088
00089 m_ppl.push_back( std::pair<std::string, const Property*>(client,prop) );
00090
00091 }
00092
00093
00094 void
00095 JobHistory::dump(std::ostream& ost, const bool isXML, int ) const {
00096
00097 if (!isXML) {
00098 ost << "Release: " << release_version() << endl;
00099 ost << "OS: " << os() << endl;
00100 ost << "OS ver: " << os_version() << endl;
00101 ost << "Host: " << hostname() << endl;
00102 ost << "Machine: " << machine() << endl;
00103 ost << "Run dir: " << dir() << endl;
00104 ost << "CMTCONFIG: " << cmtconfig() << endl;
00105 ost << "Job start time: " << start_time() << endl << endl;
00106 ost << "Properties: [" << endl;;
00107 for ( JobHistory::PropertyPairList::const_iterator
00108 ipprop=propertyPairs().begin();
00109 ipprop!=propertyPairs().end(); ++ipprop ) {
00110 std::string client = ipprop->first;
00111 const Property* prop = ipprop->second;
00112 ost << client << ": ";
00113 prop->fillStream(ost);
00114 ost << endl;
00115 }
00116 ost << "]" << endl;
00117 vector<string> env = environment();
00118 for (vector<string>::const_iterator itr=env.begin(); itr != env.end();
00119 ++itr) {
00120 ost << *itr << endl;
00121 }
00122 } else {
00123
00124 }
00125
00126 }
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136 ostream& operator<<(ostream& lhs, const JobHistory& rhs) {
00137
00138 rhs.dump(lhs,false);
00139
00140 return lhs;
00141 }
00142
00143