public void AggregateShouldAggregateAbortedAndCanceledCorrectly()
        {
            var aggregator = new ParallelRunDataAggregator();

            aggregator.Aggregate(null, null, null, TimeSpan.Zero, isAborted: false, isCanceled: false, runContextAttachments: null,
                                 runCompleteArgsAttachments: null);

            Assert.IsFalse(aggregator.IsAborted, "Aborted must be false");

            Assert.IsFalse(aggregator.IsCanceled, "Canceled must be false");

            aggregator.Aggregate(null, null, null, TimeSpan.Zero, isAborted: true, isCanceled: false, runContextAttachments: null,
                                 runCompleteArgsAttachments: null);

            Assert.IsTrue(aggregator.IsAborted, "Aborted must be true");

            Assert.IsFalse(aggregator.IsCanceled, "Canceled must still be false");

            aggregator.Aggregate(null, null, null, TimeSpan.Zero, isAborted: false, isCanceled: true, runContextAttachments: null,
                                 runCompleteArgsAttachments: null);

            Assert.IsTrue(aggregator.IsAborted, "Aborted must continue be true");

            Assert.IsTrue(aggregator.IsCanceled, "Canceled must be true");

            aggregator.Aggregate(null, null, null, TimeSpan.Zero, isAborted: false, isCanceled: false, runContextAttachments: null,
                                 runCompleteArgsAttachments: null);

            Assert.IsTrue(aggregator.IsAborted, "Aborted must continue be true");

            Assert.IsTrue(aggregator.IsCanceled, "Canceled must continue be true");
        }
Example #2
0
 public ParallelDataCollectionEventsHandler(IProxyExecutionManager proxyExecutionManager,
                                            ITestRunEventsHandler actualRunEventsHandler,
                                            IParallelProxyExecutionManager parallelProxyExecutionManager,
                                            ParallelRunDataAggregator runDataAggregator) :
     this(proxyExecutionManager, actualRunEventsHandler, parallelProxyExecutionManager, runDataAggregator, JsonDataSerializer.Instance)
 {
 }
        public void AggregateShouldAggregateExceptionsCorrectly()
        {
            var aggregator = new ParallelRunDataAggregator();

            aggregator.Aggregate(null, null, exception: null, elapsedTime: TimeSpan.Zero, isAborted: false, isCanceled: false, runContextAttachments: null,
                                 runCompleteArgsAttachments: null);

            Assert.IsNull(aggregator.GetAggregatedException(), "Aggregated exception must be null");

            var exception1 = new NotImplementedException();

            aggregator.Aggregate(null, null, exception: exception1, elapsedTime: TimeSpan.Zero, isAborted: false, isCanceled: false, runContextAttachments: null,
                                 runCompleteArgsAttachments: null);

            var aggregatedException = aggregator.GetAggregatedException() as AggregateException;

            Assert.IsNotNull(aggregatedException, "Aggregated exception must NOT be null");
            Assert.IsNotNull(aggregatedException.InnerExceptions, "Inner exception list must NOT be null");
            Assert.AreEqual(aggregatedException.InnerExceptions.Count, 1, "Inner exception lsit must have one element");
            Assert.AreEqual(aggregatedException.InnerExceptions[0], exception1, "Inner exception must be the one set.");

            var exception2 = new NotSupportedException();

            aggregator.Aggregate(null, null, exception: exception2, elapsedTime: TimeSpan.Zero, isAborted: false, isCanceled: false, runContextAttachments: null,
                                 runCompleteArgsAttachments: null);

            aggregatedException = aggregator.GetAggregatedException() as AggregateException;
            Assert.IsNotNull(aggregatedException, "Aggregated exception must NOT be null");
            Assert.IsNotNull(aggregatedException.InnerExceptions, "Inner exception list must NOT be null");
            Assert.AreEqual(aggregatedException.InnerExceptions.Count, 2, "Inner exception lsit must have one element");
            Assert.AreEqual(aggregatedException.InnerExceptions[1], exception2, "Inner exception must be the one set.");
        }
        public void AggregateShouldAggregateTimeSpanCorrectly()
        {
            var aggregator = new ParallelRunDataAggregator();

            aggregator.Aggregate(null, null, null, TimeSpan.Zero, isAborted: false, isCanceled: false, runContextAttachments: null,
                                 runCompleteArgsAttachments: null);

            Assert.AreEqual(aggregator.ElapsedTime, TimeSpan.Zero, "Timespan must be zero");

            aggregator.Aggregate(null, null, null, TimeSpan.FromMilliseconds(100), isAborted: false, isCanceled: false, runContextAttachments: null,
                                 runCompleteArgsAttachments: null);

            Assert.AreEqual(aggregator.ElapsedTime, TimeSpan.FromMilliseconds(100), "Timespan must be 100ms");


            aggregator.Aggregate(null, null, null, TimeSpan.FromMilliseconds(200), isAborted: false, isCanceled: false, runContextAttachments: null,
                                 runCompleteArgsAttachments: null);

            Assert.AreEqual(aggregator.ElapsedTime, TimeSpan.FromMilliseconds(200), "Timespan should be Max of all 200ms");

            aggregator.Aggregate(null, null, null, TimeSpan.FromMilliseconds(150), isAborted: false, isCanceled: false, runContextAttachments: null,
                                 runCompleteArgsAttachments: null);

            Assert.AreEqual(aggregator.ElapsedTime, TimeSpan.FromMilliseconds(200), "Timespan should be Max of all i.e. 200ms");
        }
        public void AggregateShouldAggregateExecutorUrisCorrectly()
        {
            var aggregator = new ParallelRunDataAggregator();

            aggregator.Aggregate(null, null, null, TimeSpan.Zero, false, false, null, null);

            Assert.AreEqual(aggregator.ExecutorUris.Count, 0, "ExecutorUris List must not have data.");

            var uri1 = "x://hello1";

            aggregator.Aggregate(null, new List <string>()
            {
                uri1
            }, null, TimeSpan.Zero, false, false, null, null);

            Assert.AreEqual(aggregator.ExecutorUris.Count, 1, "ExecutorUris List must have data.");
            Assert.IsTrue(aggregator.ExecutorUris.Contains(uri1), "ExecutorUris List must have correct data.");

            var uri2 = "x://hello2";

            aggregator.Aggregate(null, new List <string>()
            {
                uri2
            }, null, TimeSpan.Zero, false, false, null, null);

            Assert.AreEqual(aggregator.ExecutorUris.Count, 2, "ExecutorUris List must have aggregated data.");
            Assert.IsTrue(aggregator.ExecutorUris.Contains(uri2), "ExecutorUris List must have correct data.");
        }
Example #6
0
 internal ParallelDataCollectionEventsHandler(IProxyExecutionManager proxyExecutionManager,
                                              ITestRunEventsHandler actualRunEventsHandler,
                                              IParallelProxyExecutionManager parallelProxyExecutionManager,
                                              ParallelRunDataAggregator runDataAggregator,
                                              IDataSerializer dataSerializer) :
     base(proxyExecutionManager, actualRunEventsHandler, parallelProxyExecutionManager, runDataAggregator, dataSerializer)
 {
     this.runDataAggregator = runDataAggregator;
 }
        public void AggregateRunDataMetricsShouldAggregateMetricsCorrectly()
        {
            var aggregator = new ParallelRunDataAggregator();

            aggregator.AggregateRunDataMetrics(null);

            var runMetrics = aggregator.GetAggregatedRunDataMetrics();

            Assert.AreEqual(runMetrics.Count, 0);
        }
        public void GetAggregatedRunDataMetricsShouldReturnEmptyIfMetricsIsNull()
        {
            var aggregator = new ParallelRunDataAggregator();

            var dict = new Dictionary <string, string>();

            aggregator.AggregateRunDataMetrics(null);
            var runMetrics = aggregator.GetAggregatedRunDataMetrics();

            Assert.AreEqual(runMetrics.Count, 0);
        }
Example #9
0
        public void GetAggregatedRunDataMetricsShouldReturnEmptyIfMetricAggregatorIsEmpty()
        {
            var aggregator = new ParallelRunDataAggregator();

            var dict = new Dictionary <string, object>();

            aggregator.AggregateRunDataMetrics(dict);
            var runMetrics = aggregator.GetAggregatedRunDataMetrics();

            Assert.AreEqual(0, runMetrics.Count);
        }
Example #10
0
        public void GetRunDataMetricsShouldNotAddNumberOfAdapterDiscoveredIfMetricsIsEmpty()
        {
            var aggregator = new ParallelRunDataAggregator();
            var dict       = new Dictionary <string, object>();

            aggregator.AggregateRunDataMetrics(dict);

            var runMetrics = aggregator.GetAggregatedRunDataMetrics();

            Assert.IsFalse(runMetrics.TryGetValue(TelemetryDataConstants.NumberOfAdapterDiscoveredDuringExecution, out var value));
        }
 public ParallelDataCollectionEventsHandler(IRequestData requestData,
                                            IProxyExecutionManager proxyExecutionManager,
                                            ITestRunEventsHandler actualRunEventsHandler,
                                            IParallelProxyExecutionManager parallelProxyExecutionManager,
                                            ParallelRunDataAggregator runDataAggregator,
                                            ITestRunAttachmentsProcessingManager attachmentsProcessingManager,
                                            CancellationToken cancellationToken) :
     this(requestData, proxyExecutionManager, actualRunEventsHandler, parallelProxyExecutionManager, runDataAggregator, JsonDataSerializer.Instance)
 {
     this.attachmentsProcessingManager = attachmentsProcessingManager;
     this.cancellationToken            = cancellationToken;
 }
        public void GetRunDataMetricsShouldNotAddTotalAdaptersUsedIfMetricsIsEmpty()
        {
            var aggregator = new ParallelRunDataAggregator();
            var dict       = new Dictionary <string, string>();

            aggregator.AggregateRunDataMetrics(dict);

            var runMetrics = aggregator.GetAggregatedRunDataMetrics();

            string value;

            Assert.AreEqual(runMetrics.TryGetValue(TelemetryDataConstants.NumberOfAdapterUsedToRunTests, out value), false);
        }
Example #13
0
        public void AggregateRunDataMetricsShouldNotAggregateRunState()
        {
            var aggregator = new ParallelRunDataAggregator();

            var dict = new Dictionary <string, object>();

            dict.Add(TelemetryDataConstants.RunState, "Completed");

            aggregator.AggregateRunDataMetrics(dict);
            aggregator.AggregateRunDataMetrics(dict);

            var runMetrics = aggregator.GetAggregatedRunDataMetrics();

            Assert.IsFalse(runMetrics.TryGetValue(TelemetryDataConstants.RunState, out var value));
        }
Example #14
0
        public void AggregateRunDataMetricsShouldAddTimeTakenByAllAdapters()
        {
            var aggregator = new ParallelRunDataAggregator();

            var dict = new Dictionary <string, object>();

            dict.Add(TelemetryDataConstants.TimeTakenByAllAdaptersInSec, .02091);

            aggregator.AggregateRunDataMetrics(dict);
            aggregator.AggregateRunDataMetrics(dict);

            var runMetrics = aggregator.GetAggregatedRunDataMetrics();

            Assert.IsTrue(runMetrics.TryGetValue(TelemetryDataConstants.TimeTakenByAllAdaptersInSec, out var value));
            Assert.AreEqual(.04182, value);
        }
Example #15
0
        public void GetRunDataMetricsShouldAddNumberOfAdapterDiscoveredIfMetricsIsEmpty()
        {
            var aggregator = new ParallelRunDataAggregator();

            var dict = new Dictionary <string, object>();

            dict.Add(TelemetryDataConstants.TimeTakenToRunTestsByAnAdapter + "executor:MSTestV1", .02091);
            dict.Add(TelemetryDataConstants.TimeTakenToRunTestsByAnAdapter + "executor:MSTestV2", .02091);

            aggregator.AggregateRunDataMetrics(dict);

            var runMetrics = aggregator.GetAggregatedRunDataMetrics();

            Assert.IsTrue(runMetrics.TryGetValue(TelemetryDataConstants.NumberOfAdapterDiscoveredDuringExecution, out var value));
            Assert.AreEqual(2, value);
        }
Example #16
0
        public void GetRunDataMetricsShouldAddTotalAdaptersUsedIfMetricsIsNotEmpty()
        {
            var aggregator = new ParallelRunDataAggregator();

            var dict = new Dictionary <string, object>();

            dict.Add(TelemetryDataConstants.TotalTestsRanByAdapter, 2);

            aggregator.AggregateRunDataMetrics(dict);
            aggregator.AggregateRunDataMetrics(dict);

            var runMetrics = aggregator.GetAggregatedRunDataMetrics();

            Assert.IsTrue(runMetrics.TryGetValue(TelemetryDataConstants.NumberOfAdapterUsedToRunTests, out var value));
            Assert.AreEqual(1, value);
        }
Example #17
0
        public void AggregateRunDataMetricsShouldAddTotalTestsRun()
        {
            var aggregator = new ParallelRunDataAggregator();

            var dict = new Dictionary <string, object>();

            dict.Add(TelemetryDataConstants.TotalTestsRanByAdapter, 2);

            aggregator.AggregateRunDataMetrics(dict);
            aggregator.AggregateRunDataMetrics(dict);

            var runMetrics = aggregator.GetAggregatedRunDataMetrics();

            Assert.IsTrue(runMetrics.TryGetValue(TelemetryDataConstants.TotalTestsRanByAdapter, out var value));
            Assert.AreEqual(4, Convert.ToInt32(value));
        }
        public void AggregateShouldAggregateRunStatsCorrectly()
        {
            var aggregator = new ParallelRunDataAggregator();

            aggregator.Aggregate(null, null, null, TimeSpan.Zero, false, false, null, null);

            var runStats = aggregator.GetAggregatedRunStats();

            Assert.AreEqual(runStats.ExecutedTests, 0, "RunStats must not have data.");

            var stats1 = new Dictionary <TestOutcome, long>();

            stats1.Add(TestOutcome.Passed, 2);
            stats1.Add(TestOutcome.Failed, 3);
            stats1.Add(TestOutcome.Skipped, 1);
            stats1.Add(TestOutcome.NotFound, 4);
            stats1.Add(TestOutcome.None, 2);

            aggregator.Aggregate(new TestRunStatistics(12, stats1), null, null, TimeSpan.Zero, false, false, null, null);

            runStats = aggregator.GetAggregatedRunStats();
            Assert.AreEqual(runStats.ExecutedTests, 12, "RunStats must have aggregated data.");
            Assert.AreEqual(runStats.Stats[TestOutcome.Passed], 2, "RunStats must have aggregated data.");
            Assert.AreEqual(runStats.Stats[TestOutcome.Failed], 3, "RunStats must have aggregated data.");
            Assert.AreEqual(runStats.Stats[TestOutcome.Skipped], 1, "RunStats must have aggregated data.");
            Assert.AreEqual(runStats.Stats[TestOutcome.NotFound], 4, "RunStats must have aggregated data.");
            Assert.AreEqual(runStats.Stats[TestOutcome.None], 2, "RunStats must have aggregated data.");


            var stats2 = new Dictionary <TestOutcome, long>();

            stats2.Add(TestOutcome.Passed, 3);
            stats2.Add(TestOutcome.Failed, 2);
            stats2.Add(TestOutcome.Skipped, 2);
            stats2.Add(TestOutcome.NotFound, 1);
            stats2.Add(TestOutcome.None, 3);

            aggregator.Aggregate(new TestRunStatistics(11, stats2), null, null, TimeSpan.Zero, false, false, null, null);

            runStats = aggregator.GetAggregatedRunStats();
            Assert.AreEqual(runStats.ExecutedTests, 23, "RunStats must have aggregated data.");
            Assert.AreEqual(runStats.Stats[TestOutcome.Passed], 5, "RunStats must have aggregated data.");
            Assert.AreEqual(runStats.Stats[TestOutcome.Failed], 5, "RunStats must have aggregated data.");
            Assert.AreEqual(runStats.Stats[TestOutcome.Skipped], 3, "RunStats must have aggregated data.");
            Assert.AreEqual(runStats.Stats[TestOutcome.NotFound], 5, "RunStats must have aggregated data.");
            Assert.AreEqual(runStats.Stats[TestOutcome.None], 5, "RunStats must have aggregated data.");
        }
        public void AggregateRunDataMetricsShouldAddTotalTestsRun()
        {
            var aggregator = new ParallelRunDataAggregator();

            var dict = new Dictionary <string, string>();

            dict.Add(TelemetryDataConstants.TotalTestsRanByAdapter, "2");

            aggregator.AggregateRunDataMetrics(dict);
            aggregator.AggregateRunDataMetrics(dict);

            var runMetrics = aggregator.GetAggregatedRunDataMetrics();

            string value;

            Assert.AreEqual(runMetrics.TryGetValue(TelemetryDataConstants.TotalTestsRanByAdapter, out value), true);
            Assert.AreEqual(value, "4");
        }
        public void AggregateRunDataMetricsShouldAddTimeTakenToRunTests()
        {
            var aggregator = new ParallelRunDataAggregator();

            var dict = new Dictionary <string, object>();

            dict.Add(TelemetryDataConstants.TimeTakenToRunTestsByAnAdapter, .02091);

            aggregator.AggregateRunDataMetrics(dict);
            aggregator.AggregateRunDataMetrics(dict);

            var runMetrics = aggregator.GetAggregatedRunDataMetrics();

            object value;

            Assert.AreEqual(runMetrics.TryGetValue(TelemetryDataConstants.TimeTakenToRunTestsByAnAdapter, out value), true);
            Assert.AreEqual(value, .04182);
        }
        public void AggregateRunDataMetricsShouldAddTimeTakenByAllAdapters()
        {
            var aggregator = new ParallelRunDataAggregator();

            var dict = new Dictionary <string, string>();

            dict.Add(TelemetryDataConstants.TimeTakenByAllAdaptersInSec, ".02091");

            aggregator.AggregateRunDataMetrics(dict);
            aggregator.AggregateRunDataMetrics(dict);

            var runMetrics = aggregator.GetAggregatedRunDataMetrics();

            string value;

            Assert.AreEqual(runMetrics.TryGetValue(TelemetryDataConstants.TimeTakenByAllAdaptersInSec, out value), true);
            Assert.AreEqual(value, (.04182).ToString());
        }
        public void AggregateShouldAggregateRunContextAttachmentsCorrectly()
        {
            var aggregator = new ParallelRunDataAggregator();

            var attachmentSet1 = new Collection <AttachmentSet>();

            attachmentSet1.Add(new AttachmentSet(new Uri("x://hello1"), "hello1"));

            aggregator.Aggregate(null, null, null, TimeSpan.Zero, false, false, attachmentSet1, null);

            Assert.AreEqual(aggregator.RunContextAttachments.Count, 1, "RunContextAttachments List must have data.");

            var attachmentSet2 = new Collection <AttachmentSet>();

            attachmentSet2.Add(new AttachmentSet(new Uri("x://hello2"), "hello2"));

            aggregator.Aggregate(null, null, null, TimeSpan.Zero, false, false, attachmentSet2, null);

            Assert.AreEqual(aggregator.RunContextAttachments.Count, 2, "RunContextAttachments List must have aggregated data.");
        }
        public void ParallelRunDataAggregatorConstructorShouldInitializeAggregatorVars()
        {
            var aggregator = new ParallelRunDataAggregator();

            Assert.AreEqual(aggregator.ElapsedTime, TimeSpan.Zero, "Timespan must be initialized to zero.");

            Assert.IsNotNull(aggregator.Exceptions, "Exceptions list must not be null");
            Assert.IsNotNull(aggregator.ExecutorUris, "ExecutorUris list must not be null");
            Assert.IsNotNull(aggregator.RunCompleteArgsAttachments, "RunCompleteArgsAttachments list must not be null");
            Assert.IsNotNull(aggregator.RunContextAttachments, "RunContextAttachments list must not be null");

            Assert.AreEqual(aggregator.Exceptions.Count, 0, "Exceptions List must be initialized as empty list.");
            Assert.AreEqual(aggregator.ExecutorUris.Count, 0, "Exceptions List must be initialized as empty list.");
            Assert.AreEqual(aggregator.RunCompleteArgsAttachments.Count, 0, "RunCompleteArgsAttachments List must be initialized as empty list.");
            Assert.AreEqual(aggregator.RunContextAttachments.Count, 0, "RunContextAttachments List must be initialized as empty list");

            Assert.IsFalse(aggregator.IsAborted, "Aborted must be false by default");

            Assert.IsFalse(aggregator.IsCanceled, "Canceled must be false by default");
        }