BREAKING: all: regenerate toolkit client

BREAK: logging: LoggingProjectPath and LoggingLogPath functions are
renamed ProjectPath and LogPath, respectively.

BREAK: videointelligence: The type VideoIntelligenceClient is renamed
Client.

logging: idempotent RPCs can be retried on INTERNAL error. Fixes #517.

all: fix iterator examples. Fixes #657.

Change-Id: I1c69f5e2ae681fb4a5d914cdc5e0d67d8b83c02e
Reviewed-on: https://code-review.googlesource.com/13951
Reviewed-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Jonathan Amsterdam <jba@google.com>
diff --git a/debugger/apiv2/controller2_client.go b/debugger/apiv2/controller2_client.go
index 24e7a14..041f99f 100644
--- a/debugger/apiv2/controller2_client.go
+++ b/debugger/apiv2/controller2_client.go
@@ -57,17 +57,6 @@
 				})
 			}),
 		},
-		{"default", "non_idempotent"}: {
-			gax.WithRetry(func() gax.Retryer {
-				return gax.OnCodes([]codes.Code{
-					codes.Unavailable,
-				}, gax.Backoff{
-					Initial:    100 * time.Millisecond,
-					Max:        60000 * time.Millisecond,
-					Multiplier: 1.3,
-				})
-			}),
-		},
 	}
 	return &Controller2CallOptions{
 		RegisterDebuggee:       retry[[2]string{"default", "non_idempotent"}],
diff --git a/debugger/apiv2/debugger2_client.go b/debugger/apiv2/debugger2_client.go
index b5c39a2..b50aa2a 100644
--- a/debugger/apiv2/debugger2_client.go
+++ b/debugger/apiv2/debugger2_client.go
@@ -59,17 +59,6 @@
 				})
 			}),
 		},
-		{"default", "non_idempotent"}: {
-			gax.WithRetry(func() gax.Retryer {
-				return gax.OnCodes([]codes.Code{
-					codes.Unavailable,
-				}, gax.Backoff{
-					Initial:    100 * time.Millisecond,
-					Max:        60000 * time.Millisecond,
-					Multiplier: 1.3,
-				})
-			}),
-		},
 	}
 	return &Debugger2CallOptions{
 		SetBreakpoint:    retry[[2]string{"default", "non_idempotent"}],
diff --git a/debugger/apiv2/doc.go b/debugger/apiv2/doc.go
index 03b288f..f0b10ca 100644
--- a/debugger/apiv2/doc.go
+++ b/debugger/apiv2/doc.go
@@ -15,7 +15,7 @@
 // AUTO-GENERATED CODE. DO NOT EDIT.
 
 // Package debugger is an experimental, auto-generated package for the
-// debugger API.
+// Stackdriver Debugger API.
 //
 // Examines the call stack and variables of a running application
 // without stopping or slowing it down.
@@ -35,6 +35,8 @@
 	return metadata.NewOutgoingContext(ctx, md)
 }
 
+// DefaultAuthScopes reports the authentication scopes required
+// by this package.
 func DefaultAuthScopes() []string {
 	return []string{
 		"https://www.googleapis.com/auth/cloud-platform",
diff --git a/debugger/apiv2/mock_test.go b/debugger/apiv2/mock_test.go
index ed29d4a..8295dfc 100644
--- a/debugger/apiv2/mock_test.go
+++ b/debugger/apiv2/mock_test.go
@@ -39,6 +39,7 @@
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/metadata"
+	gstatus "google.golang.org/grpc/status"
 )
 
 var _ = io.EOF
@@ -241,7 +242,7 @@
 
 func TestDebugger2SetBreakpointError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockDebugger2.err = grpc.Errorf(errCode, "test error")
+	mockDebugger2.err = gstatus.Error(errCode, "test error")
 
 	var debuggeeId string = "debuggeeId-997255898"
 	var breakpoint *clouddebuggerpb.Breakpoint = &clouddebuggerpb.Breakpoint{}
@@ -259,7 +260,9 @@
 
 	resp, err := c.SetBreakpoint(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -303,7 +306,7 @@
 
 func TestDebugger2GetBreakpointError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockDebugger2.err = grpc.Errorf(errCode, "test error")
+	mockDebugger2.err = gstatus.Error(errCode, "test error")
 
 	var debuggeeId string = "debuggeeId-997255898"
 	var breakpointId string = "breakpointId498424873"
@@ -321,7 +324,9 @@
 
 	resp, err := c.GetBreakpoint(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -362,7 +367,7 @@
 
 func TestDebugger2DeleteBreakpointError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockDebugger2.err = grpc.Errorf(errCode, "test error")
+	mockDebugger2.err = gstatus.Error(errCode, "test error")
 
 	var debuggeeId string = "debuggeeId-997255898"
 	var breakpointId string = "breakpointId498424873"
@@ -380,7 +385,9 @@
 
 	err = c.DeleteBreakpoint(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 }
@@ -424,7 +431,7 @@
 
 func TestDebugger2ListBreakpointsError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockDebugger2.err = grpc.Errorf(errCode, "test error")
+	mockDebugger2.err = gstatus.Error(errCode, "test error")
 
 	var debuggeeId string = "debuggeeId-997255898"
 	var clientVersion string = "clientVersion-1506231196"
@@ -440,7 +447,9 @@
 
 	resp, err := c.ListBreakpoints(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -482,7 +491,7 @@
 
 func TestDebugger2ListDebuggeesError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockDebugger2.err = grpc.Errorf(errCode, "test error")
+	mockDebugger2.err = gstatus.Error(errCode, "test error")
 
 	var project string = "project-309310695"
 	var clientVersion string = "clientVersion-1506231196"
@@ -498,7 +507,9 @@
 
 	resp, err := c.ListDebuggees(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -538,7 +549,7 @@
 
 func TestController2RegisterDebuggeeError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockController2.err = grpc.Errorf(errCode, "test error")
+	mockController2.err = gstatus.Error(errCode, "test error")
 
 	var debuggee *clouddebuggerpb.Debuggee = &clouddebuggerpb.Debuggee{}
 	var request = &clouddebuggerpb.RegisterDebuggeeRequest{
@@ -552,7 +563,9 @@
 
 	resp, err := c.RegisterDebuggee(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -597,7 +610,7 @@
 
 func TestController2ListActiveBreakpointsError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockController2.err = grpc.Errorf(errCode, "test error")
+	mockController2.err = gstatus.Error(errCode, "test error")
 
 	var debuggeeId string = "debuggeeId-997255898"
 	var request = &clouddebuggerpb.ListActiveBreakpointsRequest{
@@ -611,7 +624,9 @@
 
 	resp, err := c.ListActiveBreakpoints(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -653,7 +668,7 @@
 
 func TestController2UpdateActiveBreakpointError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockController2.err = grpc.Errorf(errCode, "test error")
+	mockController2.err = gstatus.Error(errCode, "test error")
 
 	var debuggeeId string = "debuggeeId-997255898"
 	var breakpoint *clouddebuggerpb.Breakpoint = &clouddebuggerpb.Breakpoint{}
@@ -669,7 +684,9 @@
 
 	resp, err := c.UpdateActiveBreakpoint(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
diff --git a/errorreporting/apiv1beta1/doc.go b/errorreporting/apiv1beta1/doc.go
index 404b83f..351bf6f 100644
--- a/errorreporting/apiv1beta1/doc.go
+++ b/errorreporting/apiv1beta1/doc.go
@@ -15,7 +15,7 @@
 // AUTO-GENERATED CODE. DO NOT EDIT.
 
 // Package errorreporting is an experimental, auto-generated package for the
-// errorreporting API.
+// Stackdriver Error Reporting API.
 //
 // Stackdriver Error Reporting groups and counts similar errors from cloud
 // services. The Stackdriver Error Reporting API provides a way to report new
@@ -34,6 +34,8 @@
 	return metadata.NewOutgoingContext(ctx, md)
 }
 
+// DefaultAuthScopes reports the authentication scopes required
+// by this package.
 func DefaultAuthScopes() []string {
 	return []string{
 		"https://www.googleapis.com/auth/cloud-platform",
diff --git a/errorreporting/apiv1beta1/error_stats_client_example_test.go b/errorreporting/apiv1beta1/error_stats_client_example_test.go
index 6f7e9e6..edebae0 100644
--- a/errorreporting/apiv1beta1/error_stats_client_example_test.go
+++ b/errorreporting/apiv1beta1/error_stats_client_example_test.go
@@ -19,6 +19,7 @@
 import (
 	"cloud.google.com/go/errorreporting/apiv1beta1"
 	"golang.org/x/net/context"
+	"google.golang.org/api/iterator"
 	clouderrorreportingpb "google.golang.org/genproto/googleapis/devtools/clouderrorreporting/v1beta1"
 )
 
@@ -45,9 +46,11 @@
 	it := c.ListGroupStats(ctx, req)
 	for {
 		resp, err := it.Next()
+		if err == iterator.Done {
+			break
+		}
 		if err != nil {
 			// TODO: Handle error.
-			break
 		}
 		// TODO: Use resp.
 		_ = resp
@@ -67,9 +70,11 @@
 	it := c.ListEvents(ctx, req)
 	for {
 		resp, err := it.Next()
+		if err == iterator.Done {
+			break
+		}
 		if err != nil {
 			// TODO: Handle error.
-			break
 		}
 		// TODO: Use resp.
 		_ = resp
diff --git a/errorreporting/apiv1beta1/mock_test.go b/errorreporting/apiv1beta1/mock_test.go
index 3aea875..ccb9fe8 100644
--- a/errorreporting/apiv1beta1/mock_test.go
+++ b/errorreporting/apiv1beta1/mock_test.go
@@ -38,6 +38,7 @@
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/metadata"
+	gstatus "google.golang.org/grpc/status"
 )
 
 var _ = io.EOF
@@ -234,7 +235,7 @@
 
 func TestErrorGroupServiceGetGroupError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockErrorGroup.err = grpc.Errorf(errCode, "test error")
+	mockErrorGroup.err = gstatus.Error(errCode, "test error")
 
 	var formattedGroupName string = ErrorGroupGroupPath("[PROJECT]", "[GROUP]")
 	var request = &clouderrorreportingpb.GetGroupRequest{
@@ -248,7 +249,9 @@
 
 	resp, err := c.GetGroup(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -293,7 +296,7 @@
 
 func TestErrorGroupServiceUpdateGroupError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockErrorGroup.err = grpc.Errorf(errCode, "test error")
+	mockErrorGroup.err = gstatus.Error(errCode, "test error")
 
 	var group *clouderrorreportingpb.ErrorGroup = &clouderrorreportingpb.ErrorGroup{}
 	var request = &clouderrorreportingpb.UpdateGroupRequest{
@@ -307,7 +310,9 @@
 
 	resp, err := c.UpdateGroup(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -365,7 +370,7 @@
 
 func TestErrorStatsServiceListGroupStatsError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockErrorStats.err = grpc.Errorf(errCode, "test error")
+	mockErrorStats.err = gstatus.Error(errCode, "test error")
 
 	var formattedProjectName string = ErrorStatsProjectPath("[PROJECT]")
 	var timeRange *clouderrorreportingpb.QueryTimeRange = &clouderrorreportingpb.QueryTimeRange{}
@@ -381,7 +386,9 @@
 
 	resp, err := c.ListGroupStats(context.Background(), request).Next()
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -439,7 +446,7 @@
 
 func TestErrorStatsServiceListEventsError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockErrorStats.err = grpc.Errorf(errCode, "test error")
+	mockErrorStats.err = gstatus.Error(errCode, "test error")
 
 	var formattedProjectName string = ErrorStatsProjectPath("[PROJECT]")
 	var groupId string = "groupId506361563"
@@ -455,7 +462,9 @@
 
 	resp, err := c.ListEvents(context.Background(), request).Next()
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -495,7 +504,7 @@
 
 func TestErrorStatsServiceDeleteEventsError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockErrorStats.err = grpc.Errorf(errCode, "test error")
+	mockErrorStats.err = gstatus.Error(errCode, "test error")
 
 	var formattedProjectName string = ErrorStatsProjectPath("[PROJECT]")
 	var request = &clouderrorreportingpb.DeleteEventsRequest{
@@ -509,7 +518,9 @@
 
 	resp, err := c.DeleteEvents(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -551,7 +562,7 @@
 
 func TestReportErrorsServiceReportErrorEventError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockReportErrors.err = grpc.Errorf(errCode, "test error")
+	mockReportErrors.err = gstatus.Error(errCode, "test error")
 
 	var formattedProjectName string = ReportErrorsProjectPath("[PROJECT]")
 	var event *clouderrorreportingpb.ReportedErrorEvent = &clouderrorreportingpb.ReportedErrorEvent{}
@@ -567,7 +578,9 @@
 
 	resp, err := c.ReportErrorEvent(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
diff --git a/errorreporting/apiv1beta1/report_errors_client.go b/errorreporting/apiv1beta1/report_errors_client.go
index 49f53f5..189b85e 100644
--- a/errorreporting/apiv1beta1/report_errors_client.go
+++ b/errorreporting/apiv1beta1/report_errors_client.go
@@ -17,8 +17,6 @@
 package errorreporting
 
 import (
-	"time"
-
 	"cloud.google.com/go/internal/version"
 	gax "github.com/googleapis/gax-go"
 	"golang.org/x/net/context"
@@ -26,7 +24,6 @@
 	"google.golang.org/api/transport"
 	clouderrorreportingpb "google.golang.org/genproto/googleapis/devtools/clouderrorreporting/v1beta1"
 	"google.golang.org/grpc"
-	"google.golang.org/grpc/codes"
 )
 
 var (
@@ -46,19 +43,7 @@
 }
 
 func defaultReportErrorsCallOptions() *ReportErrorsCallOptions {
-	retry := map[[2]string][]gax.CallOption{
-		{"default", "non_idempotent"}: {
-			gax.WithRetry(func() gax.Retryer {
-				return gax.OnCodes([]codes.Code{
-					codes.Unavailable,
-				}, gax.Backoff{
-					Initial:    100 * time.Millisecond,
-					Max:        60000 * time.Millisecond,
-					Multiplier: 1.3,
-				})
-			}),
-		},
-	}
+	retry := map[[2]string][]gax.CallOption{}
 	return &ReportErrorsCallOptions{
 		ReportErrorEvent: retry[[2]string{"default", "non_idempotent"}],
 	}
diff --git a/iam/admin/apiv1/doc.go b/iam/admin/apiv1/doc.go
index 9fabd40..825facd 100644
--- a/iam/admin/apiv1/doc.go
+++ b/iam/admin/apiv1/doc.go
@@ -15,7 +15,7 @@
 // AUTO-GENERATED CODE. DO NOT EDIT.
 
 // Package admin is an experimental, auto-generated package for the
-// admin API.
+// Google Identity and Access Management (IAM) API.
 //
 // Manages identity and access control for Google Cloud Platform resources,
 // including the creation of service accounts, which you can use to
@@ -34,6 +34,8 @@
 	return metadata.NewOutgoingContext(ctx, md)
 }
 
+// DefaultAuthScopes reports the authentication scopes required
+// by this package.
 func DefaultAuthScopes() []string {
 	return []string{
 		"https://www.googleapis.com/auth/cloud-platform",
diff --git a/iam/admin/apiv1/iam_client.go b/iam/admin/apiv1/iam_client.go
index 1f222e5..89dff8e 100644
--- a/iam/admin/apiv1/iam_client.go
+++ b/iam/admin/apiv1/iam_client.go
@@ -77,17 +77,6 @@
 				})
 			}),
 		},
-		{"default", "non_idempotent"}: {
-			gax.WithRetry(func() gax.Retryer {
-				return gax.OnCodes([]codes.Code{
-					codes.Unavailable,
-				}, gax.Backoff{
-					Initial:    100 * time.Millisecond,
-					Max:        60000 * time.Millisecond,
-					Multiplier: 1.3,
-				})
-			}),
-		},
 	}
 	return &IamCallOptions{
 		ListServiceAccounts:     retry[[2]string{"default", "idempotent"}],
diff --git a/iam/admin/apiv1/iam_client_example_test.go b/iam/admin/apiv1/iam_client_example_test.go
index 983d48e..901fcb9 100644
--- a/iam/admin/apiv1/iam_client_example_test.go
+++ b/iam/admin/apiv1/iam_client_example_test.go
@@ -19,6 +19,7 @@
 import (
 	"cloud.google.com/go/iam/admin/apiv1"
 	"golang.org/x/net/context"
+	"google.golang.org/api/iterator"
 	adminpb "google.golang.org/genproto/googleapis/iam/admin/v1"
 	iampb "google.golang.org/genproto/googleapis/iam/v1"
 )
@@ -46,9 +47,11 @@
 	it := c.ListServiceAccounts(ctx, req)
 	for {
 		resp, err := it.Next()
+		if err == iterator.Done {
+			break
+		}
 		if err != nil {
 			// TODO: Handle error.
-			break
 		}
 		// TODO: Use resp.
 		_ = resp
diff --git a/iam/admin/apiv1/mock_test.go b/iam/admin/apiv1/mock_test.go
index b3e576c..43ff01b 100644
--- a/iam/admin/apiv1/mock_test.go
+++ b/iam/admin/apiv1/mock_test.go
@@ -40,6 +40,7 @@
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/metadata"
+	gstatus "google.golang.org/grpc/status"
 )
 
 var _ = io.EOF
@@ -309,7 +310,7 @@
 
 func TestIamListServiceAccountsError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockIam.err = grpc.Errorf(errCode, "test error")
+	mockIam.err = gstatus.Error(errCode, "test error")
 
 	var formattedName string = IamProjectPath("[PROJECT]")
 	var request = &adminpb.ListServiceAccountsRequest{
@@ -323,7 +324,9 @@
 
 	resp, err := c.ListServiceAccounts(context.Background(), request).Next()
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -378,7 +381,7 @@
 
 func TestIamGetServiceAccountError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockIam.err = grpc.Errorf(errCode, "test error")
+	mockIam.err = gstatus.Error(errCode, "test error")
 
 	var formattedName string = IamServiceAccountPath("[PROJECT]", "[SERVICE_ACCOUNT]")
 	var request = &adminpb.GetServiceAccountRequest{
@@ -392,7 +395,9 @@
 
 	resp, err := c.GetServiceAccount(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -449,7 +454,7 @@
 
 func TestIamCreateServiceAccountError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockIam.err = grpc.Errorf(errCode, "test error")
+	mockIam.err = gstatus.Error(errCode, "test error")
 
 	var formattedName string = IamProjectPath("[PROJECT]")
 	var accountId string = "accountId-803333011"
@@ -465,7 +470,9 @@
 
 	resp, err := c.CreateServiceAccount(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -520,7 +527,7 @@
 
 func TestIamUpdateServiceAccountError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockIam.err = grpc.Errorf(errCode, "test error")
+	mockIam.err = gstatus.Error(errCode, "test error")
 
 	var etag []byte = []byte("21")
 	var request = &adminpb.ServiceAccount{
@@ -534,7 +541,9 @@
 
 	resp, err := c.UpdateServiceAccount(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -571,7 +580,7 @@
 
 func TestIamDeleteServiceAccountError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockIam.err = grpc.Errorf(errCode, "test error")
+	mockIam.err = gstatus.Error(errCode, "test error")
 
 	var formattedName string = IamServiceAccountPath("[PROJECT]", "[SERVICE_ACCOUNT]")
 	var request = &adminpb.DeleteServiceAccountRequest{
@@ -585,7 +594,9 @@
 
 	err = c.DeleteServiceAccount(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 }
@@ -624,7 +635,7 @@
 
 func TestIamListServiceAccountKeysError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockIam.err = grpc.Errorf(errCode, "test error")
+	mockIam.err = gstatus.Error(errCode, "test error")
 
 	var formattedName string = IamServiceAccountPath("[PROJECT]", "[SERVICE_ACCOUNT]")
 	var request = &adminpb.ListServiceAccountKeysRequest{
@@ -638,7 +649,9 @@
 
 	resp, err := c.ListServiceAccountKeys(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -685,7 +698,7 @@
 
 func TestIamGetServiceAccountKeyError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockIam.err = grpc.Errorf(errCode, "test error")
+	mockIam.err = gstatus.Error(errCode, "test error")
 
 	var formattedName string = IamKeyPath("[PROJECT]", "[SERVICE_ACCOUNT]", "[KEY]")
 	var request = &adminpb.GetServiceAccountKeyRequest{
@@ -699,7 +712,9 @@
 
 	resp, err := c.GetServiceAccountKey(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -746,7 +761,7 @@
 
 func TestIamCreateServiceAccountKeyError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockIam.err = grpc.Errorf(errCode, "test error")
+	mockIam.err = gstatus.Error(errCode, "test error")
 
 	var formattedName string = IamServiceAccountPath("[PROJECT]", "[SERVICE_ACCOUNT]")
 	var request = &adminpb.CreateServiceAccountKeyRequest{
@@ -760,7 +775,9 @@
 
 	resp, err := c.CreateServiceAccountKey(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -797,7 +814,7 @@
 
 func TestIamDeleteServiceAccountKeyError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockIam.err = grpc.Errorf(errCode, "test error")
+	mockIam.err = gstatus.Error(errCode, "test error")
 
 	var formattedName string = IamKeyPath("[PROJECT]", "[SERVICE_ACCOUNT]", "[KEY]")
 	var request = &adminpb.DeleteServiceAccountKeyRequest{
@@ -811,7 +828,9 @@
 
 	err = c.DeleteServiceAccountKey(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 }
@@ -857,7 +876,7 @@
 
 func TestIamSignBlobError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockIam.err = grpc.Errorf(errCode, "test error")
+	mockIam.err = gstatus.Error(errCode, "test error")
 
 	var formattedName string = IamServiceAccountPath("[PROJECT]", "[SERVICE_ACCOUNT]")
 	var bytesToSign []byte = []byte("45")
@@ -873,7 +892,9 @@
 
 	resp, err := c.SignBlob(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -918,7 +939,7 @@
 
 func TestIamGetIamPolicyError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockIam.err = grpc.Errorf(errCode, "test error")
+	mockIam.err = gstatus.Error(errCode, "test error")
 
 	var formattedResource string = IamServiceAccountPath("[PROJECT]", "[SERVICE_ACCOUNT]")
 	var request = &iampb.GetIamPolicyRequest{
@@ -932,7 +953,9 @@
 
 	resp, err := c.getIamPolicy(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -979,7 +1002,7 @@
 
 func TestIamSetIamPolicyError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockIam.err = grpc.Errorf(errCode, "test error")
+	mockIam.err = gstatus.Error(errCode, "test error")
 
 	var formattedResource string = IamServiceAccountPath("[PROJECT]", "[SERVICE_ACCOUNT]")
 	var policy *iampb.Policy = &iampb.Policy{}
@@ -995,7 +1018,9 @@
 
 	resp, err := c.setIamPolicy(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -1037,7 +1062,7 @@
 
 func TestIamTestIamPermissionsError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockIam.err = grpc.Errorf(errCode, "test error")
+	mockIam.err = gstatus.Error(errCode, "test error")
 
 	var formattedResource string = IamServiceAccountPath("[PROJECT]", "[SERVICE_ACCOUNT]")
 	var permissions []string = nil
@@ -1053,7 +1078,9 @@
 
 	resp, err := c.TestIamPermissions(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -1093,7 +1120,7 @@
 
 func TestIamQueryGrantableRolesError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockIam.err = grpc.Errorf(errCode, "test error")
+	mockIam.err = gstatus.Error(errCode, "test error")
 
 	var fullResourceName string = "fullResourceName1300993644"
 	var request = &adminpb.QueryGrantableRolesRequest{
@@ -1107,7 +1134,9 @@
 
 	resp, err := c.QueryGrantableRoles(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
diff --git a/internal/version/version.go b/internal/version/version.go
index 33f1cdb..5eb06ba 100644
--- a/internal/version/version.go
+++ b/internal/version/version.go
@@ -26,7 +26,7 @@
 
 // Repo is the current version of the client libraries in this
 // repo. It should be a date in YYYYMMDD format.
-const Repo = "20170404"
+const Repo = "20170621"
 
 // Go returns the Go runtime version. The returned string
 // has no whitespace.
diff --git a/language/apiv1/doc.go b/language/apiv1/doc.go
index 73b0f5c..34d357e 100644
--- a/language/apiv1/doc.go
+++ b/language/apiv1/doc.go
@@ -15,7 +15,7 @@
 // AUTO-GENERATED CODE. DO NOT EDIT.
 
 // Package language is an experimental, auto-generated package for the
-// language API.
+// Google Cloud Natural Language API.
 //
 // Google Cloud Natural Language API provides natural language understanding
 // technologies to developers. Examples include sentiment analysis, entity
@@ -34,6 +34,8 @@
 	return metadata.NewOutgoingContext(ctx, md)
 }
 
+// DefaultAuthScopes reports the authentication scopes required
+// by this package.
 func DefaultAuthScopes() []string {
 	return []string{
 		"https://www.googleapis.com/auth/cloud-platform",
diff --git a/language/apiv1/mock_test.go b/language/apiv1/mock_test.go
index b241bce..2c21479 100644
--- a/language/apiv1/mock_test.go
+++ b/language/apiv1/mock_test.go
@@ -38,6 +38,7 @@
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/metadata"
+	gstatus "google.golang.org/grpc/status"
 )
 
 var _ = io.EOF
@@ -174,7 +175,7 @@
 
 func TestLanguageServiceAnalyzeSentimentError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockLanguage.err = grpc.Errorf(errCode, "test error")
+	mockLanguage.err = gstatus.Error(errCode, "test error")
 
 	var document *languagepb.Document = &languagepb.Document{}
 	var request = &languagepb.AnalyzeSentimentRequest{
@@ -188,7 +189,9 @@
 
 	resp, err := c.AnalyzeSentiment(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -233,7 +236,7 @@
 
 func TestLanguageServiceAnalyzeEntitiesError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockLanguage.err = grpc.Errorf(errCode, "test error")
+	mockLanguage.err = gstatus.Error(errCode, "test error")
 
 	var document *languagepb.Document = &languagepb.Document{}
 	var encodingType languagepb.EncodingType = languagepb.EncodingType_NONE
@@ -249,7 +252,9 @@
 
 	resp, err := c.AnalyzeEntities(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -294,7 +299,7 @@
 
 func TestLanguageServiceAnalyzeSyntaxError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockLanguage.err = grpc.Errorf(errCode, "test error")
+	mockLanguage.err = gstatus.Error(errCode, "test error")
 
 	var document *languagepb.Document = &languagepb.Document{}
 	var encodingType languagepb.EncodingType = languagepb.EncodingType_NONE
@@ -310,7 +315,9 @@
 
 	resp, err := c.AnalyzeSyntax(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -357,7 +364,7 @@
 
 func TestLanguageServiceAnnotateTextError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockLanguage.err = grpc.Errorf(errCode, "test error")
+	mockLanguage.err = gstatus.Error(errCode, "test error")
 
 	var document *languagepb.Document = &languagepb.Document{}
 	var features *languagepb.AnnotateTextRequest_Features = &languagepb.AnnotateTextRequest_Features{}
@@ -375,7 +382,9 @@
 
 	resp, err := c.AnnotateText(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
diff --git a/language/apiv1beta2/doc.go b/language/apiv1beta2/doc.go
index d0313d9..e43233f 100644
--- a/language/apiv1beta2/doc.go
+++ b/language/apiv1beta2/doc.go
@@ -15,7 +15,7 @@
 // AUTO-GENERATED CODE. DO NOT EDIT.
 
 // Package language is an experimental, auto-generated package for the
-// language API.
+// Google Cloud Natural Language API.
 //
 // Google Cloud Natural Language API provides natural language understanding
 // technologies to developers. Examples include sentiment analysis, entity
@@ -34,6 +34,8 @@
 	return metadata.NewOutgoingContext(ctx, md)
 }
 
+// DefaultAuthScopes reports the authentication scopes required
+// by this package.
 func DefaultAuthScopes() []string {
 	return []string{
 		"https://www.googleapis.com/auth/cloud-platform",
diff --git a/language/apiv1beta2/mock_test.go b/language/apiv1beta2/mock_test.go
index 2db4e1e..33972a8 100644
--- a/language/apiv1beta2/mock_test.go
+++ b/language/apiv1beta2/mock_test.go
@@ -38,6 +38,7 @@
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/metadata"
+	gstatus "google.golang.org/grpc/status"
 )
 
 var _ = io.EOF
@@ -186,7 +187,7 @@
 
 func TestLanguageServiceAnalyzeSentimentError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockLanguage.err = grpc.Errorf(errCode, "test error")
+	mockLanguage.err = gstatus.Error(errCode, "test error")
 
 	var document *languagepb.Document = &languagepb.Document{}
 	var request = &languagepb.AnalyzeSentimentRequest{
@@ -200,7 +201,9 @@
 
 	resp, err := c.AnalyzeSentiment(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -245,7 +248,7 @@
 
 func TestLanguageServiceAnalyzeEntitiesError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockLanguage.err = grpc.Errorf(errCode, "test error")
+	mockLanguage.err = gstatus.Error(errCode, "test error")
 
 	var document *languagepb.Document = &languagepb.Document{}
 	var encodingType languagepb.EncodingType = languagepb.EncodingType_NONE
@@ -261,7 +264,9 @@
 
 	resp, err := c.AnalyzeEntities(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -306,7 +311,7 @@
 
 func TestLanguageServiceAnalyzeEntitySentimentError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockLanguage.err = grpc.Errorf(errCode, "test error")
+	mockLanguage.err = gstatus.Error(errCode, "test error")
 
 	var document *languagepb.Document = &languagepb.Document{}
 	var encodingType languagepb.EncodingType = languagepb.EncodingType_NONE
@@ -322,7 +327,9 @@
 
 	resp, err := c.AnalyzeEntitySentiment(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -367,7 +374,7 @@
 
 func TestLanguageServiceAnalyzeSyntaxError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockLanguage.err = grpc.Errorf(errCode, "test error")
+	mockLanguage.err = gstatus.Error(errCode, "test error")
 
 	var document *languagepb.Document = &languagepb.Document{}
 	var encodingType languagepb.EncodingType = languagepb.EncodingType_NONE
@@ -383,7 +390,9 @@
 
 	resp, err := c.AnalyzeSyntax(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -430,7 +439,7 @@
 
 func TestLanguageServiceAnnotateTextError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockLanguage.err = grpc.Errorf(errCode, "test error")
+	mockLanguage.err = gstatus.Error(errCode, "test error")
 
 	var document *languagepb.Document = &languagepb.Document{}
 	var features *languagepb.AnnotateTextRequest_Features = &languagepb.AnnotateTextRequest_Features{}
@@ -448,7 +457,9 @@
 
 	resp, err := c.AnnotateText(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
diff --git a/logging/apiv2/WriteLogEntries_smoke_test.go b/logging/apiv2/WriteLogEntries_smoke_test.go
index b4d91ab..23f5108 100644
--- a/logging/apiv2/WriteLogEntries_smoke_test.go
+++ b/logging/apiv2/WriteLogEntries_smoke_test.go
@@ -54,7 +54,7 @@
 	}
 
 	var entries []*loggingpb.LogEntry = nil
-	var formattedLogName string = LoggingLogPath(projectId, "test-"+strconv.FormatInt(time.Now().UnixNano(), 10)+"")
+	var formattedLogName string = LogPath(projectId, "test-"+strconv.FormatInt(time.Now().UnixNano(), 10)+"")
 	var request = &loggingpb.WriteLogEntriesRequest{
 		Entries: entries,
 		LogName: formattedLogName,
diff --git a/logging/apiv2/config_client.go b/logging/apiv2/config_client.go
index 417769b..c8e171c 100644
--- a/logging/apiv2/config_client.go
+++ b/logging/apiv2/config_client.go
@@ -58,17 +58,7 @@
 			gax.WithRetry(func() gax.Retryer {
 				return gax.OnCodes([]codes.Code{
 					codes.DeadlineExceeded,
-					codes.Unavailable,
-				}, gax.Backoff{
-					Initial:    100 * time.Millisecond,
-					Max:        1000 * time.Millisecond,
-					Multiplier: 1.2,
-				})
-			}),
-		},
-		{"default", "non_idempotent"}: {
-			gax.WithRetry(func() gax.Retryer {
-				return gax.OnCodes([]codes.Code{
+					codes.Internal,
 					codes.Unavailable,
 				}, gax.Backoff{
 					Initial:    100 * time.Millisecond,
diff --git a/logging/apiv2/config_client_example_test.go b/logging/apiv2/config_client_example_test.go
index 620aa65..7369260 100644
--- a/logging/apiv2/config_client_example_test.go
+++ b/logging/apiv2/config_client_example_test.go
@@ -19,6 +19,7 @@
 import (
 	"cloud.google.com/go/logging/apiv2"
 	"golang.org/x/net/context"
+	"google.golang.org/api/iterator"
 	loggingpb "google.golang.org/genproto/googleapis/logging/v2"
 )
 
@@ -45,9 +46,11 @@
 	it := c.ListSinks(ctx, req)
 	for {
 		resp, err := it.Next()
+		if err == iterator.Done {
+			break
+		}
 		if err != nil {
 			// TODO: Handle error.
-			break
 		}
 		// TODO: Use resp.
 		_ = resp
diff --git a/logging/apiv2/doc.go b/logging/apiv2/doc.go
index 3963c8b..0398913 100644
--- a/logging/apiv2/doc.go
+++ b/logging/apiv2/doc.go
@@ -15,7 +15,7 @@
 // AUTO-GENERATED CODE. DO NOT EDIT.
 
 // Package logging is an experimental, auto-generated package for the
-// logging API.
+// Stackdriver Logging API.
 //
 // The Stackdriver Logging API lets you write log entries and manage your
 // logs, log sinks and logs-based metrics.
@@ -35,6 +35,8 @@
 	return metadata.NewOutgoingContext(ctx, md)
 }
 
+// DefaultAuthScopes reports the authentication scopes required
+// by this package.
 func DefaultAuthScopes() []string {
 	return []string{
 		"https://www.googleapis.com/auth/cloud-platform",
diff --git a/logging/apiv2/logging_client.go b/logging/apiv2/logging_client.go
index 603893b..9458ed4 100644
--- a/logging/apiv2/logging_client.go
+++ b/logging/apiv2/logging_client.go
@@ -59,17 +59,7 @@
 			gax.WithRetry(func() gax.Retryer {
 				return gax.OnCodes([]codes.Code{
 					codes.DeadlineExceeded,
-					codes.Unavailable,
-				}, gax.Backoff{
-					Initial:    100 * time.Millisecond,
-					Max:        1000 * time.Millisecond,
-					Multiplier: 1.2,
-				})
-			}),
-		},
-		{"default", "non_idempotent"}: {
-			gax.WithRetry(func() gax.Retryer {
-				return gax.OnCodes([]codes.Code{
+					codes.Internal,
 					codes.Unavailable,
 				}, gax.Backoff{
 					Initial:    100 * time.Millisecond,
@@ -82,6 +72,7 @@
 			gax.WithRetry(func() gax.Retryer {
 				return gax.OnCodes([]codes.Code{
 					codes.DeadlineExceeded,
+					codes.Internal,
 					codes.Unavailable,
 				}, gax.Backoff{
 					Initial:    100 * time.Millisecond,
@@ -153,8 +144,8 @@
 	c.xGoogHeader = []string{gax.XGoogHeader(kv...)}
 }
 
-// LoggingProjectPath returns the path for the project resource.
-func LoggingProjectPath(project string) string {
+// ProjectPath returns the path for the project resource.
+func ProjectPath(project string) string {
 	path, err := loggingProjectPathTemplate.Render(map[string]string{
 		"project": project,
 	})
@@ -164,8 +155,8 @@
 	return path
 }
 
-// LoggingLogPath returns the path for the log resource.
-func LoggingLogPath(project, log string) string {
+// LogPath returns the path for the log resource.
+func LogPath(project, log string) string {
 	path, err := loggingLogPathTemplate.Render(map[string]string{
 		"project": project,
 		"log":     log,
diff --git a/logging/apiv2/logging_client_example_test.go b/logging/apiv2/logging_client_example_test.go
index 6dc537f..e4321f1 100644
--- a/logging/apiv2/logging_client_example_test.go
+++ b/logging/apiv2/logging_client_example_test.go
@@ -19,6 +19,7 @@
 import (
 	"cloud.google.com/go/logging/apiv2"
 	"golang.org/x/net/context"
+	"google.golang.org/api/iterator"
 	loggingpb "google.golang.org/genproto/googleapis/logging/v2"
 )
 
@@ -79,9 +80,11 @@
 	it := c.ListLogEntries(ctx, req)
 	for {
 		resp, err := it.Next()
+		if err == iterator.Done {
+			break
+		}
 		if err != nil {
 			// TODO: Handle error.
-			break
 		}
 		// TODO: Use resp.
 		_ = resp
@@ -101,9 +104,11 @@
 	it := c.ListMonitoredResourceDescriptors(ctx, req)
 	for {
 		resp, err := it.Next()
+		if err == iterator.Done {
+			break
+		}
 		if err != nil {
 			// TODO: Handle error.
-			break
 		}
 		// TODO: Use resp.
 		_ = resp
@@ -123,9 +128,11 @@
 	it := c.ListLogs(ctx, req)
 	for {
 		resp, err := it.Next()
+		if err == iterator.Done {
+			break
+		}
 		if err != nil {
 			// TODO: Handle error.
-			break
 		}
 		// TODO: Use resp.
 		_ = resp
diff --git a/logging/apiv2/metrics_client.go b/logging/apiv2/metrics_client.go
index ba2af92..62ec7e7 100644
--- a/logging/apiv2/metrics_client.go
+++ b/logging/apiv2/metrics_client.go
@@ -58,17 +58,7 @@
 			gax.WithRetry(func() gax.Retryer {
 				return gax.OnCodes([]codes.Code{
 					codes.DeadlineExceeded,
-					codes.Unavailable,
-				}, gax.Backoff{
-					Initial:    100 * time.Millisecond,
-					Max:        1000 * time.Millisecond,
-					Multiplier: 1.2,
-				})
-			}),
-		},
-		{"default", "non_idempotent"}: {
-			gax.WithRetry(func() gax.Retryer {
-				return gax.OnCodes([]codes.Code{
+					codes.Internal,
 					codes.Unavailable,
 				}, gax.Backoff{
 					Initial:    100 * time.Millisecond,
diff --git a/logging/apiv2/metrics_client_example_test.go b/logging/apiv2/metrics_client_example_test.go
index c924120..4bc3eef 100644
--- a/logging/apiv2/metrics_client_example_test.go
+++ b/logging/apiv2/metrics_client_example_test.go
@@ -19,6 +19,7 @@
 import (
 	"cloud.google.com/go/logging/apiv2"
 	"golang.org/x/net/context"
+	"google.golang.org/api/iterator"
 	loggingpb "google.golang.org/genproto/googleapis/logging/v2"
 )
 
@@ -45,9 +46,11 @@
 	it := c.ListLogMetrics(ctx, req)
 	for {
 		resp, err := it.Next()
+		if err == iterator.Done {
+			break
+		}
 		if err != nil {
 			// TODO: Handle error.
-			break
 		}
 		// TODO: Use resp.
 		_ = resp
diff --git a/logging/apiv2/mock_test.go b/logging/apiv2/mock_test.go
index 30083a2..746dcd2 100644
--- a/logging/apiv2/mock_test.go
+++ b/logging/apiv2/mock_test.go
@@ -40,6 +40,7 @@
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/metadata"
+	gstatus "google.golang.org/grpc/status"
 )
 
 var _ = io.EOF
@@ -312,7 +313,7 @@
 
 	mockLogging.resps = append(mockLogging.resps[:0], expectedResponse)
 
-	var formattedLogName string = LoggingLogPath("[PROJECT]", "[LOG]")
+	var formattedLogName string = LogPath("[PROJECT]", "[LOG]")
 	var request = &loggingpb.DeleteLogRequest{
 		LogName: formattedLogName,
 	}
@@ -336,9 +337,9 @@
 
 func TestLoggingServiceV2DeleteLogError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockLogging.err = grpc.Errorf(errCode, "test error")
+	mockLogging.err = gstatus.Error(errCode, "test error")
 
-	var formattedLogName string = LoggingLogPath("[PROJECT]", "[LOG]")
+	var formattedLogName string = LogPath("[PROJECT]", "[LOG]")
 	var request = &loggingpb.DeleteLogRequest{
 		LogName: formattedLogName,
 	}
@@ -350,7 +351,9 @@
 
 	err = c.DeleteLog(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 }
@@ -389,7 +392,7 @@
 
 func TestLoggingServiceV2WriteLogEntriesError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockLogging.err = grpc.Errorf(errCode, "test error")
+	mockLogging.err = gstatus.Error(errCode, "test error")
 
 	var entries []*loggingpb.LogEntry = nil
 	var request = &loggingpb.WriteLogEntriesRequest{
@@ -403,7 +406,9 @@
 
 	resp, err := c.WriteLogEntries(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -459,7 +464,7 @@
 
 func TestLoggingServiceV2ListLogEntriesError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockLogging.err = grpc.Errorf(errCode, "test error")
+	mockLogging.err = gstatus.Error(errCode, "test error")
 
 	var resourceNames []string = nil
 	var request = &loggingpb.ListLogEntriesRequest{
@@ -473,7 +478,9 @@
 
 	resp, err := c.ListLogEntries(context.Background(), request).Next()
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -526,7 +533,7 @@
 
 func TestLoggingServiceV2ListMonitoredResourceDescriptorsError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockLogging.err = grpc.Errorf(errCode, "test error")
+	mockLogging.err = gstatus.Error(errCode, "test error")
 
 	var request *loggingpb.ListMonitoredResourceDescriptorsRequest = &loggingpb.ListMonitoredResourceDescriptorsRequest{}
 
@@ -537,7 +544,9 @@
 
 	resp, err := c.ListMonitoredResourceDescriptors(context.Background(), request).Next()
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -556,7 +565,7 @@
 
 	mockLogging.resps = append(mockLogging.resps[:0], expectedResponse)
 
-	var formattedParent string = LoggingProjectPath("[PROJECT]")
+	var formattedParent string = ProjectPath("[PROJECT]")
 	var request = &loggingpb.ListLogsRequest{
 		Parent: formattedParent,
 	}
@@ -593,9 +602,9 @@
 
 func TestLoggingServiceV2ListLogsError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockLogging.err = grpc.Errorf(errCode, "test error")
+	mockLogging.err = gstatus.Error(errCode, "test error")
 
-	var formattedParent string = LoggingProjectPath("[PROJECT]")
+	var formattedParent string = ProjectPath("[PROJECT]")
 	var request = &loggingpb.ListLogsRequest{
 		Parent: formattedParent,
 	}
@@ -607,7 +616,9 @@
 
 	resp, err := c.ListLogs(context.Background(), request).Next()
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -663,7 +674,7 @@
 
 func TestConfigServiceV2ListSinksError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockConfig.err = grpc.Errorf(errCode, "test error")
+	mockConfig.err = gstatus.Error(errCode, "test error")
 
 	var formattedParent string = ConfigProjectPath("[PROJECT]")
 	var request = &loggingpb.ListSinksRequest{
@@ -677,7 +688,9 @@
 
 	resp, err := c.ListSinks(context.Background(), request).Next()
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -728,7 +741,7 @@
 
 func TestConfigServiceV2GetSinkError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockConfig.err = grpc.Errorf(errCode, "test error")
+	mockConfig.err = gstatus.Error(errCode, "test error")
 
 	var formattedSinkName string = ConfigSinkPath("[PROJECT]", "[SINK]")
 	var request = &loggingpb.GetSinkRequest{
@@ -742,7 +755,9 @@
 
 	resp, err := c.GetSink(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -795,7 +810,7 @@
 
 func TestConfigServiceV2CreateSinkError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockConfig.err = grpc.Errorf(errCode, "test error")
+	mockConfig.err = gstatus.Error(errCode, "test error")
 
 	var formattedParent string = ConfigProjectPath("[PROJECT]")
 	var sink *loggingpb.LogSink = &loggingpb.LogSink{}
@@ -811,7 +826,9 @@
 
 	resp, err := c.CreateSink(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -864,7 +881,7 @@
 
 func TestConfigServiceV2UpdateSinkError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockConfig.err = grpc.Errorf(errCode, "test error")
+	mockConfig.err = gstatus.Error(errCode, "test error")
 
 	var formattedSinkName string = ConfigSinkPath("[PROJECT]", "[SINK]")
 	var sink *loggingpb.LogSink = &loggingpb.LogSink{}
@@ -880,7 +897,9 @@
 
 	resp, err := c.UpdateSink(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -917,7 +936,7 @@
 
 func TestConfigServiceV2DeleteSinkError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockConfig.err = grpc.Errorf(errCode, "test error")
+	mockConfig.err = gstatus.Error(errCode, "test error")
 
 	var formattedSinkName string = ConfigSinkPath("[PROJECT]", "[SINK]")
 	var request = &loggingpb.DeleteSinkRequest{
@@ -931,7 +950,9 @@
 
 	err = c.DeleteSink(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 }
@@ -986,7 +1007,7 @@
 
 func TestMetricsServiceV2ListLogMetricsError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockMetrics.err = grpc.Errorf(errCode, "test error")
+	mockMetrics.err = gstatus.Error(errCode, "test error")
 
 	var formattedParent string = MetricsProjectPath("[PROJECT]")
 	var request = &loggingpb.ListLogMetricsRequest{
@@ -1000,7 +1021,9 @@
 
 	resp, err := c.ListLogMetrics(context.Background(), request).Next()
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -1047,7 +1070,7 @@
 
 func TestMetricsServiceV2GetLogMetricError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockMetrics.err = grpc.Errorf(errCode, "test error")
+	mockMetrics.err = gstatus.Error(errCode, "test error")
 
 	var formattedMetricName string = MetricsMetricPath("[PROJECT]", "[METRIC]")
 	var request = &loggingpb.GetLogMetricRequest{
@@ -1061,7 +1084,9 @@
 
 	resp, err := c.GetLogMetric(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -1110,7 +1135,7 @@
 
 func TestMetricsServiceV2CreateLogMetricError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockMetrics.err = grpc.Errorf(errCode, "test error")
+	mockMetrics.err = gstatus.Error(errCode, "test error")
 
 	var formattedParent string = MetricsProjectPath("[PROJECT]")
 	var metric *loggingpb.LogMetric = &loggingpb.LogMetric{}
@@ -1126,7 +1151,9 @@
 
 	resp, err := c.CreateLogMetric(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -1175,7 +1202,7 @@
 
 func TestMetricsServiceV2UpdateLogMetricError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockMetrics.err = grpc.Errorf(errCode, "test error")
+	mockMetrics.err = gstatus.Error(errCode, "test error")
 
 	var formattedMetricName string = MetricsMetricPath("[PROJECT]", "[METRIC]")
 	var metric *loggingpb.LogMetric = &loggingpb.LogMetric{}
@@ -1191,7 +1218,9 @@
 
 	resp, err := c.UpdateLogMetric(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -1228,7 +1257,7 @@
 
 func TestMetricsServiceV2DeleteLogMetricError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockMetrics.err = grpc.Errorf(errCode, "test error")
+	mockMetrics.err = gstatus.Error(errCode, "test error")
 
 	var formattedMetricName string = MetricsMetricPath("[PROJECT]", "[METRIC]")
 	var request = &loggingpb.DeleteLogMetricRequest{
@@ -1242,7 +1271,9 @@
 
 	err = c.DeleteLogMetric(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 }
diff --git a/longrunning/autogen/doc.go b/longrunning/autogen/doc.go
index 8e3789b..2196806 100644
--- a/longrunning/autogen/doc.go
+++ b/longrunning/autogen/doc.go
@@ -15,7 +15,7 @@
 // AUTO-GENERATED CODE. DO NOT EDIT.
 
 // Package longrunning is an experimental, auto-generated package for the
-// longrunning API.
+// Google Long Running Operations API.
 //
 //
 // Use the client at cloud.google.com/go/longrunning in preference to this.
@@ -33,6 +33,8 @@
 	return metadata.NewOutgoingContext(ctx, md)
 }
 
+// DefaultAuthScopes reports the authentication scopes required
+// by this package.
 func DefaultAuthScopes() []string {
 	return []string{}
 }
diff --git a/longrunning/autogen/mock_test.go b/longrunning/autogen/mock_test.go
index 95e02be..ddbee22 100644
--- a/longrunning/autogen/mock_test.go
+++ b/longrunning/autogen/mock_test.go
@@ -39,6 +39,7 @@
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/metadata"
+	gstatus "google.golang.org/grpc/status"
 )
 
 var _ = io.EOF
@@ -177,7 +178,7 @@
 
 func TestOperationsGetOperationError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockOperations.err = grpc.Errorf(errCode, "test error")
+	mockOperations.err = gstatus.Error(errCode, "test error")
 
 	var name string = "name3373707"
 	var request = &longrunningpb.GetOperationRequest{
@@ -191,7 +192,9 @@
 
 	resp, err := c.GetOperation(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -249,7 +252,7 @@
 
 func TestOperationsListOperationsError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockOperations.err = grpc.Errorf(errCode, "test error")
+	mockOperations.err = gstatus.Error(errCode, "test error")
 
 	var name string = "name3373707"
 	var filter string = "filter-1274492040"
@@ -265,7 +268,9 @@
 
 	resp, err := c.ListOperations(context.Background(), request).Next()
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -302,7 +307,7 @@
 
 func TestOperationsCancelOperationError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockOperations.err = grpc.Errorf(errCode, "test error")
+	mockOperations.err = gstatus.Error(errCode, "test error")
 
 	var name string = "name3373707"
 	var request = &longrunningpb.CancelOperationRequest{
@@ -316,7 +321,9 @@
 
 	err = c.CancelOperation(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 }
@@ -352,7 +359,7 @@
 
 func TestOperationsDeleteOperationError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockOperations.err = grpc.Errorf(errCode, "test error")
+	mockOperations.err = gstatus.Error(errCode, "test error")
 
 	var name string = "name3373707"
 	var request = &longrunningpb.DeleteOperationRequest{
@@ -366,7 +373,9 @@
 
 	err = c.DeleteOperation(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 }
diff --git a/longrunning/autogen/operations_client_example_test.go b/longrunning/autogen/operations_client_example_test.go
index 02de149..646faea 100644
--- a/longrunning/autogen/operations_client_example_test.go
+++ b/longrunning/autogen/operations_client_example_test.go
@@ -19,6 +19,7 @@
 import (
 	"cloud.google.com/go/longrunning/autogen"
 	"golang.org/x/net/context"
+	"google.golang.org/api/iterator"
 	longrunningpb "google.golang.org/genproto/googleapis/longrunning"
 )
 
@@ -63,9 +64,11 @@
 	it := c.ListOperations(ctx, req)
 	for {
 		resp, err := it.Next()
+		if err == iterator.Done {
+			break
+		}
 		if err != nil {
 			// TODO: Handle error.
-			break
 		}
 		// TODO: Use resp.
 		_ = resp
diff --git a/monitoring/apiv3/doc.go b/monitoring/apiv3/doc.go
index b57411b..ca72c8e 100644
--- a/monitoring/apiv3/doc.go
+++ b/monitoring/apiv3/doc.go
@@ -15,7 +15,7 @@
 // AUTO-GENERATED CODE. DO NOT EDIT.
 
 // Package monitoring is an experimental, auto-generated package for the
-// monitoring API.
+// Stackdriver Monitoring API.
 //
 // Manages your Stackdriver Monitoring data and configurations. Most projects
 // must be associated with a Stackdriver account, with a few exceptions as
@@ -34,6 +34,8 @@
 	return metadata.NewOutgoingContext(ctx, md)
 }
 
+// DefaultAuthScopes reports the authentication scopes required
+// by this package.
 func DefaultAuthScopes() []string {
 	return []string{
 		"https://www.googleapis.com/auth/cloud-platform",
diff --git a/monitoring/apiv3/group_client.go b/monitoring/apiv3/group_client.go
index 765b151..e861d7d 100644
--- a/monitoring/apiv3/group_client.go
+++ b/monitoring/apiv3/group_client.go
@@ -68,17 +68,6 @@
 				})
 			}),
 		},
-		{"default", "non_idempotent"}: {
-			gax.WithRetry(func() gax.Retryer {
-				return gax.OnCodes([]codes.Code{
-					codes.Unavailable,
-				}, gax.Backoff{
-					Initial:    100 * time.Millisecond,
-					Max:        60000 * time.Millisecond,
-					Multiplier: 1.3,
-				})
-			}),
-		},
 	}
 	return &GroupCallOptions{
 		ListGroups:       retry[[2]string{"default", "idempotent"}],
diff --git a/monitoring/apiv3/group_client_example_test.go b/monitoring/apiv3/group_client_example_test.go
index 095661a..cae59bf 100644
--- a/monitoring/apiv3/group_client_example_test.go
+++ b/monitoring/apiv3/group_client_example_test.go
@@ -19,6 +19,7 @@
 import (
 	"cloud.google.com/go/monitoring/apiv3"
 	"golang.org/x/net/context"
+	"google.golang.org/api/iterator"
 	monitoringpb "google.golang.org/genproto/googleapis/monitoring/v3"
 )
 
@@ -45,9 +46,11 @@
 	it := c.ListGroups(ctx, req)
 	for {
 		resp, err := it.Next()
+		if err == iterator.Done {
+			break
+		}
 		if err != nil {
 			// TODO: Handle error.
-			break
 		}
 		// TODO: Use resp.
 		_ = resp
@@ -137,9 +140,11 @@
 	it := c.ListGroupMembers(ctx, req)
 	for {
 		resp, err := it.Next()
+		if err == iterator.Done {
+			break
+		}
 		if err != nil {
 			// TODO: Handle error.
-			break
 		}
 		// TODO: Use resp.
 		_ = resp
diff --git a/monitoring/apiv3/metric_client.go b/monitoring/apiv3/metric_client.go
index 53dced8..4b24b6d 100644
--- a/monitoring/apiv3/metric_client.go
+++ b/monitoring/apiv3/metric_client.go
@@ -72,17 +72,6 @@
 				})
 			}),
 		},
-		{"default", "non_idempotent"}: {
-			gax.WithRetry(func() gax.Retryer {
-				return gax.OnCodes([]codes.Code{
-					codes.Unavailable,
-				}, gax.Backoff{
-					Initial:    100 * time.Millisecond,
-					Max:        60000 * time.Millisecond,
-					Multiplier: 1.3,
-				})
-			}),
-		},
 	}
 	return &MetricCallOptions{
 		ListMonitoredResourceDescriptors: retry[[2]string{"default", "idempotent"}],
diff --git a/monitoring/apiv3/metric_client_example_test.go b/monitoring/apiv3/metric_client_example_test.go
index 5dbb5ef..a768489 100644
--- a/monitoring/apiv3/metric_client_example_test.go
+++ b/monitoring/apiv3/metric_client_example_test.go
@@ -19,6 +19,7 @@
 import (
 	"cloud.google.com/go/monitoring/apiv3"
 	"golang.org/x/net/context"
+	"google.golang.org/api/iterator"
 	monitoringpb "google.golang.org/genproto/googleapis/monitoring/v3"
 )
 
@@ -45,9 +46,11 @@
 	it := c.ListMonitoredResourceDescriptors(ctx, req)
 	for {
 		resp, err := it.Next()
+		if err == iterator.Done {
+			break
+		}
 		if err != nil {
 			// TODO: Handle error.
-			break
 		}
 		// TODO: Use resp.
 		_ = resp
@@ -85,9 +88,11 @@
 	it := c.ListMetricDescriptors(ctx, req)
 	for {
 		resp, err := it.Next()
+		if err == iterator.Done {
+			break
+		}
 		if err != nil {
 			// TODO: Handle error.
-			break
 		}
 		// TODO: Use resp.
 		_ = resp
@@ -159,9 +164,11 @@
 	it := c.ListTimeSeries(ctx, req)
 	for {
 		resp, err := it.Next()
+		if err == iterator.Done {
+			break
+		}
 		if err != nil {
 			// TODO: Handle error.
-			break
 		}
 		// TODO: Use resp.
 		_ = resp
diff --git a/monitoring/apiv3/mock_test.go b/monitoring/apiv3/mock_test.go
index 54e6899..25aa2a7 100644
--- a/monitoring/apiv3/mock_test.go
+++ b/monitoring/apiv3/mock_test.go
@@ -41,6 +41,7 @@
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/metadata"
+	gstatus "google.golang.org/grpc/status"
 )
 
 var _ = io.EOF
@@ -327,7 +328,7 @@
 
 func TestGroupServiceListGroupsError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockGroup.err = grpc.Errorf(errCode, "test error")
+	mockGroup.err = gstatus.Error(errCode, "test error")
 
 	var formattedName string = GroupProjectPath("[PROJECT]")
 	var request = &monitoringpb.ListGroupsRequest{
@@ -341,7 +342,9 @@
 
 	resp, err := c.ListGroups(context.Background(), request).Next()
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -392,7 +395,7 @@
 
 func TestGroupServiceGetGroupError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockGroup.err = grpc.Errorf(errCode, "test error")
+	mockGroup.err = gstatus.Error(errCode, "test error")
 
 	var formattedName string = GroupGroupPath("[PROJECT]", "[GROUP]")
 	var request = &monitoringpb.GetGroupRequest{
@@ -406,7 +409,9 @@
 
 	resp, err := c.GetGroup(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -459,7 +464,7 @@
 
 func TestGroupServiceCreateGroupError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockGroup.err = grpc.Errorf(errCode, "test error")
+	mockGroup.err = gstatus.Error(errCode, "test error")
 
 	var formattedName string = GroupProjectPath("[PROJECT]")
 	var group *monitoringpb.Group = &monitoringpb.Group{}
@@ -475,7 +480,9 @@
 
 	resp, err := c.CreateGroup(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -526,7 +533,7 @@
 
 func TestGroupServiceUpdateGroupError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockGroup.err = grpc.Errorf(errCode, "test error")
+	mockGroup.err = gstatus.Error(errCode, "test error")
 
 	var group *monitoringpb.Group = &monitoringpb.Group{}
 	var request = &monitoringpb.UpdateGroupRequest{
@@ -540,7 +547,9 @@
 
 	resp, err := c.UpdateGroup(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -577,7 +586,7 @@
 
 func TestGroupServiceDeleteGroupError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockGroup.err = grpc.Errorf(errCode, "test error")
+	mockGroup.err = gstatus.Error(errCode, "test error")
 
 	var formattedName string = GroupGroupPath("[PROJECT]", "[GROUP]")
 	var request = &monitoringpb.DeleteGroupRequest{
@@ -591,7 +600,9 @@
 
 	err = c.DeleteGroup(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 }
@@ -648,7 +659,7 @@
 
 func TestGroupServiceListGroupMembersError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockGroup.err = grpc.Errorf(errCode, "test error")
+	mockGroup.err = gstatus.Error(errCode, "test error")
 
 	var formattedName string = GroupGroupPath("[PROJECT]", "[GROUP]")
 	var request = &monitoringpb.ListGroupMembersRequest{
@@ -662,7 +673,9 @@
 
 	resp, err := c.ListGroupMembers(context.Background(), request).Next()
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -718,7 +731,7 @@
 
 func TestMetricServiceListMonitoredResourceDescriptorsError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockMetric.err = grpc.Errorf(errCode, "test error")
+	mockMetric.err = gstatus.Error(errCode, "test error")
 
 	var formattedName string = MetricProjectPath("[PROJECT]")
 	var request = &monitoringpb.ListMonitoredResourceDescriptorsRequest{
@@ -732,7 +745,9 @@
 
 	resp, err := c.ListMonitoredResourceDescriptors(context.Background(), request).Next()
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -781,7 +796,7 @@
 
 func TestMetricServiceGetMonitoredResourceDescriptorError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockMetric.err = grpc.Errorf(errCode, "test error")
+	mockMetric.err = gstatus.Error(errCode, "test error")
 
 	var formattedName string = MetricMonitoredResourceDescriptorPath("[PROJECT]", "[MONITORED_RESOURCE_DESCRIPTOR]")
 	var request = &monitoringpb.GetMonitoredResourceDescriptorRequest{
@@ -795,7 +810,9 @@
 
 	resp, err := c.GetMonitoredResourceDescriptor(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -851,7 +868,7 @@
 
 func TestMetricServiceListMetricDescriptorsError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockMetric.err = grpc.Errorf(errCode, "test error")
+	mockMetric.err = gstatus.Error(errCode, "test error")
 
 	var formattedName string = MetricProjectPath("[PROJECT]")
 	var request = &monitoringpb.ListMetricDescriptorsRequest{
@@ -865,7 +882,9 @@
 
 	resp, err := c.ListMetricDescriptors(context.Background(), request).Next()
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -916,7 +935,7 @@
 
 func TestMetricServiceGetMetricDescriptorError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockMetric.err = grpc.Errorf(errCode, "test error")
+	mockMetric.err = gstatus.Error(errCode, "test error")
 
 	var formattedName string = MetricMetricDescriptorPath("[PROJECT]", "[METRIC_DESCRIPTOR]")
 	var request = &monitoringpb.GetMetricDescriptorRequest{
@@ -930,7 +949,9 @@
 
 	resp, err := c.GetMetricDescriptor(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -983,7 +1004,7 @@
 
 func TestMetricServiceCreateMetricDescriptorError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockMetric.err = grpc.Errorf(errCode, "test error")
+	mockMetric.err = gstatus.Error(errCode, "test error")
 
 	var formattedName string = MetricProjectPath("[PROJECT]")
 	var metricDescriptor *metricpb.MetricDescriptor = &metricpb.MetricDescriptor{}
@@ -999,7 +1020,9 @@
 
 	resp, err := c.CreateMetricDescriptor(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -1036,7 +1059,7 @@
 
 func TestMetricServiceDeleteMetricDescriptorError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockMetric.err = grpc.Errorf(errCode, "test error")
+	mockMetric.err = gstatus.Error(errCode, "test error")
 
 	var formattedName string = MetricMetricDescriptorPath("[PROJECT]", "[METRIC_DESCRIPTOR]")
 	var request = &monitoringpb.DeleteMetricDescriptorRequest{
@@ -1050,7 +1073,9 @@
 
 	err = c.DeleteMetricDescriptor(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 }
@@ -1111,7 +1136,7 @@
 
 func TestMetricServiceListTimeSeriesError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockMetric.err = grpc.Errorf(errCode, "test error")
+	mockMetric.err = gstatus.Error(errCode, "test error")
 
 	var formattedName string = MetricProjectPath("[PROJECT]")
 	var filter string = "filter-1274492040"
@@ -1131,7 +1156,9 @@
 
 	resp, err := c.ListTimeSeries(context.Background(), request).Next()
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -1170,7 +1197,7 @@
 
 func TestMetricServiceCreateTimeSeriesError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockMetric.err = grpc.Errorf(errCode, "test error")
+	mockMetric.err = gstatus.Error(errCode, "test error")
 
 	var formattedName string = MetricProjectPath("[PROJECT]")
 	var timeSeries []*monitoringpb.TimeSeries = nil
@@ -1186,7 +1213,9 @@
 
 	err = c.CreateTimeSeries(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 }
diff --git a/pubsub/apiv1/doc.go b/pubsub/apiv1/doc.go
index 6d884a8..6a4addc 100644
--- a/pubsub/apiv1/doc.go
+++ b/pubsub/apiv1/doc.go
@@ -15,7 +15,7 @@
 // AUTO-GENERATED CODE. DO NOT EDIT.
 
 // Package pubsub is an experimental, auto-generated package for the
-// pubsub API.
+// Google Cloud Pub/Sub API.
 //
 // Provides reliable, many-to-many, asynchronous messaging between
 // applications.
@@ -35,6 +35,8 @@
 	return metadata.NewOutgoingContext(ctx, md)
 }
 
+// DefaultAuthScopes reports the authentication scopes required
+// by this package.
 func DefaultAuthScopes() []string {
 	return []string{
 		"https://www.googleapis.com/auth/cloud-platform",
diff --git a/pubsub/apiv1/mock_test.go b/pubsub/apiv1/mock_test.go
index e5935b1..eddd8e5 100644
--- a/pubsub/apiv1/mock_test.go
+++ b/pubsub/apiv1/mock_test.go
@@ -41,6 +41,7 @@
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/metadata"
+	gstatus "google.golang.org/grpc/status"
 )
 
 var _ = io.EOF
@@ -452,7 +453,7 @@
 
 func TestPublisherCreateTopicError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockPublisher.err = grpc.Errorf(errCode, "test error")
+	mockPublisher.err = gstatus.Error(errCode, "test error")
 
 	var formattedName string = PublisherTopicPath("[PROJECT]", "[TOPIC]")
 	var request = &pubsubpb.Topic{
@@ -466,7 +467,9 @@
 
 	resp, err := c.CreateTopic(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -516,7 +519,7 @@
 
 func TestPublisherPublishError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockPublisher.err = grpc.Errorf(errCode, "test error")
+	mockPublisher.err = gstatus.Error(errCode, "test error")
 
 	var formattedTopic string = PublisherTopicPath("[PROJECT]", "[TOPIC]")
 	var data []byte = []byte("-86")
@@ -536,7 +539,9 @@
 
 	resp, err := c.Publish(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -579,7 +584,7 @@
 
 func TestPublisherGetTopicError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockPublisher.err = grpc.Errorf(errCode, "test error")
+	mockPublisher.err = gstatus.Error(errCode, "test error")
 
 	var formattedTopic string = PublisherTopicPath("[PROJECT]", "[TOPIC]")
 	var request = &pubsubpb.GetTopicRequest{
@@ -593,7 +598,9 @@
 
 	resp, err := c.GetTopic(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -649,7 +656,7 @@
 
 func TestPublisherListTopicsError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockPublisher.err = grpc.Errorf(errCode, "test error")
+	mockPublisher.err = gstatus.Error(errCode, "test error")
 
 	var formattedProject string = PublisherProjectPath("[PROJECT]")
 	var request = &pubsubpb.ListTopicsRequest{
@@ -663,7 +670,9 @@
 
 	resp, err := c.ListTopics(context.Background(), request).Next()
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -719,7 +728,7 @@
 
 func TestPublisherListTopicSubscriptionsError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockPublisher.err = grpc.Errorf(errCode, "test error")
+	mockPublisher.err = gstatus.Error(errCode, "test error")
 
 	var formattedTopic string = PublisherTopicPath("[PROJECT]", "[TOPIC]")
 	var request = &pubsubpb.ListTopicSubscriptionsRequest{
@@ -733,7 +742,9 @@
 
 	resp, err := c.ListTopicSubscriptions(context.Background(), request).Next()
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -770,7 +781,7 @@
 
 func TestPublisherDeleteTopicError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockPublisher.err = grpc.Errorf(errCode, "test error")
+	mockPublisher.err = gstatus.Error(errCode, "test error")
 
 	var formattedTopic string = PublisherTopicPath("[PROJECT]", "[TOPIC]")
 	var request = &pubsubpb.DeleteTopicRequest{
@@ -784,7 +795,9 @@
 
 	err = c.DeleteTopic(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 }
@@ -834,7 +847,7 @@
 
 func TestSubscriberCreateSubscriptionError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockSubscriber.err = grpc.Errorf(errCode, "test error")
+	mockSubscriber.err = gstatus.Error(errCode, "test error")
 
 	var formattedName string = SubscriberSubscriptionPath("[PROJECT]", "[SUBSCRIPTION]")
 	var formattedTopic string = SubscriberTopicPath("[PROJECT]", "[TOPIC]")
@@ -850,7 +863,9 @@
 
 	resp, err := c.CreateSubscription(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -899,7 +914,7 @@
 
 func TestSubscriberGetSubscriptionError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockSubscriber.err = grpc.Errorf(errCode, "test error")
+	mockSubscriber.err = gstatus.Error(errCode, "test error")
 
 	var formattedSubscription string = SubscriberSubscriptionPath("[PROJECT]", "[SUBSCRIPTION]")
 	var request = &pubsubpb.GetSubscriptionRequest{
@@ -913,7 +928,9 @@
 
 	resp, err := c.GetSubscription(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -964,7 +981,7 @@
 
 func TestSubscriberUpdateSubscriptionError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockSubscriber.err = grpc.Errorf(errCode, "test error")
+	mockSubscriber.err = gstatus.Error(errCode, "test error")
 
 	var subscription *pubsubpb.Subscription = &pubsubpb.Subscription{}
 	var updateMask *field_maskpb.FieldMask = &field_maskpb.FieldMask{}
@@ -980,7 +997,9 @@
 
 	resp, err := c.UpdateSubscription(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -1036,7 +1055,7 @@
 
 func TestSubscriberListSubscriptionsError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockSubscriber.err = grpc.Errorf(errCode, "test error")
+	mockSubscriber.err = gstatus.Error(errCode, "test error")
 
 	var formattedProject string = SubscriberProjectPath("[PROJECT]")
 	var request = &pubsubpb.ListSubscriptionsRequest{
@@ -1050,7 +1069,9 @@
 
 	resp, err := c.ListSubscriptions(context.Background(), request).Next()
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -1087,7 +1108,7 @@
 
 func TestSubscriberDeleteSubscriptionError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockSubscriber.err = grpc.Errorf(errCode, "test error")
+	mockSubscriber.err = gstatus.Error(errCode, "test error")
 
 	var formattedSubscription string = SubscriberSubscriptionPath("[PROJECT]", "[SUBSCRIPTION]")
 	var request = &pubsubpb.DeleteSubscriptionRequest{
@@ -1101,7 +1122,9 @@
 
 	err = c.DeleteSubscription(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 }
@@ -1141,7 +1164,7 @@
 
 func TestSubscriberModifyAckDeadlineError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockSubscriber.err = grpc.Errorf(errCode, "test error")
+	mockSubscriber.err = gstatus.Error(errCode, "test error")
 
 	var formattedSubscription string = SubscriberSubscriptionPath("[PROJECT]", "[SUBSCRIPTION]")
 	var ackIds []string = nil
@@ -1159,7 +1182,9 @@
 
 	err = c.ModifyAckDeadline(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 }
@@ -1197,7 +1222,7 @@
 
 func TestSubscriberAcknowledgeError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockSubscriber.err = grpc.Errorf(errCode, "test error")
+	mockSubscriber.err = gstatus.Error(errCode, "test error")
 
 	var formattedSubscription string = SubscriberSubscriptionPath("[PROJECT]", "[SUBSCRIPTION]")
 	var ackIds []string = nil
@@ -1213,7 +1238,9 @@
 
 	err = c.Acknowledge(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 }
@@ -1254,7 +1281,7 @@
 
 func TestSubscriberPullError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockSubscriber.err = grpc.Errorf(errCode, "test error")
+	mockSubscriber.err = gstatus.Error(errCode, "test error")
 
 	var formattedSubscription string = SubscriberSubscriptionPath("[PROJECT]", "[SUBSCRIPTION]")
 	var maxMessages int32 = 496131527
@@ -1270,13 +1297,19 @@
 
 	resp, err := c.Pull(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
 }
 func TestSubscriberStreamingPull(t *testing.T) {
-	var expectedResponse *pubsubpb.StreamingPullResponse = &pubsubpb.StreamingPullResponse{}
+	var receivedMessagesElement *pubsubpb.ReceivedMessage = &pubsubpb.ReceivedMessage{}
+	var receivedMessages = []*pubsubpb.ReceivedMessage{receivedMessagesElement}
+	var expectedResponse = &pubsubpb.StreamingPullResponse{
+		ReceivedMessages: receivedMessages,
+	}
 
 	mockSubscriber.err = nil
 	mockSubscriber.reqs = nil
@@ -1322,7 +1355,7 @@
 
 func TestSubscriberStreamingPullError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockSubscriber.err = grpc.Errorf(errCode, "test error")
+	mockSubscriber.err = gstatus.Error(errCode, "test error")
 
 	var formattedSubscription string = SubscriberSubscriptionPath("[PROJECT]", "[SUBSCRIPTION]")
 	var streamAckDeadlineSeconds int32 = 1875467245
@@ -1348,7 +1381,9 @@
 	}
 	resp, err := stream.Recv()
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -1387,7 +1422,7 @@
 
 func TestSubscriberModifyPushConfigError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockSubscriber.err = grpc.Errorf(errCode, "test error")
+	mockSubscriber.err = gstatus.Error(errCode, "test error")
 
 	var formattedSubscription string = SubscriberSubscriptionPath("[PROJECT]", "[SUBSCRIPTION]")
 	var pushConfig *pubsubpb.PushConfig = &pubsubpb.PushConfig{}
@@ -1403,7 +1438,9 @@
 
 	err = c.ModifyPushConfig(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 }
@@ -1458,7 +1495,7 @@
 
 func TestSubscriberListSnapshotsError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockSubscriber.err = grpc.Errorf(errCode, "test error")
+	mockSubscriber.err = gstatus.Error(errCode, "test error")
 
 	var formattedProject string = SubscriberProjectPath("[PROJECT]")
 	var request = &pubsubpb.ListSnapshotsRequest{
@@ -1472,7 +1509,9 @@
 
 	resp, err := c.ListSnapshots(context.Background(), request).Next()
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -1519,7 +1558,7 @@
 
 func TestSubscriberCreateSnapshotError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockSubscriber.err = grpc.Errorf(errCode, "test error")
+	mockSubscriber.err = gstatus.Error(errCode, "test error")
 
 	var formattedName string = SubscriberSnapshotPath("[PROJECT]", "[SNAPSHOT]")
 	var formattedSubscription string = SubscriberSubscriptionPath("[PROJECT]", "[SUBSCRIPTION]")
@@ -1535,7 +1574,9 @@
 
 	resp, err := c.CreateSnapshot(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -1572,7 +1613,7 @@
 
 func TestSubscriberDeleteSnapshotError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockSubscriber.err = grpc.Errorf(errCode, "test error")
+	mockSubscriber.err = gstatus.Error(errCode, "test error")
 
 	var formattedSnapshot string = SubscriberSnapshotPath("[PROJECT]", "[SNAPSHOT]")
 	var request = &pubsubpb.DeleteSnapshotRequest{
@@ -1586,7 +1627,9 @@
 
 	err = c.DeleteSnapshot(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 }
@@ -1625,7 +1668,7 @@
 
 func TestSubscriberSeekError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockSubscriber.err = grpc.Errorf(errCode, "test error")
+	mockSubscriber.err = gstatus.Error(errCode, "test error")
 
 	var formattedSubscription string = SubscriberSubscriptionPath("[PROJECT]", "[SUBSCRIPTION]")
 	var request = &pubsubpb.SeekRequest{
@@ -1639,7 +1682,9 @@
 
 	resp, err := c.Seek(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
diff --git a/pubsub/apiv1/publisher_client_example_test.go b/pubsub/apiv1/publisher_client_example_test.go
index 6e63f80..ad77ce8 100644
--- a/pubsub/apiv1/publisher_client_example_test.go
+++ b/pubsub/apiv1/publisher_client_example_test.go
@@ -19,6 +19,7 @@
 import (
 	"cloud.google.com/go/pubsub/apiv1"
 	"golang.org/x/net/context"
+	"google.golang.org/api/iterator"
 	pubsubpb "google.golang.org/genproto/googleapis/pubsub/v1"
 )
 
@@ -133,9 +134,11 @@
 	it := c.ListTopics(ctx, req)
 	for {
 		resp, err := it.Next()
+		if err == iterator.Done {
+			break
+		}
 		if err != nil {
 			// TODO: Handle error.
-			break
 		}
 		// TODO: Use resp.
 		_ = resp
@@ -155,9 +158,11 @@
 	it := c.ListTopicSubscriptions(ctx, req)
 	for {
 		resp, err := it.Next()
+		if err == iterator.Done {
+			break
+		}
 		if err != nil {
 			// TODO: Handle error.
-			break
 		}
 		// TODO: Use resp.
 		_ = resp
diff --git a/pubsub/apiv1/subscriber_client.go b/pubsub/apiv1/subscriber_client.go
index 2e26b6e..29fc439 100644
--- a/pubsub/apiv1/subscriber_client.go
+++ b/pubsub/apiv1/subscriber_client.go
@@ -78,28 +78,6 @@
 				})
 			}),
 		},
-		{"default", "non_idempotent"}: {
-			gax.WithRetry(func() gax.Retryer {
-				return gax.OnCodes([]codes.Code{
-					codes.Unavailable,
-				}, gax.Backoff{
-					Initial:    100 * time.Millisecond,
-					Max:        60000 * time.Millisecond,
-					Multiplier: 1.3,
-				})
-			}),
-		},
-		{"messaging", "non_idempotent"}: {
-			gax.WithRetry(func() gax.Retryer {
-				return gax.OnCodes([]codes.Code{
-					codes.Unavailable,
-				}, gax.Backoff{
-					Initial:    100 * time.Millisecond,
-					Max:        60000 * time.Millisecond,
-					Multiplier: 1.3,
-				})
-			}),
-		},
 		{"messaging", "pull"}: {
 			gax.WithRetry(func() gax.Retryer {
 				return gax.OnCodes([]codes.Code{
diff --git a/pubsub/apiv1/subscriber_client_example_test.go b/pubsub/apiv1/subscriber_client_example_test.go
index 53c0661..066fca1 100644
--- a/pubsub/apiv1/subscriber_client_example_test.go
+++ b/pubsub/apiv1/subscriber_client_example_test.go
@@ -21,6 +21,7 @@
 
 	"cloud.google.com/go/pubsub/apiv1"
 	"golang.org/x/net/context"
+	"google.golang.org/api/iterator"
 	pubsubpb "google.golang.org/genproto/googleapis/pubsub/v1"
 )
 
@@ -135,9 +136,11 @@
 	it := c.ListSubscriptions(ctx, req)
 	for {
 		resp, err := it.Next()
+		if err == iterator.Done {
+			break
+		}
 		if err != nil {
 			// TODO: Handle error.
-			break
 		}
 		// TODO: Use resp.
 		_ = resp
@@ -273,9 +276,11 @@
 	it := c.ListSnapshots(ctx, req)
 	for {
 		resp, err := it.Next()
+		if err == iterator.Done {
+			break
+		}
 		if err != nil {
 			// TODO: Handle error.
-			break
 		}
 		// TODO: Use resp.
 		_ = resp
diff --git a/spanner/admin/database/apiv1/database_admin_client.go b/spanner/admin/database/apiv1/database_admin_client.go
index 95d6230..65506b6 100644
--- a/spanner/admin/database/apiv1/database_admin_client.go
+++ b/spanner/admin/database/apiv1/database_admin_client.go
@@ -74,17 +74,6 @@
 				})
 			}),
 		},
-		{"default", "non_idempotent"}: {
-			gax.WithRetry(func() gax.Retryer {
-				return gax.OnCodes([]codes.Code{
-					codes.Unavailable,
-				}, gax.Backoff{
-					Initial:    1000 * time.Millisecond,
-					Max:        32000 * time.Millisecond,
-					Multiplier: 1.3,
-				})
-			}),
-		},
 	}
 	return &DatabaseAdminCallOptions{
 		ListDatabases:      retry[[2]string{"default", "idempotent"}],
diff --git a/spanner/admin/database/apiv1/database_admin_client_example_test.go b/spanner/admin/database/apiv1/database_admin_client_example_test.go
index 0769d11..f0e4006 100644
--- a/spanner/admin/database/apiv1/database_admin_client_example_test.go
+++ b/spanner/admin/database/apiv1/database_admin_client_example_test.go
@@ -19,6 +19,7 @@
 import (
 	"cloud.google.com/go/spanner/admin/database/apiv1"
 	"golang.org/x/net/context"
+	"google.golang.org/api/iterator"
 	iampb "google.golang.org/genproto/googleapis/iam/v1"
 	databasepb "google.golang.org/genproto/googleapis/spanner/admin/database/v1"
 )
@@ -46,9 +47,11 @@
 	it := c.ListDatabases(ctx, req)
 	for {
 		resp, err := it.Next()
+		if err == iterator.Done {
+			break
+		}
 		if err != nil {
 			// TODO: Handle error.
-			break
 		}
 		// TODO: Use resp.
 		_ = resp
diff --git a/spanner/admin/database/apiv1/doc.go b/spanner/admin/database/apiv1/doc.go
index 46eaaae..03ee144 100644
--- a/spanner/admin/database/apiv1/doc.go
+++ b/spanner/admin/database/apiv1/doc.go
@@ -15,7 +15,7 @@
 // AUTO-GENERATED CODE. DO NOT EDIT.
 
 // Package database is an experimental, auto-generated package for the
-// database API.
+// Cloud Spanner Database Admin API.
 //
 package database // import "cloud.google.com/go/spanner/admin/database/apiv1"
 
@@ -31,6 +31,8 @@
 	return metadata.NewOutgoingContext(ctx, md)
 }
 
+// DefaultAuthScopes reports the authentication scopes required
+// by this package.
 func DefaultAuthScopes() []string {
 	return []string{
 		"https://www.googleapis.com/auth/cloud-platform",
diff --git a/spanner/admin/database/apiv1/mock_test.go b/spanner/admin/database/apiv1/mock_test.go
index accd30c..36393ff 100644
--- a/spanner/admin/database/apiv1/mock_test.go
+++ b/spanner/admin/database/apiv1/mock_test.go
@@ -41,6 +41,7 @@
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/metadata"
+	gstatus "google.golang.org/grpc/status"
 )
 
 var _ = io.EOF
@@ -250,7 +251,7 @@
 
 func TestDatabaseAdminListDatabasesError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockDatabaseAdmin.err = grpc.Errorf(errCode, "test error")
+	mockDatabaseAdmin.err = gstatus.Error(errCode, "test error")
 
 	var formattedParent string = DatabaseAdminInstancePath("[PROJECT]", "[INSTANCE]")
 	var request = &databasepb.ListDatabasesRequest{
@@ -264,7 +265,9 @@
 
 	resp, err := c.ListDatabases(context.Background(), request).Next()
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -351,7 +354,9 @@
 	}
 	resp, err := respLRO.Wait(context.Background())
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -394,7 +399,7 @@
 
 func TestDatabaseAdminGetDatabaseError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockDatabaseAdmin.err = grpc.Errorf(errCode, "test error")
+	mockDatabaseAdmin.err = gstatus.Error(errCode, "test error")
 
 	var formattedName string = DatabaseAdminDatabasePath("[PROJECT]", "[INSTANCE]", "[DATABASE]")
 	var request = &databasepb.GetDatabaseRequest{
@@ -408,7 +413,9 @@
 
 	resp, err := c.GetDatabase(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -489,7 +496,9 @@
 	}
 	err = respLRO.Wait(context.Background())
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 }
@@ -525,7 +534,7 @@
 
 func TestDatabaseAdminDropDatabaseError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockDatabaseAdmin.err = grpc.Errorf(errCode, "test error")
+	mockDatabaseAdmin.err = gstatus.Error(errCode, "test error")
 
 	var formattedDatabase string = DatabaseAdminDatabasePath("[PROJECT]", "[INSTANCE]", "[DATABASE]")
 	var request = &databasepb.DropDatabaseRequest{
@@ -539,7 +548,9 @@
 
 	err = c.DropDatabase(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 }
@@ -578,7 +589,7 @@
 
 func TestDatabaseAdminGetDatabaseDdlError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockDatabaseAdmin.err = grpc.Errorf(errCode, "test error")
+	mockDatabaseAdmin.err = gstatus.Error(errCode, "test error")
 
 	var formattedDatabase string = DatabaseAdminDatabasePath("[PROJECT]", "[INSTANCE]", "[DATABASE]")
 	var request = &databasepb.GetDatabaseDdlRequest{
@@ -592,7 +603,9 @@
 
 	resp, err := c.GetDatabaseDdl(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -639,7 +652,7 @@
 
 func TestDatabaseAdminSetIamPolicyError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockDatabaseAdmin.err = grpc.Errorf(errCode, "test error")
+	mockDatabaseAdmin.err = gstatus.Error(errCode, "test error")
 
 	var formattedResource string = DatabaseAdminDatabasePath("[PROJECT]", "[INSTANCE]", "[DATABASE]")
 	var policy *iampb.Policy = &iampb.Policy{}
@@ -655,7 +668,9 @@
 
 	resp, err := c.SetIamPolicy(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -700,7 +715,7 @@
 
 func TestDatabaseAdminGetIamPolicyError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockDatabaseAdmin.err = grpc.Errorf(errCode, "test error")
+	mockDatabaseAdmin.err = gstatus.Error(errCode, "test error")
 
 	var formattedResource string = DatabaseAdminDatabasePath("[PROJECT]", "[INSTANCE]", "[DATABASE]")
 	var request = &iampb.GetIamPolicyRequest{
@@ -714,7 +729,9 @@
 
 	resp, err := c.GetIamPolicy(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -756,7 +773,7 @@
 
 func TestDatabaseAdminTestIamPermissionsError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockDatabaseAdmin.err = grpc.Errorf(errCode, "test error")
+	mockDatabaseAdmin.err = gstatus.Error(errCode, "test error")
 
 	var formattedResource string = DatabaseAdminDatabasePath("[PROJECT]", "[INSTANCE]", "[DATABASE]")
 	var permissions []string = nil
@@ -772,7 +789,9 @@
 
 	resp, err := c.TestIamPermissions(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
diff --git a/spanner/admin/instance/apiv1/doc.go b/spanner/admin/instance/apiv1/doc.go
index b0c9821..dd4ea68 100644
--- a/spanner/admin/instance/apiv1/doc.go
+++ b/spanner/admin/instance/apiv1/doc.go
@@ -15,7 +15,7 @@
 // AUTO-GENERATED CODE. DO NOT EDIT.
 
 // Package instance is an experimental, auto-generated package for the
-// instance API.
+// Cloud Spanner Instance Admin API.
 //
 package instance // import "cloud.google.com/go/spanner/admin/instance/apiv1"
 
@@ -31,6 +31,8 @@
 	return metadata.NewOutgoingContext(ctx, md)
 }
 
+// DefaultAuthScopes reports the authentication scopes required
+// by this package.
 func DefaultAuthScopes() []string {
 	return []string{
 		"https://www.googleapis.com/auth/cloud-platform",
diff --git a/spanner/admin/instance/apiv1/instance_admin_client.go b/spanner/admin/instance/apiv1/instance_admin_client.go
index 138e813..281433d 100644
--- a/spanner/admin/instance/apiv1/instance_admin_client.go
+++ b/spanner/admin/instance/apiv1/instance_admin_client.go
@@ -76,17 +76,6 @@
 				})
 			}),
 		},
-		{"default", "non_idempotent"}: {
-			gax.WithRetry(func() gax.Retryer {
-				return gax.OnCodes([]codes.Code{
-					codes.Unavailable,
-				}, gax.Backoff{
-					Initial:    1000 * time.Millisecond,
-					Max:        32000 * time.Millisecond,
-					Multiplier: 1.3,
-				})
-			}),
-		},
 	}
 	return &InstanceAdminCallOptions{
 		ListInstanceConfigs: retry[[2]string{"default", "idempotent"}],
diff --git a/spanner/admin/instance/apiv1/instance_admin_client_example_test.go b/spanner/admin/instance/apiv1/instance_admin_client_example_test.go
index ee807fd..ba506fc 100644
--- a/spanner/admin/instance/apiv1/instance_admin_client_example_test.go
+++ b/spanner/admin/instance/apiv1/instance_admin_client_example_test.go
@@ -19,6 +19,7 @@
 import (
 	"cloud.google.com/go/spanner/admin/instance/apiv1"
 	"golang.org/x/net/context"
+	"google.golang.org/api/iterator"
 	iampb "google.golang.org/genproto/googleapis/iam/v1"
 	instancepb "google.golang.org/genproto/googleapis/spanner/admin/instance/v1"
 )
@@ -46,9 +47,11 @@
 	it := c.ListInstanceConfigs(ctx, req)
 	for {
 		resp, err := it.Next()
+		if err == iterator.Done {
+			break
+		}
 		if err != nil {
 			// TODO: Handle error.
-			break
 		}
 		// TODO: Use resp.
 		_ = resp
@@ -86,9 +89,11 @@
 	it := c.ListInstances(ctx, req)
 	for {
 		resp, err := it.Next()
+		if err == iterator.Done {
+			break
+		}
 		if err != nil {
 			// TODO: Handle error.
-			break
 		}
 		// TODO: Use resp.
 		_ = resp
diff --git a/spanner/admin/instance/apiv1/mock_test.go b/spanner/admin/instance/apiv1/mock_test.go
index 8728d0b..0b2bb2f 100644
--- a/spanner/admin/instance/apiv1/mock_test.go
+++ b/spanner/admin/instance/apiv1/mock_test.go
@@ -42,6 +42,7 @@
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/metadata"
+	gstatus "google.golang.org/grpc/status"
 )
 
 var _ = io.EOF
@@ -263,7 +264,7 @@
 
 func TestInstanceAdminListInstanceConfigsError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockInstanceAdmin.err = grpc.Errorf(errCode, "test error")
+	mockInstanceAdmin.err = gstatus.Error(errCode, "test error")
 
 	var formattedParent string = InstanceAdminProjectPath("[PROJECT]")
 	var request = &instancepb.ListInstanceConfigsRequest{
@@ -277,7 +278,9 @@
 
 	resp, err := c.ListInstanceConfigs(context.Background(), request).Next()
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -322,7 +325,7 @@
 
 func TestInstanceAdminGetInstanceConfigError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockInstanceAdmin.err = grpc.Errorf(errCode, "test error")
+	mockInstanceAdmin.err = gstatus.Error(errCode, "test error")
 
 	var formattedName string = InstanceAdminInstanceConfigPath("[PROJECT]", "[INSTANCE_CONFIG]")
 	var request = &instancepb.GetInstanceConfigRequest{
@@ -336,7 +339,9 @@
 
 	resp, err := c.GetInstanceConfig(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -392,7 +397,7 @@
 
 func TestInstanceAdminListInstancesError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockInstanceAdmin.err = grpc.Errorf(errCode, "test error")
+	mockInstanceAdmin.err = gstatus.Error(errCode, "test error")
 
 	var formattedParent string = InstanceAdminProjectPath("[PROJECT]")
 	var request = &instancepb.ListInstancesRequest{
@@ -406,7 +411,9 @@
 
 	resp, err := c.ListInstances(context.Background(), request).Next()
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -455,7 +462,7 @@
 
 func TestInstanceAdminGetInstanceError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockInstanceAdmin.err = grpc.Errorf(errCode, "test error")
+	mockInstanceAdmin.err = gstatus.Error(errCode, "test error")
 
 	var formattedName string = InstanceAdminInstancePath("[PROJECT]", "[INSTANCE]")
 	var request = &instancepb.GetInstanceRequest{
@@ -469,7 +476,9 @@
 
 	resp, err := c.GetInstance(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -566,7 +575,9 @@
 	}
 	resp, err := respLRO.Wait(context.Background())
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -659,7 +670,9 @@
 	}
 	resp, err := respLRO.Wait(context.Background())
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -696,7 +709,7 @@
 
 func TestInstanceAdminDeleteInstanceError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockInstanceAdmin.err = grpc.Errorf(errCode, "test error")
+	mockInstanceAdmin.err = gstatus.Error(errCode, "test error")
 
 	var formattedName string = InstanceAdminInstancePath("[PROJECT]", "[INSTANCE]")
 	var request = &instancepb.DeleteInstanceRequest{
@@ -710,7 +723,9 @@
 
 	err = c.DeleteInstance(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 }
@@ -756,7 +771,7 @@
 
 func TestInstanceAdminSetIamPolicyError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockInstanceAdmin.err = grpc.Errorf(errCode, "test error")
+	mockInstanceAdmin.err = gstatus.Error(errCode, "test error")
 
 	var formattedResource string = InstanceAdminInstancePath("[PROJECT]", "[INSTANCE]")
 	var policy *iampb.Policy = &iampb.Policy{}
@@ -772,7 +787,9 @@
 
 	resp, err := c.SetIamPolicy(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -817,7 +834,7 @@
 
 func TestInstanceAdminGetIamPolicyError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockInstanceAdmin.err = grpc.Errorf(errCode, "test error")
+	mockInstanceAdmin.err = gstatus.Error(errCode, "test error")
 
 	var formattedResource string = InstanceAdminInstancePath("[PROJECT]", "[INSTANCE]")
 	var request = &iampb.GetIamPolicyRequest{
@@ -831,7 +848,9 @@
 
 	resp, err := c.GetIamPolicy(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -873,7 +892,7 @@
 
 func TestInstanceAdminTestIamPermissionsError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockInstanceAdmin.err = grpc.Errorf(errCode, "test error")
+	mockInstanceAdmin.err = gstatus.Error(errCode, "test error")
 
 	var formattedResource string = InstanceAdminInstancePath("[PROJECT]", "[INSTANCE]")
 	var permissions []string = nil
@@ -889,7 +908,9 @@
 
 	resp, err := c.TestIamPermissions(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
diff --git a/speech/apiv1/doc.go b/speech/apiv1/doc.go
index a50a2a8..c884fa9 100644
--- a/speech/apiv1/doc.go
+++ b/speech/apiv1/doc.go
@@ -15,7 +15,7 @@
 // AUTO-GENERATED CODE. DO NOT EDIT.
 
 // Package speech is an experimental, auto-generated package for the
-// speech API.
+// Google Cloud Speech API.
 //
 // Google Cloud Speech API.
 package speech // import "cloud.google.com/go/speech/apiv1"
@@ -32,6 +32,8 @@
 	return metadata.NewOutgoingContext(ctx, md)
 }
 
+// DefaultAuthScopes reports the authentication scopes required
+// by this package.
 func DefaultAuthScopes() []string {
 	return []string{
 		"https://www.googleapis.com/auth/cloud-platform",
diff --git a/speech/apiv1/mock_test.go b/speech/apiv1/mock_test.go
index 2416c72..331e0d6 100644
--- a/speech/apiv1/mock_test.go
+++ b/speech/apiv1/mock_test.go
@@ -39,6 +39,7 @@
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/metadata"
+	gstatus "google.golang.org/grpc/status"
 )
 
 var _ = io.EOF
@@ -187,7 +188,7 @@
 
 func TestSpeechRecognizeError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockSpeech.err = grpc.Errorf(errCode, "test error")
+	mockSpeech.err = gstatus.Error(errCode, "test error")
 
 	var encoding speechpb.RecognitionConfig_AudioEncoding = speechpb.RecognitionConfig_FLAC
 	var sampleRateHertz int32 = 44100
@@ -215,7 +216,9 @@
 
 	resp, err := c.Recognize(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -323,7 +326,9 @@
 	}
 	resp, err := respLRO.Wait(context.Background())
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -370,7 +375,7 @@
 
 func TestSpeechStreamingRecognizeError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockSpeech.err = grpc.Errorf(errCode, "test error")
+	mockSpeech.err = gstatus.Error(errCode, "test error")
 
 	var request *speechpb.StreamingRecognizeRequest = &speechpb.StreamingRecognizeRequest{}
 
@@ -391,7 +396,9 @@
 	}
 	resp, err := stream.Recv()
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
diff --git a/speech/apiv1/speech_client.go b/speech/apiv1/speech_client.go
index 1ae84db..fa6eedc 100644
--- a/speech/apiv1/speech_client.go
+++ b/speech/apiv1/speech_client.go
@@ -60,17 +60,6 @@
 				})
 			}),
 		},
-		{"default", "non_idempotent"}: {
-			gax.WithRetry(func() gax.Retryer {
-				return gax.OnCodes([]codes.Code{
-					codes.Unavailable,
-				}, gax.Backoff{
-					Initial:    100 * time.Millisecond,
-					Max:        60000 * time.Millisecond,
-					Multiplier: 1.3,
-				})
-			}),
-		},
 	}
 	return &CallOptions{
 		Recognize:            retry[[2]string{"default", "idempotent"}],
diff --git a/speech/apiv1beta1/doc.go b/speech/apiv1beta1/doc.go
index 97f9095..1bd7911 100644
--- a/speech/apiv1beta1/doc.go
+++ b/speech/apiv1beta1/doc.go
@@ -15,7 +15,7 @@
 // AUTO-GENERATED CODE. DO NOT EDIT.
 
 // Package speech is an experimental, auto-generated package for the
-// speech API.
+// Google Cloud Speech API.
 //
 // Google Cloud Speech API.
 package speech // import "cloud.google.com/go/speech/apiv1beta1"
@@ -32,6 +32,8 @@
 	return metadata.NewOutgoingContext(ctx, md)
 }
 
+// DefaultAuthScopes reports the authentication scopes required
+// by this package.
 func DefaultAuthScopes() []string {
 	return []string{
 		"https://www.googleapis.com/auth/cloud-platform",
diff --git a/speech/apiv1beta1/mock_test.go b/speech/apiv1beta1/mock_test.go
index 2a2f328..03cd96f 100644
--- a/speech/apiv1beta1/mock_test.go
+++ b/speech/apiv1beta1/mock_test.go
@@ -39,6 +39,7 @@
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/metadata"
+	gstatus "google.golang.org/grpc/status"
 )
 
 var _ = io.EOF
@@ -185,7 +186,7 @@
 
 func TestSpeechSyncRecognizeError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockSpeech.err = grpc.Errorf(errCode, "test error")
+	mockSpeech.err = gstatus.Error(errCode, "test error")
 
 	var encoding speechpb.RecognitionConfig_AudioEncoding = speechpb.RecognitionConfig_FLAC
 	var sampleRate int32 = 44100
@@ -211,7 +212,9 @@
 
 	resp, err := c.SyncRecognize(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -315,7 +318,9 @@
 	}
 	resp, err := respLRO.Wait(context.Background())
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -365,7 +370,7 @@
 
 func TestSpeechStreamingRecognizeError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockSpeech.err = grpc.Errorf(errCode, "test error")
+	mockSpeech.err = gstatus.Error(errCode, "test error")
 
 	var request *speechpb.StreamingRecognizeRequest = &speechpb.StreamingRecognizeRequest{}
 
@@ -386,7 +391,9 @@
 	}
 	resp, err := stream.Recv()
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
diff --git a/speech/apiv1beta1/speech_client.go b/speech/apiv1beta1/speech_client.go
index 4b04919..609d7b2 100644
--- a/speech/apiv1beta1/speech_client.go
+++ b/speech/apiv1beta1/speech_client.go
@@ -60,17 +60,6 @@
 				})
 			}),
 		},
-		{"default", "non_idempotent"}: {
-			gax.WithRetry(func() gax.Retryer {
-				return gax.OnCodes([]codes.Code{
-					codes.Unavailable,
-				}, gax.Backoff{
-					Initial:    100 * time.Millisecond,
-					Max:        60000 * time.Millisecond,
-					Multiplier: 1.3,
-				})
-			}),
-		},
 	}
 	return &CallOptions{
 		SyncRecognize:      retry[[2]string{"default", "idempotent"}],
diff --git a/trace/apiv1/doc.go b/trace/apiv1/doc.go
index 0b04376..b5878ca 100644
--- a/trace/apiv1/doc.go
+++ b/trace/apiv1/doc.go
@@ -15,7 +15,7 @@
 // AUTO-GENERATED CODE. DO NOT EDIT.
 
 // Package trace is an experimental, auto-generated package for the
-// trace API.
+// Stackdriver Trace API.
 //
 // Send and retrieve trace data from Stackdriver Trace. Data is generated and
 // available by default for all App Engine applications. Data from other
@@ -37,6 +37,8 @@
 	return metadata.NewOutgoingContext(ctx, md)
 }
 
+// DefaultAuthScopes reports the authentication scopes required
+// by this package.
 func DefaultAuthScopes() []string {
 	return []string{
 		"https://www.googleapis.com/auth/cloud-platform",
diff --git a/trace/apiv1/mock_test.go b/trace/apiv1/mock_test.go
index b8f338a..c69283b 100644
--- a/trace/apiv1/mock_test.go
+++ b/trace/apiv1/mock_test.go
@@ -39,6 +39,7 @@
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/metadata"
+	gstatus "google.golang.org/grpc/status"
 )
 
 var _ = io.EOF
@@ -159,7 +160,7 @@
 
 func TestTraceServicePatchTracesError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockTrace.err = grpc.Errorf(errCode, "test error")
+	mockTrace.err = gstatus.Error(errCode, "test error")
 
 	var projectId string = "projectId-1969970175"
 	var traces *cloudtracepb.Traces = &cloudtracepb.Traces{}
@@ -175,7 +176,9 @@
 
 	err = c.PatchTraces(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 }
@@ -221,7 +224,7 @@
 
 func TestTraceServiceGetTraceError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockTrace.err = grpc.Errorf(errCode, "test error")
+	mockTrace.err = gstatus.Error(errCode, "test error")
 
 	var projectId string = "projectId-1969970175"
 	var traceId string = "traceId1270300245"
@@ -237,7 +240,9 @@
 
 	resp, err := c.GetTrace(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
@@ -293,7 +298,7 @@
 
 func TestTraceServiceListTracesError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockTrace.err = grpc.Errorf(errCode, "test error")
+	mockTrace.err = gstatus.Error(errCode, "test error")
 
 	var projectId string = "projectId-1969970175"
 	var request = &cloudtracepb.ListTracesRequest{
@@ -307,7 +312,9 @@
 
 	resp, err := c.ListTraces(context.Background(), request).Next()
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
diff --git a/trace/apiv1/trace_client_example_test.go b/trace/apiv1/trace_client_example_test.go
index 733c591..ee885a7 100644
--- a/trace/apiv1/trace_client_example_test.go
+++ b/trace/apiv1/trace_client_example_test.go
@@ -19,6 +19,7 @@
 import (
 	"cloud.google.com/go/trace/apiv1"
 	"golang.org/x/net/context"
+	"google.golang.org/api/iterator"
 	cloudtracepb "google.golang.org/genproto/googleapis/devtools/cloudtrace/v1"
 )
 
@@ -79,9 +80,11 @@
 	it := c.ListTraces(ctx, req)
 	for {
 		resp, err := it.Next()
+		if err == iterator.Done {
+			break
+		}
 		if err != nil {
 			// TODO: Handle error.
-			break
 		}
 		// TODO: Use resp.
 		_ = resp
diff --git a/videointelligence/apiv1beta1/doc.go b/videointelligence/apiv1beta1/doc.go
index 70ec302..0240b18 100644
--- a/videointelligence/apiv1beta1/doc.go
+++ b/videointelligence/apiv1beta1/doc.go
@@ -15,7 +15,7 @@
 // AUTO-GENERATED CODE. DO NOT EDIT.
 
 // Package videointelligence is an experimental, auto-generated package for the
-// videointelligence API.
+// Google Cloud Video Intelligence API.
 //
 // Google Cloud Video Intelligence API.
 //
@@ -34,6 +34,8 @@
 	return metadata.NewOutgoingContext(ctx, md)
 }
 
+// DefaultAuthScopes reports the authentication scopes required
+// by this package.
 func DefaultAuthScopes() []string {
 	return []string{
 		"https://www.googleapis.com/auth/cloud-platform",
diff --git a/videointelligence/apiv1beta1/mock_test.go b/videointelligence/apiv1beta1/mock_test.go
index df5c8a7..7615da5 100644
--- a/videointelligence/apiv1beta1/mock_test.go
+++ b/videointelligence/apiv1beta1/mock_test.go
@@ -39,6 +39,7 @@
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/metadata"
+	gstatus "google.golang.org/grpc/status"
 )
 
 var _ = io.EOF
@@ -124,7 +125,7 @@
 		Features: features,
 	}
 
-	c, err := NewVideoIntelligenceClient(context.Background(), clientOpt)
+	c, err := NewClient(context.Background(), clientOpt)
 	if err != nil {
 		t.Fatal(err)
 	}
@@ -169,7 +170,7 @@
 		Features: features,
 	}
 
-	c, err := NewVideoIntelligenceClient(context.Background(), clientOpt)
+	c, err := NewClient(context.Background(), clientOpt)
 	if err != nil {
 		t.Fatal(err)
 	}
@@ -180,7 +181,9 @@
 	}
 	resp, err := respLRO.Wait(context.Background())
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp
diff --git a/videointelligence/apiv1beta1/video_intelligence_client.go b/videointelligence/apiv1beta1/video_intelligence_client.go
index 9ad1746..13cfbba 100644
--- a/videointelligence/apiv1beta1/video_intelligence_client.go
+++ b/videointelligence/apiv1beta1/video_intelligence_client.go
@@ -32,19 +32,19 @@
 	"google.golang.org/grpc/codes"
 )
 
-// VideoIntelligenceCallOptions contains the retry settings for each method of VideoIntelligenceClient.
-type VideoIntelligenceCallOptions struct {
+// CallOptions contains the retry settings for each method of Client.
+type CallOptions struct {
 	AnnotateVideo []gax.CallOption
 }
 
-func defaultVideoIntelligenceClientOptions() []option.ClientOption {
+func defaultClientOptions() []option.ClientOption {
 	return []option.ClientOption{
 		option.WithEndpoint("videointelligence.googleapis.com:443"),
 		option.WithScopes(DefaultAuthScopes()...),
 	}
 }
 
-func defaultVideoIntelligenceCallOptions() *VideoIntelligenceCallOptions {
+func defaultCallOptions() *CallOptions {
 	retry := map[[2]string][]gax.CallOption{
 		{"default", "idempotent"}: {
 			gax.WithRetry(func() gax.Retryer {
@@ -59,18 +59,18 @@
 			}),
 		},
 	}
-	return &VideoIntelligenceCallOptions{
+	return &CallOptions{
 		AnnotateVideo: retry[[2]string{"default", "idempotent"}],
 	}
 }
 
-// VideoIntelligenceClient is a client for interacting with Google Cloud Video Intelligence API.
-type VideoIntelligenceClient struct {
+// Client is a client for interacting with Google Cloud Video Intelligence API.
+type Client struct {
 	// The connection to the service.
 	conn *grpc.ClientConn
 
 	// The gRPC API client.
-	videoIntelligenceClient videointelligencepb.VideoIntelligenceServiceClient
+	client videointelligencepb.VideoIntelligenceServiceClient
 
 	// LROClient is used internally to handle longrunning operations.
 	// It is exposed so that its CallOptions can be modified if required.
@@ -78,25 +78,25 @@
 	LROClient *lroauto.OperationsClient
 
 	// The call options for this service.
-	CallOptions *VideoIntelligenceCallOptions
+	CallOptions *CallOptions
 
 	// The metadata to be sent with each request.
 	xGoogHeader []string
 }
 
-// NewVideoIntelligenceClient creates a new video intelligence service client.
+// NewClient creates a new video intelligence service client.
 //
 // Service that implements Google Cloud Video Intelligence API.
-func NewVideoIntelligenceClient(ctx context.Context, opts ...option.ClientOption) (*VideoIntelligenceClient, error) {
-	conn, err := transport.DialGRPC(ctx, append(defaultVideoIntelligenceClientOptions(), opts...)...)
+func NewClient(ctx context.Context, opts ...option.ClientOption) (*Client, error) {
+	conn, err := transport.DialGRPC(ctx, append(defaultClientOptions(), opts...)...)
 	if err != nil {
 		return nil, err
 	}
-	c := &VideoIntelligenceClient{
+	c := &Client{
 		conn:        conn,
-		CallOptions: defaultVideoIntelligenceCallOptions(),
+		CallOptions: defaultCallOptions(),
 
-		videoIntelligenceClient: videointelligencepb.NewVideoIntelligenceServiceClient(conn),
+		client: videointelligencepb.NewVideoIntelligenceServiceClient(conn),
 	}
 	c.SetGoogleClientInfo()
 
@@ -114,20 +114,20 @@
 }
 
 // Connection returns the client's connection to the API service.
-func (c *VideoIntelligenceClient) Connection() *grpc.ClientConn {
+func (c *Client) Connection() *grpc.ClientConn {
 	return c.conn
 }
 
 // Close closes the connection to the API service. The user should invoke this when
 // the client is no longer required.
-func (c *VideoIntelligenceClient) Close() error {
+func (c *Client) Close() error {
 	return c.conn.Close()
 }
 
 // SetGoogleClientInfo sets the name and version of the application in
 // the `x-goog-api-client` header passed on each request. Intended for
 // use by Google-written clients.
-func (c *VideoIntelligenceClient) SetGoogleClientInfo(keyval ...string) {
+func (c *Client) SetGoogleClientInfo(keyval ...string) {
 	kv := append([]string{"gl-go", version.Go()}, keyval...)
 	kv = append(kv, "gapic", version.Repo, "gax", gax.Version, "grpc", grpc.Version)
 	c.xGoogHeader = []string{gax.XGoogHeader(kv...)}
@@ -137,13 +137,13 @@
 // retrieved through the `google.longrunning.Operations` interface.
 // `Operation.metadata` contains `AnnotateVideoProgress` (progress).
 // `Operation.response` contains `AnnotateVideoResponse` (results).
-func (c *VideoIntelligenceClient) AnnotateVideo(ctx context.Context, req *videointelligencepb.AnnotateVideoRequest, opts ...gax.CallOption) (*AnnotateVideoOperation, error) {
+func (c *Client) AnnotateVideo(ctx context.Context, req *videointelligencepb.AnnotateVideoRequest, opts ...gax.CallOption) (*AnnotateVideoOperation, error) {
 	ctx = insertXGoog(ctx, c.xGoogHeader)
 	opts = append(c.CallOptions.AnnotateVideo[0:len(c.CallOptions.AnnotateVideo):len(c.CallOptions.AnnotateVideo)], opts...)
 	var resp *longrunningpb.Operation
 	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
 		var err error
-		resp, err = c.videoIntelligenceClient.AnnotateVideo(ctx, req, settings.GRPC...)
+		resp, err = c.client.AnnotateVideo(ctx, req, settings.GRPC...)
 		return err
 	}, opts...)
 	if err != nil {
@@ -161,7 +161,7 @@
 
 // AnnotateVideoOperation returns a new AnnotateVideoOperation from a given name.
 // The name must be that of a previously created AnnotateVideoOperation, possibly from a different process.
-func (c *VideoIntelligenceClient) AnnotateVideoOperation(name string) *AnnotateVideoOperation {
+func (c *Client) AnnotateVideoOperation(name string) *AnnotateVideoOperation {
 	return &AnnotateVideoOperation{
 		lro: longrunning.InternalNewOperation(c.LROClient, &longrunningpb.Operation{Name: name}),
 	}
diff --git a/videointelligence/apiv1beta1/video_intelligence_client_example_test.go b/videointelligence/apiv1beta1/video_intelligence_client_example_test.go
index 6ee4079..b858b39 100644
--- a/videointelligence/apiv1beta1/video_intelligence_client_example_test.go
+++ b/videointelligence/apiv1beta1/video_intelligence_client_example_test.go
@@ -22,9 +22,9 @@
 	videointelligencepb "google.golang.org/genproto/googleapis/cloud/videointelligence/v1beta1"
 )
 
-func ExampleNewVideoIntelligenceClient() {
+func ExampleNewClient() {
 	ctx := context.Background()
-	c, err := videointelligence.NewVideoIntelligenceClient(ctx)
+	c, err := videointelligence.NewClient(ctx)
 	if err != nil {
 		// TODO: Handle error.
 	}
@@ -32,9 +32,9 @@
 	_ = c
 }
 
-func ExampleVideoIntelligenceClient_AnnotateVideo() {
+func ExampleClient_AnnotateVideo() {
 	ctx := context.Background()
-	c, err := videointelligence.NewVideoIntelligenceClient(ctx)
+	c, err := videointelligence.NewClient(ctx)
 	if err != nil {
 		// TODO: Handle error.
 	}
diff --git a/vision/apiv1/doc.go b/vision/apiv1/doc.go
index a26220c..b86cca3 100644
--- a/vision/apiv1/doc.go
+++ b/vision/apiv1/doc.go
@@ -15,7 +15,7 @@
 // AUTO-GENERATED CODE. DO NOT EDIT.
 
 // Package vision is an experimental, auto-generated package for the
-// vision API.
+// Google Cloud Vision API.
 //
 // Integrates Google Vision features, including image labeling, face, logo,
 // and landmark detection, optical character recognition (OCR), and detection
@@ -36,6 +36,8 @@
 	return metadata.NewOutgoingContext(ctx, md)
 }
 
+// DefaultAuthScopes reports the authentication scopes required
+// by this package.
 func DefaultAuthScopes() []string {
 	return []string{
 		"https://www.googleapis.com/auth/cloud-platform",
diff --git a/vision/apiv1/mock_test.go b/vision/apiv1/mock_test.go
index 03446c1..9d47da7 100644
--- a/vision/apiv1/mock_test.go
+++ b/vision/apiv1/mock_test.go
@@ -38,6 +38,7 @@
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/metadata"
+	gstatus "google.golang.org/grpc/status"
 )
 
 var _ = io.EOF
@@ -135,7 +136,7 @@
 
 func TestImageAnnotatorBatchAnnotateImagesError(t *testing.T) {
 	errCode := codes.PermissionDenied
-	mockImageAnnotator.err = grpc.Errorf(errCode, "test error")
+	mockImageAnnotator.err = gstatus.Error(errCode, "test error")
 
 	var requests []*visionpb.AnnotateImageRequest = nil
 	var request = &visionpb.BatchAnnotateImagesRequest{
@@ -149,7 +150,9 @@
 
 	resp, err := c.BatchAnnotateImages(context.Background(), request)
 
-	if c := grpc.Code(err); c != errCode {
+	if st, ok := gstatus.FromError(err); !ok {
+		t.Errorf("got error %v, expected grpc error", err)
+	} else if c := st.Code(); c != errCode {
 		t.Errorf("got error code %q, want %q", c, errCode)
 	}
 	_ = resp