Changeset 1144 for DCWoRMS/branches/coolemall/src/simulator
- Timestamp:
- 07/19/13 10:20:00 (12 years ago)
- Location:
- DCWoRMS/branches/coolemall/src/simulator/workload
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
DCWoRMS/branches/coolemall/src/simulator/workload/WorkloadLoader.java
r1131 r1144 1 1 package simulator.workload; 2 2 3 import org.qcg.broker.schemas.jobdesc.Task;4 3 import java.io.BufferedReader; 4 import java.io.FileReader; 5 5 import java.io.IOException; 6 6 import java.text.DateFormat; … … 58 58 protected XsltTransformations xsltTransformation = null; 59 59 60 protected Map<String, JobDescription> job GridletsMap;61 protected Map<String, JobDescription> jobProfilesMap;60 protected Map<String, JobDescription> jobsMap; 61 protected Map<String, JobDescription> applicationProfilesMap; 62 62 63 63 public WorkloadLoader(XMLJobReader<org.qcg.broker.schemas.jobdesc.Job> xmlReader, WAReader<org.qcg.broker.schemas.jobdesc.Job> swfReader){ … … 69 69 this.generatedJobsCnt = 0; 70 70 this.generatedTasksCnt = 0; 71 this.job GridletsMap = new TreeMap<String, JobDescription>();72 this. jobProfilesMap = new TreeMap<String, JobDescription>();71 this.jobsMap = new TreeMap<String, JobDescription>(); 72 this.applicationProfilesMap = new TreeMap<String, JobDescription>(); 73 73 try { 74 74 this.xsltTransformation = new XsltTransformations(); … … 97 97 } 98 98 99 // needed for Gridletclass99 // needed for Executable class 100 100 101 101 String jobId = jobDescription.getJobId(); … … 107 107 String waTaskDesc[] = localWAParser.readTask(jobId, taskDesc.getTaskId()); 108 108 109 try{110 Integer.parseInt(taskDesc.getTaskId());111 } catch (NumberFormatException e){112 return jobDescription;113 }114 109 if(waTaskDesc != null) { 115 110 … … 188 183 while((jobDesc = this.xmlJobReader.readRaw()) != null){ 189 184 jobDesc = this.xsltTransformation.extendJobDescription(jobDesc); 190 int prevJobCnt = generatedJobsCnt;191 job = createJobDescription(jobDesc, puSpeed);192 if(job != null && prevJobCnt != generatedJobsCnt)193 this.jobGridletsMap.put(job.getJobId(), job);194 else if (prevJobCnt == generatedJobsCnt){195 Task taskPattern = job.getDescription().getTask(0);196 this.jobProfilesMap.put(taskPattern.getId(), job);197 }198 }199 } else { // use swf job reader. Job created by this reader does not require xslt transformation200 while((jobDesc = this.waReader.readRaw()) != null){201 185 job = createJobDescription(jobDesc, puSpeed); 202 186 if(job != null) 203 this.jobGridletsMap.put(job.getJobId(), job); 204 } 205 } 206 207 if(generatedJobsCnt == 0){ 187 this.jobsMap.put(job.getJobId(), job); 188 } 189 } else { // use swf job reader. Job created by this reader does not require xslt transformation 190 191 for(String key: waReader.getParser().getAppMapping().keySet()){ 192 jobDesc = loadApplicationProfile(waReader.getParser().getAppMapping().get(key)); 193 jobDesc = this.xsltTransformation.extendJobDescription(jobDesc); 194 195 try { 196 job = this.xsltTransformation.splitJobToTasks(jobDesc); 197 } catch (Exception e) { 198 throw new IOException(e.getMessage()); 199 } 200 201 this.applicationProfilesMap.put(key, job); 202 } 203 208 204 while((jobDesc = this.waReader.readRaw()) != null){ 209 205 QcgWAJobReader qcgReader = (QcgWAJobReader)waReader; 210 jobDesc = qcgReader.mergeSwfAndXmlProfile( jobProfilesMap, jobDesc);206 jobDesc = qcgReader.mergeSwfAndXmlProfile(applicationProfilesMap, jobDesc); 211 207 job = createJobDescription(jobDesc, puSpeed); 212 208 if(job != null) 213 this.job GridletsMap.put(job.getJobId(), job);209 this.jobsMap.put(job.getJobId(), job); 214 210 } 215 211 } … … 268 264 public List<JobDescription> getJobs(){ 269 265 ArrayList<JobDescription> list = 270 new ArrayList<JobDescription>(this.job GridletsMap.values());266 new ArrayList<JobDescription>(this.jobsMap.values()); 271 267 return list; 272 268 } … … 276 272 } 277 273 278 protected JobDescription createJobDescription(String jobDesc, long puSpeed, Map<String, JobDescription> jobProfilesMap) throws IOException{ 279 280 JobDescription jobDescription = null; 281 try { 282 jobDescription = this.xsltTransformation.splitJobToTasks(jobDesc); 283 } catch (Exception e) { 284 throw new IOException(e.getMessage()); 285 } 286 287 // look for any 288 289 if(jobDescription.size() == 0){ 290 if(log.isWarnEnabled()) 291 log.warn("Omitting tasks creation for job "+jobDescription.getDescription().getId()+". This job contains no tasks."); 292 return null; 293 } 294 295 String jobId = jobDescription.getJobId(); 296 int parserType = localWAParser.getType(); 297 298 for(int i = 0; i < jobDescription.size(); i++){ 299 TaskDescription taskDesc = jobDescription.get(i); 300 301 String waTaskDesc[] = localWAParser.readTask(jobId, taskDesc.getTaskId()); 302 303 if(waTaskDesc != null) { 304 305 if(parserType == 0){ 306 307 taskDesc.setUserDn(waTaskDesc[SWFFields.DATA_USER_ID]); 308 309 long timeValue = Long.parseLong(waTaskDesc[SWFFields.DATA_SUBMIT_TIME]); 310 taskDesc.setSubmissionTime(timeValue); 311 312 long waitTime = Long.parseLong(waTaskDesc[SWFFields.DATA_WAIT_TIME]); 313 taskDesc.setWorkloadLogWaitTime(waitTime); 314 315 timeValue = Long.parseLong(waTaskDesc[SWFFields.DATA_RUN_TIME]); 316 if(timeValue <= 0) 317 return null; 318 319 long allocProcesors = Long.parseLong(waTaskDesc[SWFFields.DATA_NUMBER_OF_ALLOCATED_PROCESSORS]); 320 if(allocProcesors <= 0) 321 return null; 322 323 timeValue = timeValue * puSpeed * allocProcesors; 324 taskDesc.setTaskLength(timeValue); 325 326 } else if(parserType == 1){ 327 328 taskDesc.setUserDn(waTaskDesc[GWFFields.DATA_USER_ID]); 329 330 long timeValue = Long.parseLong(waTaskDesc[GWFFields.DATA_SUBMIT_TIME]); 331 taskDesc.setSubmissionTime(timeValue); 332 333 long waitTime = Long.parseLong(waTaskDesc[GWFFields.DATA_WAIT_TIME]); 334 taskDesc.setWorkloadLogWaitTime(waitTime); 335 336 timeValue = Long.parseLong(waTaskDesc[GWFFields.DATA_RUN_TIME]); 337 if(timeValue <= 0) 338 return null; 339 340 long allocProcesors = Long.parseLong(waTaskDesc[GWFFields.DATA_NPROCS]); 341 if(allocProcesors <= 0) 342 return null; 343 344 timeValue = timeValue * puSpeed * allocProcesors; 345 taskDesc.setTaskLength(timeValue); 346 } 347 } 348 /*JobDescription xmlJobDescription = jobProfilesMap.get(taskDesc.getDescription().getExecution().getExecutable().getApplication().getName()); 349 if(xmlJobDescription != null){ 350 Task patternTask = xmlJobDescription.getDescription().getTask(0); 351 if(patternTask != null){ 352 ResourceConsumptionProfileType rcp = patternTask.getExecution().getResourceConsumptionProfile(); 353 taskDesc.getDescription().getExecution().setResourceConsumptionProfile(rcp); 354 } 355 }*/ 356 this.generatedTasksCnt++; 357 358 } 359 this.generatedJobsCnt++; 360 361 return jobDescription; 362 } 363 274 public String loadApplicationProfile(String fileName) throws IOException{ 275 276 BufferedReader reader = null; 277 StringBuffer buffer = new StringBuffer(); 278 279 try { 280 reader = new BufferedReader(new FileReader(fileName)); 281 String line = null; 282 283 while((line = reader.readLine()) != null){ 284 buffer.append(line); 285 } 286 287 } finally{ 288 reader.close(); 289 } 290 291 return buffer.toString(); 292 } 364 293 } -
DCWoRMS/branches/coolemall/src/simulator/workload/reader/archive/AbstractWAParser.java
r883 r1144 4 4 import java.io.RandomAccessFile; 5 5 import java.util.HashMap; 6 import java.util.Map; 6 7 7 8 import org.apache.commons.logging.Log; … … 150 151 String [] valueData = value.split(" "); 151 152 String appId = valueData[0]; 152 String appName = valueData[1];153 appMapping.put(appId, appName);153 String pathToAppProfile = valueData[1]; 154 appMapping.put(appId, pathToAppProfile); 154 155 continue; 155 156 } … … 295 296 296 297 297 public String getAppMapping(String appId) { 298 String appName = appMapping.get(appId); 299 return appName; 298 public Map<String, String> getAppMapping() { 299 return appMapping; 300 300 } 301 301 -
DCWoRMS/branches/coolemall/src/simulator/workload/reader/archive/QcgWAJobReader.java
r1131 r1144 109 109 } 110 110 111 public String mergeSwfAndXmlProfile( 111 public String mergeSwfAndXmlProfile(Map<String, JobDescription> jobProfilesMap, String swfJobDesc) throws IOException{ 112 112 113 113 StringReader reader = new StringReader(swfJobDesc); … … 123 123 } 124 124 125 JobDescription xmlJobDescription = jobProfilesMap.get(job.getTask(0).getExecution().getExecutable().getApplication().getName()); 126 if(xmlJobDescription != null){ 127 Task patternTask = xmlJobDescription.getDescription().getTask(0); 128 if(patternTask != null){ 129 ResourceConsumptionProfileType rcp = patternTask.getExecution().getResourceConsumptionProfile(); 130 job.getTask(0).getExecution().setResourceConsumptionProfile(rcp); 125 for(int i = 0; i < job.getTaskCount(); i++){ 126 127 JobDescription xmlJobDescription = jobProfilesMap.get(job.getTask(i).getExecution().getExecutable().getApplication().getAppProperty(0).getContent()); 128 if(xmlJobDescription != null){ 129 for(int j = 0; j < xmlJobDescription.size(); j++){ 130 Task patternTask = xmlJobDescription.getDescription().getTask(j); 131 if(patternTask != null){ 132 ResourceConsumptionProfileType rcp = patternTask.getExecution().getResourceConsumptionProfile(); 133 job.getTask(j).getExecution().setResourceConsumptionProfile(rcp); 134 } 135 } 131 136 } 132 137 } -
DCWoRMS/branches/coolemall/src/simulator/workload/reader/archive/WAParser.java
r883 r1144 3 3 import java.io.IOException; 4 4 import java.util.HashMap; 5 import java.util.Map; 5 6 6 7 import simulator.workload.exceptons.NoSuchCommentException; … … 44 45 public int getType(); 45 46 46 public String getAppMapping(String appId);47 public Map<String, String> getAppMapping(); 47 48 } -
DCWoRMS/branches/coolemall/src/simulator/workload/reader/archive/swf/QcgSWFJobReader.java
r1131 r1144 1 1 package simulator.workload.reader.archive.swf; 2 2 3 import org.qcg.broker.schemas.jobdesc.AppProperty; 3 4 import org.qcg.broker.schemas.jobdesc.Application; 4 5 import org.qcg.broker.schemas.jobdesc.ComputingResourceBaseTypeChoice; … … 40 41 private Log log = LogFactory.getLog(QcgSWFJobReader.class); 41 42 43 private static String DEFAULT_PATH_TO_APP_PROFILES = ""; 44 42 45 protected String currntJobID; 43 46 … … 218 221 219 222 case SWFFields.DATA_EXECUTABLE_NUMBER: 220 String appName = waParser.getAppMapping(String.valueOf(value)); 221 if(appName == null){ 223 String pathToAppProfile = waParser.getAppMapping().get(String.valueOf(value)); 224 String appName = null; 225 if(pathToAppProfile == null){ 222 226 if(value != -1){ 223 227 appName = String.valueOf(value); … … 225 229 appName = appTypeGen.randomAppType(); 226 230 } 231 pathToAppProfile = DEFAULT_PATH_TO_APP_PROFILES + appName; 232 } else { 233 String fullAppName = pathToAppProfile.substring(pathToAppProfile.lastIndexOf('/') + 1, pathToAppProfile.length()); 234 if(fullAppName != null) 235 appName = fullAppName.substring(0, fullAppName.lastIndexOf('.')); 236 else appName = fullAppName; 227 237 } 228 238 ExecutionType execType = new ExecutionType(); 229 239 Executable executable = new Executable(); 230 240 Application application = new Application(); 241 AppProperty appProp = new AppProperty(); 242 appProp.setName("appId"); 243 appProp.setContent(String.valueOf(value)); 244 application.addAppProperty(appProp); 245 /*appProp = new AppProperty(); 246 appProp.setName("appProfileLocation"); 247 appProp.setContent(pathToAppProfile); 248 application.addAppProperty(appProp);*/ 231 249 application.setName(appName); 232 250 executable.setApplication(application);
Note: See TracChangeset
for help on using the changeset viewer.