Skip to content

Commit

Permalink
Initialize prefix remapping map to avoid panic
Browse files Browse the repository at this point in the history
A `nil` `target` passed to `AsOptionalMap` causes a panic.

Signed-off-by: Pierangelo Di Pilato <[email protected]>
  • Loading branch information
pierDipi committed Mar 9, 2022
1 parent d2cdc68 commit acd73d7
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 4 deletions.
9 changes: 5 additions & 4 deletions leaderelection/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -101,10 +101,11 @@ func (c *Config) GetComponentConfig(name string) ComponentConfig {

func defaultConfig() *Config {
return &Config{
Buckets: 1,
LeaseDuration: 60 * time.Second,
RenewDeadline: 40 * time.Second,
RetryPeriod: 10 * time.Second,
Buckets: 1,
LeaseDuration: 60 * time.Second,
RenewDeadline: 40 * time.Second,
RetryPeriod: 10 * time.Second,
LeaseNamesPrefixMapping: make(map[string]string, 0),
}
}

Expand Down
52 changes: 52 additions & 0 deletions leaderelection/config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import (

"github.com/google/go-cmp/cmp"
corev1 "k8s.io/api/core/v1"

"knative.dev/pkg/kmap"
)

Expand Down Expand Up @@ -168,6 +169,57 @@ func TestNewConfigMapFromData(t *testing.T) {
}
}

func TestNewConfigFromMap(t *testing.T) {

tt := []struct {
name string
data map[string]string
want Config
wantErr bool
}{{
name: "ok config",
data: map[string]string{
"lease-duration": "15s",
"buckets": "5",
},
want: Config{
Buckets: 5,
LeaseDuration: 15 * time.Second,
RenewDeadline: 40 * time.Second,
RetryPeriod: 10 * time.Second,
LeaseNamesPrefixMapping: map[string]string{},
},
}, {
name: "ok config, prefix map",
data: map[string]string{
"lease-duration": "15s",
"buckets": "5",
"map-lease-prefix.reconciler": "reconciler1",
},
want: Config{
Buckets: 5,
LeaseDuration: 15 * time.Second,
RenewDeadline: 40 * time.Second,
RetryPeriod: 10 * time.Second,
LeaseNamesPrefixMapping: map[string]string{
"reconciler": "reconciler1",
},
},
}}

for _, tc := range tt {
t.Run(tc.name, func(t *testing.T) {
c, err := NewConfigFromMap(tc.data)
if tc.wantErr != (err != nil) {
t.Fatalf("want err %v got %v", tc.wantErr, err)
}
if diff := cmp.Diff(tc.want, *c); diff != "" {
t.Fatal("(-want, +got)", diff)
}
})
}
}

func TestGetComponentConfig(t *testing.T) {
const expectedName = "the-component"
cases := []struct {
Expand Down

0 comments on commit acd73d7

Please sign in to comment.