切换为默认的dns解析;增加resolver=system的支持
This commit is contained in:
+4
-1
@@ -95,7 +95,9 @@ func BuildConfigFromCmd(serviceList, nodeList []string) (*config.Config, error)
|
||||
resolverCfg.Nameservers = append(
|
||||
resolverCfg.Nameservers,
|
||||
&config.NameserverConfig{
|
||||
Addr: rs,
|
||||
Addr: rs,
|
||||
Prefer: mdutil.GetString(md, "prefer"),
|
||||
Only: mdutil.GetString(md, "only"),
|
||||
},
|
||||
)
|
||||
}
|
||||
@@ -272,6 +274,7 @@ func BuildConfigFromCmd(serviceList, nodeList []string) (*config.Config, error)
|
||||
&config.NameserverConfig{
|
||||
Addr: rs,
|
||||
Prefer: mdutil.GetString(md, "prefer"),
|
||||
Only: mdutil.GetString(md, "only"),
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
+71
-19
@@ -211,13 +211,13 @@ func TestNorm(t *testing.T) {
|
||||
wantErr bool
|
||||
}{
|
||||
{
|
||||
name: "empty string",
|
||||
input: "",
|
||||
name: "empty string",
|
||||
input: "",
|
||||
wantErr: true,
|
||||
},
|
||||
{
|
||||
name: "whitespace only",
|
||||
input: " ",
|
||||
name: "whitespace only",
|
||||
input: " ",
|
||||
wantErr: true,
|
||||
},
|
||||
{
|
||||
@@ -326,12 +326,12 @@ func TestCutHost(t *testing.T) {
|
||||
|
||||
func TestParseSelector(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
input map[string]any
|
||||
wantNil bool
|
||||
wantStrat string
|
||||
wantFails int
|
||||
wantDurGt bool // failTimeout > 0
|
||||
name string
|
||||
input map[string]any
|
||||
wantNil bool
|
||||
wantStrat string
|
||||
wantFails int
|
||||
wantDurGt bool // failTimeout > 0
|
||||
}{
|
||||
{
|
||||
name: "no params",
|
||||
@@ -359,9 +359,9 @@ func TestParseSelector(t *testing.T) {
|
||||
{
|
||||
name: "all params with failTimeout",
|
||||
input: map[string]any{
|
||||
"strategy": "hash",
|
||||
"maxFails": 5,
|
||||
"failTimeout": "10s",
|
||||
"strategy": "hash",
|
||||
"maxFails": 5,
|
||||
"failTimeout": "10s",
|
||||
},
|
||||
wantStrat: "hash",
|
||||
wantFails: 5,
|
||||
@@ -455,8 +455,8 @@ func TestCopyConnectorConfig(t *testing.T) {
|
||||
|
||||
t.Run("non-nil deep copy", func(t *testing.T) {
|
||||
orig := &config.ConnectorConfig{
|
||||
Type: "http",
|
||||
Auth: &config.AuthConfig{Username: "u", Password: "p"},
|
||||
Type: "http",
|
||||
Auth: &config.AuthConfig{Username: "u", Password: "p"},
|
||||
Metadata: map[string]any{"k": "v"},
|
||||
}
|
||||
c := copyConnectorConfig(orig)
|
||||
@@ -487,9 +487,9 @@ func TestCopyDialerConfig(t *testing.T) {
|
||||
|
||||
t.Run("non-nil deep copy", func(t *testing.T) {
|
||||
orig := &config.DialerConfig{
|
||||
Type: "tls",
|
||||
TLS: &config.TLSConfig{ServerName: "example.com"},
|
||||
Auth: &config.AuthConfig{Username: "u"},
|
||||
Type: "tls",
|
||||
TLS: &config.TLSConfig{ServerName: "example.com"},
|
||||
Auth: &config.AuthConfig{Username: "u"},
|
||||
Metadata: map[string]any{"k": "v"},
|
||||
}
|
||||
c := copyDialerConfig(orig)
|
||||
@@ -1068,6 +1068,31 @@ func TestBuildConfigFromCmd_NodeWithResolver(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestBuildConfigFromCmd_NodeResolverFamilyOptions(t *testing.T) {
|
||||
cfg, err := BuildConfigFromCmd(
|
||||
[]string{":8080"},
|
||||
[]string{"http://proxy:3128?resolver=auto&prefer=ipv6&only=ipv4"},
|
||||
)
|
||||
if err != nil {
|
||||
t.Fatalf("BuildConfigFromCmd: %v", err)
|
||||
}
|
||||
|
||||
rs := cfg.Resolvers[0]
|
||||
if len(rs.Nameservers) != 1 {
|
||||
t.Fatalf("len(Nameservers) = %d, want 1", len(rs.Nameservers))
|
||||
}
|
||||
ns := rs.Nameservers[0]
|
||||
if ns.Addr != "auto" {
|
||||
t.Errorf("Addr = %q, want auto", ns.Addr)
|
||||
}
|
||||
if ns.Prefer != "ipv6" {
|
||||
t.Errorf("Prefer = %q, want ipv6", ns.Prefer)
|
||||
}
|
||||
if ns.Only != "ipv4" {
|
||||
t.Errorf("Only = %q, want ipv4", ns.Only)
|
||||
}
|
||||
}
|
||||
|
||||
func TestBuildConfigFromCmd_NodeWithHosts(t *testing.T) {
|
||||
cfg, err := BuildConfigFromCmd(
|
||||
[]string{":8080"},
|
||||
@@ -1171,6 +1196,34 @@ func TestBuildConfigFromCmd_ServiceWithResolver(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestBuildConfigFromCmd_ServiceSystemResolverOnlyIPv4(t *testing.T) {
|
||||
cfg, err := BuildConfigFromCmd(
|
||||
[]string{"http://:8080?resolver=system&only=ipv4"},
|
||||
nil,
|
||||
)
|
||||
if err != nil {
|
||||
t.Fatalf("BuildConfigFromCmd: %v", err)
|
||||
}
|
||||
|
||||
if len(cfg.Resolvers) != 1 {
|
||||
t.Fatalf("len(Resolvers) = %d, want 1", len(cfg.Resolvers))
|
||||
}
|
||||
rs := cfg.Resolvers[0]
|
||||
if len(rs.Nameservers) != 1 {
|
||||
t.Fatalf("len(Nameservers) = %d, want 1", len(rs.Nameservers))
|
||||
}
|
||||
ns := rs.Nameservers[0]
|
||||
if ns.Addr != "system" {
|
||||
t.Errorf("Addr = %q, want system", ns.Addr)
|
||||
}
|
||||
if ns.Only != "ipv4" {
|
||||
t.Errorf("Only = %q, want ipv4", ns.Only)
|
||||
}
|
||||
if cfg.Services[0].Resolver != rs.Name {
|
||||
t.Errorf("Service.Resolver = %q, want %q", cfg.Services[0].Resolver, rs.Name)
|
||||
}
|
||||
}
|
||||
|
||||
func TestBuildConfigFromCmd_ServiceWithHosts(t *testing.T) {
|
||||
cfg, err := BuildConfigFromCmd(
|
||||
[]string{":8080?hosts=example.com:1.2.3.4"},
|
||||
@@ -1896,4 +1949,3 @@ func TestBuildNodeConfig_TLSOnlySecure(t *testing.T) {
|
||||
t.Error("TLS.Secure should be true")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user