Skip to content

Commit cbb9016

Browse files
committed
refactor logProgress
1 parent c271a58 commit cbb9016

File tree

3 files changed

+50
-26
lines changed

3 files changed

+50
-26
lines changed

ledger/complete/wal/checkpointer.go

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
"github.com/onflow/flow-go/ledger/complete/mtrie/trie"
2525
"github.com/onflow/flow-go/model/bootstrap"
2626
"github.com/onflow/flow-go/module/metrics"
27+
"github.com/onflow/flow-go/module/util"
2728
utilsio "github.com/onflow/flow-go/utils/io"
2829
)
2930

@@ -516,15 +517,9 @@ func StoreCheckpointV5(dir string, fileName string, logger *zerolog.Logger, trie
516517
}
517518

518519
func logProgress(msg string, estimatedSubtrieNodeCount int, logger *zerolog.Logger) func(nodeCounter uint64) {
519-
lookup := make(map[int]int)
520-
for i := 1; i < 10; i++ { // [1...9]
521-
lookup[estimatedSubtrieNodeCount/10*i] = i * 10
522-
}
523-
return func(nodeCounter uint64) {
524-
percentage, ok := lookup[int(nodeCounter)]
525-
if ok {
526-
logger.Info().Msgf("%s completion percentage: %v percent", msg, percentage)
527-
}
520+
lg := util.LogProgress(msg, estimatedSubtrieNodeCount, logger)
521+
return func(index uint64) {
522+
lg(int(index))
528523
}
529524
}
530525

module/util/log.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,12 @@ import (
44
"github.com/rs/zerolog"
55
)
66

7+
// LogProgress takes a total and return function such that when called with a 0-based index
8+
// it prints the progress from 0% to 100% to indicate the index from 0 to (total - 1) has been
9+
// processed.
10+
// useful to report the progress of processing the index from 0 to (total - 1)
711
func LogProgress(msg string, total int, logger *zerolog.Logger) func(currentIndex int) {
8-
logThreshold := float64(10)
12+
logThreshold := float64(0)
913
return func(currentIndex int) {
1014
percentage := float64(100)
1115
if total > 0 {
@@ -14,7 +18,7 @@ func LogProgress(msg string, total int, logger *zerolog.Logger) func(currentInde
1418

1519
// report every 10 percent
1620
if percentage >= logThreshold {
17-
logger.Info().Msgf("%s completion percentage: %v percent", msg, int(percentage))
21+
logger.Info().Msgf("%s progress: %v percent", msg, logThreshold)
1822
logThreshold += 10
1923
}
2024
}

module/util/log_test.go

Lines changed: 40 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,27 +8,52 @@ import (
88
"github.com/stretchr/testify/require"
99
)
1010

11-
func TestLogProgress(t *testing.T) {
11+
func TestLogProgress40(t *testing.T) {
1212
buf := bytes.NewBufferString("")
1313
lg := zerolog.New(buf)
14-
logger := LogProgress("test", 40, &lg)
15-
for i := 0; i < 50; i++ {
14+
total := 40
15+
logger := LogProgress("test", total, &lg)
16+
for i := 0; i < total; i++ {
1617
logger(i)
1718
}
1819

1920
expectedLogs :=
20-
`{"level":"info","message":"test completion percentage: 10 percent"}
21-
{"level":"info","message":"test completion percentage: 20 percent"}
22-
{"level":"info","message":"test completion percentage: 30 percent"}
23-
{"level":"info","message":"test completion percentage: 40 percent"}
24-
{"level":"info","message":"test completion percentage: 50 percent"}
25-
{"level":"info","message":"test completion percentage: 60 percent"}
26-
{"level":"info","message":"test completion percentage: 70 percent"}
27-
{"level":"info","message":"test completion percentage: 80 percent"}
28-
{"level":"info","message":"test completion percentage: 90 percent"}
29-
{"level":"info","message":"test completion percentage: 100 percent"}
30-
{"level":"info","message":"test completion percentage: 110 percent"}
31-
{"level":"info","message":"test completion percentage: 120 percent"}
21+
`{"level":"info","message":"test progress: 0 percent"}
22+
{"level":"info","message":"test progress: 10 percent"}
23+
{"level":"info","message":"test progress: 20 percent"}
24+
{"level":"info","message":"test progress: 30 percent"}
25+
{"level":"info","message":"test progress: 40 percent"}
26+
{"level":"info","message":"test progress: 50 percent"}
27+
{"level":"info","message":"test progress: 60 percent"}
28+
{"level":"info","message":"test progress: 70 percent"}
29+
{"level":"info","message":"test progress: 80 percent"}
30+
{"level":"info","message":"test progress: 90 percent"}
31+
{"level":"info","message":"test progress: 100 percent"}
3232
`
3333
require.Equal(t, expectedLogs, buf.String())
3434
}
35+
36+
func TestLogProgress1000(t *testing.T) {
37+
for total := 11; total < 1000; total++ {
38+
buf := bytes.NewBufferString("")
39+
lg := zerolog.New(buf)
40+
logger := LogProgress("test", total, &lg)
41+
for i := 0; i < total; i++ {
42+
logger(i)
43+
}
44+
45+
expectedLogs := `{"level":"info","message":"test progress: 0 percent"}
46+
{"level":"info","message":"test progress: 10 percent"}
47+
{"level":"info","message":"test progress: 20 percent"}
48+
{"level":"info","message":"test progress: 30 percent"}
49+
{"level":"info","message":"test progress: 40 percent"}
50+
{"level":"info","message":"test progress: 50 percent"}
51+
{"level":"info","message":"test progress: 60 percent"}
52+
{"level":"info","message":"test progress: 70 percent"}
53+
{"level":"info","message":"test progress: 80 percent"}
54+
{"level":"info","message":"test progress: 90 percent"}
55+
{"level":"info","message":"test progress: 100 percent"}
56+
`
57+
require.Equal(t, expectedLogs, buf.String(), total)
58+
}
59+
}

0 commit comments

Comments
 (0)