コード例 #1
0
        private static void WriterOnDoWork(object sender, DoWorkEventArgs doWorkEventArgs)
        {
            var worker   = (BackgroundWorker)sender;
            var server   = ConfigurationManager.AppSettings["Server"];
            var client   = new WebDataChannel(server);
            var provider = new RepositoryProvider(Directory, TimeSpan.FromMinutes(1), 1000);
            var random   = new Random(Guid.NewGuid().GetHashCode());
            var count    = 0;

            while (!worker.CancellationPending)
            {
                using (var tracker = new Tracker(client, provider))
                {
                    worker.ReportProgress(1, $"Starting writer {count++} ...");
                    tracker.Start(new EventValue("Count", count));

                    decimal eventCount = random.Next(10, 1000);
                    for (var i = 1; i <= eventCount; i++)
                    {
                        var item      = tracker.StartEvent($"Event{i}");
                        var itemDelay = random.Next(1, 100);
                        worker.ReportProgress((int)(i / eventCount * 100), $"{i} of {eventCount}");
                        item.Values.Add(new EventValue("Delay", itemDelay));
                        Thread.Sleep(itemDelay);
                        item.Complete();
                    }
                }
            }
        }
コード例 #2
0
        public void TimedEventWithTimedChild()
        {
            var channel  = new WebDataChannel("http://localhost");
            var provider = new RepositoryProvider(TestHelper.Directory, TimeSpan.FromDays(1), 10000);

            using (var context = TestHelper.CreateDataContext())
            {
                using (var tracker = Tracker.Start(channel, provider))
                {
                    var timedEvent      = tracker.StartEvent("TimedEvent");
                    var childTimedEvent = timedEvent.StartEvent("ChildEvent");
                    Thread.Sleep(250);
                    childTimedEvent.Complete();
                    Thread.Sleep(250);
                    timedEvent.Complete();
                }

                Assert.IsTrue(context.Wait(x => x.Events.Count() == 3, 5000));

                var actual = context.Events.ToList();
                Assert.AreEqual(3, actual.Count);
                Assert.AreEqual("Session", actual[0].Name);
                Assert.AreEqual("TimedEvent", actual[1].Name);
                Assert.IsTrue(actual[1].ElapsedTime.TotalMilliseconds > 500);
                Assert.IsTrue(actual[1].ElapsedTime.TotalMilliseconds < 550);
                Assert.AreEqual("ChildEvent", actual[2].Name);
                Assert.IsTrue(actual[2].ElapsedTime.TotalMilliseconds > 250);
                Assert.IsTrue(actual[2].ElapsedTime.TotalMilliseconds < 300);
            }
        }
コード例 #3
0
        private void MainWindowOnLoaded(object sender, RoutedEventArgs e)
        {
            var server = ConfigurationManager.AppSettings["Server"];
            var client = new WebDataChannel(server);

            Directory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + @"\BloodHoundPerformance";
            var provider = new RepositoryProvider(Directory, TimeSpan.FromMinutes(1), 1000);

            _tracker = Tracker.Start(client, provider);
        }
コード例 #4
0
ファイル: Program.cs プロジェクト: BobbyCannon/Bloodhound
        private static void Main(string[] args)
        {
            var localPath = @"C:\Users\bobby\AppData\Local\Temp\BobsToolbox";
            var client    = new WebDataChannel("http://localhost", 30000);
            var provider  = new RepositoryProvider(localPath, TimeSpan.FromDays(1), 30000);

            using (var tracker = new Tracker(client, provider))
            {
                tracker.Log += (x, y) => System.Console.WriteLine(x);
                tracker.Start();

                System.Console.WriteLine("Press any key");
                System.Console.ReadKey();
            }
        }
コード例 #5
0
        private static void Main()
        {
            var client   = new WebDataChannel("http://localhost", 5000);
            var provider = new RepositoryProvider(Environment.GetFolderPath(Environment.SpecialFolder.Desktop));

            _tracker = Tracker.Start(client, provider);

            using (_tracker)
            {
                Application.AddMessageFilter(new MouseMessageFilter());
                MouseMessageFilter.Click += MouseEvent;

                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new MainForm(_tracker));
            }
        }
コード例 #6
0
        public void AddEventWithInvalidSession()
        {
            var client    = new WebDataChannel("http://localhost", 30000);
            var createdOn = DateTime.UtcNow;
            var expected  = new Event
            {
                CreatedOn   = createdOn,
                CompletedOn = createdOn,
                Name        = "Event1",
                UniqueId    = Guid.NewGuid()
            };

            try
            {
                client.WriteEvents(new[] { expected });
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToDetailedString());
                throw;
            }
        }