Skip to content

Commit f028368

Browse files
authored
Fix dupl warnings (#1735)
Signed-off-by: Y.Horie <[email protected]>
1 parent 23576c6 commit f028368

File tree

5 files changed

+66
-118
lines changed

5 files changed

+66
-118
lines changed

apis/fluentbit/v1alpha2/clustermultilineparser_types.go

Lines changed: 9 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,6 @@ limitations under the License.
1717
package v1alpha2
1818

1919
import (
20-
"bytes"
21-
"fmt"
22-
"reflect"
2320
"sort"
2421

2522
"github.com/fluent/fluent-operator/v3/apis/fluentbit/v1alpha2/plugins"
@@ -46,6 +43,14 @@ type ClusterMultilineParser struct {
4643
Spec MultilineParserSpec `json:"spec,omitempty"`
4744
}
4845

46+
func (a ClusterMultilineParser) name() string {
47+
return a.Name
48+
}
49+
50+
func (a ClusterMultilineParser) spec() MultilineParserSpec {
51+
return a.Spec
52+
}
53+
4954
// +kubebuilder:object:root=true
5055

5156
// ClusterMultilineParserList contains a list of ClusterMultilineParser
@@ -73,37 +78,9 @@ func (a ClusterMultilineParserByName) Less(i, j int) bool {
7378
}
7479

7580
func (list ClusterMultilineParserList) Load(sl plugins.SecretLoader) (string, error) {
76-
var buf bytes.Buffer
77-
7881
sort.Sort(ClusterMultilineParserByName(list.Items))
7982

80-
for _, item := range list.Items {
81-
merge := func(p plugins.Plugin) error {
82-
if p == nil || reflect.ValueOf(p).IsNil() {
83-
return nil
84-
}
85-
86-
buf.WriteString("[MULTILINE_PARSER]\n")
87-
buf.WriteString(fmt.Sprintf(" Name %s\n", item.Name))
88-
89-
kvs, err := p.Params(sl)
90-
if err != nil {
91-
return err
92-
}
93-
buf.WriteString(kvs.String())
94-
95-
return nil
96-
}
97-
98-
for i := 0; i < reflect.ValueOf(item.Spec).NumField(); i++ {
99-
p, _ := reflect.ValueOf(item.Spec).Field(i).Interface().(plugins.Plugin)
100-
if err := merge(p); err != nil {
101-
return "", err
102-
}
103-
}
104-
}
105-
106-
return buf.String(), nil
83+
return load(list.Items, sl)
10784
}
10885

10986
func init() {

apis/fluentbit/v1alpha2/clustermultilineparser_types_test.go

Lines changed: 27 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,31 @@ var clusterMultilineParserExpected = `[MULTILINE_PARSER]
2020
Rule "start_state" "/([a-zA-Z]+ \d+ \d+\:\d+\:\d+)(.*)/" "cont"
2121
Rule "cont" "/^\s+at.*/" "cont"
2222
`
23+
var spec = MultilineParserSpec{
24+
MultilineParser: &multilineparser.MultilineParser{
25+
Type: "regex",
26+
Rules: []multilineparser.Rule{
27+
{
28+
Start: "start_state",
29+
Regex: `/([a-zA-Z]+ \d+ \d+\:\d+\:\d+)(.*)/`,
30+
Next: "cont",
31+
},
32+
{
33+
Start: "cont",
34+
Regex: `/^\s+at.*/`,
35+
Next: "cont",
36+
},
37+
},
38+
},
39+
}
40+
41+
var multilineParserSpec = MultilineParserSpec{
42+
MultilineParser: &multilineparser.MultilineParser{
43+
Type: "regex",
44+
Parser: "go",
45+
KeyContent: "log",
46+
},
47+
}
2348

2449
func TestClusterMultilineParserList_Load(t *testing.T) {
2550
g := NewGomegaWithT(t)
@@ -39,13 +64,7 @@ func TestClusterMultilineParserList_Load(t *testing.T) {
3964
Name: "clustermultilineparser_test0",
4065
Labels: labels,
4166
},
42-
Spec: MultilineParserSpec{
43-
MultilineParser: &multilineparser.MultilineParser{
44-
Type: "regex",
45-
Parser: "go",
46-
KeyContent: "log",
47-
},
48-
},
67+
Spec: multilineParserSpec,
4968
}
5069

5170
customMultilineParser := &ClusterMultilineParser{
@@ -57,23 +76,7 @@ func TestClusterMultilineParserList_Load(t *testing.T) {
5776
Name: "clustermultilineparser_test1",
5877
Labels: labels,
5978
},
60-
Spec: MultilineParserSpec{
61-
MultilineParser: &multilineparser.MultilineParser{
62-
Type: "regex",
63-
Rules: []multilineparser.Rule{
64-
{
65-
Start: "start_state",
66-
Regex: `/([a-zA-Z]+ \d+ \d+\:\d+\:\d+)(.*)/`,
67-
Next: "cont",
68-
},
69-
{
70-
Start: "cont",
71-
Regex: `/^\s+at.*/`,
72-
Next: "cont",
73-
},
74-
},
75-
},
76-
},
79+
Spec: spec,
7780
}
7881

7982
clustermultilineparsers := ClusterMultilineParserList{

apis/fluentbit/v1alpha2/multilineparser_types.go

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,14 @@ type MultilineParser struct {
3838
Spec MultilineParserSpec `json:"spec,omitempty"`
3939
}
4040

41+
func (a MultilineParser) name() string {
42+
return a.Name
43+
}
44+
45+
func (a MultilineParser) spec() MultilineParserSpec {
46+
return a.Spec
47+
}
48+
4149
// +kubebuilder:object:root=true
4250

4351
// MultilineParserList contains a list of MultilineParser
@@ -63,19 +71,23 @@ func (a MultilineParserByName) Less(i, j int) bool {
6371
return a[i].Name < a[j].Name
6472
}
6573

66-
func (list MultilineParserList) Load(sl plugins.SecretLoader) (string, error) {
67-
var buf bytes.Buffer
74+
type multilineParserInterface interface {
75+
MultilineParser | ClusterMultilineParser
76+
name() string
77+
spec() MultilineParserSpec
78+
}
6879

69-
sort.Sort(MultilineParserByName(list.Items))
80+
func load[T multilineParserInterface](items []T, sl plugins.SecretLoader) (string, error) {
81+
var buf bytes.Buffer
7082

71-
for _, item := range list.Items {
83+
for _, item := range items {
7284
merge := func(p plugins.Plugin) error {
7385
if p == nil || reflect.ValueOf(p).IsNil() {
7486
return nil
7587
}
7688

7789
buf.WriteString("[MULTILINE_PARSER]\n")
78-
buf.WriteString(fmt.Sprintf(" Name %s\n", item.Name))
90+
buf.WriteString(fmt.Sprintf(" Name %s\n", item.name()))
7991

8092
kvs, err := p.Params(sl)
8193
if err != nil {
@@ -86,8 +98,8 @@ func (list MultilineParserList) Load(sl plugins.SecretLoader) (string, error) {
8698
return nil
8799
}
88100

89-
for i := 0; i < reflect.ValueOf(item.Spec).NumField(); i++ {
90-
p, _ := reflect.ValueOf(item.Spec).Field(i).Interface().(plugins.Plugin)
101+
for i := 0; i < reflect.ValueOf(item.spec()).NumField(); i++ {
102+
p, _ := reflect.ValueOf(item.spec()).Field(i).Interface().(plugins.Plugin)
91103
if err := merge(p); err != nil {
92104
return "", err
93105
}
@@ -97,6 +109,12 @@ func (list MultilineParserList) Load(sl plugins.SecretLoader) (string, error) {
97109
return buf.String(), nil
98110
}
99111

112+
func (list MultilineParserList) Load(sl plugins.SecretLoader) (string, error) {
113+
sort.Sort(MultilineParserByName(list.Items))
114+
115+
return load(list.Items, sl)
116+
}
117+
100118
func init() {
101119
SchemeBuilder.Register(&MultilineParser{}, &MultilineParserList{})
102120
}

apis/fluentbit/v1alpha2/multilineparser_types_test.go

Lines changed: 2 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"testing"
55

66
"github.com/fluent/fluent-operator/v3/apis/fluentbit/v1alpha2/plugins"
7-
"github.com/fluent/fluent-operator/v3/apis/fluentbit/v1alpha2/plugins/multilineparser"
87
. "github.com/onsi/gomega"
98
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
109
)
@@ -39,13 +38,7 @@ func TestMultilineParserList_Load(t *testing.T) {
3938
Name: "multilineparser_test0",
4039
Labels: labels,
4140
},
42-
Spec: MultilineParserSpec{
43-
MultilineParser: &multilineparser.MultilineParser{
44-
Type: "regex",
45-
Parser: "go",
46-
KeyContent: "log",
47-
},
48-
},
41+
Spec: multilineParserSpec,
4942
}
5043

5144
customMultilineParser := &MultilineParser{
@@ -57,23 +50,7 @@ func TestMultilineParserList_Load(t *testing.T) {
5750
Name: "multilineparser_test1",
5851
Labels: labels,
5952
},
60-
Spec: MultilineParserSpec{
61-
MultilineParser: &multilineparser.MultilineParser{
62-
Type: "regex",
63-
Rules: []multilineparser.Rule{
64-
{
65-
Start: "start_state",
66-
Regex: `/([a-zA-Z]+ \d+ \d+\:\d+\:\d+)(.*)/`,
67-
Next: "cont",
68-
},
69-
{
70-
Start: "cont",
71-
Regex: `/^\s+at.*/`,
72-
Next: "cont",
73-
},
74-
},
75-
},
76-
},
53+
Spec: spec,
7754
}
7855

7956
multilineparsers := MultilineParserList{

apis/fluentd/v1alpha1/tests/helper_test.go

Lines changed: 3 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -27,17 +27,17 @@ func Test_Cfg2ES(t *testing.T) {
2727

2828
func Test_ClusterCfgInputTail(t *testing.T) {
2929
sl := plugins.NewSecretLoader(nil, Fluentd.Namespace, logr.Logger{})
30-
testClusterConfigWithGlobalInputs(t, sl, FluentdInputTail, &FluentdConfig1, []fluentdv1alpha1.ClusterOutput{FluentdClusterOutputTag}, "./expected/fluentd-global-cfg-input-tail.cfg")
30+
testNamespacedConfig(t, sl, FluentdInputTail, &FluentdConfig1, []fluentdv1alpha1.ClusterOutput{FluentdClusterOutputTag}, "./expected/fluentd-global-cfg-input-tail.cfg")
3131
}
3232

3333
func Test_ClusterCfgInputSample(t *testing.T) {
3434
sl := plugins.NewSecretLoader(nil, Fluentd.Namespace, logr.Logger{})
35-
testClusterConfigWithGlobalInputs(t, sl, FluentdInputSample, &FluentdConfig1, []fluentdv1alpha1.ClusterOutput{FluentdClusterOutputTag}, "./expected/fluentd-global-cfg-input-sample.cfg")
35+
testNamespacedConfig(t, sl, FluentdInputSample, &FluentdConfig1, []fluentdv1alpha1.ClusterOutput{FluentdClusterOutputTag}, "./expected/fluentd-global-cfg-input-sample.cfg")
3636
}
3737

3838
func Test_ClusterCfgInputMonitorAgent(t *testing.T) {
3939
sl := plugins.NewSecretLoader(nil, Fluentd.Namespace, logr.Logger{})
40-
testClusterConfigWithGlobalInputs(t, sl, FluentdInputMonitorAgent, &FluentdConfig1, []fluentdv1alpha1.ClusterOutput{FluentdClusterOutputTag}, "./expected/fluentd-global-cfg-input-monitorAgent.cfg")
40+
testNamespacedConfig(t, sl, FluentdInputMonitorAgent, &FluentdConfig1, []fluentdv1alpha1.ClusterOutput{FluentdClusterOutputTag}, "./expected/fluentd-global-cfg-input-monitorAgent.cfg")
4141
}
4242

4343
func Test_ClusterCfgOutput2ES(t *testing.T) {
@@ -530,33 +530,6 @@ func testNamespacedConfig(
530530
}
531531
}
532532

533-
// testClusterConfigWithGlobalInputs tests a cluster config with custom global inputs
534-
func testClusterConfigWithGlobalInputs(
535-
t *testing.T,
536-
sl plugins.SecretLoader,
537-
fluentd fluentdv1alpha1.Fluentd,
538-
config *fluentdv1alpha1.FluentdConfig,
539-
clusterOutputs []fluentdv1alpha1.ClusterOutput,
540-
expectedCfgPath string,
541-
) {
542-
g := NewGomegaWithT(t)
543-
544-
psr := fluentdv1alpha1.NewGlobalPluginResources("main")
545-
psr.CombineGlobalInputsPlugins(sl, fluentd.Spec.GlobalInputs)
546-
547-
clustercfgRouter, err := psr.BuildCfgRouter(config)
548-
g.Expect(err).NotTo(HaveOccurred())
549-
clustercfgResources, _ := psr.PatchAndFilterClusterLevelResources(sl, config.GetCfgId(), []fluentdv1alpha1.ClusterInput{}, []fluentdv1alpha1.ClusterFilter{}, clusterOutputs)
550-
err = psr.WithCfgResources(*clustercfgRouter.Label, clustercfgResources)
551-
g.Expect(err).NotTo(HaveOccurred())
552-
553-
for i := 0; i < maxRuntimes; i++ {
554-
config, errs := psr.RenderMainConfig(false)
555-
g.Expect(errs).NotTo(HaveOccurred())
556-
g.Expect(string(getExpectedCfg(expectedCfgPath))).To(Equal(config))
557-
}
558-
}
559-
560533
// testClusterConfigWithFiltersAndOutputs tests a cluster config with filters and outputs
561534
func testClusterConfigWithFiltersAndOutputs(
562535
t *testing.T,

0 commit comments

Comments
 (0)