-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathconfig_benchmark_test.go
120 lines (100 loc) · 3.42 KB
/
config_benchmark_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
/*
Copyright © 2022, 2023 Red Hat, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package main_test
// Benchmark for config module
//
// Documentation in literate-programming-style is available at:
// https://redhatinsights.github.io/ccx-notification-writer/packages/config_benchmark_test.html
import (
"testing"
main "github.com/RedHatInsights/ccx-notification-writer"
)
// mustLoadBenchmarkConfiguration helper function loads configuration to be
// used by benchmarks.
func mustLoadBenchmarkConfiguration(b *testing.B) main.ConfigStruct {
configuration, err := loadConfiguration()
if err != nil {
b.Fatal(err)
}
return configuration
}
// BenchmarkGetMetricsConfiguration measures the speed of
// GetMetricsConfiguration function from the main module.
func BenchmarkGetMetricsConfiguration(b *testing.B) {
initLogging()
configuration := mustLoadBenchmarkConfiguration(b)
// run the benchmarked code specified amount of times
for i := 0; i < b.N; i++ {
// call benchmarked function
m := main.GetMetricsConfiguration(&configuration)
b.StopTimer()
if m.Namespace != "notification_writer" {
b.Fatal("Wrong configuration: namespace = '" + m.Namespace + "'")
}
if m.Address != ":8080" {
b.Fatal("Wrong configuration: address = '" + m.Address + "'")
}
b.StartTimer()
}
}
// BenchmarkGetBrokerConfiguration measures the speed of
// GetBrokerConfiguration function from the main module.
func BenchmarkGetBrokerConfiguration(b *testing.B) {
initLogging()
configuration := mustLoadBenchmarkConfiguration(b)
// run the benchmarked code specified amount of times
for i := 0; i < b.N; i++ {
// call benchmarked function
m := main.GetBrokerConfiguration(&configuration)
b.StopTimer()
if m.Addresses != "kafka:29092" {
b.Fatal("Wrong configuration: addresses = '" + m.Addresses + "'")
}
b.StartTimer()
}
}
// BenchmarkGetLoggingConfiguration measures the speed of
// GetLoggingConfiguration function from the main module.
func BenchmarkGetLoggingConfiguration(b *testing.B) {
initLogging()
configuration := mustLoadBenchmarkConfiguration(b)
// run the benchmarked code specified amount of times
for i := 0; i < b.N; i++ {
// call benchmarked function
m := main.GetLoggingConfiguration(&configuration)
b.StopTimer()
if !m.Debug {
b.Fatal("Wrong configuration: debug is set to false")
}
if m.LogLevel != "" {
b.Fatal("Wrong configuration: loglevel = '" + m.LogLevel + "'")
}
b.StartTimer()
}
}
// BenchmarkGetStorageConfiguration measures the speed of
// GetStorageConfiguration function from the main module.
func BenchmarkGetStorageConfiguration(b *testing.B) {
initLogging()
configuration := mustLoadBenchmarkConfiguration(b)
// run the benchmarked code specified amount of times
for i := 0; i < b.N; i++ {
// call benchmarked function
m := main.GetStorageConfiguration(&configuration)
b.StopTimer()
if m.Driver != "postgres" {
b.Fatal("Wrong configuration: driver = '" + m.Driver + "'")
}
b.StartTimer()
}
}