You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.4 KiB
54 lines
1.4 KiB
package feature_test |
|
|
|
import ( |
|
"flag" |
|
"fmt" |
|
|
|
"go-common/library/exp/feature" |
|
) |
|
|
|
var ( |
|
AStableFeature feature.Feature = "a-stable-feature" |
|
AStagingFeature feature.Feature = "a-staging-feature" |
|
) |
|
|
|
var exampleFeatures = map[feature.Feature]feature.Spec{ |
|
AStableFeature: feature.Spec{Default: true}, |
|
AStagingFeature: feature.Spec{Default: false}, |
|
} |
|
|
|
func init() { |
|
feature.DefaultGate.Add(exampleFeatures) |
|
feature.DefaultGate.AddFlag(flag.CommandLine) |
|
} |
|
|
|
// This example create an example to using default features. |
|
func Example() { |
|
knows := feature.DefaultGate.KnownFeatures() |
|
fmt.Println(knows) |
|
|
|
enabled := feature.DefaultGate.Enabled(AStableFeature) |
|
fmt.Println(enabled) |
|
|
|
enabled = feature.DefaultGate.Enabled(AStagingFeature) |
|
fmt.Println(enabled) |
|
// Output: [a-stable-feature=true|false (default=true) a-staging-feature=true|false (default=false)] |
|
// true |
|
// false |
|
} |
|
|
|
// This example parsing flag from command line and enable a staging feature. |
|
func ExampleFeature() { |
|
knows := feature.DefaultGate.KnownFeatures() |
|
fmt.Println(knows) |
|
|
|
enabled := feature.DefaultGate.Enabled(AStagingFeature) |
|
fmt.Println(enabled) |
|
|
|
flag.Set("feature-gates", fmt.Sprintf("%s=true", AStagingFeature)) |
|
enabled = feature.DefaultGate.Enabled(AStagingFeature) |
|
fmt.Println(enabled) |
|
// Output: [a-stable-feature=true|false (default=true) a-staging-feature=true|false (default=false)] |
|
// false |
|
// true |
|
}
|
|
|