// Ensure the configuration can be parsed. func TestConfig_Parse_EnvOverride(t *testing.T) { // Parse configuration. var c run.Config if _, err := toml.Decode(` [meta] dir = "/tmp/meta" [data] dir = "/tmp/data" [cluster] [admin] bind-address = ":8083" [http] bind-address = ":8087" [[graphite]] protocol = "udp" [[graphite]] protocol = "tcp" [[collectd]] bind-address = ":1000" [[collectd]] bind-address = ":1010" [[opentsdb]] bind-address = ":2000" [[opentsdb]] bind-address = ":2010" [[udp]] bind-address = ":4444" [[udp]] [monitoring] enabled = true [continuous_queries] enabled = true `, &c); err != nil { t.Fatal(err) } if err := os.Setenv("INFLUXDB_UDP_BIND_ADDRESS", ":1234"); err != nil { t.Fatalf("failed to set env var: %v", err) } if err := os.Setenv("INFLUXDB_UDP_0_BIND_ADDRESS", ":5555"); err != nil { t.Fatalf("failed to set env var: %v", err) } if err := os.Setenv("INFLUXDB_GRAPHITE_1_PROTOCOL", "udp"); err != nil { t.Fatalf("failed to set env var: %v", err) } if err := os.Setenv("INFLUXDB_COLLECTD_1_BIND_ADDRESS", ":1020"); err != nil { t.Fatalf("failed to set env var: %v", err) } if err := os.Setenv("INFLUXDB_OPENTSDB_0_BIND_ADDRESS", ":2020"); err != nil { t.Fatalf("failed to set env var: %v", err) } if err := c.ApplyEnvOverrides(); err != nil { t.Fatalf("failed to apply env overrides: %v", err) } if c.UDPInputs[0].BindAddress != ":5555" { t.Fatalf("unexpected udp bind address: %s", c.UDPInputs[0].BindAddress) } if c.UDPInputs[1].BindAddress != ":1234" { t.Fatalf("unexpected udp bind address: %s", c.UDPInputs[1].BindAddress) } if c.GraphiteInputs[1].Protocol != "udp" { t.Fatalf("unexpected graphite protocol: %s", c.GraphiteInputs[1].Protocol) } if c.CollectdInputs[1].BindAddress != ":1020" { t.Fatalf("unexpected collectd bind address: %s", c.CollectdInputs[1].BindAddress) } if c.OpenTSDBInputs[0].BindAddress != ":2020" { t.Fatalf("unexpected opentsdb bind address: %s", c.OpenTSDBInputs[0].BindAddress) } }