From 89408aebdf494c62c395ec8a4dfc1fab4a0fb444 Mon Sep 17 00:00:00 2001 From: t_kirill Date: Fri, 20 Oct 2017 15:51:41 +0500 Subject: [PATCH 01/14] + Empty ASP.NET Core 2 project EventGenerator --- EventGenerator/EventGenerator.sln | 25 +++++++++++ .../Controllers/ValuesController.cs | 41 +++++++++++++++++++ .../EventGenerator/EventGenerator.csproj | 19 +++++++++ EventGenerator/EventGenerator/Program.cs | 18 ++++++++ .../Properties/launchSettings.json | 29 +++++++++++++ EventGenerator/EventGenerator/Startup.cs | 34 +++++++++++++++ .../appsettings.Development.json | 10 +++++ .../EventGenerator/appsettings.json | 15 +++++++ 8 files changed, 191 insertions(+) create mode 100644 EventGenerator/EventGenerator.sln create mode 100644 EventGenerator/EventGenerator/Controllers/ValuesController.cs create mode 100644 EventGenerator/EventGenerator/EventGenerator.csproj create mode 100644 EventGenerator/EventGenerator/Program.cs create mode 100644 EventGenerator/EventGenerator/Properties/launchSettings.json create mode 100644 EventGenerator/EventGenerator/Startup.cs create mode 100644 EventGenerator/EventGenerator/appsettings.Development.json create mode 100644 EventGenerator/EventGenerator/appsettings.json diff --git a/EventGenerator/EventGenerator.sln b/EventGenerator/EventGenerator.sln new file mode 100644 index 0000000..ff3fae9 --- /dev/null +++ b/EventGenerator/EventGenerator.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.26730.16 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EventGenerator", "EventGenerator\EventGenerator.csproj", "{C3DBE575-343E-4C6D-9E89-4A4032A81A68}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {C3DBE575-343E-4C6D-9E89-4A4032A81A68}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C3DBE575-343E-4C6D-9E89-4A4032A81A68}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C3DBE575-343E-4C6D-9E89-4A4032A81A68}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C3DBE575-343E-4C6D-9E89-4A4032A81A68}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {6D315680-7A26-4A3E-A536-87E729253BD8} + EndGlobalSection +EndGlobal diff --git a/EventGenerator/EventGenerator/Controllers/ValuesController.cs b/EventGenerator/EventGenerator/Controllers/ValuesController.cs new file mode 100644 index 0000000..50ffdb7 --- /dev/null +++ b/EventGenerator/EventGenerator/Controllers/ValuesController.cs @@ -0,0 +1,41 @@ +using System.Collections.Generic; +using Microsoft.AspNetCore.Mvc; + +namespace EventGenerator.Controllers +{ + [Route("api/[controller]")] + public class ValuesController : Controller + { + // GET api/values + [HttpGet] + public IEnumerable Get() + { + return new string[] { "value1", "value2" }; + } + + // GET api/values/5 + [HttpGet("{id}")] + public string Get(int id) + { + return "value"; + } + + // POST api/values + [HttpPost] + public void Post([FromBody]string value) + { + } + + // PUT api/values/5 + [HttpPut("{id}")] + public void Put(int id, [FromBody]string value) + { + } + + // DELETE api/values/5 + [HttpDelete("{id}")] + public void Delete(int id) + { + } + } +} diff --git a/EventGenerator/EventGenerator/EventGenerator.csproj b/EventGenerator/EventGenerator/EventGenerator.csproj new file mode 100644 index 0000000..89f574c --- /dev/null +++ b/EventGenerator/EventGenerator/EventGenerator.csproj @@ -0,0 +1,19 @@ + + + + netcoreapp2.0 + + + + + + + + + + + + + + + diff --git a/EventGenerator/EventGenerator/Program.cs b/EventGenerator/EventGenerator/Program.cs new file mode 100644 index 0000000..b18221c --- /dev/null +++ b/EventGenerator/EventGenerator/Program.cs @@ -0,0 +1,18 @@ +using Microsoft.AspNetCore; +using Microsoft.AspNetCore.Hosting; + +namespace EventGenerator +{ + public class Program + { + public static void Main(string[] args) + { + BuildWebHost(args).Run(); + } + + public static IWebHost BuildWebHost(string[] args) => + WebHost.CreateDefaultBuilder(args) + .UseStartup() + .Build(); + } +} diff --git a/EventGenerator/EventGenerator/Properties/launchSettings.json b/EventGenerator/EventGenerator/Properties/launchSettings.json new file mode 100644 index 0000000..bbbd7e5 --- /dev/null +++ b/EventGenerator/EventGenerator/Properties/launchSettings.json @@ -0,0 +1,29 @@ +{ + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:58226/", + "sslPort": 0 + } + }, + "profiles": { + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "launchUrl": "api/values", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "EventGenerator": { + "commandName": "Project", + "launchBrowser": true, + "launchUrl": "api/values", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "http://localhost:58227/" + } + } +} diff --git a/EventGenerator/EventGenerator/Startup.cs b/EventGenerator/EventGenerator/Startup.cs new file mode 100644 index 0000000..c0e4abe --- /dev/null +++ b/EventGenerator/EventGenerator/Startup.cs @@ -0,0 +1,34 @@ +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; + +namespace EventGenerator +{ + public class Startup + { + public Startup(IConfiguration configuration) + { + Configuration = configuration; + } + + public IConfiguration Configuration { get; } + + // This method gets called by the runtime. Use this method to add services to the container. + public void ConfigureServices(IServiceCollection services) + { + services.AddMvc(); + } + + // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. + public void Configure(IApplicationBuilder app, IHostingEnvironment env) + { + if (env.IsDevelopment()) + { + app.UseDeveloperExceptionPage(); + } + + app.UseMvc(); + } + } +} diff --git a/EventGenerator/EventGenerator/appsettings.Development.json b/EventGenerator/EventGenerator/appsettings.Development.json new file mode 100644 index 0000000..fa8ce71 --- /dev/null +++ b/EventGenerator/EventGenerator/appsettings.Development.json @@ -0,0 +1,10 @@ +{ + "Logging": { + "IncludeScopes": false, + "LogLevel": { + "Default": "Debug", + "System": "Information", + "Microsoft": "Information" + } + } +} diff --git a/EventGenerator/EventGenerator/appsettings.json b/EventGenerator/EventGenerator/appsettings.json new file mode 100644 index 0000000..26bb0ac --- /dev/null +++ b/EventGenerator/EventGenerator/appsettings.json @@ -0,0 +1,15 @@ +{ + "Logging": { + "IncludeScopes": false, + "Debug": { + "LogLevel": { + "Default": "Warning" + } + }, + "Console": { + "LogLevel": { + "Default": "Warning" + } + } + } +} From c5e64ac6a1c3fae8bd005437ee61b973fa265b7d Mon Sep 17 00:00:00 2001 From: t_kirill Date: Fri, 20 Oct 2017 16:23:50 +0500 Subject: [PATCH 02/14] + GenerateController with validation --- .../BusinessLogic/EventGenerationManager.cs | 10 +++++++ .../BusinessLogic/IEventGenerationManager.cs | 10 +++++++ .../Controllers/GenerateController.cs | 29 +++++++++++++++++++ .../EventGenerator/Models/EventType.cs | 7 +++++ .../Models/GenerateEventsArgs.cs | 13 +++++++++ EventGenerator/EventGenerator/Startup.cs | 4 ++- 6 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 EventGenerator/EventGenerator/BusinessLogic/EventGenerationManager.cs create mode 100644 EventGenerator/EventGenerator/BusinessLogic/IEventGenerationManager.cs create mode 100644 EventGenerator/EventGenerator/Controllers/GenerateController.cs create mode 100644 EventGenerator/EventGenerator/Models/EventType.cs create mode 100644 EventGenerator/EventGenerator/Models/GenerateEventsArgs.cs diff --git a/EventGenerator/EventGenerator/BusinessLogic/EventGenerationManager.cs b/EventGenerator/EventGenerator/BusinessLogic/EventGenerationManager.cs new file mode 100644 index 0000000..443f7e5 --- /dev/null +++ b/EventGenerator/EventGenerator/BusinessLogic/EventGenerationManager.cs @@ -0,0 +1,10 @@ +using System.Threading.Tasks; +using EventGenerator.Models; + +namespace EventGenerator.BusinessLogic +{ + public class EventGenerationManager : IEventGenerationManager + { + public Task SendAsync(EventType argsEventType, int argsCount) => Task.FromResult(true); + } +} \ No newline at end of file diff --git a/EventGenerator/EventGenerator/BusinessLogic/IEventGenerationManager.cs b/EventGenerator/EventGenerator/BusinessLogic/IEventGenerationManager.cs new file mode 100644 index 0000000..de962d6 --- /dev/null +++ b/EventGenerator/EventGenerator/BusinessLogic/IEventGenerationManager.cs @@ -0,0 +1,10 @@ +using System.Threading.Tasks; +using EventGenerator.Models; + +namespace EventGenerator.BusinessLogic +{ + public interface IEventGenerationManager + { + Task SendAsync(EventType argsEventType, int argsCount); + } +} \ No newline at end of file diff --git a/EventGenerator/EventGenerator/Controllers/GenerateController.cs b/EventGenerator/EventGenerator/Controllers/GenerateController.cs new file mode 100644 index 0000000..9888634 --- /dev/null +++ b/EventGenerator/EventGenerator/Controllers/GenerateController.cs @@ -0,0 +1,29 @@ +using System.Threading.Tasks; +using EventGenerator.BusinessLogic; +using EventGenerator.Models; +using Microsoft.AspNetCore.Mvc; + +namespace EventGenerator.Controllers +{ + [Route("/[controller]")] + public class GenerateController : Controller + { + private readonly IEventGenerationManager _manager; + + public GenerateController(IEventGenerationManager manager) + { + _manager = manager; + } + + [HttpPost] + public async Task Index([FromBody] GenerateEventsArgs args) + { + if (ModelState.IsValid) + { + var ok = await _manager.SendAsync(args.EventType, args.Count); + return ok ? Ok() : StatusCode(500); + } + return BadRequest(ModelState); + } + } +} \ No newline at end of file diff --git a/EventGenerator/EventGenerator/Models/EventType.cs b/EventGenerator/EventGenerator/Models/EventType.cs new file mode 100644 index 0000000..35a8b57 --- /dev/null +++ b/EventGenerator/EventGenerator/Models/EventType.cs @@ -0,0 +1,7 @@ +namespace EventGenerator.Models +{ + public enum EventType + { + Logs + } +} \ No newline at end of file diff --git a/EventGenerator/EventGenerator/Models/GenerateEventsArgs.cs b/EventGenerator/EventGenerator/Models/GenerateEventsArgs.cs new file mode 100644 index 0000000..8bf9bdf --- /dev/null +++ b/EventGenerator/EventGenerator/Models/GenerateEventsArgs.cs @@ -0,0 +1,13 @@ +using System.ComponentModel.DataAnnotations; + +namespace EventGenerator.Models +{ + public class GenerateEventsArgs + { + [Required] + public EventType EventType { get; set; } + + [Range(1, 10000)] + public int Count { get; set; } + } +} \ No newline at end of file diff --git a/EventGenerator/EventGenerator/Startup.cs b/EventGenerator/EventGenerator/Startup.cs index c0e4abe..ffe8445 100644 --- a/EventGenerator/EventGenerator/Startup.cs +++ b/EventGenerator/EventGenerator/Startup.cs @@ -1,4 +1,5 @@ -using Microsoft.AspNetCore.Builder; +using EventGenerator.BusinessLogic; +using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -18,6 +19,7 @@ public Startup(IConfiguration configuration) public void ConfigureServices(IServiceCollection services) { services.AddMvc(); + services.AddSingleton(new EventGenerationManager()); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. From f805c7999dd70ad7f179599ab07058978d62b273 Mon Sep 17 00:00:00 2001 From: t_kirill Date: Sat, 28 Oct 2017 12:14:41 +0500 Subject: [PATCH 03/14] Install Vostok.Core package --- EventGenerator/EventGenerator/EventGenerator.csproj | 1 + 1 file changed, 1 insertion(+) diff --git a/EventGenerator/EventGenerator/EventGenerator.csproj b/EventGenerator/EventGenerator/EventGenerator.csproj index 89f574c..db00737 100644 --- a/EventGenerator/EventGenerator/EventGenerator.csproj +++ b/EventGenerator/EventGenerator/EventGenerator.csproj @@ -10,6 +10,7 @@ + From c2317723a709870ed33b510505e18259acc0d741 Mon Sep 17 00:00:00 2001 From: t_kirill Date: Sat, 28 Oct 2017 13:58:09 +0500 Subject: [PATCH 04/14] Implement a minimal working version of logs generator. --- .../BusinessLogic/EventGenerationManager.cs | 14 +++++++++++++- .../EventGenerator/EventGenerator.csproj | 8 +++++++- EventGenerator/EventGenerator/Program.cs | 7 +++++++ EventGenerator/EventGenerator/Startup.cs | 4 +++- .../EventGenerator/appsettings.json | 19 +++++++++++++------ 5 files changed, 43 insertions(+), 9 deletions(-) diff --git a/EventGenerator/EventGenerator/BusinessLogic/EventGenerationManager.cs b/EventGenerator/EventGenerator/BusinessLogic/EventGenerationManager.cs index 443f7e5..5ca0f3f 100644 --- a/EventGenerator/EventGenerator/BusinessLogic/EventGenerationManager.cs +++ b/EventGenerator/EventGenerator/BusinessLogic/EventGenerationManager.cs @@ -1,10 +1,22 @@ using System.Threading.Tasks; using EventGenerator.Models; +using Vostok.Logging; namespace EventGenerator.BusinessLogic { public class EventGenerationManager : IEventGenerationManager { - public Task SendAsync(EventType argsEventType, int argsCount) => Task.FromResult(true); + private readonly ILog _log; + + public EventGenerationManager(ILog log) + { + _log = log; + } + + public Task SendAsync(EventType argsEventType, int argsCount) + { + _log.Info("Hello, World!"); + return Task.FromResult(true); + } } } \ No newline at end of file diff --git a/EventGenerator/EventGenerator/EventGenerator.csproj b/EventGenerator/EventGenerator/EventGenerator.csproj index db00737..f274285 100644 --- a/EventGenerator/EventGenerator/EventGenerator.csproj +++ b/EventGenerator/EventGenerator/EventGenerator.csproj @@ -10,11 +10,17 @@ - + + + + PreserveNewest + + + diff --git a/EventGenerator/EventGenerator/Program.cs b/EventGenerator/EventGenerator/Program.cs index b18221c..6cf0f98 100644 --- a/EventGenerator/EventGenerator/Program.cs +++ b/EventGenerator/EventGenerator/Program.cs @@ -1,5 +1,7 @@ using Microsoft.AspNetCore; using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Configuration; +using Vostok.Instrumentation.AspNetCore; namespace EventGenerator { @@ -12,6 +14,11 @@ public static void Main(string[] args) public static IWebHost BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args) + .ConfigureAppConfiguration((hostingContext, config) => + { + config.AddJsonFile("appsettings.json", false, true); + }) + .UseVostok() .UseStartup() .Build(); } diff --git a/EventGenerator/EventGenerator/Startup.cs b/EventGenerator/EventGenerator/Startup.cs index ffe8445..a345a79 100644 --- a/EventGenerator/EventGenerator/Startup.cs +++ b/EventGenerator/EventGenerator/Startup.cs @@ -3,6 +3,7 @@ using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; +using Vostok.Logging; namespace EventGenerator { @@ -19,7 +20,8 @@ public Startup(IConfiguration configuration) public void ConfigureServices(IServiceCollection services) { services.AddMvc(); - services.AddSingleton(new EventGenerationManager()); + var log = services.BuildServiceProvider().GetService(); + services.AddSingleton(new EventGenerationManager(log)); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. diff --git a/EventGenerator/EventGenerator/appsettings.json b/EventGenerator/EventGenerator/appsettings.json index 26bb0ac..a74d0ec 100644 --- a/EventGenerator/EventGenerator/appsettings.json +++ b/EventGenerator/EventGenerator/appsettings.json @@ -1,10 +1,17 @@ { - "Logging": { - "IncludeScopes": false, - "Debug": { - "LogLevel": { - "Default": "Warning" - } + "project": "Vostok.LoadTest", + "environment": "dev", + "service": "EventGenerator", + "airlock": { + "config": { + "apiKey": "UniversalApiKey", + "host": "http://localhost:6306", + "logFilePathFormat": "airlock-{Date}.log" + } + }, + "logging": { + "rollingFile": { + "pathFormat": "log-{Date}.log" }, "Console": { "LogLevel": { From f5b1255269bc3473b492ea2c5daea1ac40b5d374 Mon Sep 17 00:00:00 2001 From: t_kirill Date: Sat, 28 Oct 2017 14:28:42 +0500 Subject: [PATCH 05/14] + EventGeneratorRegistry --- .../BusinessLogic/EventGenerationManager.cs | 18 +++++++++------- .../BusinessLogic/EventGeneratorRegistry.cs | 17 +++++++++++++++ .../BusinessLogic/IEventGenerator.cs | 9 ++++++++ .../BusinessLogic/IEventGeneratorRegistry.cs | 10 +++++++++ .../BusinessLogic/LogEventGenerator.cs | 21 +++++++++++++++++++ EventGenerator/EventGenerator/Startup.cs | 6 +++++- 6 files changed, 73 insertions(+), 8 deletions(-) create mode 100644 EventGenerator/EventGenerator/BusinessLogic/EventGeneratorRegistry.cs create mode 100644 EventGenerator/EventGenerator/BusinessLogic/IEventGenerator.cs create mode 100644 EventGenerator/EventGenerator/BusinessLogic/IEventGeneratorRegistry.cs create mode 100644 EventGenerator/EventGenerator/BusinessLogic/LogEventGenerator.cs diff --git a/EventGenerator/EventGenerator/BusinessLogic/EventGenerationManager.cs b/EventGenerator/EventGenerator/BusinessLogic/EventGenerationManager.cs index 5ca0f3f..8fd2ee6 100644 --- a/EventGenerator/EventGenerator/BusinessLogic/EventGenerationManager.cs +++ b/EventGenerator/EventGenerator/BusinessLogic/EventGenerationManager.cs @@ -1,22 +1,26 @@ using System.Threading.Tasks; using EventGenerator.Models; -using Vostok.Logging; namespace EventGenerator.BusinessLogic { public class EventGenerationManager : IEventGenerationManager { - private readonly ILog _log; + private readonly IEventGeneratorRegistry _generatorRegistry; - public EventGenerationManager(ILog log) + public EventGenerationManager(IEventGeneratorRegistry generatorRegistry) { - _log = log; + _generatorRegistry = generatorRegistry; } - public Task SendAsync(EventType argsEventType, int argsCount) + public async Task SendAsync(EventType argsEventType, int argsCount) { - _log.Info("Hello, World!"); - return Task.FromResult(true); + var generator = _generatorRegistry.Get(argsEventType); + if (generator != null) + { + await generator.Generate(argsCount); + return true; + } + return false; } } } \ No newline at end of file diff --git a/EventGenerator/EventGenerator/BusinessLogic/EventGeneratorRegistry.cs b/EventGenerator/EventGenerator/BusinessLogic/EventGeneratorRegistry.cs new file mode 100644 index 0000000..0f9956b --- /dev/null +++ b/EventGenerator/EventGenerator/BusinessLogic/EventGeneratorRegistry.cs @@ -0,0 +1,17 @@ +using System.Collections.Concurrent; +using EventGenerator.Models; + +namespace EventGenerator.BusinessLogic +{ + public class EventGeneratorRegistry : IEventGeneratorRegistry + { + private readonly ConcurrentDictionary _registry; + + public EventGeneratorRegistry() => _registry = new ConcurrentDictionary(); + + public void Add(EventType eventType, IEventGenerator generator) => _registry[eventType] = generator; + + public IEventGenerator Get(EventType eventType) => + _registry.TryGetValue(eventType, out var result) ? result : null; + } +} \ No newline at end of file diff --git a/EventGenerator/EventGenerator/BusinessLogic/IEventGenerator.cs b/EventGenerator/EventGenerator/BusinessLogic/IEventGenerator.cs new file mode 100644 index 0000000..6a0122c --- /dev/null +++ b/EventGenerator/EventGenerator/BusinessLogic/IEventGenerator.cs @@ -0,0 +1,9 @@ +using System.Threading.Tasks; + +namespace EventGenerator.BusinessLogic +{ + public interface IEventGenerator + { + Task Generate(int count); + } +} \ No newline at end of file diff --git a/EventGenerator/EventGenerator/BusinessLogic/IEventGeneratorRegistry.cs b/EventGenerator/EventGenerator/BusinessLogic/IEventGeneratorRegistry.cs new file mode 100644 index 0000000..f3d3618 --- /dev/null +++ b/EventGenerator/EventGenerator/BusinessLogic/IEventGeneratorRegistry.cs @@ -0,0 +1,10 @@ +using EventGenerator.Models; + +namespace EventGenerator.BusinessLogic +{ + public interface IEventGeneratorRegistry + { + void Add(EventType eventType, IEventGenerator generator); + IEventGenerator Get(EventType eventType); + } +} \ No newline at end of file diff --git a/EventGenerator/EventGenerator/BusinessLogic/LogEventGenerator.cs b/EventGenerator/EventGenerator/BusinessLogic/LogEventGenerator.cs new file mode 100644 index 0000000..f7dd889 --- /dev/null +++ b/EventGenerator/EventGenerator/BusinessLogic/LogEventGenerator.cs @@ -0,0 +1,21 @@ +using System.Threading.Tasks; +using Vostok.Logging; + +namespace EventGenerator.BusinessLogic +{ + public class LogEventGenerator : IEventGenerator + { + private readonly ILog _log; + + public LogEventGenerator(ILog log) + { + _log = log; + } + + public Task Generate(int count) + { + _log.Info("Hello, World!"); + return Task.FromResult(true); + } + } +} \ No newline at end of file diff --git a/EventGenerator/EventGenerator/Startup.cs b/EventGenerator/EventGenerator/Startup.cs index a345a79..9b14521 100644 --- a/EventGenerator/EventGenerator/Startup.cs +++ b/EventGenerator/EventGenerator/Startup.cs @@ -1,4 +1,5 @@ using EventGenerator.BusinessLogic; +using EventGenerator.Models; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; @@ -20,8 +21,11 @@ public Startup(IConfiguration configuration) public void ConfigureServices(IServiceCollection services) { services.AddMvc(); + var log = services.BuildServiceProvider().GetService(); - services.AddSingleton(new EventGenerationManager(log)); + var registry = new EventGeneratorRegistry(); + registry.Add(EventType.Logs, new LogEventGenerator(log)); + services.AddSingleton(new EventGenerationManager(registry)); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. From 93602a9959e6be86228d7ed9fd80a1ff77987306 Mon Sep 17 00:00:00 2001 From: t_kirill Date: Sat, 28 Oct 2017 16:14:01 +0500 Subject: [PATCH 06/14] Use separate ILog for LogEventGenerator. --- EventGenerator/EventGenerator/Program.cs | 27 +++++++++++++++++++++++- EventGenerator/EventGenerator/Startup.cs | 17 ++++++++++++++- 2 files changed, 42 insertions(+), 2 deletions(-) diff --git a/EventGenerator/EventGenerator/Program.cs b/EventGenerator/EventGenerator/Program.cs index 6cf0f98..9e78c04 100644 --- a/EventGenerator/EventGenerator/Program.cs +++ b/EventGenerator/EventGenerator/Program.cs @@ -1,7 +1,13 @@ using Microsoft.AspNetCore; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using Serilog; +using Vostok.Airlock; using Vostok.Instrumentation.AspNetCore; +using Vostok.Logging; +using Vostok.Logging.Serilog; namespace EventGenerator { @@ -18,8 +24,27 @@ public static IWebHost BuildWebHost(string[] args) => { config.AddJsonFile("appsettings.json", false, true); }) - .UseVostok() + .ConfigureAirlock() + .ConfigureLogging(ConfigureLogging) .UseStartup() .Build(); + + private static void ConfigureLogging(WebHostBuilderContext context, ILoggingBuilder builder) + { + var loggingSection = context.Configuration.GetSection("logging"); + var rollingFileSection = loggingSection.GetSection("rollingFile"); + var rollingFilePathFormat = rollingFileSection.GetValue("pathFormat"); + var service = context.Configuration.GetValue("service"); + var template = "{Timestamp:HH:mm:ss.fff} {Level} {Message:l} {Exception}{NewLine}{Properties}{NewLine}"; + + Log.Logger = new LoggerConfiguration() + .Enrich.WithProperty("Service", service) + .WriteTo.Async(x => x.RollingFile(rollingFilePathFormat, outputTemplate: template)) + .CreateLogger(); + var log = new SerilogLog(Log.Logger).WithFlowContext(); + + builder.AddVostok(log); + builder.Services.AddSingleton(log); + } } } diff --git a/EventGenerator/EventGenerator/Startup.cs b/EventGenerator/EventGenerator/Startup.cs index 9b14521..430437e 100644 --- a/EventGenerator/EventGenerator/Startup.cs +++ b/EventGenerator/EventGenerator/Startup.cs @@ -4,7 +4,10 @@ using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; +using Serilog; +using Vostok.Airlock; using Vostok.Logging; +using Vostok.Logging.Serilog; namespace EventGenerator { @@ -22,7 +25,19 @@ public void ConfigureServices(IServiceCollection services) { services.AddMvc(); - var log = services.BuildServiceProvider().GetService(); + var serviceProvider = services.BuildServiceProvider(); + var airlockClient = serviceProvider.GetService(); + var service = Configuration.GetValue("service"); + var project = Configuration.GetValue("project"); + var environment = Configuration.GetValue("environment"); + var routingKeyPrefix = RoutingKey.Create(project, environment, service, RoutingKey.LogsSuffix); + + var airlockLogger = new LoggerConfiguration() + .Enrich.WithProperty("Service", service) + .WriteTo.Airlock(airlockClient, routingKeyPrefix) + .CreateLogger(); + var log = new SerilogLog(airlockLogger).WithFlowContext(); + var registry = new EventGeneratorRegistry(); registry.Add(EventType.Logs, new LogEventGenerator(log)); services.AddSingleton(new EventGenerationManager(registry)); From 4faa3981bf79dad2844da12967825c4a9d9907ef Mon Sep 17 00:00:00 2001 From: t_kirill Date: Sat, 28 Oct 2017 16:34:40 +0500 Subject: [PATCH 07/14] + TraceEventGenerator --- .../BusinessLogic/TraceEventGenerator.cs | 24 +++++++++++++++++++ .../EventGenerator/Models/EventType.cs | 3 ++- EventGenerator/EventGenerator/Startup.cs | 1 + 3 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 EventGenerator/EventGenerator/BusinessLogic/TraceEventGenerator.cs diff --git a/EventGenerator/EventGenerator/BusinessLogic/TraceEventGenerator.cs b/EventGenerator/EventGenerator/BusinessLogic/TraceEventGenerator.cs new file mode 100644 index 0000000..caf1b55 --- /dev/null +++ b/EventGenerator/EventGenerator/BusinessLogic/TraceEventGenerator.cs @@ -0,0 +1,24 @@ +using System.Threading.Tasks; +using Vostok.Tracing; + +namespace EventGenerator.BusinessLogic +{ + public class TraceEventGenerator : IEventGenerator + { + public Task Generate(int count) + { + using (var spanBuilder = Trace.BeginSpan()) + { + spanBuilder.SetAnnotation(TracingAnnotationNames.Operation, "Generate Trace"); + spanBuilder.SetAnnotation(TracingAnnotationNames.Kind, "loadtest"); + spanBuilder.SetAnnotation(TracingAnnotationNames.Service, "event-generator"); + spanBuilder.SetAnnotation(TracingAnnotationNames.Host, "localhost"); + spanBuilder.SetAnnotation(TracingAnnotationNames.HttpUrl, "send"); + spanBuilder.SetAnnotation(TracingAnnotationNames.HttpRequestContentLength, 1024); + spanBuilder.SetAnnotation(TracingAnnotationNames.HttpResponseContentLength, 2048); + spanBuilder.SetAnnotation(TracingAnnotationNames.HttpCode, 200); + } + return Task.FromResult(0); + } + } +} \ No newline at end of file diff --git a/EventGenerator/EventGenerator/Models/EventType.cs b/EventGenerator/EventGenerator/Models/EventType.cs index 35a8b57..d5ffa48 100644 --- a/EventGenerator/EventGenerator/Models/EventType.cs +++ b/EventGenerator/EventGenerator/Models/EventType.cs @@ -2,6 +2,7 @@ { public enum EventType { - Logs + Logs, + Trace } } \ No newline at end of file diff --git a/EventGenerator/EventGenerator/Startup.cs b/EventGenerator/EventGenerator/Startup.cs index 430437e..9ba5b9c 100644 --- a/EventGenerator/EventGenerator/Startup.cs +++ b/EventGenerator/EventGenerator/Startup.cs @@ -40,6 +40,7 @@ public void ConfigureServices(IServiceCollection services) var registry = new EventGeneratorRegistry(); registry.Add(EventType.Logs, new LogEventGenerator(log)); + registry.Add(EventType.Trace, new TraceEventGenerator()); services.AddSingleton(new EventGenerationManager(registry)); } From ddeda31f676a35c6a3b279d9890b90f23ce89d82 Mon Sep 17 00:00:00 2001 From: t_kirill Date: Sat, 28 Oct 2017 17:27:52 +0500 Subject: [PATCH 08/14] + MetricEventGenerator --- .../BusinessLogic/MetricEventGenerator.cs | 24 +++++++++++++++++++ .../EventGenerator/Models/EventType.cs | 3 ++- EventGenerator/EventGenerator/Program.cs | 5 ++-- EventGenerator/EventGenerator/Startup.cs | 3 +++ 4 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 EventGenerator/EventGenerator/BusinessLogic/MetricEventGenerator.cs diff --git a/EventGenerator/EventGenerator/BusinessLogic/MetricEventGenerator.cs b/EventGenerator/EventGenerator/BusinessLogic/MetricEventGenerator.cs new file mode 100644 index 0000000..c0f2dc7 --- /dev/null +++ b/EventGenerator/EventGenerator/BusinessLogic/MetricEventGenerator.cs @@ -0,0 +1,24 @@ +using System; +using System.Threading.Tasks; +using Vostok.Metrics; +using Vostok.Metrics.Meters; + +namespace EventGenerator.BusinessLogic +{ + public class MetricEventGenerator : IEventGenerator + { + private readonly ICounter _counter; + + public MetricEventGenerator(IMetricScope scope) + { + _counter = scope.Counter(TimeSpan.FromMilliseconds(100), "generated"); + } + + public Task Generate(int count) + { + for (var i = 0; i < count; i++) + _counter.Add(); + return Task.FromResult(0); + } + } +} \ No newline at end of file diff --git a/EventGenerator/EventGenerator/Models/EventType.cs b/EventGenerator/EventGenerator/Models/EventType.cs index d5ffa48..580ea68 100644 --- a/EventGenerator/EventGenerator/Models/EventType.cs +++ b/EventGenerator/EventGenerator/Models/EventType.cs @@ -3,6 +3,7 @@ public enum EventType { Logs, - Trace + Trace, + Metric } } \ No newline at end of file diff --git a/EventGenerator/EventGenerator/Program.cs b/EventGenerator/EventGenerator/Program.cs index 9e78c04..f6044ea 100644 --- a/EventGenerator/EventGenerator/Program.cs +++ b/EventGenerator/EventGenerator/Program.cs @@ -4,7 +4,6 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Serilog; -using Vostok.Airlock; using Vostok.Instrumentation.AspNetCore; using Vostok.Logging; using Vostok.Logging.Serilog; @@ -24,8 +23,10 @@ public static IWebHost BuildWebHost(string[] args) => { config.AddJsonFile("appsettings.json", false, true); }) - .ConfigureAirlock() .ConfigureLogging(ConfigureLogging) + .ConfigureAirlock() + .ConfigureVostokMetrics() + .ConfigureVostokTracing() .UseStartup() .Build(); diff --git a/EventGenerator/EventGenerator/Startup.cs b/EventGenerator/EventGenerator/Startup.cs index 9ba5b9c..56ab60a 100644 --- a/EventGenerator/EventGenerator/Startup.cs +++ b/EventGenerator/EventGenerator/Startup.cs @@ -8,6 +8,7 @@ using Vostok.Airlock; using Vostok.Logging; using Vostok.Logging.Serilog; +using Vostok.Metrics; namespace EventGenerator { @@ -37,10 +38,12 @@ public void ConfigureServices(IServiceCollection services) .WriteTo.Airlock(airlockClient, routingKeyPrefix) .CreateLogger(); var log = new SerilogLog(airlockLogger).WithFlowContext(); + var rootMetricScope = serviceProvider.GetService(); var registry = new EventGeneratorRegistry(); registry.Add(EventType.Logs, new LogEventGenerator(log)); registry.Add(EventType.Trace, new TraceEventGenerator()); + registry.Add(EventType.Metric, new MetricEventGenerator(rootMetricScope)); services.AddSingleton(new EventGenerationManager(registry)); } From 0b7e964e22ad77f1d17ad49f63019c15b7eeb4ce Mon Sep 17 00:00:00 2001 From: t_kirill Date: Sat, 28 Oct 2017 17:32:35 +0500 Subject: [PATCH 09/14] Make generation of events synchronous. --- .../EventGenerator/BusinessLogic/EventGenerationManager.cs | 7 +++---- .../BusinessLogic/IEventGenerationManager.cs | 5 ++--- .../EventGenerator/BusinessLogic/IEventGenerator.cs | 6 ++---- .../EventGenerator/BusinessLogic/LogEventGenerator.cs | 6 ++---- .../EventGenerator/BusinessLogic/MetricEventGenerator.cs | 4 +--- .../EventGenerator/BusinessLogic/TraceEventGenerator.cs | 6 ++---- .../EventGenerator/Controllers/GenerateController.cs | 7 +++---- 7 files changed, 15 insertions(+), 26 deletions(-) diff --git a/EventGenerator/EventGenerator/BusinessLogic/EventGenerationManager.cs b/EventGenerator/EventGenerator/BusinessLogic/EventGenerationManager.cs index 8fd2ee6..0f30eb4 100644 --- a/EventGenerator/EventGenerator/BusinessLogic/EventGenerationManager.cs +++ b/EventGenerator/EventGenerator/BusinessLogic/EventGenerationManager.cs @@ -1,5 +1,4 @@ -using System.Threading.Tasks; -using EventGenerator.Models; +using EventGenerator.Models; namespace EventGenerator.BusinessLogic { @@ -12,12 +11,12 @@ public EventGenerationManager(IEventGeneratorRegistry generatorRegistry) _generatorRegistry = generatorRegistry; } - public async Task SendAsync(EventType argsEventType, int argsCount) + public bool Send(EventType argsEventType, int argsCount) { var generator = _generatorRegistry.Get(argsEventType); if (generator != null) { - await generator.Generate(argsCount); + generator.Generate(argsCount); return true; } return false; diff --git a/EventGenerator/EventGenerator/BusinessLogic/IEventGenerationManager.cs b/EventGenerator/EventGenerator/BusinessLogic/IEventGenerationManager.cs index de962d6..8f5da56 100644 --- a/EventGenerator/EventGenerator/BusinessLogic/IEventGenerationManager.cs +++ b/EventGenerator/EventGenerator/BusinessLogic/IEventGenerationManager.cs @@ -1,10 +1,9 @@ -using System.Threading.Tasks; -using EventGenerator.Models; +using EventGenerator.Models; namespace EventGenerator.BusinessLogic { public interface IEventGenerationManager { - Task SendAsync(EventType argsEventType, int argsCount); + bool Send(EventType argsEventType, int argsCount); } } \ No newline at end of file diff --git a/EventGenerator/EventGenerator/BusinessLogic/IEventGenerator.cs b/EventGenerator/EventGenerator/BusinessLogic/IEventGenerator.cs index 6a0122c..9bd5d42 100644 --- a/EventGenerator/EventGenerator/BusinessLogic/IEventGenerator.cs +++ b/EventGenerator/EventGenerator/BusinessLogic/IEventGenerator.cs @@ -1,9 +1,7 @@ -using System.Threading.Tasks; - -namespace EventGenerator.BusinessLogic +namespace EventGenerator.BusinessLogic { public interface IEventGenerator { - Task Generate(int count); + void Generate(int count); } } \ No newline at end of file diff --git a/EventGenerator/EventGenerator/BusinessLogic/LogEventGenerator.cs b/EventGenerator/EventGenerator/BusinessLogic/LogEventGenerator.cs index f7dd889..aa1c72d 100644 --- a/EventGenerator/EventGenerator/BusinessLogic/LogEventGenerator.cs +++ b/EventGenerator/EventGenerator/BusinessLogic/LogEventGenerator.cs @@ -1,5 +1,4 @@ -using System.Threading.Tasks; -using Vostok.Logging; +using Vostok.Logging; namespace EventGenerator.BusinessLogic { @@ -12,10 +11,9 @@ public LogEventGenerator(ILog log) _log = log; } - public Task Generate(int count) + public void Generate(int count) { _log.Info("Hello, World!"); - return Task.FromResult(true); } } } \ No newline at end of file diff --git a/EventGenerator/EventGenerator/BusinessLogic/MetricEventGenerator.cs b/EventGenerator/EventGenerator/BusinessLogic/MetricEventGenerator.cs index c0f2dc7..1013244 100644 --- a/EventGenerator/EventGenerator/BusinessLogic/MetricEventGenerator.cs +++ b/EventGenerator/EventGenerator/BusinessLogic/MetricEventGenerator.cs @@ -1,5 +1,4 @@ using System; -using System.Threading.Tasks; using Vostok.Metrics; using Vostok.Metrics.Meters; @@ -14,11 +13,10 @@ public MetricEventGenerator(IMetricScope scope) _counter = scope.Counter(TimeSpan.FromMilliseconds(100), "generated"); } - public Task Generate(int count) + public void Generate(int count) { for (var i = 0; i < count; i++) _counter.Add(); - return Task.FromResult(0); } } } \ No newline at end of file diff --git a/EventGenerator/EventGenerator/BusinessLogic/TraceEventGenerator.cs b/EventGenerator/EventGenerator/BusinessLogic/TraceEventGenerator.cs index caf1b55..cdbefe8 100644 --- a/EventGenerator/EventGenerator/BusinessLogic/TraceEventGenerator.cs +++ b/EventGenerator/EventGenerator/BusinessLogic/TraceEventGenerator.cs @@ -1,11 +1,10 @@ -using System.Threading.Tasks; -using Vostok.Tracing; +using Vostok.Tracing; namespace EventGenerator.BusinessLogic { public class TraceEventGenerator : IEventGenerator { - public Task Generate(int count) + public void Generate(int count) { using (var spanBuilder = Trace.BeginSpan()) { @@ -18,7 +17,6 @@ public Task Generate(int count) spanBuilder.SetAnnotation(TracingAnnotationNames.HttpResponseContentLength, 2048); spanBuilder.SetAnnotation(TracingAnnotationNames.HttpCode, 200); } - return Task.FromResult(0); } } } \ No newline at end of file diff --git a/EventGenerator/EventGenerator/Controllers/GenerateController.cs b/EventGenerator/EventGenerator/Controllers/GenerateController.cs index 9888634..db295eb 100644 --- a/EventGenerator/EventGenerator/Controllers/GenerateController.cs +++ b/EventGenerator/EventGenerator/Controllers/GenerateController.cs @@ -1,5 +1,4 @@ -using System.Threading.Tasks; -using EventGenerator.BusinessLogic; +using EventGenerator.BusinessLogic; using EventGenerator.Models; using Microsoft.AspNetCore.Mvc; @@ -16,11 +15,11 @@ public GenerateController(IEventGenerationManager manager) } [HttpPost] - public async Task Index([FromBody] GenerateEventsArgs args) + public IActionResult Index([FromBody] GenerateEventsArgs args) { if (ModelState.IsValid) { - var ok = await _manager.SendAsync(args.EventType, args.Count); + var ok = _manager.Send(args.EventType, args.Count); return ok ? Ok() : StatusCode(500); } return BadRequest(ModelState); From 24db889c7b6779852a389d17b4b909ce64401f18 Mon Sep 17 00:00:00 2001 From: t_kirill Date: Sat, 28 Oct 2017 18:10:54 +0500 Subject: [PATCH 10/14] Generate specified number of events in LogEventGenerator and TraceEventGenerator. --- .../BusinessLogic/LogEventGenerator.cs | 3 ++- .../BusinessLogic/TraceEventGenerator.cs | 21 +++++++++++-------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/EventGenerator/EventGenerator/BusinessLogic/LogEventGenerator.cs b/EventGenerator/EventGenerator/BusinessLogic/LogEventGenerator.cs index aa1c72d..b6fc4fd 100644 --- a/EventGenerator/EventGenerator/BusinessLogic/LogEventGenerator.cs +++ b/EventGenerator/EventGenerator/BusinessLogic/LogEventGenerator.cs @@ -13,7 +13,8 @@ public LogEventGenerator(ILog log) public void Generate(int count) { - _log.Info("Hello, World!"); + for (int i = 0; i < count; i++) + _log.Info("Generate info log event"); } } } \ No newline at end of file diff --git a/EventGenerator/EventGenerator/BusinessLogic/TraceEventGenerator.cs b/EventGenerator/EventGenerator/BusinessLogic/TraceEventGenerator.cs index cdbefe8..713c8b0 100644 --- a/EventGenerator/EventGenerator/BusinessLogic/TraceEventGenerator.cs +++ b/EventGenerator/EventGenerator/BusinessLogic/TraceEventGenerator.cs @@ -6,16 +6,19 @@ public class TraceEventGenerator : IEventGenerator { public void Generate(int count) { - using (var spanBuilder = Trace.BeginSpan()) + for (int i = 0; i < count; i++) { - spanBuilder.SetAnnotation(TracingAnnotationNames.Operation, "Generate Trace"); - spanBuilder.SetAnnotation(TracingAnnotationNames.Kind, "loadtest"); - spanBuilder.SetAnnotation(TracingAnnotationNames.Service, "event-generator"); - spanBuilder.SetAnnotation(TracingAnnotationNames.Host, "localhost"); - spanBuilder.SetAnnotation(TracingAnnotationNames.HttpUrl, "send"); - spanBuilder.SetAnnotation(TracingAnnotationNames.HttpRequestContentLength, 1024); - spanBuilder.SetAnnotation(TracingAnnotationNames.HttpResponseContentLength, 2048); - spanBuilder.SetAnnotation(TracingAnnotationNames.HttpCode, 200); + using (var spanBuilder = Trace.BeginSpan()) + { + spanBuilder.SetAnnotation(TracingAnnotationNames.Operation, "Generate Trace"); + spanBuilder.SetAnnotation(TracingAnnotationNames.Kind, "loadtest"); + spanBuilder.SetAnnotation(TracingAnnotationNames.Service, "event-generator"); + spanBuilder.SetAnnotation(TracingAnnotationNames.Host, "localhost"); + spanBuilder.SetAnnotation(TracingAnnotationNames.HttpUrl, "send"); + spanBuilder.SetAnnotation(TracingAnnotationNames.HttpRequestContentLength, 1024); + spanBuilder.SetAnnotation(TracingAnnotationNames.HttpResponseContentLength, 2048); + spanBuilder.SetAnnotation(TracingAnnotationNames.HttpCode, 200); + } } } } From 3ccfe480166d3a907e7c66bf3700bc246b726966 Mon Sep 17 00:00:00 2001 From: t_kirill Date: Sat, 28 Oct 2017 18:22:03 +0500 Subject: [PATCH 11/14] Set default count value to 1 --- EventGenerator/EventGenerator/Models/GenerateEventsArgs.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/EventGenerator/EventGenerator/Models/GenerateEventsArgs.cs b/EventGenerator/EventGenerator/Models/GenerateEventsArgs.cs index 8bf9bdf..a3bce11 100644 --- a/EventGenerator/EventGenerator/Models/GenerateEventsArgs.cs +++ b/EventGenerator/EventGenerator/Models/GenerateEventsArgs.cs @@ -1,4 +1,5 @@ -using System.ComponentModel.DataAnnotations; +using System.ComponentModel; +using System.ComponentModel.DataAnnotations; namespace EventGenerator.Models { @@ -8,6 +9,6 @@ public class GenerateEventsArgs public EventType EventType { get; set; } [Range(1, 10000)] - public int Count { get; set; } + public int Count { get; set; } = 1; } } \ No newline at end of file From c7902c1167d92477534b1427ee7824970473cbbc Mon Sep 17 00:00:00 2001 From: t_kirill Date: Sat, 28 Oct 2017 18:22:18 +0500 Subject: [PATCH 12/14] Remove ValuesController --- .../Controllers/ValuesController.cs | 41 ------------------- 1 file changed, 41 deletions(-) delete mode 100644 EventGenerator/EventGenerator/Controllers/ValuesController.cs diff --git a/EventGenerator/EventGenerator/Controllers/ValuesController.cs b/EventGenerator/EventGenerator/Controllers/ValuesController.cs deleted file mode 100644 index 50ffdb7..0000000 --- a/EventGenerator/EventGenerator/Controllers/ValuesController.cs +++ /dev/null @@ -1,41 +0,0 @@ -using System.Collections.Generic; -using Microsoft.AspNetCore.Mvc; - -namespace EventGenerator.Controllers -{ - [Route("api/[controller]")] - public class ValuesController : Controller - { - // GET api/values - [HttpGet] - public IEnumerable Get() - { - return new string[] { "value1", "value2" }; - } - - // GET api/values/5 - [HttpGet("{id}")] - public string Get(int id) - { - return "value"; - } - - // POST api/values - [HttpPost] - public void Post([FromBody]string value) - { - } - - // PUT api/values/5 - [HttpPut("{id}")] - public void Put(int id, [FromBody]string value) - { - } - - // DELETE api/values/5 - [HttpDelete("{id}")] - public void Delete(int id) - { - } - } -} From d0c991a2936ec5bacf396db6a09d9e48412ea236 Mon Sep 17 00:00:00 2001 From: t_kirill Date: Sat, 28 Oct 2017 19:21:49 +0500 Subject: [PATCH 13/14] Add ammo files for Yandex Tank. --- EventGenerator/EventGenerator/Program.cs | 1 + EventGenerator/EventGenerator/README.md | 20 +++++++++++++++++++ EventGenerator/EventGenerator/ammo-logs.txt | 5 +++++ .../EventGenerator/ammo-metrics.txt | 5 +++++ EventGenerator/EventGenerator/ammo-mix.txt | 7 +++++++ EventGenerator/EventGenerator/ammo-trace.txt | 5 +++++ .../EventGenerator/tank-vostok.yaml | 9 +++++++++ 7 files changed, 52 insertions(+) create mode 100644 EventGenerator/EventGenerator/README.md create mode 100644 EventGenerator/EventGenerator/ammo-logs.txt create mode 100644 EventGenerator/EventGenerator/ammo-metrics.txt create mode 100644 EventGenerator/EventGenerator/ammo-mix.txt create mode 100644 EventGenerator/EventGenerator/ammo-trace.txt create mode 100644 EventGenerator/EventGenerator/tank-vostok.yaml diff --git a/EventGenerator/EventGenerator/Program.cs b/EventGenerator/EventGenerator/Program.cs index f6044ea..ae17a22 100644 --- a/EventGenerator/EventGenerator/Program.cs +++ b/EventGenerator/EventGenerator/Program.cs @@ -23,6 +23,7 @@ public static IWebHost BuildWebHost(string[] args) => { config.AddJsonFile("appsettings.json", false, true); }) + .UseUrls("http://*:5000") .ConfigureLogging(ConfigureLogging) .ConfigureAirlock() .ConfigureVostokMetrics() diff --git a/EventGenerator/EventGenerator/README.md b/EventGenerator/EventGenerator/README.md new file mode 100644 index 0000000..cae0b9c --- /dev/null +++ b/EventGenerator/EventGenerator/README.md @@ -0,0 +1,20 @@ +0. Запустить EventGenerator: + + > dotnet EventGenerator.dll + +1. Создать рабочий каталог для танка и перейти в него. В этом каталоге танк оставит логи + + > md tank + > cd tank + +2. Скопировать в рабочий каталог конфиг танка tank-vostok.yaml. + +3. Скопировать в рабочий каталог нужный файл с патронами в файл ammo: + + > cp ammo-logs.txt ammo + +4. Запустить танк: + + docker run -v $(pwd):/var/loadtest -v $HOME/.ssh:/root/.ssh --net host -it direvius/yandex-tank -c tank-vostok.yaml + +5. Логи танка будут в каталоге logs. \ No newline at end of file diff --git a/EventGenerator/EventGenerator/ammo-logs.txt b/EventGenerator/EventGenerator/ammo-logs.txt new file mode 100644 index 0000000..c090523 --- /dev/null +++ b/EventGenerator/EventGenerator/ammo-logs.txt @@ -0,0 +1,5 @@ +[Content-Type: application/json] +24 /generate +{eventType: 0, count: 1} +24 /generate +{eventType: 0, count: 1} diff --git a/EventGenerator/EventGenerator/ammo-metrics.txt b/EventGenerator/EventGenerator/ammo-metrics.txt new file mode 100644 index 0000000..ecc0abf --- /dev/null +++ b/EventGenerator/EventGenerator/ammo-metrics.txt @@ -0,0 +1,5 @@ +[Content-Type: application/json] +24 /generate +{eventType: 2, count: 1} +24 /generate +{eventType: 2, count: 1} diff --git a/EventGenerator/EventGenerator/ammo-mix.txt b/EventGenerator/EventGenerator/ammo-mix.txt new file mode 100644 index 0000000..575d86b --- /dev/null +++ b/EventGenerator/EventGenerator/ammo-mix.txt @@ -0,0 +1,7 @@ +[Content-Type: application/json] +24 /generate +{eventType: 0, count: 1} +24 /generate +{eventType: 1, count: 1} +24 /generate +{eventType: 1, count: 1} diff --git a/EventGenerator/EventGenerator/ammo-trace.txt b/EventGenerator/EventGenerator/ammo-trace.txt new file mode 100644 index 0000000..abc38c6 --- /dev/null +++ b/EventGenerator/EventGenerator/ammo-trace.txt @@ -0,0 +1,5 @@ +[Content-Type: application/json] +24 /generate +{eventType: 1, count: 1} +24 /generate +{eventType: 1, count: 1} diff --git a/EventGenerator/EventGenerator/tank-vostok.yaml b/EventGenerator/EventGenerator/tank-vostok.yaml new file mode 100644 index 0000000..9439ca7 --- /dev/null +++ b/EventGenerator/EventGenerator/tank-vostok.yaml @@ -0,0 +1,9 @@ +phantom: + address: localhost:5000 + load_profile: + load_type: rps + schedule: line(1, 10, 10m) + ammo_type: uripost + ammofile: ammo +telegraf: + enabled: false From e2f1d90cd5c281d3948cd26acda7498943652230 Mon Sep 17 00:00:00 2001 From: t_kirill Date: Sat, 28 Oct 2017 19:25:25 +0500 Subject: [PATCH 14/14] Remove tank catalog --- tank/README.md | 17 ----------------- tank/ammo-logs.txt | Bin 15048 -> 0 bytes tank/vostok.yaml | 9 --------- 3 files changed, 26 deletions(-) delete mode 100644 tank/README.md delete mode 100644 tank/ammo-logs.txt delete mode 100644 tank/vostok.yaml diff --git a/tank/README.md b/tank/README.md deleted file mode 100644 index 0694cc7..0000000 --- a/tank/README.md +++ /dev/null @@ -1,17 +0,0 @@ -1. Создать рабочий каталог для танка и перейти в него. В этом каталоге танк оставит логи - - > md tank - > cd tank - -2. Скопировать в рабочий каталог конфиг танка vostok.yaml. - -3. Скопировать в рабочий каталог нужный файл с патронами в файл ammo: - - > cp ammo-logs.txt ammo - -4. Запустить танк: - - docker run -v $(pwd):/var/loadtest -v $HOME/.ssh:/root/.ssh --net host -it direvius/yandex-tank -c vostok.yaml - -5. Логи танка будут в каталоге logs. - diff --git a/tank/ammo-logs.txt b/tank/ammo-logs.txt deleted file mode 100644 index c4e1d8fd94d418449596c6de7c1b1a2da5062e4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15048 zcmc)QZ%kEX90zc&wj}JGJD+FgIp_C% zUOap9=FiUyRfQX)!K9KED@#K;4bgZcR9ISCl9QXA8%(;dF5Vc8H)a(@<5i8%6ol?t zyl`PKsVOVGuDT}LTo8IZUcEkA-w=*1TUY%^v^kg*ObR3f5)u-U$BtNCIFdcSscMLf z-L5P&`(HYnJuphv+$ z1xFP0Dd<;lM!~RxpB3EnJeJ0E1!)R0733>erl43snSy!+n-pwQ(50ZF4QuIh1>Yz* zui%1$X)oZQXDP@~ut>o@3W^kzD~KqlRq&F6R~1}Va9umrQc%II3T{_$r-DTa$`yna ze5T-pf&m3X3Vu>>SwWx!tMxVoa}?w#$XBpj!J`URDX3JiUBN2~-cazqg2M_vRnV{C zw1VFiOnMO$H&sE3f{=oF3i1>zRq&vKwF>GLv?yp-utPzYg8d5KQ*d0t1qFX7n7kPy zdZU6{6wFqTp`b&-E(L)t_*s)D0P?Q&x?H#!N3~1A>k7V7FrZ*W!6gM(6-?QP{~=jH zs)D%+9#XJM!5RfM3K|u(D%h@Iw}L|oK2~r{!AS*!3Pu$Cs^Curi7lAvGzB>d@)ays zP@>=o1yKcY1sfIYRIpD$kAi~=jwt9;(68W(f?)+I&tgPpDwwBWfr7gg6e=iHP@$k& z!Dacqu`)|!wUKo^eZ^4VDfXAxSJKsP;iHWECq`d+^e8iK}!Mh5+RB%ecIR!r|_)S5=_n7G$6iibvOTiKa z_bYfz!D-!%XL diff --git a/tank/vostok.yaml b/tank/vostok.yaml deleted file mode 100644 index 746e5c4..0000000 --- a/tank/vostok.yaml +++ /dev/null @@ -1,9 +0,0 @@ -phantom: - address: localhost:8888 - load_profile: - load_type: rps - schedule: line(1, 10, 10m) - ammo_type: phantom - ammofile: ammo -telegraf: - enabled: false