public void should_record_a_successful_run()
        {
            var userAgent = new UserAgent("browser", "Browser", null);
            var job = new Job("job");
            var run = new Run(job, "run", "http://foo");
            var runUserAgent = new RunUserAgent(run, userAgent);
            Client client = userAgent.SpawnNewClient("ip", "os");
            run.BeginClientRun(client);

            Save(userAgent, job, run, runUserAgent, client, run.ClientRuns.Single());

            var runCompleted = new CompleteRun
                {
                    Client_Id = client.Id,
                    Run_id =  run.Id,
                    Total = 10
                };

            //            WithDbContext(context => GetInstance<CompleteRunHandler>().Handle(runCompleted));

            WithDbContext(context =>
                              {
                                  GetInstance<CompleteRunHandler>().Handle(runCompleted);
                                  var foundRun = context.Find<Run>(run.Id);

                                  var single = foundRun.RunUserAgents.Single();

                                  var clientRun = single.Run.ClientRuns.Where(x => x.Client.UserAgent.Id == single.UserAgent.Id).FirstOrDefault() ?? new ClientRun();

                                  clientRun.IndicatesSuccess().ShouldBeTrue();
                                  single.RemainingRuns.ShouldEqual(0);
                                  single.RunStatus.ShouldEqual(RunStatusType.Finished);
                              });
        }
        protected override void SetUp()
        {
            var browser1 = new UserAgent("test", "test 1", 1);
            var browser2 = new UserAgent("test", "test 2", 2);
            var browser3 = new UserAgent("another", "another 1", 3);

            _client1 = browser1.SpawnNewClient(null, null);
            _client2 = browser2.SpawnNewClient(null, null);
            _client3a = browser3.SpawnNewClient(null, null);
            _client3b = browser3.SpawnNewClient(null, null);

            Save(browser1, browser2, browser3, _client1, _client2, _client3a, _client3b);

            WithDbContext(context =>
                              {
                                  _createJobResult =
                                      new CreateJobHandler(context, new UserAgentCache(() => context)).Handle(new CreateJob
                                          {
                                              Name = "job",
                                              SuiteId = "testSuite",
                                              Runs = new[]
                                                  {
                                                      new CreateJob.CreateNewRun {Name = "C", Url = "foo"},
                                                      new CreateJob.CreateNewRun {Name = "A", Url = "foo"},
                                                      new CreateJob.CreateNewRun {Name = "B", Url = "foo"},
                                                      new CreateJob.CreateNewRun {Name = "D", Url = "foo"},
                                                  }
                                          });
                                  context.SaveChanges();
                                  context.All<Client>().Count().ShouldEqual(4);
                              });
        }
Example #3
0
        public RunUserAgent(Run run, UserAgent userAgent, int? maxRuns = 1)
        {
            Run = run;
            UserAgent = userAgent;
            RunStatus = RunStatusType.NotStarted;

            RemainingRuns = MaxRuns = maxRuns.GetValueOrDefault();
            Result = new RunUserAgentResult();
        }
Example #4
0
        public void When_there_is_one_run_and_one_user_agent_and_the_run_user_agent_has_not_started()
        {
            run = new Run(new Job("job"){Id = 4}, "run", "url"){Id = 1};
            userAgent = new UserAgent("chrome", "chrome", null) {Id = 2};
            runUserAgent = new RunUserAgent(run, userAgent, 1){Id = 3};

            result = runUserAgent.ToResult();
            var results = new[]
                {
                    result
                };

            status = new JobStatusResult(results);
        }
Example #5
0
        protected override void TestFixtureSetUp()
        {
            var now = new DateTime(2000, 3, 3, 3, 15, 0);
            var almost5MinutesAgo = now.AddMinutes(-5).AddSeconds(1);

            SetTime(almost5MinutesAgo);

            // set up a clientrun that is in progress but has been running for five minutes
            var userAgent = new UserAgent("browser", "Browser", null);
            var job = new Job("job");
            var run = new Run(job, "run", "http://foo");
            var runUserAgent = new RunUserAgent(run, userAgent);
            Client client = userAgent.SpawnNewClient("ip", "os");
            run.BeginClientRun(client);

            Save(userAgent, job, run, runUserAgent, client, run.ClientRuns.Single());

            // create a wipe handler in the present
            var wipeHandler = new WipeHandler(DbContext(), SetTime(now));

            // wipe
            wipeHandler.Handle(null);
        }
Example #6
0
 void RemovePreviousFailuresForThisUserAgent(UserAgent userAgent)
 {
     ClientRuns.ToArray()
         .Where(x => x.Client.UserAgent.Id == userAgent.Id && (x.TotalCount <= 0 || x.ErrorCount > 0 || x.FailCount > 0))
         .Each(RemoveClientRun);
 }
Example #7
0
 public Client(string ipAddress, string operatingSystem, UserAgent userAgent)
 {
     IpAddress = ipAddress;
     OperatingSystem = operatingSystem;
     UserAgent = userAgent;
 }
Example #8
0
 public Client(UserAgent userAgent)
     : this(null, null, userAgent)
 {
 }
        protected override void SetUp()
        {
            StructureMap.Inject(typeof(IEventPublisher), new NoOpEventPublisher());

            var browser1 = new UserAgent("test", "test 1", 1);
            var browser2 = new UserAgent("test", "test 2", 2);
            var browser3 = new UserAgent("another", "another 1", 3);

            _client1 = browser1.SpawnNewClient(null, null);
            _client2 = browser2.SpawnNewClient(null, null);
            _client3 = browser3.SpawnNewClient(null, null);

            Save(browser1, browser2, browser3, _client1, _client2, _client3);

            WithDbContext(context =>
                              {
                                  var userAgentCache = new UserAgentCache(() => context);
                                  var newJobCreator = new CreateJobHandler(context, userAgentCache);
                                  newJobCreator.Handle(new CreateJob
                                      {
                                          Name = "job",
                                          Runs = new[]
                                              {
                                                  new CreateJob.CreateNewRun {Name = "C", Url = "foo"},
                                                  new CreateJob.CreateNewRun {Name = "A", Url = "foo"},
                                                  new CreateJob.CreateNewRun {Name = "B", Url = "foo"},
                                                  new CreateJob.CreateNewRun {Name = "D", Url = "foo"},
                                              }
                                      });
                                  context.SaveChanges();
                                  context.All<Client>().Count().ShouldEqual(3);
                              });

            WithDbContext(context =>
                              {
                                  for (int i = 0; i < 4; i++)
                                  {
                                      foreach (var client in new[]{_client1, _client2, _client3})
                                      {
                                          var nextRunQuery = new NextRunQuery(client.Id);
                                          var handler = GetInstance<NextRunQueryHandler>();
                                          var nextRunResult = handler.Handle(nextRunQuery);

                                          var runCompleted = new CompleteRun {Client_Id = client.Id, Run_id = nextRunResult.id, Total = 1};
                                          GetInstance<CompleteRunHandler>().Handle(runCompleted);
                                      }
                                  }
                              });

            long jobId = 0;

            WithDbContext(context =>
                              {
                                  var job = context.Jobs.Single();
                                  jobId = job.Id;

                                  job.Status.ShouldEqual(JobStatusType.Complete);

                              });

            WithDbContext(context =>
                              {
                                  var resetJob = new ResetJob(jobId);

                                  var resetJobHandler = new ResetJobHandler(context, S<IOutputCacheInvalidator>());

                                  resetJobHandler.Handle(resetJob);
                              });
        }
Example #10
0
        public void When_there_are_three_runs_and_four_user_agents_and_the_run_user_agents_have_not_started()
        {
            run1 = new Run(new Job("job") { Id = 1 }, "run a", "url a") { Id = 2 };
            run2 = new Run(new Job("job") { Id = 1 }, "run b", "url b") { Id = 3 };
            run3 = new Run(new Job("job") { Id = 1 }, "run c", "url c") { Id = 4 };
            run4 = new Run(new Job("job") { Id = 1 }, "run d", "url d") { Id = 5 };

            chrome = new UserAgent("chrome", "chrome", null) { Id = 14 };
            ie6 = new UserAgent("ie", "ie 6", 6) { Id = 11 };
            ie7 = new UserAgent("ie", "ie 7", 7) { Id = 12 };
            ie8 = new UserAgent("ie", "ie 8", 8) { Id = 13 };

            status = new JobStatusResult(GetResults(new[] { run4, run2, run1, run3, }, new[] { chrome, ie6, ie7, ie8 }));
        }
Example #11
0
        public void When_there_is_one_runs_and_four_user_agents_and_the_run_user_agents_have_not_started()
        {
            run = new Run(new Job("job") { Id = 1 }, "run", "url") { Id = 2 };

            chrome = new UserAgent("chrome", "chrome", null) { Id = 3 };
            ie6 = new UserAgent("ie", "ie 6", 6) { Id = 11 };
            ie7 = new UserAgent("ie", "ie 7", 7) { Id = 12 };
            ie8 = new UserAgent("ie", "ie 8", 8) { Id = 13 };

            chrome_run = new RunUserAgent(run, chrome, 1) { Id = 101 };
            ie6_run = new RunUserAgent(run, ie6, 1) { Id = 102 };
            ie7_run = new RunUserAgent(run, ie7, 1) { Id = 103 };
            ie8_run = new RunUserAgent(run, ie8, 1) { Id = 104 };

            result1 = chrome_run.ToResult();
            result2 = ie6_run.ToResult();
            result3 = ie7_run.ToResult();
            result4 = ie8_run.ToResult();

            var results = new[]
                {
                    result3,
                    result2,
                    result4,
                    result1
                };

            status = new JobStatusResult(results);
        }