We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent c95f6ca commit 207b853Copy full SHA for 207b853
3 files changed
cmd/pi/main.go
@@ -2,6 +2,7 @@ package main
2
3
import (
4
"fmt"
5
+ "os"
6
"time"
7
8
"github.com/tygern/pi/internal/cli"
@@ -10,7 +11,7 @@ import (
10
11
)
12
13
func main() {
- duration, numberOfWorkers := cli.ParseCommandLineArgs()
14
+ duration, numberOfWorkers := cli.ParseCommandLineArgs(os.Args[1:])
15
16
ctx, cancel := cli.SigtermTimeoutContext(time.Duration(duration) * time.Second)
17
defer cancel()
internal/cli/support.go
@@ -32,10 +32,12 @@ func SigtermTimeoutContext(timeout time.Duration) (context.Context, context.Canc
32
return ctx, cancel
33
}
34
35
-func ParseCommandLineArgs() (duration, numberOfWorkers int) {
36
- flag.IntVar(&duration, "d", 20, "execution duration in seconds")
37
- flag.IntVar(&numberOfWorkers, "n", runtime.NumCPU(), "number of workers")
38
- flag.Parse()
+func ParseCommandLineArgs(arguments []string) (duration, numberOfWorkers int) {
+ flagSet := flag.FlagSet{}
+ flagSet.IntVar(&duration, "d", 20, "execution duration in seconds")
+ flagSet.IntVar(&numberOfWorkers, "n", runtime.NumCPU(), "number of workers")
39
+ flagSet.Parse(arguments)
40
+
41
fmt.Printf("Running for %d seconds with %d workers\n", duration, numberOfWorkers)
42
return duration, numberOfWorkers
43
internal/cli/support_test.go
@@ -7,8 +7,23 @@ import (
9
+func TestParseCommandLineArgs(t *testing.T) {
+ duration, numberOfWorkers := cli.ParseCommandLineArgs([]string{"-d", "30", "-n", "15"})
+ assert.Equal(t, 30, duration)
+ assert.Equal(t, 15, numberOfWorkers)
+ defaultDuration, defaultNumberOfWorkers := cli.ParseCommandLineArgs([]string{})
+ assert.Equal(t, 20, defaultDuration)
+ assert.GreaterThanOrEqualTo(t, defaultNumberOfWorkers, 1)
18
+}
19
20
func TestPrettyPrint(t *testing.T) {
21
assert.Equal(t, "2,300", cli.PrettyPrint(2300))
22
assert.Equal(t, "22,300", cli.PrettyPrint(22300))
23
assert.Equal(t, "222,300", cli.PrettyPrint(222300))
24
25
26
+func TestReport(t *testing.T) {
27
+ assert.Equal(t, "π ≈ 3.141592600000 (10,000,000 iterations)", cli.Report(3.1415926, 10_000_000))
28
+ assert.Equal(t, "π ≈ 3.000000000000 (4 iterations)", cli.Report(3, 4))
29
0 commit comments