Пример #1
0
        private static void Generate_WebRequestSample(string basePath, int randomSeed, int userCount, int eventCount, int numberOfDays)
        {
            Random              r        = new Random(randomSeed);
            DateTime            asOfDate = DateTime.UtcNow.Date;
            String8Block        block    = new String8Block();
            WebRequestGenerator generator;

            string path;

            // Generate a set of users and write them out [for a week ago]
            asOfDate = asOfDate.AddDays(-8);
            path     = Path.Combine(basePath, $"Users.{asOfDate:yyyyMMdd}.r{randomSeed}.{userCount}.csv");
            Console.WriteLine($"Writing {path}...");
            UserGenerator userGenerator = new UserGenerator(r, asOfDate);
            List <User>   users         = userGenerator.Next(userCount);

            using (ITabularWriter writer = TabularFactory.BuildWriter(path))
            {
                foreach (User user in users)
                {
                    user.WriteTo(writer, block);
                }
            }

            File.SetLastWriteTimeUtc(path, asOfDate);

            // Generate WebRequest Data [for a week ago]
            generator = new WebRequestGenerator(users, r, asOfDate, (eventCount < 1001 ? 10 : 100));
            BuildWebRequests(basePath, generator, eventCount, WebRequestWriteMode.All);

            asOfDate = asOfDate.AddDays(8);

            // Generate batches of WebRequest sample data [current]
            for (int day = 0; day < numberOfDays; ++day)
            {
                generator = new WebRequestGenerator(users, r, asOfDate, (eventCount < 1001 ? 10 : 100));
                if (day == 0)
                {
                    generator.Issue = new PremiumUserOutage(asOfDate.AddMinutes(18), asOfDate.AddMinutes(104), r);
                }
                BuildWebRequests(basePath, generator, eventCount, WebRequestWriteMode.UserIdentityOnly);
                asOfDate = asOfDate.AddDays(-1);
            }

            // Generate one big joinable batch
            eventCount      = 10 * 1000 * 1000;
            generator       = new WebRequestGenerator(users, r, asOfDate, 1000);
            generator.Issue = new PortRangeBlocked(asOfDate.AddMinutes(1), asOfDate.AddMinutes(180), 11450, 11480);
            BuildWebRequests(basePath, generator, eventCount, WebRequestWriteMode.UserIdentityOnly);
            asOfDate = asOfDate.AddDays(-1);

            // Generate one huge minimal batch
            eventCount      = 100 * 1000 * 1000;
            generator       = new WebRequestGenerator(users, r, asOfDate, 1000);
            generator.Issue = new UncachedSlowness(asOfDate.AddMinutes(4), asOfDate.AddMinutes(36), r);
            BuildWebRequests(basePath, generator, eventCount, WebRequestWriteMode.Minimal);

            Console.WriteLine("Done.");
        }
Пример #2
0
        protected override Task <HttpResponseMessage> SendAsync(ITwitterQuery twitterQuery, HttpRequestMessage request, CancellationToken cancellationToken)
        {
            var headers = WebRequestGenerator.GenerateApplicationParameters(twitterQuery.TwitterCredentials, _authRequest, new[] { _queryParameter });

            twitterQuery.AuthorizationHeader = WebRequestGenerator.GenerateAuthorizationHeader(request.RequestUri, request.Method.ToTweetinviHttpMethod(), headers);

            return(base.SendAsync(request, cancellationToken, twitterQuery.AuthorizationHeader));
        }
Пример #3
0
        private static void BuildWebRequests(string basePath, string fileNamePrefix, WebRequestGenerator generator, int eventCount, WebRequestWriteMode mode)
        {
            DateTime     asOfDate = generator.Current;
            String8Block block    = new String8Block();

            string path = Path.Combine(basePath, $"{fileNamePrefix}.{asOfDate:yyyyMMdd}.r5.{eventCount}.csv");

            Console.WriteLine($"Writing {path}...");

            using (ITabularWriter writer = TabularFactory.BuildWriter(path))
            {
                for (int i = 0; i < eventCount; ++i)
                {
                    WebRequest request = generator.Next();
                    request.WriteTo(writer, block, i, mode);
                }
            }

            File.SetLastWriteTimeUtc(path, asOfDate);
        }