Exemplo n.º 1
0
        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}");
        }
Exemplo n.º 2
0
        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);
                }
            }
        }
Exemplo n.º 3
0
        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");
                }
            }
        }