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 }