@@ -29,8 +29,39 @@ import (
2929 v1 "k8s.io/api/core/v1"
3030 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3131 cloudprovider "k8s.io/cloud-provider"
32+
33+ "github.com/GoogleCloudPlatform/k8s-cloud-provider/pkg/cloud"
34+ "github.com/GoogleCloudPlatform/k8s-cloud-provider/pkg/cloud/meta"
35+ "google.golang.org/api/compute/v1"
3236)
3337
38+ func TestEnsureLoadBalancerError (t * testing.T ) {
39+ t .Parallel ()
40+
41+ vals := DefaultTestClusterValues ()
42+ gce , err := fakeGCECloud (vals )
43+ require .NoError (t , err )
44+
45+ nodeNames := []string {"test-node-1" }
46+ nodes , err := createAndInsertNodes (gce , nodeNames , vals .ZoneName )
47+ require .NoError (t , err )
48+
49+ apiService := fakeLoadbalancerService (string (LBTypeInternal ))
50+ apiService , err = gce .client .CoreV1 ().Services (apiService .Namespace ).Create (context .TODO (), apiService , metav1.CreateOptions {})
51+ require .NoError (t , err )
52+
53+ // Inject error
54+ mockGCE := gce .c .(* cloud.MockGCE )
55+ mockGCE .MockInstanceGroups .GetHook = func (ctx context.Context , key * meta.Key , m * cloud.MockInstanceGroups , options ... cloud.Option ) (bool , * compute.InstanceGroup , error ) {
56+ return true , nil , fmt .Errorf ("injected error" )
57+ }
58+
59+ status , err := gce .EnsureLoadBalancer (context .Background (), vals .ClusterName , apiService , nodes )
60+ require .Error (t , err )
61+ assert .Nil (t , status )
62+ assert .Contains (t , err .Error (), "injected error" )
63+ }
64+
3465func TestGetLoadBalancer (t * testing.T ) {
3566 t .Parallel ()
3667
0 commit comments