Browse Source

RegistryV2 datastructure for tests

Signed-off-by: Alexander Morozov <lk4d4@docker.com>
Alexander Morozov 10 years ago
parent
commit
2fc2862a73
1 changed files with 60 additions and 0 deletions
  1. 60 0
      integration-cli/registry.go

+ 60 - 0
integration-cli/registry.go

@@ -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)
+}