- Timestamp:
- 02/17/11 14:47:56 (13 years ago)
- Location:
- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.Tests
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.Tests/DaoTests.cs
r5405 r5511 1 1 using System; 2 using System.Text;3 using System.Collections.Generic;4 2 using System.Linq; 5 using Microsoft.VisualStudio.TestTools.UnitTesting;6 3 using HeuristicLab.Services.Hive.Common.DataTransfer; 7 4 using HeuristicLab.Services.Hive.Common.ServiceContracts; 8 using HeuristicLab.Clients.Hive.Slave.Tests;9 using HeuristicLab.Clients.Hive;10 5 using HeuristicLab.Services.Hive.DataAccess; 6 using Microsoft.VisualStudio.TestTools.UnitTesting; 11 7 12 8 namespace HeuristicLab.Services.Hive.Tests { 13 using DA = HeuristicLab.Services.Hive.DataAccess;14 9 using DT = HeuristicLab.Services.Hive.Common.DataTransfer; 15 10 … … 32 27 33 28 DT.Job job1 = new DT.Job(); 34 job1. DateCreated = DateTime.Now;29 job1.SetState(JobState.Offline, Guid.NewGuid()); 35 30 36 31 DT.Plugin plugin1 = new DT.Plugin(); … … 57 52 Assert.AreEqual(job1.Id, job1loaded.Id); 58 53 Assert.AreEqual(job1.CoresNeeded, job1loaded.CoresNeeded); 59 Assert.AreEqual(null, job1loaded.DateCalculated);60 54 Assert.AreEqual(job1.DateCreated.ToString(), job1loaded.DateCreated.ToString()); 61 55 Assert.AreEqual(null, job1loaded.DateFinished); 62 56 Assert.IsTrue(job1.PluginsNeededIds.SequenceEqual(job1loaded.PluginsNeededIds)); 63 57 Assert.AreEqual(job1.StateLog.Count, job1loaded.StateLog.Count); 58 for (int i = 0; i < job1.StateLog.Count; i++) { 59 Assert.AreEqual(job1.Id, job1loaded.StateLog[i].JobId); 60 Assert.AreEqual(job1.StateLog[i].State, job1loaded.StateLog[i].State); 61 Assert.AreEqual(job1.StateLog[i].SlaveId, job1loaded.StateLog[i].SlaveId); 62 Assert.AreEqual(job1.StateLog[i].UserId, job1loaded.StateLog[i].UserId); 63 Assert.AreEqual(job1.StateLog[i].Exception, job1loaded.StateLog[i].Exception); 64 Assert.IsTrue(Math.Abs((job1.StateLog[i].DateTime - job1loaded.StateLog[i].DateTime).TotalSeconds) < 1); 65 } 66 64 67 dao.DeleteJob(job1.Id); 65 68 … … 96 99 dao.DeleteSlave(slave.Id); 97 100 dao.DeleteSlaveGroup(slaveGroup.Id); 98 }99 100 [TestMethod]101 public void TestJobDaoWaiting() {102 IHiveDao dao = ServiceLocator.Instance.HiveDao;103 104 DT.Job job = new DT.Job();105 job.DateCreated = DateTime.Now;106 job.JobState = JobState.Waiting;107 job.Id = dao.AddJob(job);108 109 // todo110 101 } 111 102 … … 152 143 } 153 144 145 [TestMethod] 146 public void TestHiveExperimentDao() { 147 IHiveDao dao = ServiceLocator.Instance.HiveDao; 148 149 DT.HiveExperiment he = new DT.HiveExperiment(); 150 151 DT.Job job = new DT.Job(); 152 job.SetState(JobState.Offline, Guid.NewGuid()); 153 job.Id = dao.AddJob(job); 154 155 he.RootJobId = job.Id; 156 he.DateCreated = DateTime.Now; 157 he.Name = "TestExperiment"; 158 he.OwnerUserId = Guid.NewGuid(); 159 he.ResourceNames = "HEAL"; 160 161 he.Id = dao.AddHiveExperiment(he); 162 163 DT.HiveExperimentPermission perm = new DT.HiveExperimentPermission(); 164 perm.HiveExperimentId = he.Id; 165 perm.GrantedByUserId = he.OwnerUserId; 166 perm.GrantedUserId = Guid.NewGuid(); 167 perm.Permission = Permission.Write; 168 dao.AddHiveExperimentPermission(perm); 169 170 DT.HiveExperiment heLoaded = dao.GetHiveExperiment(he.Id); 171 Assert.AreEqual(he.Id, heLoaded.Id); 172 Assert.AreEqual(he.Name, heLoaded.Name); 173 Assert.AreEqual(he.ResourceNames, heLoaded.ResourceNames); 174 Assert.AreEqual(he.RootJobId, heLoaded.RootJobId); 175 //Assert.AreEqual(he.LastAccessed, heLoaded.LastAccessed); 176 //Assert.AreEqual(he.DateCreated, heLoaded.DateCreated); 177 178 DT.Job jobLoaded = dao.GetJob(he.RootJobId); 179 Assert.AreEqual(job.Id, jobLoaded.Id); 180 Assert.AreEqual(job.State, jobLoaded.State); 181 182 DT.HiveExperimentPermission permLoaded = dao.GetHiveExperimentPermission(he.Id, perm.GrantedUserId); 183 Assert.AreEqual(perm.HiveExperimentId, permLoaded.HiveExperimentId); 184 Assert.AreEqual(perm.GrantedUserId, permLoaded.GrantedUserId); 185 Assert.AreEqual(perm.GrantedByUserId, permLoaded.GrantedByUserId); 186 Assert.AreEqual(perm.Permission, permLoaded.Permission); 187 188 dao.DeleteHiveExperiment(he.Id); 189 Assert.AreEqual(null, dao.GetHiveExperiment(he.Id)); 190 Assert.AreEqual(null, dao.GetJob(he.RootJobId)); 191 Assert.AreEqual(null, dao.GetHiveExperimentPermission(perm.HiveExperimentId, perm.GrantedUserId)); 192 193 } 154 194 } 155 195 } -
branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.Tests/ServiceTests.cs
r5404 r5511 23 23 using System.Collections.Generic; 24 24 using System.Linq; 25 using System.Threading; 25 26 using HeuristicLab.Clients.Hive; 26 27 using HeuristicLab.Clients.Hive.Slave.Tests; 28 using HeuristicLab.Hive; 29 using HeuristicLab.Services.Hive.Common; 27 30 using HeuristicLab.Services.Hive.Common.DataTransfer; 28 31 using HeuristicLab.Services.Hive.Common.ServiceContracts; 29 32 using Microsoft.VisualStudio.TestTools.UnitTesting; 30 using System.Threading;31 using HeuristicLab.Hive;32 using HeuristicLab.Services.Hive.Common;33 33 34 34 namespace HeuristicLab.Services.Hive.Tests { 35 35 36 using System.Diagnostics; 36 37 using DT = HeuristicLab.Services.Hive.Common.DataTransfer; 37 using System.Diagnostics;38 38 39 39 [TestClass] … … 54 54 var service = GetLocalService(); 55 55 56 // create hive experiment 56 57 DT.HiveExperiment experiment = new DT.HiveExperiment() { 57 58 Name = "TestExperiment", … … 59 60 }; 60 61 62 // create job 61 63 DT.Job job = new DT.Job() { 62 64 CoresNeeded = 1, … … 64 66 Priority = 0 65 67 }; 68 job.SetState(JobState.Offline); 66 69 67 70 DT.JobData jobData = new DT.JobData() { 68 Data = PersistenceUtil.Serialize(new MockJob(500, true)) 71 //Data = PersistenceUtil.Serialize(new MockJob(500, true)) 72 Data = new byte[10000000] 69 73 }; 70 74 75 // create plugin 71 76 DT.Plugin plugin1 = new DT.Plugin(); 72 77 plugin1.Name = "Tests.MyPlugin"; … … 77 82 78 83 DT.PluginData pluginData1 = new DT.PluginData(); 79 pluginData1.PluginId = plugin1.Id;80 84 pluginData1.FileName = "Tests.MyPlugin-1.0.dll"; 81 85 pluginData1.Data = new byte[] { 0, 1, 2, 3, 4, 5 }; 82 86 87 plugin1.Id = service.AddPlugin(plugin1, new List<PluginData> { pluginData1 }); 88 pluginData1.PluginId = plugin1.Id; 89 90 // add plugin 83 91 job.PluginsNeededIds.Add(plugin1.Id); 84 92 85 job.Id = service.AddJob(job, jobData, null); 93 // create slave 94 DT.Slave slave = new Slave(); 95 slave.Id = Guid.NewGuid(); 96 slave.Name = "TestSlave"; 97 slave.Memory = 1024; 98 slave.Cores = 4; 99 slave.CpuSpeed = 2800; 100 slave.OperatingSystem = "Windows 3.11"; 101 slave.CpuArchitecture = CpuArchitecture.x64; 102 103 // add slave 104 service.AddSlave(slave); 105 106 // add job 107 job.Id = service.AddJob(job, jobData, new List<Guid> { slave.Id }); 86 108 experiment.RootJobId = job.Id; 87 109 110 // add hive experiment 111 experiment.Id = service.AddHiveExperiment(experiment); 112 113 // test job 88 114 DT.Job jobLoaded = service.GetJob(job.Id); 89 115 Assert.AreEqual(job.Id, jobLoaded.Id); … … 91 117 Assert.AreEqual(job.MemoryNeeded, jobLoaded.MemoryNeeded); 92 118 Assert.AreEqual(job.Priority, jobLoaded.Priority); 93 Assert.AreEqual(JobState.Waiting, jobLoaded.JobState); 94 Assert.AreEqual(ServiceLocator.Instance.AuthorizationManager.UserId, job.UserId); 119 Assert.AreEqual(JobState.Waiting, jobLoaded.State); 95 120 Assert.IsTrue(job.PluginsNeededIds.SequenceEqual(jobLoaded.PluginsNeededIds)); 96 121 97 122 DT.JobData jobDataLoaded = service.GetJobData(job.Id); 98 123 Assert.AreEqual(job.Id, jobDataLoaded.JobId); 99 124 Assert.IsTrue(jobData.Data.SequenceEqual(jobDataLoaded.Data)); 100 125 101 experiment.Id = service.AddHiveExperiment(experiment); 102 126 // test hive experiment 103 127 DT.HiveExperiment experimentLoaded = service.GetHiveExperiment(experiment.Id); 104 128 Assert.AreEqual(experiment.Id, experimentLoaded.Id); … … 107 131 Assert.AreEqual(experiment.RootJobId, experimentLoaded.RootJobId); 108 132 133 // test assigned ressources 134 var actions = service.Heartbeat(new Heartbeat() { SlaveId = slave.Id, AssignJob = true, FreeCores = 4, FreeMemory = 1024, JobProgress = new Dictionary<Guid,TimeSpan>() }); 135 Assert.AreEqual(1, actions.Count); 136 Assert.AreEqual(MessageContainer.MessageType.CalculateJob, actions[0].Message); 137 Assert.AreEqual(job.Id, actions[0].JobId); 138 139 jobLoaded = service.GetJob(job.Id); 140 Assert.AreEqual(JobState.Transferring, jobLoaded.State); 141 142 // send progress 143 var progress = new Dictionary<Guid, TimeSpan>(); 144 progress.Add(job.Id, new TimeSpan(1, 5, 10, 20, 30)); 145 actions = service.Heartbeat(new Heartbeat() { SlaveId = slave.Id, AssignJob = true, FreeCores = 3, FreeMemory = 1024, JobProgress = progress }); 146 Assert.AreEqual(0, actions.Count); 147 148 // the job should be in state 'Calculating' now 149 jobLoaded = service.GetJob(job.Id); 150 Assert.AreEqual(JobState.Calculating, jobLoaded.State); 151 Assert.AreEqual(new TimeSpan(1, 5, 10, 20, 30), jobLoaded.ExecutionTime.Value); 152 153 // delete 109 154 service.DeleteHiveExperiment(experiment.Id); 110 155 Assert.AreEqual(null, service.GetHiveExperiment(experiment.Id)); 111 156 Assert.AreEqual(null, service.GetJob(job.Id)); 112 157 Assert.AreEqual(null, service.GetJobData(job.Id)); 158 159 // send another heartbeat with the deleted job; the server should command the abortion of the job 160 actions = service.Heartbeat(new Heartbeat() { SlaveId = slave.Id, AssignJob = true, FreeCores = 3, FreeMemory = 1024, JobProgress = progress }); 161 Assert.AreEqual(1, actions.Count); 162 Assert.AreEqual(MessageContainer.MessageType.AbortJob, actions[0].Message); 163 Assert.AreEqual(job.Id, actions[0].JobId); 164 165 // delete slave 166 service.DeleteSlave(slave.Id); 113 167 } 114 168 … … 185 239 Thread.Sleep(500); 186 240 lightweightJobs = service.GetLightweightJobs(jobs.Select(x => x.Id)); 187 } while (!lightweightJobs.All(x => x. JobState == JobState.Finished));241 } while (!lightweightJobs.All(x => x.State == JobState.Finished)); 188 242 189 243 // delete slaves … … 239 293 IJob deserializedJob = PersistenceUtil.Deserialize<IJob>(jobData.Data); 240 294 deserializedJob.Start(); 241 job. JobState = JobState.Finished;242 jobs.Where(x => x.Id == job.Id).Single(). JobState = JobState.Finished;295 job.SetState(JobState.Finished); 296 jobs.Where(x => x.Id == job.Id).Single().SetState(JobState.Finished); 243 297 jobData.Data = PersistenceUtil.Serialize(deserializedJob); 244 service.UpdateJob (job, jobData);298 service.UpdateJobData(job, jobData); 245 299 Debug.WriteLine("finished calculating"); 246 300 }
Note: See TracChangeset
for help on using the changeset viewer.