diff --git a/config/config_test.go b/config/config_test.go index 772535729..0d70fd8f3 100644 --- a/config/config_test.go +++ b/config/config_test.go @@ -22,6 +22,7 @@ import ( "os" "path" "reflect" + "runtime" "strings" "testing" "time" @@ -5716,6 +5717,7 @@ func TestReloadSections(t *testing.T) { if err := cfgCgr.reloadSections(section); err != nil { t.Error(err) } else { + runtime.Gosched() select { case <-time.After(10): t.Fatal("timeout", section) diff --git a/config/rjreader.go b/config/rjreader.go index 5121e7f23..2ad932bd2 100644 --- a/config/rjreader.go +++ b/config/rjreader.go @@ -240,25 +240,22 @@ func (rjr *rjReader) checkMeta() bool { } //readEnvName reads the enviorment key -func (rjr *rjReader) readEnvName(indx int) (name []byte, endindx int, err error) { //0 if not set +func (rjr *rjReader) readEnvName(indx int) (name []byte, endindx int) { //0 if not set for indx < len(rjr.buf) { //read byte by byte bit := rjr.buf[indx] if !isAlfanum(bit) && bit != '_' { //[a-zA-Z_]+[a-zA-Z0-9_]* - return name, indx, nil + return name, indx } name = append(name, bit) indx++ } - return name, indx, io.EOF + return name, indx } //replaceEnv replaces the EnvMeta and enviorment key with enviorment variable value in specific buffer func (rjr *rjReader) replaceEnv(startEnv int) error { midEnv := len(utils.MetaEnv) - key, endEnv, err := rjr.readEnvName(startEnv + midEnv) - if err != nil && err != io.EOF { - return err - } + key, endEnv := rjr.readEnvName(startEnv + midEnv) value, err := ReadEnv(string(key)) if err != nil { return err diff --git a/config/rjreader_test.go b/config/rjreader_test.go index eaa9b623b..ad5caf41c 100644 --- a/config/rjreader_test.go +++ b/config/rjreader_test.go @@ -184,7 +184,7 @@ func TestEnvRawJsonPeekByteWCError(t *testing.T) { t.Errorf("Expected %+v, received %+v", expected, err) } - raw = NewRjReaderFromBytes([]byte(`/ce faci`)) + raw = NewRjReaderFromBytes([]byte(`/rand val`)) expectedByte := (byte)('/') if rply, err := raw.PeekByteWC(); err != nil { t.Error(err) @@ -255,17 +255,16 @@ func TestEnvReaderRead2(t *testing.T) { func TestEnvReaderreadEnvName(t *testing.T) { envR := NewRjReaderFromBytes([]byte(`Test_VAR1 } Var2_TEST'`)) expected := []byte("Test_VAR1") - if rply, endindx, err := envR.readEnvName(0); err != nil { - t.Error(err) - } else if endindx != 9 { + rply, endindx := envR.readEnvName(0) + if endindx != 9 { t.Errorf("Wrong endindx returned %v", endindx) } else if !reflect.DeepEqual(expected, rply) { t.Errorf("Expected: %+v, received: %+v", (string(expected)), (string(rply))) } + expected = []byte("Var2_TEST") - if rply, endindx, err := envR.readEnvName(12); err != nil { - t.Error(err) - } else if endindx != 21 { + rply, endindx = envR.readEnvName(12) + if endindx != 21 { t.Errorf("Wrong endindx returned %v", endindx) } else if !reflect.DeepEqual(expected, rply) { t.Errorf("Expected: %+v, received: %+v", (string(expected)), (string(rply))) @@ -274,9 +273,8 @@ func TestEnvReaderreadEnvName(t *testing.T) { func TestEnvReaderreadEnvNameError(t *testing.T) { envR := NewRjReaderFromBytes([]byte(``)) - expectedErr := "EOF" - if _, _, err := envR.readEnvName(1); err == nil && err.Error() != expectedErr { - t.Errorf("Expected %+v ,received %+v", expectedErr, err) + if name, index := envR.readEnvName(1); name != nil || index != 1 { + t.Errorf("Expected nil, received %+v", name) } } @@ -370,6 +368,18 @@ func TestIsWhiteSpace(t *testing.T) { } } +func TestReadRJReader(t *testing.T) { + os.Setenv("TESTVARNoZero", utils.EmptyString) + rjr := NewRjReaderFromBytes([]byte(`{"origin_host": "*env:TESTVARNoZero", + "origin_realm": "*env:TESTVARNoZero",}`)) + expected := "NOT_FOUND:ENV_VAR:TESTVARNoZero" + buf := make([]byte, 20) + rjr.indx = 1 + if _, err := rjr.Read(buf); err == nil || err.Error() != expected { + t.Errorf("Expected %+v, received %+v", expected, err) + } +} + func TestReadEnv(t *testing.T) { key := "TESTVAR2" if _, err := ReadEnv(key); err == nil || err.Error() != utils.ErrEnvNotFound(key).Error() {