public void StatisticManagerConstructorTest() { var location = LocationHelper.GenerateLocation(LocationHelper.SensorType.All,0); IRepositoryFactory factory = NHibernateHelper.CreateRepositoryFactory(); StatisticManager statisticManager = new StatisticManager(factory, location); Assert.AreEqual(location,statisticManager.Current.Location); }
public void UpdateStatisticTest() { Location location = LocationHelper.GenerateLocation(LocationHelper.SensorType.All,0); location.Name = "ServiceManagerTest"; IRepositoryFactory factory = NHibernateHelper.CreateRepositoryFactory(); IRepository<Guid, Location> repository = factory.CreateRepository<Guid, Location>(); repository.Add(location); StatisticManager statisticManager = new StatisticManager(factory, location); DateTime expected = DateTime.Now; statisticManager.UpdateStatistic(expected); Location actualLocation; actualLocation = repository.FindBy(x => x.Name == location.Name); IStatistic actual = actualLocation.Statistics.SingleOrDefault(stat => stat.End == expected); Assert.IsNotNull(actual); }
public void RunServiceManager() { logger.Debug("ServiceManager Started"); while (!_shouldstop) { lock (this) { if (RecognizeLocation()) { logger.Info("RecognizeLocation gave me a new location"); if (_taskManager != null) _taskManager.RequestStop(); _statisticManager = new StatisticManager(_repositoryFactory, _current); _taskManager = new TaskManager(_current.Tasks); _taskManager.StartTasksExecution(); } if (_statisticManager != null) _statisticManager.UpdateStatistic(); } Thread.Sleep(10000); } if (_taskManager!=null && _statisticManager!=null) { lock (this) { _statisticManager.UpdateStatistic(); _taskManager.RequestStop(); } } }
private bool RecognizeLocation() { IRepository<Guid, Location> repository = _repositoryFactory.CreateRepository<Guid,Location>(); var unknown = new Location(); unknown = GetSensorsInfo(unknown); IList<Location> locations = repository.All().ToList(); var result=_locationManager.RecognizeLocation(unknown, locations); if (ReferenceEquals(result,null)) { if (_taskManager!=null) _taskManager.RequestStop(); _statisticManager = null; _current = null; //Debug Information check affinity if (_locationManager.CurrentAffinity > 0.0) logger.Info("Affinity too low: ", _locationManager.CurrentAffinity, " Current possible location ", _locationManager.Current.Name); return false; } if (_locationManager.ToUpdate) { result.UpdateLocationSensors(unknown); repository.Update(result); logger.Debug("New Dataset saved: ", result.ToString()); } if (!result.EqualsBusiness(_current)) { logger.Info(" Location Name: ", _locationManager.Current.Name, "Location Affinity : ", _locationManager.CurrentAffinity); _current = result; return true; } return false; }