Example #1
0
 /// <nodoc />
 public TestRunner(Action <Diagnostic> diagnosticHandler, bool updateFailedTests)
 {
     m_tracingLogger     = BuildXL.FrontEnd.Core.Tracing.Logger.CreateLogger(true);
     m_astLogger         = Script.Tracing.Logger.CreateLogger(true);
     m_schedulerLogger   = BuildXL.Scheduler.Tracing.Logger.CreateLogger(true);
     m_diagnosticHandler = diagnosticHandler;
     m_updateFailedTests = updateFailedTests;
     BuildXL.Storage.ContentHashingUtilities.SetDefaultHashType();
 }
Example #2
0
        // Removal
        public void TestParseQualifier(string qualifierExpression, string expectedQualifier, bool useNamedQualifiers, bool useDefaultQualifier, params string[] expectedErrorContents)
        {
            var namedQualifiers = useNamedQualifiers ? new Dictionary <string, IReadOnlyDictionary <string, string> >
            {
                { "named", new Dictionary <string, string> {
                      { "n1", "v1" }, { "n2", "v2" }
                  } },
                { "Other", new Dictionary <string, string> {
                      { "n1", "o1" }
                  } },
            } : null;
            var defaultQualifier = useDefaultQualifier ? new Dictionary <string, string>
            {
                { "d1", "v1" },
                { "d2", "v2" },
            } : null;

            var logger         = Logger.CreateLogger(true);
            var loggingContext = new LoggingContext("Test");
            IReadOnlyDictionary <string, string> actualQualifier;

            var result = FrontEndHostController.TryParseQualifiers(logger, loggingContext, qualifierExpression, defaultQualifier, namedQualifiers, out actualQualifier);

            if (expectedErrorContents == null || expectedErrorContents.Length == 0)
            {
                Assert.True(result, "Expected sucessfull parse");
                Assert.True(actualQualifier != null, "Expected non null out value");
                Assert.Equal(0, logger.CapturedDiagnostics.Count);

                var actualQualifierPrint = string.Join("+", actualQualifier.Select(kv => $"{kv.Key}-{kv.Value}"));
                Assert.Equal(expectedQualifier, actualQualifierPrint);
            }
            else
            {
                Assert.False(result, "Expected failed parse");
                Assert.True(actualQualifier == null, "Expected null as out variable");
                Assert.Equal(1, logger.CapturedDiagnostics.Count);
                var errorMessage = logger.CapturedDiagnostics[0].Message;
                foreach (var expectedErrorContent in expectedErrorContents)
                {
                    Assert.True(errorMessage.Contains(expectedErrorContent), $"Message:\n{errorMessage}\nDoes not contain:\n{expectedErrorContent}");
                }
            }
        }
        private FrontEndHostController CreateHost()
        {
            var factory = new FrontEndFactory();

            factory.AddFrontEnd(new DummyFrontEnd1());
            factory.TrySeal(new LoggingContext("UnitTest"));

            var context = BuildXLContext.CreateInstanceForTesting();

            var moduleRegistry = new ModuleRegistry(context.SymbolTable);

            var controller = new FrontEndHostController(
                factory,
                new DScriptWorkspaceResolverFactory(),
                new EvaluationScheduler(degreeOfParallelism: 8),
                moduleRegistry,
                new FrontEndStatistics(),
                Logger.CreateLogger(),
                collector: null,
                collectMemoryAsSoonAsPossible: false);


            var fileSystem = new InMemoryFileSystem(context.PathTable);

            ((IFrontEndController)controller).InitializeHost(
                new FrontEndContext(context, new LoggingContext("UnitTest"), fileSystem),
                new ConfigurationImpl()
            {
                FrontEnd = new FrontEndConfiguration()
                {
                    MaxFrontEndConcurrency = 1,
                }
            });

            var inMemoryCache = new EngineCache(
                new InMemoryArtifactContentCache(context),
                new InMemoryTwoPhaseFingerprintStore());

            controller.InitializeInternalForTesting(
                Task.FromResult(new Possible <EngineCache>(inMemoryCache)),
                AbsolutePath.Create(context.PathTable, TestOutputDirectory));

            return(controller);
        }
Example #4
0
        private void TestQualifierConfigValidation(
            IReadOnlyDictionary <string, string> defaultQualifier,
            IReadOnlyDictionary <string, IReadOnlyDictionary <string, string> > namedQualifiers,
            params string[] expectedErrorContents)
        {
            var logger         = Logger.CreateLogger(true);
            var loggingContext = new LoggingContext("Test");
            var pathTable      = new PathTable();
            var qualifierTable = new QualifierTable(pathTable.StringTable);

            var result = FrontEndHostController.ValidateAndRegisterConfigurationQualifiers(logger, loggingContext, qualifierTable, defaultQualifier, namedQualifiers);

            Assert.False(result, "Expected failed parse");
            Assert.Equal(1, logger.CapturedDiagnostics.Count);
            var errorMessage = logger.CapturedDiagnostics[0].Message;

            foreach (var expectedErrorContent in expectedErrorContents)
            {
                Assert.True(errorMessage.Contains(expectedErrorContent), $"Message:\n{errorMessage}\nDoes not contain:\n{expectedErrorContent}");
            }
        }