From b48be3a2c1a9b4b1986e7b8e13624d5f54cd19e0 Mon Sep 17 00:00:00 2001 From: Patrice Arruda Date: Fri, 3 Apr 2020 08:40:19 -0700 Subject: [PATCH] Add a new protobuf message named Upload to upload build metrics. A new protobuf message named Upload is defined to send build metrics to the Android Build Server API after a build is completed. These metrics are collected from googlers only, as described in go/local-developers-metrics-wfh. Bug: b/140638454 Test: m nothing Change-Id: I5e49b5ace053913be2b75673cb1375f4cef37825 Merged-In: I5e49b5ace053913be2b75673cb1375f4cef37825 --- ui/metrics/Android.bp | 9 ++ ui/metrics/upload_proto/regen.sh | 17 ++++ ui/metrics/upload_proto/upload.pb.go | 122 +++++++++++++++++++++++++++ ui/metrics/upload_proto/upload.proto | 35 ++++++++ 4 files changed, 183 insertions(+) create mode 100755 ui/metrics/upload_proto/regen.sh create mode 100644 ui/metrics/upload_proto/upload.pb.go create mode 100644 ui/metrics/upload_proto/upload.proto diff --git a/ui/metrics/Android.bp b/ui/metrics/Android.bp index 529639de5..3596e1019 100644 --- a/ui/metrics/Android.bp +++ b/ui/metrics/Android.bp @@ -17,6 +17,7 @@ bootstrap_go_package { pkgPath: "android/soong/ui/metrics", deps: [ "golang-protobuf-proto", + "soong-ui-metrics_upload_proto", "soong-ui-metrics_proto", "soong-ui-tracer", ], @@ -35,3 +36,11 @@ bootstrap_go_package { ], } +bootstrap_go_package { + name: "soong-ui-metrics_upload_proto", + pkgPath: "android/soong/ui/metrics/upload_proto", + deps: ["golang-protobuf-proto"], + srcs: [ + "upload_proto/upload.pb.go", + ], +} diff --git a/ui/metrics/upload_proto/regen.sh b/ui/metrics/upload_proto/regen.sh new file mode 100755 index 000000000..4521df7bd --- /dev/null +++ b/ui/metrics/upload_proto/regen.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +# Generates the golang source file of upload.proto file. + +set -e + +function die() { echo "ERROR: $1" >&2; exit 1; } + +readonly error_msg="Maybe you need to run 'lunch aosp_arm-eng && m aprotoc blueprint_tools'?" + +if ! hash aprotoc &>/dev/null; then + die "could not find aprotoc. ${error_msg}" +fi + +if ! aprotoc --go_out=paths=source_relative:. upload.proto; then + die "build failed. ${error_msg}" +fi diff --git a/ui/metrics/upload_proto/upload.pb.go b/ui/metrics/upload_proto/upload.pb.go new file mode 100644 index 000000000..1b1e5e843 --- /dev/null +++ b/ui/metrics/upload_proto/upload.pb.go @@ -0,0 +1,122 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// source: upload.proto + +package soong_metrics_upload_proto + +import ( + fmt "fmt" + proto "github.com/golang/protobuf/proto" + math "math" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package + +type Upload struct { + // The timestamp in milliseconds that the build was created. + CreationTimestampMs *uint64 `protobuf:"varint,1,opt,name=creation_timestamp_ms,json=creationTimestampMs" json:"creation_timestamp_ms,omitempty"` + // The timestamp in milliseconds when the build was completed. + CompletionTimestampMs *uint64 `protobuf:"varint,2,opt,name=completion_timestamp_ms,json=completionTimestampMs" json:"completion_timestamp_ms,omitempty"` + // The branch name. + BranchName *string `protobuf:"bytes,3,opt,name=branch_name,json=branchName" json:"branch_name,omitempty"` + // The target name. + TargetName *string `protobuf:"bytes,4,opt,name=target_name,json=targetName" json:"target_name,omitempty"` + // A list of metrics filepaths to upload. + MetricsFiles []string `protobuf:"bytes,5,rep,name=metrics_files,json=metricsFiles" json:"metrics_files,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *Upload) Reset() { *m = Upload{} } +func (m *Upload) String() string { return proto.CompactTextString(m) } +func (*Upload) ProtoMessage() {} +func (*Upload) Descriptor() ([]byte, []int) { + return fileDescriptor_91b94b655bd2a7e5, []int{0} +} + +func (m *Upload) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Upload.Unmarshal(m, b) +} +func (m *Upload) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Upload.Marshal(b, m, deterministic) +} +func (m *Upload) XXX_Merge(src proto.Message) { + xxx_messageInfo_Upload.Merge(m, src) +} +func (m *Upload) XXX_Size() int { + return xxx_messageInfo_Upload.Size(m) +} +func (m *Upload) XXX_DiscardUnknown() { + xxx_messageInfo_Upload.DiscardUnknown(m) +} + +var xxx_messageInfo_Upload proto.InternalMessageInfo + +func (m *Upload) GetCreationTimestampMs() uint64 { + if m != nil && m.CreationTimestampMs != nil { + return *m.CreationTimestampMs + } + return 0 +} + +func (m *Upload) GetCompletionTimestampMs() uint64 { + if m != nil && m.CompletionTimestampMs != nil { + return *m.CompletionTimestampMs + } + return 0 +} + +func (m *Upload) GetBranchName() string { + if m != nil && m.BranchName != nil { + return *m.BranchName + } + return "" +} + +func (m *Upload) GetTargetName() string { + if m != nil && m.TargetName != nil { + return *m.TargetName + } + return "" +} + +func (m *Upload) GetMetricsFiles() []string { + if m != nil { + return m.MetricsFiles + } + return nil +} + +func init() { + proto.RegisterType((*Upload)(nil), "soong_metrics_upload.Upload") +} + +func init() { + proto.RegisterFile("upload.proto", fileDescriptor_91b94b655bd2a7e5) +} + +var fileDescriptor_91b94b655bd2a7e5 = []byte{ + // 201 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0x29, 0x2d, 0xc8, 0xc9, + 0x4f, 0x4c, 0xd1, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x29, 0xce, 0xcf, 0xcf, 0x4b, 0x8f, + 0xcf, 0x4d, 0x2d, 0x29, 0xca, 0x4c, 0x2e, 0x8e, 0x87, 0xc8, 0x29, 0xdd, 0x66, 0xe4, 0x62, 0x0b, + 0x05, 0x33, 0x85, 0x8c, 0xb8, 0x44, 0x93, 0x8b, 0x52, 0x13, 0x4b, 0x32, 0xf3, 0xf3, 0xe2, 0x4b, + 0x32, 0x73, 0x53, 0x8b, 0x4b, 0x12, 0x73, 0x0b, 0xe2, 0x73, 0x8b, 0x25, 0x18, 0x15, 0x18, 0x35, + 0x58, 0x82, 0x84, 0x61, 0x92, 0x21, 0x30, 0x39, 0xdf, 0x62, 0x21, 0x33, 0x2e, 0xf1, 0xe4, 0xfc, + 0xdc, 0x82, 0x9c, 0x54, 0x4c, 0x5d, 0x4c, 0x60, 0x5d, 0xa2, 0x08, 0x69, 0x64, 0x7d, 0xf2, 0x5c, + 0xdc, 0x49, 0x45, 0x89, 0x79, 0xc9, 0x19, 0xf1, 0x79, 0x89, 0xb9, 0xa9, 0x12, 0xcc, 0x0a, 0x8c, + 0x1a, 0x9c, 0x41, 0x5c, 0x10, 0x21, 0xbf, 0xc4, 0xdc, 0x54, 0x90, 0x82, 0x92, 0xc4, 0xa2, 0xf4, + 0xd4, 0x12, 0x88, 0x02, 0x16, 0x88, 0x02, 0x88, 0x10, 0x58, 0x81, 0x32, 0x17, 0x2f, 0xcc, 0x2b, + 0x69, 0x99, 0x39, 0xa9, 0xc5, 0x12, 0xac, 0x0a, 0xcc, 0x1a, 0x9c, 0x41, 0x3c, 0x50, 0x41, 0x37, + 0x90, 0x98, 0x93, 0x4c, 0x94, 0x14, 0x36, 0x5f, 0xc7, 0x83, 0x43, 0x04, 0x10, 0x00, 0x00, 0xff, + 0xff, 0xe2, 0x01, 0x74, 0x65, 0x20, 0x01, 0x00, 0x00, +} diff --git a/ui/metrics/upload_proto/upload.proto b/ui/metrics/upload_proto/upload.proto new file mode 100644 index 000000000..7a9f080e0 --- /dev/null +++ b/ui/metrics/upload_proto/upload.proto @@ -0,0 +1,35 @@ +// Copyright 2020 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto2"; + +package soong_metrics_upload; +option go_package = "soong_metrics_upload_proto"; + +message Upload { + // The timestamp in milliseconds that the build was created. + optional uint64 creation_timestamp_ms = 1; + + // The timestamp in milliseconds when the build was completed. + optional uint64 completion_timestamp_ms = 2; + + // The branch name. + optional string branch_name = 3; + + // The target name. + optional string target_name = 4; + + // A list of metrics filepaths to upload. + repeated string metrics_files = 5; +}