本文整理汇总了Golang中github.com/hashicorp/consul-template/dependency.ParseStoreKeyPrefix函数的典型用法代码示例。如果您正苦于以下问题:Golang ParseStoreKeyPrefix函数的具体用法?Golang ParseStoreKeyPrefix怎么用?Golang ParseStoreKeyPrefix使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了ParseStoreKeyPrefix函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: TestTreeFunc_missingData
func TestTreeFunc_missingData(t *testing.T) {
d, err := dep.ParseStoreKeyPrefix("non-existing")
if err != nil {
t.Fatal(err)
}
brain := NewBrain()
used := make(map[string]dep.Dependency)
missing := make(map[string]dep.Dependency)
f := treeFunc(brain, used, missing)
result, err := f("non-existing")
if err != nil {
t.Fatal(err)
}
expected := []*dep.KeyPair{}
if !reflect.DeepEqual(result, expected) {
t.Errorf("expected %q to be %q", result, expected)
}
if _, ok := used[d.HashCode()]; !ok {
t.Errorf("expected dep to be used")
}
if _, ok := missing[d.HashCode()]; !ok {
t.Errorf("expected dep to be missing")
}
}
开发者ID:necroscope,项目名称:consul-template,代码行数:31,代码来源:template_functions_test.go
示例2: TestParseFlags_prefixes
func TestParseFlags_prefixes(t *testing.T) {
cli := NewCLI(ioutil.Discard, ioutil.Discard)
config, _, _, err := cli.parseFlags([]string{
"-prefix", "[email protected]:backup",
})
if err != nil {
t.Fatal(err)
}
if len(config.Prefixes) != 1 {
t.Fatal("expected 1 prefix")
}
d, err := dep.ParseStoreKeyPrefix("[email protected]")
if err != nil {
t.Fatal(err)
}
expected := &Prefix{
Source: d,
SourceRaw: "[email protected]",
Destination: "backup",
}
if !reflect.DeepEqual(config.Prefixes[0], expected) {
t.Errorf("expected %q to be %q", config.Prefixes[0], expected)
}
}
开发者ID:half-dead,项目名称:consul-replicate,代码行数:27,代码来源:cli_test.go
示例3: TestReceive_receivesData
func TestReceive_receivesData(t *testing.T) {
prefix, err := dep.ParseStoreKeyPrefix("foo/bar")
if err != nil {
t.Fatal(err)
}
config := testConfig(`
prefix {
path = "foo/bar"
}
`, t)
runner, err := NewRunner(config, []string{"env"}, true)
if err != nil {
t.Fatal(err)
}
runner.outStream, runner.errStream = ioutil.Discard, ioutil.Discard
data := []*dep.KeyPair{&dep.KeyPair{Path: "foo/bar"}}
runner.Receive(prefix, data)
if !reflect.DeepEqual(runner.data[prefix.HashCode()], data) {
t.Errorf("expected %#v to be %#v", runner.data[prefix.HashCode()], data)
}
}
开发者ID:BRMatt,项目名称:envconsul,代码行数:25,代码来源:runner_test.go
示例4: treeFunc
// treeFunc returns or accumulates keyPrefix dependencies.
func treeFunc(brain *Brain,
used, missing map[string]dep.Dependency) func(string) ([]*dep.KeyPair, error) {
return func(s string) ([]*dep.KeyPair, error) {
result := make([]*dep.KeyPair, 0)
if len(s) == 0 {
return result, nil
}
d, err := dep.ParseStoreKeyPrefix(s)
if err != nil {
return result, err
}
addDependency(used, d)
// Only return non-empty top-level keys
if value, ok := brain.Recall(d); ok {
for _, pair := range value.([]*dep.KeyPair) {
parts := strings.Split(pair.Key, "/")
if parts[len(parts)-1] != "" {
result = append(result, pair)
}
}
return result, nil
}
addDependency(missing, d)
return result, nil
}
}
开发者ID:hashbrowncipher,项目名称:consul-template,代码行数:33,代码来源:template_functions.go
示例5: ParsePrefix
// ParsePrefix parses a prefix of the format "[email protected]:destination" into the
// Prefix component.
func ParsePrefix(s string) (*Prefix, error) {
if len(strings.TrimSpace(s)) < 1 {
return nil, fmt.Errorf("cannot specify empty prefix declaration")
}
var sourceRaw, destination string
parts := prefixRe.FindAllString(s, -1)
switch len(parts) {
case 1:
sourceRaw = parts[0]
case 2:
sourceRaw, destination = parts[0], parts[1]
default:
return nil, fmt.Errorf("invalid prefix declaration format")
}
source, err := dep.ParseStoreKeyPrefix(sourceRaw)
if err != nil {
return nil, err
}
if destination == "" {
destination = source.Prefix
}
// ensure destination prefix ends with "/"
destination = strings.TrimSuffix(destination, "/") + "/"
return &Prefix{
Source: source,
SourceRaw: sourceRaw,
Destination: destination,
}, nil
}
开发者ID:kjniemi,项目名称:consul-replicate,代码行数:36,代码来源:config.go
示例6: TestRun_doublePass
func TestRun_doublePass(t *testing.T) {
in := test.CreateTempfile([]byte(`
{{ range ls "services" }}
{{ range service .Key }}
{{.Node}} {{.Address}}:{{.Port}}
{{ end }}
{{ end }}
`), t)
defer test.DeleteTempfile(in, t)
config := DefaultConfig()
config.Merge(&Config{
ConfigTemplates: []*ConfigTemplate{
&ConfigTemplate{Source: in.Name()},
},
})
runner, err := NewRunner(config, true, false)
if err != nil {
t.Fatal(err)
}
if len(runner.dependencies) != 0 {
t.Errorf("expected %d to be %d", len(runner.dependencies), 0)
}
if err := runner.Run(); err != nil {
t.Fatal(err)
}
if len(runner.dependencies) != 1 {
t.Errorf("expected %d to be %d", len(runner.dependencies), 1)
}
d, err := dep.ParseStoreKeyPrefix("services")
if err != nil {
t.Fatal(err)
}
data := []*dep.KeyPair{
&dep.KeyPair{Key: "service1"},
&dep.KeyPair{Key: "service2"},
&dep.KeyPair{Key: "service3"},
}
runner.Receive(d, data)
if err := runner.Run(); err != nil {
t.Fatal(err)
}
if len(runner.dependencies) != 4 {
t.Errorf("expected %d to be %d", len(runner.dependencies), 4)
}
}
开发者ID:robinsq,项目名称:consul-template,代码行数:53,代码来源:runner_test.go
示例7: TestMerge_prefixes
func TestMerge_prefixes(t *testing.T) {
global, err := dep.ParseStoreKeyPrefix("global/time")
if err != nil {
t.Fatal(err)
}
redis, err := dep.ParseStoreKeyPrefix("config/redis")
if err != nil {
t.Fatal(err)
}
config := testConfig(`
prefixes = ["global/time"]
`, t)
config.Merge(testConfig(`
prefixes = ["config/redis"]
`, t))
expected := []*dep.StoreKeyPrefix{global, redis}
if !reflect.DeepEqual(config.Prefixes, expected) {
t.Errorf("expected \n\n%#v\n\n to be \n\n%#v\n\n", config.Prefixes, expected)
}
}
开发者ID:chrisriley,项目名称:envconsul,代码行数:23,代码来源:config_test.go
示例8: TestParseFlags_prefix
func TestParseFlags_prefix(t *testing.T) {
cli := NewCLI(ioutil.Discard, ioutil.Discard)
config, _, _, _, err := cli.parseFlags([]string{
"-prefix", "global",
})
if err != nil {
t.Fatal(err)
}
expected, err := dep.ParseStoreKeyPrefix("global")
if err != nil {
t.Fatal(err)
}
if !reflect.DeepEqual(config.Prefixes[0], expected) {
t.Errorf("expected %#v to be %#v", config.Prefixes[0], expected)
}
}
开发者ID:daxko,项目名称:envconsul,代码行数:17,代码来源:cli_test.go
示例9: TestRun_sanitize
func TestRun_sanitize(t *testing.T) {
prefix, err := dep.ParseStoreKeyPrefix("foo/bar")
if err != nil {
t.Fatal(err)
}
config := testConfig(`
sanitize = true
prefixes = ["foo/bar"]
`, t)
runner, err := NewRunner(config, []string{"env"}, true)
if err != nil {
t.Fatal(err)
}
outStream, errStream := new(bytes.Buffer), new(bytes.Buffer)
runner.outStream, runner.errStream = outStream, errStream
pair := []*dep.KeyPair{
&dep.KeyPair{
Path: "foo/bar",
Key: "b*a*r",
Value: "baz",
},
}
runner.Receive(prefix, pair)
exitCh, err := runner.Run()
if err != nil {
t.Fatal(err)
}
select {
case err := <-runner.ErrCh:
t.Fatal(err)
case <-exitCh:
expected := "b_a_r=baz"
if !strings.Contains(outStream.String(), expected) {
t.Fatalf("expected %q to include %q", outStream.String(), expected)
}
}
}
开发者ID:mdelagrange,项目名称:envconsul,代码行数:44,代码来源:runner_test.go
示例10: TestParsePrefix_source
func TestParsePrefix_source(t *testing.T) {
source := "global"
prefix, err := ParsePrefix(source)
if err != nil {
t.Fatal(err)
}
if prefix.SourceRaw != source {
t.Errorf("expected %q to equal %q", prefix.SourceRaw, source)
}
d, err := dep.ParseStoreKeyPrefix("global")
if err != nil {
t.Fatal(err)
}
if !reflect.DeepEqual(prefix.Source, d) {
t.Errorf("expected %#v to equal %#v", prefix.Source, d)
}
}
开发者ID:half-dead,项目名称:consul-replicate,代码行数:19,代码来源:config_test.go
示例11: TestTreeFunc_hasData
func TestTreeFunc_hasData(t *testing.T) {
d, err := dep.ParseStoreKeyPrefix("existing")
if err != nil {
t.Fatal(err)
}
data := []*dep.KeyPair{
&dep.KeyPair{Key: "", Value: ""},
&dep.KeyPair{Key: "user/sethvargo", Value: "true"},
&dep.KeyPair{Key: "maxconns", Value: "11"},
&dep.KeyPair{Key: "minconns", Value: "2"},
}
brain := NewBrain()
brain.Remember(d, data)
used := make(map[string]dep.Dependency)
missing := make(map[string]dep.Dependency)
f := treeFunc(brain, used, missing)
result, err := f("existing")
if err != nil {
t.Fatal(err)
}
expected := []*dep.KeyPair{
&dep.KeyPair{Key: "user/sethvargo", Value: "true"},
&dep.KeyPair{Key: "maxconns", Value: "11"},
&dep.KeyPair{Key: "minconns", Value: "2"},
}
if !reflect.DeepEqual(result, expected) {
t.Errorf("expected %q to be %q", result, expected)
}
if len(missing) != 0 {
t.Errorf("expected missing to have 0 elements, but had %d", len(missing))
}
if _, ok := used[d.HashCode()]; !ok {
t.Errorf("expected dep to be used")
}
}
开发者ID:necroscope,项目名称:consul-template,代码行数:43,代码来源:template_functions_test.go
示例12: TestRun_exitCh
func TestRun_exitCh(t *testing.T) {
prefix, err := dep.ParseStoreKeyPrefix("foo/bar")
if err != nil {
t.Fatal(err)
}
config := testConfig(`
prefixes = ["foo/bar"]
`, t)
runner, err := NewRunner(config, []string{"env"}, true)
if err != nil {
t.Fatal(err)
}
outStream, errStream := new(bytes.Buffer), new(bytes.Buffer)
runner.outStream, runner.errStream = outStream, errStream
pair := []*dep.KeyPair{
&dep.KeyPair{
Path: "foo/bar",
Key: "bar",
Value: "baz",
},
}
runner.Receive(prefix, pair)
exitCh, err := runner.Run()
if err != nil {
t.Fatal(err)
}
select {
case err := <-runner.ErrCh:
t.Fatal(err)
case <-exitCh:
// Ok
}
}
开发者ID:mdelagrange,项目名称:envconsul,代码行数:40,代码来源:runner_test.go
示例13: NewRunner
// NewRunner accepts a JsonExport, and boolean value for once mode.
func NewRunner(config *JsonExport, once bool) (*Runner, error) {
var err error
log.Printf("[INFO] (runner) creating new runner (once: %v)\n", once)
runner := &Runner{
config: config,
once: once,
}
s := strings.TrimPrefix(config.Prefix, "/")
runner.Prefix, err = dep.ParseStoreKeyPrefix(s)
if err != nil {
return nil, err
}
if err := runner.init(); err != nil {
return nil, err
}
return runner, nil
}
开发者ID:bhourigan,项目名称:jsonconsul,代码行数:23,代码来源:export_watch.go
示例14: TestParsePrefix_destination
func TestParsePrefix_destination(t *testing.T) {
source, destination := "[email protected]", "backup"
prefix, err := ParsePrefix(fmt.Sprintf("%s:%s", source, destination))
if err != nil {
t.Fatal(err)
}
if prefix.SourceRaw != source {
t.Errorf("expected %q to equal %q", prefix.SourceRaw, source)
}
d, err := dep.ParseStoreKeyPrefix("[email protected]")
if err != nil {
t.Fatal(err)
}
if !reflect.DeepEqual(prefix.Source, d) {
t.Errorf("expected %#v to equal %#v", prefix.Source, d)
}
if prefix.Destination != destination {
t.Errorf("expected %q to equal %q", prefix.Destination, destination)
}
}
开发者ID:half-dead,项目名称:consul-replicate,代码行数:22,代码来源:config_test.go
示例15: ParseConfig
// ParseConfig reads the configuration file at the given path and returns a new
// Config struct with the data populated.
func ParseConfig(path string) (*Config, error) {
var errs *multierror.Error
// Read the contents of the file
contents, err := ioutil.ReadFile(path)
if err != nil {
return nil, fmt.Errorf("error reading config at %q: %s", path, err)
}
// Parse the file (could be HCL or JSON)
var shadow interface{}
if err := hcl.Decode(&shadow, string(contents)); err != nil {
return nil, fmt.Errorf("error decoding config at %q: %s", path, err)
}
// Convert to a map and flatten the keys we want to flatten
parsed, ok := shadow.(map[string]interface{})
if !ok {
return nil, fmt.Errorf("error converting config at %q", path)
}
flattenKeys(parsed, []string{"auth", "ssl", "syslog"})
// Parse the prefixes
if raw, ok := parsed["prefixes"]; ok {
if typed, ok := raw.([]interface{}); !ok {
err = fmt.Errorf("error converting prefixes to []interface{} at %q, was %T", path, raw)
errs = multierror.Append(errs, err)
delete(parsed, "prefixes")
} else {
prefixes := make([]*dep.StoreKeyPrefix, 0, len(typed))
for _, p := range typed {
if s, ok := p.(string); ok {
if prefix, err := dep.ParseStoreKeyPrefix(s); err != nil {
err = fmt.Errorf("error parsing prefix %q at %q: %s", p, path, err)
errs = multierror.Append(errs, err)
} else {
prefixes = append(prefixes, prefix)
}
} else {
err = fmt.Errorf("error converting %T to string", p)
errs = multierror.Append(errs, err)
delete(parsed, "prefixes")
}
}
parsed["prefixes"] = prefixes
}
}
// Parse the wait component
if raw, ok := parsed["wait"]; ok {
if typed, ok := raw.(string); !ok {
err = fmt.Errorf("error converting wait to string at %q", path)
errs = multierror.Append(errs, err)
delete(parsed, "wait")
} else {
if wait, err := watch.ParseWait(typed); err != nil {
err = fmt.Errorf("error parsing wait at %q: %s", path, err)
errs = multierror.Append(errs, err)
delete(parsed, "wait")
} else {
parsed["wait"] = map[string]time.Duration{
"min": wait.Min,
"max": wait.Max,
}
}
}
}
// Create a new, empty config
config := new(Config)
// Use mapstructure to populate the basic config fields
metadata := new(mapstructure.Metadata)
decoder, err := mapstructure.NewDecoder(&mapstructure.DecoderConfig{
DecodeHook: mapstructure.ComposeDecodeHookFunc(
mapstructure.StringToSliceHookFunc(","),
mapstructure.StringToTimeDurationHookFunc(),
),
ErrorUnused: true,
Metadata: metadata,
Result: config,
})
if err != nil {
errs = multierror.Append(errs, err)
return nil, errs.ErrorOrNil()
}
if err := decoder.Decode(parsed); err != nil {
errs = multierror.Append(errs, err)
return nil, errs.ErrorOrNil()
}
// Store a reference to the path where this config was read from
config.Path = path
// Update the list of set keys
if config.setKeys == nil {
config.setKeys = make(map[string]struct{})
}
//.........这里部分代码省略.........
开发者ID:mdelagrange,项目名称:envconsul,代码行数:101,代码来源:config.go
示例16: TestParseConfig_correctValues
func TestParseConfig_correctValues(t *testing.T) {
global, err := dep.ParseStoreKeyPrefix("config/global")
if err != nil {
t.Fatal(err)
}
redis, err := dep.ParseStoreKeyPrefix("config/redis")
if err != nil {
t.Fatal(err)
}
configFile := test.CreateTempfile([]byte(`
consul = "nyc1.demo.consul.io"
max_stale = "5s"
token = "abcd1234"
wait = "5s:10s"
retry = "10s"
log_level = "warn"
prefixes = ["config/global", "config/redis"]
auth {
enabled = true
username = "test"
password = "test"
}
ssl {
enabled = true
verify = false
cert = "c1.pem"
ca_cert = "c2.pem"
}
syslog {
enabled = true
facility = "LOCAL5"
}
`), t)
defer test.DeleteTempfile(configFile, t)
config, err := ParseConfig(configFile.Name())
if err != nil {
t.Fatal(err)
}
expected := &Config{
Path: configFile.Name(),
Consul: "nyc1.demo.consul.io",
MaxStale: time.Second * 5,
Upcase: false,
Sanitize: false,
Timeout: 5 * time.Second,
Auth: &AuthConfig{
Enabled: true,
Username: "test",
Password: "test",
},
SSL: &SSLConfig{
Enabled: true,
Verify: false,
Cert: "c1.pem",
CaCert: "c2.pem",
},
Syslog: &SyslogConfig{
Enabled: true,
Facility: "LOCAL5",
},
Token: "abcd1234",
Wait: &watch.Wait{
Min: time.Second * 5,
Max: time.Second * 10,
},
Retry: 10 * time.Second,
LogLevel: "warn",
Prefixes: []*dep.StoreKeyPrefix{global, redis},
KillSignal: "SIGTERM",
setKeys: config.setKeys,
}
if !reflect.DeepEqual(config, expected) {
t.Fatalf("expected \n%#v\n to be \n%#v\n", config, expected)
}
// if !reflect.DeepEqual(config, expected) {
// t.Fatalf("expected \n%#v\n to be \n%#v\n", config, expected)
// }
}
开发者ID:chrisriley,项目名称:envconsul,代码行数:88,代码来源:config_test.go
示例17: TestRun_merges
func TestRun_merges(t *testing.T) {
globalPrefix, err := dep.ParseStoreKeyPrefix("config/global")
if err != nil {
t.Fatal(err)
}
redisPrefix, err := dep.ParseStoreKeyPrefix("config/redis")
if err != nil {
t.Fatal(err)
}
config := testConfig(`
upcase = true
prefixes = ["config/global", "config/redis"]
`, t)
runner, err := NewRunner(config, []string{"env"}, true)
if err != nil {
t.Fatal(err)
}
outStream, errStream := new(bytes.Buffer), new(bytes.Buffer)
runner.outStream, runner.errStream = outStream, errStream
globalData := []*dep.KeyPair{
&dep.KeyPair{
Path: "config/global",
Key: "address",
Value: "1.2.3.4",
},
&dep.KeyPair{
Path: "config/global",
Key: "port",
Value: "5598",
},
}
runner.Receive(globalPrefix, globalData)
redisData := []*dep.KeyPair{
&dep.KeyPair{
Path: "config/redis",
Key: "port",
Value: "8000",
},
}
runner.Receive(redisPrefix, redisData)
exitCh, err := runner.Run()
if err != nil {
t.Fatal(err)
}
select {
case err := <-runner.ErrCh:
t.Fatal(err)
case <-exitCh:
expected := "ADDRESS=1.2.3.4"
if !strings.Contains(outStream.String(), expected) {
t.Fatalf("expected %q to include %q", outStream.String(), expected)
}
expected = "PORT=8000"
if !strings.Contains(outStream.String(), expected) {
t.Fatalf("expected %q to include %q", outStream.String(), expected)
}
}
}
开发者ID:mdelagrange,项目名称:envconsul,代码行数:67,代码来源:runner_test.go
示例18: ParseConfig
// g reads the configuration file at the given path and returns a new
// Config struct with the data populated.
func ParseConfig(path string) (*Config, error) {
var errs *multierror.Error
// Read the contents of the file
contents, err := ioutil.ReadFile(path)
if err != nil {
return nil, fmt.Errorf("error reading config at %q: %s", path, err)
}
// Parse the file (could be HCL or JSON)
var shadow interface{}
if err := hcl.Decode(&shadow, string(contents)); err != nil {
return nil, fmt.Errorf("error decoding config at %q: %s", path, err)
}
// Convert to a map and flatten the keys we want to flatten
parsed, ok := shadow.(map[string]interface{})
if !ok {
return nil, fmt.Errorf("error converting config at %q", path)
}
flattenKeys(parsed, []string{"auth", "ssl", "syslog"})
// Create a new, empty config
config := new(Config)
// Use mapstructure to populate the basic config fields
metadata := new(mapstructure.Metadata)
decoder, err := mapstructure.NewDecoder(&mapstructure.DecoderConfig{
DecodeHook: mapstructure.ComposeDecodeHookFunc(
watch.StringToWaitDurationHookFunc(),
mapstructure.StringToSliceHookFunc(","),
mapstructure.StringToTimeDurationHookFunc(),
),
ErrorUnused: true,
Metadata: metadata,
Result: config,
})
if err != nil {
errs = multierror.Append(errs, err)
return nil, errs.ErrorOrNil()
}
if err := decoder.Decode(parsed); err != nil {
errs = multierror.Append(errs, err)
return nil, errs.ErrorOrNil()
}
// Store a reference to the path where this config was read from
config.Path = path
// Parse the prefix sources
for _, prefix := range config.Prefixes {
parsed, err := dep.ParseStoreKeyPrefix(prefix.SourceRaw)
if err != nil {
errs = multierror.Append(errs, err)
continue
}
prefix.Source = parsed
// If no destination was given, default to the prefix
if prefix.Destination == "" {
prefix.Destination = parsed.Prefix
}
}
// Update the list of set keys
if config.setKeys == nil {
config.setKeys = make(map[string]struct{})
}
for _, key := range metadata.Keys {
if _, ok := config.setKeys[key]; !ok {
config.setKeys[key] = struct{}{}
}
}
config.setKeys["path"] = struct{}{}
d := DefaultConfig()
d.Merge(config)
config = d
return config, errs.ErrorOrNil()
}
开发者ID:kjniemi,项目名称:consul-replicate,代码行数:83,代码来源:config.go
示例19: TestStart_runsCommandOnChange
func TestStart_runsCommandOnChange(t *testing.T) {
prefix, err := dep.ParseStoreKeyPrefix("foo/bar")
if err != nil {
t.Fatal(err)
}
config := testConfig(`
prefixes = ["foo/bar"]
`, t)
runner, err := NewRunner(config, []string{"sh", "-c", "echo $BAR"}, true)
if err != nil {
t.Fatal(err)
}
outStream, errStream := new(bytes.Buffer), new(bytes.Buffer)
runner.outStream, runner.errStream = outStream, errStream
go runner.Start()
defer runner.Stop()
// Kind of hacky, but wait for the runner to return an error, indicating we
// are all setup.
select {
case <-runner.watcher.ErrCh:
}
pair := []*dep.KeyPair{
&dep.KeyPair{
Path: "foo/bar",
Key: "BAR",
Value: "one",
},
}
runner.watcher.DataCh <- &watch.View{Dependency: prefix, Data: pair}
select {
case err := <-runner.ErrCh:
t.Fatal(err)
case <-time.After(200 * time.Millisecond):
expected := "one\n"
if outStream.String() != expected {
t.Fatalf("expected %q to be %q", outStream.String(), expected)
}
}
outStream.Reset()
errStream.Reset()
pair = []*dep.KeyPair{
&dep.KeyPair{
Path: "foo/bar",
Key: "BAR",
Value: "two",
},
}
runner.watcher.DataCh <- &watch.View{Dependency: prefix, Data: pair}
select {
case err := <-runner.ErrCh:
t.Fatal(err)
case <-time.After(200 * time.Millisecond):
expected := "two\n"
if outStream.String() != expected {
t.Fatalf("expected %q to be %q", outStream.String(), expected)
}
}
}
开发者ID:mdelagrange,项目名称:envconsul,代码行数:68,代码来源:runner_test.go
示例20: TestExecute_multipass
func TestExecute_multipass(t *testing.T) {
in := test.CreateTempfile([]byte(`
{{ range ls "services" }}{{.Key}}:{{ range service .Key }}
{{.Node}} {{.Address}}:{{.Port}}{{ end }}
{{ end }}
`), t)
defer test.DeleteTempfile(in, t)
tmpl, err := NewTemplate(in.Name())
if err != nil {
t.Fatal(err)
}
brain := NewBrain()
used, missing, result, err := tmpl.Execute(brain)
if err != nil {
t.Fatal(err)
}
if num := len(missing); num != 1 {
t.Errorf("expected 1 missing, got: %d", num)
}
if num := len(used); num != 1 {
t.Errorf("expected 1 used, got: %d", num)
}
expected := bytes.TrimSpace([]byte(""))
result = bytes.TrimSpace(result)
if !bytes.Equal(result, expected) {
t.Errorf("expected %q to be %q", result, expected)
}
// Receive data for the key prefix dependency
d1, err := dep.ParseStoreKeyPrefix("services")
brain.Remember(d1, []*dep.KeyPair{
&dep.KeyPair{Key: "webapp", Value: "1"},
&dep.KeyPair{Key: "database", Value: "1"},
})
used, missing, result, err = tmpl.Execute(brain)
if err != nil {
t.Fatal(err)
}
if num := len(missing); num != 2 {
t.Errorf("expected 2 missing, got: %d", num)
}
if num := len(used); num != 3 {
t.Errorf("expected 3 used, got: %d", num)
}
expected = bytes.TrimSpace([]byte(`
webapp:
database:
`))
result = bytes.TrimSpace(result)
if !bytes.Equal(result, expected) {
t.Errorf("expected \n%q\n to be \n%q\n", result, expected)
}
// Receive data for the services
d2, err := dep.ParseHealthServices("webapp")
brain.Remember(d2, []*dep.HealthService{
&dep.HealthService{Node: "web01", Address: "1.2.3.4", Port: 1234},
})
d3, err := dep.ParseHealthServices("database")
brain.Remember(d3, []*dep.HealthService{
&dep.HealthService{Node: "db01", Address: "5.6.7.8", Port: 5678},
})
used, missing, result, err = tmpl.Execute(brain)
if err != nil {
t.Fatal(err)
}
if num := len(missing); num != 0 {
t.Errorf("expected 0 missing, got: %d", num)
}
if num := len(used); num != 3 {
t.Errorf("expected 3 used, got: %d", num)
}
expected = bytes.TrimSpace([]byte(`
webapp:
web01 1.2.3.4:1234
database:
db01 5.6.7.8:5678
`))
result = bytes.TrimSpace(result)
if !bytes.Equal(result, expected) {
t.Errorf("expected \n%q\n to be \n%q\n", result, expected)
}
}
开发者ID:necroscope,项目名称:consul-template,代码行数:98,代码来源:template_test.go
注:本文中的github.com/hashicorp/consul-template/dependency.ParseStoreKeyPrefix函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论