github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/provider/oracle/images_test.go (about)

     1  // Copyright 2017 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package oracle_test
     5  
     6  import (
     7  	"errors"
     8  
     9  	gitjujutesting "github.com/juju/testing"
    10  	gc "gopkg.in/check.v1"
    11  
    12  	"github.com/juju/juju/environs/imagemetadata"
    13  	"github.com/juju/juju/environs/instances"
    14  	"github.com/juju/juju/provider/oracle"
    15  	oracletesting "github.com/juju/juju/provider/oracle/testing"
    16  )
    17  
    18  type imageSuite struct {
    19  	gitjujutesting.IsolationSuite
    20  }
    21  
    22  var _ = gc.Suite(&imageSuite{})
    23  
    24  func (i imageSuite) TestGetImageName(c *gc.C) {
    25  	name, err := oracle.GetImageName(oracletesting.DefaultEnvironAPI, "0")
    26  	c.Assert(err, gc.IsNil)
    27  	ok := len(name) > 0
    28  	c.Assert(ok, gc.Equals, true)
    29  }
    30  
    31  func (i imageSuite) TestGetImageNameWithErrors(c *gc.C) {
    32  	_, err := oracle.GetImageName(oracletesting.DefaultEnvironAPI, "")
    33  	c.Assert(err, gc.NotNil)
    34  
    35  	_, err = oracle.GetImageName(&oracletesting.FakeEnvironAPI{
    36  		FakeImager: oracletesting.FakeImager{
    37  			AllErr: errors.New("FakeImageListErr"),
    38  		}}, "0")
    39  	c.Assert(err, gc.NotNil)
    40  }
    41  
    42  func (i imageSuite) TestCheckImageList(c *gc.C) {
    43  	images, err := oracle.CheckImageList(oracletesting.DefaultEnvironAPI)
    44  
    45  	c.Assert(err, gc.IsNil)
    46  	c.Assert(images, gc.NotNil)
    47  }
    48  
    49  func (i imageSuite) TestCheckImageListWithErrors(c *gc.C) {
    50  	_, err := oracle.CheckImageList(&oracletesting.FakeEnvironAPI{
    51  		FakeImager: oracletesting.FakeImager{
    52  			AllErr: errors.New("FakeImageListErr"),
    53  		},
    54  	})
    55  	c.Assert(err, gc.NotNil)
    56  
    57  	_, err = oracle.CheckImageList(nil)
    58  	c.Assert(err, gc.NotNil)
    59  }
    60  
    61  func (i imageSuite) TestFindInstanceSpec(c *gc.C) {
    62  	spec, imagelist, err := oracle.FindInstanceSpec(
    63  		oracletesting.DefaultEnvironAPI,
    64  		TestImageMetadata,
    65  		[]instances.InstanceType{
    66  			{
    67  				Id:     "win2018r2",
    68  				Name:   "",
    69  				Arches: []string{"amd64"},
    70  			},
    71  		},
    72  
    73  		&instances.InstanceConstraint{
    74  			Region: "uscom-central-1",
    75  			Series: "xenial",
    76  		},
    77  	)
    78  
    79  	c.Assert(err, gc.IsNil)
    80  	c.Assert(spec, gc.NotNil)
    81  	c.Assert((len(imagelist) > 0), gc.Equals, true)
    82  }
    83  
    84  func (i imageSuite) TestFindInstanceSpecWithSeriesError(c *gc.C) {
    85  	_, _, err := oracle.FindInstanceSpec(
    86  		oracletesting.DefaultEnvironAPI,
    87  		TestImageMetadata,
    88  		[]instances.InstanceType{
    89  			{
    90  				Id:     "win2018r2",
    91  				Name:   "",
    92  				Arches: []string{"amd64"},
    93  			},
    94  		},
    95  
    96  		&instances.InstanceConstraint{
    97  			Region: "uscom-central-1",
    98  			Series: "non-supported-series",
    99  		},
   100  	)
   101  
   102  	c.Assert(err, gc.NotNil)
   103  }
   104  
   105  func (i imageSuite) TestFindInstanceSpecWithError(c *gc.C) {
   106  	_, _, err := oracle.FindInstanceSpec(
   107  		oracletesting.DefaultEnvironAPI,
   108  		[]*imagemetadata.ImageMetadata{},
   109  		[]instances.InstanceType{
   110  			{
   111  				Id:     "win2018r2",
   112  				Name:   "",
   113  				Arches: []string{"amd64"},
   114  			},
   115  		},
   116  
   117  		&instances.InstanceConstraint{
   118  			Region: "uscom-central-1",
   119  			Series: "xenial",
   120  		},
   121  	)
   122  	c.Assert(err, gc.NotNil)
   123  }
   124  
   125  func (i imageSuite) TestInstanceTypes(c *gc.C) {
   126  	types, err := oracle.InstanceTypes(oracletesting.DefaultEnvironAPI)
   127  	c.Assert(err, gc.IsNil)
   128  	c.Assert(types, gc.NotNil)
   129  }
   130  
   131  func (i imageSuite) TestInstanceTypesWithErrrors(c *gc.C) {
   132  	for _, fake := range []*oracletesting.FakeEnvironAPI{
   133  		{
   134  			FakeShaper: oracletesting.FakeShaper{
   135  				AllErr: errors.New("FakeShaperErr"),
   136  			},
   137  		},
   138  	} {
   139  		_, err := oracle.InstanceTypes(fake)
   140  		c.Assert(err, gc.NotNil)
   141  	}
   142  }
   143  
   144  var TestImageMetadata = []*imagemetadata.ImageMetadata{
   145  	{
   146  		Id:          "win2012r2",
   147  		Storage:     "",
   148  		VirtType:    "",
   149  		Arch:        "amd64",
   150  		Version:     "win2012r2",
   151  		RegionAlias: "",
   152  		RegionName:  "uscom-central-1",
   153  		Endpoint:    "https://compute.uscom-central-1.oraclecloud.com",
   154  		Stream:      "",
   155  	},
   156  	{
   157  		Id:          "20170307",
   158  		Storage:     "",
   159  		VirtType:    "",
   160  		Arch:        "amd64",
   161  		Version:     "16.04",
   162  		RegionAlias: "",
   163  		RegionName:  "uscom-central-1",
   164  		Endpoint:    "https://compute.uscom-central-1.oraclecloud.com",
   165  		Stream:      "",
   166  	},
   167  	{
   168  		Id:          "20170307",
   169  		Storage:     "",
   170  		VirtType:    "",
   171  		Arch:        "amd64",
   172  		Version:     "14.04",
   173  		RegionAlias: "",
   174  		RegionName:  "uscom-central-1",
   175  		Endpoint:    "https://compute.uscom-central-1.oraclecloud.com",
   176  		Stream:      "",
   177  	},
   178  	{
   179  		Id:          "20170307",
   180  		Storage:     "",
   181  		VirtType:    "",
   182  		Arch:        "amd64",
   183  		Version:     "12.04",
   184  		RegionAlias: "",
   185  		RegionName:  "uscom-central-1",
   186  		Endpoint:    "https://compute.uscom-central-1.oraclecloud.com",
   187  		Stream:      "",
   188  	},
   189  	{
   190  		Id:          "win2018r2",
   191  		Storage:     "",
   192  		VirtType:    "",
   193  		Arch:        "amd64",
   194  		Version:     "win2018r2",
   195  		RegionAlias: "",
   196  		RegionName:  "uscom-central-1",
   197  		Endpoint:    "https://compute.uscom-central-1.oraclecloud.com",
   198  		Stream:      "",
   199  	},
   200  }