Signed-off-by: Alexandr Morozov <lk4d4math@gmail.com>
| ... | ... |
@@ -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 |
+} |