@@ -348,6 +348,7 @@ NOTES:
348348 }
349349 sectionTitle := func (col int , title string ) {
350350 if ! brief && showHeadings {
351+ //nolint:govet // dynamic format string is intentional
351352 formatLine (col , title + ":" )
352353 }
353354 }
@@ -372,8 +373,8 @@ NOTES:
372373 // Queues
373374 if all || queues || brief {
374375 sectionTitle (1 , "Queues" )
375- formatLine (1 , "%sProvide queue: %s CIDs, %s regions" , indent , humanNumber (s .Sweep .Queues .PendingKeyProvides ), humanNumber (s .Sweep .Queues .PendingRegionProvides ))
376- formatLine (1 , "%sReprovide queue: %s regions" , indent , humanNumber (s .Sweep .Queues .PendingRegionReprovides ))
376+ formatLine (1 , "%sProvide queue: %s CIDs, %s regions" , indent , humanSI (s .Sweep .Queues .PendingKeyProvides , 1 ), humanSI (s .Sweep .Queues .PendingRegionProvides , 1 ))
377+ formatLine (1 , "%sReprovide queue: %s regions" , indent , humanSI (s .Sweep .Queues .PendingRegionReprovides , 1 ))
377378 addBlankLine (1 )
378379 }
379380
@@ -413,12 +414,12 @@ NOTES:
413414 sectionTitle (0 , "Network" )
414415 formatLine (0 , "%sAvg record holders: %s" , indent , humanFloatOrNA (s .Sweep .Network .AvgHolders ))
415416 if ! brief {
416- formatLine (0 , "%sPeers swept: %s" , indent , humanNumber (s .Sweep .Network .Peers ))
417+ formatLine (0 , "%sPeers swept: %s" , indent , humanInt (s .Sweep .Network .Peers ))
417418 formatLine (0 , "%sFull keyspace coverage: %t" , indent , s .Sweep .Network .CompleteKeyspaceCoverage )
418419 if s .Sweep .Network .Peers > 0 {
419- formatLine (0 , "%sReachable peers: %s (%s%%)" , indent , humanNumber (s .Sweep .Network .Reachable ), humanNumber (100 * s .Sweep .Network .Reachable / s .Sweep .Network .Peers ))
420+ formatLine (0 , "%sReachable peers: %s (%s%%)" , indent , humanInt (s .Sweep .Network .Reachable ), humanNumber (100 * s .Sweep .Network .Reachable / s .Sweep .Network .Peers ))
420421 } else {
421- formatLine (0 , "%sReachable peers: %s" , indent , humanNumber (s .Sweep .Network .Reachable ))
422+ formatLine (0 , "%sReachable peers: %s" , indent , humanInt (s .Sweep .Network .Reachable ))
422423 }
423424 formatLine (0 , "%sAvg region size: %s" , indent , humanFloatOrNA (s .Sweep .Network .AvgRegionSize ))
424425 formatLine (0 , "%sReplication factor: %s" , indent , humanNumber (s .Sweep .Network .ReplicationFactor ))
@@ -430,15 +431,15 @@ NOTES:
430431 if all || operations || brief {
431432 sectionTitle (1 , "Operations" )
432433 // Ongoing operations
433- formatLine (1 , "%sOngoing provides: %s CIDs, %s regions" , indent , humanNumber (s .Sweep .Operations .Ongoing .KeyProvides ), humanNumber (s .Sweep .Operations .Ongoing .RegionProvides ))
434- formatLine (1 , "%sOngoing reprovides: %s CIDs, %s regions" , indent , humanNumber (s .Sweep .Operations .Ongoing .KeyReprovides ), humanNumber (s .Sweep .Operations .Ongoing .RegionReprovides ))
434+ formatLine (1 , "%sOngoing provides: %s CIDs, %s regions" , indent , humanSI (s .Sweep .Operations .Ongoing .KeyProvides , 1 ), humanSI (s .Sweep .Operations .Ongoing .RegionProvides , 1 ))
435+ formatLine (1 , "%sOngoing reprovides: %s CIDs, %s regions" , indent , humanSI (s .Sweep .Operations .Ongoing .KeyReprovides , 1 ), humanSI (s .Sweep .Operations .Ongoing .RegionReprovides , 1 ))
435436 // Past operations summary
436437 formatLine (1 , "%sTotal CIDs provided: %s" , indent , humanNumber (s .Sweep .Operations .Past .KeysProvided ))
437438 if ! brief {
438439 formatLine (1 , "%sTotal records provided: %s" , indent , humanNumber (s .Sweep .Operations .Past .RecordsProvided ))
439440 formatLine (1 , "%sTotal provide errors: %s" , indent , humanNumber (s .Sweep .Operations .Past .KeysFailed ))
440- formatLine (1 , "%sCIDs provided/min: %s" , indent , humanFloatOrNA (s .Sweep .Operations .Past .KeysProvidedPerMinute ))
441- formatLine (1 , "%sCIDs reprovided/min: %s" , indent , humanFloatOrNA (s .Sweep .Operations .Past .KeysReprovidedPerMinute ))
441+ formatLine (1 , "%sCIDs provided/min/worker : %s" , indent , humanFloatOrNA (s .Sweep .Operations .Past .KeysProvidedPerMinute ))
442+ formatLine (1 , "%sCIDs reprovided/min/worker : %s" , indent , humanFloatOrNA (s .Sweep .Operations .Past .KeysReprovidedPerMinute ))
442443 formatLine (1 , "%sRegion reprovide duration: %s" , indent , humanDurationOrNA (s .Sweep .Operations .Past .RegionReprovideDuration ))
443444 formatLine (1 , "%sAvg CIDs/reprovide: %s" , indent , humanFloatOrNA (s .Sweep .Operations .Past .AvgKeysPerReprovide ))
444445 formatLine (1 , "%sRegions reprovided (last cycle): %s" , indent , humanNumber (s .Sweep .Operations .Past .RegionReprovidedLastCycle ))
@@ -451,7 +452,7 @@ NOTES:
451452 if displayWorkers || brief {
452453 availableReservedBurst := max (0 , s .Sweep .Workers .DedicatedBurst - s .Sweep .Workers .ActiveBurst )
453454 availableReservedPeriodic := max (0 , s .Sweep .Workers .DedicatedPeriodic - s .Sweep .Workers .ActivePeriodic )
454- availableFreeWorkers := s .Sweep .Workers .Max - max (s .Sweep .Workers .DedicatedBurst , s .Sweep .Workers .ActiveBurst ) - max (s .Sweep .Workers .DedicatedPeriodic , s .Sweep .Workers .ActivePeriodic )
455+ availableFreeWorkers := max ( 0 , s .Sweep .Workers .Max - max (s .Sweep .Workers .DedicatedBurst , s .Sweep .Workers .ActiveBurst )- max (s .Sweep .Workers .DedicatedPeriodic , s .Sweep .Workers .ActivePeriodic ) )
455456 availableBurst := availableFreeWorkers + availableReservedBurst
456457 availablePeriodic := availableFreeWorkers + availableReservedPeriodic
457458
@@ -463,21 +464,21 @@ NOTES:
463464 if compactMode {
464465 specifyWorkers = ""
465466 }
466- formatLine (0 , "%sActive%s: %s / %s (max)" , indent , specifyWorkers , humanNumber (s .Sweep .Workers .Active ), humanNumber (s .Sweep .Workers .Max ))
467+ formatLine (0 , "%sActive%s: %s / %s (max)" , indent , specifyWorkers , humanInt (s .Sweep .Workers .Active ), humanInt (s .Sweep .Workers .Max ))
467468 if brief {
468469 // Brief mode - show condensed worker info
469470 formatLine (0 , "%sPeriodic%s: %s active, %s available, %s queued" , indent , specifyWorkers ,
470- humanNumber (s .Sweep .Workers .ActivePeriodic ), humanNumber (availablePeriodic ), humanNumber (s .Sweep .Workers .QueuedPeriodic ))
471+ humanInt (s .Sweep .Workers .ActivePeriodic ), humanInt (availablePeriodic ), humanInt (s .Sweep .Workers .QueuedPeriodic ))
471472 formatLine (0 , "%sBurst%s: %s active, %s available, %s queued\n " , indent , specifyWorkers ,
472- humanNumber (s .Sweep .Workers .ActiveBurst ), humanNumber (availableBurst ), humanNumber (s .Sweep .Workers .QueuedBurst ))
473+ humanInt (s .Sweep .Workers .ActiveBurst ), humanInt (availableBurst ), humanInt (s .Sweep .Workers .QueuedBurst ))
473474 } else {
474- formatLine (0 , "%sFree%s: %s" , indent , specifyWorkers , humanNumber (availableFreeWorkers ))
475- formatLine (0 , "%sWorkers stats:% s %-9s %s" , indent , " " , "Periodic" , "Burst" )
476- formatLine (0 , "%s %-14s %-9s %s" , indent , "Active:" , humanNumber (s .Sweep .Workers .ActivePeriodic ), humanNumber (s .Sweep .Workers .ActiveBurst ))
477- formatLine (0 , "%s %-14s %-9s %s" , indent , "Dedicated:" , humanNumber (s .Sweep .Workers .DedicatedPeriodic ), humanNumber (s .Sweep .Workers .DedicatedBurst ))
478- formatLine (0 , "%s %-14s %-9s %s" , indent , "Available:" , humanNumber (availablePeriodic ), humanNumber (availableBurst ))
479- formatLine (0 , "%s %-14s %-9s %s" , indent , "Queued:" , humanNumber (s .Sweep .Workers .QueuedPeriodic ), humanNumber (s .Sweep .Workers .QueuedBurst ))
480- formatLine (0 , "%sMax connections/worker: %s" , indent , humanNumber (s .Sweep .Workers .MaxProvideConnsPerWorker ))
475+ formatLine (0 , "%sFree%s: %s" , indent , specifyWorkers , humanInt (availableFreeWorkers ))
476+ formatLine (0 , "%s %-14s %- 9s %s" , indent , "Workers stats: " , "Periodic" , "Burst" )
477+ formatLine (0 , "%s %-14s %-9s %s" , indent , "Active:" , humanInt (s .Sweep .Workers .ActivePeriodic ), humanInt (s .Sweep .Workers .ActiveBurst ))
478+ formatLine (0 , "%s %-14s %-9s %s" , indent , "Dedicated:" , humanInt (s .Sweep .Workers .DedicatedPeriodic ), humanInt (s .Sweep .Workers .DedicatedBurst ))
479+ formatLine (0 , "%s %-14s %-9s %s" , indent , "Available:" , humanInt (availablePeriodic ), humanInt (availableBurst ))
480+ formatLine (0 , "%s %-14s %-9s %s" , indent , "Queued:" , humanInt (s .Sweep .Workers .QueuedPeriodic ), humanInt (s .Sweep .Workers .QueuedBurst ))
481+ formatLine (0 , "%sMax connections/worker: %s" , indent , humanInt (s .Sweep .Workers .MaxProvideConnsPerWorker ))
481482 addBlankLine (0 )
482483 }
483484 }
@@ -559,14 +560,18 @@ func humanFloatOrNA(val float64) string {
559560 if val <= 0 {
560561 return "N/A"
561562 }
562- return fmt . Sprintf ( "%.1f" , val )
563+ return humanFull ( val , 1 )
563564}
564565
565- func humanSI (val float64 , decimals int ) string {
566- v , unit := humanize .ComputeSI (val )
566+ func humanSI [ T constraints. Float | constraints. Integer ] (val T , decimals int ) string {
567+ v , unit := humanize .ComputeSI (float64 ( val ) )
567568 return fmt .Sprintf ("%s%s" , humanFull (v , decimals ), unit )
568569}
569570
571+ func humanInt [T constraints.Integer ](val T ) string {
572+ return humanFull (float64 (val ), 0 )
573+ }
574+
570575func humanFull (val float64 , decimals int ) string {
571576 return humanize .CommafWithDigits (val , decimals )
572577}
0 commit comments