RegistryV2 datastructure for tests

Signed-off-by: Alexander Morozov <lk4d4@docker.com>
This commit is contained in:
Alexander Morozov 2015-01-12 13:26:49 -08:00 committed by Derek McGowan
parent ef96c28754
commit 2fc2862a73
1 changed files with 60 additions and 0 deletions

View File

@ -0,0 +1,60 @@
package main
import (
"fmt"
"io/ioutil"
"os"
"os/exec"
"path/filepath"
"testing"
)
const v2binary = "registry-v2"
type testRegistryV2 struct {
URL string
cmd *exec.Cmd
dir string
}
func newTestRegistryV2(t *testing.T) (*testRegistryV2, error) {
template := `version: 0.1
loglevel: debug
storage:
filesystem:
rootdirectory: %s
http:
addr: :%s`
tmp, err := ioutil.TempDir("", "registry-test-")
if err != nil {
return nil, err
}
confPath := filepath.Join(tmp, "config.yaml")
config, err := os.Create(confPath)
if err != nil {
return nil, err
}
if _, err := fmt.Fprintf(config, template, tmp, "5000"); err != nil {
os.RemoveAll(tmp)
return nil, err
}
cmd := exec.Command(v2binary, confPath)
if err := cmd.Start(); err != nil {
os.RemoveAll(tmp)
if os.IsNotExist(err) {
t.Skip()
}
return nil, err
}
return &testRegistryV2{
cmd: cmd,
dir: tmp,
URL: "localhost:5000",
}, nil
}
func (r *testRegistryV2) Close() {
r.cmd.Process.Kill()
os.RemoveAll(r.dir)
}