From 906c76bb548be6ae4dbd578ae258735fc2c107de Mon Sep 17 00:00:00 2001 From: Ryan Uber Date: Wed, 9 Sep 2015 22:11:48 -0700 Subject: [PATCH] agent: config loading tests --- command/agent/config_test.go | 139 +++++++++++++++++++++++++++++++++++ 1 file changed, 139 insertions(+) diff --git a/command/agent/config_test.go b/command/agent/config_test.go index f58abcf4f..b7cca140b 100644 --- a/command/agent/config_test.go +++ b/command/agent/config_test.go @@ -1,6 +1,9 @@ package agent import ( + "io/ioutil" + "os" + "path/filepath" "reflect" "testing" ) @@ -43,3 +46,139 @@ func TestConfig_Merge(t *testing.T) { t.Fatalf("bad: %#v", result) } } + +func TestConfig_LoadConfigFile(t *testing.T) { + // Fails if the file doesn't exist + if _, err := LoadConfigFile("/unicorns/leprechauns"); err == nil { + t.Fatalf("expected error, got nothing") + } + + fh, err := ioutil.TempFile("", "nomad") + if err != nil { + t.Fatalf("err: %s", err) + } + defer os.RemoveAll(fh.Name()) + + // Invalid content returns error + if _, err := fh.WriteString("nope"); err != nil { + t.Fatalf("err: %s", err) + } + if _, err := LoadConfigFile(fh.Name()); err == nil { + t.Fatalf("expected load error, got nothing") + } + + // Valid content parses successfully + if err := fh.Truncate(0); err != nil { + t.Fatalf("err: %s", err) + } + if _, err := fh.Seek(0, 0); err != nil { + t.Fatalf("err: %s", err) + } + if _, err := fh.WriteString(`{"region":"west"}`); err != nil { + t.Fatalf("err: %s", err) + } + + config, err := LoadConfigFile(fh.Name()) + if err != nil { + t.Fatalf("err: %s", err) + } + if config.Region != "west" { + t.Fatalf("bad region: %q", config.Region) + } +} + +func TestConfig_LoadConfigDir(t *testing.T) { + // Fails if the dir doesn't exist. + if _, err := LoadConfigDir("/unicorns/leprechauns"); err == nil { + t.Fatalf("expected error, got nothing") + } + + dir, err := ioutil.TempDir("", "nomad") + if err != nil { + t.Fatalf("err: %s", err) + } + defer os.RemoveAll(dir) + + file1 := filepath.Join(dir, "conf1.hcl") + err = ioutil.WriteFile(file1, []byte(`{"region":"west"}`), 0600) + if err != nil { + t.Fatalf("err: %s", err) + } + + file2 := filepath.Join(dir, "conf2.hcl") + err = ioutil.WriteFile(file2, []byte(`{"datacenter":"sfo"}`), 0600) + if err != nil { + t.Fatalf("err: %s", err) + } + + file3 := filepath.Join(dir, "conf3.hcl") + err = ioutil.WriteFile(file3, []byte(`nope`), 0600) + if err != nil { + t.Fatalf("err: %s", err) + } + + // Fails if we have a bad config file + if _, err := LoadConfigDir(dir); err == nil { + t.Fatalf("expected load error, got nothing") + } + + if err := os.Remove(file3); err != nil { + t.Fatalf("err: %s", err) + } + + // Works if configs are valid + config, err := LoadConfigDir(dir) + if err != nil { + t.Fatalf("err: %s", err) + } + if config.Region != "west" || config.Datacenter != "sfo" { + t.Fatalf("bad: %#v", config) + } +} + +func TestConfig_LoadConfig(t *testing.T) { + // Fails if the target doesn't exist + if _, err := LoadConfig("/unicorns/leprechauns"); err == nil { + t.Fatalf("expected error, got nothing") + } + + fh, err := ioutil.TempFile("", "nomad") + if err != nil { + t.Fatalf("err: %s", err) + } + defer os.Remove(fh.Name()) + + if _, err := fh.WriteString(`{"region":"west"}`); err != nil { + t.Fatalf("err: %s", err) + } + + // Works on a config file + config, err := LoadConfig(fh.Name()) + if err != nil { + t.Fatalf("err: %s", err) + } + if config.Region != "west" { + t.Fatalf("bad: %#v", config) + } + + dir, err := ioutil.TempDir("", "nomad") + if err != nil { + t.Fatalf("err: %s", err) + } + defer os.RemoveAll(dir) + + file1 := filepath.Join(dir, "config1.hcl") + err = ioutil.WriteFile(file1, []byte(`{"datacenter":"sfo"}`), 0600) + if err != nil { + t.Fatalf("err: %s", err) + } + + // Works on config dir + config, err = LoadConfig(dir) + if err != nil { + t.Fatalf("err: %s", err) + } + if config.Datacenter != "sfo" { + t.Fatalf("bad: %#v", config) + } +}