TrackerApp.StressTest.Start C# (CSharp) Method

Start() public method

public Start ( string trackerAddress ) : void
trackerAddress string
return void
        public void Start(string trackerAddress)
        {
            for (var i = 0; i < _threads.Length; i++)
            {
                _threads[i] = new Thread(() =>
                                            {
                                                var sb = new StringBuilder();
                                                var torrent = 0;
                                                while (true)
                                                {
                                                    sb.Remove(0, sb.Length);

                                                    sb.Append(trackerAddress);
                                                    sb.Append("?info_hash=");
                                                    sb.Append(_hashes[torrent++]);
                                                    sb.Append("&peer_id=");
                                                    sb.Append("12345123451234512345");
                                                    sb.Append("&port=");
                                                    sb.Append("5000");
                                                    sb.Append("&uploaded=");
                                                    sb.Append("5000");
                                                    sb.Append("&downloaded=");
                                                    sb.Append("5000");
                                                    sb.Append("&left=");
                                                    sb.Append("5000");
                                                    sb.Append("&compact=");
                                                    sb.Append("1");

                                                    var request = WebRequest.Create(sb.ToString());
                                                    request.BeginGetResponse(r =>
                                                                                 {
                                                                                     try
                                                                                     {
                                                                                         request.EndGetResponse(r).Close();
                                                                                         _requests.AddDelta(1);
                                                                                     }
                                                                                     catch
                                                                                     {
                                                                                     }
                                                                                     finally
                                                                                     {
                                                                                         _requests.Tick();
                                                                                     }
                                                                                 }, null);

                                                    Thread.Sleep(_threadSleepTime);
                                                }
                                            });
                _threads[i].Start();
            }
        }

Usage Example

Example #1
0
        private static void Benchmark()
        {
            Console.Clear();
            Console.Write("How many active torrents will be simulated: ");
            int torrents = GetInt();
            Console.Write("How many active peers per torrent: ");
            int peers = GetInt();
            Console.Write("How many requests per second: ");
            int requests = GetInt();

            Console.Write("What is the tracker address: ");
            string address = Console.ReadLine();

            StressTest test = new StressTest(torrents, peers, requests);
            test.Start(address);

            while (true)
            {
                Console.WriteLine("Measured announces/sec:  {0}", test.RequestRate);
                Console.WriteLine("Total announces: {0}", test.TotalTrackerRequests);
                Console.WriteLine(Environment.NewLine);
                System.Threading.Thread.Sleep(1000);
            }
        }