Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
12/14/10 16:52:55 (13 years ago)
Author:
cneumuel
Message:

#1233

  • made MockJob to execute asynchronously with the option to spinWait
  • added methods to IHiveService
  • implemented methods for Slave handling in HiveService
  • added more tests for server
  • changed db-schema of slaves and slavegroups
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive/3.4/HiveService.cs

    r5102 r5106  
    1717  /// Implementation of the Hive service (interface <see cref="IHiveService"/>).
    1818  /// </summary>
    19   [ServiceBehavior(InstanceContextMode=InstanceContextMode.PerCall)]
     19  [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
    2020  public class HiveService : IHiveService {
    2121    private DataAccess.IHiveDao dao {
     
    3737    public Guid AddJob(Job job, JobData jobData) {
    3838      using (trans.OpenTransaction()) {
     39        job.UserId = auth.UserId;
     40        job.DateCreated = DateTime.Now;
     41        job.JobState = JobState.Waiting;
    3942        jobData.JobId = dao.AddJob(job);
     43        jobData.LastUpdate = DateTime.Now;
    4044        dao.AddJobData(jobData);
    4145        return jobData.JobId;
     
    4650      using (trans.OpenTransaction()) {
    4751        job.ParentJobId = parentJobId;
     52        jobData.LastUpdate = DateTime.Now;
    4853        return AddJob(job, jobData);
    4954      }
     
    6671    }
    6772
    68     // formerly GetLastSerializedResult
    6973    public JobData GetJobData(Guid jobId) {
    7074      return dao.GetJobData(jobId);
    7175    }
    7276
    73     public Stream GetJobDataStreamed(Guid jobId) {
    74       throw new NotImplementedException();
    75     }
    76 
    77     public void UpdateJob(Job jobDto, JobData jobDataDto) {
    78       using (trans.OpenTransaction()) {
    79         dao.UpdateJob(jobDto);
    80         dao.UpdateJobData(jobDataDto);
    81       }
    82     }
    83 
    84     public void UpdateJobDataStreamed(Stream stream) {
    85       using (trans.OpenTransaction()) {
    86         throw new NotImplementedException();
    87       }
    88     }
    89 
    90     public void DeleteChildJobs(Guid jobId) {
    91       using (trans.OpenTransaction()) {
    92         var jobs = GetChildJobs(jobId, true, false);
     77    public void UpdateJob(Job job, JobData jobData) {
     78      using (trans.OpenTransaction()) {
     79        jobData.LastUpdate = DateTime.Now;
     80        dao.UpdateJob(job);
     81        dao.UpdateJobData(jobData);
     82      }
     83    }
     84
     85    public void DeleteJob(Guid jobId) {
     86      using (trans.OpenTransaction()) {
     87        dao.DeleteJob(jobId);
     88      }
     89    }
     90
     91    public void DeleteChildJobs(Guid parentJobId) {
     92      using (trans.OpenTransaction()) {
     93        var jobs = GetChildJobs(parentJobId, true, false);
    9394        foreach (var job in jobs) {
    9495          dao.DeleteJob(job.Id);
     
    144145      using (trans.OpenTransaction()) {
    145146        hiveExperimentDto.UserId = auth.UserId;
     147        hiveExperimentDto.DateCreated = DateTime.Now;
    146148        return dao.AddHiveExperiment(hiveExperimentDto);
    147149      }
     
    157159      using (trans.OpenTransaction()) {
    158160        HiveExperiment he = dao.GetHiveExperiment(hiveExperimentId);
    159         if (he.RootJobId.HasValue) {
    160           var jobs = GetChildJobs(he.RootJobId.Value, true, true);
    161           foreach (var j in jobs) {
    162             dao.DeleteJobData(j.Id);
    163             dao.DeleteJob(j.Id);
    164           }
    165         }
    166         dao.DeleteHiveExperiment(hiveExperimentId);
    167       }
    168     }
    169     #endregion
    170    
     161        dao.DeleteHiveExperiment(hiveExperimentId); // child jobs will be deleted by db-trigger
     162      }
     163    }
     164    #endregion
     165
    171166    #region Login Methods
    172167    public void Hello(Guid slaveId, string name, int cores, int memory) {
     
    208203    }
    209204    #endregion
    210    
     205
    211206    #region Slave Methods
    212207    public Guid AddSlave(Slave slave) {
     
    222217    }
    223218
     219    public Slave GetSlave(Guid slaveId) {
     220      return dao.GetSlave(slaveId);
     221    }
     222
     223    public SlaveGroup GetSlaveGroup(Guid slaveGroupId) {
     224      return dao.GetSlaveGroup(slaveGroupId);
     225    }
     226
    224227    public IEnumerable<Slave> GetSlaves() {
    225228      return dao.GetSlaves(x => true);
     
    230233    }
    231234
     235    public void UpdateSlave(Slave slave) {
     236      using (trans.OpenTransaction()) {
     237        dao.UpdateSlave(slave);
     238      }
     239    }
     240
     241    public void UpdateSlaveGroup(SlaveGroup slaveGroup) {
     242      using (trans.OpenTransaction()) {
     243        dao.UpdateSlaveGroup(slaveGroup);
     244      }
     245    }
     246
     247    public void DeleteSlave(Guid slaveId) {
     248      using (trans.OpenTransaction()) {
     249        dao.DeleteSlave(slaveId);
     250      }
     251    }
     252
    232253    public void DeleteSlaveGroup(Guid slaveGroupId) {
    233254      using (trans.OpenTransaction()) {
     
    236257    }
    237258
    238     public void AddResourceToGroup(Guid slaveGroupId, Resource resource) {
    239       using (trans.OpenTransaction()) {
    240         throw new NotImplementedException();
    241       }
    242     }
    243 
    244     public void RemoveResourceFromGroup(Guid clientGroupId, Guid resourceId) {
    245       using (trans.OpenTransaction()) {
    246         throw new NotImplementedException();
    247       }
    248     }
    249 
    250     public void UpdateSlave(Slave slave) {
    251       using (trans.OpenTransaction()) {
    252         dao.UpdateSlave(slave);
    253       }
    254     }
     259    public void AddResourceToGroup(Guid slaveGroupId, Guid resourceId) {
     260      using (trans.OpenTransaction()) {
     261        var resource = dao.GetResource(resourceId);
     262        resource.ParentResourceId = slaveGroupId;
     263        dao.UpdateResource(resource);
     264      }
     265    }
     266
     267    public void RemoveResourceFromGroup(Guid slaveGroupId, Guid resourceId) {
     268      using (trans.OpenTransaction()) {
     269        var resource = dao.GetResource(resourceId);
     270        resource.ParentResourceId = null;
     271        dao.UpdateResource(resource);
     272      }
     273    }
     274
    255275    #endregion
    256276
Note: See TracChangeset for help on using the changeset viewer.