Skip to content

Commit

Permalink
credentials/alts: Assume not running on GCP if DMI not present (#2996)
Browse files Browse the repository at this point in the history
fixes #2995
  • Loading branch information
mwhudson authored and cesarghali committed Aug 27, 2019
1 parent 45bd284 commit d5a36f0
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 13 deletions.
3 changes: 3 additions & 0 deletions credentials/alts/utils.go
Expand Up @@ -83,6 +83,9 @@ var (
// running on GCP.
func isRunningOnGCP() bool {
manufacturer, err := readManufacturer()
if os.IsNotExist(err) {
return false
}
if err != nil {
log.Fatalf("failure to read manufacturer information: %v", err)
}
Expand Down
47 changes: 34 additions & 13 deletions credentials/alts/utils_test.go
Expand Up @@ -21,13 +21,42 @@ package alts
import (
"context"
"io"
"os"
"strings"
"testing"

altspb "google.golang.org/grpc/credentials/alts/internal/proto/grpc_gcp"
"google.golang.org/grpc/peer"
)

func setupManufacturerReader(testOS string, reader func() (io.Reader, error)) func() {
tmpOS := runningOS
tmpReader := manufacturerReader

// Set test OS and reader function.
runningOS = testOS
manufacturerReader = reader
return func() {
runningOS = tmpOS
manufacturerReader = tmpReader
}

}

func setup(testOS string, testReader io.Reader) func() {
reader := func() (io.Reader, error) {
return testReader, nil
}
return setupManufacturerReader(testOS, reader)
}

func setupError(testOS string, err error) func() {
reader := func() (io.Reader, error) {
return nil, err
}
return setupManufacturerReader(testOS, reader)
}

func TestIsRunningOnGCP(t *testing.T) {
for _, tc := range []struct {
description string
Expand All @@ -53,20 +82,12 @@ func TestIsRunningOnGCP(t *testing.T) {
}
}

func setup(testOS string, testReader io.Reader) func() {
tmpOS := runningOS
tmpReader := manufacturerReader

// Set test OS and reader function.
runningOS = testOS
manufacturerReader = func() (io.Reader, error) {
return testReader, nil
}

return func() {
runningOS = tmpOS
manufacturerReader = tmpReader
func TestIsRunningOnGCPNoProductNameFile(t *testing.T) {
reverseFunc := setupError("linux", os.ErrNotExist)
if isRunningOnGCP() {
t.Errorf("ErrNotExist: isRunningOnGCP()=true, want false")
}
reverseFunc()
}

func TestAuthInfoFromContext(t *testing.T) {
Expand Down

0 comments on commit d5a36f0

Please sign in to comment.