github.com/onflow/flow-go@v0.35.7-crescendo-preview.23-atree-inlining/module/profiler/uploader_test.go (about) 1 package profiler 2 3 import ( 4 "context" 5 "os" 6 "testing" 7 8 "cloud.google.com/go/profiler/mocks" 9 "github.com/golang/mock/gomock" 10 "github.com/rs/zerolog" 11 "github.com/stretchr/testify/require" 12 "google.golang.org/api/option" 13 pb "google.golang.org/genproto/googleapis/devtools/cloudprofiler/v2" 14 "google.golang.org/grpc" 15 "google.golang.org/grpc/credentials/insecure" 16 ) 17 18 func TestProfilerUpload(t *testing.T) { 19 params := Params{ 20 ProjectID: "project_id", 21 ChainID: "chain_id", 22 Role: "role", 23 Version: "version", 24 Commit: "commit", 25 Instance: "instance", 26 } 27 uploader, err := NewUploader( 28 zerolog.Nop(), 29 params, 30 31 option.WithoutAuthentication(), 32 option.WithGRPCDialOption(grpc.WithTransportCredentials(insecure.NewCredentials())), 33 ) 34 require.NoError(t, err) 35 36 uploaderImpl, ok := uploader.(*UploaderImpl) 37 require.True(t, ok) 38 39 ctrl := gomock.NewController(t) 40 defer ctrl.Finish() 41 42 mock := mocks.NewMockProfilerServiceClient(ctrl) 43 uploaderImpl.client = mock 44 45 mock.EXPECT().CreateOfflineProfile(gomock.Any(), gomock.Any()). 46 Return(&pb.Profile{Name: "test"}, nil). 47 Times(1). 48 Do(func(ctx context.Context, req *pb.CreateOfflineProfileRequest, opts ...grpc.CallOption) { 49 require.Equal(t, "project_id", req.Parent) 50 require.Equal(t, "project_id", req.Profile.Deployment.GetProjectId()) 51 require.Equal(t, "chain_id-role", req.Profile.Deployment.GetTarget()) 52 require.Equal(t, "version-commit", req.Profile.Deployment.GetLabels()["version"]) 53 }) 54 55 f, err := os.CreateTemp("", "example") 56 if err != nil { 57 t.Error(err) 58 } 59 defer os.Remove(f.Name()) 60 defer f.Close() 61 62 err = uploader.Upload(context.Background(), f.Name(), pb.ProfileType_CPU) 63 require.NoError(t, err) 64 }