2015-01-21 20:07:45 +01:00
// Copyright 2013 The Prometheus Authors
2013-02-25 02:52:52 +01:00
// 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.
2018-02-01 09:55:07 +00:00
package scrape
2013-02-25 02:52:52 +01:00
import (
2015-07-22 16:48:22 +01:00
"crypto/tls"
"crypto/x509"
2015-08-22 09:47:57 +02:00
"fmt"
2015-07-22 16:48:22 +01:00
"io/ioutil"
2013-04-26 17:26:52 +02:00
"net/http"
"net/http/httptest"
2016-03-01 14:49:57 +01:00
"net/url"
2015-04-20 12:24:25 +02:00
"strings"
2013-02-25 02:52:52 +01:00
"testing"
"time"
2013-06-25 14:02:27 +02:00
2020-10-22 11:00:08 +02:00
config_util "github.com/prometheus/common/config"
2015-08-20 17:18:46 +02:00
"github.com/prometheus/common/model"
2020-10-29 10:43:23 +01:00
"github.com/stretchr/testify/require"
2013-06-25 14:02:27 +02:00
2016-12-29 09:27:30 +01:00
"github.com/prometheus/prometheus/pkg/labels"
2013-02-25 02:52:52 +01:00
)
2016-05-26 14:24:49 -07:00
const (
2016-05-26 14:39:44 -07:00
caCertPath = "testdata/ca.cer"
2016-05-26 14:24:49 -07:00
)
2016-02-15 10:31:38 +01:00
func TestTargetLabels ( t * testing . T ) {
2016-12-29 09:27:30 +01:00
target := newTestTarget ( "example.com:80" , 0 , labels . FromStrings ( "job" , "some_job" , "foo" , "bar" ) )
want := labels . FromStrings ( model . JobLabel , "some_job" , "foo" , "bar" )
2016-02-15 10:31:38 +01:00
got := target . Labels ( )
2020-10-29 10:43:23 +01:00
require . Equal ( t , want , got )
2015-03-18 18:53:43 +01:00
}
2016-02-15 15:22:57 +01:00
func TestTargetOffset ( t * testing . T ) {
interval := 10 * time . Second
2019-03-12 10:46:15 +00:00
jitter := uint64 ( 0 )
2016-02-15 15:22:57 +01:00
offsets := make ( [ ] time . Duration , 10000 )
// Calculate offsets for 10000 different targets.
for i := range offsets {
2016-12-29 09:27:30 +01:00
target := newTestTarget ( "example.com:80" , 0 , labels . FromStrings (
"label" , fmt . Sprintf ( "%d" , i ) ,
) )
2019-03-12 10:46:15 +00:00
offsets [ i ] = target . offset ( interval , jitter )
2016-02-15 15:22:57 +01:00
}
// Put the offsets into buckets and validate that they are all
// within bounds.
bucketSize := 1 * time . Second
buckets := make ( [ ] int , interval / bucketSize )
for _ , offset := range offsets {
if offset < 0 || offset >= interval {
t . Fatalf ( "Offset %v out of bounds" , offset )
}
bucket := offset / bucketSize
buckets [ bucket ] ++
}
t . Log ( buckets )
2019-02-20 17:41:02 -08:00
// Calculate whether the number of targets per bucket
2016-02-15 15:22:57 +01:00
// does not differ more than a given tolerance.
avg := len ( offsets ) / len ( buckets )
tolerance := 0.15
for _ , bucket := range buckets {
diff := bucket - avg
if diff < 0 {
diff = - diff
}
if float64 ( diff ) / float64 ( avg ) > tolerance {
t . Fatalf ( "Bucket out of tolerance bounds" )
}
}
}
2016-03-01 14:49:57 +01:00
func TestTargetURL ( t * testing . T ) {
params := url . Values {
"abc" : [ ] string { "foo" , "bar" , "baz" } ,
"xyz" : [ ] string { "hoo" } ,
}
2016-12-29 09:27:30 +01:00
labels := labels . FromMap ( map [ string ] string {
2016-03-01 14:49:57 +01:00
model . AddressLabel : "example.com:1234" ,
model . SchemeLabel : "https" ,
model . MetricsPathLabel : "/metricz" ,
"__param_abc" : "overwrite" ,
"__param_cde" : "huu" ,
2016-12-29 09:27:30 +01:00
} )
2016-03-01 14:49:57 +01:00
target := NewTarget ( labels , labels , params )
// The reserved labels are concatenated into a full URL. The first value for each
// URL query parameter can be set/modified via labels as well.
expectedParams := url . Values {
"abc" : [ ] string { "overwrite" , "bar" , "baz" } ,
"cde" : [ ] string { "huu" } ,
"xyz" : [ ] string { "hoo" } ,
}
2020-10-22 11:00:08 +02:00
expectedURL := & url . URL {
2016-03-01 14:49:57 +01:00
Scheme : "https" ,
Host : "example.com:1234" ,
Path : "/metricz" ,
RawQuery : expectedParams . Encode ( ) ,
}
2020-10-29 10:43:23 +01:00
require . Equal ( t , expectedURL , target . URL ( ) )
2016-03-01 14:49:57 +01:00
}
2015-07-05 20:25:45 +01:00
2016-12-29 09:27:30 +01:00
func newTestTarget ( targetURL string , deadline time . Duration , lbls labels . Labels ) * Target {
lb := labels . NewBuilder ( lbls )
lb . Set ( model . SchemeLabel , "http" )
2017-10-09 16:57:05 +01:00
lb . Set ( model . AddressLabel , strings . TrimPrefix ( targetURL , "http://" ) )
2016-12-29 09:27:30 +01:00
lb . Set ( model . MetricsPathLabel , "/metrics" )
2016-02-12 15:43:27 +01:00
2016-12-29 09:27:30 +01:00
return & Target { labels : lb . Labels ( ) }
2015-04-20 12:24:25 +02:00
}
2015-07-22 16:48:22 +01:00
func TestNewHTTPBearerToken ( t * testing . T ) {
server := httptest . NewServer (
http . HandlerFunc (
func ( w http . ResponseWriter , r * http . Request ) {
expected := "Bearer 1234"
received := r . Header . Get ( "Authorization" )
if expected != received {
t . Fatalf ( "Authorization header was not set correctly: expected '%v', got '%v'" , expected , received )
}
} ,
) ,
)
defer server . Close ( )
Refactor SD configuration to remove `config` dependency (#3629)
* refactor: move targetGroup struct and CheckOverflow() to their own package
* refactor: move auth and security related structs to a utility package, fix import error in utility package
* refactor: Azure SD, remove SD struct from config
* refactor: DNS SD, remove SD struct from config into dns package
* refactor: ec2 SD, move SD struct from config into the ec2 package
* refactor: file SD, move SD struct from config to file discovery package
* refactor: gce, move SD struct from config to gce discovery package
* refactor: move HTTPClientConfig and URL into util/config, fix import error in httputil
* refactor: consul, move SD struct from config into consul discovery package
* refactor: marathon, move SD struct from config into marathon discovery package
* refactor: triton, move SD struct from config to triton discovery package, fix test
* refactor: zookeeper, move SD structs from config to zookeeper discovery package
* refactor: openstack, remove SD struct from config, move into openstack discovery package
* refactor: kubernetes, move SD struct from config into kubernetes discovery package
* refactor: notifier, use targetgroup package instead of config
* refactor: tests for file, marathon, triton SD - use targetgroup package instead of config.TargetGroup
* refactor: retrieval, use targetgroup package instead of config.TargetGroup
* refactor: storage, use config util package
* refactor: discovery manager, use targetgroup package instead of config.TargetGroup
* refactor: use HTTPClient and TLS config from configUtil instead of config
* refactor: tests, use targetgroup package instead of config.TargetGroup
* refactor: fix tagetgroup.Group pointers that were removed by mistake
* refactor: openstack, kubernetes: drop prefixes
* refactor: remove import aliases forced due to vscode bug
* refactor: move main SD struct out of config into discovery/config
* refactor: rename configUtil to config_util
* refactor: rename yamlUtil to yaml_config
* refactor: kubernetes, remove prefixes
* refactor: move the TargetGroup package to discovery/
* refactor: fix order of imports
2017-12-30 01:31:34 +05:30
cfg := config_util . HTTPClientConfig {
2016-11-23 12:41:19 +01:00
BearerToken : "1234" ,
2015-07-22 16:48:22 +01:00
}
2020-08-20 05:48:26 -07:00
c , err := config_util . NewClientFromConfig ( cfg , "test" , false , false )
2015-07-22 16:48:22 +01:00
if err != nil {
t . Fatal ( err )
}
_ , err = c . Get ( server . URL )
if err != nil {
t . Fatal ( err )
}
}
func TestNewHTTPBearerTokenFile ( t * testing . T ) {
server := httptest . NewServer (
http . HandlerFunc (
func ( w http . ResponseWriter , r * http . Request ) {
expected := "Bearer 12345"
received := r . Header . Get ( "Authorization" )
if expected != received {
t . Fatalf ( "Authorization header was not set correctly: expected '%v', got '%v'" , expected , received )
}
} ,
) ,
)
defer server . Close ( )
Refactor SD configuration to remove `config` dependency (#3629)
* refactor: move targetGroup struct and CheckOverflow() to their own package
* refactor: move auth and security related structs to a utility package, fix import error in utility package
* refactor: Azure SD, remove SD struct from config
* refactor: DNS SD, remove SD struct from config into dns package
* refactor: ec2 SD, move SD struct from config into the ec2 package
* refactor: file SD, move SD struct from config to file discovery package
* refactor: gce, move SD struct from config to gce discovery package
* refactor: move HTTPClientConfig and URL into util/config, fix import error in httputil
* refactor: consul, move SD struct from config into consul discovery package
* refactor: marathon, move SD struct from config into marathon discovery package
* refactor: triton, move SD struct from config to triton discovery package, fix test
* refactor: zookeeper, move SD structs from config to zookeeper discovery package
* refactor: openstack, remove SD struct from config, move into openstack discovery package
* refactor: kubernetes, move SD struct from config into kubernetes discovery package
* refactor: notifier, use targetgroup package instead of config
* refactor: tests for file, marathon, triton SD - use targetgroup package instead of config.TargetGroup
* refactor: retrieval, use targetgroup package instead of config.TargetGroup
* refactor: storage, use config util package
* refactor: discovery manager, use targetgroup package instead of config.TargetGroup
* refactor: use HTTPClient and TLS config from configUtil instead of config
* refactor: tests, use targetgroup package instead of config.TargetGroup
* refactor: fix tagetgroup.Group pointers that were removed by mistake
* refactor: openstack, kubernetes: drop prefixes
* refactor: remove import aliases forced due to vscode bug
* refactor: move main SD struct out of config into discovery/config
* refactor: rename configUtil to config_util
* refactor: rename yamlUtil to yaml_config
* refactor: kubernetes, remove prefixes
* refactor: move the TargetGroup package to discovery/
* refactor: fix order of imports
2017-12-30 01:31:34 +05:30
cfg := config_util . HTTPClientConfig {
2015-07-22 16:48:22 +01:00
BearerTokenFile : "testdata/bearertoken.txt" ,
}
2020-08-20 05:48:26 -07:00
c , err := config_util . NewClientFromConfig ( cfg , "test" , false , false )
2015-07-22 16:48:22 +01:00
if err != nil {
t . Fatal ( err )
}
_ , err = c . Get ( server . URL )
if err != nil {
t . Fatal ( err )
}
}
2015-07-18 22:23:58 +01:00
func TestNewHTTPBasicAuth ( t * testing . T ) {
server := httptest . NewServer (
http . HandlerFunc (
func ( w http . ResponseWriter , r * http . Request ) {
username , password , ok := r . BasicAuth ( )
if ! ( ok && username == "user" && password == "password123" ) {
t . Fatalf ( "Basic authorization header was not set correctly: expected '%v:%v', got '%v:%v'" , "user" , "password123" , username , password )
}
} ,
) ,
)
defer server . Close ( )
Refactor SD configuration to remove `config` dependency (#3629)
* refactor: move targetGroup struct and CheckOverflow() to their own package
* refactor: move auth and security related structs to a utility package, fix import error in utility package
* refactor: Azure SD, remove SD struct from config
* refactor: DNS SD, remove SD struct from config into dns package
* refactor: ec2 SD, move SD struct from config into the ec2 package
* refactor: file SD, move SD struct from config to file discovery package
* refactor: gce, move SD struct from config to gce discovery package
* refactor: move HTTPClientConfig and URL into util/config, fix import error in httputil
* refactor: consul, move SD struct from config into consul discovery package
* refactor: marathon, move SD struct from config into marathon discovery package
* refactor: triton, move SD struct from config to triton discovery package, fix test
* refactor: zookeeper, move SD structs from config to zookeeper discovery package
* refactor: openstack, remove SD struct from config, move into openstack discovery package
* refactor: kubernetes, move SD struct from config into kubernetes discovery package
* refactor: notifier, use targetgroup package instead of config
* refactor: tests for file, marathon, triton SD - use targetgroup package instead of config.TargetGroup
* refactor: retrieval, use targetgroup package instead of config.TargetGroup
* refactor: storage, use config util package
* refactor: discovery manager, use targetgroup package instead of config.TargetGroup
* refactor: use HTTPClient and TLS config from configUtil instead of config
* refactor: tests, use targetgroup package instead of config.TargetGroup
* refactor: fix tagetgroup.Group pointers that were removed by mistake
* refactor: openstack, kubernetes: drop prefixes
* refactor: remove import aliases forced due to vscode bug
* refactor: move main SD struct out of config into discovery/config
* refactor: rename configUtil to config_util
* refactor: rename yamlUtil to yaml_config
* refactor: kubernetes, remove prefixes
* refactor: move the TargetGroup package to discovery/
* refactor: fix order of imports
2017-12-30 01:31:34 +05:30
cfg := config_util . HTTPClientConfig {
BasicAuth : & config_util . BasicAuth {
2015-07-18 22:23:58 +01:00
Username : "user" ,
Password : "password123" ,
} ,
}
2020-08-20 05:48:26 -07:00
c , err := config_util . NewClientFromConfig ( cfg , "test" , false , false )
2015-07-18 22:23:58 +01:00
if err != nil {
t . Fatal ( err )
}
_ , err = c . Get ( server . URL )
if err != nil {
t . Fatal ( err )
}
}
2015-07-22 16:48:22 +01:00
func TestNewHTTPCACert ( t * testing . T ) {
server := httptest . NewUnstartedServer (
http . HandlerFunc (
func ( w http . ResponseWriter , r * http . Request ) {
w . Header ( ) . Set ( "Content-Type" , ` text/plain; version=0.0.4 ` )
w . Write ( [ ] byte { } )
} ,
) ,
)
2016-05-26 14:24:49 -07:00
server . TLS = newTLSConfig ( "server" , t )
2015-07-22 16:48:22 +01:00
server . StartTLS ( )
defer server . Close ( )
Refactor SD configuration to remove `config` dependency (#3629)
* refactor: move targetGroup struct and CheckOverflow() to their own package
* refactor: move auth and security related structs to a utility package, fix import error in utility package
* refactor: Azure SD, remove SD struct from config
* refactor: DNS SD, remove SD struct from config into dns package
* refactor: ec2 SD, move SD struct from config into the ec2 package
* refactor: file SD, move SD struct from config to file discovery package
* refactor: gce, move SD struct from config to gce discovery package
* refactor: move HTTPClientConfig and URL into util/config, fix import error in httputil
* refactor: consul, move SD struct from config into consul discovery package
* refactor: marathon, move SD struct from config into marathon discovery package
* refactor: triton, move SD struct from config to triton discovery package, fix test
* refactor: zookeeper, move SD structs from config to zookeeper discovery package
* refactor: openstack, remove SD struct from config, move into openstack discovery package
* refactor: kubernetes, move SD struct from config into kubernetes discovery package
* refactor: notifier, use targetgroup package instead of config
* refactor: tests for file, marathon, triton SD - use targetgroup package instead of config.TargetGroup
* refactor: retrieval, use targetgroup package instead of config.TargetGroup
* refactor: storage, use config util package
* refactor: discovery manager, use targetgroup package instead of config.TargetGroup
* refactor: use HTTPClient and TLS config from configUtil instead of config
* refactor: tests, use targetgroup package instead of config.TargetGroup
* refactor: fix tagetgroup.Group pointers that were removed by mistake
* refactor: openstack, kubernetes: drop prefixes
* refactor: remove import aliases forced due to vscode bug
* refactor: move main SD struct out of config into discovery/config
* refactor: rename configUtil to config_util
* refactor: rename yamlUtil to yaml_config
* refactor: kubernetes, remove prefixes
* refactor: move the TargetGroup package to discovery/
* refactor: fix order of imports
2017-12-30 01:31:34 +05:30
cfg := config_util . HTTPClientConfig {
TLSConfig : config_util . TLSConfig {
2016-05-26 14:39:44 -07:00
CAFile : caCertPath ,
2015-09-07 00:07:44 +01:00
} ,
2015-07-22 16:48:22 +01:00
}
2020-08-20 05:48:26 -07:00
c , err := config_util . NewClientFromConfig ( cfg , "test" , false , false )
2015-07-22 16:48:22 +01:00
if err != nil {
t . Fatal ( err )
}
_ , err = c . Get ( server . URL )
if err != nil {
t . Fatal ( err )
}
}
func TestNewHTTPClientCert ( t * testing . T ) {
server := httptest . NewUnstartedServer (
http . HandlerFunc (
func ( w http . ResponseWriter , r * http . Request ) {
w . Header ( ) . Set ( "Content-Type" , ` text/plain; version=0.0.4 ` )
w . Write ( [ ] byte { } )
} ,
) ,
)
2016-05-26 14:24:49 -07:00
tlsConfig := newTLSConfig ( "server" , t )
2015-07-22 16:48:22 +01:00
tlsConfig . ClientAuth = tls . RequireAndVerifyClientCert
tlsConfig . ClientCAs = tlsConfig . RootCAs
server . TLS = tlsConfig
server . StartTLS ( )
defer server . Close ( )
Refactor SD configuration to remove `config` dependency (#3629)
* refactor: move targetGroup struct and CheckOverflow() to their own package
* refactor: move auth and security related structs to a utility package, fix import error in utility package
* refactor: Azure SD, remove SD struct from config
* refactor: DNS SD, remove SD struct from config into dns package
* refactor: ec2 SD, move SD struct from config into the ec2 package
* refactor: file SD, move SD struct from config to file discovery package
* refactor: gce, move SD struct from config to gce discovery package
* refactor: move HTTPClientConfig and URL into util/config, fix import error in httputil
* refactor: consul, move SD struct from config into consul discovery package
* refactor: marathon, move SD struct from config into marathon discovery package
* refactor: triton, move SD struct from config to triton discovery package, fix test
* refactor: zookeeper, move SD structs from config to zookeeper discovery package
* refactor: openstack, remove SD struct from config, move into openstack discovery package
* refactor: kubernetes, move SD struct from config into kubernetes discovery package
* refactor: notifier, use targetgroup package instead of config
* refactor: tests for file, marathon, triton SD - use targetgroup package instead of config.TargetGroup
* refactor: retrieval, use targetgroup package instead of config.TargetGroup
* refactor: storage, use config util package
* refactor: discovery manager, use targetgroup package instead of config.TargetGroup
* refactor: use HTTPClient and TLS config from configUtil instead of config
* refactor: tests, use targetgroup package instead of config.TargetGroup
* refactor: fix tagetgroup.Group pointers that were removed by mistake
* refactor: openstack, kubernetes: drop prefixes
* refactor: remove import aliases forced due to vscode bug
* refactor: move main SD struct out of config into discovery/config
* refactor: rename configUtil to config_util
* refactor: rename yamlUtil to yaml_config
* refactor: kubernetes, remove prefixes
* refactor: move the TargetGroup package to discovery/
* refactor: fix order of imports
2017-12-30 01:31:34 +05:30
cfg := config_util . HTTPClientConfig {
TLSConfig : config_util . TLSConfig {
2016-05-26 14:39:44 -07:00
CAFile : caCertPath ,
2015-09-07 00:07:44 +01:00
CertFile : "testdata/client.cer" ,
KeyFile : "testdata/client.key" ,
2015-07-22 16:48:22 +01:00
} ,
}
2020-08-20 05:48:26 -07:00
c , err := config_util . NewClientFromConfig ( cfg , "test" , false , false )
2015-07-22 16:48:22 +01:00
if err != nil {
t . Fatal ( err )
}
_ , err = c . Get ( server . URL )
if err != nil {
t . Fatal ( err )
}
}
2016-05-26 14:24:49 -07:00
func TestNewHTTPWithServerName ( t * testing . T ) {
server := httptest . NewUnstartedServer (
http . HandlerFunc (
func ( w http . ResponseWriter , r * http . Request ) {
w . Header ( ) . Set ( "Content-Type" , ` text/plain; version=0.0.4 ` )
w . Write ( [ ] byte { } )
} ,
) ,
)
server . TLS = newTLSConfig ( "servername" , t )
server . StartTLS ( )
defer server . Close ( )
Refactor SD configuration to remove `config` dependency (#3629)
* refactor: move targetGroup struct and CheckOverflow() to their own package
* refactor: move auth and security related structs to a utility package, fix import error in utility package
* refactor: Azure SD, remove SD struct from config
* refactor: DNS SD, remove SD struct from config into dns package
* refactor: ec2 SD, move SD struct from config into the ec2 package
* refactor: file SD, move SD struct from config to file discovery package
* refactor: gce, move SD struct from config to gce discovery package
* refactor: move HTTPClientConfig and URL into util/config, fix import error in httputil
* refactor: consul, move SD struct from config into consul discovery package
* refactor: marathon, move SD struct from config into marathon discovery package
* refactor: triton, move SD struct from config to triton discovery package, fix test
* refactor: zookeeper, move SD structs from config to zookeeper discovery package
* refactor: openstack, remove SD struct from config, move into openstack discovery package
* refactor: kubernetes, move SD struct from config into kubernetes discovery package
* refactor: notifier, use targetgroup package instead of config
* refactor: tests for file, marathon, triton SD - use targetgroup package instead of config.TargetGroup
* refactor: retrieval, use targetgroup package instead of config.TargetGroup
* refactor: storage, use config util package
* refactor: discovery manager, use targetgroup package instead of config.TargetGroup
* refactor: use HTTPClient and TLS config from configUtil instead of config
* refactor: tests, use targetgroup package instead of config.TargetGroup
* refactor: fix tagetgroup.Group pointers that were removed by mistake
* refactor: openstack, kubernetes: drop prefixes
* refactor: remove import aliases forced due to vscode bug
* refactor: move main SD struct out of config into discovery/config
* refactor: rename configUtil to config_util
* refactor: rename yamlUtil to yaml_config
* refactor: kubernetes, remove prefixes
* refactor: move the TargetGroup package to discovery/
* refactor: fix order of imports
2017-12-30 01:31:34 +05:30
cfg := config_util . HTTPClientConfig {
TLSConfig : config_util . TLSConfig {
2016-05-26 14:39:44 -07:00
CAFile : caCertPath ,
2016-05-26 14:24:49 -07:00
ServerName : "prometheus.rocks" ,
} ,
}
2020-08-20 05:48:26 -07:00
c , err := config_util . NewClientFromConfig ( cfg , "test" , false , false )
2016-05-26 14:24:49 -07:00
if err != nil {
t . Fatal ( err )
}
_ , err = c . Get ( server . URL )
if err != nil {
t . Fatal ( err )
}
}
func TestNewHTTPWithBadServerName ( t * testing . T ) {
server := httptest . NewUnstartedServer (
http . HandlerFunc (
func ( w http . ResponseWriter , r * http . Request ) {
w . Header ( ) . Set ( "Content-Type" , ` text/plain; version=0.0.4 ` )
w . Write ( [ ] byte { } )
} ,
) ,
)
server . TLS = newTLSConfig ( "servername" , t )
server . StartTLS ( )
defer server . Close ( )
Refactor SD configuration to remove `config` dependency (#3629)
* refactor: move targetGroup struct and CheckOverflow() to their own package
* refactor: move auth and security related structs to a utility package, fix import error in utility package
* refactor: Azure SD, remove SD struct from config
* refactor: DNS SD, remove SD struct from config into dns package
* refactor: ec2 SD, move SD struct from config into the ec2 package
* refactor: file SD, move SD struct from config to file discovery package
* refactor: gce, move SD struct from config to gce discovery package
* refactor: move HTTPClientConfig and URL into util/config, fix import error in httputil
* refactor: consul, move SD struct from config into consul discovery package
* refactor: marathon, move SD struct from config into marathon discovery package
* refactor: triton, move SD struct from config to triton discovery package, fix test
* refactor: zookeeper, move SD structs from config to zookeeper discovery package
* refactor: openstack, remove SD struct from config, move into openstack discovery package
* refactor: kubernetes, move SD struct from config into kubernetes discovery package
* refactor: notifier, use targetgroup package instead of config
* refactor: tests for file, marathon, triton SD - use targetgroup package instead of config.TargetGroup
* refactor: retrieval, use targetgroup package instead of config.TargetGroup
* refactor: storage, use config util package
* refactor: discovery manager, use targetgroup package instead of config.TargetGroup
* refactor: use HTTPClient and TLS config from configUtil instead of config
* refactor: tests, use targetgroup package instead of config.TargetGroup
* refactor: fix tagetgroup.Group pointers that were removed by mistake
* refactor: openstack, kubernetes: drop prefixes
* refactor: remove import aliases forced due to vscode bug
* refactor: move main SD struct out of config into discovery/config
* refactor: rename configUtil to config_util
* refactor: rename yamlUtil to yaml_config
* refactor: kubernetes, remove prefixes
* refactor: move the TargetGroup package to discovery/
* refactor: fix order of imports
2017-12-30 01:31:34 +05:30
cfg := config_util . HTTPClientConfig {
TLSConfig : config_util . TLSConfig {
2016-05-26 14:39:44 -07:00
CAFile : caCertPath ,
2016-05-26 14:24:49 -07:00
ServerName : "badname" ,
} ,
}
2020-08-20 05:48:26 -07:00
c , err := config_util . NewClientFromConfig ( cfg , "test" , false , false )
2016-05-26 14:24:49 -07:00
if err != nil {
t . Fatal ( err )
}
_ , err = c . Get ( server . URL )
if err == nil {
t . Fatal ( "Expected error, got nil." )
}
}
func newTLSConfig ( certName string , t * testing . T ) * tls . Config {
2015-07-22 16:48:22 +01:00
tlsConfig := & tls . Config { }
caCertPool := x509 . NewCertPool ( )
2016-05-26 14:39:44 -07:00
caCert , err := ioutil . ReadFile ( caCertPath )
2015-07-22 16:48:22 +01:00
if err != nil {
t . Fatalf ( "Couldn't set up TLS server: %v" , err )
}
caCertPool . AppendCertsFromPEM ( caCert )
tlsConfig . RootCAs = caCertPool
tlsConfig . ServerName = "127.0.0.1"
2016-05-26 14:24:49 -07:00
certPath := fmt . Sprintf ( "testdata/%s.cer" , certName )
keyPath := fmt . Sprintf ( "testdata/%s.key" , certName )
cert , err := tls . LoadX509KeyPair ( certPath , keyPath )
2015-07-22 16:48:22 +01:00
if err != nil {
2016-05-26 14:24:49 -07:00
t . Errorf ( "Unable to use specified server cert (%s) & key (%v): %s" , certPath , keyPath , err )
2015-07-22 16:48:22 +01:00
}
tlsConfig . Certificates = [ ] tls . Certificate { cert }
return tlsConfig
}
2016-02-08 21:26:00 +01:00
2016-02-28 19:21:50 +01:00
func TestNewClientWithBadTLSConfig ( t * testing . T ) {
Refactor SD configuration to remove `config` dependency (#3629)
* refactor: move targetGroup struct and CheckOverflow() to their own package
* refactor: move auth and security related structs to a utility package, fix import error in utility package
* refactor: Azure SD, remove SD struct from config
* refactor: DNS SD, remove SD struct from config into dns package
* refactor: ec2 SD, move SD struct from config into the ec2 package
* refactor: file SD, move SD struct from config to file discovery package
* refactor: gce, move SD struct from config to gce discovery package
* refactor: move HTTPClientConfig and URL into util/config, fix import error in httputil
* refactor: consul, move SD struct from config into consul discovery package
* refactor: marathon, move SD struct from config into marathon discovery package
* refactor: triton, move SD struct from config to triton discovery package, fix test
* refactor: zookeeper, move SD structs from config to zookeeper discovery package
* refactor: openstack, remove SD struct from config, move into openstack discovery package
* refactor: kubernetes, move SD struct from config into kubernetes discovery package
* refactor: notifier, use targetgroup package instead of config
* refactor: tests for file, marathon, triton SD - use targetgroup package instead of config.TargetGroup
* refactor: retrieval, use targetgroup package instead of config.TargetGroup
* refactor: storage, use config util package
* refactor: discovery manager, use targetgroup package instead of config.TargetGroup
* refactor: use HTTPClient and TLS config from configUtil instead of config
* refactor: tests, use targetgroup package instead of config.TargetGroup
* refactor: fix tagetgroup.Group pointers that were removed by mistake
* refactor: openstack, kubernetes: drop prefixes
* refactor: remove import aliases forced due to vscode bug
* refactor: move main SD struct out of config into discovery/config
* refactor: rename configUtil to config_util
* refactor: rename yamlUtil to yaml_config
* refactor: kubernetes, remove prefixes
* refactor: move the TargetGroup package to discovery/
* refactor: fix order of imports
2017-12-30 01:31:34 +05:30
cfg := config_util . HTTPClientConfig {
TLSConfig : config_util . TLSConfig {
2016-02-08 21:26:00 +01:00
CAFile : "testdata/nonexistent_ca.cer" ,
CertFile : "testdata/nonexistent_client.cer" ,
KeyFile : "testdata/nonexistent_client.key" ,
} ,
}
2020-08-20 05:48:26 -07:00
_ , err := config_util . NewClientFromConfig ( cfg , "test" , false , false )
2016-02-08 21:26:00 +01:00
if err == nil {
t . Fatalf ( "Expected error, got nil." )
}
}