Adding feature flags

This commit is contained in:
Frederick F. Kautz IV 2015-05-07 12:52:39 -07:00
parent f1dbdbd234
commit d0c4334834
3 changed files with 58 additions and 0 deletions

View File

@ -0,0 +1,30 @@
package featureflags
import (
"sync"
)
var features = make(map[string]bool)
var lock = &sync.RWMutex{}
// Get feature will return true if the feature is enabled, otherwise false
func Get(feature string) bool {
lock.RLock()
defer lock.RUnlock()
res := features[feature]
return res
}
// Enable a feature
func Enable(feature string) {
lock.Lock()
defer lock.Unlock()
features[feature] = true
}
// Disable a feature
func Disable(feature string) {
lock.Lock()
defer lock.Unlock()
features[feature] = false
}

View File

@ -0,0 +1,22 @@
package featureflags
import (
"testing"
)
func TestFeatureFlag(t *testing.T) {
foo := Get("foo")
if foo {
t.Fail()
}
Enable("foo")
foo = Get("foo")
if !foo {
t.Fail()
}
Disable("foo")
foo = Get("foo")
if foo {
t.Fail()
}
}

View File

@ -0,0 +1,6 @@
package featureflags
const (
// MultipartPutObject ...
MultipartPutObject = "minio.multipart_put_object"
)