8 .L $ALICE_ROOT/TPC/macros/testTPC/AliTPCjobs.cxx+
12 jobs.fJobFile="job.list"
13 jobs.ProcessAllJobs();
17 class AliTPCJobs : public TNamed{
20 void ProcessAllJobs();
22 void ProcessJob(TString jobID, TString inputData, TString outputDir, TString action);
24 void SetLock(TString jobID);
25 void SetDone(TString jobID);
26 Bool_t IsLocked(TString jobID);
30 ClassDef(AliTPCJobs,0)
35 AliTPCJobs::AliTPCJobs(){
39 gSystem->Load("libXrdClient.so");
40 gSystem->Load("libNetx.so");
43 void AliTPCJobs::ProcessAllJobs(){
50 printf("PROCESSING JOB\t%d\n",counter);
52 if (!GetNextJob()) break;
57 Bool_t AliTPCJobs::GetNextJob(){
75 printf("Process %s\n",id.Data());
76 if (hasJob) ProcessJob(id,inputData,outputDir, action);
81 void AliTPCJobs::SetLock(TString jobID){
82 printf("touch out/%s.lock\n",jobID.Data());
83 gSystem->Exec(Form("touch out/%s.lock",jobID.Data()));
86 void AliTPCJobs::SetDone(TString jobID){
87 printf("touch out/%s.done\n",jobID.Data());
88 gSystem->Exec(Form("touch out/%s.done", jobID.Data()));
92 Bool_t AliTPCJobs::IsLocked(TString jobID){
93 TString path = "out/";
96 Long_t pid; Long_t psize; Long_t pflags; Long_t pmodtime;
97 Int_t status = gSystem->GetPathInfo(path,&pid,&psize,&pflags,&pmodtime);
102 void AliTPCJobs::ProcessJob(TString jobID, TString inputData, TString outputDir, TString action){
105 // 1. Create lock file
108 // 4. Create Done file
110 if (action.Contains("COPY")){
112 sprintf(command,"xrdcp -DIFirstConnectMaxCnt 4 -DIConnectTimeout 4 -DIRequestTimeout 4 -DIMaxRedirectcount 4 -DIRedirCntTimeout 4 %s\t%s\n",inputData.Data(), outputDir.Data());
113 printf("Exec\t%s\n", command);
114 gSystem->Exec(command);
115 //TFile::Cp(inputData.Data(), outputDir.Data());
118 sprintf(command,"$ALICE_ROOT/TPC/macros/testTPC/action.sh %s %s %s %s", jobID.Data(), inputData.Data(), outputDir.Data(), action.Data());
119 printf("%s\n\n",command);
120 gSystem->Exec(command);
135 jobs.fJobFile="job.list";
136 jobs.ProcessAllJobs();