Skip to content

Commit

Permalink
fixed issue with running live table for ApplicationType.Process
Browse files Browse the repository at this point in the history
  • Loading branch information
AntyaDev committed Sep 27, 2022
1 parent 56e44ae commit faddbb8
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 22 deletions.
8 changes: 4 additions & 4 deletions src/NBomber/DomainServices/TestHost/TestHost.fs
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ type internal TestHost(dep: IGlobalDependency,
let stopSchedulers (schedulers: ScenarioScheduler list) =
schedulers |> List.iter(fun x -> x.Stop())

let initScenarios (consoleStatus: StatusContext) (cancelToken: CancellationToken) (sessionArgs: SessionArgs) = taskResult {
let initScenarios (consoleStatus: StatusContext option) (cancelToken: CancellationToken) (sessionArgs: SessionArgs) = taskResult {

let baseContext = NBomberContext.createBaseContext(sessionArgs.TestInfo, getCurrentNodeInfo, cancelToken, _log)

Expand Down Expand Up @@ -137,7 +137,7 @@ type internal TestHost(dep: IGlobalDependency,
}

let cleanScenarios (sessionArgs: SessionArgs,
consoleStatus: StatusContext,
consoleStatus: StatusContext option,
cancelToken: CancellationToken,
scenarios: Scenario list) =

Expand All @@ -160,7 +160,7 @@ type internal TestHost(dep: IGlobalDependency,
TestHostConsole.printContextInfo dep
_log.Information "Starting init..."

TestHostConsole.displayStatus "Initializing scenarios..." (fun consoleStatus -> backgroundTask {
TestHostConsole.displayStatus dep "Initializing scenarios..." (fun consoleStatus -> backgroundTask {
use cancelToken = new CancellationTokenSource()
match! initScenarios consoleStatus cancelToken.Token sessionArgs with
| Ok initializedScenarios ->
Expand Down Expand Up @@ -223,7 +223,7 @@ type internal TestHost(dep: IGlobalDependency,
else
_log.Information "Stopping scenarios..."

TestHostConsole.displayStatus "Cleaning scenarios..." (fun consoleStatus -> backgroundTask {
TestHostConsole.displayStatus dep "Cleaning scenarios..." (fun consoleStatus -> backgroundTask {
use cancelToken = new CancellationTokenSource()
stopSchedulers _currentSchedulers

Expand Down
22 changes: 13 additions & 9 deletions src/NBomber/DomainServices/TestHost/TestHostConsole.fs
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,17 @@ let printTargetScenarios (dep: IGlobalDependency) (targetScns: Scenario list) =
|> List.map(fun x -> x.ScenarioName)
|> fun targets -> dep.Logger.Information("Target scenarios: {TargetScenarios}", String.concatWithComma targets)

let displayStatus (msg: string) (runAction: StatusContext -> Task<'T>) =
let status = AnsiConsole.Status()
status.StartAsync(msg, runAction)
let displayStatus (dep: IGlobalDependency) (msg: string) (runAction: StatusContext option -> Task<'T>) =
if dep.ApplicationType = ApplicationType.Console then
let status = AnsiConsole.Status()
status.StartAsync(msg, fun ctx -> runAction (Some ctx))
else
dep.Logger.Information msg
runAction None

let displayClientPoolProgress (dep: IGlobalDependency, consoleStatus: StatusContext, pool: ClientPool) =
let displayClientPoolProgress (dep: IGlobalDependency, consoleStatus: StatusContext option, pool: ClientPool) =

if dep.ApplicationType = ApplicationType.Console then
if consoleStatus.IsSome then

pool.EventStream
|> Observable.takeWhile(function
Expand All @@ -46,12 +50,12 @@ let displayClientPoolProgress (dep: IGlobalDependency, consoleStatus: StatusCont
dep.Logger.Information("Start disposing client factory: {0}", poolName)

| ClientInitialized (poolName,number) ->
consoleStatus.Status <- $"Initializing client factory: {Console.okColor poolName}, initialized client: {Console.blueColor number}"
consoleStatus.Refresh()
consoleStatus.Value.Status <- $"Initializing client factory: {Console.okColor poolName}, initialized client: {Console.blueColor number}"
consoleStatus.Value.Refresh()

| ClientDisposed (poolName,number,error) ->
consoleStatus.Status <- $"Disposing client factory: {Console.okColor poolName}, disposed client: {Console.blueColor number}"
consoleStatus.Refresh()
consoleStatus.Value.Status <- $"Disposing client factory: {Console.okColor poolName}, disposed client: {Console.blueColor number}"
consoleStatus.Value.Refresh()
error |> Option.iter(fun ex -> dep.Logger.Error(ex, "Client exception occurred"))

| InitFinished
Expand Down
24 changes: 15 additions & 9 deletions src/NBomber/DomainServices/TestHost/TestHostScenario.fs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ let getTargetScenarios (sessionArgs: SessionArgs) (regScenarios: Scenario list)
|> Scenario.filterTargetScenarios (sessionArgs.GetTargetScenarios())
|> Scenario.applySettings (sessionArgs.GetScenariosSettings()) (sessionArgs.GetDefaultStepTimeout())

let initClientPools (dep: IGlobalDependency) (consoleStatus: StatusContext) (context: IBaseContext) (pools: ClientPool list) = taskResult {
let initClientPools (dep: IGlobalDependency) (consoleStatus: StatusContext option) (context: IBaseContext) (pools: ClientPool list) = taskResult {
try
for pool in pools do
TestHostConsole.displayClientPoolProgress(dep, consoleStatus, pool)
Expand All @@ -30,11 +30,14 @@ let initClientPools (dep: IGlobalDependency) (consoleStatus: StatusContext) (con
| ex -> return! AppError.createResult(InitScenarioError ex)
}

let initDataFeeds (dep: IGlobalDependency) (consoleStatus: StatusContext) (context: IBaseContext) (feeds: IFeed<obj> list) = taskResult {
let initDataFeeds (dep: IGlobalDependency) (consoleStatus: StatusContext option) (context: IBaseContext) (feeds: IFeed<obj> list) = taskResult {
try
for feed in feeds do
consoleStatus.Status <- $"Initializing data feed: {Console.okColor feed.FeedName}"
consoleStatus.Refresh()

if consoleStatus.IsSome then
consoleStatus.Value.Status <- $"Initializing data feed: {Console.okColor feed.FeedName}"
consoleStatus.Value.Refresh()

do! feed.Init(context)
dep.Logger.Information("Initialized data feed: {0}", feed.FeedName)

Expand All @@ -44,7 +47,7 @@ let initDataFeeds (dep: IGlobalDependency) (consoleStatus: StatusContext) (conte
}

let initScenarios (dep: IGlobalDependency,
consoleStatus: StatusContext,
consoleStatus: StatusContext option,
baseContext: IBaseContext,
sessionArgs: SessionArgs,
regScenarios: Scenario list) = taskResult {
Expand All @@ -62,8 +65,11 @@ let initScenarios (dep: IGlobalDependency,
match scn.Init with
| Some initFunc ->
dep.Logger.Information("Start init scenario: {Scenario}", scn.ScenarioName)
consoleStatus.Status <- $"Initializing scenario: {Console.okColor scn.ScenarioName}"
consoleStatus.Refresh()

if consoleStatus.IsSome then
consoleStatus.Value.Status <- $"Initializing scenario: {Console.okColor scn.ScenarioName}"
consoleStatus.Value.Refresh()

let scnContext = Scenario.ScenarioContext.setCustomSettings defaultScnContext scn.CustomSettings
do! initFunc scnContext

Expand All @@ -90,13 +96,13 @@ let initScenarios (dep: IGlobalDependency,
| ex -> return! AppError.createResult(InitScenarioError ex)
}

let disposeClientPools (dep: IGlobalDependency) (consoleStatus: StatusContext) (baseContext: IBaseContext) (pools: ClientPool list) =
let disposeClientPools (dep: IGlobalDependency) (consoleStatus: StatusContext option) (baseContext: IBaseContext) (pools: ClientPool list) =
for pool in pools do
TestHostConsole.displayClientPoolProgress(dep, consoleStatus, pool)
pool.DisposePool(baseContext)

let cleanScenarios (dep: IGlobalDependency)
(consoleStatus: StatusContext)
(consoleStatus: StatusContext option)
(baseContext: IBaseContext)
(defaultScnContext: IScenarioContext)
(scenarios: Scenario list) = backgroundTask {
Expand Down

0 comments on commit faddbb8

Please sign in to comment.