1
// Copyright 2013 Canonical Ltd.
2
// Licensed under the AGPLv3, see LICENCE file for details.
9
. "launchpad.net/gocheck"
11
"launchpad.net/juju-core/instance"
14
type InstanceSuite struct{}
16
var _ = Suite(new(InstanceSuite))
18
func makeHostedServiceDescriptor(name, label string) *gwacl.HostedServiceDescriptor {
19
labelBase64 := base64.StdEncoding.EncodeToString([]byte(label))
20
return &gwacl.HostedServiceDescriptor{ServiceName: name, Label: labelBase64}
23
func (StorageSuite) TestId(c *C) {
24
serviceName := "test-name"
25
testService := makeHostedServiceDescriptor(serviceName, "label")
26
azInstance := azureInstance{*testService}
27
c.Check(azInstance.Id(), Equals, instance.Id(serviceName))
30
func (StorageSuite) TestDNSName(c *C) {
31
// An instance's DNS name is taken from its Hosted Service label.
32
host := fmt.Sprintf("hostname.%s", AZURE_DOMAIN_NAME)
33
testService := makeHostedServiceDescriptor("service-name", host)
34
azInstance := azureInstance{*testService}
35
dnsName, err := azInstance.DNSName()
37
c.Check(dnsName, Equals, host)
40
func (StorageSuite) TestDNSNameReturnsErrNoDNSNameIfNotDNSName(c *C) {
41
// While a Hosted Service is waiting for the provider to register its
42
// DNS name, it still has a provisional label. DNSName recognizes
43
// this as meaning "no DNS name yet."
44
label := makeProvisionalServiceLabel("foo")
45
testService := makeHostedServiceDescriptor("service-name", label)
46
azInstance := azureInstance{*testService}
47
dnsName, err := azInstance.DNSName()
48
c.Check(err, Equals, instance.ErrNoDNSName)
49
c.Check(dnsName, Equals, "")
52
func (StorageSuite) TestWaitDNSName(c *C) {
53
host := fmt.Sprintf("hostname.%s", AZURE_DOMAIN_NAME)
54
testService := makeHostedServiceDescriptor("service-name", host)
55
azInstance := azureInstance{*testService}
56
dnsName, err := azInstance.WaitDNSName()
58
c.Check(dnsName, Equals, host)