Skip to content

Commit 487c7e8

Browse files
committed
Use os.Getenv instead of viper.GetStringSlice to parse string array
1 parent 0da7ded commit 487c7e8

File tree

2 files changed

+55
-4
lines changed

2 files changed

+55
-4
lines changed

cmd/kafka-proxy/server.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,10 @@ var Server = &cobra.Command{
5151
if err := c.InitSASLCredentials(); err != nil {
5252
return err
5353
}
54-
if err := c.InitBootstrapServers(getOrStringSlice(bootstrapServersMapping, "bootstrap-server-mapping")); err != nil {
54+
if err := c.InitBootstrapServers(getOrEnvStringSlice(bootstrapServersMapping, "BOOTSTRAP_SERVER_MAPPING")); err != nil {
5555
return err
5656
}
57-
if err := c.InitExternalServers(getOrStringSlice(externalServersMapping, "external-server-mapping")); err != nil {
57+
if err := c.InitExternalServers(getOrEnvStringSlice(externalServersMapping, "EXTERNAL_SERVER_MAPPING")); err != nil {
5858
return err
5959
}
6060
if err := c.Validate(); err != nil {
@@ -65,11 +65,11 @@ var Server = &cobra.Command{
6565
Run: Run,
6666
}
6767

68-
func getOrStringSlice(value []string, key string) []string {
68+
func getOrEnvStringSlice(value []string, envKey string) []string {
6969
if len(bootstrapServersMapping) != 0 {
7070
return value
7171
}
72-
return viper.GetStringSlice(key)
72+
return strings.Fields(os.Getenv(envKey))
7373
}
7474

7575
func init() {

cmd/kafka-proxy/server_test.go

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ func setupBootstrapServersMappingTest() {
1212
c = new(config.Config)
1313
initFlags()
1414
os.Setenv("BOOTSTRAP_SERVER_MAPPING", "")
15+
os.Setenv("EXTERNAL_SERVER_MAPPING", "")
1516
}
1617

1718
func TestBootstrapServersMappingFromFlags(t *testing.T) {
@@ -74,3 +75,53 @@ func TestEmptyBootstrapServersMapping(t *testing.T) {
7475
a := assert.New(t)
7576
a.Error(err, "list of bootstrap-server-mapping must not be empty")
7677
}
78+
79+
func TestBootstrapServersMappingFromEnvWithWhiteSpaces(t *testing.T) {
80+
setupBootstrapServersMappingTest()
81+
82+
os.Setenv("BOOTSTRAP_SERVER_MAPPING", " 192.168.99.100:32404,0.0.0.0:32404 kafka-5.example.com:9092,0.0.0.0:32405,kafka-5.grepplabs.com:9092 ")
83+
84+
var args []string
85+
Server.ParseFlags(args)
86+
err := Server.PreRunE(nil, args)
87+
a := assert.New(t)
88+
a.Nil(err)
89+
a.Len(c.Proxy.BootstrapServers, 2)
90+
91+
a.Equal(c.Proxy.BootstrapServers[0].BrokerAddress, "192.168.99.100:32404")
92+
a.Equal(c.Proxy.BootstrapServers[0].ListenerAddress, "0.0.0.0:32404")
93+
a.Equal(c.Proxy.BootstrapServers[0].AdvertisedAddress, "0.0.0.0:32404")
94+
95+
a.Equal(c.Proxy.BootstrapServers[1].BrokerAddress, "kafka-5.example.com:9092")
96+
a.Equal(c.Proxy.BootstrapServers[1].ListenerAddress, "0.0.0.0:32405")
97+
a.Equal(c.Proxy.BootstrapServers[1].AdvertisedAddress, "kafka-5.grepplabs.com:9092")
98+
99+
}
100+
101+
func TestExternalServersMappingFromEnv(t *testing.T) {
102+
setupBootstrapServersMappingTest()
103+
104+
os.Setenv("BOOTSTRAP_SERVER_MAPPING", " 192.168.99.100:32401,0.0.0.0:32401")
105+
os.Setenv("EXTERNAL_SERVER_MAPPING", " 192.168.99.100:32404,0.0.0.0:32404 kafka-5.example.com:9092,0.0.0.0:32405,kafka-5.grepplabs.com:9092")
106+
107+
var args []string
108+
Server.ParseFlags(args)
109+
err := Server.PreRunE(nil, args)
110+
a := assert.New(t)
111+
a.Nil(err)
112+
a.Len(c.Proxy.BootstrapServers, 1)
113+
a.Len(c.Proxy.ExternalServers, 2)
114+
115+
a.Equal(c.Proxy.BootstrapServers[0].BrokerAddress, "192.168.99.100:32401")
116+
a.Equal(c.Proxy.BootstrapServers[0].ListenerAddress, "0.0.0.0:32401")
117+
a.Equal(c.Proxy.BootstrapServers[0].AdvertisedAddress, "0.0.0.0:32401")
118+
119+
a.Equal(c.Proxy.ExternalServers[0].BrokerAddress, "192.168.99.100:32404")
120+
a.Equal(c.Proxy.ExternalServers[0].ListenerAddress, "0.0.0.0:32404")
121+
a.Equal(c.Proxy.ExternalServers[0].AdvertisedAddress, "0.0.0.0:32404")
122+
123+
a.Equal(c.Proxy.ExternalServers[1].BrokerAddress, "kafka-5.example.com:9092")
124+
a.Equal(c.Proxy.ExternalServers[1].ListenerAddress, "0.0.0.0:32405")
125+
a.Equal(c.Proxy.ExternalServers[1].AdvertisedAddress, "kafka-5.grepplabs.com:9092")
126+
127+
}

0 commit comments

Comments
 (0)