Skip to content

Commit f57d9d6

Browse files
committed
refactor: store enabled modules into a dedicated struct
1 parent b539ee0 commit f57d9d6

File tree

2 files changed

+33
-29
lines changed

2 files changed

+33
-29
lines changed

analytics/config/config.go

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,20 @@ import (
99
"github.com/prebid/prebid-server/config"
1010
)
1111

12+
type analyticsModule analytics.PBSAnalyticsModule
13+
14+
type pbsAnalyticsModule struct {
15+
enabledModules []analyticsModule
16+
}
17+
1218
//Modules that need to be logged to need to be initialized here
1319
func NewPBSAnalytics(analytics *config.Analytics) analytics.PBSAnalyticsModule {
14-
modules := make(enabledAnalytics, 0)
20+
21+
instance := &pbsAnalyticsModule{enabledModules: make([]analyticsModule, 0)}
22+
1523
if len(analytics.File.Filename) > 0 {
1624
if mod, err := filesystem.NewFileLogger(analytics.File.Filename); err == nil {
17-
modules = append(modules, mod)
25+
instance.enabledModules = append(instance.enabledModules, mod)
1826
} else {
1927
glog.Fatalf("Could not initialize FileLogger for file %v :%v", analytics.File.Filename, err)
2028
}
@@ -29,43 +37,40 @@ func NewPBSAnalytics(analytics *config.Analytics) analytics.PBSAnalyticsModule {
2937
analytics.Pubstack.Buffers.BufferSize,
3038
analytics.Pubstack.Buffers.Timeout)
3139
if err == nil {
32-
modules = append(modules, pubstackModule)
40+
instance.enabledModules = append(instance.enabledModules, pubstackModule)
3341
} else {
3442
glog.Fatalf("Could not initialize PubstackModule: %v", err)
3543
}
3644
}
37-
return modules
45+
return instance
3846
}
3947

40-
//Collection of all the correctly configured analytics modules - implements the PBSAnalyticsModule interface
41-
type enabledAnalytics []analytics.PBSAnalyticsModule
42-
43-
func (ea enabledAnalytics) LogAuctionObject(ao *analytics.AuctionObject) {
44-
for _, module := range ea {
48+
func (pam pbsAnalyticsModule) LogAuctionObject(ao *analytics.AuctionObject) {
49+
for _, module := range pam.enabledModules {
4550
module.LogAuctionObject(ao)
4651
}
4752
}
4853

49-
func (ea enabledAnalytics) LogVideoObject(vo *analytics.VideoObject) {
50-
for _, module := range ea {
54+
func (pam pbsAnalyticsModule) LogVideoObject(vo *analytics.VideoObject) {
55+
for _, module := range pam.enabledModules {
5156
module.LogVideoObject(vo)
5257
}
5358
}
5459

55-
func (ea enabledAnalytics) LogCookieSyncObject(cso *analytics.CookieSyncObject) {
56-
for _, module := range ea {
60+
func (pam pbsAnalyticsModule) LogCookieSyncObject(cso *analytics.CookieSyncObject) {
61+
for _, module := range pam.enabledModules {
5762
module.LogCookieSyncObject(cso)
5863
}
5964
}
6065

61-
func (ea enabledAnalytics) LogSetUIDObject(so *analytics.SetUIDObject) {
62-
for _, module := range ea {
66+
func (pam pbsAnalyticsModule) LogSetUIDObject(so *analytics.SetUIDObject) {
67+
for _, module := range pam.enabledModules {
6368
module.LogSetUIDObject(so)
6469
}
6570
}
6671

67-
func (ea enabledAnalytics) LogAmpObject(ao *analytics.AmpObject) {
68-
for _, module := range ea {
72+
func (pam pbsAnalyticsModule) LogAmpObject(ao *analytics.AmpObject) {
73+
for _, module := range pam.enabledModules {
6974
module.LogAmpObject(ao)
7075
}
7176
}

analytics/config/config_test.go

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package config
22

33
import (
4+
"github.com/stretchr/testify/assert"
45
"net/http"
56
"os"
67
"testing"
@@ -67,9 +68,11 @@ func (m *sampleModule) LogSetUIDObject(so *analytics.SetUIDObject) { *m.count++
6768
func (m *sampleModule) LogAmpObject(ao *analytics.AmpObject) { *m.count++ }
6869

6970
func initAnalytics(count *int) analytics.PBSAnalyticsModule {
70-
modules := make(enabledAnalytics, 0)
71-
modules = append(modules, &sampleModule{count})
72-
return &modules
71+
instance := &pbsAnalyticsModule{
72+
enabledModules: make([]analyticsModule, 0),
73+
}
74+
instance.enabledModules = append(instance.enabledModules, &sampleModule{count})
75+
return instance
7376
}
7477

7578
func TestNewPBSAnalytics(t *testing.T) {
@@ -79,13 +82,9 @@ func TestNewPBSAnalytics(t *testing.T) {
7982
}
8083
}
8184
defer os.RemoveAll(TEST_DIR)
82-
mod := NewPBSAnalytics(&config.Analytics{File: config.FileLogs{Filename: TEST_DIR + "/test"}})
83-
switch modType := mod.(type) {
84-
case enabledAnalytics:
85-
if len(enabledAnalytics(modType)) != 1 {
86-
t.Fatalf("Failed to add analytics module")
87-
}
88-
default:
89-
t.Fatalf("Failed to initialize analytics module")
90-
}
85+
pbsAnalytics := NewPBSAnalytics(&config.Analytics{File: config.FileLogs{Filename: TEST_DIR + "/test"}})
86+
instance := pbsAnalytics.(*pbsAnalyticsModule)
87+
88+
assert.Equal(t, len(instance.enabledModules), 1)
89+
assert.NotNil(t, instance.enabledModules[0].(analyticsModule))
9190
}

0 commit comments

Comments
 (0)