Make Fixtures use pathless apiserver constructor

This is motivated by #162, but also involves changing the
NewFixtures(...) constructor which is the entry point to the whole
framework. We're removing the amount of config
you need to make it work, in line with #163.
This commit is contained in:
Hannes Hörl 2017-12-08 15:34:45 +00:00 committed by Gareth Smith
parent e6b042840b
commit ad04fd8972
7 changed files with 10 additions and 38 deletions

View File

@ -33,34 +33,18 @@ type certDirManager interface {
var apiServerBinPathFinder = DefaultBinPathFinder
// NewAPIServer constructs a new APIServer with whatever api_server binary it can find.
// NewAPIServer creates a new APIServer Fixture Process
func NewAPIServer(config *APIServerConfig) *APIServer {
starter := func(command *exec.Cmd, out, err io.Writer) (SimpleSession, error) {
return gexec.Start(command, out, err)
}
return &APIServer{
Path: apiServerBinPathFinder("kube_apiserver"),
Path: apiServerBinPathFinder("kube-apiserver"),
Config: config,
ProcessStarter: starter,
CertDirManager: &TempDirManager{},
}
}
// NewAPIServerWithBinary creates a new APIServer Fixture Process
func NewAPIServerWithBinary(pathToAPIServer string, config *APIServerConfig) *APIServer {
starter := func(command *exec.Cmd, out, err io.Writer) (SimpleSession, error) {
return gexec.Start(command, out, err)
}
apiserver := &APIServer{
Path: pathToAPIServer,
ProcessStarter: starter,
CertDirManager: NewTempDirManager(),
Config: config,
}
return apiserver
}
// Start starts the apiserver, waits for it to come up, and returns an error, if occoured.

View File

@ -20,7 +20,7 @@ var _ = Describe("NewAPIServer", func() {
APIServerURL: "some APIServer URL",
}
apiServerBinPathFinder = func(name string) string {
Expect(name).To(Equal("kube_apiserver"))
Expect(name).To(Equal("kube-apiserver"))
return "some api server path"
}

View File

@ -32,19 +32,14 @@ var _ = BeforeSuite(func() {
Expect(ok).NotTo(BeFalse())
defaultAssetsDir := filepath.Clean(filepath.Join(filepath.Dir(thisFile), "..", "..", "assets", "bin"))
pathToEtcd := filepath.Join(defaultAssetsDir, "etcd")
pathToAPIServer := filepath.Join(defaultAssetsDir, "kube-apiserver")
if pathToBin, ok := os.LookupEnv("TEST_ETCD_BIN"); ok {
pathToEtcd = pathToBin
}
if pathToBin, ok := os.LookupEnv("TEST_APISERVER_BIN"); ok {
pathToAPIServer = pathToBin
}
Expect(pathToEtcd).NotTo(BeEmpty(), "Path to etcd cannot be empty, set $TEST_ETCD_BIN")
Expect(pathToAPIServer).NotTo(BeEmpty(), "Path to apiserver cannot be empty, set $TEST_APISERVER_BIN")
fixtures, err = test.NewFixtures(pathToEtcd, pathToAPIServer)
fixtures, err = test.NewFixtures(pathToEtcd)
Expect(err).NotTo(HaveOccurred())
err = fixtures.Start()

View File

@ -31,7 +31,7 @@ type FixtureProcess interface {
//go:generate counterfeiter . FixtureProcess
// NewFixtures will give you a Fixtures struct that's properly wired together.
func NewFixtures(pathToEtcd, pathToAPIServer string) (*Fixtures, error) {
func NewFixtures(pathToEtcd string) (*Fixtures, error) {
etcdConfig, err := NewEtcdConfig()
if err != nil {
return nil, err
@ -48,7 +48,7 @@ func NewFixtures(pathToEtcd, pathToAPIServer string) (*Fixtures, error) {
fixtures := &Fixtures{
Etcd: NewEtcdWithBinaryAndConfig(pathToEtcd, etcdConfig),
APIServer: NewAPIServerWithBinary(pathToAPIServer, apiServerConfig),
APIServer: NewAPIServer(apiServerConfig),
}
fixtures.Config = FixturesConfig{

View File

@ -12,10 +12,9 @@ import (
var _ = Describe("Fixtures", func() {
It("can construct a properly wired Fixtures struct", func() {
f, err := NewFixtures("path to etcd", "path to apiserver")
f, err := NewFixtures("path to etcd")
Expect(err).NotTo(HaveOccurred())
Expect(f.Etcd.(*Etcd).Path).To(Equal("path to etcd"))
Expect(f.APIServer.(*APIServer).Path).To(Equal("path to apiserver"))
})
Context("with a properly configured set of Fixtures", func() {

View File

@ -18,8 +18,7 @@ func TestIntegration(t *testing.T) {
}
var (
defaultPathToEtcd string
defaultPathToApiserver string
defaultPathToEtcd string
)
var _ = BeforeSuite(func() {
@ -27,17 +26,12 @@ var _ = BeforeSuite(func() {
Expect(ok).NotTo(BeFalse())
defaultAssetsDir := filepath.Clean(filepath.Join(filepath.Dir(thisFile), "..", "assets", "bin"))
defaultPathToEtcd = filepath.Join(defaultAssetsDir, "etcd")
defaultPathToApiserver = filepath.Join(defaultAssetsDir, "kube-apiserver")
if pathToBin, ok := os.LookupEnv("TEST_ETCD_BIN"); ok {
defaultPathToEtcd = pathToBin
}
if pathToBin, ok := os.LookupEnv("TEST_APISERVER_BIN"); ok {
defaultPathToApiserver = pathToBin
}
Expect(defaultPathToEtcd).NotTo(BeEmpty(), "Path to etcd cannot be empty, set $TEST_ETCD_BIN")
Expect(defaultPathToApiserver).NotTo(BeEmpty(), "Path to apiserver cannot be empty, set $TEST_APISERVER_BIN")
})
var _ = AfterSuite(func() {

View File

@ -17,7 +17,7 @@ var _ = Describe("The Testing Framework", func() {
var err error
var fixtures *test.Fixtures
fixtures, err = test.NewFixtures(defaultPathToEtcd, defaultPathToApiserver)
fixtures, err = test.NewFixtures(defaultPathToEtcd)
Expect(err).NotTo(HaveOccurred())
By("Starting all the fixture processes")
@ -63,7 +63,7 @@ var _ = Describe("The Testing Framework", func() {
Measure("It should be fast to bring up and tear down the fixtures", func(b Benchmarker) {
b.Time("lifecycle", func() {
fixtures, err := test.NewFixtures(defaultPathToEtcd, defaultPathToApiserver)
fixtures, err := test.NewFixtures(defaultPathToEtcd)
Expect(err).NotTo(HaveOccurred())
fixtures.Start()