Left: | ||
Right: |
LEFT | RIGHT |
---|---|
1 // Copyright 2012, 2013 Canonical Ltd. | 1 // Copyright 2012, 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 openstack | 4 package openstack |
5 | 5 |
6 import ( | 6 import ( |
7 "bytes" | |
8 "fmt" | 7 "fmt" |
9 gc "launchpad.net/gocheck" | |
10 "launchpad.net/goyaml" | |
11 "launchpad.net/juju-core/environs" | |
12 "launchpad.net/juju-core/environs/config" | |
13 "launchpad.net/loggo" | |
thumper
2013/07/22 04:43:02
header grouping
wallyworld
2013/07/22 05:41:12
Done.
| |
14 "os" | 8 "os" |
15 "strings" | 9 "strings" |
16 "time" | 10 "time" |
11 | |
12 gc "launchpad.net/gocheck" | |
13 "launchpad.net/goyaml" | |
14 "launchpad.net/loggo" | |
15 | |
16 "launchpad.net/juju-core/environs" | |
17 "launchpad.net/juju-core/environs/config" | |
18 "launchpad.net/juju-core/testing" | |
17 ) | 19 ) |
18 | 20 |
19 type ConfigSuite struct { | 21 type ConfigSuite struct { |
20 savedVars map[string]string | 22 savedVars map[string]string |
21 » oldJujuHome string | 23 » oldJujuHome *testing.FakeHome |
22 } | 24 } |
23 | 25 |
24 // Ensure any environment variables a user may have set locally are reset. | 26 // Ensure any environment variables a user may have set locally are reset. |
25 var envVars = map[string]string{ | 27 var envVars = map[string]string{ |
26 "AWS_SECRET_ACCESS_KEY": "", | 28 "AWS_SECRET_ACCESS_KEY": "", |
27 "EC2_SECRET_KEYS": "", | 29 "EC2_SECRET_KEYS": "", |
28 "NOVA_API_KEY": "", | 30 "NOVA_API_KEY": "", |
29 "NOVA_PASSWORD": "", | 31 "NOVA_PASSWORD": "", |
30 "NOVA_PROJECT_ID": "", | 32 "NOVA_PROJECT_ID": "", |
31 "NOVA_REGION": "", | 33 "NOVA_REGION": "", |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
169 } | 171 } |
170 c.Assert(ecfg.useFloatingIP(), gc.Equals, t.useFloatingIP) | 172 c.Assert(ecfg.useFloatingIP(), gc.Equals, t.useFloatingIP) |
171 for name, expect := range t.expect { | 173 for name, expect := range t.expect { |
172 actual, found := ecfg.UnknownAttrs()[name] | 174 actual, found := ecfg.UnknownAttrs()[name] |
173 c.Check(found, gc.Equals, true) | 175 c.Check(found, gc.Equals, true) |
174 c.Check(actual, gc.Equals, expect) | 176 c.Check(actual, gc.Equals, expect) |
175 } | 177 } |
176 } | 178 } |
177 | 179 |
178 func (s *ConfigSuite) SetUpTest(c *gc.C) { | 180 func (s *ConfigSuite) SetUpTest(c *gc.C) { |
179 » s.oldJujuHome = config.SetJujuHome(c.MkDir()) | 181 » s.oldJujuHome = testing.MakeEmptyFakeHome(c) |
180 s.savedVars = make(map[string]string) | 182 s.savedVars = make(map[string]string) |
181 for v, val := range envVars { | 183 for v, val := range envVars { |
182 s.savedVars[v] = os.Getenv(v) | 184 s.savedVars[v] = os.Getenv(v) |
183 os.Setenv(v, val) | 185 os.Setenv(v, val) |
184 } | 186 } |
185 } | 187 } |
186 | 188 |
187 func (s *ConfigSuite) TearDownTest(c *gc.C) { | 189 func (s *ConfigSuite) TearDownTest(c *gc.C) { |
188 for k, v := range s.savedVars { | 190 for k, v := range s.savedVars { |
189 os.Setenv(k, v) | 191 os.Setenv(k, v) |
190 } | 192 } |
191 » config.SetJujuHome(s.oldJujuHome) | 193 » s.oldJujuHome.Restore() |
192 } | 194 } |
193 | 195 |
194 var configTests = []configTest{ | 196 var configTests = []configTest{ |
195 { | 197 { |
196 summary: "setting region", | 198 summary: "setting region", |
197 config: attrs{ | 199 config: attrs{ |
198 "region": "testreg", | 200 "region": "testreg", |
199 }, | 201 }, |
200 region: "testreg", | 202 region: "testreg", |
201 }, { | 203 }, { |
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
441 | 443 |
442 func (s *ConfigSuite) setupEnvCredentials() { | 444 func (s *ConfigSuite) setupEnvCredentials() { |
443 os.Setenv("OS_USERNAME", "user") | 445 os.Setenv("OS_USERNAME", "user") |
444 os.Setenv("OS_PASSWORD", "secret") | 446 os.Setenv("OS_PASSWORD", "secret") |
445 os.Setenv("OS_AUTH_URL", "http://auth") | 447 os.Setenv("OS_AUTH_URL", "http://auth") |
446 os.Setenv("OS_TENANT_NAME", "sometenant") | 448 os.Setenv("OS_TENANT_NAME", "sometenant") |
447 os.Setenv("OS_REGION_NAME", "region") | 449 os.Setenv("OS_REGION_NAME", "region") |
448 } | 450 } |
449 | 451 |
450 type ConfigDeprecationSuite struct { | 452 type ConfigDeprecationSuite struct { |
451 » oldJujuHome string | 453 » ConfigSuite |
452 » writer *testWriter | 454 » writer *testWriter |
453 » oldWriter loggo.Writer | 455 » oldWriter loggo.Writer |
454 » oldLevel loggo.Level | 456 » oldLevel loggo.Level |
455 } | 457 } |
456 | 458 |
457 var _ = gc.Suite(&ConfigDeprecationSuite{}) | 459 var _ = gc.Suite(&ConfigDeprecationSuite{}) |
458 | 460 |
459 func (s *ConfigDeprecationSuite) SetUpTest(c *gc.C) { | 461 func (s *ConfigDeprecationSuite) SetUpTest(c *gc.C) { |
460 » s.oldJujuHome = config.SetJujuHome(c.MkDir()) | 462 » s.ConfigSuite.SetUpTest(c) |
thumper
2013/07/22 04:43:02
just use a testing.FakeHome.
wallyworld
2013/07/22 05:41:12
I forgot about fake home. I just copied an existin
| |
463 } | |
464 | |
465 func (s *ConfigDeprecationSuite) TearDownTest(c *gc.C) { | |
466 » s.ConfigSuite.TearDownTest(c) | |
467 } | |
468 | |
469 func (s *ConfigDeprecationSuite) setupLogger(c *gc.C) { | |
461 var err error | 470 var err error |
462 s.writer = &testWriter{} | 471 s.writer = &testWriter{} |
463 s.oldWriter, s.oldLevel, err = loggo.RemoveWriter("default") | 472 s.oldWriter, s.oldLevel, err = loggo.RemoveWriter("default") |
464 c.Assert(err, gc.IsNil) | 473 c.Assert(err, gc.IsNil) |
465 err = loggo.RegisterWriter("test", s.writer, loggo.TRACE) | 474 err = loggo.RegisterWriter("test", s.writer, loggo.TRACE) |
466 c.Assert(err, gc.IsNil) | 475 c.Assert(err, gc.IsNil) |
467 } | 476 } |
468 | 477 |
469 func (s *ConfigDeprecationSuite) TearDownTest(c *gc.C) { | 478 func (s *ConfigDeprecationSuite) resetLogger(c *gc.C) { |
470 _, _, err := loggo.RemoveWriter("test") | 479 _, _, err := loggo.RemoveWriter("test") |
471 c.Assert(err, gc.IsNil) | 480 c.Assert(err, gc.IsNil) |
472 err = loggo.RegisterWriter("default", s.oldWriter, s.oldLevel) | 481 err = loggo.RegisterWriter("default", s.oldWriter, s.oldLevel) |
473 c.Assert(err, gc.IsNil) | 482 c.Assert(err, gc.IsNil) |
474 config.SetJujuHome(s.oldJujuHome) | |
475 } | 483 } |
476 | 484 |
477 type testWriter struct { | 485 type testWriter struct { |
478 » bytes.Buffer | 486 » messages []string |
479 } | 487 } |
480 | 488 |
481 func (t *testWriter) Write(level loggo.Level, module, filename string, line int, timestamp time.Time, message string) { | 489 func (t *testWriter) Write(level loggo.Level, module, filename string, line int, timestamp time.Time, message string) { |
482 » t.Buffer.WriteString(fmt.Sprintf("%s %s %s", level, module, message)) | 490 » t.messages = append(t.messages, message) |
483 } | 491 } |
484 | 492 |
485 func (s *ConfigDeprecationSuite) setupEnv(c *gc.C, deprecatedKey, value string) *environ { | 493 func (s *ConfigDeprecationSuite) setupEnv(c *gc.C, deprecatedKey, value string) { |
486 » envs := attrs{ | 494 » s.setupEnvCredentials() |
487 » » "environments": attrs{ | 495 » attrs := map[string]interface{}{ |
488 » » » "testenv": attrs{ | 496 » » "name": "testenv", |
489 » » » » "type": "openstack", | 497 » » "type": "openstack", |
490 » » » » "control-bucket": "x", | 498 » » "control-bucket": "x", |
491 » » » » "authorized-keys": "fakekey", | 499 » » "authorized-keys": "fakekey", |
492 » » » }, | 500 » » deprecatedKey: value, |
493 » » }, | 501 » } |
494 » } | 502 » _, err := environs.NewFromAttrs(attrs) |
495 » testenv := envs["environments"].(attrs)["testenv"].(attrs) | 503 » c.Assert(err, gc.IsNil) |
496 » testenv[deprecatedKey] = value | |
497 » data, err := goyaml.Marshal(envs) | |
498 » c.Assert(err, gc.IsNil) | |
499 | |
500 » es, err := environs.ReadEnvironsBytes(data) | |
501 » c.Check(err, gc.IsNil) | |
502 | |
503 » e, err := es.Open("testenv") | |
504 » return e.(*environ) | |
505 } | 504 } |
506 | 505 |
507 func (s *ConfigDeprecationSuite) TestDeprecationWarnings(c *gc.C) { | 506 func (s *ConfigDeprecationSuite) TestDeprecationWarnings(c *gc.C) { |
508 for attr, value := range map[string]string{ | 507 for attr, value := range map[string]string{ |
509 "default-image-id": "foo", | 508 "default-image-id": "foo", |
510 "default-instance-type": "bar", | 509 "default-instance-type": "bar", |
511 } { | 510 } { |
512 » » osenv := s.setupEnv(c, attr, value) | 511 » » s.setupLogger(c) |
513 » » _, err := providerInstance.Validate(osenv.ecfg().Config, nil) | 512 » » s.setupEnv(c, attr, value) |
514 » » c.Assert(err, gc.IsNil) | 513 » » s.resetLogger(c) |
515 » » stripped := strings.Replace(s.writer.String(), "\n", "", -1) | 514 » » stripped := strings.Replace(s.writer.messages[0], "\n", "", -1) |
516 » » expected := fmt.Sprintf(`.*WARNING juju Config attribute "%s" \( %s\) is deprecated and ignored.*`, attr, value) | 515 » » expected := fmt.Sprintf(`.*Config attribute "%s" \(%s\) is depre cated and ignored.*`, attr, value) |
517 c.Assert(stripped, gc.Matches, expected) | 516 c.Assert(stripped, gc.Matches, expected) |
518 } | 517 } |
519 } | 518 } |
LEFT | RIGHT |