gofmt -s -w `find . -type f -name '*.go' | grep -v vendor` go build go test -v -test.timeout 15s `go list ./... | grep -v '/vendor/'` ? github.com/fabiolb/fabio [no test files] === RUN TestAdminServerAccess === RUN TestAdminServerAccess/ro/api/manual === RUN TestAdminServerAccess/ro/api/paths === RUN TestAdminServerAccess/ro/api/config === RUN TestAdminServerAccess/ro/api/routes === RUN TestAdminServerAccess/ro/api/version === RUN TestAdminServerAccess/ro/manual === RUN TestAdminServerAccess/ro/routes === RUN TestAdminServerAccess/ro/health === RUN TestAdminServerAccess/ro/logo.svg === RUN TestAdminServerAccess/ro/ === RUN TestAdminServerAccess/rw/api/manual === RUN TestAdminServerAccess/rw/api/paths === RUN TestAdminServerAccess/rw/api/config === RUN TestAdminServerAccess/rw/api/routes === RUN TestAdminServerAccess/rw/api/version === RUN TestAdminServerAccess/rw/manual === RUN TestAdminServerAccess/rw/routes === RUN TestAdminServerAccess/rw/health === RUN TestAdminServerAccess/rw/logo.svg === RUN TestAdminServerAccess/rw/ --- PASS: TestAdminServerAccess (0.02s) --- PASS: TestAdminServerAccess/ro/api/manual (0.00s) --- PASS: TestAdminServerAccess/ro/api/paths (0.00s) --- PASS: TestAdminServerAccess/ro/api/config (0.00s) --- PASS: TestAdminServerAccess/ro/api/routes (0.00s) --- PASS: TestAdminServerAccess/ro/api/version (0.00s) --- PASS: TestAdminServerAccess/ro/manual (0.00s) --- PASS: TestAdminServerAccess/ro/routes (0.00s) --- PASS: TestAdminServerAccess/ro/health (0.00s) --- PASS: TestAdminServerAccess/ro/logo.svg (0.00s) --- PASS: TestAdminServerAccess/ro/ (0.00s) --- PASS: TestAdminServerAccess/rw/api/manual (0.00s) --- PASS: TestAdminServerAccess/rw/api/paths (0.00s) --- PASS: TestAdminServerAccess/rw/api/config (0.00s) --- PASS: TestAdminServerAccess/rw/api/routes (0.00s) --- PASS: TestAdminServerAccess/rw/api/version (0.00s) --- PASS: TestAdminServerAccess/rw/manual (0.00s) --- PASS: TestAdminServerAccess/rw/routes (0.00s) --- PASS: TestAdminServerAccess/rw/health (0.00s) --- PASS: TestAdminServerAccess/rw/logo.svg (0.00s) --- PASS: TestAdminServerAccess/rw/ (0.00s) PASS ok github.com/fabiolb/fabio/admin (cached) ? github.com/fabiolb/fabio/admin/api [no test files] ? github.com/fabiolb/fabio/admin/ui [no test files] ? github.com/fabiolb/fabio/assert [no test files] === RUN TestLoadAuthSchemes === RUN TestLoadAuthSchemes/should_fail_when_auth_scheme_fails_to_load === RUN TestLoadAuthSchemes/should_return_an_error_when_auth_type_is_unknown === RUN TestLoadAuthSchemes/should_load_multiple_auth_schemes --- FAIL: TestLoadAuthSchemes (0.00s) --- FAIL: TestLoadAuthSchemes/should_fail_when_auth_scheme_fails_to_load (0.00s) auth_test.go:25: got stat /some/non/existent/file: no such file or directory, want open /some/non/existent/file: no such file or directory --- PASS: TestLoadAuthSchemes/should_return_an_error_when_auth_type_is_unknown (0.00s) --- PASS: TestLoadAuthSchemes/should_load_multiple_auth_schemes (0.00s) === RUN TestNewBasicAuth === RUN TestNewBasicAuth/should_create_a_basic_auth_scheme_from_the_supplied_config === RUN TestNewBasicAuth/should_log_a_warning_when_credentials_are_malformed 2019/03/08 09:47:19 [WARN] Error processing a line in an htpasswd file: malformed line, no colon: foosdlijdgohdgdbar --- PASS: TestNewBasicAuth (0.00s) --- PASS: TestNewBasicAuth/should_create_a_basic_auth_scheme_from_the_supplied_config (0.00s) --- PASS: TestNewBasicAuth/should_log_a_warning_when_credentials_are_malformed (0.00s) === RUN TestBasic_Authorised === RUN TestBasic_Authorised/correct_credentials_should_be_authorized === RUN TestBasic_Authorised/incorrect_credentials_should_not_be_authorized === RUN TestBasic_Authorised/missing_Authorization_header_should_not_be_authorized === RUN TestBasic_Authorised/malformed_Authorization_header_should_not_be_authorized --- PASS: TestBasic_Authorised (0.00s) --- PASS: TestBasic_Authorised/correct_credentials_should_be_authorized (0.00s) --- PASS: TestBasic_Authorised/incorrect_credentials_should_not_be_authorized (0.00s) --- PASS: TestBasic_Authorised/missing_Authorization_header_should_not_be_authorized (0.00s) --- PASS: TestBasic_Authorised/malformed_Authorization_header_should_not_be_authorized (0.00s) === RUN TestBasic_Authorized_should_set_www_realm_header --- PASS: TestBasic_Authorized_should_set_www_realm_header (0.00s) FAIL FAIL github.com/fabiolb/fabio/auth 0.018s === RUN TestParseConsulURL === RUN TestParseConsulURL/empty_url === RUN TestParseConsulURL/invalid_url === RUN TestParseConsulURL/no_kv_store_url === RUN TestParseConsulURL/url_without_token === RUN TestParseConsulURL/https_url === RUN TestParseConsulURL/url_with_token --- PASS: TestParseConsulURL (0.00s) --- PASS: TestParseConsulURL/empty_url (0.00s) --- PASS: TestParseConsulURL/invalid_url (0.00s) --- PASS: TestParseConsulURL/no_kv_store_url (0.00s) --- PASS: TestParseConsulURL/url_without_token (0.00s) --- PASS: TestParseConsulURL/https_url (0.00s) --- PASS: TestParseConsulURL/url_with_token (0.00s) === RUN TestBase --- PASS: TestBase (0.00s) === RUN TestReplaceSuffix --- PASS: TestReplaceSuffix (0.00s) === RUN TestUpgradeCACertificate 2019/03/08 09:46:01 [INFO] cert: Upgrading cert ApiGateway to CA cert --- PASS: TestUpgradeCACertificate (0.00s) === RUN TestTLSConfig --- PASS: TestTLSConfig (0.03s) === RUN TestNewSource === RUN TestNewSource/invalid === RUN TestNewSource/file 2019/03/08 09:46:01 [INFO] cert: Store has certificates for ["localhost"] === RUN TestNewSource/path === RUN TestNewSource/http === RUN TestNewSource/consul === RUN TestNewSource/vault --- PASS: TestNewSource (0.00s) --- PASS: TestNewSource/invalid (0.00s) --- PASS: TestNewSource/file (0.00s) --- PASS: TestNewSource/path (0.00s) --- PASS: TestNewSource/http (0.00s) --- PASS: TestNewSource/consul (0.00s) --- PASS: TestNewSource/vault (0.00s) === RUN TestStaticSource --- PASS: TestStaticSource (0.10s) === RUN TestFileSource --- PASS: TestFileSource (0.08s) === RUN TestPathSource 2019/03/08 09:46:01 [INFO] cert: Store has certificates for ["localhost"] --- PASS: TestPathSource (0.10s) === RUN TestHTTPSource 2019/03/08 09:46:01 [INFO] cert: Store has certificates for ["localhost"] --- PASS: TestHTTPSource (0.60s) === RUN TestConsulSource 2019/03/08 09:46:02 [DEBUG] cert: Certificate index changed to #11 2019/03/08 09:46:02 [INFO] cert: Store has certificates for ["localhost"] 2019/03/08 09:46:03 [DEBUG] cert: Certificate index changed to #13 2019/03/08 09:46:03 [INFO] cert: Store has certificates for [""] --- PASS: TestConsulSource (0.76s) source_test.go:241: Starting consul: Consul v1.4.0 source_test.go:274: Consul is ready after 0.1 seconds === RUN TestVaultSource 2019/03/08 09:46:03 [WARN] cert: Error fetching certificates from fabio/test/consul-server. consul: list: Get http://127.0.0.1:8500/v1/kv/fabio/test/consul-server?consistent=&index=13&recurse=: dial tcp 127.0.0.1:8500: connect: connection refused === RUN TestVaultSource/renewable_token 2019/03/08 09:46:03 [INFO] cert: Store has certificates for ["localhost"] === RUN TestVaultSource/non-renewable_token 2019/03/08 09:46:04 [INFO] cert: Store has certificates for ["localhost"] 2019/03/08 09:46:04 [WARN] cert: Error fetching certificates from fabio/test/consul-server. consul: list: Get http://127.0.0.1:8500/v1/kv/fabio/test/consul-server?consistent=&index=13&recurse=: dial tcp 127.0.0.1:8500: connect: connection refused === RUN TestVaultSource/renewable_orphan_token 2019/03/08 09:46:04 [INFO] cert: Store has certificates for ["localhost"] === RUN TestVaultSource/non-renewable_orphan_token 2019/03/08 09:46:05 [INFO] cert: Store has certificates for ["localhost"] 2019/03/08 09:46:05 [WARN] cert: Error fetching certificates from fabio/test/consul-server. consul: list: Get http://127.0.0.1:8500/v1/kv/fabio/test/consul-server?consistent=&index=13&recurse=: dial tcp 127.0.0.1:8500: connect: connection refused === RUN TestVaultSource/renewable_wrapped_token 2019/03/08 09:46:05 [INFO] vault: Unwrapped token s.wnDiunJgfixC0CmzlpmH4QF1 2019/03/08 09:46:05 [INFO] cert: Store has certificates for ["localhost"] === RUN TestVaultSource/non-renewable_wrapped_token 2019/03/08 09:46:06 [INFO] vault: Unwrapped token s.Qjl8npPwDACKN5MkRFMOCFTG 2019/03/08 09:46:06 [INFO] cert: Store has certificates for ["localhost"] --- PASS: TestVaultSource (3.60s) source_test.go:316: Starting vault: "Vault v1.0.3 ('85909e3373aa743c34a6a0ab59131f61fd9e8e43')\n" source_test.go:458: Vault: KV backend: V2 --- PASS: TestVaultSource/renewable_token (0.57s) --- PASS: TestVaultSource/non-renewable_token (0.57s) --- PASS: TestVaultSource/renewable_orphan_token (0.57s) --- PASS: TestVaultSource/non-renewable_orphan_token (0.56s) --- PASS: TestVaultSource/renewable_wrapped_token (0.56s) --- PASS: TestVaultSource/non-renewable_wrapped_token (0.57s) === RUN TestVaultPKISource === RUN TestVaultPKISource/renewable_token === RUN TestVaultPKISource/non-renewable_token === RUN TestVaultPKISource/renewable_orphan_token === RUN TestVaultPKISource/non-renewable_orphan_token === RUN TestVaultPKISource/renewable_wrapped_token === RUN TestVaultPKISource/non-renewable_wrapped_token 2019/03/08 09:46:09 [WARN] cert: Error fetching certificates from fabio/test/consul-server. consul: list: Get http://127.0.0.1:8500/v1/kv/fabio/test/consul-server?consistent=&index=13&recurse=: dial tcp 127.0.0.1:8500: connect: connection refused --- PASS: TestVaultPKISource (2.85s) source_test.go:316: Starting vault: "Vault v1.0.3 ('85909e3373aa743c34a6a0ab59131f61fd9e8e43')\n" --- PASS: TestVaultPKISource/renewable_token (0.30s) --- PASS: TestVaultPKISource/non-renewable_token (0.47s) --- PASS: TestVaultPKISource/renewable_orphan_token (0.48s) --- PASS: TestVaultPKISource/non-renewable_orphan_token (0.53s) --- PASS: TestVaultPKISource/renewable_wrapped_token (0.36s) --- PASS: TestVaultPKISource/non-renewable_wrapped_token (0.43s) === RUN TestGetCertificate Issue: Put http://127.0.0.1:58421/v1/test-pki/issue/fabio: EOF Issue: Put http://127.0.0.1:58421/v1/test-pki/issue/fabio: EOF Issue: Put http://127.0.0.1:58421/v1/test-pki/issue/fabio: EOF 2019/03/08 09:46:09 [ERROR] cert: vault: Failed to re-issue cert for localhost: vault: issue: Put http://127.0.0.1:58421/v1/test-pki/issue/fabio: EOF Issue: Put http://127.0.0.1:58421/v1/test-pki/issue/fabio: EOF 2019/03/08 09:46:09 [ERROR] cert: vault: Failed to re-issue cert for localhost: vault: issue: Put http://127.0.0.1:58421/v1/test-pki/issue/fabio: EOF Issue: Put http://127.0.0.1:58421/v1/test-pki/issue/fabio: EOF 2019/03/08 09:46:09 [ERROR] cert: vault: Failed to re-issue cert for localhost: vault: issue: Put http://127.0.0.1:58421/v1/test-pki/issue/fabio: EOF Issue: Put http://127.0.0.1:58421/v1/test-pki/issue/fabio: EOF 2019/03/08 09:46:09 [ERROR] cert: vault: Failed to re-issue cert for localhost: vault: issue: Put http://127.0.0.1:58421/v1/test-pki/issue/fabio: EOF 2019/03/08 09:46:09 [ERROR] cert: vault: Failed to re-issue cert for localhost: vault: issue: Put http://127.0.0.1:58421/v1/test-pki/issue/fabio: EOF 2019/03/08 09:46:09 [ERROR] cert: vault: Failed to re-issue cert for localhost: vault: issue: Put http://127.0.0.1:58421/v1/test-pki/issue/fabio: EOF --- PASS: TestGetCertificate (0.05s) PASS ok github.com/fabiolb/fabio/cert (cached) === RUN TestParseFlags === RUN TestParseFlags/cmdline_should_win === RUN TestParseFlags/env_should_win === RUN TestParseFlags/env_with_prefix_should_win === RUN TestParseFlags/props_should_win === RUN TestParseFlags/string_slice_in_cmdline === RUN TestParseFlags/string_slice_in_env === RUN TestParseFlags/string_slice_in_props --- PASS: TestParseFlags (0.00s) --- PASS: TestParseFlags/cmdline_should_win (0.00s) --- PASS: TestParseFlags/env_should_win (0.00s) --- PASS: TestParseFlags/env_with_prefix_should_win (0.00s) --- PASS: TestParseFlags/props_should_win (0.00s) --- PASS: TestParseFlags/string_slice_in_cmdline (0.00s) --- PASS: TestParseFlags/string_slice_in_env (0.00s) --- PASS: TestParseFlags/string_slice_in_props (0.00s) === RUN TestDefaults --- PASS: TestDefaults (0.00s) === RUN TestParseKVSlice === RUN TestParseKVSlice/empty === RUN TestParseKVSlice/key=val === RUN TestParseKVSlice/key_with_spaces === RUN TestParseKVSlice/quoted_value === RUN TestParseKVSlice/single_quoted_value === RUN TestParseKVSlice/quoted_value_with_backslash === RUN TestParseKVSlice/ignore_empty_map_front === RUN TestParseKVSlice/ignore_empty_map_back === RUN TestParseKVSlice/ignore_empty_value_front === RUN TestParseKVSlice/ignore_empty_value_back === RUN TestParseKVSlice/multiple_values === RUN TestParseKVSlice/multiple_maps === RUN TestParseKVSlice/multiple_values_and_maps === RUN TestParseKVSlice/first_key_empty === RUN TestParseKVSlice/first_key_empty_and_more_values === RUN TestParseKVSlice/first_key_empty_and_more_maps === RUN TestParseKVSlice/first_key_empty_and_more_maps_and_values === RUN TestParseKVSlice/issue_305 === RUN TestParseKVSlice/issue_305#01 === RUN TestParseKVSlice/issue_305#02 --- PASS: TestParseKVSlice (0.00s) --- PASS: TestParseKVSlice/empty (0.00s) --- PASS: TestParseKVSlice/key=val (0.00s) --- PASS: TestParseKVSlice/key_with_spaces (0.00s) --- PASS: TestParseKVSlice/quoted_value (0.00s) --- PASS: TestParseKVSlice/single_quoted_value (0.00s) --- PASS: TestParseKVSlice/quoted_value_with_backslash (0.00s) --- PASS: TestParseKVSlice/ignore_empty_map_front (0.00s) --- PASS: TestParseKVSlice/ignore_empty_map_back (0.00s) --- PASS: TestParseKVSlice/ignore_empty_value_front (0.00s) --- PASS: TestParseKVSlice/ignore_empty_value_back (0.00s) --- PASS: TestParseKVSlice/multiple_values (0.00s) --- PASS: TestParseKVSlice/multiple_maps (0.00s) --- PASS: TestParseKVSlice/multiple_values_and_maps (0.00s) --- PASS: TestParseKVSlice/first_key_empty (0.00s) --- PASS: TestParseKVSlice/first_key_empty_and_more_values (0.00s) --- PASS: TestParseKVSlice/first_key_empty_and_more_maps (0.00s) --- PASS: TestParseKVSlice/first_key_empty_and_more_maps_and_values (0.00s) --- PASS: TestParseKVSlice/issue_305 (0.00s) --- PASS: TestParseKVSlice/issue_305#01 (0.00s) --- PASS: TestParseKVSlice/issue_305#02 (0.00s) === RUN TestLoad === RUN TestLoad/-v === RUN TestLoad/--version === RUN TestLoad/-v_with_other_args === RUN TestLoad/--version_with_other_args === RUN TestLoad/default_config === RUN TestLoad/-insecure=true === RUN TestLoad/-profile.mode_foo === RUN TestLoad/-profile.path_foo === RUN TestLoad/-proxy.addr_:5555 === RUN TestLoad/-proxy.addr_:5555;proto=http === RUN TestLoad/-proxy.addr_:5555;proto=tcp === RUN TestLoad/-proxy.addr_:5555;proto=tcp+sni === RUN TestLoad/-proxy.addr_:5555;proto=grpc === RUN TestLoad/-proxy.addr_with_tls_configs === RUN TestLoad/-proxy.addr_with_named_tls_configs === RUN TestLoad/-proxy.addr_with_file_cert_source === RUN TestLoad/-proxy.addr_with_path_cert_source === RUN TestLoad/-proxy.addr_with_http_cert_source === RUN TestLoad/-proxy.addr_with_consul_cert_source === RUN TestLoad/-proxy.addr_with_vault_cert_source === RUN TestLoad/-proxy.addr_with_vault-pki_cert_source 2019/03/08 09:44:40 [INFO] vault-pki requires strictmatch; enabling strictmatch for listener :5555 === RUN TestLoad/-proxy.addr_with_vault-pki_cert_source,_-proxy.cs_first 2019/03/08 09:44:40 [INFO] vault-pki requires strictmatch; enabling strictmatch for listener :5555 === RUN TestLoad/-proxy.addr_with_cert_source === RUN TestLoad/-proxy.addr_with_cert_source_with_full_options === RUN TestLoad/-proxy.auth_with_source_basic === RUN TestLoad/-proxy.auth_with_source_basic_and_no_realm_specified === RUN TestLoad/issue_305 === RUN TestLoad/-proxy.localip_1.2.3.4 === RUN TestLoad/-proxy.strategy_rnd === RUN TestLoad/-proxy.strategy_rr === RUN TestLoad/-proxy.matcher_prefix === RUN TestLoad/-proxy.matcher_glob === RUN TestLoad/-proxy.matcher_iprefix === RUN TestLoad/-proxy.noroutestatus_555 === RUN TestLoad/-proxy.shutdownwait_5ms === RUN TestLoad/-proxy.responseheadertimeout_5ms === RUN TestLoad/-proxy.keepalivetimeout_5ms === RUN TestLoad/-proxy.dialtimeout_5ms === RUN TestLoad/-proxy.readtimeout_5ms === RUN TestLoad/-proxy.writetimeout_5ms === RUN TestLoad/-proxy.flushinterval_5ms === RUN TestLoad/-proxy.globalflushinterval_5ms === RUN TestLoad/-proxy.maxconn_555 === RUN TestLoad/-proxy.header.clientip_value === RUN TestLoad/-proxy.header.tls_value === RUN TestLoad/-proxy.header.tls.value_value === RUN TestLoad/-proxy.header.requestid_value === RUN TestLoad/-proxy.header.sts.maxage_31536000 === RUN TestLoad/-proxy.header.sts.subdomains_true === RUN TestLoad/-proxy.header.sts.preload_true === RUN TestLoad/-proxy.gzip.contenttype_^text/.*$ === RUN TestLoad/-proxy.gzip.contenttype_^(text/.*|application/(javascript|json|font-woff|xml)|.*\+(json|xml))(;.*)?$ === RUN TestLoad/-proxy.log.routes_foobar 2019/03/08 09:44:40 [WARN] proxy.log.routes has been deprecated. Please use 'log.routes.format' instead === RUN TestLoad/-registry.backend_value === RUN TestLoad/-registry.timeout_5s === RUN TestLoad/-registry.retry_500ms === RUN TestLoad/-registry.file.path_value === RUN TestLoad/-registry.file.noroutehtmlpath_value === RUN TestLoad/-registry.static.routes_value === RUN TestLoad/-registry.static.noroutehtml_value === RUN TestLoad/-registry.consul.addr_1.2.3.4:5555 === RUN TestLoad/-registry.consul.addr_http://1.2.3.4:5555/ === RUN TestLoad/-registry.consul.addr_https://1.2.3.4:5555/ === RUN TestLoad/-registry.consul.addr_HTTPS://1.2.3.4:5555/ === RUN TestLoad/-registry.consul.token_some-token === RUN TestLoad/-registry.consul.kvpath_/some/path === RUN TestLoad/-registry.consul.noroutehtmlpath_/some/path === RUN TestLoad/-registry.consul.tagprefix_p- === RUN TestLoad/-registry.consul.register.enabled=false === RUN TestLoad/-registry.consul.register.addr_1.2.3.4:5555 === RUN TestLoad/-registry.consul.register.name_fab === RUN TestLoad/-registry.consul.register.checkTLSSkipVerify=true === RUN TestLoad/-registry.consul.register.tags_a,_b,_c,_ === RUN TestLoad/-registry.consul.register.checkInterval_5ms === RUN TestLoad/-registry.consul.register.checkTimeout_5ms === RUN TestLoad/-registry.consul.service.status_a,_b,_ === RUN TestLoad/-registry.consul.serviceMonitors_5 === RUN TestLoad/-registry.custom.host_localhost:8080 === RUN TestLoad/-registry.custom.scheme_https === RUN TestLoad/-registry.custom.checkTLSSkipVerify_true === RUN TestLoad/-registry.custom.timeout_5s === RUN TestLoad/-registry.custom.pollinginterval_5s === RUN TestLoad/-registry.custom.path_test === RUN TestLoad/-registry.custom.queryparams_test=1 === RUN TestLoad/-log.access.format_foobar === RUN TestLoad/-log.access.target_foobar === RUN TestLoad/-log.routes.format_foobar === RUN TestLoad/-log.level_foobar === RUN TestLoad/-metrics.target_some-target === RUN TestLoad/-metrics.prefix_some-prefix === RUN TestLoad/-metrics.names_some_names === RUN TestLoad/-metrics.interval_5ms === RUN TestLoad/-metrics.timeout_5s === RUN TestLoad/-metrics.retry_500ms === RUN TestLoad/-metrics.graphite.addr_1.2.3.4:5555 === RUN TestLoad/-metrics.statsd.addr_1.2.3.4:5555 === RUN TestLoad/-metrics.circonus.apiapp_value === RUN TestLoad/-metrics.circonus.apikey_value === RUN TestLoad/-metrics.circonus.apiurl_value === RUN TestLoad/-metrics.circonus.brokerid_value === RUN TestLoad/-metrics.circonus.checkid_value === RUN TestLoad/-metrics.circonus.submissionurl_value === RUN TestLoad/-runtime.gogc_555 === RUN TestLoad/-runtime.gomaxprocs_555 === RUN TestLoad/-ui.access_ro === RUN TestLoad/-ui.access_rw === RUN TestLoad/-ui.addr_1.2.3.4:5555 === RUN TestLoad/-ui.addr_:9998;cs=ui_-proxy.cs_cs=ui;type=file;cert=value === RUN TestLoad/-ui.color_value === RUN TestLoad/-ui.title_value === RUN TestLoad/ignore_aws.apigw.cert.cn === RUN TestLoad/config_from_environ === RUN TestLoad/config_from_url === RUN TestLoad/config_from_file_I === RUN TestLoad/config_from_file_II === RUN TestLoad/config_from_file_III === RUN TestLoad/config_from_file_IV === RUN TestLoad/cmdline_over_config_file_I === RUN TestLoad/cmdline_over_config_file_II === RUN TestLoad/environ_over_config_file === RUN TestLoad/cmdline_over_environ === RUN TestLoad/-proxy.addr_with_unknown_cert_source_'foo' === RUN TestLoad/-proxy.addr_with_unknown_proto_'foo' === RUN TestLoad/-proxy.addr_with_proto_'https'_requires_cert_source === RUN TestLoad/-proxy.addr_with_proto_'grpcs'_requires_cert_source === RUN TestLoad/-proxy.addr_with_cert_source_and_proto_'http'_requires_proto_'https',_'tcp',_or_'grpcs' === RUN TestLoad/-proxy.addr_with_cert_source_and_proto_'tcp+sni'_requires_proto_'https',_'tcp'_or_'grpcs' === RUN TestLoad/-proxy.noroutestatus_too_small === RUN TestLoad/-proxy.noroutestatus_too_big === RUN TestLoad/-proxy.auth_with_unknown_auth_type_'foo' === RUN TestLoad/-proxy.auth_with_missing_name === RUN TestLoad/-proxy.auth_basic_with_missing_file === RUN TestLoad/-cfg === RUN TestLoad/-cfg='' === RUN TestLoad/-cfg="" --- PASS: TestLoad (0.05s) --- PASS: TestLoad/-v (0.00s) --- PASS: TestLoad/--version (0.00s) --- PASS: TestLoad/-v_with_other_args (0.00s) --- PASS: TestLoad/--version_with_other_args (0.00s) --- PASS: TestLoad/default_config (0.00s) --- PASS: TestLoad/-insecure=true (0.00s) --- PASS: TestLoad/-profile.mode_foo (0.00s) --- PASS: TestLoad/-profile.path_foo (0.00s) --- PASS: TestLoad/-proxy.addr_:5555 (0.00s) --- PASS: TestLoad/-proxy.addr_:5555;proto=http (0.00s) --- PASS: TestLoad/-proxy.addr_:5555;proto=tcp (0.00s) --- PASS: TestLoad/-proxy.addr_:5555;proto=tcp+sni (0.00s) --- PASS: TestLoad/-proxy.addr_:5555;proto=grpc (0.00s) --- PASS: TestLoad/-proxy.addr_with_tls_configs (0.00s) --- PASS: TestLoad/-proxy.addr_with_named_tls_configs (0.00s) --- PASS: TestLoad/-proxy.addr_with_file_cert_source (0.00s) --- PASS: TestLoad/-proxy.addr_with_path_cert_source (0.00s) --- PASS: TestLoad/-proxy.addr_with_http_cert_source (0.00s) --- PASS: TestLoad/-proxy.addr_with_consul_cert_source (0.00s) --- PASS: TestLoad/-proxy.addr_with_vault_cert_source (0.00s) --- PASS: TestLoad/-proxy.addr_with_vault-pki_cert_source (0.00s) --- PASS: TestLoad/-proxy.addr_with_vault-pki_cert_source,_-proxy.cs_first (0.00s) --- PASS: TestLoad/-proxy.addr_with_cert_source (0.00s) --- PASS: TestLoad/-proxy.addr_with_cert_source_with_full_options (0.00s) --- PASS: TestLoad/-proxy.auth_with_source_basic (0.00s) --- PASS: TestLoad/-proxy.auth_with_source_basic_and_no_realm_specified (0.00s) --- PASS: TestLoad/issue_305 (0.00s) --- PASS: TestLoad/-proxy.localip_1.2.3.4 (0.00s) --- PASS: TestLoad/-proxy.strategy_rnd (0.00s) --- PASS: TestLoad/-proxy.strategy_rr (0.00s) --- PASS: TestLoad/-proxy.matcher_prefix (0.00s) --- PASS: TestLoad/-proxy.matcher_glob (0.00s) --- PASS: TestLoad/-proxy.matcher_iprefix (0.00s) --- PASS: TestLoad/-proxy.noroutestatus_555 (0.00s) --- PASS: TestLoad/-proxy.shutdownwait_5ms (0.00s) --- PASS: TestLoad/-proxy.responseheadertimeout_5ms (0.00s) --- PASS: TestLoad/-proxy.keepalivetimeout_5ms (0.00s) --- PASS: TestLoad/-proxy.dialtimeout_5ms (0.00s) --- PASS: TestLoad/-proxy.readtimeout_5ms (0.00s) --- PASS: TestLoad/-proxy.writetimeout_5ms (0.00s) --- PASS: TestLoad/-proxy.flushinterval_5ms (0.00s) --- PASS: TestLoad/-proxy.globalflushinterval_5ms (0.00s) --- PASS: TestLoad/-proxy.maxconn_555 (0.00s) --- PASS: TestLoad/-proxy.header.clientip_value (0.00s) --- PASS: TestLoad/-proxy.header.tls_value (0.00s) --- PASS: TestLoad/-proxy.header.tls.value_value (0.00s) --- PASS: TestLoad/-proxy.header.requestid_value (0.00s) --- PASS: TestLoad/-proxy.header.sts.maxage_31536000 (0.00s) --- PASS: TestLoad/-proxy.header.sts.subdomains_true (0.00s) --- PASS: TestLoad/-proxy.header.sts.preload_true (0.00s) --- PASS: TestLoad/-proxy.gzip.contenttype_^text/.*$ (0.00s) --- PASS: TestLoad/-proxy.gzip.contenttype_^(text/.*|application/(javascript|json|font-woff|xml)|.*\+(json|xml))(;.*)?$ (0.00s) --- PASS: TestLoad/-proxy.log.routes_foobar (0.00s) --- PASS: TestLoad/-registry.backend_value (0.00s) --- PASS: TestLoad/-registry.timeout_5s (0.00s) --- PASS: TestLoad/-registry.retry_500ms (0.00s) --- PASS: TestLoad/-registry.file.path_value (0.00s) --- PASS: TestLoad/-registry.file.noroutehtmlpath_value (0.00s) --- PASS: TestLoad/-registry.static.routes_value (0.00s) --- PASS: TestLoad/-registry.static.noroutehtml_value (0.00s) --- PASS: TestLoad/-registry.consul.addr_1.2.3.4:5555 (0.00s) --- PASS: TestLoad/-registry.consul.addr_http://1.2.3.4:5555/ (0.01s) --- PASS: TestLoad/-registry.consul.addr_https://1.2.3.4:5555/ (0.00s) --- PASS: TestLoad/-registry.consul.addr_HTTPS://1.2.3.4:5555/ (0.00s) --- PASS: TestLoad/-registry.consul.token_some-token (0.00s) --- PASS: TestLoad/-registry.consul.kvpath_/some/path (0.00s) --- PASS: TestLoad/-registry.consul.noroutehtmlpath_/some/path (0.00s) --- PASS: TestLoad/-registry.consul.tagprefix_p- (0.00s) --- PASS: TestLoad/-registry.consul.register.enabled=false (0.00s) --- PASS: TestLoad/-registry.consul.register.addr_1.2.3.4:5555 (0.00s) --- PASS: TestLoad/-registry.consul.register.name_fab (0.00s) --- PASS: TestLoad/-registry.consul.register.checkTLSSkipVerify=true (0.00s) --- PASS: TestLoad/-registry.consul.register.tags_a,_b,_c,_ (0.00s) --- PASS: TestLoad/-registry.consul.register.checkInterval_5ms (0.00s) --- PASS: TestLoad/-registry.consul.register.checkTimeout_5ms (0.00s) --- PASS: TestLoad/-registry.consul.service.status_a,_b,_ (0.00s) --- PASS: TestLoad/-registry.consul.serviceMonitors_5 (0.00s) --- PASS: TestLoad/-registry.custom.host_localhost:8080 (0.00s) --- PASS: TestLoad/-registry.custom.scheme_https (0.00s) --- PASS: TestLoad/-registry.custom.checkTLSSkipVerify_true (0.00s) --- PASS: TestLoad/-registry.custom.timeout_5s (0.00s) --- PASS: TestLoad/-registry.custom.pollinginterval_5s (0.00s) --- PASS: TestLoad/-registry.custom.path_test (0.00s) --- PASS: TestLoad/-registry.custom.queryparams_test=1 (0.00s) --- PASS: TestLoad/-log.access.format_foobar (0.00s) --- PASS: TestLoad/-log.access.target_foobar (0.00s) --- PASS: TestLoad/-log.routes.format_foobar (0.00s) --- PASS: TestLoad/-log.level_foobar (0.00s) --- PASS: TestLoad/-metrics.target_some-target (0.00s) --- PASS: TestLoad/-metrics.prefix_some-prefix (0.00s) --- PASS: TestLoad/-metrics.names_some_names (0.00s) --- PASS: TestLoad/-metrics.interval_5ms (0.00s) --- PASS: TestLoad/-metrics.timeout_5s (0.00s) --- PASS: TestLoad/-metrics.retry_500ms (0.00s) --- PASS: TestLoad/-metrics.graphite.addr_1.2.3.4:5555 (0.00s) --- PASS: TestLoad/-metrics.statsd.addr_1.2.3.4:5555 (0.00s) --- PASS: TestLoad/-metrics.circonus.apiapp_value (0.00s) --- PASS: TestLoad/-metrics.circonus.apikey_value (0.00s) --- PASS: TestLoad/-metrics.circonus.apiurl_value (0.00s) --- PASS: TestLoad/-metrics.circonus.brokerid_value (0.00s) --- PASS: TestLoad/-metrics.circonus.checkid_value (0.00s) --- PASS: TestLoad/-metrics.circonus.submissionurl_value (0.00s) --- PASS: TestLoad/-runtime.gogc_555 (0.00s) --- PASS: TestLoad/-runtime.gomaxprocs_555 (0.00s) --- PASS: TestLoad/-ui.access_ro (0.00s) --- PASS: TestLoad/-ui.access_rw (0.00s) --- PASS: TestLoad/-ui.addr_1.2.3.4:5555 (0.00s) --- PASS: TestLoad/-ui.addr_:9998;cs=ui_-proxy.cs_cs=ui;type=file;cert=value (0.00s) --- PASS: TestLoad/-ui.color_value (0.00s) --- PASS: TestLoad/-ui.title_value (0.00s) --- PASS: TestLoad/ignore_aws.apigw.cert.cn (0.00s) --- PASS: TestLoad/config_from_environ (0.00s) --- PASS: TestLoad/config_from_url (0.00s) --- PASS: TestLoad/config_from_file_I (0.00s) --- PASS: TestLoad/config_from_file_II (0.00s) --- PASS: TestLoad/config_from_file_III (0.00s) --- PASS: TestLoad/config_from_file_IV (0.00s) --- PASS: TestLoad/cmdline_over_config_file_I (0.00s) --- PASS: TestLoad/cmdline_over_config_file_II (0.00s) --- PASS: TestLoad/environ_over_config_file (0.00s) --- PASS: TestLoad/cmdline_over_environ (0.00s) --- PASS: TestLoad/-proxy.addr_with_unknown_cert_source_'foo' (0.00s) --- PASS: TestLoad/-proxy.addr_with_unknown_proto_'foo' (0.00s) --- PASS: TestLoad/-proxy.addr_with_proto_'https'_requires_cert_source (0.00s) --- PASS: TestLoad/-proxy.addr_with_proto_'grpcs'_requires_cert_source (0.00s) --- PASS: TestLoad/-proxy.addr_with_cert_source_and_proto_'http'_requires_proto_'https',_'tcp',_or_'grpcs' (0.00s) --- PASS: TestLoad/-proxy.addr_with_cert_source_and_proto_'tcp+sni'_requires_proto_'https',_'tcp'_or_'grpcs' (0.00s) --- PASS: TestLoad/-proxy.noroutestatus_too_small (0.00s) --- PASS: TestLoad/-proxy.noroutestatus_too_big (0.00s) --- PASS: TestLoad/-proxy.auth_with_unknown_auth_type_'foo' (0.00s) --- PASS: TestLoad/-proxy.auth_with_missing_name (0.00s) --- PASS: TestLoad/-proxy.auth_basic_with_missing_file (0.00s) --- PASS: TestLoad/-cfg (0.00s) --- PASS: TestLoad/-cfg='' (0.00s) --- PASS: TestLoad/-cfg="" (0.00s) PASS ok github.com/fabiolb/fabio/config (cached) ? github.com/fabiolb/fabio/demo/server [no test files] ? github.com/fabiolb/fabio/demo/wsclient [no test files] === RUN TestExit --- PASS: TestExit (0.00s) PASS ok github.com/fabiolb/fabio/exit (cached) === RUN TestLevelWriter === RUN TestLevelWriter/TRACE === RUN TestLevelWriter/DEBUG === RUN TestLevelWriter/INFO === RUN TestLevelWriter/WARN === RUN TestLevelWriter/ERROR === RUN TestLevelWriter/FATAL --- PASS: TestLevelWriter (0.00s) --- PASS: TestLevelWriter/TRACE (0.00s) --- PASS: TestLevelWriter/DEBUG (0.00s) --- PASS: TestLevelWriter/INFO (0.00s) --- PASS: TestLevelWriter/WARN (0.00s) --- PASS: TestLevelWriter/ERROR (0.00s) --- PASS: TestLevelWriter/FATAL (0.00s) === RUN TestParse --- PASS: TestParse (0.00s) === RUN TestLog === RUN TestLog/$header.Referer === RUN TestLog/$header.X-Forwarded-For === RUN TestLog/$header.user-agent === RUN TestLog/$remote_addr === RUN TestLog/$remote_host === RUN TestLog/$remote_port === RUN TestLog/$request === RUN TestLog/$request_args === RUN TestLog/$request_host === RUN TestLog/$request_method === RUN TestLog/$request_proto === RUN TestLog/$request_scheme === RUN TestLog/$request_uri === RUN TestLog/$request_url === RUN TestLog/$response_body_size === RUN TestLog/$response_status === RUN TestLog/$response_time_ms === RUN TestLog/$response_time_ns === RUN TestLog/$response_time_us === RUN TestLog/$time_common === RUN TestLog/$time_rfc3339 === RUN TestLog/$time_rfc3339_ms === RUN TestLog/$time_rfc3339_ns === RUN TestLog/$time_rfc3339_us === RUN TestLog/$time_unix_ms === RUN TestLog/$time_unix_ns === RUN TestLog/$time_unix_us === RUN TestLog/$upstream_addr === RUN TestLog/$upstream_host === RUN TestLog/$upstream_port === RUN TestLog/$upstream_request_scheme === RUN TestLog/$upstream_request_uri === RUN TestLog/$upstream_request_url === RUN TestLog/$upstream_service --- PASS: TestLog (0.00s) --- PASS: TestLog/$header.Referer (0.00s) --- PASS: TestLog/$header.X-Forwarded-For (0.00s) --- PASS: TestLog/$header.user-agent (0.00s) --- PASS: TestLog/$remote_addr (0.00s) --- PASS: TestLog/$remote_host (0.00s) --- PASS: TestLog/$remote_port (0.00s) --- PASS: TestLog/$request (0.00s) --- PASS: TestLog/$request_args (0.00s) --- PASS: TestLog/$request_host (0.00s) --- PASS: TestLog/$request_method (0.00s) --- PASS: TestLog/$request_proto (0.00s) --- PASS: TestLog/$request_scheme (0.00s) --- PASS: TestLog/$request_uri (0.00s) --- PASS: TestLog/$request_url (0.00s) --- PASS: TestLog/$response_body_size (0.00s) --- PASS: TestLog/$response_status (0.00s) --- PASS: TestLog/$response_time_ms (0.00s) --- PASS: TestLog/$response_time_ns (0.00s) --- PASS: TestLog/$response_time_us (0.00s) --- PASS: TestLog/$time_common (0.00s) --- PASS: TestLog/$time_rfc3339 (0.00s) --- PASS: TestLog/$time_rfc3339_ms (0.00s) --- PASS: TestLog/$time_rfc3339_ns (0.00s) --- PASS: TestLog/$time_rfc3339_us (0.00s) --- PASS: TestLog/$time_unix_ms (0.00s) --- PASS: TestLog/$time_unix_ns (0.00s) --- PASS: TestLog/$time_unix_us (0.00s) --- PASS: TestLog/$upstream_addr (0.00s) --- PASS: TestLog/$upstream_host (0.00s) --- PASS: TestLog/$upstream_port (0.00s) --- PASS: TestLog/$upstream_request_scheme (0.00s) --- PASS: TestLog/$upstream_request_uri (0.00s) --- PASS: TestLog/$upstream_request_url (0.00s) --- PASS: TestLog/$upstream_service (0.00s) === RUN TestAtoi --- PASS: TestAtoi (0.00s) PASS ok github.com/fabiolb/fabio/logger (cached) === RUN TestRegistry --- PASS: TestRegistry (0.00s) circonus_test.go:12: Testing registry interface circonus_test.go:16: Names() circonus_test.go:22: Unregister() circonus_test.go:25: UnregisterAll() circonus_test.go:28: GetTimer() === RUN TestTimer --- PASS: TestTimer (0.00s) circonus_test.go:36: Testing timer interface circonus_test.go:40: Percentile() circonus_test.go:46: Rate1() === RUN TestAll --- SKIP: TestAll (0.00s) circonus_test.go:57: skipping test; $CIRCONUS_API_TOKEN or $CIRCONUS_SUBMISSION_URL not set === RUN TestParsePrefix --- PASS: TestParsePrefix (0.00s) === RUN TestTargetName --- PASS: TestTargetName (0.00s) PASS ok github.com/fabiolb/fabio/metrics (cached) === RUN TestStoreSetGet --- PASS: TestStoreSetGet (0.00s) PASS ok github.com/fabiolb/fabio/noroute (cached) === RUN TestAddHeaders === RUN TestAddHeaders/error === RUN TestAddHeaders/http_request === RUN TestAddHeaders/https_request === RUN TestAddHeaders/ws_request === RUN TestAddHeaders/wss_request === RUN TestAddHeaders/set_client_ip_header === RUN TestAddHeaders/set_Forwarded_with_localIP === RUN TestAddHeaders/set_Forwarded_with_localIP_for_https === RUN TestAddHeaders/set_httpproto,_tlsver_and_tlscipher_on_Forwarded_for_https === RUN TestAddHeaders/set_httpproto_on_Forwarded === RUN TestAddHeaders/extend_Forwarded_with_localIP === RUN TestAddHeaders/set_tls_header === RUN TestAddHeaders/set_tls_header_with_value === RUN TestAddHeaders/overwrite_tls_header_for_https,_when_set === RUN TestAddHeaders/drop_tls_header_for_http,_when_set === RUN TestAddHeaders/do_not_overwrite_X-Forwarded-Proto,_if_present === RUN TestAddHeaders/set_scheme_from_X-Forwarded-Proto,_if_present_and_Forwarded_is_missing === RUN TestAddHeaders/set_scheme_from_Forwarded,_if_present_and_X-Forwarded-Proto_is_missing === RUN TestAddHeaders/do_not_modify_scheme_when_both_Forwarded_and_X-Forwarded-Proto_are_present === RUN TestAddHeaders/set_X-Forwarded-Port_from_Host === RUN TestAddHeaders/set_X-Forwarded-Port_from_Host_for_https === RUN TestAddHeaders/do_not_overwrite_X-Forwarded-Port_header,_if_present === RUN TestAddHeaders/set_X-Forwarded-Host_from_Host === RUN TestAddHeaders/do_not_overwrite_X-Forwarded-Host,_if_present === RUN TestAddHeaders/do_not_overwrite_X-Real-Ip,_if_present --- PASS: TestAddHeaders (0.00s) --- PASS: TestAddHeaders/error (0.00s) --- PASS: TestAddHeaders/http_request (0.00s) --- PASS: TestAddHeaders/https_request (0.00s) --- PASS: TestAddHeaders/ws_request (0.00s) --- PASS: TestAddHeaders/wss_request (0.00s) --- PASS: TestAddHeaders/set_client_ip_header (0.00s) --- PASS: TestAddHeaders/set_Forwarded_with_localIP (0.00s) --- PASS: TestAddHeaders/set_Forwarded_with_localIP_for_https (0.00s) --- PASS: TestAddHeaders/set_httpproto,_tlsver_and_tlscipher_on_Forwarded_for_https (0.00s) --- PASS: TestAddHeaders/set_httpproto_on_Forwarded (0.00s) --- PASS: TestAddHeaders/extend_Forwarded_with_localIP (0.00s) --- PASS: TestAddHeaders/set_tls_header (0.00s) --- PASS: TestAddHeaders/set_tls_header_with_value (0.00s) --- PASS: TestAddHeaders/overwrite_tls_header_for_https,_when_set (0.00s) --- PASS: TestAddHeaders/drop_tls_header_for_http,_when_set (0.00s) --- PASS: TestAddHeaders/do_not_overwrite_X-Forwarded-Proto,_if_present (0.00s) --- PASS: TestAddHeaders/set_scheme_from_X-Forwarded-Proto,_if_present_and_Forwarded_is_missing (0.00s) --- PASS: TestAddHeaders/set_scheme_from_Forwarded,_if_present_and_X-Forwarded-Proto_is_missing (0.00s) --- PASS: TestAddHeaders/do_not_modify_scheme_when_both_Forwarded_and_X-Forwarded-Proto_are_present (0.00s) --- PASS: TestAddHeaders/set_X-Forwarded-Port_from_Host (0.00s) --- PASS: TestAddHeaders/set_X-Forwarded-Port_from_Host_for_https (0.00s) --- PASS: TestAddHeaders/do_not_overwrite_X-Forwarded-Port_header,_if_present (0.00s) --- PASS: TestAddHeaders/set_X-Forwarded-Host_from_Host (0.00s) --- PASS: TestAddHeaders/do_not_overwrite_X-Forwarded-Host,_if_present (0.00s) --- PASS: TestAddHeaders/do_not_overwrite_X-Real-Ip,_if_present (0.00s) === RUN TestAddResponseHeaders === RUN TestAddResponseHeaders/set_Strict-Transport-Security_for_TLS,_if_MaxAge_greater_than_0 === RUN TestAddResponseHeaders/set_Strict-Transport-Security_for_TLS,_if_MaxAge_greater_than_0_with_options === RUN TestAddResponseHeaders/skip_Strict-Transport-Security_for_non-TLS,_if_MaxAge_greater_than_0 --- PASS: TestAddResponseHeaders (0.00s) --- PASS: TestAddResponseHeaders/set_Strict-Transport-Security_for_TLS,_if_MaxAge_greater_than_0 (0.00s) --- PASS: TestAddResponseHeaders/set_Strict-Transport-Security_for_TLS,_if_MaxAge_greater_than_0_with_options (0.00s) --- PASS: TestAddResponseHeaders/skip_Strict-Transport-Security_for_non-TLS,_if_MaxAge_greater_than_0 (0.00s) === RUN TestLocalPort --- PASS: TestLocalPort (0.00s) === RUN TestUint16Base16 --- PASS: TestUint16Base16 (0.00s) === RUN TestProxyProducesCorrectXForwardedSomethingHeader --- PASS: TestProxyProducesCorrectXForwardedSomethingHeader (0.00s) === RUN TestProxyRequestIDHeader --- PASS: TestProxyRequestIDHeader (0.00s) === RUN TestProxySTSHeader --- PASS: TestProxySTSHeader (0.00s) === RUN TestProxyChecksHeaderForAccessRules 2019/03/07 16:43:59 [DEBUG] checking 127.0.0.1 against ip allow rule 127.0.0.0/8 2019/03/07 16:43:59 [DEBUG] allowing request from 127.0.0.1 via 127.0.0.0/8 2019/03/07 16:43:59 [DEBUG] checking 1.2.3.4 against ip allow rule 127.0.0.0/8 2019/03/07 16:43:59 [DEBUG] checking 1.2.3.4 against ip allow rule fe80::/10 2019/03/07 16:43:59 [DEBUG] checking 1.2.3.4 against ip allow rule ::1/128 2019/03/07 16:43:59 [INFO] route rules denied access from 1.2.3.4 to http://127.0.0.1:58015 --- PASS: TestProxyChecksHeaderForAccessRules (0.00s) === RUN TestProxyNoRouteHTML --- PASS: TestProxyNoRouteHTML (0.00s) === RUN TestProxyNoRouteStatus --- PASS: TestProxyNoRouteStatus (0.00s) === RUN TestProxyStripsPath --- PASS: TestProxyStripsPath (0.00s) === RUN TestProxyHost === RUN TestProxyHost/host_eq_dst === RUN TestProxyHost/no_host === RUN TestProxyHost/host_is_custom --- PASS: TestProxyHost (0.00s) --- PASS: TestProxyHost/host_eq_dst (0.00s) --- PASS: TestProxyHost/no_host (0.00s) --- PASS: TestProxyHost/host_is_custom (0.00s) === RUN TestHostRedirect --- PASS: TestHostRedirect (0.00s) === RUN TestPathRedirect --- PASS: TestPathRedirect (0.00s) === RUN TestProxyLogOutput === RUN TestProxyLogOutput/uncompressed_response === RUN TestProxyLogOutput/compression_enabled_but_no_match === RUN TestProxyLogOutput/compression_enabled_and_active --- PASS: TestProxyLogOutput (0.01s) --- PASS: TestProxyLogOutput/uncompressed_response (0.00s) --- PASS: TestProxyLogOutput/compression_enabled_but_no_match (0.00s) --- PASS: TestProxyLogOutput/compression_enabled_and_active (0.00s) === RUN TestProxyHTTPSUpstream --- PASS: TestProxyHTTPSUpstream (0.00s) === RUN TestProxyHTTPSUpstreamSkipVerify --- PASS: TestProxyHTTPSUpstreamSkipVerify (0.00s) === RUN TestProxyGzipHandler === RUN TestProxyGzipHandler/plain_body_-_compressed_response === RUN TestProxyGzipHandler/plain_body_-_compressed_response_(with_charset) === RUN TestProxyGzipHandler/compressed_body_-_compressed_response === RUN TestProxyGzipHandler/plain_body_-_plain_response === RUN TestProxyGzipHandler/compressed_body_-_plain_response === RUN TestProxyGzipHandler/plain_body_-_plain_response_(no_match) --- PASS: TestProxyGzipHandler (0.01s) --- PASS: TestProxyGzipHandler/plain_body_-_compressed_response (0.00s) --- PASS: TestProxyGzipHandler/plain_body_-_compressed_response_(with_charset) (0.00s) --- PASS: TestProxyGzipHandler/compressed_body_-_compressed_response (0.00s) --- PASS: TestProxyGzipHandler/plain_body_-_plain_response (0.00s) --- PASS: TestProxyGzipHandler/compressed_body_-_plain_response (0.00s) --- PASS: TestProxyGzipHandler/plain_body_-_plain_response_(no_match) (0.00s) === RUN TestGracefulShutdown --- PASS: TestGracefulShutdown (0.10s) listen_test.go:42: ListenAndServeHTTP: http: Server closed === RUN TestTCPProxy --- PASS: TestTCPProxy (0.00s) tcp_integration_test.go:52: ListenAndServeTCP: accept tcp 127.0.0.1:57778: use of closed network connection === RUN TestTCPProxyWithTLS 2019/03/07 16:43:59 [INFO] cert: Store has certificates for ["example.com"] --- PASS: TestTCPProxyWithTLS (0.26s) === RUN TestTCPSNIProxy --- PASS: TestTCPSNIProxy (0.00s) tcp_integration_test.go:159: ListenAndServeTCP: accept tcp 127.0.0.1:57778: use of closed network connection === RUN TestTCPProxyWithProxyProto --- PASS: TestTCPProxyWithProxyProto (0.00s) tcp_integration_test.go:234: ListenAndServeTCP: accept tcp 127.0.0.1:57778: use of closed network connection === RUN TestTCPProxyWithTLSWithProxyProto 2019/03/07 16:43:59 [INFO] cert: Store has certificates for ["example.com"] --- PASS: TestTCPProxyWithTLSWithProxyProto (0.26s) === RUN TestTCPSNIProxyWithProxyProto --- PASS: TestTCPSNIProxyWithProxyProto (0.00s) tcp_integration_test.go:345: ListenAndServeTCP: accept tcp 127.0.0.1:57778: use of closed network connection === RUN TestProxyWSUpstream === RUN TestProxyWSUpstream/ws-ws_direct === RUN TestProxyWSUpstream/wss-wss_direct === RUN TestProxyWSUpstream/ws-ws_via_http_proxy === RUN TestProxyWSUpstream/wss-ws_via_https_proxy === RUN TestProxyWSUpstream/ws-wss_via_http_proxy === RUN TestProxyWSUpstream/wss-wss_via_https_proxy === RUN TestProxyWSUpstream/ws-wss_tlsskipverify=true_via_http_proxy === RUN TestProxyWSUpstream/wss-wss_tlsskipverify=true_via_https_proxy === RUN TestProxyWSUpstream/ws-ws_via_http_proxy_with_gzip === RUN TestProxyWSUpstream/ws-ws_via_http_proxy_with_strip --- PASS: TestProxyWSUpstream (0.02s) ws_integration_test.go:28: Started WS server: http://127.0.0.1:58101 ws_integration_test.go:34: Started WSS server: https://127.0.0.1:58102 ws_integration_test.go:53: Started HTTP proxy: http://127.0.0.1:58103 ws_integration_test.go:67: Started HTTPS proxy: https://127.0.0.1:58104 --- PASS: TestProxyWSUpstream/ws-ws_direct (0.00s) --- PASS: TestProxyWSUpstream/wss-wss_direct (0.00s) --- PASS: TestProxyWSUpstream/ws-ws_via_http_proxy (0.00s) --- PASS: TestProxyWSUpstream/wss-ws_via_https_proxy (0.00s) --- PASS: TestProxyWSUpstream/ws-wss_via_http_proxy (0.00s) --- PASS: TestProxyWSUpstream/wss-wss_via_https_proxy (0.00s) --- PASS: TestProxyWSUpstream/ws-wss_tlsskipverify=true_via_http_proxy (0.00s) --- PASS: TestProxyWSUpstream/wss-wss_tlsskipverify=true_via_https_proxy (0.00s) --- PASS: TestProxyWSUpstream/ws-ws_via_http_proxy_with_gzip (0.00s) --- PASS: TestProxyWSUpstream/ws-ws_via_http_proxy_with_strip (0.00s) PASS ok github.com/fabiolb/fabio/proxy (cached) === RUN TestContentTypes === RUN TestContentTypes/text/foo === RUN TestContentTypes/text/foo;_charset=UTF-8 === RUN TestContentTypes/text/plain === RUN TestContentTypes/text/plain;_charset=UTF-8 === RUN TestContentTypes/application/json === RUN TestContentTypes/application/json;_charset=UTF-8 === RUN TestContentTypes/application/javascript === RUN TestContentTypes/application/javascript;_charset=UTF-8 === RUN TestContentTypes/application/font-woff === RUN TestContentTypes/application/font-woff;_charset=UTF-8 === RUN TestContentTypes/application/xml === RUN TestContentTypes/application/xml;_charset=UTF-8 === RUN TestContentTypes/vendor/vendor.foo+json === RUN TestContentTypes/vendor/vendor.foo+json;_charset=UTF-8 === RUN TestContentTypes/vendor/vendor.foo+xml === RUN TestContentTypes/vendor/vendor.foo+xml;_charset=UTF-8 --- PASS: TestContentTypes (0.00s) --- PASS: TestContentTypes/text/foo (0.00s) --- PASS: TestContentTypes/text/foo;_charset=UTF-8 (0.00s) --- PASS: TestContentTypes/text/plain (0.00s) --- PASS: TestContentTypes/text/plain;_charset=UTF-8 (0.00s) --- PASS: TestContentTypes/application/json (0.00s) --- PASS: TestContentTypes/application/json;_charset=UTF-8 (0.00s) --- PASS: TestContentTypes/application/javascript (0.00s) --- PASS: TestContentTypes/application/javascript;_charset=UTF-8 (0.00s) --- PASS: TestContentTypes/application/font-woff (0.00s) --- PASS: TestContentTypes/application/font-woff;_charset=UTF-8 (0.00s) --- PASS: TestContentTypes/application/xml (0.00s) --- PASS: TestContentTypes/application/xml;_charset=UTF-8 (0.00s) --- PASS: TestContentTypes/vendor/vendor.foo+json (0.00s) --- PASS: TestContentTypes/vendor/vendor.foo+json;_charset=UTF-8 (0.00s) --- PASS: TestContentTypes/vendor/vendor.foo+xml (0.00s) --- PASS: TestContentTypes/vendor/vendor.foo+xml;_charset=UTF-8 (0.00s) === RUN Test_GzipHandler_CompressableType --- PASS: Test_GzipHandler_CompressableType (0.00s) === RUN Test_GzipHandler_NotCompressingTwice --- PASS: Test_GzipHandler_NotCompressingTwice (0.00s) === RUN Test_GzipHandler_CompressableType_NoAccept --- PASS: Test_GzipHandler_CompressableType_NoAccept (0.00s) === RUN Test_GzipHandler_NonCompressableType --- PASS: Test_GzipHandler_NonCompressableType (0.00s) PASS ok github.com/fabiolb/fabio/proxy/gzip (cached) ? github.com/fabiolb/fabio/proxy/internal [no test files] === RUN TestClientHelloBufferSize === RUN TestClientHelloBufferSize/valid_data === RUN TestClientHelloBufferSize/not_enough_data === RUN TestClientHelloBufferSize/not_a_TLS_record === RUN TestClientHelloBufferSize/TLS_record_too_large === RUN TestClientHelloBufferSize/TLS_record_length_zero === RUN TestClientHelloBufferSize/Not_a_client_hello === RUN TestClientHelloBufferSize/Invalid_handshake_message_record_length === RUN TestClientHelloBufferSize/Fragmentation_(handshake_message_larger_than_record) --- PASS: TestClientHelloBufferSize (0.00s) --- PASS: TestClientHelloBufferSize/valid_data (0.00s) --- PASS: TestClientHelloBufferSize/not_enough_data (0.00s) --- PASS: TestClientHelloBufferSize/not_a_TLS_record (0.00s) --- PASS: TestClientHelloBufferSize/TLS_record_too_large (0.00s) --- PASS: TestClientHelloBufferSize/TLS_record_length_zero (0.00s) --- PASS: TestClientHelloBufferSize/Not_a_client_hello (0.00s) --- PASS: TestClientHelloBufferSize/Invalid_handshake_message_record_length (0.00s) --- PASS: TestClientHelloBufferSize/Fragmentation_(handshake_message_larger_than_record) (0.00s) === RUN TestReadServerName === RUN TestReadServerName/valid_client_hello_with_server_name === RUN TestReadServerName/valid_client_hello_but_no_server_name_extension === RUN TestReadServerName/invalid_client_hello --- PASS: TestReadServerName (0.00s) --- PASS: TestReadServerName/valid_client_hello_with_server_name (0.00s) --- PASS: TestReadServerName/valid_client_hello_but_no_server_name_extension (0.00s) --- PASS: TestReadServerName/invalid_client_hello (0.00s) PASS ok github.com/fabiolb/fabio/proxy/tcp (cached) ? github.com/fabiolb/fabio/proxy/tcp/tcptest [no test files] ? github.com/fabiolb/fabio/registry [no test files] === RUN TestPassingServices === RUN TestPassingServices/expect_no_passing_checks_if_checks_array_is_nil === RUN TestPassingServices/expect_no_passing_checks_if_checks_array_is_empty === RUN TestPassingServices/expect_check_to_pass_if_it_has_a_matching_status === RUN TestPassingServices/expect_all_checks_to_pass_if_they_have_a_matching_status === RUN TestPassingServices/expect_that_internal_consul_checks_are_filtered_out === RUN TestPassingServices/expect_no_passing_checks_if_consul_agent_is_unhealthy 2019/03/07 16:43:58 [DEBUG] consul: Skipping service "" since agent on node "node" is down: === RUN TestPassingServices/expect_no_passing_checks_if_node_is_in_maintenance_mode 2019/03/07 16:43:58 [DEBUG] consul: Skipping service "" since node "node" is in maintenance mode: === RUN TestPassingServices/expect_no_passing_check_if_corresponding_service_is_in_maintenance_mode 2019/03/07 16:43:58 [DEBUG] consul: Skipping service "abc-1" since it is in maintenance mode: === RUN TestPassingServices/expect_no_passing_check_if_node_and_service_are_in_maintenance_mode 2019/03/07 16:43:58 [DEBUG] consul: Skipping service "" since node "node" is in maintenance mode: === RUN TestPassingServices/expect_no_passing_check_if_agent_is_unhealthy_or_node_and_service_are_in_maintenance_mode 2019/03/07 16:43:58 [DEBUG] consul: Skipping service "" since agent on node "node" is down: === RUN TestPassingServices/expect_check_of_service_which_is_not_in_maintenance_mode_to_pass_if_another_instance_of_same_service_is_in_maintenance_mode === RUN TestPassingServices/expect_that_no_checks_of_a_service_which_is_in_maintenance_mode_are_returned_even_if_it_has_a_passing_check 2019/03/07 16:43:58 [DEBUG] consul: Skipping service "abc-1" since it is in maintenance mode: === RUN TestPassingServices/expect_that_a_service's_failing_check_does_not_affect_a_healthy_instance_of_same_service_running_on_different_node === RUN TestPassingServices/service_in_maintenance_mode_does_not_affect_healthy_service_running_on_different_node === RUN TestPassingServices/expect_that_internal_consul_check_and_failing_check_are_not_returned === RUN TestPassingServices/expect_that_internal_consul_check_is_filtered_out_and_check_with_warning_is_passing === RUN TestPassingServices/expect_that_warning_and_passing_non-internal_checks_are_returned === RUN TestPassingServices/expect_that_warning_und_passing_non-internal_checks_are_returned === RUN TestPassingServices/in_non-strict_mode,_expect_that_checks_which_belong_to_same_service_are_passing,_if_at_least_one_of_them_is_passing === RUN TestPassingServices/in_strict_mode,_expect_that_no_checks_which_belong_to_same_service_are_passing,_if_not_all_of_them_are_passing === RUN TestPassingServices/in_strict_mode,_expect_that_a_failing_check_of_one_service_does_not_affect_a_different_service's_passing_check === RUN TestPassingServices/in_strict_mode,_expect_a_check_to_pass_if_all_of_the_other_checks_that_belong_to_the_same_service_are_passing --- PASS: TestPassingServices (0.00s) --- PASS: TestPassingServices/expect_no_passing_checks_if_checks_array_is_nil (0.00s) --- PASS: TestPassingServices/expect_no_passing_checks_if_checks_array_is_empty (0.00s) --- PASS: TestPassingServices/expect_check_to_pass_if_it_has_a_matching_status (0.00s) --- PASS: TestPassingServices/expect_all_checks_to_pass_if_they_have_a_matching_status (0.00s) --- PASS: TestPassingServices/expect_that_internal_consul_checks_are_filtered_out (0.00s) --- PASS: TestPassingServices/expect_no_passing_checks_if_consul_agent_is_unhealthy (0.00s) --- PASS: TestPassingServices/expect_no_passing_checks_if_node_is_in_maintenance_mode (0.00s) --- PASS: TestPassingServices/expect_no_passing_check_if_corresponding_service_is_in_maintenance_mode (0.00s) --- PASS: TestPassingServices/expect_no_passing_check_if_node_and_service_are_in_maintenance_mode (0.00s) --- PASS: TestPassingServices/expect_no_passing_check_if_agent_is_unhealthy_or_node_and_service_are_in_maintenance_mode (0.00s) --- PASS: TestPassingServices/expect_check_of_service_which_is_not_in_maintenance_mode_to_pass_if_another_instance_of_same_service_is_in_maintenance_mode (0.00s) --- PASS: TestPassingServices/expect_that_no_checks_of_a_service_which_is_in_maintenance_mode_are_returned_even_if_it_has_a_passing_check (0.00s) --- PASS: TestPassingServices/expect_that_a_service's_failing_check_does_not_affect_a_healthy_instance_of_same_service_running_on_different_node (0.00s) --- PASS: TestPassingServices/service_in_maintenance_mode_does_not_affect_healthy_service_running_on_different_node (0.00s) --- PASS: TestPassingServices/expect_that_internal_consul_check_and_failing_check_are_not_returned (0.00s) --- PASS: TestPassingServices/expect_that_internal_consul_check_is_filtered_out_and_check_with_warning_is_passing (0.00s) --- PASS: TestPassingServices/expect_that_warning_and_passing_non-internal_checks_are_returned (0.00s) --- PASS: TestPassingServices/expect_that_warning_und_passing_non-internal_checks_are_returned (0.00s) --- PASS: TestPassingServices/in_non-strict_mode,_expect_that_checks_which_belong_to_same_service_are_passing,_if_at_least_one_of_them_is_passing (0.00s) --- PASS: TestPassingServices/in_strict_mode,_expect_that_no_checks_which_belong_to_same_service_are_passing,_if_not_all_of_them_are_passing (0.00s) --- PASS: TestPassingServices/in_strict_mode,_expect_that_a_failing_check_of_one_service_does_not_affect_a_different_service's_passing_check (0.00s) --- PASS: TestPassingServices/in_strict_mode,_expect_a_check_to_pass_if_all_of_the_other_checks_that_belong_to_the_same_service_are_passing (0.00s) === RUN TestRouteCmd === RUN TestRouteCmd/http === RUN TestRouteCmd/tcp --- PASS: TestRouteCmd (0.00s) --- PASS: TestRouteCmd/http (0.00s) --- PASS: TestRouteCmd/tcp (0.00s) === RUN TestParseTag 2019/03/07 16:43:58 [WARN] consul: Invalid p- tag "" - You need to have a trailing slash! 2019/03/07 16:43:58 [WARN] consul: Invalid p- tag "" - You need to have a trailing slash! --- PASS: TestParseTag (0.00s) PASS ok github.com/fabiolb/fabio/registry/consul (cached) === RUN TestCustomRoutes 2019/03/08 09:44:43 [DEBUG] *********Building Table 2019-03-08 09:44:43.457811 -0600 CST m=+3.009856608 ************* 2019/03/08 09:44:43 [DEBUG] *********Building Table Complete 2019-03-08 09:44:43.459062 -0600 CST m=+3.011107656 ************* --- PASS: TestCustomRoutes (3.01s) PASS ok github.com/fabiolb/fabio/registry/custom (cached) ? github.com/fabiolb/fabio/registry/file [no test files] ? github.com/fabiolb/fabio/registry/static [no test files] === RUN TestAccessRules_parseAccessRule === RUN TestAccessRules_parseAccessRule/valid_ipv4_rule === RUN TestAccessRules_parseAccessRule/valid_ipv6_rule === RUN TestAccessRules_parseAccessRule/invalid_rule_type === RUN TestAccessRules_parseAccessRule/ip_rule_with_incomplete_address === RUN TestAccessRules_parseAccessRule/ip_rule_with_bad_cidr_mask === RUN TestAccessRules_parseAccessRule/single_ipv4_with_no_mask === RUN TestAccessRules_parseAccessRule/single_ipv6_with_no_mask --- PASS: TestAccessRules_parseAccessRule (0.00s) --- PASS: TestAccessRules_parseAccessRule/valid_ipv4_rule (0.00s) --- PASS: TestAccessRules_parseAccessRule/valid_ipv6_rule (0.00s) --- PASS: TestAccessRules_parseAccessRule/invalid_rule_type (0.00s) --- PASS: TestAccessRules_parseAccessRule/ip_rule_with_incomplete_address (0.00s) --- PASS: TestAccessRules_parseAccessRule/ip_rule_with_bad_cidr_mask (0.00s) --- PASS: TestAccessRules_parseAccessRule/single_ipv4_with_no_mask (0.00s) --- PASS: TestAccessRules_parseAccessRule/single_ipv6_with_no_mask (0.00s) === RUN TestAccessRules_denyByIP === RUN TestAccessRules_denyByIP/allow_rule_with_included_ipv4 2019/03/07 16:43:59 [DEBUG] checking 10.10.0.1 against ip allow rule 10.0.0.0/8 2019/03/07 16:43:59 [DEBUG] allowing request from 10.10.0.1 via 10.0.0.0/8 === RUN TestAccessRules_denyByIP/allow_rule_with_exluded_ipv4 2019/03/07 16:43:59 [DEBUG] checking 1.2.3.4 against ip allow rule 10.0.0.0/8 2019/03/07 16:43:59 [DEBUG] checking 1.2.3.4 against ip allow rule 192.168.0.0/24 2019/03/07 16:43:59 [INFO] route rules denied access from 1.2.3.4 to http://testing.test/ === RUN TestAccessRules_denyByIP/deny_rule_with_included_ipv4 2019/03/07 16:43:59 [DEBUG] checking 10.10.0.1 against ip deny rule 10.0.0.0/8 2019/03/07 16:43:59 [INFO] route rules denied access from 10.10.0.1 to http://testing.test/ === RUN TestAccessRules_denyByIP/deny_rule_with_excluded_ipv4 2019/03/07 16:43:59 [DEBUG] checking 1.2.3.4 against ip deny rule 10.0.0.0/8 2019/03/07 16:43:59 [DEBUG] checking 1.2.3.4 against ip deny rule 192.168.0.0/24 2019/03/07 16:43:59 [DEBUG] default allowing request from 1.2.3.4 that was not denied === RUN TestAccessRules_denyByIP/allow_rule_with_included_ipv6 2019/03/07 16:43:59 [DEBUG] checking 1234:dead:beef:cafe::5678 against ip allow rule 1234:dead:beef:cafe::/64 2019/03/07 16:43:59 [DEBUG] allowing request from 1234:dead:beef:cafe::5678 via 1234:dead:beef:cafe::/64 === RUN TestAccessRules_denyByIP/allow_rule_with_exluded_ipv6 2019/03/07 16:43:59 [DEBUG] checking 1234:5678::1 against ip allow rule 1234:dead:beef:cafe::/64 2019/03/07 16:43:59 [INFO] route rules denied access from 1234:5678::1 to http://testing.test/ === RUN TestAccessRules_denyByIP/deny_rule_with_included_ipv6 2019/03/07 16:43:59 [DEBUG] checking 1234:dead:beef:cafe::5678 against ip deny rule 1234:dead:beef:cafe::/64 2019/03/07 16:43:59 [INFO] route rules denied access from 1234:dead:beef:cafe::5678 to http://testing.test/ === RUN TestAccessRules_denyByIP/deny_rule_with_excluded_ipv6 2019/03/07 16:43:59 [DEBUG] checking 1234:5678::1 against ip deny rule 1234:dead:beef:cafe::/64 2019/03/07 16:43:59 [DEBUG] default allowing request from 1234:5678::1 that was not denied --- PASS: TestAccessRules_denyByIP (0.00s) --- PASS: TestAccessRules_denyByIP/allow_rule_with_included_ipv4 (0.00s) --- PASS: TestAccessRules_denyByIP/allow_rule_with_exluded_ipv4 (0.00s) --- PASS: TestAccessRules_denyByIP/deny_rule_with_included_ipv4 (0.00s) --- PASS: TestAccessRules_denyByIP/deny_rule_with_excluded_ipv4 (0.00s) --- PASS: TestAccessRules_denyByIP/allow_rule_with_included_ipv6 (0.00s) --- PASS: TestAccessRules_denyByIP/allow_rule_with_exluded_ipv6 (0.00s) --- PASS: TestAccessRules_denyByIP/deny_rule_with_included_ipv6 (0.00s) --- PASS: TestAccessRules_denyByIP/deny_rule_with_excluded_ipv6 (0.00s) === RUN TestAccessRules_AccessDeniedHTTP === RUN TestAccessRules_AccessDeniedHTTP/single_denied_xff_and_allowed_remote_addr 2019/03/07 16:43:59 [DEBUG] checking 10.11.12.1 against ip allow rule 10.0.0.0/8 2019/03/07 16:43:59 [DEBUG] allowing request from 10.11.12.1 via 10.0.0.0/8 2019/03/07 16:43:59 [DEBUG] checking 10.11.12.13 against ip allow rule 10.0.0.0/8 2019/03/07 16:43:59 [DEBUG] allowing request from 10.11.12.13 via 10.0.0.0/8 2019/03/07 16:43:59 [DEBUG] checking 1.1.1.2 against ip allow rule 10.0.0.0/8 2019/03/07 16:43:59 [DEBUG] checking 1.1.1.2 against ip allow rule 192.168.0.0/24 2019/03/07 16:43:59 [INFO] route rules denied access from 1.1.1.2 to http://testing.test/ === RUN TestAccessRules_AccessDeniedHTTP/allowed_xff_and_denied_remote_addr 2019/03/07 16:43:59 [DEBUG] checking 1.1.1.2 against ip allow rule 10.0.0.0/8 2019/03/07 16:43:59 [DEBUG] checking 1.1.1.2 against ip allow rule 192.168.0.0/24 2019/03/07 16:43:59 [INFO] route rules denied access from 1.1.1.2 to http://testing.test/ === RUN TestAccessRules_AccessDeniedHTTP/single_allowed_xff_and_allowed_remote_addr 2019/03/07 16:43:59 [DEBUG] checking 192.168.0.12 against ip allow rule 10.0.0.0/8 2019/03/07 16:43:59 [DEBUG] checking 192.168.0.12 against ip allow rule 192.168.0.0/24 2019/03/07 16:43:59 [DEBUG] allowing request from 192.168.0.12 via 192.168.0.0/24 2019/03/07 16:43:59 [DEBUG] checking 10.11.12.13 against ip allow rule 10.0.0.0/8 2019/03/07 16:43:59 [DEBUG] allowing request from 10.11.12.13 via 10.0.0.0/8 2019/03/07 16:43:59 [DEBUG] checking 1.2.3.4 against ip allow rule 10.0.0.0/8 2019/03/07 16:43:59 [DEBUG] checking 1.2.3.4 against ip allow rule 192.168.0.0/24 2019/03/07 16:43:59 [INFO] route rules denied access from 1.2.3.4 to http://testing.test/ === RUN TestAccessRules_AccessDeniedHTTP/denied_xff_and_denied_remote_addr 2019/03/07 16:43:59 [DEBUG] checking 200.17.18.20 against ip allow rule 10.0.0.0/8 2019/03/07 16:43:59 [DEBUG] checking 200.17.18.20 against ip allow rule 192.168.0.0/24 2019/03/07 16:43:59 [INFO] route rules denied access from 200.17.18.20 to http://testing.test/ === RUN TestAccessRules_AccessDeniedHTTP/all_allowed_xff_and_allowed_remote_addr 2019/03/07 16:43:59 [DEBUG] checking 192.168.0.12 against ip allow rule 10.0.0.0/8 2019/03/07 16:43:59 [DEBUG] checking 192.168.0.12 against ip allow rule 192.168.0.0/24 2019/03/07 16:43:59 [DEBUG] allowing request from 192.168.0.12 via 192.168.0.0/24 2019/03/07 16:43:59 [DEBUG] checking 10.11.12.13 against ip allow rule 10.0.0.0/8 2019/03/07 16:43:59 [DEBUG] allowing request from 10.11.12.13 via 10.0.0.0/8 2019/03/07 16:43:59 [DEBUG] checking 10.110.120.130 against ip allow rule 10.0.0.0/8 2019/03/07 16:43:59 [DEBUG] allowing request from 10.110.120.130 via 10.0.0.0/8 --- PASS: TestAccessRules_AccessDeniedHTTP (0.00s) --- PASS: TestAccessRules_AccessDeniedHTTP/single_denied_xff_and_allowed_remote_addr (0.00s) --- PASS: TestAccessRules_AccessDeniedHTTP/allowed_xff_and_denied_remote_addr (0.00s) --- PASS: TestAccessRules_AccessDeniedHTTP/single_allowed_xff_and_allowed_remote_addr (0.00s) --- PASS: TestAccessRules_AccessDeniedHTTP/denied_xff_and_denied_remote_addr (0.00s) --- PASS: TestAccessRules_AccessDeniedHTTP/all_allowed_xff_and_allowed_remote_addr (0.00s) === RUN TestTarget_Authorized === RUN TestTarget_Authorized/matches_correct_auth_scheme === RUN TestTarget_Authorized/returns_true_when_scheme_is_empty === RUN TestTarget_Authorized/returns_false_when_scheme_is_unknown 2019/03/07 16:43:59 [ERROR] unknown auth scheme 'foobar' --- PASS: TestTarget_Authorized (0.00s) --- PASS: TestTarget_Authorized/matches_correct_auth_scheme (0.00s) --- PASS: TestTarget_Authorized/returns_true_when_scheme_is_empty (0.00s) --- PASS: TestTarget_Authorized/returns_false_when_scheme_is_unknown (0.00s) === RUN TestIssue57 --- PASS: TestIssue57 (0.00s) === RUN TestPrefixMatcher === RUN TestPrefixMatcher//foo === RUN TestPrefixMatcher//fools === RUN TestPrefixMatcher//fo === RUN TestPrefixMatcher//bar --- PASS: TestPrefixMatcher (0.00s) --- PASS: TestPrefixMatcher//foo (0.00s) --- PASS: TestPrefixMatcher//fools (0.00s) --- PASS: TestPrefixMatcher//fo (0.00s) --- PASS: TestPrefixMatcher//bar (0.00s) === RUN TestGlobMatcher === RUN TestGlobMatcher//foo === RUN TestGlobMatcher//fool === RUN TestGlobMatcher//fool#01 === RUN TestGlobMatcher//fools === RUN TestGlobMatcher//fools#01 === RUN TestGlobMatcher//foo/x/bar === RUN TestGlobMatcher//foo/x/y/z/w/bar === RUN TestGlobMatcher//foo/x/y/z/w/bar#01 === RUN TestGlobMatcher//fo === RUN TestGlobMatcher//fools#02 === RUN TestGlobMatcher//fo#01 === RUN TestGlobMatcher//fools#03 === RUN TestGlobMatcher//foo/x/y/z/w/baz --- PASS: TestGlobMatcher (0.00s) --- PASS: TestGlobMatcher//foo (0.00s) --- PASS: TestGlobMatcher//fool (0.00s) --- PASS: TestGlobMatcher//fool#01 (0.00s) --- PASS: TestGlobMatcher//fools (0.00s) --- PASS: TestGlobMatcher//fools#01 (0.00s) --- PASS: TestGlobMatcher//foo/x/bar (0.00s) --- PASS: TestGlobMatcher//foo/x/y/z/w/bar (0.00s) --- PASS: TestGlobMatcher//foo/x/y/z/w/bar#01 (0.00s) --- PASS: TestGlobMatcher//fo (0.00s) --- PASS: TestGlobMatcher//fools#02 (0.00s) --- PASS: TestGlobMatcher//fo#01 (0.00s) --- PASS: TestGlobMatcher//fools#03 (0.00s) --- PASS: TestGlobMatcher//foo/x/y/z/w/baz (0.00s) === RUN TestIPrefixMatcher === RUN TestIPrefixMatcher//foo === RUN TestIPrefixMatcher//foo#01 === RUN TestIPrefixMatcher//Fool === RUN TestIPrefixMatcher//foo#02 --- PASS: TestIPrefixMatcher (0.00s) --- PASS: TestIPrefixMatcher//foo (0.00s) --- PASS: TestIPrefixMatcher//foo#01 (0.00s) --- PASS: TestIPrefixMatcher//Fool (0.00s) --- PASS: TestIPrefixMatcher//foo#02 (0.00s) === RUN TestParse === RUN TestParse/Parse-FailEmpty === RUN TestParse/Parse-FailNoRoute === RUN TestParse/Parse-FailRouteNoCmd === RUN TestParse/Parse-FailRouteAddNoService === RUN TestParse/Parse-FailRouteAddNoSrc === RUN TestParse/Parse-RouteAddService === RUN TestParse/Parse-RouteAddTCPService === RUN TestParse/Parse-RouteAddGRPCService === RUN TestParse/Parse-RouteAddServiceWeight === RUN TestParse/Parse-RouteAddServiceWeightTags === RUN TestParse/Parse-RouteAddServiceWeightOpts === RUN TestParse/Parse-RouteAddServiceWeightTagsOpts === RUN TestParse/Parse-RouteAddServiceWeightTagsOptsMoreSpaces === RUN TestParse/Parse-RouteAddTags === RUN TestParse/Parse-RouteAddTagsOpts === RUN TestParse/Parse-RouteAddOpts === RUN TestParse/Parse-RouteDelTags === RUN TestParse/Parse-RouteDelTagsMoreSpaces === RUN TestParse/Parse-RouteDelService === RUN TestParse/Parse-RouteDelServiceTags === RUN TestParse/Parse-RouteDelServiceTagsMoreSpaces === RUN TestParse/Parse-RouteDelServiceSrc === RUN TestParse/Parse-RouteDelTCPServiceSrc === RUN TestParse/Parse-RouteDelServiceSrcDst === RUN TestParse/Parse-RouteDelTCPServiceSrcDst === RUN TestParse/Parse-RouteDelServiceSrcDstMoreSpaces === RUN TestParse/Parse-RouteWeightServiceSrc === RUN TestParse/Parse-RouteWeightServiceSrcTags === RUN TestParse/Parse-RouteWeightServiceSrcTagsMoreSpaces === RUN TestParse/Parse-RouteWeightSrcTags === RUN TestParse/Parse-RouteWeightSrcTagsMoreSpaces --- PASS: TestParse (0.00s) --- PASS: TestParse/Parse-FailEmpty (0.00s) --- PASS: TestParse/Parse-FailNoRoute (0.00s) --- PASS: TestParse/Parse-FailRouteNoCmd (0.00s) --- PASS: TestParse/Parse-FailRouteAddNoService (0.00s) --- PASS: TestParse/Parse-FailRouteAddNoSrc (0.00s) --- PASS: TestParse/Parse-RouteAddService (0.00s) --- PASS: TestParse/Parse-RouteAddTCPService (0.00s) --- PASS: TestParse/Parse-RouteAddGRPCService (0.00s) --- PASS: TestParse/Parse-RouteAddServiceWeight (0.00s) --- PASS: TestParse/Parse-RouteAddServiceWeightTags (0.00s) --- PASS: TestParse/Parse-RouteAddServiceWeightOpts (0.00s) --- PASS: TestParse/Parse-RouteAddServiceWeightTagsOpts (0.00s) --- PASS: TestParse/Parse-RouteAddServiceWeightTagsOptsMoreSpaces (0.00s) --- PASS: TestParse/Parse-RouteAddTags (0.00s) --- PASS: TestParse/Parse-RouteAddTagsOpts (0.00s) --- PASS: TestParse/Parse-RouteAddOpts (0.00s) --- PASS: TestParse/Parse-RouteDelTags (0.00s) --- PASS: TestParse/Parse-RouteDelTagsMoreSpaces (0.00s) --- PASS: TestParse/Parse-RouteDelService (0.00s) --- PASS: TestParse/Parse-RouteDelServiceTags (0.00s) --- PASS: TestParse/Parse-RouteDelServiceTagsMoreSpaces (0.00s) --- PASS: TestParse/Parse-RouteDelServiceSrc (0.00s) --- PASS: TestParse/Parse-RouteDelTCPServiceSrc (0.00s) --- PASS: TestParse/Parse-RouteDelServiceSrcDst (0.00s) --- PASS: TestParse/Parse-RouteDelTCPServiceSrcDst (0.00s) --- PASS: TestParse/Parse-RouteDelServiceSrcDstMoreSpaces (0.00s) --- PASS: TestParse/Parse-RouteWeightServiceSrc (0.00s) --- PASS: TestParse/Parse-RouteWeightServiceSrcTags (0.00s) --- PASS: TestParse/Parse-RouteWeightServiceSrcTagsMoreSpaces (0.00s) --- PASS: TestParse/Parse-RouteWeightSrcTags (0.00s) --- PASS: TestParse/Parse-RouteWeightSrcTagsMoreSpaces (0.00s) === RUN TestParseAliases === RUN TestParseAliases/ParseAliases-FailEmpty === RUN TestParseAliases/ParseAliases-FailNoRoute === RUN TestParseAliases/ParseAliases-FailRouteNoCmd === RUN TestParseAliases/ParseAliases-FailRouteAddNoService === RUN TestParseAliases/ParseAliases-FailRouteAddNoSrc === RUN TestParseAliases/ParseAliases-RouteAddServiceWithoutAlias === RUN TestParseAliases/ParseAliases-RouteAddServiceWithAlias === RUN TestParseAliases/ParseAliases-RouteAddServicesWithoutAliases === RUN TestParseAliases/ParseAliases-RouteAddServicesWithAliases --- PASS: TestParseAliases (0.00s) --- PASS: TestParseAliases/ParseAliases-FailEmpty (0.00s) --- PASS: TestParseAliases/ParseAliases-FailNoRoute (0.00s) --- PASS: TestParseAliases/ParseAliases-FailRouteNoCmd (0.00s) --- PASS: TestParseAliases/ParseAliases-FailRouteAddNoService (0.00s) --- PASS: TestParseAliases/ParseAliases-FailRouteAddNoSrc (0.00s) --- PASS: TestParseAliases/ParseAliases-RouteAddServiceWithoutAlias (0.00s) --- PASS: TestParseAliases/ParseAliases-RouteAddServiceWithAlias (0.00s) --- PASS: TestParseAliases/ParseAliases-RouteAddServicesWithoutAliases (0.00s) --- PASS: TestParseAliases/ParseAliases-RouteAddServicesWithAliases (0.00s) === RUN TestRndPicker --- PASS: TestRndPicker (0.00s) === RUN TestRRPicker --- PASS: TestRRPicker (0.00s) === RUN TestSyncRegistry 2019/03/07 16:43:59 [INFO] Unregistered timer svc-b._./bbb.localhost_5678 --- PASS: TestSyncRegistry (0.00s) === RUN TestTableParse === RUN TestTableParse/1_service,_1_prefix === RUN TestTableParse/1_service,_1_prefix,_3_instances === RUN TestTableParse/1_service,_1_prefix_with_option === RUN TestTableParse/1_service,_1_prefix,_2_instances_with_different_options === RUN TestTableParse/2_service,_1_prefix === RUN TestTableParse/1_service,_2_prefix === RUN TestTableParse/2_service,_2_prefix === RUN TestTableParse/sort_by_more_specific_prefix === RUN TestTableParse/sort_prefix_with_host_before_prefix_without_host === RUN TestTableParse/add_more_specific_prefix_to_existing_host === RUN TestTableParse/delete_route_by_service,_path_and_target === RUN TestTableParse/delete_route_by_service_and_path === RUN TestTableParse/delete_route_by_service === RUN TestTableParse/delete_route_by_service_and_tags === RUN TestTableParse/delete_route_by_tags === RUN TestTableParse/weigh_fixed_weight_0_->_auto_distribution === RUN TestTableParse/weigh_only_fixed_weights_and_sum(fixedWeight)_<_1_->_normalize_to_100% === RUN TestTableParse/weigh_only_fixed_weights_and_sum(fixedWeight)_>_1_->_normalize_to_100% === RUN TestTableParse/weigh_multiple_entries_for_same_instance_with_no_fixed_weight_->_de-duplication === RUN TestTableParse/weigh_multiple_entries_with_no_fixed_weight_->_even_distribution === RUN TestTableParse/weigh_multiple_entries_with_de-dup_and_no_fixed_weight_->_even_distribution === RUN TestTableParse/weigh_mixed_fixed_and_auto_weights_->_even_distribution_of_remaining_weight_across_non-fixed_weighted_targets === RUN TestTableParse/weigh_fixed_weight_==_100%_->_route_only_to_fixed_weighted_targets === RUN TestTableParse/weigh_fixed_weight_>_100%__->_route_only_to_fixed_weighted_targets_and_normalize_weight === RUN TestTableParse/weigh_dynamic_weight_matched_on_service_name === RUN TestTableParse/weigh_dynamic_weight_matched_on_service_name_and_tags === RUN TestTableParse/weigh_dynamic_weight_matched_on_tags === RUN TestTableParse/weigh_more_than_1000_routes === RUN TestTableParse/weigh_more_than_1000_routes_with_a_fixed_route_target --- PASS: TestTableParse (0.48s) --- PASS: TestTableParse/1_service,_1_prefix (0.00s) --- PASS: TestTableParse/1_service,_1_prefix,_3_instances (0.00s) --- PASS: TestTableParse/1_service,_1_prefix_with_option (0.00s) --- PASS: TestTableParse/1_service,_1_prefix,_2_instances_with_different_options (0.00s) --- PASS: TestTableParse/2_service,_1_prefix (0.00s) --- PASS: TestTableParse/1_service,_2_prefix (0.00s) --- PASS: TestTableParse/2_service,_2_prefix (0.00s) --- PASS: TestTableParse/sort_by_more_specific_prefix (0.00s) --- PASS: TestTableParse/sort_prefix_with_host_before_prefix_without_host (0.00s) --- PASS: TestTableParse/add_more_specific_prefix_to_existing_host (0.00s) --- PASS: TestTableParse/delete_route_by_service,_path_and_target (0.00s) --- PASS: TestTableParse/delete_route_by_service_and_path (0.00s) --- PASS: TestTableParse/delete_route_by_service (0.00s) --- PASS: TestTableParse/delete_route_by_service_and_tags (0.00s) --- PASS: TestTableParse/delete_route_by_tags (0.00s) --- PASS: TestTableParse/weigh_fixed_weight_0_->_auto_distribution (0.00s) --- PASS: TestTableParse/weigh_only_fixed_weights_and_sum(fixedWeight)_<_1_->_normalize_to_100% (0.00s) --- PASS: TestTableParse/weigh_only_fixed_weights_and_sum(fixedWeight)_>_1_->_normalize_to_100% (0.00s) --- PASS: TestTableParse/weigh_multiple_entries_for_same_instance_with_no_fixed_weight_->_de-duplication (0.00s) --- PASS: TestTableParse/weigh_multiple_entries_with_no_fixed_weight_->_even_distribution (0.00s) --- PASS: TestTableParse/weigh_multiple_entries_with_de-dup_and_no_fixed_weight_->_even_distribution (0.00s) --- PASS: TestTableParse/weigh_mixed_fixed_and_auto_weights_->_even_distribution_of_remaining_weight_across_non-fixed_weighted_targets (0.00s) --- PASS: TestTableParse/weigh_fixed_weight_==_100%_->_route_only_to_fixed_weighted_targets (0.00s) --- PASS: TestTableParse/weigh_fixed_weight_>_100%__->_route_only_to_fixed_weighted_targets_and_normalize_weight (0.00s) --- PASS: TestTableParse/weigh_dynamic_weight_matched_on_service_name (0.00s) --- PASS: TestTableParse/weigh_dynamic_weight_matched_on_service_name_and_tags (0.00s) --- PASS: TestTableParse/weigh_dynamic_weight_matched_on_tags (0.00s) --- PASS: TestTableParse/weigh_more_than_1000_routes (0.21s) --- PASS: TestTableParse/weigh_more_than_1000_routes_with_a_fixed_route_target (0.25s) === RUN TestNormalizeHost --- PASS: TestNormalizeHost (0.00s) === RUN TestTableLookupIssue448 --- PASS: TestTableLookupIssue448 (0.00s) === RUN TestTableLookup --- PASS: TestTableLookup (0.00s) === RUN TestNewTableCustomBE --- PASS: TestNewTableCustomBE (0.00s) === RUN TestTarget_BuildRedirectURL --- PASS: TestTarget_BuildRedirectURL (0.00s) PASS ok github.com/fabiolb/fabio/route (cached) === RUN TestCreateCollectorHTTP --- PASS: TestCreateCollectorHTTP (0.00s) === RUN TestCreateSpanNoGlobalTracer --- PASS: TestCreateSpanNoGlobalTracer (0.00s) === RUN TestCreateSpanWithNoParent --- PASS: TestCreateSpanWithNoParent (0.00s) === RUN TestCreateSpanWithParent --- PASS: TestCreateSpanWithParent (0.00s) === RUN TestInitializeTracer 2019/03/07 16:43:59 Tracing initializing - type: http, connection string: , service name: , topic: , samplerRate: 0 --- PASS: TestInitializeTracer (0.00s) === RUN TestInitializeTracerWhileDisabled --- PASS: TestInitializeTracerWhileDisabled (0.00s) === RUN TestInjectHeaders --- PASS: TestInjectHeaders (0.00s) === RUN TestInjectHeadersWithParentSpan --- PASS: TestInjectHeadersWithParentSpan (0.00s) PASS ok github.com/fabiolb/fabio/trace (cached) ? github.com/fabiolb/fabio/uuid [no test files]