public void HandleEvent(RaceFinished raceFinished) { var xxx = Stopwatch.StartNew(); var race = this._raceRepository.Get(raceFinished.RaceId); this.FireTeamRaceFinishedEvents(race, raceFinished.Date); StatsPrinter.Print("RaceFinished", xxx.ElapsedMilliseconds); }
public void StartEcoSim() { statsPrinter = statsPrinterObj.GetComponent <StatsPrinter>(); statsPrinter.printFirstLine(unityEco); // create a copy, and set simulationEco to set the copy, then use the copy for the simulation Ecosystem simulationEco = Copier.getEcosystemCopy(unityEco); int localSteps = steps; // just in case next line causes threading error StartThreadedFunction(() => { runSystem(simulationEco, localSteps, Thread.CurrentThread); }); }
public void HandleEvent(TeamCreated teamCreated) { var xxx = Stopwatch.StartNew(); var race = _raceRepository.Get(teamCreated.RaceId); race.RegisterTeam(teamCreated.TeamId); _raceRepository.Update(race); StatsPrinter.Print("TeamCreated", xxx.ElapsedMilliseconds); }
public void HandleEvent(TeamRaceFinished teamRaceFinished) { var xxx = Stopwatch.StartNew(); var team = this._teamRepository.Get(teamRaceFinished.TeamId); team.FinishRace(); var activeTeam = this._activeTeamRepository.Find(team.Id); this._activeTeamRepository.Remove(activeTeam); StatsPrinter.Print("TeamRaceFinished", xxx.ElapsedMilliseconds); }
public List <TeamStatistics> GetRaceStatistics(Guid raceId) { var stopWatch = new Stopwatch(); stopWatch.Start(); var race = this._raceRepository.Get(raceId); stopWatch.Stop(); //StatsPrinter.Print("GetRace", stopWatch.ElapsedMilliseconds); StatsPrinter.AddGetRace(stopWatch.ElapsedMilliseconds); stopWatch.Reset(); stopWatch.Start(); var lapStatistics = this._lapStatisticRepository.Find(raceId); stopWatch.Stop(); //StatsPrinter.Print("FindLapStatistic", stopWatch.ElapsedMilliseconds); StatsPrinter.AddFindLapStatistics(stopWatch.ElapsedMilliseconds); var teamsLapStatistics = lapStatistics.GroupBy(x => x.TeamId); var teamsStatistics = new List <TeamStatistics>(); foreach (var teamLapStatistics in teamsLapStatistics) { var teamId = teamLapStatistics.Key; var teamName = teamLapStatistics.First().TeamName; var totalDistanceInMeters = 0; var numberOfLaps = teamLapStatistics.Count(); foreach (var teamLapStatistic in teamLapStatistics) { totalDistanceInMeters += teamLapStatistic.DistanceInMeters; } var teamStatistics = new TeamStatistics( teamId, teamName, totalDistanceInMeters, numberOfLaps, race.Elapsed()); teamsStatistics.Add(teamStatistics); } return(teamsStatistics); }
public void HandleEvent(LapCompleted lapCompleted) { var xxx = Stopwatch.StartNew(); var race = this._raceRepository.Get(lapCompleted.RaceId); var lapStatistic = new LapStatistic( lapCompleted.RaceId, lapCompleted.TeamId, lapCompleted.TeamName, race.LapDistanceInMeters, lapCompleted.LapLength, lapCompleted.CompletedOn); this._lapStatisticRepository.AddLapStatistic(lapStatistic); StatsPrinter.Print("LapCompleted", xxx.ElapsedMilliseconds); }
public void HandleEvent(TeamRaceStarted teamRaceStarted) { var xxx = Stopwatch.StartNew(); var team = this._teamRepository.Get(teamRaceStarted.TeamId); team.StartRace(teamRaceStarted.StartDate); this._teamRepository.Update(team); var activeTeam = new ActiveTeam { ChipId = team.ChipId, TeamId = team.Id }; this._activeTeamRepository.Add(activeTeam); StatsPrinter.Print("TeamRaceStarted", xxx.ElapsedMilliseconds); }
static void Main(string[] args) { const bool UseMongo = true; const string DatabaseaName = "relayrace"; StatsPrinter.Configure(UseMongo); var container = new Container(x => x.IncludeRegistry( new CmdletRegistry( Connection.MongoDbConnectionString, Connection.SqlConnectionString, DatabaseaName, UseMongo))); var eventDispatcher = container.GetInstance <EventDispatcher>(); while (true) { var fetcher = new DomainEventFetcher(); var result = fetcher.Fetch(); if (result != null) { try { eventDispatcher.DispatchEvents(new List <DomainEvent> { result }); } catch (Exception e) { var sender = new DomainEventSender(); sender.Send(result); } } Thread.Sleep(200); } }
protected override void ProcessRecord() { const string DatabaseaName = "relayrace"; StatsPrinter.Configure(this.UseMongo); var container = new Container(x => x.IncludeRegistry( new CmdletRegistry( Connection.MongoDbConnectionString, Connection.SqlConnectionString, DatabaseaName, this.UseMongo))); var statisticsManager = container.GetInstance <StatisticManager>(); for (int i = 0; i < 200; i++) { var stopWatch = new Stopwatch(); stopWatch.Start(); statisticsManager.GetRaceStatistics(this.RaceId); stopWatch.Stop(); //StatsPrinter.Print("GetRaceStatistics", stopWatch.ElapsedMilliseconds); StatsPrinter.AddGetRaceStatistics(stopWatch.ElapsedMilliseconds); } StatsPrinter.DisplaySummary(); container.Dispose(); container.EjectAllInstancesOf <IMongoClient>(); container.EjectAllInstancesOf <IRaceRepository>(); container.EjectAllInstancesOf <ITeamRepository>(); container.EjectAllInstancesOf <IActiveTeamRepository>(); container.EjectAllInstancesOf <ILapStatisticRepository>(); container.EjectAllInstancesOf <RelayRaceDbContext>(); }
protected override void ProcessRecord() { const string DatabaseaName = "relayrace"; StatsPrinter.Configure(this.UseMongo); var container = new Container(x => x.IncludeRegistry( new CmdletRegistry( Connection.MongoDbConnectionString, Connection.SqlConnectionString, DatabaseaName, this.UseMongo))); var raceRepository = container.GetInstance <IRaceRepository>(); var activeTeamRepository = container.GetInstance <IActiveTeamRepository>(); var teamRepository = container.GetInstance <ITeamRepository>(); var lapStatisticRepository = container.GetInstance <ILapStatisticRepository>(); if (this.CleanupDB) { raceRepository.Cleanup(); activeTeamRepository.Cleanup(); teamRepository.Cleanup(); lapStatisticRepository.Cleanup(); } var random = new Random(); var races = new List <Race>(); var teams = new List <Team>(); var activeTeams = new List <ActiveTeam>(); var lapStatistics = new List <LapStatistic>(); this.WriteVerbose("Begin generating data in memory"); for (var i = 0; i < this.RaceQuantity; i++) { var chipIds = new List <string>(); for (var j = 0; j < this.TeamPerRace; j++) { chipIds.Add(Guid.NewGuid().ToString()); } var race = new Race(Guid.NewGuid().ToString(), random.Next(3000, 5000), chipIds); var raceTeams = new List <Team>(); foreach (var chipId in chipIds) { var team = new Team(Guid.NewGuid().ToString(), race.Id, chipId); raceTeams.Add(team); race.RegisterTeam(team.Id); } races.Add(race); race.StartRace(DateTime.UtcNow); foreach (var raceTeam in raceTeams) { raceTeam.StartRace(race.Start.Value); var activeTeam = new ActiveTeam { TeamId = raceTeam.Id, ChipId = raceTeam.ChipId }; activeTeams.Add(activeTeam); var lastComplete = race.Start.Value; for (var k = 0; k < this.CompletedLapPerTeam; k++) { var secondsToCompleteLap = random.Next(15, 25) * 60; lastComplete = lastComplete.AddSeconds(secondsToCompleteLap); raceTeam.LapCompleted(lastComplete); var lapStatistic = new LapStatistic( raceTeam.RaceId, raceTeam.Id, raceTeam.Name, race.LapDistanceInMeters, new TimeSpan(0, 0, secondsToCompleteLap), lastComplete); lapStatistics.Add(lapStatistic); } teams.Add(raceTeam); } } this.WriteVerbose("End generating data in memory"); this.WriteVerbose("Begin race persistence"); raceRepository.BulkCreate(races); this.WriteVerbose("End race persistence"); this.WriteVerbose("Begin team persistence"); teamRepository.BulkCreate(teams); this.WriteVerbose("End team persistence"); this.WriteVerbose("Begin activeTeam persistence"); activeTeamRepository.BulkAdd(activeTeams); this.WriteVerbose("End activeTeam persistence"); this.WriteVerbose("Begin lapStatistic persistence"); lapStatisticRepository.BulkAddLapStatistic(lapStatistics); this.WriteVerbose("End lapStatistic persistence"); Console.WriteLine($"Random Race Id: '{races.Last().Id}'"); container.Dispose(); container.EjectAllInstancesOf <IMongoClient>(); container.EjectAllInstancesOf <IRaceRepository>(); container.EjectAllInstancesOf <ITeamRepository>(); container.EjectAllInstancesOf <IActiveTeamRepository>(); container.EjectAllInstancesOf <ILapStatisticRepository>(); container.EjectAllInstancesOf <RelayRaceDbContext>(); }