Report scope in e2e test metrics

This commit is contained in:
Clayton Coleman 2017-09-11 21:50:06 -04:00
parent c13a3c0320
commit 30a92a8f0a
No known key found for this signature in database
GPG Key ID: 3D16906B4F1C5CB3
2 changed files with 11 additions and 8 deletions

View File

@ -230,6 +230,7 @@ type APICall struct {
Resource string `json:"resource"` Resource string `json:"resource"`
Subresource string `json:"subresource"` Subresource string `json:"subresource"`
Verb string `json:"verb"` Verb string `json:"verb"`
Scope string `json:"scope"`
Latency LatencyMetric `json:"latency"` Latency LatencyMetric `json:"latency"`
Count int `json:"count"` Count int `json:"count"`
} }
@ -261,14 +262,14 @@ func (a *APIResponsiveness) Less(i, j int) bool {
// Set request latency for a particular quantile in the APICall metric entry (creating one if necessary). // Set request latency for a particular quantile in the APICall metric entry (creating one if necessary).
// 0 <= quantile <=1 (e.g. 0.95 is 95%tile, 0.5 is median) // 0 <= quantile <=1 (e.g. 0.95 is 95%tile, 0.5 is median)
// Only 0.5, 0.9 and 0.99 quantiles are supported. // Only 0.5, 0.9 and 0.99 quantiles are supported.
func (a *APIResponsiveness) addMetricRequestLatency(resource, subresource, verb string, quantile float64, latency time.Duration) { func (a *APIResponsiveness) addMetricRequestLatency(resource, subresource, verb, scope string, quantile float64, latency time.Duration) {
for i, apicall := range a.APICalls { for i, apicall := range a.APICalls {
if apicall.Resource == resource && apicall.Subresource == subresource && apicall.Verb == verb { if apicall.Resource == resource && apicall.Subresource == subresource && apicall.Verb == verb && apicall.Scope == scope {
a.APICalls[i] = setQuantileAPICall(apicall, quantile, latency) a.APICalls[i] = setQuantileAPICall(apicall, quantile, latency)
return return
} }
} }
apicall := setQuantileAPICall(APICall{Resource: resource, Subresource: subresource, Verb: verb}, quantile, latency) apicall := setQuantileAPICall(APICall{Resource: resource, Subresource: subresource, Verb: verb, Scope: scope}, quantile, latency)
a.APICalls = append(a.APICalls, apicall) a.APICalls = append(a.APICalls, apicall)
} }
@ -292,14 +293,14 @@ func setQuantile(metric *LatencyMetric, quantile float64, latency time.Duration)
} }
// Add request count to the APICall metric entry (creating one if necessary). // Add request count to the APICall metric entry (creating one if necessary).
func (a *APIResponsiveness) addMetricRequestCount(resource, subresource, verb string, count int) { func (a *APIResponsiveness) addMetricRequestCount(resource, subresource, verb, scope string, count int) {
for i, apicall := range a.APICalls { for i, apicall := range a.APICalls {
if apicall.Resource == resource && apicall.Subresource == subresource && apicall.Verb == verb { if apicall.Resource == resource && apicall.Subresource == subresource && apicall.Verb == verb && apicall.Scope == scope {
a.APICalls[i].Count += count a.APICalls[i].Count += count
return return
} }
} }
apicall := APICall{Resource: resource, Subresource: subresource, Verb: verb, Count: count} apicall := APICall{Resource: resource, Subresource: subresource, Verb: verb, Count: count, Scope: scope}
a.APICalls = append(a.APICalls, apicall) a.APICalls = append(a.APICalls, apicall)
} }
@ -332,6 +333,7 @@ func readLatencyMetrics(c clientset.Interface) (*APIResponsiveness, error) {
resource := string(sample.Metric["resource"]) resource := string(sample.Metric["resource"])
subresource := string(sample.Metric["subresource"]) subresource := string(sample.Metric["subresource"])
verb := string(sample.Metric["verb"]) verb := string(sample.Metric["verb"])
scope := string(sample.Metric["scope"])
if ignoredResources.Has(resource) || ignoredVerbs.Has(verb) { if ignoredResources.Has(resource) || ignoredVerbs.Has(verb) {
continue continue
} }
@ -343,10 +345,10 @@ func readLatencyMetrics(c clientset.Interface) (*APIResponsiveness, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
a.addMetricRequestLatency(resource, subresource, verb, quantile, time.Duration(int64(latency))*time.Microsecond) a.addMetricRequestLatency(resource, subresource, verb, scope, quantile, time.Duration(int64(latency))*time.Microsecond)
case "apiserver_request_count": case "apiserver_request_count":
count := sample.Value count := sample.Value
a.addMetricRequestCount(resource, subresource, verb, int(count)) a.addMetricRequestCount(resource, subresource, verb, scope, int(count))
} }
} }

View File

@ -44,6 +44,7 @@ func ApiCallToPerfData(apicalls *APIResponsiveness) *perftype.PerfData {
"Verb": apicall.Verb, "Verb": apicall.Verb,
"Resource": apicall.Resource, "Resource": apicall.Resource,
"Subresource": apicall.Subresource, "Subresource": apicall.Subresource,
"Scope": apicall.Scope,
"Count": fmt.Sprintf("%v", apicall.Count), "Count": fmt.Sprintf("%v", apicall.Count),
}, },
} }