@@ -31,19 +31,21 @@ import (
3131// uploaded data.
3232type MockMetricServer struct {
3333 monitoring.UnimplementedMetricServiceServer
34- uploadedMetricDescriptors map [string ]* metric.MetricDescriptor
35- uploadedMetricDescriptorsLock sync.Mutex
36- uploadedPoints map [string ]* validation.PreviousPoint
37- uploadedPointsLock sync.Mutex
34+ metricDescriptorData * validation.MetricDescriptorData
35+ uploadedPoints map [string ]* validation.PreviousPoint
36+ uploadedPointsLock sync.Mutex
3837}
3938
4039// NewMockMetricServer creates a new MockMetricServer and returns a pointer to it.
4140func NewMockMetricServer () * MockMetricServer {
4241 uploadedMetricDescriptors := make (map [string ]* metric.MetricDescriptor )
42+ metricDescriptorData := & validation.MetricDescriptorData {
43+ UploadedMetricDescriptors : uploadedMetricDescriptors ,
44+ }
4345 uploadedPoints := make (map [string ]* validation.PreviousPoint )
4446 return & MockMetricServer {
45- uploadedMetricDescriptors : uploadedMetricDescriptors ,
46- uploadedPoints : uploadedPoints ,
47+ metricDescriptorData : metricDescriptorData ,
48+ uploadedPoints : uploadedPoints ,
4749 }
4850}
4951
@@ -77,9 +79,9 @@ func (s *MockMetricServer) GetMetricDescriptor(ctx context.Context, req *monitor
7779 return nil , err
7880 }
7981
80- s .uploadedMetricDescriptorsLock .Lock ()
81- defer s .uploadedMetricDescriptorsLock .Unlock ()
82- metricDescriptor , err := validation .AccessMetricDescriptor (s .uploadedMetricDescriptors , req .Name )
82+ s .metricDescriptorData . MetricDescriptorsLock .Lock ()
83+ defer s .metricDescriptorData . MetricDescriptorsLock .Unlock ()
84+ metricDescriptor , err := validation .AccessMetricDescriptor (s .metricDescriptorData . UploadedMetricDescriptors , req .Name )
8385 if err != nil {
8486 return nil , err
8587 }
@@ -92,23 +94,28 @@ func (s *MockMetricServer) GetMetricDescriptor(ctx context.Context, req *monitor
9294func (s * MockMetricServer ) CreateMetricDescriptor (ctx context.Context , req * monitoring.CreateMetricDescriptorRequest ,
9395) (* metric.MetricDescriptor , error ) {
9496 if err := validation .ValidateRequiredFields (req ); err != nil {
97+ addMetricDescriptorToSummary (& s .metricDescriptorData .MetricDescriptorSummary , req .MetricDescriptor , err .Error ())
9598 return nil , err
9699 }
97100
98101 if err := validation .ValidateProjectName (req .Name ); err != nil {
102+ addMetricDescriptorToSummary (& s .metricDescriptorData .MetricDescriptorSummary , req .MetricDescriptor , err .Error ())
99103 return nil , err
100104 }
101105
102106 if err := validation .ValidateCreateMetricDescriptor (req .MetricDescriptor ); err != nil {
107+ addMetricDescriptorToSummary (& s .metricDescriptorData .MetricDescriptorSummary , req .MetricDescriptor , err .Error ())
103108 return nil , err
104109 }
105110
106- s .uploadedMetricDescriptorsLock .Lock ()
107- defer s .uploadedMetricDescriptorsLock .Unlock ()
108- if err := validation .AddMetricDescriptor (s .uploadedMetricDescriptors , req .MetricDescriptor .Type , req .MetricDescriptor ); err != nil {
111+ s .metricDescriptorData .MetricDescriptorsLock .Lock ()
112+ defer s .metricDescriptorData .MetricDescriptorsLock .Unlock ()
113+ if err := validation .AddMetricDescriptor (s .metricDescriptorData .UploadedMetricDescriptors , req .MetricDescriptor .Type , req .MetricDescriptor ); err != nil {
114+ addMetricDescriptorToSummary (& s .metricDescriptorData .MetricDescriptorSummary , req .MetricDescriptor , err .Error ())
109115 return nil , err
110116 }
111117
118+ addMetricDescriptorToSummary (& s .metricDescriptorData .MetricDescriptorSummary , req .MetricDescriptor , "OK" )
112119 return req .MetricDescriptor , nil
113120}
114121
@@ -120,9 +127,9 @@ func (s *MockMetricServer) DeleteMetricDescriptor(ctx context.Context, req *moni
120127 return nil , err
121128 }
122129
123- s .uploadedMetricDescriptorsLock .Lock ()
124- defer s .uploadedMetricDescriptorsLock .Unlock ()
125- if err := validation .RemoveMetricDescriptor (s .uploadedMetricDescriptors , req .Name ); err != nil {
130+ s .metricDescriptorData . MetricDescriptorsLock .Lock ()
131+ defer s .metricDescriptorData . MetricDescriptorsLock .Unlock ()
132+ if err := validation .RemoveMetricDescriptor (s .metricDescriptorData . UploadedMetricDescriptors , req .Name ); err != nil {
126133 return nil , err
127134 }
128135
@@ -157,7 +164,7 @@ func (s *MockMetricServer) CreateTimeSeries(ctx context.Context, req *monitoring
157164 if err := validation .ValidateProjectName (req .Name ); err != nil {
158165 return nil , err
159166 }
160- if err := validation .ValidateCreateTimeSeries (req .TimeSeries , s .uploadedMetricDescriptors , s .uploadedPoints ); err != nil {
167+ if err := validation .ValidateCreateTimeSeries (req .TimeSeries , s .metricDescriptorData . UploadedMetricDescriptors , s .uploadedPoints ); err != nil {
161168 return nil , err
162169 }
163170 s .uploadedPointsLock .Lock ()
@@ -178,3 +185,17 @@ func (s *MockMetricServer) ListTimeSeries(ctx context.Context, req *monitoring.L
178185 ExecutionErrors : []* status.Status {},
179186 }, nil
180187}
188+
189+ // addMetricDescriptorToSummary adds the given metric descriptor and status to the summary.
190+ func addMetricDescriptorToSummary (summary * []* validation.DescriptorStatus , metricDescriptor * metric.MetricDescriptor , err string ) {
191+ metricDescriptorStatus := & validation.DescriptorStatus {
192+ MetricDescriptor : metricDescriptor ,
193+ Status : err ,
194+ }
195+ * summary = append (* summary , metricDescriptorStatus )
196+ }
197+
198+ // MetricDescriptorSummary returns the metric descriptor data to display in the summary page.
199+ func (s * MockMetricServer ) MetricDescriptorSummary () []* validation.DescriptorStatus {
200+ return s .metricDescriptorData .MetricDescriptorSummary
201+ }
0 commit comments