6 .L $ALICE_ROOT/TPC/macros/testTPC/AliTPCjobs.cxx+
8 jobs.fJobFile="job.list"
11 class AliTPCJobs : public TNamed{
14 void ProcessAllJobs();
16 void ProcessJob(TString jobID, TString inputData, TString outputDir, TString action);
18 void SetLock(TString jobID);
19 void SetDone(TString jobID);
20 Bool_t IsLocked(TString jobID);
24 ClassDef(AliTPCJobs,0)
29 AliTPCJobs::AliTPCJobs(){
33 gSystem->Load("libXrdClient.so");
34 gSystem->Load("libNetx.so");
37 void AliTPCJobs::ProcessAllJobs(){
44 printf("PROCESSING JOB\t%d\n",counter);
46 if (!GetNextJob()) break;
51 Bool_t AliTPCJobs::GetNextJob(){
69 printf("Process %s\n",id.Data());
70 if (hasJob) ProcessJob(id,inputData,outputDir, action);
75 void AliTPCJobs::SetLock(TString jobID){
76 printf("touch out/%s.lock\n",jobID.Data());
77 gSystem->Exec(Form("touch out/%s.lock",jobID.Data()));
80 void AliTPCJobs::SetDone(TString jobID){
81 printf("touch out/%s.done\n",jobID.Data());
82 gSystem->Exec(Form("touch out/%s.done", jobID.Data()));
86 Bool_t AliTPCJobs::IsLocked(TString jobID){
87 TString path = "out/";
90 Long_t pid; Long_t psize; Long_t pflags; Long_t pmodtime;
91 Int_t status = gSystem->GetPathInfo(path,&pid,&psize,&pflags,&pmodtime);
96 void AliTPCJobs::ProcessJob(TString jobID, TString inputData, TString outputDir, TString action){
99 // 1. Create lock file
102 // 4. Create Done file
104 if (action.Contains("COPY")){
106 sprintf(command,"xrdcp -d 1 -DIFirstConnectMaxCnt 2 -DIConnectTimeout 2 -DIRequestTimeout 2 -DIMaxRedirectcount 2 -DIRedirCntTimeout 2 %s\t%s\n",inputData.Data(), outputDir.Data());
107 printf("Exec\t%s\n", command);
108 gSystem->Exec(command);
109 //TFile::Cp(inputData.Data(), outputDir.Data());
112 sprintf(command,"$ALICE_ROOT/TPC/macros/testTPC/action.sh %s %s %s %s", jobID.Data(), inputData.Data(), outputDir.Data(), action.Data());
113 printf("%s\n\n",command);
114 gSystem->Exec(command);