Browse code

Test on execdriver dir behavior

Signed-off-by: Alexandr Morozov <lk4d4math@gmail.com>

Alexandr Morozov authored on 2014/09/11 01:43:16
Showing 2 changed files
... ...
@@ -2062,3 +2062,103 @@ func TestRunMountOrdering(t *testing.T) {
2062 2062
 	deleteAllContainers()
2063 2063
 	logDone("run - volumes are mounted in the correct order")
2064 2064
 }
2065
+
2066
+func TestRunExecDir(t *testing.T) {
2067
+	cmd := exec.Command(dockerBinary, "run", "-d", "busybox", "top")
2068
+	out, _, err := runCommandWithOutput(cmd)
2069
+	if err != nil {
2070
+		t.Fatal(err, out)
2071
+	}
2072
+	id := strings.TrimSpace(out)
2073
+	execDir := filepath.Join(execDriverPath, id)
2074
+	stateFile := filepath.Join(execDir, "state.json")
2075
+	contFile := filepath.Join(execDir, "container.json")
2076
+
2077
+	{
2078
+		fi, err := os.Stat(execDir)
2079
+		if err != nil {
2080
+			t.Fatal(err)
2081
+		}
2082
+		if !fi.IsDir() {
2083
+			t.Fatalf("%q must be a directory", execDir)
2084
+		}
2085
+		fi, err = os.Stat(stateFile)
2086
+		if err != nil {
2087
+			t.Fatal(err)
2088
+		}
2089
+		fi, err = os.Stat(contFile)
2090
+		if err != nil {
2091
+			t.Fatal(err)
2092
+		}
2093
+	}
2094
+
2095
+	stopCmd := exec.Command(dockerBinary, "stop", id)
2096
+	out, _, err = runCommandWithOutput(stopCmd)
2097
+	if err != nil {
2098
+		t.Fatal(err, out)
2099
+	}
2100
+	{
2101
+		fi, err := os.Stat(execDir)
2102
+		if err != nil {
2103
+			t.Fatal(err)
2104
+		}
2105
+		if !fi.IsDir() {
2106
+			t.Fatalf("%q must be a directory", execDir)
2107
+		}
2108
+		fi, err = os.Stat(stateFile)
2109
+		if err == nil {
2110
+			t.Fatalf("Statefile %q is exists for stopped container!", stateFile)
2111
+		}
2112
+		if !os.IsNotExist(err) {
2113
+			t.Fatalf("Error should be about non-existing, got %s", err)
2114
+		}
2115
+		fi, err = os.Stat(contFile)
2116
+		if err == nil {
2117
+			t.Fatalf("Container file %q is exists for stopped container!", contFile)
2118
+		}
2119
+		if !os.IsNotExist(err) {
2120
+			t.Fatalf("Error should be about non-existing, got %s", err)
2121
+		}
2122
+	}
2123
+	startCmd := exec.Command(dockerBinary, "start", id)
2124
+	out, _, err = runCommandWithOutput(startCmd)
2125
+	if err != nil {
2126
+		t.Fatal(err, out)
2127
+	}
2128
+	{
2129
+		fi, err := os.Stat(execDir)
2130
+		if err != nil {
2131
+			t.Fatal(err)
2132
+		}
2133
+		if !fi.IsDir() {
2134
+			t.Fatalf("%q must be a directory", execDir)
2135
+		}
2136
+		fi, err = os.Stat(stateFile)
2137
+		if err != nil {
2138
+			t.Fatal(err)
2139
+		}
2140
+		fi, err = os.Stat(contFile)
2141
+		if err != nil {
2142
+			t.Fatal(err)
2143
+		}
2144
+	}
2145
+	rmCmd := exec.Command(dockerBinary, "rm", "-f", id)
2146
+	out, _, err = runCommandWithOutput(rmCmd)
2147
+	if err != nil {
2148
+		t.Fatal(err, out)
2149
+	}
2150
+	{
2151
+		_, err := os.Stat(execDir)
2152
+		if err == nil {
2153
+			t.Fatal(err)
2154
+		}
2155
+		if err == nil {
2156
+			t.Fatalf("Exec directory %q is exists for removed container!", execDir)
2157
+		}
2158
+		if !os.IsNotExist(err) {
2159
+			t.Fatalf("Error should be about non-existing, got %s", err)
2160
+		}
2161
+	}
2162
+
2163
+	logDone("run - check execdriver dir behavior")
2164
+}
... ...
@@ -15,6 +15,8 @@ var registryImageName = "registry"
15 15
 // the private registry to use for tests
16 16
 var privateRegistryURL = "127.0.0.1:5000"
17 17
 
18
+var execDriverPath = "/var/lib/docker/execdriver/native"
19
+
18 20
 var workingDirectory string
19 21
 
20 22
 func init() {