@@ -372,6 +372,70 @@ public async Task SysbenchOLTPClientExecutorUsesDefinedParameters()
372
372
}
373
373
}
374
374
375
+ [ Test ]
376
+ public async Task SysbenchOLTPClientExecutorUsesThreadCeilingForHighCoreCount ( )
377
+ {
378
+ SetupDefaultBehavior ( ) ;
379
+
380
+ this . mockFixture . SystemManagement . Setup ( mgr => mgr . GetCpuInfoAsync ( It . IsAny < CancellationToken > ( ) ) )
381
+ . ReturnsAsync ( new CpuInfo ( "cpu" , "description" , 4 , 16 , 4 , 4 , false ) ) ;
382
+
383
+ this . mockFixture . StateManager . OnGetState ( ) . ReturnsAsync ( JObject . FromObject ( new SysbenchOLTPExecutor . SysbenchOLTPState ( )
384
+ {
385
+ SysbenchInitialized = false
386
+ } ) ) ;
387
+
388
+ string [ ] expectedCommands =
389
+ {
390
+ "sudo ./autogen.sh" ,
391
+ "sudo ./configure" ,
392
+ "sudo make -j" ,
393
+ "sudo make install" ,
394
+ $ "sudo mysql -u sbtest -h 1.2.3.5 sbtest --execute=\" USE sbtest; SHOW tables; SELECT FOUND_ROWS();\" ",
395
+ $ "sudo mysql -u sbtest -h 1.2.3.5 sbtest --execute=\" USE sbtest; SELECT COUNT(*) FROM sbtest1;\" ",
396
+ $ "sudo /home/user/tools/VirtualClient/packages/sysbench/src/sysbench oltp_read_write --threads=64 --tables=10 --table-size=1000000 --mysql-db=sbtest --mysql-host=1.2.3.5 --time=10 cleanup",
397
+ $ "sudo /home/user/tools/VirtualClient/packages/sysbench/src/sysbench oltp_common --tables=10 --table-size=1000000 --mysql-db=sbtest --mysql-host=1.2.3.5 prepare",
398
+ $ "sudo /home/user/tools/VirtualClient/packages/sysbench/src/sysbench oltp_read_write --threads=64 --tables=10 --table-size=1000000 --mysql-db=sbtest --mysql-host=1.2.3.5 --time=10 run"
399
+ } ;
400
+
401
+ int commandNumber = 0 ;
402
+ bool commandExecuted = false ;
403
+ this . mockFixture . ProcessManager . OnCreateProcess = ( exe , arguments , workingDir ) =>
404
+ {
405
+
406
+ string expectedCommand = expectedCommands [ commandNumber ] ;
407
+ if ( expectedCommand == $ "{ exe } { arguments } ")
408
+ {
409
+ commandExecuted = true ;
410
+ }
411
+ Assert . IsTrue ( commandExecuted ) ;
412
+ commandExecuted = false ;
413
+ commandNumber += 1 ;
414
+
415
+ InMemoryProcess process = new InMemoryProcess
416
+ {
417
+ StartInfo = new ProcessStartInfo
418
+ {
419
+ FileName = exe ,
420
+ Arguments = arguments
421
+ } ,
422
+ ExitCode = 0 ,
423
+ OnStart = ( ) => true ,
424
+ OnHasExited = ( ) => true
425
+ } ;
426
+
427
+ string resultsPath = Path . Combine ( Path . GetDirectoryName ( Assembly . GetExecutingAssembly ( ) . Location ) , "Examples" , "SysbenchOLTP" , "SysbenchOLTPExample.txt" ) ;
428
+ process . StandardOutput . Append ( File . ReadAllText ( resultsPath ) ) ;
429
+
430
+ return process ;
431
+ } ;
432
+
433
+ using ( TestSysbenchOLTPClientExecutor SysbenchExecutor = new TestSysbenchOLTPClientExecutor ( this . mockFixture . Dependencies , this . mockFixture . Parameters ) )
434
+ {
435
+ await SysbenchExecutor . ExecuteAsync ( CancellationToken . None ) ;
436
+ }
437
+ }
438
+
375
439
[ Test ]
376
440
public async Task SysbenchOLTPClientExecutorRunsTheExpectedWorkloadCommandBalancedScenario ( )
377
441
{
0 commit comments