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(); }
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"); } }
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(""); }
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(); } }
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"); }
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); } ); }
public StringBuilderLogger LogToStringBuilder() { Show(markerIn: true, variables: true, events: true, sql: true, timestamp: false, timeDifference: false); var log = new StringBuilderLogger(); Writer = log; return log; }
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>"); }
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"); }
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"); }
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>"); }
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"); }
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")); }
public ActionParameterTypeConversionTests() { Logger = new StringBuilderLogger(); Subject = new ArgumentTypesCommand(); Subject .Use(Logger) ; }
public void On_GetAll_ReturnsCorrectResult() { var config = MySqlConnectionStringParser.Load(MySqlTestConstants.ConnectionConfigPath); var logger = new StringBuilderLogger(); var sut = new MySqlRepository(config, logger); sut.GetAll("residence"); }
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); }
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(); }
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(); }
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()); }