From 6de993b4688a94ff7e6ff822a43b9bb3e54a8595 Mon Sep 17 00:00:00 2001 From: Anthony Romano Date: Wed, 10 Aug 2016 09:44:50 -0700 Subject: [PATCH 1/2] embed: load config defaults before loading config from file --- embed/config.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/embed/config.go b/embed/config.go index 5e51c314b..cb1ff1147 100644 --- a/embed/config.go +++ b/embed/config.go @@ -160,7 +160,7 @@ func NewConfig() *Config { } func ConfigFromFile(path string) (*Config, error) { - cfg := &configYAML{} + cfg := &configYAML{Config: *NewConfig()} if err := cfg.configFromFile(path); err != nil { return nil, err } From eb97aba5815d9641015db3f0eabeb9df236b0ea1 Mon Sep 17 00:00:00 2001 From: Anthony Romano Date: Wed, 10 Aug 2016 09:45:17 -0700 Subject: [PATCH 2/2] e2e: test etcd boots with example config file --- e2e/etcd_config_test.go | 34 ++++++++++++++++++++++++++++++++++ e2e/etcd_test.go | 10 +++++++--- 2 files changed, 41 insertions(+), 3 deletions(-) create mode 100644 e2e/etcd_config_test.go diff --git a/e2e/etcd_config_test.go b/e2e/etcd_config_test.go new file mode 100644 index 000000000..9e308c3bc --- /dev/null +++ b/e2e/etcd_config_test.go @@ -0,0 +1,34 @@ +// Copyright 2016 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package e2e + +import ( + "testing" +) + +const exampleConfigFile = "../etcd.conf.yml.sample" + +func TestEtcdExampleConfig(t *testing.T) { + proc, err := spawnCmd([]string{binDir + "/etcd", "--config-file", exampleConfigFile}) + if err != nil { + t.Fatal(err) + } + if err = waitReadyExpectProc(proc, false); err != nil { + t.Fatal(err) + } + if err = proc.Stop(); err != nil { + t.Fatal(err) + } +} diff --git a/e2e/etcd_test.go b/e2e/etcd_test.go index 574a0a6bd..2570d87eb 100644 --- a/e2e/etcd_test.go +++ b/e2e/etcd_test.go @@ -446,8 +446,13 @@ func (ep *etcdProcess) Stop() error { } func (ep *etcdProcess) waitReady() error { + defer close(ep.donec) + return waitReadyExpectProc(ep.proc, ep.cfg.isProxy) +} + +func waitReadyExpectProc(exproc *expect.ExpectProcess, isProxy bool) error { readyStrs := []string{"enabled capabilities for version", "published"} - if ep.cfg.isProxy { + if isProxy { readyStrs = []string{"httpproxy: endpoints found"} } c := 0 @@ -460,8 +465,7 @@ func (ep *etcdProcess) waitReady() error { } return c == len(readyStrs) } - _, err := ep.proc.ExpectFunc(matchSet) - close(ep.donec) + _, err := exproc.ExpectFunc(matchSet) return err }