Free cookie consent management tool by TermsFeed Policy Generator

source: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.Tests/DaoTests.cs @ 5779

Last change on this file since 5779 was 5779, checked in by cneumuel, 13 years ago

#1233

  • implemented pause, stop for single jobs
  • introduced Command property for jobs (to distinguish between state and command (abort vs. aborted))
  • improved behaviour of ItemTreeView (double click opens new window, selected item stays marked)
  • fixed bugs in StateLogGanttChartListView and HiveJobView
  • fixed cloning of client-side dtos
File size: 8.7 KB
Line 
1using System;
2using System.Linq;
3using HeuristicLab.Services.Hive.Common.DataTransfer;
4using HeuristicLab.Services.Hive.Common.ServiceContracts;
5using HeuristicLab.Services.Hive.DataAccess;
6using Microsoft.VisualStudio.TestTools.UnitTesting;
7
8namespace HeuristicLab.Services.Hive.Tests {
9  using System.Threading;
10  using DT = HeuristicLab.Services.Hive.Common.DataTransfer;
11
12  [TestClass]
13  public class DaoTests {
14
15    [ClassInitialize]
16    public static void MyClassInitialize(TestContext testContext) {
17      PluginLoader.pluginAssemblies.Any();
18      ServiceLocator.Instance = new MockServiceLocator(ServiceLocator.Instance);
19    }
20
21    private IHiveService GetLocalService() {
22      return new HiveService();
23    }
24
25    [TestMethod]
26    public void TestJobDao() {
27      IHiveDao dao = ServiceLocator.Instance.HiveDao;
28
29      DT.Job job1 = new DT.Job();
30      job1.State = JobState.Offline;
31      job1.StateLog.Add(new DT.StateLog { State = JobState.Offline, DateTime = DateTime.Now });
32      job1.Command = Command.Pause;
33
34      DT.Plugin plugin1 = new DT.Plugin();
35      plugin1.Name = "Tests.MyPlugin";
36      plugin1.Version = new Version("1.0.0.0");
37      plugin1.UserId = Guid.Empty;
38      plugin1.IsLocal = true;
39      plugin1.DateCreated = DateTime.Now;
40
41      DT.PluginData pluginData1 = new DT.PluginData();
42      pluginData1.PluginId = plugin1.Id;
43      pluginData1.FileName = "Tests.MyPlugin-1.0.dll";
44      pluginData1.Data = new byte[] { 0, 1, 2, 3, 4, 5 };
45
46      plugin1.Id = dao.AddPlugin(plugin1);
47      pluginData1.PluginId = plugin1.Id;
48      pluginData1.Id = dao.AddPluginData(pluginData1);
49
50      job1.PluginsNeededIds.Add(plugin1.Id);
51
52      job1.Id = dao.AddJob(job1);
53
54      DT.Job job1loaded = dao.GetJob(job1.Id);
55      Assert.AreEqual(job1.Id, job1loaded.Id);
56      Assert.AreEqual(job1.CoresNeeded, job1loaded.CoresNeeded);
57      Assert.AreEqual(job1.DateCreated.ToString(), job1loaded.DateCreated.ToString());
58      Assert.AreEqual(null, job1loaded.DateFinished);
59      Assert.IsTrue(job1.PluginsNeededIds.SequenceEqual(job1loaded.PluginsNeededIds));
60      Assert.AreEqual(job1.StateLog.Count, job1loaded.StateLog.Count);
61      Assert.AreEqual(job1.Command, job1loaded.Command);
62      for (int i = 0; i < job1.StateLog.Count; i++) {
63        Assert.AreEqual(job1.Id, job1loaded.StateLog[i].JobId);
64        Assert.AreEqual(job1.StateLog[i].State, job1loaded.StateLog[i].State);
65        Assert.AreEqual(job1.StateLog[i].SlaveId, job1loaded.StateLog[i].SlaveId);
66        Assert.AreEqual(job1.StateLog[i].UserId, job1loaded.StateLog[i].UserId);
67        Assert.AreEqual(job1.StateLog[i].Exception, job1loaded.StateLog[i].Exception);
68        Assert.IsTrue(Math.Abs((job1.StateLog[i].DateTime - job1loaded.StateLog[i].DateTime).TotalSeconds) < 1);
69      }
70     
71      job1 = job1loaded;
72
73      // test jobstates
74      job1.StateLog.Add(new DT.StateLog { State = JobState.Transferring, DateTime = DateTime.Now }); Thread.Sleep(10);
75      job1.StateLog.Add(new DT.StateLog { State = JobState.Calculating, DateTime = DateTime.Now }); Thread.Sleep(10);
76      job1.StateLog.Add(new DT.StateLog { State = JobState.Transferring, DateTime = DateTime.Now }); Thread.Sleep(10);
77      job1.StateLog.Add(new DT.StateLog { State = JobState.Finished, DateTime = DateTime.Now }); Thread.Sleep(10);
78      dao.UpdateJob(job1);
79
80      job1loaded = dao.GetJob(job1.Id);
81      for (int i = 0; i < job1.StateLog.Count; i++) {
82        Assert.AreEqual(job1.Id, job1loaded.StateLog[i].JobId);
83        Assert.AreEqual(job1.StateLog[i].State, job1loaded.StateLog[i].State);
84        Assert.AreEqual(job1.StateLog[i].SlaveId, job1loaded.StateLog[i].SlaveId);
85        Assert.AreEqual(job1.StateLog[i].UserId, job1loaded.StateLog[i].UserId);
86        Assert.AreEqual(job1.StateLog[i].Exception, job1loaded.StateLog[i].Exception);
87        Assert.IsTrue(Math.Abs((job1.StateLog[i].DateTime - job1loaded.StateLog[i].DateTime).TotalSeconds) < 1);
88      }
89
90      dao.DeleteJob(job1.Id);
91
92      Assert.AreEqual(null, dao.GetJob(job1.Id));
93    }
94
95    [TestMethod]
96    public void TestSlaveDao() {
97      IHiveDao dao = ServiceLocator.Instance.HiveDao;
98      DT.SlaveGroup slaveGroup = new DT.SlaveGroup() {
99        Name = "Test"
100      };
101      slaveGroup.Id = dao.AddSlaveGroup(slaveGroup);
102
103      DT.Slave slave = new DT.Slave() {
104        Id = Guid.NewGuid(),
105        Name = "Test",
106        OperatingSystem = null, //"Windows 3.11",
107        Cores = 2,
108        Memory = 1024,
109        FreeMemory = 512
110      };
111
112      Assert.AreEqual(slave.Id, dao.AddSlave(slave));
113
114      // update
115      slave.FreeMemory = 255;
116      slave.OperatingSystem = Environment.OSVersion.VersionString;
117      dao.UpdateSlave(slave);
118
119      DT.Slave slaveLoaded = dao.GetSlave(slave.Id);
120      Assert.AreEqual(slave.FreeMemory, slaveLoaded.FreeMemory);
121
122      dao.DeleteSlave(slave.Id);
123      dao.DeleteSlaveGroup(slaveGroup.Id);
124    }
125
126    [TestMethod]
127    public void TestPluginDao() {
128      IHiveDao dao = ServiceLocator.Instance.HiveDao;
129
130      DT.Plugin plugin1 = new DT.Plugin();
131      plugin1.DateCreated = DateTime.Now;
132      plugin1.IsLocal = false;
133      plugin1.Name = "Tests.MyPlugin";
134      plugin1.Version = new Version("1.0.0.0");
135      plugin1.UserId = Guid.Empty;
136
137      plugin1.Id = dao.AddPlugin(plugin1);
138
139      DT.Plugin plugin1loaded = dao.GetPlugin(plugin1.Id);
140      Assert.AreEqual(plugin1.Id, plugin1loaded.Id);
141      Assert.AreEqual(plugin1.Name, plugin1loaded.Name);
142      Assert.AreEqual(plugin1.Version, plugin1loaded.Version);
143      Assert.AreEqual(plugin1.UserId, plugin1loaded.UserId);
144      Assert.AreEqual(plugin1.DateCreated.ToString(), plugin1loaded.DateCreated.ToString());
145      Assert.AreEqual(plugin1.IsLocal, plugin1loaded.IsLocal);
146
147      DT.PluginData pluginData1 = new DT.PluginData();
148      pluginData1.PluginId = plugin1.Id;
149      pluginData1.FileName = "Tests.MyPlugin-1.0.dll";
150      pluginData1.Data = new byte[] { 0, 1, 2, 3, 4, 5 };
151
152      pluginData1.Id = dao.AddPluginData(pluginData1);
153
154      DT.PluginData pluginData1loaded = dao.GetPluginData(pluginData1.Id);
155      Assert.AreEqual(pluginData1.Id, pluginData1loaded.Id);
156
157      Assert.AreEqual(pluginData1.PluginId, pluginData1loaded.PluginId);
158      Assert.AreEqual(pluginData1.FileName, pluginData1loaded.FileName);
159      Assert.IsTrue(pluginData1.Data.SequenceEqual(pluginData1loaded.Data));
160
161      dao.DeletePluginData(pluginData1.Id);
162      dao.DeletePlugin(plugin1.Id);
163
164      Assert.AreEqual(null, dao.GetPlugin(plugin1.Id));
165      Assert.AreEqual(null, dao.GetPluginData(pluginData1.Id));
166    }
167
168    [TestMethod]
169    public void TestHiveExperimentDao() {
170      IHiveDao dao = ServiceLocator.Instance.HiveDao;
171
172      DT.HiveExperiment he = new DT.HiveExperiment();
173
174      DT.Job job = new DT.Job();
175      job.State = JobState.Offline;
176      job.StateLog.Add(new DT.StateLog { State = JobState.Offline, DateTime = DateTime.Now });
177      job.Id = dao.AddJob(job);
178
179      he.RootJobId = job.Id;
180      he.DateCreated = DateTime.Now;
181      he.Name = "TestExperiment";
182      he.OwnerUserId = Guid.NewGuid();
183      he.ResourceNames = "HEAL";
184
185      he.Id = dao.AddHiveExperiment(he);
186
187      DT.HiveExperimentPermission perm = new DT.HiveExperimentPermission();
188      perm.HiveExperimentId = he.Id;
189      perm.GrantedByUserId = he.OwnerUserId;
190      perm.GrantedUserId = Guid.NewGuid();
191      perm.Permission = Permission.Write;
192      dao.AddHiveExperimentPermission(perm);
193
194      DT.HiveExperiment heLoaded = dao.GetHiveExperiment(he.Id);
195      Assert.AreEqual(he.Id, heLoaded.Id);
196      Assert.AreEqual(he.Name, heLoaded.Name);
197      Assert.AreEqual(he.ResourceNames, heLoaded.ResourceNames);
198      Assert.AreEqual(he.RootJobId, heLoaded.RootJobId);
199      //Assert.AreEqual(he.LastAccessed, heLoaded.LastAccessed);
200      //Assert.AreEqual(he.DateCreated, heLoaded.DateCreated);
201
202      DT.Job jobLoaded = dao.GetJob(he.RootJobId);
203      Assert.AreEqual(job.Id, jobLoaded.Id);
204      Assert.AreEqual(job.State, jobLoaded.State);
205
206      DT.HiveExperimentPermission permLoaded = dao.GetHiveExperimentPermission(he.Id, perm.GrantedUserId);
207      Assert.AreEqual(perm.HiveExperimentId, permLoaded.HiveExperimentId);
208      Assert.AreEqual(perm.GrantedUserId, permLoaded.GrantedUserId);
209      Assert.AreEqual(perm.GrantedByUserId, permLoaded.GrantedByUserId);
210      Assert.AreEqual(perm.Permission, permLoaded.Permission);
211
212      dao.DeleteHiveExperiment(he.Id);
213      Assert.AreEqual(null, dao.GetHiveExperiment(he.Id));
214      Assert.AreEqual(null, dao.GetJob(he.RootJobId));
215      Assert.AreEqual(null, dao.GetHiveExperimentPermission(perm.HiveExperimentId, perm.GrantedUserId));
216
217    }
218  }
219}
Note: See TracBrowser for help on using the repository browser.