Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
01/02/12 11:40:31 (12 years ago)
Author:
sforsten
Message:

#1708: merged r7209 from trunk

  • adjusted GUI
  • added toggle for the different series
  • X Axis labels are rounded to useful values
  • added ToolTip
Location:
branches/RegressionBenchmarks
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/RegressionBenchmarks

  • branches/RegressionBenchmarks/HeuristicLab.Clients.Hive/3.3

    • Property svn:ignore
      •  

        old new  
        11obj
        22Plugin.cs
         3bin
  • branches/RegressionBenchmarks/HeuristicLab.Clients.Hive/3.3/HiveClient.cs

    r7059 r7255  
    8282
    8383      try {
    84         this.IsAllowedPrivileged = ServiceLocator.Instance.CallHiveService((s) => s.IsAllowedPrivileged());
     84        this.IsAllowedPrivileged = HiveServiceLocator.Instance.CallHiveService((s) => s.IsAllowedPrivileged());
    8585
    8686        var oldJobs = jobs ?? new ItemCollection<RefreshableJob>();
    8787        jobs = new HiveItemCollection<RefreshableJob>();
    88         var jobsLoaded = ServiceLocator.Instance.CallHiveService<IEnumerable<Job>>(s => s.GetJobs());
     88        var jobsLoaded = HiveServiceLocator.Instance.CallHiveService<IEnumerable<Job>>(s => s.GetJobs());
    8989
    9090        foreach (var j in jobsLoaded) {
     
    113113        jobs = null;
    114114        throw;
    115       }
    116       finally {
     115      } finally {
    117116        OnRefreshed();
    118117      }
     
    143142        if (item is JobPermission) {
    144143          var hep = (JobPermission)item;
    145           hep.GrantedUserId = ServiceLocator.Instance.CallHiveService((s) => s.GetUserIdByUsername(hep.GrantedUserName));
     144          hep.GrantedUserId = HiveServiceLocator.Instance.CallHiveService((s) => s.GetUserIdByUsername(hep.GrantedUserName));
    146145          if (hep.GrantedUserId == Guid.Empty) {
    147146            throw new ArgumentException(string.Format("The user {0} was not found.", hep.GrantedUserName));
    148147          }
    149           ServiceLocator.Instance.CallHiveService((s) => s.GrantPermission(hep.JobId, hep.GrantedUserId, hep.Permission));
     148          HiveServiceLocator.Instance.CallHiveService((s) => s.GrantPermission(hep.JobId, hep.GrantedUserId, hep.Permission));
    150149        }
    151150      } else {
    152151        if (item is Job)
    153           ServiceLocator.Instance.CallHiveService(s => s.UpdateJob((Job)item));
     152          HiveServiceLocator.Instance.CallHiveService(s => s.UpdateJob((Job)item));
    154153      }
    155154    }
     
    177176
    178177      if (item is Job)
    179         ServiceLocator.Instance.CallHiveService(s => s.DeleteJob(item.Id));
    180       if (item is RefreshableJob)
    181         ServiceLocator.Instance.CallHiveService(s => s.DeleteJob(item.Id));
     178        HiveServiceLocator.Instance.CallHiveService(s => s.DeleteJob(item.Id));
     179      if (item is RefreshableJob) {
     180        RefreshableJob job = (RefreshableJob)item;
     181        if (job.RefreshAutomatically) {
     182          job.StopResultPolling();
     183        }
     184        HiveServiceLocator.Instance.CallHiveService(s => s.DeleteJob(item.Id));
     185      }
    182186      if (item is JobPermission) {
    183187        var hep = (JobPermission)item;
    184         ServiceLocator.Instance.CallHiveService(s => s.RevokePermission(hep.JobId, hep.GrantedUserId));
     188        HiveServiceLocator.Instance.CallHiveService(s => s.RevokePermission(hep.JobId, hep.GrantedUserId));
    185189      }
    186190      item.Id = Guid.Empty;
     
    216220
    217221    public static void PauseJob(RefreshableJob refreshableJob) {
    218       ServiceLocator.Instance.CallHiveService(service => {
     222      HiveServiceLocator.Instance.CallHiveService(service => {
    219223        foreach (HiveTask task in refreshableJob.GetAllHiveTasks()) {
    220224          if (task.Task.State != TaskState.Finished && task.Task.State != TaskState.Aborted && task.Task.State != TaskState.Failed)
     
    226230
    227231    public static void StopJob(RefreshableJob refreshableJob) {
    228       ServiceLocator.Instance.CallHiveService(service => {
     232      HiveServiceLocator.Instance.CallHiveService(service => {
    229233        foreach (HiveTask task in refreshableJob.GetAllHiveTasks()) {
    230234          if (task.Task.State != TaskState.Finished && task.Task.State != TaskState.Aborted && task.Task.State != TaskState.Failed)
     
    232236        }
    233237      });
    234       // execution state does not need to be set. it will be set to Stopped, when all jobs have been downloaded
     238      refreshableJob.ExecutionState = ExecutionState.Stopped;
     239    }
     240
     241    public static void ResumeJob(RefreshableJob refreshableJob) {
     242      HiveServiceLocator.Instance.CallHiveService(service => {
     243        foreach (HiveTask task in refreshableJob.GetAllHiveTasks()) {
     244          if (task.Task.State == TaskState.Paused) {
     245            service.RestartTask(task.Task.Id);
     246          }
     247        }
     248      });
     249      refreshableJob.ExecutionState = ExecutionState.Started;
    235250    }
    236251
     
    247262        var resourceIds = new List<Guid>();
    248263        foreach (var resourceName in resourceNames) {
    249           Guid resourceId = ServiceLocator.Instance.CallHiveService((s) => s.GetResourceId(resourceName));
     264          Guid resourceId = HiveServiceLocator.Instance.CallHiveService((s) => s.GetResourceId(resourceName));
    250265          if (resourceId == Guid.Empty) {
    251266            throw new ResourceNotFoundException(string.Format("Could not find the resource '{0}'", resourceName));
     
    260275        // upload Job
    261276        refreshableJob.Progress.Status = "Uploading Job...";
    262         refreshableJob.Job.Id = ServiceLocator.Instance.CallHiveService((s) => s.AddJob(refreshableJob.Job));
     277        refreshableJob.Job.Id = HiveServiceLocator.Instance.CallHiveService((s) => s.AddJob(refreshableJob.Job));
    263278        bool isPrivileged = refreshableJob.Job.IsPrivileged;
    264         refreshableJob.Job = ServiceLocator.Instance.CallHiveService((s) => s.GetJob(refreshableJob.Job.Id)); // update owner and permissions
     279        refreshableJob.Job = HiveServiceLocator.Instance.CallHiveService((s) => s.GetJob(refreshableJob.Job.Id)); // update owner and permissions
    265280        refreshableJob.Job.IsPrivileged = isPrivileged;
    266281        cancellationToken.ThrowIfCancellationRequested();
     
    272287        // upload plugins
    273288        refreshableJob.Progress.Status = "Uploading plugins...";
    274         this.OnlinePlugins = ServiceLocator.Instance.CallHiveService((s) => s.GetPlugins());
     289        this.OnlinePlugins = HiveServiceLocator.Instance.CallHiveService((s) => s.GetPlugins());
    275290        this.AlreadyUploadedPlugins = new List<Plugin>();
    276         Plugin configFilePlugin = ServiceLocator.Instance.CallHiveService((s) => UploadConfigurationFile(s, onlinePlugins));
     291        Plugin configFilePlugin = HiveServiceLocator.Instance.CallHiveService((s) => UploadConfigurationFile(s, onlinePlugins));
    277292        this.alreadyUploadedPlugins.Add(configFilePlugin);
    278293        cancellationToken.ThrowIfCancellationRequested();
     
    297312        }
    298313        refreshableJob.Job.Modified = false;
    299       }
    300       finally {
     314      } finally {
    301315        refreshableJob.IsProgressing = false;
    302316      }
     
    359373          if (!cancellationToken.IsCancellationRequested) {
    360374            lock (pluginLocker) {
    361               ServiceLocator.Instance.CallHiveService((s) => hiveTask.Task.PluginsNeededIds = PluginUtil.GetPluginDependencies(s, this.onlinePlugins, this.alreadyUploadedPlugins, plugins));
     375              HiveServiceLocator.Instance.CallHiveService((s) => hiveTask.Task.PluginsNeededIds = PluginUtil.GetPluginDependencies(s, this.onlinePlugins, this.alreadyUploadedPlugins, plugins));
    362376            }
    363377          }
    364         }, -1, "Failed to upload plugins");
     378        }, Settings.Default.MaxRepeatServiceCalls, "Failed to upload plugins");
    365379        cancellationToken.ThrowIfCancellationRequested();
    366380        hiveTask.Task.PluginsNeededIds.Add(configPluginId);
     
    372386          if (!cancellationToken.IsCancellationRequested) {
    373387            if (parentHiveTask != null) {
    374               hiveTask.Task.Id = ServiceLocator.Instance.CallHiveService((s) => s.AddChildTask(parentHiveTask.Task.Id, hiveTask.Task, taskData));
     388              hiveTask.Task.Id = HiveServiceLocator.Instance.CallHiveService((s) => s.AddChildTask(parentHiveTask.Task.Id, hiveTask.Task, taskData));
    375389            } else {
    376               hiveTask.Task.Id = ServiceLocator.Instance.CallHiveService((s) => s.AddTask(hiveTask.Task, taskData, groups.ToList()));
     390              hiveTask.Task.Id = HiveServiceLocator.Instance.CallHiveService((s) => s.AddTask(hiveTask.Task, taskData, groups.ToList()));
    377391            }
    378392          }
    379         }, 50, "Failed to add task", log);
     393        }, Settings.Default.MaxRepeatServiceCalls, "Failed to add task", log);
    380394        cancellationToken.ThrowIfCancellationRequested();
    381395
     
    400414          if (!ae.InnerExceptions.All(e => e is TaskCanceledException)) throw ae; // for some reason the WaitAll throws a AggregateException containg a TaskCanceledException. i don't know where it comes from, however the tasks all finish properly, so for now just ignore it
    401415        }
    402       }
    403       finally {
     416      } finally {
    404417        if (!semaphoreReleased) taskUploadSemaphore.Release();
    405418      }
     
    420433        // fetch all task objects to create the full tree of tree of HiveTask objects
    421434        refreshableJob.Progress.Status = "Downloading list of tasks...";
    422         allTasks = ServiceLocator.Instance.CallHiveService(s => s.GetLightweightJobTasks(hiveExperiment.Id));
     435        allTasks = HiveServiceLocator.Instance.CallHiveService(s => s.GetLightweightJobTasks(hiveExperiment.Id));
    423436        totalJobCount = allTasks.Count();
    424437
     438        refreshableJob.Progress.Status = "Downloading tasks...";
    425439        TaskDownloader downloader = new TaskDownloader(allTasks.Select(x => x.Id));
    426440        downloader.StartAsync();
     
    436450        }
    437451        IDictionary<Guid, HiveTask> allHiveTasks = downloader.Results;
    438 
    439         refreshableJob.HiveTasks = new ItemCollection<HiveTask>(allHiveTasks.Values.Where(x => !x.Task.ParentTaskId.HasValue));
    440 
     452        var parents = allHiveTasks.Values.Where(x => !x.Task.ParentTaskId.HasValue);
     453
     454        refreshableJob.Progress.Status = "Downloading/deserializing complete. Displaying tasks...";
     455        // build child-task tree
     456        foreach (HiveTask hiveTask in parents) {
     457          BuildHiveJobTree(hiveTask, allTasks, allHiveTasks);
     458        }
     459
     460        refreshableJob.HiveTasks = new ItemCollection<HiveTask>(parents);
    441461        if (refreshableJob.IsFinished()) {
    442462          refreshableJob.ExecutionState = Core.ExecutionState.Stopped;
     
    444464          refreshableJob.ExecutionState = Core.ExecutionState.Started;
    445465        }
    446 
    447         // build child-task tree
    448         foreach (HiveTask hiveTask in refreshableJob.HiveTasks) {
    449           BuildHiveJobTree(hiveTask, allTasks, allHiveTasks);
    450         }
    451 
    452466        refreshableJob.OnLoaded();
    453       }
    454       finally {
     467      } finally {
    455468        refreshableJob.IsProgressing = false;
    456469      }
    457470    }
    458471
    459     private static void BuildHiveJobTree(HiveTask parentHiveJob, IEnumerable<LightweightTask> allJobs, IDictionary<Guid, HiveTask> allHiveJobs) {
    460       IEnumerable<LightweightTask> childTasks = from job in allJobs
    461                                                 where job.ParentTaskId.HasValue && job.ParentTaskId.Value == parentHiveJob.Task.Id
     472    private static void BuildHiveJobTree(HiveTask parentHiveTask, IEnumerable<LightweightTask> allTasks, IDictionary<Guid, HiveTask> allHiveTasks) {
     473      IEnumerable<LightweightTask> childTasks = from job in allTasks
     474                                                where job.ParentTaskId.HasValue && job.ParentTaskId.Value == parentHiveTask.Task.Id
    462475                                                orderby job.DateCreated ascending
    463476                                                select job;
    464477      foreach (LightweightTask task in childTasks) {
    465         HiveTask childHiveTask = allHiveJobs[task.Id];
    466         parentHiveJob.AddChildHiveJob(childHiveTask);
    467         BuildHiveJobTree(childHiveTask, allJobs, allHiveJobs);
     478        HiveTask childHiveTask = allHiveTasks[task.Id];
     479        parentHiveTask.AddChildHiveTask(childHiveTask);
     480        BuildHiveJobTree(childHiveTask, allTasks, allHiveTasks);
    468481      }
    469482    }
     
    482495
    483496    public static ItemTask LoadItemJob(Guid jobId) {
    484       TaskData taskData = ServiceLocator.Instance.CallHiveService(s => s.GetTaskData(jobId));
     497      TaskData taskData = HiveServiceLocator.Instance.CallHiveService(s => s.GetTaskData(jobId));
    485498      try {
    486499        return PersistenceUtil.Deserialize<ItemTask>(taskData.Data);
     
    507520
    508521    public static HiveItemCollection<JobPermission> GetJobPermissions(Guid jobId) {
    509       return ServiceLocator.Instance.CallHiveService((service) => {
     522      return HiveServiceLocator.Instance.CallHiveService((service) => {
    510523        IEnumerable<JobPermission> jps = service.GetJobPermissions(jobId);
    511524        foreach (var hep in jps) {
Note: See TracChangeset for help on using the changeset viewer.