github.com/justinjmoses/evergreen@v0.0.0-20170530173719-1d50e381ff0d/cloud/providers/factory_test.go (about)

     1  package providers
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/evergreen-ci/evergreen"
     7  	"github.com/evergreen-ci/evergreen/cloud/providers/digitalocean"
     8  	"github.com/evergreen-ci/evergreen/cloud/providers/ec2"
     9  	"github.com/evergreen-ci/evergreen/cloud/providers/mock"
    10  	"github.com/evergreen-ci/evergreen/cloud/providers/static"
    11  	"github.com/evergreen-ci/evergreen/model/host"
    12  	"github.com/evergreen-ci/evergreen/testutil"
    13  	. "github.com/smartystreets/goconvey/convey"
    14  )
    15  
    16  func TestGetCloudManager(t *testing.T) {
    17  	Convey("GetCloudManager() should return non-nil for all valid provider names", t, func() {
    18  
    19  		Convey("EC2 should be returned for ec2 provider name", func() {
    20  			cloudMgr, err := GetCloudManager("ec2", testutil.TestConfig())
    21  			So(cloudMgr, ShouldNotBeNil)
    22  			So(err, ShouldBeNil)
    23  			So(cloudMgr, ShouldHaveSameTypeAs, &ec2.EC2Manager{})
    24  		})
    25  
    26  		Convey("EC2Spot should be returned for ec2-spot provider name", func() {
    27  			cloudMgr, err := GetCloudManager("ec2-spot", testutil.TestConfig())
    28  			So(cloudMgr, ShouldNotBeNil)
    29  			So(err, ShouldBeNil)
    30  			So(cloudMgr, ShouldHaveSameTypeAs, &ec2.EC2SpotManager{})
    31  		})
    32  
    33  		Convey("Static should be returned for static provider name", func() {
    34  			cloudMgr, err := GetCloudManager("static", testutil.TestConfig())
    35  			So(cloudMgr, ShouldNotBeNil)
    36  			So(err, ShouldBeNil)
    37  			So(cloudMgr, ShouldHaveSameTypeAs, &static.StaticManager{})
    38  		})
    39  
    40  		Convey("Mock should be returned for mock provider name", func() {
    41  			cloudMgr, err := GetCloudManager("mock", testutil.TestConfig())
    42  			So(cloudMgr, ShouldNotBeNil)
    43  			So(err, ShouldBeNil)
    44  			So(cloudMgr, ShouldHaveSameTypeAs, &mock.MockCloudManager{})
    45  		})
    46  
    47  		Convey("DigitalOcean should be returned for digitalocean provider name", func() {
    48  			cloudMgr, err := GetCloudManager("digitalocean", testutil.TestConfig())
    49  			So(cloudMgr, ShouldNotBeNil)
    50  			So(err, ShouldBeNil)
    51  			So(cloudMgr, ShouldHaveSameTypeAs, &digitalocean.DigitalOceanManager{})
    52  		})
    53  
    54  		Convey("Invalid provider names should return nil with err", func() {
    55  			cloudMgr, err := GetCloudManager("bogus", testutil.TestConfig())
    56  			So(cloudMgr, ShouldBeNil)
    57  			So(err, ShouldNotBeNil)
    58  		})
    59  
    60  	})
    61  
    62  }
    63  
    64  func TestIsHostReachable(t *testing.T) {
    65  	t.Skip("Test cannot SSH into local host without a valid key file. ")
    66  	Convey("A reachable static host should return true", t, func() {
    67  		// try with a reachable static host
    68  		reachableHost := &host.Host{
    69  			Host:        "localhost",
    70  			Provisioned: true,
    71  			Provider:    evergreen.HostTypeStatic,
    72  		}
    73  		cloudManager, err := GetCloudManager(reachableHost.Provider, testutil.TestConfig())
    74  		So(err, ShouldBeNil)
    75  
    76  		reachable, err := cloudManager.IsSSHReachable(reachableHost, "")
    77  		So(reachable, ShouldBeTrue)
    78  		So(err, ShouldBeNil)
    79  	})
    80  	Convey("An unreachable static host should return false", t, func() {
    81  		// try with an unreachable static host
    82  		reachableHost := &host.Host{
    83  			Host:        "fakehost",
    84  			Provisioned: true,
    85  			Provider:    evergreen.HostTypeStatic,
    86  		}
    87  		cloudManager, err := GetCloudManager(reachableHost.Provider, testutil.TestConfig())
    88  		So(err, ShouldBeNil)
    89  
    90  		reachable, err := cloudManager.IsSSHReachable(reachableHost, "")
    91  		So(reachable, ShouldBeFalse)
    92  		So(err, ShouldBeNil)
    93  	})
    94  
    95  }