NBomber

所属分类:collect
开发工具:F#
文件大小:0KB
下载次数:0
上传日期:2021-11-12 15:26:58
上 传 者sh-1993
说明:  B缓冲器.F竖琴,,
(NBomber.FSharp,,)

文件列表:
Directory.Build.props (1358, 2021-11-12)
LICENSE (11357, 2021-11-12)
NBomber.FSharp.sln (5837, 2021-11-12)
RELEASE_NOTES.md (428, 2021-11-12)
build.fsx (3342, 2021-11-12)
docs/ (0, 2021-11-12)
docs/Programming.md (4376, 2021-11-12)
docs/img/ (0, 2021-11-12)
docs/img/logo.png (11664, 2021-11-12)
src/ (0, 2021-11-12)
src/NBomber.FSharp.Hopac/ (0, 2021-11-12)
src/NBomber.FSharp.Hopac/Hopac.fs (2210, 2021-11-12)
src/NBomber.FSharp.Hopac/NBomber.FSharp.Hopac.fsproj (625, 2021-11-12)
src/NBomber.FSharp.Http/ (0, 2021-11-12)
src/NBomber.FSharp.Http/HttpStepBuilder.fs (10173, 2021-11-12)
src/NBomber.FSharp.Http/NBomber.FSharp.Http.fsproj (649, 2021-11-12)
src/NBomber.FSharp/ (0, 2021-11-12)
src/NBomber.FSharp/Builder/ (0, 2021-11-12)
src/NBomber.FSharp/Builder/ClientBuilder.fs (3014, 2021-11-12)
src/NBomber.FSharp/Builder/Internals.fs (1255, 2021-11-12)
src/NBomber.FSharp/Builder/ReportBuilder.fs (1546, 2021-11-12)
src/NBomber.FSharp/Builder/RunnerBuilder.fs (4572, 2021-11-12)
src/NBomber.FSharp/Builder/ScenarioBuilder.fs (7508, 2021-11-12)
src/NBomber.FSharp/Builder/StepBuilder.fs (5069, 2021-11-12)
src/NBomber.FSharp/Builder/StepEmptyBuilder.fs (1891, 2021-11-12)
src/NBomber.FSharp/Builders.fs (338, 2021-11-12)
src/NBomber.FSharp/NBomber.FSharp.fsproj (528, 2021-11-12)
test/ (0, 2021-11-12)
test/NBomber.FSharp.Test/ (0, 2021-11-12)
test/NBomber.FSharp.Test/Demo.fs (3209, 2021-11-12)
test/NBomber.FSharp.Test/DslTest.fs (11604, 2021-11-12)
... ...

# NBomber.FSharp F# Computation Expressions for [NBomber](https://nbomber.com) API | Package | Description | Status | |----------------------|-------------|--------| | NBomber.FSharp | CE for test runners, scenarios and steps | [![NBomber.FSharp](https://buildstats.info/nuget/NBomber.FSharp?includePreReleases=true)](https://www.nuget.org/packages/NBomber.FSharp/) | | NBomber.FSharp.Http | CE for http calls steps, similar to NBomber.Plugins.Http | [![NBomber.FSharp.Http](https://buildstats.info/nuget/NBomber.FSharp.Http?includePreReleases=true)](https://www.nuget.org/packages/NBomber.FSharp.Http/) | | NBomber.FSharp.Hopac | [Hopac](https://hopac.github.io) support for the above, depends on both | [![NBomber.FSharp.Hopac](https://buildstats.info/nuget/NBomber.FSharp.Hopac?includePreReleases=true)](https://www.nuget.org/packages/NBomber.FSharp.Hopac/) | [![Build history](https://buildstats.info/github/chart/PragmaticFlow/NBomber.FSharp)](https://github.com/PragmaticFlow/NBomber.FSharp/actions) ### Scenario
Fluent APIComputation Expression
```fsharp Scenario.create "test" [step] |> Scenario.withWarmUp (seconds 10) |> Scenario.withLoadSimulations [ KeepConstant(copies = copiesCount, during = seconds 2) ] ``` ```fsharp scenario "test" { warmUp (seconds 10) load [ KeepConstant(copies = copiesCount, during = seconds 2) ] init (fun _ -> Task.FromResult()) clean (fun _ -> Task.FromResult()) steps [myStep] // or if just one step myStep } ```
### Step The overloads of `step`'s custom operation `execute` accepts a function taking a step context and returning either `Response` or `unit` directly or wrapped in a `task`, `async` or even in a Hopac `job`
Fluent APIComputation Expression
```fsharp Step.create("step name", myWebsocketPool, myGuidFeed, (fun ctx -> task { let doSomethingWithSocket (_: Guid) (_: ClientWebSocket) = "" ctx.Logger.Information("Can take feed and client {Ret}", takeBoth ctx.FeedItem ctx.Client) return Response.Ok() }), true) ``` ```fsharp step "step name" { dataFeed myGuidFeed myWebsocketPool execute (fun ctx -> let doSomethingWithSocket (_: Guid) (_: ClientWebSocket) = "" ctx.Logger.Information("Can take feed and client {Ret}", takeBoth ctx.FeedItem ctx.Client) ) doNotTrack } ```
### Client factory Simplified construction of clients. Notable differences are: - `connect` and `disconnect` functions are more tolerant for missing type signatures and arguments - no need for `cancellationToken` argument if it is not used in `connect` or `disconnect` functions - `disconnect` can be omitted completely, if the type of created connection implements `IDisposable` or can be just disposed. - `count` of connections can be omitted too, it defaults to `1` - even less verbose compared to the C# API
Fluent APIComputation Expression
```fsharp let clientFactory = ClientFactory.create( name = "db connections", initClient = (fun i ctx -> task { let c = new NpgsqlConnection(connectionString) do! c.OpenAsync(ctx.CancellationToken) return c }), disposeClient = (fun (c:NpgsqlConnection, ctx) -> c.CloseAsync(ctx.CancellationToken)), clientCount = 100) ``` ```fsharp let clientFactory = clients "db connections" { count 100 connect(fun i ctx -> task { let c = new NpgsqlConnection(connectionString) do! c.OpenAsync(ctx.CancellationToken) return c }) disconnect(fun c ctx -> c.CloseAsync(ctx.CancellationToken)) } ```
### Reporter Imagine you need just a html report. Then it is as short as ```fsharp report { html } ```
Fluent APIComputation Expression
```fsharp NBomberRunner.withReportFormats [ ReportFormat.Csv ReportFormat.Txt ReportFormat.Md ReportFormat.Html ] |> NBomberRunner.withReportingSinks [ influxdbSink customFormatSink ] (seconds 10) |> NBomberRunner.withReportFolder "reportsFolder" |> NBomberRunner.withReportFileName "reportFile" // or if none |> NBomberRunner.withoutReports ... ``` ```fsharp testSuite "Suite name" { report { csv text markdown html sink influxdbSink sink customFormatSink interval (seconds 10) folderName "reportsFolder" fileName "reportFile" } // or if none noReports ... } ```
### Other runner configuration
Fluent APIComputation Expression
```fsharp NBomberRunner.registerScenarios [] |> NBomberRunner.withTestName "Test name" |> NBomberRunner.withTestSuite "Suite name" |> NBomberRunner.withoutReports |> NBomberRunner.disableHintsAnalyzer |> NBomberRunner.loadConfig "loadTestConfig.json" |> NBomberRunner.loadInfraConfig "infrastructureConfig.json" |> NBomberRunner.withWorkerPlugins [] |> NBomberRunner.withApplicationType ApplicationType.Console // |> NBomberRunner.runWithArgs args |> NBomberRunner.run |> evaluateStatsFunction ``` ```fsharp testSuite "Suite name" { testName "Test name" noReports noHintsAnalyzer scenarios scenarioBuilderTest config "loadTestConfig.json" infraConfig "infrastructureConfig.json" plugins [ (* plugins list*) ] runConsole // runAsProcess // runWithArgs args // runWithExitCode } ```

近期下载者

相关文件


收藏者