Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
09/24/12 15:24:24 (12 years ago)
Author:
jkarder
Message:

#1712: initial commit

Location:
branches/HiveTaskScheduler
Files:
5 added
9 edited
1 copied

Legend:

Unmodified
Added
Removed
  • branches/HiveTaskScheduler/HeuristicLab.Services.Hive/3.3/Convert.cs

    r7916 r8687  
    527527    }
    528528    #endregion
     529
     530    #region UserPriority
     531    public static DT.UserPriority ToDto(DB.UserPriority source) {
     532      if (source == null) return null;
     533      return new DT.UserPriority() { UserId = source.UserId };
     534    }
     535    public static DB.UserPriority ToEntity(DT.UserPriority source) {
     536      if (source == null) return null;
     537      var entity = new DB.UserPriority(); ToEntity(source, entity);
     538      return entity;
     539    }
     540    public static void ToEntity(DT.UserPriority source, DB.UserPriority target) {
     541      if ((source != null) && (target != null)) {
     542        target.UserId = source.UserId;
     543      }
     544    }
     545    #endregion
    529546  }
    530547}
  • branches/HiveTaskScheduler/HeuristicLab.Services.Hive/3.3/HeuristicLab.Services.Hive-3.3.csproj

    r8600 r8687  
    114114    <Compile Include="Convert.cs" />
    115115    <Compile Include="DataTransfer\Command.cs" />
     116    <Compile Include="DataTransfer\UserPriority.cs" />
    116117    <Compile Include="DataTransfer\ResourcePermission.cs" />
    117118    <Compile Include="DataTransfer\Downtime.cs" />
     
    139140    <Compile Include="HiveJanitor.cs" />
    140141    <Compile Include="Interfaces\IHiveDao.cs" />
     142    <Compile Include="Interfaces\ITaskScheduler.cs" />
     143    <Compile Include="Scheduler\RoundRobinTaskScheduler.cs" />
    141144    <Compile Include="Settings.cs" />
    142145    <None Include="app.config" />
     
    196199  </PropertyGroup>
    197200  <PropertyGroup>
    198    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
     201    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
    199202set ProjectDir=$(ProjectDir)
    200203set SolutionDir=$(SolutionDir)
     
    202205
    203206call PreBuildEvent.cmd</PreBuildEvent>
    204 <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
     207    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
    205208export ProjectDir=$(ProjectDir)
    206209export SolutionDir=$(SolutionDir)
  • branches/HiveTaskScheduler/HeuristicLab.Services.Hive/3.3/HiveDao.cs

    r7916 r8687  
    112112    }
    113113
    114     public IEnumerable<DT.Task> GetWaitingTasks(DT.Slave slave, int count) {
     114    public IEnumerable<DT.Task> GetWaitingTasks(DT.Slave slave) {
    115115      using (var db = CreateContext()) {
    116116        var resourceIds = GetParentResources(slave.Id).Select(r => r.Id);
     
    127127                    orderby ar.Task.Priority descending, db.Random() // take random task to avoid the race condition that occurs when this method is called concurrently (the same task would be returned)
    128128                    select DT.Convert.ToDto(ar.Task);
    129         var waitingTasks = (count == 0 ? query : query.Take(count)).ToArray();
     129        var waitingTasks = query.ToArray();
    130130        return waitingTasks;
    131131      }
     
    857857    #endregion
    858858
     859    #region UserPriority Methods
     860    public IEnumerable<DT.UserPriority> GetUserPriorities(Expression<Func<UserPriority, bool>> predicate) {
     861      using (var db = CreateContext()) {
     862        return db.UserPriorities.Where(predicate).Select(x => DT.Convert.ToDto(x)).ToArray();
     863      }
     864    }
     865    #endregion
     866
    859867    #region Helpers
    860868    private void CollectChildTasks(HiveDataContext db, Guid parentTaskId, List<Task> collection) {
  • branches/HiveTaskScheduler/HeuristicLab.Services.Hive/3.3/HiveService.cs

    r8071 r8687  
    499499    #endregion
    500500
     501    #region Resource Methods
     502    public IEnumerable<Resource> GetChildResources(Guid resourceId) {
     503      return dao.GetChildResources(resourceId);
     504    }
     505    #endregion
     506
    501507    #region Slave Methods
    502508    public int GetNewHeartbeatInterval(Guid slaveId) {
     
    671677    #endregion
    672678
     679    #region UserPriority Methods
     680    public IEnumerable<UserPriority> GetUserPriorities() {
     681      return trans.UseTransaction(() => dao.GetUserPriorities(x => true));
     682    }
     683    #endregion
     684
    673685    #region Helper Methods
    674686    private IEnumerable<Task> GetChildTasks(Guid? parentTaskId, bool recursive, bool includeParent) {
     
    687699    }
    688700    #endregion
     701
     702    #region Statistics Methods
     703    public IEnumerable<Statistics> GetStatistics() {
     704      return dao.GetStatistics(x => true);
     705    }
     706    public IEnumerable<Statistics> GetStatisticsForTimePeriod(DateTime from, DateTime to) {
     707      return dao.GetStatistics(x => x.Timestamp >= from && x.Timestamp <= to);
     708    }
     709    #endregion
    689710  }
    690711}
  • branches/HiveTaskScheduler/HeuristicLab.Services.Hive/3.3/Interfaces/IHiveDao.cs

    r7916 r8687  
    3434    void UpdateTask(DT.Task dto);
    3535    void DeleteTask(Guid id);
    36     IEnumerable<DT.Task> GetWaitingTasks(DT.Slave slave, int count);
     36    IEnumerable<DT.Task> GetWaitingTasks(DT.Slave slave);
    3737    IEnumerable<DT.Task> GetParentTasks(IEnumerable<Guid> resourceIds, int count, bool finished);
    3838    DT.Task UpdateTaskState(Guid taskId, TaskState taskState, Guid? slaveId, Guid? userId, string exception);
     
    151151    List<DT.UserStatistics> GetUserStatistics();
    152152    #endregion
     153
     154    #region UserPriority Methods
     155    IEnumerable<DT.UserPriority> GetUserPriorities(Expression<Func<UserPriority, bool>> predicate);
     156    #endregion
    153157  }
    154158}
  • branches/HiveTaskScheduler/HeuristicLab.Services.Hive/3.3/Interfaces/IServiceLocator.cs

    r8051 r8687  
    3131    Access.IUserManager UserManager { get; }
    3232    HeartbeatManager HeartbeatManager { get; }
     33    ITaskScheduler TaskScheduler { get; }
    3334  }
    3435}
  • branches/HiveTaskScheduler/HeuristicLab.Services.Hive/3.3/Manager/HeartbeatManager.cs

    r7723 r8687  
    3131      get { return ServiceLocator.Instance.HiveDao; }
    3232    }
    33     private IAuthorizationManager auth {
    34       get { return ServiceLocator.Instance.AuthorizationManager; }
     33    private ITaskScheduler taskScheduler {
     34      get { return ServiceLocator.Instance.TaskScheduler; }
    3535    }
    3636
     
    6363        // assign new task
    6464        if (heartbeat.AssignJob && slave.IsAllowedToCalculate && heartbeat.FreeCores > 0) {
    65           var availableJobs = dao.GetWaitingTasks(slave, 1);
    66           if (availableJobs.Count() > 0) {
     65          var availableJobs = taskScheduler.Schedule(dao.GetWaitingTasks(slave));
     66          if (availableJobs.Any()) {
    6767            var job = availableJobs.First();
    6868            if (AssignJob(slave, job))
  • branches/HiveTaskScheduler/HeuristicLab.Services.Hive/3.3/ServiceContracts/IHiveService.cs

    r8071 r8687  
    168168    #endregion
    169169
     170    #region Resource Methods
     171    [OperationContract]
     172    IEnumerable<Resource> GetChildResources(Guid resourceId);
     173    #endregion
     174
    170175    #region Slave Methods
    171176    [OperationContract]
     
    238243    [OperationContract]
    239244    Guid GetUserIdByUsername(string username);
     245    #endregion
     246
     247    #region UserPriorities Methods
     248    [OperationContract]
     249    IEnumerable<UserPriority> GetUserPriorities();
     250    #endregion
     251
     252    #region Statistics Methods
     253    [OperationContract]
     254    IEnumerable<Statistics> GetStatistics();
     255    [OperationContract]
     256    IEnumerable<Statistics> GetStatisticsForTimePeriod(DateTime from, DateTime to);
    240257    #endregion
    241258  }
  • branches/HiveTaskScheduler/HeuristicLab.Services.Hive/3.3/ServiceLocator.cs

    r8051 r8687  
    8989      }
    9090    }
     91
     92    private ITaskScheduler taskScheduler;
     93    public ITaskScheduler TaskScheduler {
     94      get {
     95        if (taskScheduler == null) taskScheduler = new RoundRobinTaskScheduler();
     96        return taskScheduler;
     97      }
     98    }
    9199  }
    92100}
Note: See TracChangeset for help on using the changeset viewer.