package test.article2.recs.utils; import java.util.HashMap; import java.util.Map; import java.util.Random; import schedframe.scheduling.tasks.TaskInterface; public class TaskToApp { private static int C_RAY = 33; private static int PYBENCH = 66; private static int UNPACK_LINUX = 100; private static Random randType = new Random(5); private static Map mappingType = new HashMap(); private static Random randLoad = new Random(5); private static Map mappingLoad = new HashMap(); private static double [] loadLevels = {0.25, 0.4, 0.5, 0.6, 0.75, 0.9, 1}; public AppType getAppType(TaskInterface task){ AppType appType = null; if(mappingType.get(task.getJobId())!= null){ appType = mappingType.get(task.getJobId()); }else{ appType = randomAppType(); mappingType.put(task.getJobId(), appType); }return appType; } private AppType randomAppType(){ AppType appType = null; int n = randType.nextInt(100); if(n < C_RAY){ appType = AppType.c_ray; }else if(n < PYBENCH){ appType = AppType.pybench; } else if (n < UNPACK_LINUX){ appType = AppType.unpack_linux; } return appType; } public double getAppLoad(TaskInterface task){ double appLoad = 0; if(mappingLoad.get(task.getJobId())!= null){ appLoad = mappingLoad.get(task.getJobId()); }else{ appLoad = randomAppLoad(); mappingLoad.put(task.getJobId(), appLoad); }return appLoad; } private double randomAppLoad(){ double appLoad = 0; int n = randLoad.nextInt(7); appLoad = loadLevels[n]; return appLoad; } }