2017-10-02 10:32:02 +02:00
package anonymize
import (
2018-10-01 19:18:03 +02:00
"os"
2017-10-02 10:32:02 +02:00
"testing"
"time"
2019-03-15 09:42:03 +01:00
"github.com/containous/traefik/pkg/config/static"
"github.com/containous/traefik/pkg/ping"
"github.com/containous/traefik/pkg/provider/acme"
acmeprovider "github.com/containous/traefik/pkg/provider/acme"
"github.com/containous/traefik/pkg/provider/docker"
"github.com/containous/traefik/pkg/provider/file"
"github.com/containous/traefik/pkg/provider/kubernetes/crd"
"github.com/containous/traefik/pkg/provider/kubernetes/ingress"
traefiktls "github.com/containous/traefik/pkg/tls"
"github.com/containous/traefik/pkg/tracing/datadog"
"github.com/containous/traefik/pkg/tracing/instana"
"github.com/containous/traefik/pkg/tracing/jaeger"
"github.com/containous/traefik/pkg/tracing/zipkin"
"github.com/containous/traefik/pkg/types"
2019-02-18 07:52:03 +01:00
assetfs "github.com/elazarl/go-bindata-assetfs"
2017-10-02 10:32:02 +02:00
)
func TestDo_globalConfiguration ( t * testing . T ) {
2018-11-27 17:42:04 +01:00
config := & static . Configuration { }
2017-10-02 10:32:02 +02:00
2019-03-14 19:32:03 +01:00
sendAnonymousUsage := true
2018-11-27 17:42:04 +01:00
config . Global = & static . Global {
CheckNewVersion : true ,
2019-03-14 19:32:03 +01:00
SendAnonymousUsage : & sendAnonymousUsage ,
2018-11-27 17:42:04 +01:00
}
2019-03-14 19:32:03 +01:00
2017-10-02 10:32:02 +02:00
config . AccessLog = & types . AccessLog {
FilePath : "AccessLog FilePath" ,
Format : "AccessLog Format" ,
2019-03-14 19:32:03 +01:00
Filters : & types . AccessLogFilters {
2019-06-17 11:48:05 +02:00
StatusCodes : [ ] string { "200" , "500" } ,
2019-03-14 19:32:03 +01:00
RetryAttempts : true ,
MinDuration : 10 ,
} ,
Fields : & types . AccessLogFields {
DefaultMode : "drop" ,
2019-06-17 11:48:05 +02:00
Names : map [ string ] string {
2019-03-14 19:32:03 +01:00
"RequestHost" : "keep" ,
} ,
Headers : & types . FieldHeaders {
DefaultMode : "drop" ,
2019-06-17 11:48:05 +02:00
Names : map [ string ] string {
2019-03-14 19:32:03 +01:00
"Referer" : "keep" ,
} ,
} ,
} ,
BufferingSize : 4 ,
2017-10-02 10:32:02 +02:00
}
2019-03-14 19:32:03 +01:00
2018-11-27 17:42:04 +01:00
config . Log = & types . TraefikLog {
2019-04-16 15:30:09 +02:00
Level : "Level" ,
2018-11-27 17:42:04 +01:00
FilePath : "/foo/path" ,
Format : "json" ,
}
2019-03-14 19:32:03 +01:00
2018-11-27 17:42:04 +01:00
config . EntryPoints = static . EntryPoints {
2017-10-02 10:32:02 +02:00
"foo" : {
Address : "foo Address" ,
2018-11-27 17:42:04 +01:00
Transport : & static . EntryPointsTransport {
RespondingTimeouts : & static . RespondingTimeouts {
2019-06-17 11:48:05 +02:00
ReadTimeout : types . Duration ( 111 * time . Second ) ,
WriteTimeout : types . Duration ( 111 * time . Second ) ,
IdleTimeout : types . Duration ( 111 * time . Second ) ,
2018-11-27 17:42:04 +01:00
} ,
} ,
ProxyProtocol : & static . ProxyProtocol {
2017-10-10 14:50:03 +02:00
TrustedIPs : [ ] string { "127.0.0.1/32" , "192.168.0.1" } ,
} ,
2017-10-02 10:32:02 +02:00
} ,
"fii" : {
Address : "fii Address" ,
2018-11-27 17:42:04 +01:00
Transport : & static . EntryPointsTransport {
RespondingTimeouts : & static . RespondingTimeouts {
2019-06-17 11:48:05 +02:00
ReadTimeout : types . Duration ( 111 * time . Second ) ,
WriteTimeout : types . Duration ( 111 * time . Second ) ,
IdleTimeout : types . Duration ( 111 * time . Second ) ,
2018-11-27 17:42:04 +01:00
} ,
} ,
ProxyProtocol : & static . ProxyProtocol {
2017-10-10 14:50:03 +02:00
TrustedIPs : [ ] string { "127.0.0.1/32" , "192.168.0.1" } ,
} ,
2017-10-02 10:32:02 +02:00
} ,
}
2019-03-14 09:30:04 +01:00
config . ACME = & acme . Configuration {
2019-03-14 19:32:03 +01:00
Email : "acme Email" ,
ACMELogging : true ,
CAServer : "CAServer" ,
Storage : "Storage" ,
EntryPoint : "EntryPoint" ,
KeyType : "MyKeyType" ,
OnHostRule : true ,
DNSChallenge : & acmeprovider . DNSChallenge { Provider : "DNSProvider" } ,
HTTPChallenge : & acmeprovider . HTTPChallenge {
EntryPoint : "MyEntryPoint" ,
} ,
TLSChallenge : & acmeprovider . TLSChallenge { } ,
2018-03-05 20:54:04 +01:00
Domains : [ ] types . Domain {
2017-10-02 10:32:02 +02:00
{
Main : "Domains Main" ,
SANs : [ ] string { "Domains acme SANs 1" , "Domains acme SANs 2" , "Domains acme SANs 3" } ,
} ,
} ,
}
2018-11-27 17:42:04 +01:00
config . Providers = & static . Providers {
2019-06-17 11:48:05 +02:00
ProvidersThrottleDuration : types . Duration ( 111 * time . Second ) ,
2017-10-02 10:32:02 +02:00
}
2018-11-27 17:42:04 +01:00
config . ServersTransport = & static . ServersTransport {
InsecureSkipVerify : true ,
2019-06-17 11:48:05 +02:00
RootCAs : [ ] traefiktls . FileOrContent { "RootCAs 1" , "RootCAs 2" , "RootCAs 3" } ,
2018-11-27 17:42:04 +01:00
MaxIdleConnsPerHost : 111 ,
ForwardingTimeouts : & static . ForwardingTimeouts {
2019-06-17 11:48:05 +02:00
DialTimeout : types . Duration ( 111 * time . Second ) ,
ResponseHeaderTimeout : types . Duration ( 111 * time . Second ) ,
2018-11-27 17:42:04 +01:00
} ,
2017-10-02 10:32:02 +02:00
}
2018-11-27 17:42:04 +01:00
config . API = & static . API {
EntryPoint : "traefik" ,
Dashboard : true ,
2018-10-01 19:18:03 +02:00
Statistics : & types . Statistics {
2018-11-27 17:42:04 +01:00
RecentErrors : 111 ,
2018-10-01 19:18:03 +02:00
} ,
DashboardAssets : & assetfs . AssetFS {
Asset : func ( path string ) ( [ ] byte , error ) {
return nil , nil
} ,
AssetDir : func ( path string ) ( [ ] string , error ) {
return nil , nil
} ,
AssetInfo : func ( path string ) ( os . FileInfo , error ) {
return nil , nil
} ,
Prefix : "fii" ,
} ,
2018-11-27 17:42:04 +01:00
Middlewares : [ ] string { "first" , "second" } ,
2018-10-01 19:18:03 +02:00
}
2018-11-27 17:42:04 +01:00
config . Providers . File = & file . Provider {
2019-03-27 15:02:06 +01:00
Directory : "file Directory" ,
Watch : true ,
Filename : "file Filename" ,
DebugLogGeneratedTemplate : true ,
TraefikFile : "" ,
}
config . Providers . Docker = & docker . Provider {
2019-06-21 09:24:04 +02:00
Constraints : ` Label("foo", "bar") ` ,
2019-03-27 15:02:06 +01:00
Watch : true ,
2019-03-14 19:32:03 +01:00
Endpoint : "MyEndPoint" ,
DefaultRule : "PathPrefix(`/`)" ,
TLS : & types . ClientTLS {
CA : "myCa" ,
CAOptional : true ,
Cert : "mycert.pem" ,
Key : "mycert.key" ,
InsecureSkipVerify : true ,
} ,
ExposedByDefault : true ,
UseBindPortIP : true ,
SwarmMode : true ,
Network : "MyNetwork" ,
SwarmModeRefreshSeconds : 42 ,
}
config . Providers . Kubernetes = & ingress . Provider {
Endpoint : "MyEndpoint" ,
Token : "MyToken" ,
CertAuthFilePath : "MyCertAuthPath" ,
DisablePassHostHeaders : true ,
Namespaces : [ ] string { "a" , "b" } ,
LabelSelector : "myLabelSelector" ,
IngressClass : "MyIngressClass" ,
}
config . Providers . KubernetesCRD = & crd . Provider {
Endpoint : "MyEndpoint" ,
Token : "MyToken" ,
CertAuthFilePath : "MyCertAuthPath" ,
DisablePassHostHeaders : true ,
Namespaces : [ ] string { "a" , "b" } ,
LabelSelector : "myLabelSelector" ,
IngressClass : "MyIngressClass" ,
}
2018-11-27 17:42:04 +01:00
// FIXME Test the other providers once they are migrated
2017-10-02 10:32:02 +02:00
2019-03-14 19:32:03 +01:00
config . Metrics = & types . Metrics {
Prometheus : & types . Prometheus {
2019-06-17 11:48:05 +02:00
Buckets : [ ] float64 { 0.1 , 0.3 , 1.2 , 5 } ,
2019-03-14 19:32:03 +01:00
EntryPoint : "MyEntryPoint" ,
Middlewares : [ ] string { "m1" , "m2" } ,
} ,
Datadog : & types . Datadog {
Address : "localhost:8181" ,
2019-06-17 11:48:05 +02:00
PushInterval : 12 ,
2019-03-14 19:32:03 +01:00
} ,
StatsD : & types . Statsd {
Address : "localhost:8182" ,
2019-06-17 11:48:05 +02:00
PushInterval : 42 ,
2019-03-14 19:32:03 +01:00
} ,
InfluxDB : & types . InfluxDB {
Address : "localhost:8183" ,
Protocol : "http" ,
2019-06-17 11:48:05 +02:00
PushInterval : 22 ,
2019-03-14 19:32:03 +01:00
Database : "myDB" ,
RetentionPolicy : "12" ,
Username : "a" ,
Password : "aaaa" ,
} ,
}
config . Ping = & ping . Handler {
EntryPoint : "MyEntryPoint" ,
Middlewares : [ ] string { "m1" , "m2" , "m3" } ,
}
config . Tracing = & static . Tracing {
Backend : "myBackend" ,
ServiceName : "myServiceName" ,
SpanNameLimit : 3 ,
Jaeger : & jaeger . Config {
SamplingServerURL : "aaa" ,
SamplingType : "bbb" ,
SamplingParam : 43 ,
LocalAgentHostPort : "ccc" ,
Gen128Bit : true ,
Propagation : "ddd" ,
TraceContextHeaderName : "eee" ,
} ,
Zipkin : & zipkin . Config {
HTTPEndpoint : "fff" ,
SameSpan : true ,
ID128Bit : true ,
Debug : true ,
SampleRate : 53 ,
} ,
DataDog : & datadog . Config {
LocalAgentHostPort : "ggg" ,
GlobalTag : "eee" ,
Debug : true ,
PrioritySampling : true ,
} ,
Instana : & instana . Config {
LocalAgentHost : "fff" ,
LocalAgentPort : 32 ,
LogLevel : "ggg" ,
} ,
}
config . HostResolver = & types . HostResolverConfig {
CnameFlattening : true ,
ResolvConfig : "aaa" ,
ResolvDepth : 3 ,
}
2017-10-02 10:32:02 +02:00
cleanJSON , err := Do ( config , true )
if err != nil {
t . Fatal ( err , cleanJSON )
}
}