MM-43077 Allow inline JSON in config.json for advanced logging config (#23324)
* add AdvancedLoggingJSON to LogSettings and deprecate AdvancedLoggingConfig * allow embedded JSON in config for advanced logging.
Этот коммит содержится в:
@@ -4,36 +4,41 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
const (
|
||||
validJSON = `{"file":{ "Type":"file"}}`
|
||||
badJSON = `{"file":{ Type="file"}}`
|
||||
var (
|
||||
validJSON = []byte(`{"file":{ "Type":"file"}}`)
|
||||
badJSON = []byte(`{"file":{ Type="file"}}`)
|
||||
validEscapedJSON = []byte(`"{\"file\":{ \"Type\":\"file\"}}"`)
|
||||
badEscapedJSON = []byte(`"{\"file\":{ Type:\"file\"}}"`)
|
||||
)
|
||||
|
||||
func TestNewLogConfigSrc(t *testing.T) {
|
||||
store := NewTestMemoryStore()
|
||||
require.NotNil(t, store)
|
||||
err := store.SetFile("advancedlogging.conf", []byte(validJSON))
|
||||
err := store.SetFile("advancedlogging.conf", validJSON)
|
||||
require.NoError(t, err)
|
||||
|
||||
tests := []struct {
|
||||
name string
|
||||
dsn string
|
||||
dsn json.RawMessage
|
||||
configStore *Store
|
||||
wantErr bool
|
||||
wantType LogConfigSrc
|
||||
}{
|
||||
{name: "empty dsn", dsn: "", configStore: store, wantErr: true, wantType: nil},
|
||||
{name: "garbage dsn", dsn: "!@wfejwcevioj", configStore: store, wantErr: true, wantType: nil},
|
||||
{name: "empty dsn", dsn: []byte(""), configStore: store, wantErr: true, wantType: nil},
|
||||
{name: "garbage dsn", dsn: []byte("!@wfejwcevioj"), configStore: store, wantErr: true, wantType: nil},
|
||||
{name: "valid json dsn", dsn: validJSON, configStore: store, wantErr: false, wantType: &jsonSrc{}},
|
||||
{name: "invalid json dsn", dsn: badJSON, configStore: store, wantErr: true, wantType: nil},
|
||||
{name: "valid filespec dsn", dsn: "advancedlogging.conf", configStore: store, wantErr: false, wantType: &fileSrc{}},
|
||||
{name: "invalid filespec dsn", dsn: "/nobody/here.conf", configStore: store, wantErr: true, wantType: nil},
|
||||
{name: "valid escaped json dsn", dsn: validEscapedJSON, configStore: store, wantErr: false, wantType: &jsonSrc{}},
|
||||
{name: "invalid escaped json dsn", dsn: badEscapedJSON, configStore: store, wantErr: true, wantType: nil},
|
||||
{name: "valid filespec dsn", dsn: []byte("advancedlogging.conf"), configStore: store, wantErr: false, wantType: &fileSrc{}},
|
||||
{name: "invalid filespec dsn", dsn: []byte("/nobody/here.conf"), configStore: store, wantErr: true, wantType: nil},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
|
||||
Ссылка в новой задаче
Block a user