Logo ROOT  
Reference Guide
TProofBenchDataSet.cxx
Go to the documentation of this file.
1// @(#)root/proof:$Id$
2// Author: Sangsu Ryu 22/06/2010
3
4/*************************************************************************
5 * Copyright (C) 1995-2005, Rene Brun and Fons Rademakers. *
6 * All rights reserved. *
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. *
9 * For the list of contributors see $ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11
12/** \class TProofBenchDataSet
13\ingroup proofbench
14
15Handle operations on datasets used by ProofBench
16
17*/
18
19#include "RConfigure.h"
20
21#include "TProofBenchDataSet.h"
22#include "TClass.h"
23#include "TFileCollection.h"
24#include "TList.h"
25#include "TMap.h"
26#include "TProof.h"
27#include "TProofBenchTypes.h"
28#include "TROOT.h"
29
30
32
33////////////////////////////////////////////////////////////////////////////////
34/// Constructor
35
37{
38 fProof = proof ? proof : gProof;
39}
40
41
42////////////////////////////////////////////////////////////////////////////////
43/// Release memory cache for dataset 'dset'
44/// Return 0 on success, -1 on error
45
47{
48 // Clear the cache
50 if (Handle(dset, &type) != 0) {
51 Error("ReleaseCache", "problems clearing cache for '%s'", dset);
52 return -1;
53 }
54 // Done
55 return 0;
56}
57
58////////////////////////////////////////////////////////////////////////////////
59/// Physically remove the dataset 'dset', i.e. remove the dataset and the files
60/// it describes
61/// Return 0 on success, -1 on error
62
64{
65 // Phyically remove the files
67 if (Handle(dset, &type) != 0) {
68 Error("RemoveFiles", "problems removing files for '%s'", dset);
69 return -1;
70 }
71 // Remove the meta information
72 if (!fProof || (fProof && fProof->RemoveDataSet(dset) != 0)) {
73 Error("RemoveFiles", "problems removing meta-information for dataset '%s'", dset);
74 return -1;
75 }
76 // Done
77 return 0;
78}
79
80////////////////////////////////////////////////////////////////////////////////
81/// Copy the files of dataset 'dset' to another directory
82/// Return 0 on success, -1 on error
83
84Int_t TProofBenchDataSet::CopyFiles(const char *dset, const char *destdir)
85{
86 // Check input
87 if (!destdir || (destdir && strlen(destdir) <= 0)) {
88 Error("CopyFiles", "specifying a destination dir is mandatory!");
89 return -1;
90 }
91
92 // Set the destination dir
93 if (fProof) fProof->SetParameter("PROOF_Benchmark_DestDir", destdir);
94
95 // Copy the files
97 if (Handle(dset, &type) != 0) {
98 Error("CopyFiles", "problems copying files for '%s'", dset);
99 return -1;
100 }
101
102 // Done
103 return 0;
104}
105
106////////////////////////////////////////////////////////////////////////////////
107/// Physically remove the dataset 'dset', i.e. remove the dataset and the files
108/// it describes
109/// Return 0 on success, -1 on error
110
112{
113 // Check input
114 if (!dset || (dset && strlen(dset) <= 0)) {
115 Error("Handle", "a valid dataset name is mandatory");
116 return -1;
117 }
118
119 // The dataset must exist
120 if (!fProof || (fProof && !fProof->ExistsDataSet(dset))) {
121 Error("Handle", "dataset '%s' does not exist", dset);
122 return -1;
123 }
124
125 // Get the dataset
127 if (!fc) {
128 Error("Handle", "TFileCollection object for dataset '%s' could not be retrieved", dset);
129 return -1;
130 }
131
132 // Get information per server
133 TMap *fcmap = fc->GetFilesPerServer(fProof->GetMaster(), kTRUE);
134 if (!fcmap) {
135 Error("Handle", "could not create map with per-server info for dataset '%s'", dset);
136 return -1;
137 }
138 fcmap->Print();
139
140 // Load the selector, if needed
141 TString selName("TSelHandleDataSet");
142 if (!TClass::GetClass(selName)) {
143 // Load the parfile
145 Info("Handle", "Uploading '%s' ...", par.Data());
146 if (fProof->UploadPackage(par) != 0) {
147 Error("Handle", "problems uploading '%s' - cannot continue", par.Data());
148 return -1;
149 }
150 Info("Handle", "Enabling '%s' ...", kPROOF_BenchDataSelPar);
152 Error("Handle", "problems enabling '%s' - cannot continue", kPROOF_BenchDataSelPar);
153 return -1;
154 }
155 // Check
156 if (!TClass::GetClass(selName)) {
157 Error("Handle", "failed to load '%s'", selName.Data());
158 return -1;
159 }
160 }
161
162 // Add map in the input list
163 fcmap->SetName("PROOF_FilesToProcess");
164 fProof->AddInput(fcmap);
165
166 // Set parameters for processing
167 TString oldpack;
168 if (TProof::GetParameter(fProof->GetInputList(), "PROOF_Packetizer", oldpack) != 0) oldpack = "";
169 fProof->SetParameter("PROOF_Packetizer", "TPacketizerFile");
170
171 // Process
173 fProof->Process(selName, (Long64_t) fc->GetNFiles());
175
176 // Restore parameters
177 if (!oldpack.IsNull())
178 fProof->SetParameter("PROOF_Packetizer", oldpack);
179 else
180 fProof->DeleteParameters("PROOF_Packetizer");
181
182 // Cleanup
183 fProof->GetInputList()->Remove(fcmap);
184 delete fcmap;
185 delete fc;
186
187 // Done
188 return 0;
189}
int Int_t
Definition: RtypesCore.h:41
long long Long64_t
Definition: RtypesCore.h:69
const Bool_t kTRUE
Definition: RtypesCore.h:87
#define ClassImp(name)
Definition: Rtypes.h:365
int type
Definition: TGX11.cxx:120
const char *const kPROOF_BenchDataSelPar
const char *const kPROOF_BenchParDir
R__EXTERN TProof * gProof
Definition: TProof.h:1077
static struct mg_connection * fc(struct mg_context *ctx)
Definition: civetweb.c:3728
static TClass * GetClass(const char *name, Bool_t load=kTRUE, Bool_t silent=kFALSE)
Static method returning pointer to TClass of the specified class name.
Definition: TClass.cxx:2906
virtual void Print(Option_t *option="") const
Default print for collections, calls Print(option, 1).
void SetName(const char *name)
Definition: TCollection.h:204
Class that contains a list of TFileInfo's and accumulated meta data information about its entries.
virtual TObject * Remove(TObject *obj)
Remove object from the list.
Definition: TList.cxx:819
TMap implements an associative array of (key,value) pairs using a THashTable for efficient retrieval ...
Definition: TMap.h:40
Mother of all ROOT objects.
Definition: TObject.h:37
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
Definition: TObject.cxx:880
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
Definition: TObject.cxx:854
Handle operations on datasets used by ProofBench.
Int_t Handle(const char *dset, TObject *type)
Physically remove the dataset 'dset', i.e.
Int_t CopyFiles(const char *dset, const char *destdir)
Copy the files of dataset 'dset' to another directory Return 0 on success, -1 on error.
TProofBenchDataSet(TProof *proof=0)
Constructor.
Int_t RemoveFiles(const char *dset)
Physically remove the dataset 'dset', i.e.
Int_t ReleaseCache(const char *dset)
Release memory cache for dataset 'dset' Return 0 on success, -1 on error.
This class controls a Parallel ROOT Facility, PROOF, cluster.
Definition: TProof.h:316
Int_t UploadPackage(const char *par, EUploadPackageOpt opt=kUntar, TList *workers=0)
Upload a PROOF archive (PAR file).
Definition: TProof.cxx:8414
TObject * GetParameter(const char *par) const
Get specified parameter.
Definition: TProof.cxx:9891
void DeleteParameters(const char *wildcard)
Delete the input list parameters specified by a wildcard (e.g.
Definition: TProof.cxx:9906
void SetParameter(const char *par, const char *value)
Set input list parameter.
Definition: TProof.cxx:9795
virtual Int_t RemoveDataSet(const char *dataset, const char *optStr="")
Remove the specified dataset from the PROOF cluster.
Definition: TProof.cxx:10964
virtual TFileCollection * GetDataSet(const char *dataset, const char *optStr="")
Get a list of TFileInfo objects describing the files of the specified dataset.
Definition: TProof.cxx:10910
virtual Long64_t Process(TDSet *dset, const char *selector, Option_t *option="", Long64_t nentries=-1, Long64_t firstentry=0)
Process a data set (TDSet) using the specified selector (.C) file or Tselector object Entry- or event...
Definition: TProof.cxx:5276
virtual Bool_t ExistsDataSet(const char *dataset)
Returns kTRUE if 'dataset' exists, kFALSE otherwise.
Definition: TProof.cxx:10841
void AddInput(TObject *obj)
Add objects that might be needed during the processing of the selector (see Process()).
Definition: TProof.cxx:9707
TList * GetInputList()
Get input list.
Definition: TProof.cxx:9726
const char * GetMaster() const
Definition: TProof.h:903
Int_t EnablePackage(const char *package, Bool_t notOnClient=kFALSE, TList *workers=0)
Enable specified package.
Definition: TProof.cxx:8148
static const TString & GetEtcDir()
Get the sysconfig directory in the installation. Static utility function.
Definition: TROOT.cxx:2987
Basic string class.
Definition: TString.h:131
const char * Data() const
Definition: TString.h:364
Bool_t IsNull() const
Definition: TString.h:402
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
Definition: TString.cxx:2311