LEFT | RIGHT |
1 // Copyright 2013 Canonical Ltd. | 1 // Copyright 2013 Canonical Ltd. |
2 // Licensed under the AGPLv3, see LICENCE file for details. | 2 // Licensed under the AGPLv3, see LICENCE file for details. |
3 | 3 |
4 package testing | 4 package testing |
5 | 5 |
6 import ( | 6 import ( |
7 "bytes" | 7 "bytes" |
8 "os" | 8 "os" |
9 "path" | 9 "path" |
10 "path/filepath" | 10 "path/filepath" |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
105 } | 105 } |
106 url, err := stor.URL(name) | 106 url, err := stor.URL(name) |
107 if err != nil { | 107 if err != nil { |
108 return nil, err | 108 return nil, err |
109 } | 109 } |
110 return &coretools.Tools{URL: url, Version: vers, Size: size, SHA256: che
cksum}, nil | 110 return &coretools.Tools{URL: url, Version: vers, Size: size, SHA256: che
cksum}, nil |
111 } | 111 } |
112 | 112 |
113 // UploadFakeToolsVersions puts fake tools in the supplied storage for the suppl
ied versions. | 113 // UploadFakeToolsVersions puts fake tools in the supplied storage for the suppl
ied versions. |
114 func UploadFakeToolsVersions(stor storage.Storage, versions ...version.Binary) (
[]*coretools.Tools, error) { | 114 func UploadFakeToolsVersions(stor storage.Storage, versions ...version.Binary) (
[]*coretools.Tools, error) { |
| 115 // Leave existing tools alone. |
| 116 existingTools := make(map[version.Binary]*coretools.Tools) |
| 117 existing, _ := envtools.ReadList(stor, 1, -1) |
| 118 for _, tools := range existing { |
| 119 existingTools[tools.Version] = tools |
| 120 } |
115 var agentTools coretools.List = make(coretools.List, len(versions)) | 121 var agentTools coretools.List = make(coretools.List, len(versions)) |
116 for i, version := range versions { | 122 for i, version := range versions { |
117 » » t, err := uploadFakeToolsVersion(stor, version) | 123 » » if tools, ok := existingTools[version]; ok { |
118 » » if err != nil { | 124 » » » agentTools[i] = tools |
119 » » » return nil, err | 125 » » } else { |
| 126 » » » t, err := uploadFakeToolsVersion(stor, version) |
| 127 » » » if err != nil { |
| 128 » » » » return nil, err |
| 129 » » » } |
| 130 » » » agentTools[i] = t |
120 } | 131 } |
121 » » agentTools[i] = t | 132 » } |
122 » } | 133 » if err := envtools.MergeAndWriteMetadata(stor, agentTools); err != nil { |
123 » err := envtools.MergeAndWriteMetadata(stor, agentTools, envtools.Resolve
) | |
124 » if err != nil { | |
125 return nil, err | 134 return nil, err |
126 } | 135 } |
127 return agentTools, nil | 136 return agentTools, nil |
128 } | 137 } |
129 | 138 |
130 // AssertUploadFakeToolsVersions puts fake tools in the supplied storage for the
supplied versions. | 139 // AssertUploadFakeToolsVersions puts fake tools in the supplied storage for the
supplied versions. |
131 func AssertUploadFakeToolsVersions(c *gc.C, stor storage.Storage, versions ...ve
rsion.Binary) []*coretools.Tools { | 140 func AssertUploadFakeToolsVersions(c *gc.C, stor storage.Storage, versions ...ve
rsion.Binary) []*coretools.Tools { |
132 agentTools, err := UploadFakeToolsVersions(stor, versions...) | 141 agentTools, err := UploadFakeToolsVersions(stor, versions...) |
133 c.Assert(err, gc.IsNil) | 142 c.Assert(err, gc.IsNil) |
134 return agentTools | 143 return agentTools |
135 } | 144 } |
136 | 145 |
137 // MustUploadFakeToolsVersions acts as UploadFakeToolsVersions, but panics on fa
ilure. | 146 // MustUploadFakeToolsVersions acts as UploadFakeToolsVersions, but panics on fa
ilure. |
138 func MustUploadFakeToolsVersions(stor storage.Storage, versions ...version.Binar
y) []*coretools.Tools { | 147 func MustUploadFakeToolsVersions(stor storage.Storage, versions ...version.Binar
y) []*coretools.Tools { |
139 var agentTools coretools.List = make(coretools.List, len(versions)) | 148 var agentTools coretools.List = make(coretools.List, len(versions)) |
140 for i, version := range versions { | 149 for i, version := range versions { |
141 t, err := uploadFakeToolsVersion(stor, version) | 150 t, err := uploadFakeToolsVersion(stor, version) |
142 if err != nil { | 151 if err != nil { |
143 panic(err) | 152 panic(err) |
144 } | 153 } |
145 agentTools[i] = t | 154 agentTools[i] = t |
146 } | 155 } |
147 » err := envtools.MergeAndWriteMetadata(stor, agentTools, envtools.Resolve
) | 156 » err := envtools.MergeAndWriteMetadata(stor, agentTools) |
148 if err != nil { | 157 if err != nil { |
149 panic(err) | 158 panic(err) |
150 } | 159 } |
151 return agentTools | 160 return agentTools |
152 } | 161 } |
153 | 162 |
154 func uploadFakeTools(stor storage.Storage) error { | 163 func uploadFakeTools(stor storage.Storage) error { |
155 versions := []version.Binary{version.Current} | 164 versions := []version.Binary{version.Current} |
156 toolsVersion := version.Current | 165 toolsVersion := version.Current |
157 if toolsVersion.Series != config.DefaultSeries { | 166 if toolsVersion.Series != config.DefaultSeries { |
(...skipping 17 matching lines...) Expand all Loading... |
175 | 184 |
176 // MustUploadFakeTools acts as UploadFakeTools, but panics on failure. | 185 // MustUploadFakeTools acts as UploadFakeTools, but panics on failure. |
177 func MustUploadFakeTools(stor storage.Storage) { | 186 func MustUploadFakeTools(stor storage.Storage) { |
178 if err := uploadFakeTools(stor); err != nil { | 187 if err := uploadFakeTools(stor); err != nil { |
179 panic(err) | 188 panic(err) |
180 } | 189 } |
181 } | 190 } |
182 | 191 |
183 // RemoveFakeTools deletes the fake tools from the supplied storage. | 192 // RemoveFakeTools deletes the fake tools from the supplied storage. |
184 func RemoveFakeTools(c *gc.C, stor storage.Storage) { | 193 func RemoveFakeTools(c *gc.C, stor storage.Storage) { |
| 194 c.Logf("removing fake tools") |
185 toolsVersion := version.Current | 195 toolsVersion := version.Current |
186 name := envtools.StorageName(toolsVersion) | 196 name := envtools.StorageName(toolsVersion) |
187 err := stor.Remove(name) | 197 err := stor.Remove(name) |
188 c.Check(err, gc.IsNil) | 198 c.Check(err, gc.IsNil) |
189 if version.Current.Series != config.DefaultSeries { | 199 if version.Current.Series != config.DefaultSeries { |
190 toolsVersion.Series = config.DefaultSeries | 200 toolsVersion.Series = config.DefaultSeries |
191 name := envtools.StorageName(toolsVersion) | 201 name := envtools.StorageName(toolsVersion) |
192 err := stor.Remove(name) | 202 err := stor.Remove(name) |
193 c.Check(err, gc.IsNil) | 203 c.Check(err, gc.IsNil) |
194 } | 204 } |
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
436 func SetSSLHostnameVerification(c *gc.C, st *state.State, SSLHostnameVerificatio
n bool) { | 446 func SetSSLHostnameVerification(c *gc.C, st *state.State, SSLHostnameVerificatio
n bool) { |
437 envConfig, err := st.EnvironConfig() | 447 envConfig, err := st.EnvironConfig() |
438 c.Assert(err, gc.IsNil) | 448 c.Assert(err, gc.IsNil) |
439 attrs := envConfig.AllAttrs() | 449 attrs := envConfig.AllAttrs() |
440 attrs["ssl-hostname-verification"] = SSLHostnameVerification | 450 attrs["ssl-hostname-verification"] = SSLHostnameVerification |
441 newConfig, err := config.New(config.NoDefaults, attrs) | 451 newConfig, err := config.New(config.NoDefaults, attrs) |
442 c.Assert(err, gc.IsNil) | 452 c.Assert(err, gc.IsNil) |
443 err = st.SetEnvironConfig(newConfig) | 453 err = st.SetEnvironConfig(newConfig) |
444 c.Assert(err, gc.IsNil) | 454 c.Assert(err, gc.IsNil) |
445 } | 455 } |
LEFT | RIGHT |