static async Task MainMT(string[] args) { var authProvider = new DeviceCodeAuthProvider(); //graphClient = new GraphServiceClient(authProvider); using HttpClient client = new HttpClient(new HttpClientHandler() { MaxConnectionsPerServer = 1440 }); graphClient = new GraphServiceClient(client); graphClient.AuthenticationProvider = authProvider; await DbOperations.ClearResourcesAsync(); Console.WriteLine("Clear DB .."); Console.WriteLine("Start Watching.."); perf.StartOn = DateTime.UtcNow; perf.TeamsCount = noTeams; //await RunBatchAsync(); await BatchRequestExample(graphClient, 20); //await WatchTeamsAsync(noTeams); perf.ActivitiesCalls = activitiesCalls; perf.DeltaCalls = libraryDeltaCalls; perf.Duration = (int)DateTime.UtcNow.Subtract(perf.StartOn).TotalSeconds; perf.CompletedOn = DateTime.UtcNow; perf.AverageSyncDuration = DbOperations.GetAverageSync(); perf.TotalDuration = totalDuration; perf.NoOfRuns = noOfRuns; perf.AvgDuration = totalDuration / noOfRuns; await DbOperations.UpdatePerformanceAsync(perf); Console.WriteLine($"Teams={perf.TeamsCount} - DeltaCalls={perf.DeltaCalls} - ActivitiesCalls={perf.ActivitiesCalls} - AverageSyncDuration={perf.AverageSyncDuration}"); }
private static async Task WatchTeamsAsync(int limit) { var watch = new System.Diagnostics.Stopwatch(); watch.Start(); //await GetTeams(); //await DbOperations.AddTeamsToTable(allTeams); var teams = DbOperations.GetTeams(limit);//.Skip(limit*2);//allTeams.OrderBy(o => o.CreatedDateTime).Take(limit); foreach (var team in teams) { teamSitesDeltaLinks.Add(team.TeamId, null); } watch.Stop(); Console.WriteLine($"Checking Teams completed on {watch.ElapsedMilliseconds / 1000} seconds"); while (!noChanges || iterationCounter != MaxIteration) { try { await WatchTeamsSitesAsync(); processTime = (int)DateTime.UtcNow.Subtract(lastProcessTime).TotalSeconds; lastProcessTime = DateTime.UtcNow; var wait = interval - processTime; if (wait < 0) { wait = 0; } await Task.Delay(wait * 1000); await DbOperations.UpdateResourcesAsync(resources); resources.Clear(); firstCall = false; if (teamSitesDeltaLinks.Any(w => w.Value == null)) { noChanges = false; iterationCounter = 0; } else if (teamSitesDeltaLinks.All(w => w.Value.NoChanges)) { noChanges = true; ++iterationCounter; } else { noChanges = false; iterationCounter = 0; } perf.ActivitiesCalls = activitiesCalls; perf.DeltaCalls = libraryDeltaCalls; perf.AverageSyncDuration = DbOperations.GetAverageSync(); await DbOperations.UpdatePerformanceAsync(perf); } catch (Exception exc) { Console.WriteLine(exc.Message); } } }
private static async Task WatchTeamsAsync(int limit) { //var watch = new System.Diagnostics.Stopwatch(); //watch.Start(); //await DbOperations.ClearTeamsTable(); var teams = DbOperations.GetTeams(limit); if (teams.Count == 0) { Console.WriteLine("Fill Teams Table"); await GetTeams(); await DbOperations.AddTeamsToTable(allTeams); teams = DbOperations.GetTeams(limit); } foreach (var team in teams) { teamSitesDeltaLinks.Add(team.TeamId, null); } //watch.Stop(); //Console.WriteLine($"Checking Teams completed on {watch.ElapsedMilliseconds / 1000} seconds"); while (true)//(!noChanges || iterationCounter != MaxIteration) { try { var watch = new System.Diagnostics.Stopwatch(); watch.Start(); Console.WriteLine("Start Checking Changes on Team Sites..."); await WatchTeamsSitesAsync(); watch.Stop(); processTime = (int)watch.ElapsedMilliseconds / 1000; Console.WriteLine($"{DateTime.UtcNow} - Checking Changes on Team Sites completed on {processTime} seconds"); //AddTeamSiteDeltaLinksToResources(); //await DbOperations.UpdateResourcesAsync(resources); resources = new List <Resource>(); await DbOperations.AddExceptionsAsync(exceptions); exceptions = new List <Exceptions>(); //processTime = (int)DateTime.UtcNow.Subtract(lastProcessTime).TotalSeconds; lastProcessTime = DateTime.UtcNow; var wait = interval - processTime; if (wait < 0) { wait = 0; } await Task.Delay(wait * 1000); firstCall = false; if (teamSitesDeltaLinks.Any(w => w.Value == null)) { noChanges = false; iterationCounter = 0; } else if (teamSitesDeltaLinks.All(w => w.Value.NoChanges)) { noChanges = true; ++iterationCounter; } else { noChanges = false; iterationCounter = 0; } perf.ActivitiesCalls = activitiesCalls; perf.DeltaCalls = libraryDeltaCalls; perf.Duration = (int)DateTime.UtcNow.Subtract(perf.StartOn).TotalSeconds; perf.CompletedOn = DateTime.UtcNow; perf.AverageSyncDuration = DbOperations.GetAverageSync(); totalDuration += processTime; perf.TotalDuration = totalDuration; noOfRuns++; perf.NoOfRuns = noOfRuns; perf.AvgDuration = totalDuration / noOfRuns; await DbOperations.UpdatePerformanceAsync(perf); } catch (Exception exc) { Console.WriteLine(exc.Message); AddException(exc, "WatchTeamsAsync"); } } }