public async void HandleHeapDumpRequestAsync_ReturnsExpected() { if (Environment.OSVersion.Platform == PlatformID.Win32NT) { var opts = new HeapDumpEndpointOptions(); var mopts = TestHelpers.GetManagementOptions(opts); LoggerFactory loggerFactory = new LoggerFactory(); loggerFactory.AddConsole(minLevel: LogLevel.Debug); var logger1 = loggerFactory.CreateLogger <HeapDumper>(); var logger2 = loggerFactory.CreateLogger <HeapDumpEndpoint>(); var logger3 = loggerFactory.CreateLogger <HeapDumpEndpointMiddleware>(); HeapDumper obs = new HeapDumper(opts, logger: logger1); var ep = new HeapDumpEndpoint(opts, obs, logger2); var middle = new HeapDumpEndpointMiddleware(null, ep, mopts, logger3); var context = CreateRequest("GET", "/heapdump"); await middle.HandleHeapDumpRequestAsync(context); context.Response.Body.Seek(0, SeekOrigin.Begin); byte[] buffer = new byte[1024]; await context.Response.Body.ReadAsync(buffer, 0, 1024); Assert.NotEqual(0, buffer[0]); } }
public async void HandleHeapDumpRequestAsync_ReturnsExpected() { if (Environment.OSVersion.Platform == PlatformID.Win32NT) { var opts = new HeapDumpEndpointOptions(); var mopts = TestHelper.GetManagementOptions(opts); IServiceCollection serviceCollection = new ServiceCollection(); serviceCollection.AddLogging(builder => builder.SetMinimumLevel(LogLevel.Trace)); var loggerFactory = serviceCollection.BuildServiceProvider().GetService <ILoggerFactory>(); var logger1 = loggerFactory.CreateLogger <HeapDumper>(); var logger2 = loggerFactory.CreateLogger <HeapDumpEndpoint>(); var logger3 = loggerFactory.CreateLogger <HeapDumpEndpointMiddleware>(); var obs = new HeapDumper(opts, logger: logger1); var ep = new HeapDumpEndpoint(opts, obs, logger2); var middle = new HeapDumpEndpointMiddleware(null, ep, mopts, logger3); var context = CreateRequest("GET", "/heapdump"); await middle.HandleHeapDumpRequestAsync(context); context.Response.Body.Seek(0, SeekOrigin.Begin); var buffer = new byte[1024]; await context.Response.Body.ReadAsync(buffer, 0, 1024); Assert.NotEqual(0, buffer[0]); } }
public void HeapDumpEndpointMiddleware_PathAndVerbMatching_ReturnsExpected() { var opts = new HeapDumpEndpointOptions(); var mopts = TestHelper.GetManagementOptions(opts); IHeapDumper obs; if (Platform.IsWindows) { obs = new WindowsHeapDumper(opts); } else if (Platform.IsLinux) { obs = new LinuxHeapDumper(opts); } else { return; } var ep = new HeapDumpEndpoint(opts, obs); var middle = new HeapDumpEndpointMiddleware(null, ep, mopts); Assert.True(middle.RequestVerbAndPathMatch("GET", "/cloudfoundryapplication/heapdump")); Assert.False(middle.RequestVerbAndPathMatch("PUT", "/cloudfoundryapplication/heapdump")); Assert.False(middle.RequestVerbAndPathMatch("GET", "/cloudfoundryapplication/badpath")); }
public void HeapDumpEndpointMiddleware_PathAndVerbMatching_ReturnsExpected() { var opts = new HeapDumpOptions(); HeapDumper obs = new HeapDumper(opts); var ep = new HeapDumpEndpoint(opts, obs); var middle = new HeapDumpEndpointMiddleware(null, ep); Assert.True(middle.RequestVerbAndPathMatch("GET", "/heapdump")); Assert.False(middle.RequestVerbAndPathMatch("PUT", "/heapdump")); Assert.False(middle.RequestVerbAndPathMatch("GET", "/badpath")); }
public void HeapDumpEndpointMiddleware_PathAndVerbMatching_ReturnsExpected() { var opts = new HeapDumpEndpointOptions(); var mopts = TestHelpers.GetManagementOptions(opts); HeapDumper obs = new HeapDumper(opts); var ep = new HeapDumpEndpoint(opts, obs); var middle = new HeapDumpEndpointMiddleware(null, ep, mopts); Assert.True(middle.RequestVerbAndPathMatch("GET", "/cloudfoundryapplication/heapdump")); Assert.False(middle.RequestVerbAndPathMatch("PUT", "/cloudfoundryapplication/heapdump")); Assert.False(middle.RequestVerbAndPathMatch("GET", "/cloudfoundryapplication/badpath")); }
public void IsHeapDumpRequest_ReturnsExpected() { var opts = new HeapDumpOptions(); HeapDumper obs = new HeapDumper(opts); var ep = new HeapDumpEndpoint(opts, obs); var middle = new HeapDumpEndpointMiddleware(null, ep); var context = CreateRequest("GET", "/heapdump"); Assert.True(middle.IsHeapDumpRequest(context)); var context2 = CreateRequest("PUT", "/heapdump"); Assert.False(middle.IsHeapDumpRequest(context2)); var context3 = CreateRequest("GET", "/badpath"); Assert.False(middle.IsHeapDumpRequest(context3)); }
public async Task HandleHeapDumpRequestAsync_ReturnsExpected() { if (EndpointServiceCollectionExtensions.IsHeapDumpSupported()) { var opts = new HeapDumpEndpointOptions(); var mopts = new ActuatorManagementOptions(); mopts.EndpointOptions.Add(opts); IServiceCollection serviceCollection = new ServiceCollection(); serviceCollection.AddLogging(builder => builder.SetMinimumLevel(LogLevel.Trace)); var loggerFactory = serviceCollection.BuildServiceProvider().GetService <ILoggerFactory>(); var logger1 = loggerFactory.CreateLogger <WindowsHeapDumper>(); var logger2 = loggerFactory.CreateLogger <HeapDumpEndpoint>(); var logger3 = loggerFactory.CreateLogger <HeapDumpEndpointMiddleware>(); var logger4 = loggerFactory.CreateLogger <HeapDumper>(); // WindowsHeapDumper should be used with .NET Core 3.1 on Windows. HeapDumper should be used with Linux and .NET 5 on Windows var obs = (Platform.IsWindows && RuntimeInformation.FrameworkDescription.StartsWith(".NET Core", StringComparison.InvariantCultureIgnoreCase)) ? new WindowsHeapDumper(opts, logger: logger1) : !Platform.IsOSX ? (IHeapDumper) new HeapDumper(opts, logger: logger4) : throw new InvalidOperationException("Unsupported Platfornm"); var ep = new HeapDumpEndpoint(opts, obs, logger2); var middle = new HeapDumpEndpointMiddleware(null, ep, mopts, logger3); var context = CreateRequest("GET", "/heapdump"); await middle.HandleHeapDumpRequestAsync(context); context.Response.Body.Seek(0, SeekOrigin.Begin); var buffer = new byte[1024]; await context.Response.Body.ReadAsync(buffer, 0, 1024); Assert.NotEqual(0, buffer[0]); } else { return; } }
public async void HandleHeapDumpRequestAsync_ReturnsExpected() { if (EndpointServiceCollectionExtensions.IsHeapDumpSupported()) { var opts = new HeapDumpEndpointOptions(); var mopts = new ActuatorManagementOptions(); mopts.EndpointOptions.Add(opts); IServiceCollection serviceCollection = new ServiceCollection(); serviceCollection.AddLogging(builder => builder.SetMinimumLevel(LogLevel.Trace)); var loggerFactory = serviceCollection.BuildServiceProvider().GetService <ILoggerFactory>(); var logger1 = loggerFactory.CreateLogger <WindowsHeapDumper>(); var logger2 = loggerFactory.CreateLogger <HeapDumpEndpoint>(); var logger3 = loggerFactory.CreateLogger <HeapDumpEndpointMiddleware>(); var logger4 = loggerFactory.CreateLogger <LinuxHeapDumper>(); var obs = Platform.IsWindows ? (IHeapDumper) new WindowsHeapDumper(opts, logger: logger1) : Platform.IsLinux ? (IHeapDumper) new LinuxHeapDumper(opts, logger: logger4) : throw new InvalidOperationException("Unsupported Platfornm"); var ep = new HeapDumpEndpoint(opts, obs, logger2); var middle = new HeapDumpEndpointMiddleware(null, ep, mopts, logger3); var context = CreateRequest("GET", "/heapdump"); await middle.HandleHeapDumpRequestAsync(context); context.Response.Body.Seek(0, SeekOrigin.Begin); var buffer = new byte[1024]; await context.Response.Body.ReadAsync(buffer, 0, 1024); Assert.NotEqual(0, buffer[0]); } else { return; } }