Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
5cb1cccd
Commit
5cb1cccd
authored
Aug 23, 2017
by
Kubernetes Submit Queue
Committed by
GitHub
Aug 23, 2017
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #51138 from yujuhong/alpha-calls
Automatic merge from submit-queue GCE: Add functions for Alpha address and forwarding rules
parents
470eb922
0d1efd5e
Hide whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
131 additions
and
95 deletions
+131
-95
BUILD
pkg/cloudprovider/providers/gce/BUILD
+1
-0
gce_addresses.go
pkg/cloudprovider/providers/gce/gce_addresses.go
+23
-5
gce_addresses_fakes.go
pkg/cloudprovider/providers/gce/gce_addresses_fakes.go
+9
-0
gce_backendservice.go
pkg/cloudprovider/providers/gce/gce_backendservice.go
+1
-5
gce_cert.go
pkg/cloudprovider/providers/gce/gce_cert.go
+1
-5
gce_clusters.go
pkg/cloudprovider/providers/gce/gce_clusters.go
+1
-6
gce_disks.go
pkg/cloudprovider/providers/gce/gce_disks.go
+1
-5
gce_firewall.go
pkg/cloudprovider/providers/gce/gce_firewall.go
+1
-6
gce_forwardingrule.go
pkg/cloudprovider/providers/gce/gce_forwardingrule.go
+24
-6
gce_healthchecks.go
pkg/cloudprovider/providers/gce/gce_healthchecks.go
+1
-6
gce_instancegroup.go
pkg/cloudprovider/providers/gce/gce_instancegroup.go
+2
-9
gce_instances.go
pkg/cloudprovider/providers/gce/gce_instances.go
+1
-4
gce_interfaces.go
pkg/cloudprovider/providers/gce/gce_interfaces.go
+8
-1
gce_loadbalancer.go
pkg/cloudprovider/providers/gce/gce_loadbalancer.go
+1
-5
gce_routes.go
pkg/cloudprovider/providers/gce/gce_routes.go
+1
-5
gce_targetpool.go
pkg/cloudprovider/providers/gce/gce_targetpool.go
+2
-9
gce_targetproxy.go
pkg/cloudprovider/providers/gce/gce_targetproxy.go
+1
-5
gce_urlmap.go
pkg/cloudprovider/providers/gce/gce_urlmap.go
+1
-5
gce_zones.go
pkg/cloudprovider/providers/gce/gce_zones.go
+1
-5
metrics.go
pkg/cloudprovider/providers/gce/metrics.go
+22
-3
metrics_test.go
pkg/cloudprovider/providers/gce/metrics_test.go
+28
-0
No files found.
pkg/cloudprovider/providers/gce/BUILD
View file @
5cb1cccd
...
...
@@ -83,6 +83,7 @@ go_test(
"gce_healthchecks_test.go",
"gce_loadbalancer_external_test.go",
"gce_test.go",
"metrics_test.go",
],
library = ":go_default_library",
deps = [
...
...
pkg/cloudprovider/providers/gce/gce_addresses.go
View file @
5cb1cccd
...
...
@@ -18,17 +18,18 @@ package gce
import
(
"fmt"
"time"
"github.com/golang/glog"
computealpha
"google.golang.org/api/compute/v0.alpha"
compute
"google.golang.org/api/compute/v1"
)
func
newAddressMetricContext
(
request
,
region
string
)
*
metricContext
{
return
&
metricContext
{
start
:
time
.
Now
(),
attributes
:
[]
string
{
"address_"
+
request
,
region
,
unusedMetricLabel
},
}
return
newAddressMetricContextWithVersion
(
request
,
region
,
computeV1Version
)
}
func
newAddressMetricContextWithVersion
(
request
,
region
,
version
string
)
*
metricContext
{
return
newGenericMetricContext
(
"address"
,
request
,
region
,
unusedMetricLabel
,
version
)
}
// ReserveGlobalAddress creates a global address.
...
...
@@ -71,6 +72,16 @@ func (gce *GCECloud) ReserveRegionAddress(addr *compute.Address, region string)
return
gce
.
waitForRegionOp
(
op
,
region
,
mc
)
}
// ReserveAlphaRegionAddress creates an Alpha, regional address.
func
(
gce
*
GCECloud
)
ReserveAlphaRegionAddress
(
addr
*
computealpha
.
Address
,
region
string
)
error
{
mc
:=
newAddressMetricContextWithVersion
(
"reserve"
,
region
,
computeAlphaVersion
)
op
,
err
:=
gce
.
serviceAlpha
.
Addresses
.
Insert
(
gce
.
projectID
,
region
,
addr
)
.
Do
()
if
err
!=
nil
{
return
mc
.
Observe
(
err
)
}
return
gce
.
waitForRegionOp
(
op
,
region
,
mc
)
}
// DeleteRegionAddress deletes a region address by name.
func
(
gce
*
GCECloud
)
DeleteRegionAddress
(
name
,
region
string
)
error
{
mc
:=
newAddressMetricContext
(
"delete"
,
region
)
...
...
@@ -88,6 +99,13 @@ func (gce *GCECloud) GetRegionAddress(name, region string) (*compute.Address, er
return
v
,
mc
.
Observe
(
err
)
}
// GetAlphaRegionAddress returns the Alpha, regional address by name.
func
(
gce
*
GCECloud
)
GetAlphaRegionAddress
(
name
,
region
string
)
(
*
computealpha
.
Address
,
error
)
{
mc
:=
newAddressMetricContextWithVersion
(
"get"
,
region
,
computeAlphaVersion
)
v
,
err
:=
gce
.
serviceAlpha
.
Addresses
.
Get
(
gce
.
projectID
,
region
,
name
)
.
Do
()
return
v
,
mc
.
Observe
(
err
)
}
// GetRegionAddressByIP returns the regional address matching the given IP
// address.
func
(
gce
*
GCECloud
)
GetRegionAddressByIP
(
region
,
ipAddress
string
)
(
*
compute
.
Address
,
error
)
{
...
...
pkg/cloudprovider/providers/gce/gce_addresses_fakes.go
View file @
5cb1cccd
...
...
@@ -20,6 +20,7 @@ import (
"fmt"
"net/http"
computealpha
"google.golang.org/api/compute/v0.alpha"
compute
"google.golang.org/api/compute/v1"
"google.golang.org/api/googleapi"
)
...
...
@@ -103,3 +104,11 @@ func (cas *FakeCloudAddressService) GetRegionAddressByIP(region, ipAddress strin
}
return
nil
,
makeGoogleAPINotFoundError
(
""
)
}
func
(
cas
*
FakeCloudAddressService
)
GetAlphaRegionAddress
(
name
,
region
string
)
(
*
computealpha
.
Address
,
error
)
{
return
nil
,
fmt
.
Errorf
(
"not implemented"
)
}
func
(
cas
*
FakeCloudAddressService
)
ReserveAlphaRegionAddress
(
addr
*
computealpha
.
Address
,
region
string
)
error
{
return
fmt
.
Errorf
(
"not implemented"
)
}
pkg/cloudprovider/providers/gce/gce_backendservice.go
View file @
5cb1cccd
...
...
@@ -18,16 +18,12 @@ package gce
import
(
"net/http"
"time"
compute
"google.golang.org/api/compute/v1"
)
func
newBackendServiceMetricContext
(
request
,
region
string
)
*
metricContext
{
return
&
metricContext
{
start
:
time
.
Now
(),
attributes
:
[]
string
{
"backendservice_"
+
request
,
region
,
unusedMetricLabel
},
}
return
newGenericMetricContext
(
"backendservice"
,
request
,
region
,
unusedMetricLabel
,
computeV1Version
)
}
// GetGlobalBackendService retrieves a backend by name.
...
...
pkg/cloudprovider/providers/gce/gce_cert.go
View file @
5cb1cccd
...
...
@@ -18,16 +18,12 @@ package gce
import
(
"net/http"
"time"
compute
"google.golang.org/api/compute/v1"
)
func
newCertMetricContext
(
request
string
)
*
metricContext
{
return
&
metricContext
{
start
:
time
.
Now
(),
attributes
:
[]
string
{
"cert_"
+
request
,
unusedMetricLabel
,
unusedMetricLabel
},
}
return
newGenericMetricContext
(
"cert"
,
request
,
unusedMetricLabel
,
unusedMetricLabel
,
computeV1Version
)
}
// GetSslCertificate returns the SslCertificate by name.
...
...
pkg/cloudprovider/providers/gce/gce_clusters.go
View file @
5cb1cccd
...
...
@@ -16,13 +16,8 @@ limitations under the License.
package
gce
import
"time"
func
newClustersMetricContext
(
request
,
zone
string
)
*
metricContext
{
return
&
metricContext
{
start
:
time
.
Now
(),
attributes
:
[]
string
{
"clusters_"
+
request
,
unusedMetricLabel
,
zone
},
}
return
newGenericMetricContext
(
"clusters"
,
request
,
unusedMetricLabel
,
zone
,
computeV1Version
)
}
func
(
gce
*
GCECloud
)
ListClusters
()
([]
string
,
error
)
{
...
...
pkg/cloudprovider/providers/gce/gce_disks.go
View file @
5cb1cccd
...
...
@@ -21,7 +21,6 @@ import (
"fmt"
"net/http"
"strings"
"time"
"k8s.io/apimachinery/pkg/types"
"k8s.io/kubernetes/pkg/cloudprovider"
...
...
@@ -85,10 +84,7 @@ type GCEDisk struct {
}
func
newDiskMetricContext
(
request
,
zone
string
)
*
metricContext
{
return
&
metricContext
{
start
:
time
.
Now
(),
attributes
:
[]
string
{
"disk_"
+
request
,
unusedMetricLabel
,
zone
},
}
return
newGenericMetricContext
(
"disk"
,
request
,
unusedMetricLabel
,
zone
,
computeV1Version
)
}
func
(
gce
*
GCECloud
)
AttachDisk
(
diskName
string
,
nodeName
types
.
NodeName
,
readOnly
bool
)
error
{
...
...
pkg/cloudprovider/providers/gce/gce_firewall.go
View file @
5cb1cccd
...
...
@@ -17,16 +17,11 @@ limitations under the License.
package
gce
import
(
"time"
compute
"google.golang.org/api/compute/v1"
)
func
newFirewallMetricContext
(
request
string
)
*
metricContext
{
return
&
metricContext
{
start
:
time
.
Now
(),
attributes
:
[]
string
{
"firewall_"
+
request
,
unusedMetricLabel
,
unusedMetricLabel
},
}
return
newGenericMetricContext
(
"firewall"
,
request
,
unusedMetricLabel
,
unusedMetricLabel
,
computeV1Version
)
}
// GetFirewall returns the Firewall by name.
...
...
pkg/cloudprovider/providers/gce/gce_forwardingrule.go
View file @
5cb1cccd
...
...
@@ -17,16 +17,15 @@ limitations under the License.
package
gce
import
(
"time"
computealpha
"google.golang.org/api/compute/v0.alpha"
compute
"google.golang.org/api/compute/v1"
)
func
newForwardingRuleMetricContext
(
request
,
region
string
)
*
metricContext
{
return
&
metricContext
{
start
:
time
.
Now
(),
attributes
:
[]
string
{
"forwardingrule_"
+
request
,
region
,
unusedMetricLabel
},
}
return
newForwardingRuleMetricContextWithVersion
(
request
,
region
,
computeV1Version
)
}
func
newForwardingRuleMetricContextWithVersion
(
request
,
region
,
version
string
)
*
metricContext
{
return
newGenericMetricContext
(
"forwardingrule"
,
request
,
region
,
unusedMetricLabel
,
version
)
}
// CreateGlobalForwardingRule creates the passed GlobalForwardingRule
...
...
@@ -85,6 +84,13 @@ func (gce *GCECloud) GetRegionForwardingRule(name, region string) (*compute.Forw
return
v
,
mc
.
Observe
(
err
)
}
// GetAlphaRegionForwardingRule returns the Alpha forwarding rule by name & region.
func
(
gce
*
GCECloud
)
GetAlphaRegionForwardingRule
(
name
,
region
string
)
(
*
computealpha
.
ForwardingRule
,
error
)
{
mc
:=
newForwardingRuleMetricContextWithVersion
(
"get"
,
region
,
computeAlphaVersion
)
v
,
err
:=
gce
.
serviceAlpha
.
ForwardingRules
.
Get
(
gce
.
projectID
,
region
,
name
)
.
Do
()
return
v
,
mc
.
Observe
(
err
)
}
// ListRegionForwardingRules lists all RegionalForwardingRules in the project & region.
func
(
gce
*
GCECloud
)
ListRegionForwardingRules
(
region
string
)
(
*
compute
.
ForwardingRuleList
,
error
)
{
mc
:=
newForwardingRuleMetricContext
(
"list"
,
region
)
...
...
@@ -105,6 +111,18 @@ func (gce *GCECloud) CreateRegionForwardingRule(rule *compute.ForwardingRule, re
return
gce
.
waitForRegionOp
(
op
,
region
,
mc
)
}
// CreateAlphaRegionForwardingRule creates and returns an Alpha
// forwarding fule in the given region.
func
(
gce
*
GCECloud
)
CreateAlphaRegionForwardingRule
(
rule
*
computealpha
.
ForwardingRule
,
region
string
)
error
{
mc
:=
newForwardingRuleMetricContextWithVersion
(
"create"
,
region
,
computeAlphaVersion
)
op
,
err
:=
gce
.
serviceAlpha
.
ForwardingRules
.
Insert
(
gce
.
projectID
,
region
,
rule
)
.
Do
()
if
err
!=
nil
{
return
mc
.
Observe
(
err
)
}
return
gce
.
waitForRegionOp
(
op
,
region
,
mc
)
}
// DeleteRegionForwardingRule deletes the RegionalForwardingRule by name & region.
func
(
gce
*
GCECloud
)
DeleteRegionForwardingRule
(
name
,
region
string
)
error
{
mc
:=
newForwardingRuleMetricContext
(
"delete"
,
region
)
...
...
pkg/cloudprovider/providers/gce/gce_healthchecks.go
View file @
5cb1cccd
...
...
@@ -17,8 +17,6 @@ limitations under the License.
package
gce
import
(
"time"
"k8s.io/api/core/v1"
"k8s.io/kubernetes/pkg/master/ports"
utilversion
"k8s.io/kubernetes/pkg/util/version"
...
...
@@ -45,10 +43,7 @@ func init() {
}
func
newHealthcheckMetricContext
(
request
string
)
*
metricContext
{
return
&
metricContext
{
start
:
time
.
Now
(),
attributes
:
[]
string
{
"healthcheck_"
+
request
,
unusedMetricLabel
,
unusedMetricLabel
},
}
return
newGenericMetricContext
(
"healthcheck"
,
request
,
unusedMetricLabel
,
unusedMetricLabel
,
computeV1Version
)
}
// GetHttpHealthCheck returns the given HttpHealthCheck by name.
...
...
pkg/cloudprovider/providers/gce/gce_instancegroup.go
View file @
5cb1cccd
...
...
@@ -16,17 +16,10 @@ limitations under the License.
package
gce
import
(
"time"
compute
"google.golang.org/api/compute/v1"
)
import
compute
"google.golang.org/api/compute/v1"
func
newInstanceGroupMetricContext
(
request
string
,
zone
string
)
*
metricContext
{
return
&
metricContext
{
start
:
time
.
Now
(),
attributes
:
[]
string
{
"instancegroup_"
+
request
,
unusedMetricLabel
,
zone
},
}
return
newGenericMetricContext
(
"instancegroup"
,
request
,
unusedMetricLabel
,
zone
,
computeV1Version
)
}
// CreateInstanceGroup creates an instance group with the given
...
...
pkg/cloudprovider/providers/gce/gce_instances.go
View file @
5cb1cccd
...
...
@@ -41,10 +41,7 @@ const (
)
func
newInstancesMetricContext
(
request
,
zone
string
)
*
metricContext
{
return
&
metricContext
{
start
:
time
.
Now
(),
attributes
:
[]
string
{
"instances_"
+
request
,
unusedMetricLabel
,
zone
},
}
return
newGenericMetricContext
(
"instances"
,
request
,
unusedMetricLabel
,
zone
,
computeV1Version
)
}
func
splitNodesByZone
(
nodes
[]
*
v1
.
Node
)
map
[
string
][]
*
v1
.
Node
{
...
...
pkg/cloudprovider/providers/gce/gce_interfaces.go
View file @
5cb1cccd
...
...
@@ -16,7 +16,10 @@ limitations under the License.
package
gce
import
compute
"google.golang.org/api/compute/v1"
import
(
computealpha
"google.golang.org/api/compute/v0.alpha"
compute
"google.golang.org/api/compute/v1"
)
// CloudAddressService is an interface for managing addresses
type
CloudAddressService
interface
{
...
...
@@ -25,4 +28,8 @@ type CloudAddressService interface {
GetRegionAddressByIP
(
region
,
ipAddress
string
)
(
*
compute
.
Address
,
error
)
// TODO: Mock `DeleteRegionAddress(name, region string) endpoint
// TODO: Mock Global endpoints
// Alpha API.
GetAlphaRegionAddress
(
name
,
region
string
)
(
*
computealpha
.
Address
,
error
)
ReserveAlphaRegionAddress
(
addr
*
computealpha
.
Address
,
region
string
)
error
}
pkg/cloudprovider/providers/gce/gce_loadbalancer.go
View file @
5cb1cccd
...
...
@@ -21,7 +21,6 @@ import (
"fmt"
"net"
"strings"
"time"
"github.com/golang/glog"
...
...
@@ -40,10 +39,7 @@ var (
)
func
newLoadBalancerMetricContext
(
request
,
region
string
)
*
metricContext
{
return
&
metricContext
{
start
:
time
.
Now
(),
attributes
:
[]
string
{
"loadbalancer_"
+
request
,
region
,
unusedMetricLabel
},
}
return
newGenericMetricContext
(
"loadbalancer"
,
request
,
region
,
unusedMetricLabel
,
computeV1Version
)
}
type
lbScheme
string
...
...
pkg/cloudprovider/providers/gce/gce_routes.go
View file @
5cb1cccd
...
...
@@ -20,7 +20,6 @@ import (
"fmt"
"net/http"
"path"
"time"
"k8s.io/apimachinery/pkg/types"
"k8s.io/kubernetes/pkg/cloudprovider"
...
...
@@ -30,10 +29,7 @@ import (
)
func
newRoutesMetricContext
(
request
string
)
*
metricContext
{
return
&
metricContext
{
start
:
time
.
Now
(),
attributes
:
[]
string
{
"routes_"
+
request
,
unusedMetricLabel
,
unusedMetricLabel
},
}
return
newGenericMetricContext
(
"routes"
,
request
,
unusedMetricLabel
,
unusedMetricLabel
,
computeV1Version
)
}
func
(
gce
*
GCECloud
)
ListRoutes
(
clusterName
string
)
([]
*
cloudprovider
.
Route
,
error
)
{
...
...
pkg/cloudprovider/providers/gce/gce_targetpool.go
View file @
5cb1cccd
...
...
@@ -16,17 +16,10 @@ limitations under the License.
package
gce
import
(
"time"
compute
"google.golang.org/api/compute/v1"
)
import
compute
"google.golang.org/api/compute/v1"
func
newTargetPoolMetricContext
(
request
,
region
string
)
*
metricContext
{
return
&
metricContext
{
start
:
time
.
Now
(),
attributes
:
[]
string
{
"targetpool_"
+
request
,
region
,
unusedMetricLabel
},
}
return
newGenericMetricContext
(
"targetpool"
,
request
,
region
,
unusedMetricLabel
,
computeV1Version
)
}
// GetTargetPool returns the TargetPool by name.
...
...
pkg/cloudprovider/providers/gce/gce_targetproxy.go
View file @
5cb1cccd
...
...
@@ -18,16 +18,12 @@ package gce
import
(
"net/http"
"time"
compute
"google.golang.org/api/compute/v1"
)
func
newTargetProxyMetricContext
(
request
string
)
*
metricContext
{
return
&
metricContext
{
start
:
time
.
Now
(),
attributes
:
[]
string
{
"targetproxy_"
+
request
,
unusedMetricLabel
,
unusedMetricLabel
},
}
return
newGenericMetricContext
(
"targetproxy"
,
request
,
unusedMetricLabel
,
unusedMetricLabel
,
computeV1Version
)
}
// GetTargetHttpProxy returns the UrlMap by name.
...
...
pkg/cloudprovider/providers/gce/gce_urlmap.go
View file @
5cb1cccd
...
...
@@ -18,16 +18,12 @@ package gce
import
(
"net/http"
"time"
compute
"google.golang.org/api/compute/v1"
)
func
newUrlMapMetricContext
(
request
string
)
*
metricContext
{
return
&
metricContext
{
start
:
time
.
Now
(),
attributes
:
[]
string
{
"urlmap_"
+
request
,
unusedMetricLabel
,
unusedMetricLabel
},
}
return
newGenericMetricContext
(
"urlmap"
,
request
,
unusedMetricLabel
,
unusedMetricLabel
,
computeV1Version
)
}
// GetUrlMap returns the UrlMap by name.
...
...
pkg/cloudprovider/providers/gce/gce_zones.go
View file @
5cb1cccd
...
...
@@ -18,7 +18,6 @@ package gce
import
(
"fmt"
"time"
compute
"google.golang.org/api/compute/v1"
...
...
@@ -27,10 +26,7 @@ import (
)
func
newZonesMetricContext
(
request
,
region
string
)
*
metricContext
{
return
&
metricContext
{
start
:
time
.
Now
(),
attributes
:
[]
string
{
"zones_"
+
request
,
region
,
unusedMetricLabel
},
}
return
newGenericMetricContext
(
"zones"
,
request
,
region
,
unusedMetricLabel
,
computeV1Version
)
}
// GetZone creates a cloudprovider.Zone of the current zone and region
...
...
pkg/cloudprovider/providers/gce/metrics.go
View file @
5cb1cccd
...
...
@@ -22,21 +22,33 @@ import (
"github.com/prometheus/client_golang/prometheus"
)
const
(
// Version strings for recording metrics.
computeV1Version
=
"v1"
computeAlphaVersion
=
"alpha"
computeBetaVersion
=
"beta"
)
type
apiCallMetrics
struct
{
latency
*
prometheus
.
HistogramVec
errors
*
prometheus
.
CounterVec
}
var
(
apiMetrics
=
registerAPIMetrics
(
metricLabels
=
[]
string
{
"request"
,
// API function that is begin invoked.
"region"
,
// region (optional).
"zone"
,
// zone (optional).
)
"version"
,
// API version.
}
apiMetrics
=
registerAPIMetrics
(
metricLabels
...
)
)
type
metricContext
struct
{
start
time
.
Time
start
time
.
Time
// The cardinalities of attributes and metricLabels (defined above) must
// match, or prometheus will panic.
attributes
[]
string
}
...
...
@@ -54,6 +66,13 @@ func (mc *metricContext) Observe(err error) error {
return
err
}
func
newGenericMetricContext
(
prefix
,
request
,
region
,
zone
,
version
string
)
*
metricContext
{
return
&
metricContext
{
start
:
time
.
Now
(),
attributes
:
[]
string
{
prefix
+
"_"
+
request
,
region
,
zone
,
version
},
}
}
// registerApiMetrics adds metrics definitions for a category of API calls.
func
registerAPIMetrics
(
attributes
...
string
)
*
apiCallMetrics
{
metrics
:=
&
apiCallMetrics
{
...
...
pkg/cloudprovider/providers/gce/metrics_test.go
0 → 100644
View file @
5cb1cccd
/*
Copyright 2017 The Kubernetes Authors.
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.
*/
package
gce
import
(
"testing"
"github.com/stretchr/testify/assert"
)
func
TestVerifyMetricLabelCardinality
(
t
*
testing
.
T
)
{
mc
:=
newGenericMetricContext
(
"foo"
,
"get"
,
"us-central1"
,
"<n/a>"
,
"alpha"
)
assert
.
Len
(
t
,
mc
.
attributes
,
len
(
metricLabels
),
"cardinalities of labels and values must match"
)
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment