Skip to content

Commit

Permalink
Do not use string search in e2e tests to check config params (#3585)
Browse files Browse the repository at this point in the history
String search is unreliable, for example some YAML strings may be quoted
and others not. Instead we parse the config before accessing fields,
like we do for config mutation functions.

Signed-off-by: Antonin Bas <abas@vmware.com>
  • Loading branch information
antoninbas committed Apr 7, 2022
1 parent 5e23ce9 commit 8ef6808
Showing 1 changed file with 22 additions and 19 deletions.
41 changes: 22 additions & 19 deletions test/e2e/framework.go
Original file line number Diff line number Diff line change
Expand Up @@ -1833,34 +1833,37 @@ func (data *TestData) doesOVSPortExistOnWindows(nodeName, portName string) (bool
return false, fmt.Errorf("error when running ovs-vsctl command on Windows Node '%s': %v", nodeName, err)
}

func (data *TestData) GetEncapMode() (config.TrafficEncapModeType, error) {
func (data *TestData) GetAntreaAgentConf() (*agentconfig.AgentConfig, error) {
configMap, err := data.GetAntreaConfigMap(antreaNamespace)
if err != nil {
return config.TrafficEncapModeInvalid, fmt.Errorf("failed to get Antrea ConfigMap: %v", err)
return nil, err
}
for _, antreaConfig := range configMap.Data {
for _, mode := range config.GetTrafficEncapModes() {
searchStr := fmt.Sprintf("trafficEncapMode: %s", mode)
if strings.Index(strings.ToLower(antreaConfig), strings.ToLower(searchStr)) != -1 {
return mode, nil
}
}
var agentConf agentconfig.AgentConfig
if err := yaml.Unmarshal([]byte(configMap.Data["antrea-agent.conf"]), &agentConf); err != nil {
return nil, fmt.Errorf("failed to unmarshal Agent config from ConfigMap: %v", err)
}
return config.TrafficEncapModeEncap, nil
return &agentConf, nil
}

func (data *TestData) isProxyAll() (bool, error) {
configMap, err := data.GetAntreaConfigMap(antreaNamespace)
func (data *TestData) GetEncapMode() (config.TrafficEncapModeType, error) {
agentConf, err := data.GetAntreaAgentConf()
if err != nil {
return false, fmt.Errorf("failed to get Antrea ConfigMap: %v", err)
return config.TrafficEncapModeInvalid, fmt.Errorf("failed to get Antrea Agent config: %w", err)
}
for _, antreaConfig := range configMap.Data {
searchStr := "proxyAll: true"
if strings.Index(strings.ToLower(antreaConfig), strings.ToLower(searchStr)) != -1 {
return true, nil
}
if agentConf.TrafficEncapMode == "" {
// default encap mode
return config.TrafficEncapModeEncap, nil
}
_, encapMode := config.GetTrafficEncapModeFromStr(agentConf.TrafficEncapMode)
return encapMode, nil
}

func (data *TestData) isProxyAll() (bool, error) {
agentConf, err := data.GetAntreaAgentConf()
if err != nil {
return false, fmt.Errorf("failed to get Antrea Agent config: %w", err)
}
return false, nil
return agentConf.AntreaProxy.ProxyAll, nil
}

func getFeatures(confName string) (featuregate.FeatureGate, error) {
Expand Down

0 comments on commit 8ef6808

Please sign in to comment.