예제 #1
0
        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);
        }
예제 #3
0
        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);
        }
예제 #4
0
        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);
        }