Пример #1
0
        private static void TestDbConnection(Arguments arguments)
        {
            Console.WriteLine("Preparing logger and connection manager.");
            var logger            = new StringBuilderLogger();
            var connectionManager = new MySqlConnectionManager(logger);

            Console.WriteLine("Setting up the database configuration.");
            var dbConnectionConfig = GetConnectionConfig(arguments);

            Console.WriteLine("Connecting to the database.");
            var mySqlConnection = connectionManager.GetConnection(dbConnectionConfig);

            if (mySqlConnection != null)
            {
                Console.WriteLine("Connection was successful.");
                Console.WriteLine("Disconnecting from the database.");
                connectionManager.Disconnect();
                Console.WriteLine("Disconnected from database.");
            }
            else
            {
                Console.WriteLine("Connection failed");
            }

            Console.WriteLine("Log Dump: ");
            Console.WriteLine(logger.Dump());
            Console.ReadLine();
        }
Пример #2
0
        private static void TestNewOrCreate(Arguments arguments)
        {
            var logger             = new StringBuilderLogger();
            var connectionManager  = new MySqlConnectionManager(logger);
            var dbConnectionConfig = GetConnectionConfig(arguments);
            var mySqlConnection    = connectionManager.GetConnection(dbConnectionConfig);

            if (mySqlConnection != null)
            {
                string statement =
                    "CREATE TABLE IF NOT EXISTS `product` ( " +
                    "`Id` varchar(256) NOT NULL," +
                    "`Description` varchar(256) NOT NULL," +
                    "`Rating` int(11) NOT NULL) " +
                    "ENGINE=InnoDB DEFAULT CHARSET=latin1;";

                MySqlCommand command = new MySqlCommand(statement, mySqlConnection);
                command.ExecuteNonQuery();
                connectionManager.Disconnect();
            }
            else
            {
                Console.WriteLine("Connection failed");
            }
        }
Пример #3
0
        public void HelpForAGivenActionUsingAlias()
        {
            // Given
            var logger = new StringBuilderLogger();
            var root   = new HelpWriterTestCommand()
                         .Use(logger)
            ;

            // When
            var result = this.Subject.Write(root, "enum");

            // Then
            var lines = result
                        .Split('\n')
                        .Select(row => row.Replace("\r", "").TrimEnd())
                        .ToArray()
            ;

            var i = -1;

            lines[++i].ShouldBe("enum-action             aliases: enum");
            lines[++i].ShouldBe("                        Enumerated parameters should be listed before");
            lines[++i].ShouldBe("                        default value.");
            lines[++i].ShouldBe("");
            lines[++i].ShouldBe("    --input             valid values: One, Two, Three");
            lines[++i].ShouldBe("                        default value: One");
            lines[++i].ShouldBe("");
            lines[++i].ShouldBe("");
            lines[++i].ShouldBe("");
        }
Пример #4
0
        public void CommandTest()
        {
            StringBuilderLogger logger;

            Logger.LogProvider = logger = new StringBuilderLogger();

            using (var module = new CommandModule()) {
                var context = new TaskContext()
                {
                    EnvironmentVariables = new Dictionary <string, string>(),
                    SkippedSteps         = new HashSet <int>(),
                    WorkingDirectory     = "../../../"
                };

                var definition = new CommandModuleDefinition()
                {
                    FilePath  = "dotnet",
                    Arguments = "list reference"
                };

                module.Execute(context, definition);

                Assert.AreEqual("Executing dotnet list reference", logger.Out.ToString(0, 31));

                Logger.ResetProvider();
            }
        }
Пример #5
0
        public void HelpForSubCommandUsingAlias()
        {
            // Given
            var logger = new StringBuilderLogger();
            var root   = new HelpWriterTestCommand()
                         .RegisterSubCommand(new KatasCommand())
                         .Use(logger)
            ;

            // When
            var result = this.Subject.Write(root, "exercise");

            // Then
            var lines = result
                        .Split('\n')
                        .Select(row => row.Replace("\r", ""))
                        .ToArray()
            ;

            var i = -1;

            lines[++i].Trim().ShouldBe("This command is intended for demonstration purposes. It provides some katas");
            lines[++i].Trim().ShouldBe("which can be executed as actions.");
            lines[++i].Trim().ShouldBe("");
            lines[++i].Trim().ShouldBe("default action: fizz-buzz");
        }
Пример #6
0
        static void Main(string[] args)
        {
            var parser       = new Parser();
            var parserResult = parser.ParseArguments <Options>(args);

            parserResult.WithParsed <Options>(options => Execute(options));
            parserResult.WithNotParsed(errs =>
            {
                var helpText = HelpText.AutoBuild(parserResult, h =>
                {
                    // to be more verbose, discover plugins to load
                    var slog           = new StringBuilderLogger();
                    var foundComparers = _getComparers(new IO());
                    _dumpComparers(foundComparers, slog);

                    // Configure HelpText here or create your own and return it
                    h.AdditionalNewLineAfterOption = false;
                    return(HelpText.DefaultParsingErrorsHandler(parserResult, h)
                           .AddPostOptionsLine("Exit code 0: finished without differences")
                           .AddPostOptionsLine("Exit code 1: found differences")
                           .AddPostOptionsLine("Exit code 2: Serious error or invalid arguments")
                           .AddPostOptionsLine("")
                           .AddPostOptionsLine(slog.StringBuilderOutput.ToString())
                           .AddPostOptionsLine("")
                           );
                }, e =>
                {
                    Environment.ExitCode = 2;
                    return(e);
                });
                Console.Error.Write(helpText);
            }
                                       );
        }
Пример #7
0
		public StringBuilderLogger LogToStringBuilder()
		{
			Show(markerIn: true, variables: true, events: true, sql: true, timestamp: false, timeDifference: false);
			var log = new StringBuilderLogger();
			Writer = log;
			return log;
		}
Пример #8
0
        public void SubCommandSectionFooter()
        {
            // Given
            var logger     = new StringBuilderLogger();
            var subCommand = new SubCommand()
                             .RegisterSubCommand(new KatasCommand())
            ;
            var root = new DefaultCommand()
                       .RegisterSubCommand(subCommand)
                       .Use(logger)
            ;

            // When
            var result = root.Execute("sub", "help");

            // Then
            Assert.That(result, Is.EqualTo(0), logger.ErrorBuilder.ToString());

            var lines = logger.InfoBuilder.ToString()
                        .Split('\n')
                        .Select(row => row.Replace("\r", ""))
                        .SkipUntil(row => row == "To get help for subcommands")
                        .ToArray()
            ;

            var i = -1;

            lines[++i].Trim().ShouldBe("To get help for subcommands");
            lines[++i].Trim().ShouldBe("sub help <subcommand>");
        }
Пример #9
0
        public void HelpInvokedAsActionOnParent()
        {
            // Given
            var logger = new StringBuilderLogger();
            var root   = new HelpWriterTestCommand()
                         .RegisterSubCommand(new KatasCommand())
                         .Use(logger)
            ;

            // When
            var result = root.Execute("help", "katas");

            // Then
            Assert.That(result, Is.EqualTo(0), logger.ErrorBuilder.ToString());

            var lines = logger.InfoBuilder.ToString()
                        .Split('\n')
                        .Select(row => row.Replace("\r", ""))
                        .ToArray()
            ;

            var i = -1;

            lines[++i].Trim().ShouldBe("This command is intended for demonstration purposes. It provides some katas");
            lines[++i].Trim().ShouldBe("which can be executed as actions.");
            lines[++i].Trim().ShouldBe("");
            lines[++i].Trim().ShouldBe("default action: fizz-buzz");
        }
Пример #10
0
        public void HelpForSubSubCommands()
        {
            // Given
            var logger     = new StringBuilderLogger();
            var subCommand = new SubCommand()
                             .RegisterSubCommand(new KatasCommand())
            ;
            var root = new DefaultCommand()
                       .RegisterSubCommand(subCommand)
                       .Use(logger)
            ;

            // When
            var result = root.Execute("sub", "katas", "help");

            // Then
            Assert.That(result, Is.EqualTo(0), logger.ErrorBuilder.ToString());

            var lines = logger.InfoBuilder.ToString()
                        .Split('\n')
                        .Where(row => !string.IsNullOrWhiteSpace(row))
                        .Select(row => row.Replace("\r", ""))
                        .ToArray()
            ;

            var i = -1;

            lines[++i].Trim().ShouldBe("This command is intended for demonstration purposes. It provides some katas");
        }
Пример #11
0
        public void HelpDisplaysSubCommands()
        {
            // Given
            var logger = new StringBuilderLogger();
            var root   = new HelpWriterTestCommand()
                         .RegisterSubCommand(new KatasCommand())
                         .Use(logger)
            ;

            // When
            var result = this.Subject.Write(root);

            // Then
            var lines = result
                        .Split('\n')
                        .Select(row => row.Replace("\r", "").TrimEnd())
                        .SkipUntil(row => row == "SUB COMMANDS")
                        .ToArray()
            ;

            var i = -1;

            lines[++i].ShouldBe("SUB COMMANDS");
            lines[++i].ShouldBe("katas                   This command is intended for demonstration purposes.");
            lines[++i].ShouldBe("                        It provides some katas which can be executed as");
            lines[++i].ShouldBe("                        actions.");
            lines[++i].ShouldBe("To get help for subcommands");
            lines[++i].ShouldBe("\thelp <subcommand>");
        }
Пример #12
0
        public void HelpForAGivenAction()
        {
            // Given
            var logger = new StringBuilderLogger();
            var root   = new HelpWriterTestCommand()
                         .Use(logger)
            ;

            // When
            var result = this.Subject.Write(root, "enum-action");

            // Then
            var lines = result
                        .Split('\n')
                        .Select(row => row.Replace("\r", "").TrimEnd())
                        .ToArray()
            ;

            var i = 0;

            lines[i++].ShouldBe("enum-action             aliases: enum");
            lines[i++].ShouldBe("                        Enumerated parameters should be listed before");
            lines[i++].ShouldBe("                        default value.");
            lines[i++].ShouldBe("");
            lines[i++].ShouldBe("    --input             valid values: One, Two, Three");
            lines[i++].ShouldBe("                        default value: One");
            lines[i++].ShouldBe("");
            lines[i++].ShouldBe("");
            lines[i++].ShouldBe("");
            lines[i++].ShouldBe("COMMON PARAMETERS");
            lines[i++].ShouldBe("    --common1           default value:");
            lines[i++].ShouldBe("                        aliases: -c");
            lines[i++].ShouldBe("                        Common parameters are displayed after all of the");
            lines[i++].ShouldBe("                        actions");
        }
Пример #13
0
        protected override async Task ProcessAsync(IServiceScope scope, CancellationToken stoppingToken)
        {
            var scheduler = scope.ServiceProvider.GetRequiredService <IJobScheduler>();

            while (!stoppingToken.IsCancellationRequested)
            {
                var job = await scheduler.DequeueAsync();

                if (job == null)
                {
                    break;
                }

                var       executor = _factory.TryCreate(job.JobType, scope.ServiceProvider);
                var       logger   = new StringBuilderLogger();
                JobStatus result;

                try
                {
                    result = await executor.ExecuteAsync(job.Arguments, job.JobId, logger);
                }
                catch (Exception ex)
                {
                    logger.LogError(ex, "Unknown exception.");
                    result = JobStatus.Failed;
                }

                await _fileProvider.WriteStringAsync(job.JobId + "/log", logger.StringBuilder.ToString());

                logger.StringBuilder.Clear();

                await scheduler.MarkAsync(job, result, DateTimeOffset.Now, JobStatus.Running);
            }
        }
        public void Test_StringStreamLogger_Delegates_All_Calls_Properly()
        {
            // Arrange
            var slogger = new StringBuilderLogger();

            // Directly reset the string builders to check whether they are correctly used
            var sOut = new StringBuilder();
            var sErr = new StringBuilder();

            slogger.StringBuilderOutput = sOut;
            slogger.StringBuilderError  = sErr;

            // Act
            slogger.Info("{0}", "Info");
            slogger.Warning("{0}", "Warning");
            slogger.Error("{0}", "Error");
            slogger.Exception("Exception", new Exception("Text", new Exception("inner")));

            // Assert
            Assert.That(slogger.StringBuilderOutput.ToString(), Contains.Substring("Info"));
            Assert.That(slogger.StringBuilderOutput.ToString(), Contains.Substring("Warning"));

            Assert.That(slogger.StringBuilderError.ToString(), Contains.Substring("Error"));
            Assert.That(slogger.StringBuilderError.ToString(), Contains.Substring("Exception").And.Contains("Text").And.Contains("inner"));
        }
Пример #15
0
 public ActionParameterTypeConversionTests()
 {
     Logger  = new StringBuilderLogger();
     Subject = new ArgumentTypesCommand();
     Subject
     .Use(Logger)
     ;
 }
Пример #16
0
        public void On_GetAll_ReturnsCorrectResult()
        {
            var config = MySqlConnectionStringParser.Load(MySqlTestConstants.ConnectionConfigPath);
            var logger = new StringBuilderLogger();

            var sut = new MySqlRepository(config, logger);

            sut.GetAll("residence");
        }
Пример #17
0
        public static void Main()
        {
            Console.Write("Click [ENTER] to start directory traversion...");
            Console.ReadKey(false);

            Stopwatch.Start();
            {
                var logger = new StringBuilderLogger();
                TraverseDirectory(DirectoryPath, new DirectoryTraversalDfs(logger));
                Console.WriteLine(logger.GetAllText());
            }
            Stopwatch.Stop();

            Console.WriteLine("Elapsed time: {0}\n", Stopwatch.Elapsed);
        }
Пример #18
0
        public void RequestOutputImageTest()
        {
            StringBuilderLogger logger;

            Logger.LogProvider = logger = new StringBuilderLogger();

            // for real test
            // var module = new RequestModule();

            // for mock test
            var module = new MockRequestModule(new HttpResponseMessage()
            {
                Content = new ByteArrayContent(File.ReadAllBytes("Swarm.TaskRunner.Tests.deps.json"))
                {
                    Headers =
                    {
                        { "Content-Type", System.Net.Mime.MediaTypeNames.Application.Octet }
                    }
                }
            });

            var context = new TaskContext()
            {
                EnvironmentVariables = new Dictionary <string, string>(),
                SkippedSteps         = new HashSet <int>(),
                WorkingDirectory     = Environment.CurrentDirectory
            };

            var url        = "https://via.placeholder.com/150";
            var definition = new RequestModuleDefinition()
            {
                Method       = "GET",
                Url          = url,
                OutputToFile = "img.png"
            };

            module.Execute(context, definition);

            Assert.AreEqual($"Request GET {url}{Environment.NewLine}", logger.Out.ToString());
            Assert.IsTrue(File.Exists("img.png"));

            Logger.ResetProvider();
        }
Пример #19
0
        public void RequestTest()
        {
            var args = "{\r\n  \"foo1\": \"bar1\",\r\n  \"foo2\": \"bar2\"\r\n}";
            StringBuilderLogger logger;

            Logger.LogProvider = logger = new StringBuilderLogger();

            // for real test
            // var module = new RequestModule();

            // for mock test
            var module = new MockRequestModule(new HttpResponseMessage()
            {
                Content = new StringContent("{\"args\":" + args + "}")
            });

            var context = new TaskContext()
            {
                EnvironmentVariables = new Dictionary <string, string>(),
                SkippedSteps         = new HashSet <int>(),
                WorkingDirectory     = Environment.CurrentDirectory
            };

            var url        = "https://postman-echo.com/get?foo1=bar1&foo2=bar2";
            var definition = new RequestModuleDefinition()
            {
                Method       = "Get",
                Url          = url,
                OutputToEnv  = "RES",
                OutputToFile = "res.txt"
            };

            module.Execute(context, definition);

            dynamic result = JsonConvert.DeserializeObject(context.EnvironmentVariables["RES"]);

            Assert.AreEqual($"Request Get {url}{Environment.NewLine}", logger.Out.ToString());
            Assert.AreEqual(args, result.args.ToString());
            Assert.IsTrue(File.Exists("res.txt"));

            Logger.ResetProvider();
        }
Пример #20
0
        private static void TestNewOrCreateWithStatementModel(Arguments arguments)
        {
            var logger             = new StringBuilderLogger();
            var connectionManager  = new MySqlConnectionManager(logger);
            var dbConnectionConfig = GetConnectionConfig(arguments);
            var mySqlConnection    = connectionManager.GetConnection(dbConnectionConfig);

            if (mySqlConnection != null)
            {
                CreateTableIfNotExistsStatement statement = new CreateTableIfNotExistsStatement(
                    "eror",
                    new TableColumnCollection(
                        new TableColumn[]
                {
                    new TableColumn(
                        "Id",
                        new ColumnType("VARCHAR", 256),
                        true),
                    new TableColumn(
                        "Description",
                        new ColumnType("VARCHAR", 256),
                        true),
                    new TableColumn(
                        "Rating",
                        new ColumnType("INT", 11),
                        true)
                }));

                MySqlCommand command = new MySqlCommand(statement.Serialize(), mySqlConnection);
                command.ExecuteNonQuery();
                connectionManager.Disconnect();
            }
            else
            {
                Console.WriteLine("Connection failed");
            }
        }
        internal static void Main()
        {
            #if DEBUG
            Console.SetIn(new System.IO.StreamReader("../../input.txt"));
            #endif

            var commandProcessor = new CommandProcessorFacade();
            var consoleLogger    = new StringBuilderLogger();

            while (true)
            {
                string line = Console.ReadLine();
                if (line == "End" || string.IsNullOrEmpty(line))
                {
                    break;
                }

                var commandResultMessage = commandProcessor.ProcessCommand(line);
                consoleLogger.AppendLine(commandResultMessage);
            }

            //! Visitor
            consoleLogger.Accept(new ConsoleLoggerVisitorWithNewLine());
        }