@@ -21,7 +21,6 @@ package integration
21
21
import (
22
22
"context"
23
23
"crypto/md5"
24
- "encoding/json"
25
24
"fmt"
26
25
"io/ioutil"
27
26
"os"
@@ -33,145 +32,119 @@ import (
33
32
"time"
34
33
35
34
"k8s.io/minikube/pkg/minikube/bootstrapper/images"
36
- "k8s.io/minikube/pkg/minikube/config"
37
35
"k8s.io/minikube/pkg/minikube/constants"
38
36
"k8s.io/minikube/pkg/minikube/download"
39
37
"k8s.io/minikube/pkg/minikube/localpath"
40
38
)
41
39
42
40
func TestDownloadOnly (t * testing.T ) {
43
- profile := UniqueProfileName ("download" )
44
- ctx , cancel := context .WithTimeout (context .Background (), Minutes (15 ))
45
- defer Cleanup (t , profile , cancel )
41
+ for _ , r := range []string {"crio" , "docker" , "containerd" } {
42
+ t .Run (r , func (t * testing.T ) {
43
+ // Stores the startup run result for later error messages
44
+ var rrr * RunResult
45
+ var err error
46
+
47
+ profile := UniqueProfileName (r )
48
+ ctx , cancel := context .WithTimeout (context .Background (), Minutes (30 ))
49
+ defer Cleanup (t , profile , cancel )
50
+
51
+ versions := []string {
52
+ constants .OldestKubernetesVersion ,
53
+ constants .DefaultKubernetesVersion ,
54
+ constants .NewestKubernetesVersion ,
55
+ }
46
56
47
- // Stores the startup run result for later error messages
48
- var rrr * RunResult
49
- var err error
57
+ for _ , v := range versions {
58
+ t .Run (v , func (t * testing.T ) {
59
+ // Explicitly does not pass StartArgs() to test driver default
60
+ // --force to avoid uid check
61
+ args := append ([]string {"start" , "--download-only" , "-p" , profile , "--force" , "--alsologtostderr" , fmt .Sprintf ("--kubernetes-version=%s" , v ), fmt .Sprintf ("--container-runtime=%s" , r )}, StartArgs ()... )
62
+
63
+ // Preserve the initial run-result for debugging
64
+ if rrr == nil {
65
+ rrr , err = Run (t , exec .CommandContext (ctx , Target (), args ... ))
66
+ } else {
67
+ _ , err = Run (t , exec .CommandContext (ctx , Target (), args ... ))
68
+ }
50
69
51
- t .Run ("group" , func (t * testing.T ) {
52
- versions := []string {
53
- constants .OldestKubernetesVersion ,
54
- constants .DefaultKubernetesVersion ,
55
- constants .NewestKubernetesVersion ,
56
- }
57
- for _ , v := range versions {
58
- t .Run (v , func (t * testing.T ) {
59
- // Explicitly does not pass StartArgs() to test driver default
60
- // --force to avoid uid check
61
- args := append ([]string {"start" , "--download-only" , "-p" , profile , "--force" , "--alsologtostderr" , fmt .Sprintf ("--kubernetes-version=%s" , v )}, StartArgs ()... )
62
-
63
- // Preserve the initial run-result for debugging
64
- if rrr == nil {
65
- rrr , err = Run (t , exec .CommandContext (ctx , Target (), args ... ))
66
- } else {
67
- _ , err = Run (t , exec .CommandContext (ctx , Target (), args ... ))
68
- }
70
+ if err != nil {
71
+ t .Errorf ("%s failed: %v" , args , err )
72
+ }
69
73
70
- if err != nil {
71
- t .Errorf ("%s failed: %v" , args , err )
72
- }
74
+ if download .PreloadExists (v , r ) {
75
+ // Just make sure the tarball path exists
76
+ if _ , err := os .Stat (download .TarballPath (v )); err != nil {
77
+ t .Errorf ("preloaded tarball path doesn't exist: %v" , err )
78
+ }
79
+ return
80
+ }
73
81
74
- if download .PreloadExists (v , "docker" ) {
75
- // Just make sure the tarball path exists
76
- if _ , err := os .Stat (download .TarballPath (v )); err != nil {
77
- t .Errorf ("preloaded tarball path doesn't exist: %v" , err )
82
+ imgs , err := images .Kubeadm ("" , v )
83
+ if err != nil {
84
+ t .Errorf ("kubeadm images: %v %+v" , v , err )
78
85
}
79
- return
80
- }
81
86
82
- imgs , err := images .Kubeadm ("" , v )
83
- if err != nil {
84
- t .Errorf ("kubeadm images: %v %+v" , v , err )
85
- }
87
+ // skip verify for cache images if --driver=none
88
+ if ! NoneDriver () {
89
+ for _ , img := range imgs {
90
+ img = strings .Replace (img , ":" , "_" , 1 ) // for example kube-scheduler:v1.15.2 --> kube-scheduler_v1.15.2
91
+ fp := filepath .Join (localpath .MiniPath (), "cache" , "images" , img )
92
+ _ , err := os .Stat (fp )
93
+ if err != nil {
94
+ t .Errorf ("expected image file exist at %q but got error: %v" , fp , err )
95
+ }
96
+ }
97
+ }
86
98
87
- // skip verify for cache images if --driver=none
88
- if ! NoneDriver () {
89
- for _ , img := range imgs {
90
- img = strings .Replace (img , ":" , "_" , 1 ) // for example kube-scheduler:v1.15.2 --> kube-scheduler_v1.15.2
91
- fp := filepath .Join (localpath .MiniPath (), "cache" , "images" , img )
99
+ // checking binaries downloaded (kubelet,kubeadm)
100
+ for _ , bin := range constants .KubernetesReleaseBinaries {
101
+ fp := filepath .Join (localpath .MiniPath (), "cache" , "linux" , v , bin )
92
102
_ , err := os .Stat (fp )
93
103
if err != nil {
94
- t .Errorf ("expected image file exist at %q but got error: %v" , fp , err )
104
+ t .Errorf ("expected the file for binary exist at %q but got error %v" , fp , err )
95
105
}
96
106
}
97
- }
98
107
99
- // checking binaries downloaded (kubelet,kubeadm)
100
- for _ , bin := range constants .KubernetesReleaseBinaries {
101
- fp := filepath .Join (localpath .MiniPath (), "cache" , "linux" , v , bin )
102
- _ , err := os .Stat (fp )
103
- if err != nil {
108
+ // If we are on darwin/windows, check to make sure OS specific kubectl has been downloaded
109
+ // as well for the `minikube kubectl` command
110
+ if runtime .GOOS == "linux" {
111
+ return
112
+ }
113
+ binary := "kubectl"
114
+ if runtime .GOOS == "windows" {
115
+ binary = "kubectl.exe"
116
+ }
117
+ fp := filepath .Join (localpath .MiniPath (), "cache" , runtime .GOOS , v , binary )
118
+ if _ , err := os .Stat (fp ); err != nil {
104
119
t .Errorf ("expected the file for binary exist at %q but got error %v" , fp , err )
105
120
}
106
- }
121
+ })
122
+ }
107
123
108
- // If we are on darwin/windows, check to make sure OS specific kubectl has been downloaded
109
- // as well for the `minikube kubectl` command
110
- if runtime .GOOS == "linux" {
111
- return
112
- }
113
- binary := "kubectl"
114
- if runtime .GOOS == "windows" {
115
- binary = "kubectl.exe"
124
+ // This is a weird place to test profile deletion, but this test is serial, and we have a profile to delete!
125
+ t .Run ("DeleteAll" , func (t * testing.T ) {
126
+ if ! CanCleanup () {
127
+ t .Skip ("skipping, as cleanup is disabled" )
116
128
}
117
- fp := filepath . Join ( localpath . MiniPath ( ), "cache " , runtime . GOOS , v , binary )
118
- if _ , err := os . Stat ( fp ); err != nil {
119
- t .Errorf ("expected the file for binary exist at %q but got error %v" , fp , err )
129
+ rr , err := Run ( t , exec . CommandContext ( ctx , Target ( ), "delete " , "--all" ) )
130
+ if err != nil {
131
+ t .Errorf ("%s failed: %v" , rr . Args , err )
120
132
}
121
133
})
122
- }
123
-
124
- // Check that the profile we've created has the expected driver
125
- t .Run ("ExpectedDefaultDriver" , func (t * testing.T ) {
126
- if ExpectedDefaultDriver () == "" {
127
- t .Skipf ("--expected-default-driver is unset, skipping test" )
128
- return
129
- }
130
- rr , err := Run (t , exec .CommandContext (ctx , Target (), "profile" , "list" , "--output" , "json" ))
131
- if err != nil {
132
- t .Errorf ("%s failed: %v" , rr .Args , err )
133
- }
134
- var ps map [string ][]config.Profile
135
- err = json .Unmarshal (rr .Stdout .Bytes (), & ps )
136
- if err != nil {
137
- t .Errorf ("%s failed: %v" , rr .Args , err )
138
- }
139
-
140
- got := ""
141
- for _ , p := range ps ["valid" ] {
142
- if p .Name == profile {
143
- got = p .Config .Driver
134
+ // Delete should always succeed, even if previously partially or fully deleted.
135
+ t .Run ("DeleteAlwaysSucceeds" , func (t * testing.T ) {
136
+ if ! CanCleanup () {
137
+ t .Skip ("skipping, as cleanup is disabled" )
144
138
}
145
- }
146
-
147
- if got != ExpectedDefaultDriver () {
148
- t .Errorf ("got driver %q, expected %q\n start output: %s" , got , ExpectedDefaultDriver (), rrr .Output ())
149
- }
150
- })
151
-
152
- // This is a weird place to test profile deletion, but this test is serial, and we have a profile to delete!
153
- t .Run ("DeleteAll" , func (t * testing.T ) {
154
- if ! CanCleanup () {
155
- t .Skip ("skipping, as cleanup is disabled" )
156
- }
157
- rr , err := Run (t , exec .CommandContext (ctx , Target (), "delete" , "--all" ))
158
- if err != nil {
159
- t .Errorf ("%s failed: %v" , rr .Args , err )
160
- }
161
- })
162
- // Delete should always succeed, even if previously partially or fully deleted.
163
- t .Run ("DeleteAlwaysSucceeds" , func (t * testing.T ) {
164
- if ! CanCleanup () {
165
- t .Skip ("skipping, as cleanup is disabled" )
166
- }
167
- rr , err := Run (t , exec .CommandContext (ctx , Target (), "delete" , "-p" , profile ))
168
- if err != nil {
169
- t .Errorf ("%s failed: %v" , rr .Args , err )
170
- }
139
+ rr , err := Run (t , exec .CommandContext (ctx , Target (), "delete" , "-p" , profile ))
140
+ if err != nil {
141
+ t .Errorf ("%s failed: %v" , rr .Args , err )
142
+ }
143
+ })
171
144
})
172
- })
173
-
145
+ }
174
146
}
147
+
175
148
func TestDownloadOnlyDocker (t * testing.T ) {
176
149
if ! runningDockerDriver (StartArgs ()) {
177
150
t .Skip ("this test only runs with the docker driver" )
0 commit comments