public void Invoke_CreatesDump() { if (Environment.OSVersion.Platform == PlatformID.Win32NT) { var loggerFactory = TestHelpers.GetLoggerFactory(); var logger1 = loggerFactory.CreateLogger <WindowsHeapDumper>(); var logger2 = loggerFactory.CreateLogger <HeapDumpEndpoint>(); var dumper = new WindowsHeapDumper(new HeapDumpEndpointOptions(), logger: logger1); var ep = new HeapDumpEndpoint(new HeapDumpEndpointOptions(), dumper, logger2); var result = ep.Invoke(); Assert.NotNull(result); Assert.True(File.Exists(result)); File.Delete(result); } else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) { if (typeof(object).Assembly.GetType("System.Index") != null) { var loggerFactory = TestHelpers.GetLoggerFactory(); var logger1 = loggerFactory.CreateLogger <LinuxHeapDumper>(); var logger2 = loggerFactory.CreateLogger <HeapDumpEndpoint>(); var dumper = new LinuxHeapDumper(new HeapDumpEndpointOptions(), logger: logger1); var ep = new HeapDumpEndpoint(new HeapDumpEndpointOptions(), dumper, logger2); var result = ep.Invoke(); Assert.NotNull(result); Assert.True(File.Exists(result)); File.Delete(result); } } }
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")); }