Skip to content

Commit

Permalink
Rename "Environments" => "SDKs"
Browse files Browse the repository at this point in the history
  • Loading branch information
z4kn4fein committed May 15, 2023
1 parent ec247bf commit 814d0d0
Show file tree
Hide file tree
Showing 23 changed files with 205 additions and 200 deletions.
22 changes: 11 additions & 11 deletions config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,15 +25,15 @@ var allowedTlsVersions = map[float64]uint16{
}

type Config struct {
Log LogConfig
Environments map[string]*SDKConfig
Grpc GrpcConfig
Tls TlsConfig
Metrics MetricsConfig
Http HttpConfig
HttpProxy HttpProxyConfig `yaml:"http_proxy"`
EvalStats EvalStatsConfig `yaml:"eval_stats"`
Cache CacheConfig
Log LogConfig
SDKs map[string]*SDKConfig
Grpc GrpcConfig
Tls TlsConfig
Metrics MetricsConfig
Http HttpConfig
HttpProxy HttpProxyConfig `yaml:"http_proxy"`
EvalStats EvalStatsConfig `yaml:"eval_stats"`
Cache CacheConfig
}

type SDKConfig struct {
Expand Down Expand Up @@ -228,7 +228,7 @@ func (c *Config) setDefaults() {
}

func (c *Config) fixupDefaults() {
for _, env := range c.Environments {
for _, env := range c.SDKs {
if env == nil {
continue
}
Expand All @@ -248,7 +248,7 @@ func (c *Config) fixupDefaults() {
}

func (c *Config) fixupLogLevels(defLevel string) {
for _, env := range c.Environments {
for _, env := range c.SDKs {
if env == nil {
continue
}
Expand Down
58 changes: 29 additions & 29 deletions config/config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,8 @@ func TestConfig_Defaults(t *testing.T) {
func TestConfig_LogLevelFixup(t *testing.T) {
t.Run("valid base level", func(t *testing.T) {
utils.UseTempFile(`
environments:
test_env:
sdks:
test_sdk:
key: key
log:
level: "info"
Expand All @@ -55,8 +55,8 @@ log:
require.NoError(t, err)

assert.Equal(t, log.Info, conf.Log.GetLevel())
assert.Equal(t, log.Info, conf.Environments["test_env"].Log.GetLevel())
assert.Equal(t, log.Info, conf.Environments["test_env"].Offline.Log.GetLevel())
assert.Equal(t, log.Info, conf.SDKs["test_sdk"].Log.GetLevel())
assert.Equal(t, log.Info, conf.SDKs["test_sdk"].Offline.Log.GetLevel())
assert.Equal(t, log.Info, conf.Http.Log.GetLevel())
assert.Equal(t, log.Info, conf.Http.Sse.Log.GetLevel())
assert.Equal(t, log.Info, conf.Grpc.Log.GetLevel())
Expand All @@ -65,8 +65,8 @@ log:

t.Run("invalid base level", func(t *testing.T) {
utils.UseTempFile(`
environments:
test_env:
sdks:
test_sdk:
key: key
log:
level: "invalid"
Expand All @@ -75,8 +75,8 @@ log:
require.NoError(t, err)

assert.Equal(t, log.Warn, conf.Log.GetLevel())
assert.Equal(t, log.Warn, conf.Environments["test_env"].Log.GetLevel())
assert.Equal(t, log.Warn, conf.Environments["test_env"].Offline.Log.GetLevel())
assert.Equal(t, log.Warn, conf.SDKs["test_sdk"].Log.GetLevel())
assert.Equal(t, log.Warn, conf.SDKs["test_sdk"].Offline.Log.GetLevel())
assert.Equal(t, log.Warn, conf.Http.Log.GetLevel())
assert.Equal(t, log.Warn, conf.Http.Sse.Log.GetLevel())
assert.Equal(t, log.Warn, conf.Grpc.Log.GetLevel())
Expand All @@ -87,8 +87,8 @@ log:
utils.UseTempFile(`
log:
level: "error"
environments:
test_env:
sdks:
test_sdk:
log:
level: "debug"
offline:
Expand All @@ -108,8 +108,8 @@ grpc:
require.NoError(t, err)

assert.Equal(t, log.Error, conf.Log.GetLevel())
assert.Equal(t, log.Debug, conf.Environments["test_env"].Log.GetLevel())
assert.Equal(t, log.Debug, conf.Environments["test_env"].Offline.Log.GetLevel())
assert.Equal(t, log.Debug, conf.SDKs["test_sdk"].Log.GetLevel())
assert.Equal(t, log.Debug, conf.SDKs["test_sdk"].Offline.Log.GetLevel())
assert.Equal(t, log.Debug, conf.Http.Log.GetLevel())
assert.Equal(t, log.Debug, conf.Http.Sse.Log.GetLevel())
assert.Equal(t, log.Debug, conf.Grpc.Log.GetLevel())
Expand All @@ -119,8 +119,8 @@ grpc:

func TestSDKConfig_YAML(t *testing.T) {
utils.UseTempFile(`
environments:
test_env:
sdks:
test_sdk:
base_url: "base"
key: "sdkKey"
poll_interval: 300
Expand All @@ -143,21 +143,21 @@ environments:
conf, err := LoadConfigFromFileAndEnvironment(file)
require.NoError(t, err)

assert.Equal(t, "base", conf.Environments["test_env"].BaseUrl)
assert.Equal(t, "sdkKey", conf.Environments["test_env"].Key)
assert.Equal(t, 300, conf.Environments["test_env"].PollInterval)
assert.Equal(t, "eu", conf.Environments["test_env"].DataGovernance)
assert.Equal(t, log.Error, conf.Environments["test_env"].Log.GetLevel())
assert.Equal(t, "key", conf.Environments["test_env"].WebhookSigningKey)
assert.Equal(t, 600, conf.Environments["test_env"].WebhookSignatureValidFor)

assert.True(t, conf.Environments["test_env"].Offline.Enabled)
assert.Equal(t, log.Debug, conf.Environments["test_env"].Offline.Log.GetLevel())
assert.Equal(t, "./local.json", conf.Environments["test_env"].Offline.Local.FilePath)
assert.True(t, conf.Environments["test_env"].Offline.Local.Polling)
assert.Equal(t, 100, conf.Environments["test_env"].Offline.Local.PollInterval)
assert.True(t, conf.Environments["test_env"].Offline.UseCache)
assert.Equal(t, 200, conf.Environments["test_env"].Offline.CachePollInterval)
assert.Equal(t, "base", conf.SDKs["test_sdk"].BaseUrl)
assert.Equal(t, "sdkKey", conf.SDKs["test_sdk"].Key)
assert.Equal(t, 300, conf.SDKs["test_sdk"].PollInterval)
assert.Equal(t, "eu", conf.SDKs["test_sdk"].DataGovernance)
assert.Equal(t, log.Error, conf.SDKs["test_sdk"].Log.GetLevel())
assert.Equal(t, "key", conf.SDKs["test_sdk"].WebhookSigningKey)
assert.Equal(t, 600, conf.SDKs["test_sdk"].WebhookSignatureValidFor)

assert.True(t, conf.SDKs["test_sdk"].Offline.Enabled)
assert.Equal(t, log.Debug, conf.SDKs["test_sdk"].Offline.Log.GetLevel())
assert.Equal(t, "./local.json", conf.SDKs["test_sdk"].Offline.Local.FilePath)
assert.True(t, conf.SDKs["test_sdk"].Offline.Local.Polling)
assert.Equal(t, 100, conf.SDKs["test_sdk"].Offline.Local.PollInterval)
assert.True(t, conf.SDKs["test_sdk"].Offline.UseCache)
assert.Equal(t, 200, conf.SDKs["test_sdk"].Offline.CachePollInterval)
})
}

Expand Down
14 changes: 7 additions & 7 deletions config/env.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,16 +35,16 @@ var toStringMap = func(s string) (map[string]string, error) {
}

func (c *Config) loadEnv() {
var envs map[string]string
readEnv(envPrefix, "ENVIRONMENTS", &envs, toStringMap)
if c.Environments == nil {
c.Environments = make(map[string]*SDKConfig, len(envs))
var sdks map[string]string
readEnv(envPrefix, "SDKS", &sdks, toStringMap)
if c.SDKs == nil {
c.SDKs = make(map[string]*SDKConfig, len(sdks))
}
for envId, key := range envs {
prefix := concatPrefix(envPrefix, strings.ToUpper(strings.ReplaceAll(envId, "-", "_")))
for sdkId, key := range sdks {
prefix := concatPrefix(envPrefix, strings.ToUpper(strings.ReplaceAll(sdkId, "-", "_")))
sdkConf := &SDKConfig{Key: key}
sdkConf.loadEnv(prefix)
c.Environments[envId] = sdkConf
c.SDKs[sdkId] = sdkConf
}
c.Http.loadEnv(envPrefix)
c.Grpc.loadEnv(envPrefix)
Expand Down
62 changes: 31 additions & 31 deletions config/env_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,41 +9,41 @@ import (
)

func TestSDKConfig_ENV(t *testing.T) {
t.Setenv("CONFIGCAT_ENVIRONMENTS", `{"env1": "sdkKey"}`)
t.Setenv("CONFIGCAT_ENV1_BASE_URL", "base")
t.Setenv("CONFIGCAT_ENV1_KEY", "sdkKey")
t.Setenv("CONFIGCAT_ENV1_POLL_INTERVAL", "300")
t.Setenv("CONFIGCAT_ENV1_DATA_GOVERNANCE", "eu")
t.Setenv("CONFIGCAT_ENV1_LOG_LEVEL", "error")

t.Setenv("CONFIGCAT_ENV1_OFFLINE_ENABLED", "true")
t.Setenv("CONFIGCAT_ENV1_OFFLINE_LOG_LEVEL", "debug")
t.Setenv("CONFIGCAT_ENV1_OFFLINE_LOCAL_FILE_PATH", "./local.json")
t.Setenv("CONFIGCAT_ENV1_OFFLINE_LOCAL_POLLING", "true")
t.Setenv("CONFIGCAT_ENV1_OFFLINE_LOCAL_POLL_INTERVAL", "100")
t.Setenv("CONFIGCAT_ENV1_OFFLINE_USE_CACHE", "true")
t.Setenv("CONFIGCAT_ENV1_OFFLINE_CACHE_POLL_INTERVAL", "200")
t.Setenv("CONFIGCAT_ENV1_WEBHOOK_SIGNING_KEY", "key")
t.Setenv("CONFIGCAT_ENV1_WEBHOOK_SIGNATURE_VALID_FOR", "600")
t.Setenv("CONFIGCAT_SDKS", `{"sdk1": "sdkKey"}`)
t.Setenv("CONFIGCAT_SDK1_BASE_URL", "base")
t.Setenv("CONFIGCAT_SDK1_KEY", "sdkKey")
t.Setenv("CONFIGCAT_SDK1_POLL_INTERVAL", "300")
t.Setenv("CONFIGCAT_SDK1_DATA_GOVERNANCE", "eu")
t.Setenv("CONFIGCAT_SDK1_LOG_LEVEL", "error")

t.Setenv("CONFIGCAT_SDK1_OFFLINE_ENABLED", "true")
t.Setenv("CONFIGCAT_SDK1_OFFLINE_LOG_LEVEL", "debug")
t.Setenv("CONFIGCAT_SDK1_OFFLINE_LOCAL_FILE_PATH", "./local.json")
t.Setenv("CONFIGCAT_SDK1_OFFLINE_LOCAL_POLLING", "true")
t.Setenv("CONFIGCAT_SDK1_OFFLINE_LOCAL_POLL_INTERVAL", "100")
t.Setenv("CONFIGCAT_SDK1_OFFLINE_USE_CACHE", "true")
t.Setenv("CONFIGCAT_SDK1_OFFLINE_CACHE_POLL_INTERVAL", "200")
t.Setenv("CONFIGCAT_SDK1_WEBHOOK_SIGNING_KEY", "key")
t.Setenv("CONFIGCAT_SDK1_WEBHOOK_SIGNATURE_VALID_FOR", "600")

conf, err := LoadConfigFromFileAndEnvironment("")
require.NoError(t, err)

assert.Equal(t, "base", conf.Environments["env1"].BaseUrl)
assert.Equal(t, "sdkKey", conf.Environments["env1"].Key)
assert.Equal(t, 300, conf.Environments["env1"].PollInterval)
assert.Equal(t, "eu", conf.Environments["env1"].DataGovernance)
assert.Equal(t, log.Error, conf.Environments["env1"].Log.GetLevel())

assert.True(t, conf.Environments["env1"].Offline.Enabled)
assert.Equal(t, log.Debug, conf.Environments["env1"].Offline.Log.GetLevel())
assert.Equal(t, "./local.json", conf.Environments["env1"].Offline.Local.FilePath)
assert.True(t, conf.Environments["env1"].Offline.Local.Polling)
assert.Equal(t, 100, conf.Environments["env1"].Offline.Local.PollInterval)
assert.True(t, conf.Environments["env1"].Offline.UseCache)
assert.Equal(t, 200, conf.Environments["env1"].Offline.CachePollInterval)
assert.Equal(t, "key", conf.Environments["env1"].WebhookSigningKey)
assert.Equal(t, 600, conf.Environments["env1"].WebhookSignatureValidFor)
assert.Equal(t, "base", conf.SDKs["sdk1"].BaseUrl)
assert.Equal(t, "sdkKey", conf.SDKs["sdk1"].Key)
assert.Equal(t, 300, conf.SDKs["sdk1"].PollInterval)
assert.Equal(t, "eu", conf.SDKs["sdk1"].DataGovernance)
assert.Equal(t, log.Error, conf.SDKs["sdk1"].Log.GetLevel())

assert.True(t, conf.SDKs["sdk1"].Offline.Enabled)
assert.Equal(t, log.Debug, conf.SDKs["sdk1"].Offline.Log.GetLevel())
assert.Equal(t, "./local.json", conf.SDKs["sdk1"].Offline.Local.FilePath)
assert.True(t, conf.SDKs["sdk1"].Offline.Local.Polling)
assert.Equal(t, 100, conf.SDKs["sdk1"].Offline.Local.PollInterval)
assert.True(t, conf.SDKs["sdk1"].Offline.UseCache)
assert.Equal(t, 200, conf.SDKs["sdk1"].Offline.CachePollInterval)
assert.Equal(t, "key", conf.SDKs["sdk1"].WebhookSigningKey)
assert.Equal(t, 600, conf.SDKs["sdk1"].WebhookSignatureValidFor)
}

func TestCacheConfig_ENV(t *testing.T) {
Expand Down
4 changes: 2 additions & 2 deletions config/validate.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@ import (
)

func (c *Config) Validate() error {
if len(c.Environments) == 0 {
if len(c.SDKs) == 0 {
return fmt.Errorf("sdk: at least 1 environment with an SDK key required")
}
for id, env := range c.Environments {
for id, env := range c.SDKs {
if err := env.validate(&c.Cache, id); err != nil {
return err
}
Expand Down
Loading

0 comments on commit 814d0d0

Please sign in to comment.