private AddOrUpdateLoadtestsResponse AddOrUpdateLoadtests(AddOrUpdateLoadtestsRequest addOrUpdateLoadtestsRequest) { AddOrUpdateLoadtestsResponse resp = new AddOrUpdateLoadtestsResponse(); try { //assign ID if not present, assume to be insertion foreach (LoadtestViewModel ltvm in addOrUpdateLoadtestsRequest.Loadtests) { if (ltvm.Id == null || ltvm.Id == default(Guid)) { ltvm.Id = Guid.NewGuid(); } } List <LoadtestViewModel> sortedByDate = addOrUpdateLoadtestsRequest.Loadtests.OrderBy(lt => lt.StartDateUtc).ToList(); LoadtestViewModel last = sortedByDate.Last(); IList <Loadtest> loadtests = _timetableRepository.GetLoadtestsForTimePeriod(sortedByDate.First().StartDateUtc, last.StartDateUtc.AddSeconds(last.DurationSec)); Timetable timetable = new Timetable(loadtests); IList <Loadtest> loadtestsAddedOrUpdated = _timetableViewModelRepository.ConvertToDomain(addOrUpdateLoadtestsRequest.Loadtests); AddOrUpdateLoadtestsValidationResult validationResult = timetable.AddOrUpdateLoadtests(loadtestsAddedOrUpdated); _timetableRepository.AddOrUpdateLoadtests(validationResult); resp.AddOrUpdateLoadtestsValidationResult = validationResult; } catch (Exception ex) { resp.Exception = ex; } return(resp); }
public LoadtestViewModel ConvertToViewModel() { LoadtestViewModel ltVm = new LoadtestViewModel(); if (Id == null || Id == default(Guid)) { Id = Guid.NewGuid(); } if (string.IsNullOrEmpty(AgentCity)) { throw new ArgumentNullException("Agent city must be provided."); } if (string.IsNullOrEmpty(AgentCountry)) { throw new ArgumentNullException("Agent country must be provided."); } if (string.IsNullOrEmpty(CustomerName)) { throw new ArgumentNullException("Customer name must be provided."); } if (string.IsNullOrEmpty(LoadtestTypeShortDescription)) { throw new ArgumentNullException("Load test type must be provided."); } if (string.IsNullOrEmpty(ProjectName)) { throw new ArgumentNullException("Project name must be provided."); } if (string.IsNullOrEmpty(ScenarioUriOne)) { throw new ArgumentNullException("At least one URL must be provided for the scenario."); } ltVm.AgentCity = AgentCity; ltVm.AgentCountry = AgentCountry; ltVm.CustomerName = CustomerName; ltVm.DurationSec = DurationSec; ltVm.EngineerName = EngineerName; ltVm.Id = Id; ltVm.LoadtestTypeShortDescription = LoadtestTypeShortDescription; ltVm.ProjectName = ProjectName; ltVm.ScenarioUriOne = ScenarioUriOne; ltVm.ScenarioUriTwo = ScenarioUriTwo; ltVm.ScenarioUriThree = ScenarioUriThree; DateTime customerDate = new DateTime(StartDate.Year, StartDate.Month, StartDate.Day, StartDate.Hour, StartDate.Minute, 0); TimeZoneInfo customerTimeZone = TimeZoneInfo.FindSystemTimeZoneById(StartDate.Timezone); ltVm.StartDateUtc = TimeZoneInfo.ConvertTimeToUtc(customerDate, customerTimeZone); ltVm.UserCount = UserCount; return(ltVm); }
public void TestLoadtestingContext() { /* * ITimetableRepository timetableRepo = new TimetableRepository(); * IList<Loadtest> loadtests = timetableRepo.GetLoadtestsForTimePeriod(DateTime.UtcNow.AddDays(-10), * DateTime.UtcNow.AddDays(10)); * * Timetable tt = new Timetable(loadtests); * Loadtest newLoadtest = new Loadtest(Guid.Parse("8c928a5e-d038-44f3-a8ff-70f64a651155"), * new LoadtestParameters(DateTime.UtcNow.AddDays(3), 120, 900), Guid.Parse("751ec485-437d-4bae-9ff1-1923203a87b1") * , Guid.Parse("99f4dc94-718c-450d-87b6-3153bb8db622"), Guid.Parse("471119e2-2b3c-4545-97a2-5f52d1fa7954") * , Guid.Parse("a868a7c5-2f4a-43f7-9a8c-a597793fdc56"), Guid.Parse("96877388-ce4d-4ea8-ae93-438a696386b9") * , Guid.Parse("73e25716-7622-4af6-99a0-0638efb1c8cc")); * List<Loadtest> allChanges = new List<Loadtest>() { newLoadtest }; * AddOrUpdateLoadtestsValidationResult res = tt.AddOrUpdateLoadtests(allChanges); * Debug.WriteLine(res.OperationResultSummary); * timetableRepo.AddOrUpdateLoadtests(res); * * timetableRepo.DeleteById(Guid.Parse("4e880392-5497-4c9e-a3de-38f66348fe8e"));*/ ITimetableRepository timetableRepo = new TimetableRepository(); ITimetableViewModelRepository viewModelRepo = new TimetableViewModelRepository(); /* * IList<Loadtest> loadtests = timetableRepo.GetLoadtestsForTimePeriod(DateTime.UtcNow.AddDays(-10), * DateTime.UtcNow.AddDays(10)); * IList<LoadtestViewModel> vms = viewModelRepo.ConvertToViewModels(loadtests);*/ LoadtestViewModel vm = new LoadtestViewModel(); vm.Id = Guid.NewGuid(); vm.AgentCity = "Tokyo"; vm.AgentCountry = "Japan"; vm.CustomerName = "Great customer"; vm.DurationSec = 300; vm.EngineerName = "Fred"; vm.LoadtestTypeShortDescription = "stress test"; vm.ProjectName = "Second project"; vm.ScenarioUriOne = "http://www.hello.com"; vm.ScenarioUriTwo = "http://www.seeyou.com"; vm.StartDateUtc = DateTime.UtcNow.AddDays(2); vm.UserCount = 60; IList <LoadtestViewModel> vms = new List <LoadtestViewModel>() { vm }; IList <Loadtest> loadtests = viewModelRepo.ConvertToDomain(vms); }
public IList <LoadtestViewModel> ConvertToViewModels(IEnumerable <Loadtest> domains) { List <LoadtestViewModel> viewModels = new List <LoadtestViewModel>(); LoadTestingContext context = LoadTestingContext.Create(base.ConnectionStringRepository); foreach (Loadtest lt in domains) { LoadtestViewModel vm = new LoadtestViewModel(); vm.Id = lt.Id; AgentMongoDb agentDb = context.Agents.Find <AgentMongoDb>(a => a.DomainId == lt.AgentId).SingleOrDefault(); if (agentDb == null) { throw new ArgumentException("There is no load test agent with the given ID."); } vm.AgentCountry = agentDb.Location.Country; vm.AgentCity = agentDb.Location.City; CustomerMongoDb custDb = context.Customers.Find <CustomerMongoDb>(c => c.DomainId == lt.CustomerId).SingleOrDefault(); if (custDb == null) { throw new ArgumentException("There is no customer with the given ID."); } vm.CustomerName = custDb.Name; if (lt.EngineerId.HasValue) { EngineerMongoDb engDb = context.Engineers.Find <EngineerMongoDb>(e => e.DomainId == lt.EngineerId.Value).SingleOrDefault(); if (engDb == null) { throw new ArgumentException("There is no engineer with the given ID."); } vm.EngineerName = engDb.Name; } LoadtestTypeMongoDb loadtestTypeDb = context.LoadtestTypes.Find(l => l.DomainId == lt.LoadtestTypeId).SingleOrDefault(); if (loadtestTypeDb == null) { throw new ArgumentException("There is no load test type with the given ID."); } vm.LoadtestTypeShortDescription = loadtestTypeDb.Description.ShortDescription; ProjectMongoDb projectDb = context.Projects.Find(p => p.DomainId == lt.ProjectId).SingleOrDefault(); if (projectDb == null) { throw new ArgumentException("There is no project with the given ID."); } vm.ProjectName = projectDb.Description.ShortDescription; ScenarioMongoDb scenarioDb = context.Scenarios.Find(s => s.DomainId == lt.ScenarioId).SingleOrDefault(); if (scenarioDb == null) { throw new ArgumentException("There is no scenario with the given ID."); } vm.ScenarioUriOne = scenarioDb.UriOne; vm.ScenarioUriTwo = scenarioDb.UriTwo; vm.ScenarioUriThree = scenarioDb.UriThree; vm.UserCount = lt.Parameters.UserCount; vm.StartDateUtc = lt.Parameters.StartDateUtc; vm.DurationSec = lt.Parameters.DurationSec; viewModels.Add(vm); } return(viewModels); }
public IList <LoadtestViewModel> ConvertToViewModels(IEnumerable <Loadtest> domains) { LoadTestingContext context = new LoadTestingContext(); List <LoadtestViewModel> viewModels = new List <LoadtestViewModel>(); foreach (Loadtest lt in domains) { LoadtestViewModel vm = new LoadtestViewModel(); vm.Id = lt.Id; Agent agent = (from a in context.Agents where a.Id == lt.AgentId select a).FirstOrDefault(); if (agent == null) { throw new ArgumentException("There is no load test agent with the given ID."); } vm.AgentCountry = agent.Location.Country; vm.AgentCity = agent.Location.City; Customer customer = (from c in context.Customers where c.Id == lt.CustomerId select c).FirstOrDefault(); if (customer == null) { throw new ArgumentException("There is no customer with the given ID."); } vm.CustomerName = customer.Name; if (lt.EngineerId.HasValue) { Engineer engineer = (from e in context.Engineers where e.Id == lt.EngineerId.Value select e).FirstOrDefault(); if (engineer == null) { throw new ArgumentException("There is no engineer with the given ID."); } vm.EngineerName = engineer.Name; } LoadtestType loadtestType = (from t in context.LoadtestTypes where t.Id == lt.LoadtestTypeId select t).FirstOrDefault(); if (loadtestType == null) { throw new ArgumentException("There is no load test type with the given ID."); } vm.LoadtestTypeShortDescription = loadtestType.Description.ShortDescription; Project project = (from p in context.Projects where p.Id == lt.ProjectId select p).FirstOrDefault(); if (project == null) { throw new ArgumentException("There is no project with the given ID."); } vm.ProjectName = project.Description.ShortDescription; Scenario scenario = (from s in context.Scenarios where s.Id == lt.ScenarioId select s).FirstOrDefault(); if (scenario == null) { throw new ArgumentException("There is no scenario with the given ID."); } vm.ScenarioUriOne = scenario.UriOne; vm.ScenarioUriTwo = scenario.UriTwo; vm.ScenarioUriThree = scenario.UriThree; vm.UserCount = lt.Parameters.UserCount; vm.StartDateUtc = lt.Parameters.StartDateUtc; vm.DurationSec = lt.Parameters.DurationSec; viewModels.Add(vm); } return(viewModels); }