From 911fbd04ba55a2560e8da8595ff379a742e5fa30 Mon Sep 17 00:00:00 2001 From: Yuhang Wei Date: Thu, 10 Aug 2023 17:47:54 +0800 Subject: [PATCH 06/17] KubeOS: fix a bug that failed to parse key with = Signed-off-by: Yuhang Wei --- cmd/agent/server/config.go | 6 ++-- cmd/agent/server/config_test.go | 55 +++++++++++++++++++++++++++++---- 2 files changed, 52 insertions(+), 9 deletions(-) diff --git a/cmd/agent/server/config.go b/cmd/agent/server/config.go index 653f913..bcd9fde 100644 --- a/cmd/agent/server/config.go +++ b/cmd/agent/server/config.go @@ -259,7 +259,7 @@ func getAndSetConfigsFromFile(expectConfigs map[string]*agent.KeyInfo, path stri configsWrite = append(configsWrite, line) continue } - configKV := strings.Split(line, "=") + configKV := strings.SplitN(line, "=", kvPair) if len(configKV) != kvPair { logrus.Errorf("could not parse systctl config %s", line) return nil, fmt.Errorf("could not parse systctl config %s", line) @@ -374,8 +374,8 @@ func handleUpdateKey(config []string, configInfo *agent.KeyInfo, isFound bool) s func handleAddKey(m map[string]*agent.KeyInfo, isOnlyKeyValid bool) []string { var configs []string for key, keyInfo := range m { - if key == "" { - logrus.Warnln("Failed to add nil key") + if key == "" || strings.Contains(key, "=") { + logrus.Warnf("Failed to add nil key or key containing =, key: %s", key) continue } if keyInfo.Operation == "delete" { diff --git a/cmd/agent/server/config_test.go b/cmd/agent/server/config_test.go index 2deb15f..ae2a2cf 100644 --- a/cmd/agent/server/config_test.go +++ b/cmd/agent/server/config_test.go @@ -23,7 +23,6 @@ import ( "testing" "github.com/agiledragon/gomonkey/v2" - agent "openeuler.org/KubeOS/cmd/agent/api" ) @@ -105,17 +104,27 @@ func TestKerSysctlPersist_SetConfig(t *testing.T) { wantErr bool }{ {name: "create file", args: args{config: &agent.SysConfig{ConfigPath: persistPath}}, want: []string{comment}, wantErr: false}, + { + name: "nil path", + args: args{ + config: &agent.SysConfig{}, + }, + want: []string{}, + wantErr: false, + }, { name: "add configs", args: args{ config: &agent.SysConfig{ ConfigPath: persistPath, Contents: map[string]*agent.KeyInfo{ - "a": {Value: "1"}, - "b": {Value: "2"}, - "c": {Value: ""}, - "": {Value: "4"}, - "e": {Value: "5"}, + "a": {Value: "1"}, + "b": {Value: "2"}, + "c": {Value: ""}, + "": {Value: "4"}, + "e": {Value: "5"}, + "y=1": {Value: "26"}, + "z": {Value: "x=1"}, }, }, }, @@ -123,6 +132,7 @@ func TestKerSysctlPersist_SetConfig(t *testing.T) { "a=1", "b=2", "e=5", + "z=x=1", }, wantErr: false, }, @@ -134,6 +144,7 @@ func TestKerSysctlPersist_SetConfig(t *testing.T) { Contents: map[string]*agent.KeyInfo{ "a": {Value: "2"}, "b": {Value: ""}, + "z": {Value: "x=2"}, }, }, }, @@ -141,6 +152,7 @@ func TestKerSysctlPersist_SetConfig(t *testing.T) { "a=2", "b=2", "e=5", + "z=x=2", }, wantErr: false, }, @@ -155,6 +167,7 @@ func TestKerSysctlPersist_SetConfig(t *testing.T) { "c": {Value: "3", Operation: "delete"}, "e": {Value: "5", Operation: "remove"}, "f": {Value: "6", Operation: "remove"}, + "z": {Value: "x=2", Operation: "delete"}, }, }, }, @@ -166,6 +179,8 @@ func TestKerSysctlPersist_SetConfig(t *testing.T) { wantErr: false, }, } + patchGetKernelConPath := gomonkey.ApplyFuncReturn(getKernelConPath, persistPath) + defer patchGetKernelConPath.Reset() for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { k := KerSysctlPersist{} @@ -467,3 +482,31 @@ func Test_getConfigPartition(t *testing.T) { }) } } + +func Test_ConfigFactoryTemplate(t *testing.T) { + type args struct { + configType string + config *agent.SysConfig + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "error", + args: args{ + configType: "test", + config: &agent.SysConfig{}, + }, + wantErr: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := ConfigFactoryTemplate(tt.args.configType, tt.args.config); (err != nil) != tt.wantErr { + t.Errorf("ConfigFactoryTemplate() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} -- 2.39.0