本文整理汇总了Golang中github.com/square/metrics/api.ParseTagSet函数的典型用法代码示例。如果您正苦于以下问题:Golang ParseTagSet函数的具体用法?Golang ParseTagSet怎么用?Golang ParseTagSet使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了ParseTagSet函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: TestCommand_DescribeAll
func TestCommand_DescribeAll(t *testing.T) {
fakeApi := mocks.NewFakeApi()
fakeApi.AddPair(api.TaggedMetric{"series_0", api.ParseTagSet("")}, emptyGraphiteName)
fakeApi.AddPair(api.TaggedMetric{"series_1", api.ParseTagSet("")}, emptyGraphiteName)
fakeApi.AddPair(api.TaggedMetric{"series_2", api.ParseTagSet("")}, emptyGraphiteName)
fakeApi.AddPair(api.TaggedMetric{"series_3", api.ParseTagSet("")}, emptyGraphiteName)
for _, test := range []struct {
query string
backend api.API
expected []api.MetricKey
}{
{"describe all", fakeApi, []api.MetricKey{"series_0", "series_1", "series_2", "series_3"}},
{"describe all match '_0'", fakeApi, []api.MetricKey{"series_0"}},
{"describe all match '_5'", fakeApi, []api.MetricKey{}},
} {
a := assert.New(t).Contextf("query=%s", test.query)
command, err := Parse(test.query)
if err != nil {
a.Errorf("Unexpected error while parsing")
continue
}
a.EqString(command.Name(), "describe all")
rawResult, err := command.Execute(ExecutionContext{Backend: nil, API: test.backend, FetchLimit: 1000, Timeout: 0})
a.CheckError(err)
a.Eq(rawResult, test.expected)
}
}
开发者ID:jmptrader,项目名称:metrics,代码行数:29,代码来源:command_test.go
示例2: TestCommand_Describe
func TestCommand_Describe(t *testing.T) {
fakeApi := mocks.NewFakeApi()
fakeApi.AddPair(api.TaggedMetric{"series_0", api.ParseTagSet("dc=west,env=production,host=a")}, emptyGraphiteName)
fakeApi.AddPair(api.TaggedMetric{"series_0", api.ParseTagSet("dc=west,env=staging,host=b")}, emptyGraphiteName)
fakeApi.AddPair(api.TaggedMetric{"series_0", api.ParseTagSet("dc=east,env=production,host=c")}, emptyGraphiteName)
fakeApi.AddPair(api.TaggedMetric{"series_0", api.ParseTagSet("dc=east,env=staging,host=d")}, emptyGraphiteName)
for _, test := range []struct {
query string
backend api.API
expected map[string][]string
}{
{"describe series_0", fakeApi, map[string][]string{"dc": {"east", "west"}, "env": {"production", "staging"}, "host": {"a", "b", "c", "d"}}},
{"describe`series_0`", fakeApi, map[string][]string{"dc": {"east", "west"}, "env": {"production", "staging"}, "host": {"a", "b", "c", "d"}}},
{"describe series_0 where dc='west'", fakeApi, map[string][]string{"dc": {"west"}, "env": {"production", "staging"}, "host": {"a", "b"}}},
{"describe`series_0`where(dc='west')", fakeApi, map[string][]string{"dc": {"west"}, "env": {"production", "staging"}, "host": {"a", "b"}}},
{"describe series_0 where dc='west' or env = 'production'", fakeApi, map[string][]string{"dc": {"east", "west"}, "env": {"production", "staging"}, "host": {"a", "b", "c"}}},
{"describe series_0 where`dc`='west'or`env`='production'", fakeApi, map[string][]string{"dc": {"east", "west"}, "env": {"production", "staging"}, "host": {"a", "b", "c"}}},
{"describe series_0 where dc='west' or env = 'production' and doesnotexist = ''", fakeApi, map[string][]string{"dc": {"west"}, "env": {"production", "staging"}, "host": {"a", "b"}}},
{"describe series_0 where env = 'production' and doesnotexist = '' or dc = 'west'", fakeApi, map[string][]string{"dc": {"west"}, "env": {"production", "staging"}, "host": {"a", "b"}}},
{"describe series_0 where (dc='west' or env = 'production') and doesnotexist = ''", fakeApi, map[string][]string{}},
{"describe series_0 where(dc='west' or env = 'production')and`doesnotexist` = ''", fakeApi, map[string][]string{}},
} {
a := assert.New(t).Contextf("query=%s", test.query)
command, err := Parse(test.query)
if err != nil {
a.Errorf("Unexpected error while parsing")
continue
}
a.EqString(command.Name(), "describe")
rawResult, _ := command.Execute(ExecutionContext{Backend: nil, API: test.backend, FetchLimit: 1000, Timeout: 0})
a.Eq(rawResult, test.expected)
}
}
开发者ID:postfix,项目名称:metrics,代码行数:35,代码来源:command_test.go
示例3: TestCommand_Describe
func TestCommand_Describe(t *testing.T) {
fakeApi := mocks.NewFakeApi()
fakeApi.AddPair(api.TaggedMetric{"series_0", api.ParseTagSet("dc=west,env=production,host=a")}, emptyGraphiteName)
fakeApi.AddPair(api.TaggedMetric{"series_0", api.ParseTagSet("dc=west,env=staging,host=b")}, emptyGraphiteName)
fakeApi.AddPair(api.TaggedMetric{"series_0", api.ParseTagSet("dc=east,env=production,host=c")}, emptyGraphiteName)
fakeApi.AddPair(api.TaggedMetric{"series_0", api.ParseTagSet("dc=east,env=staging,host=d")}, emptyGraphiteName)
for _, test := range []struct {
query string
backend api.API
length int // expected length of the result.
}{
{"describe series_0", fakeApi, 4},
{"describe`series_0`", fakeApi, 4},
{"describe series_0 where dc='west'", fakeApi, 2},
{"describe`series_0`where(dc='west')", fakeApi, 2},
{"describe series_0 where dc='west' or env = 'production'", fakeApi, 3},
{"describe series_0 where`dc`='west'or`env`='production'", fakeApi, 3},
{"describe series_0 where dc='west' or env = 'production' and doesnotexist = ''", fakeApi, 2},
{"describe series_0 where env = 'production' and doesnotexist = '' or dc = 'west'", fakeApi, 2},
{"describe series_0 where (dc='west' or env = 'production') and doesnotexist = ''", fakeApi, 0},
{"describe series_0 where(dc='west' or env = 'production')and`doesnotexist` = ''", fakeApi, 0},
} {
a := assert.New(t).Contextf("query=%s", test.query)
command, err := Parse(test.query)
if err != nil {
a.Errorf("Unexpected error while parsing")
continue
}
a.EqString(command.Name(), "describe")
rawResult, _ := command.Execute(ExecutionContext{Backend: nil, API: test.backend, FetchLimit: 1000, Timeout: 0})
parsedResult := rawResult.([]string)
a.EqInt(len(parsedResult), test.length)
}
}
开发者ID:alokmenghrajani,项目名称:metrics,代码行数:35,代码来源:command_test.go
示例4: FetchSingleTimeseries
func (f FakeTimeseriesStorageAPI) FetchSingleTimeseries(request api.FetchTimeseriesRequest) (api.Timeseries, error) {
defer request.Profiler.Record("Mock FetchSingleTimeseries")()
metricMap := map[api.MetricKey][]api.Timeseries{
"series_1": {{Values: []float64{1, 2, 3, 4, 5}, TagSet: api.ParseTagSet("dc=west")}},
"series_2": {{Values: []float64{1, 2, 3, 4, 5}, TagSet: api.ParseTagSet("dc=west")}, {Values: []float64{3, 0, 3, 6, 2}, TagSet: api.ParseTagSet("dc=east")}},
"series_3": {{Values: []float64{1, 1, 1, 4, 4}, TagSet: api.ParseTagSet("dc=west")}, {Values: []float64{5, 5, 5, 2, 2}, TagSet: api.ParseTagSet("dc=east")}, {Values: []float64{3, 3, 3, 3, 3}, TagSet: api.ParseTagSet("dc=north")}},
}
if string(request.Metric.MetricKey) == "series_timeout" {
<-make(chan struct{}) // block forever
}
list, ok := metricMap[request.Metric.MetricKey]
if !ok {
return api.Timeseries{}, errors.New("internal error")
}
for _, series := range list {
if request.Metric.TagSet.Serialize() == series.TagSet.Serialize() {
// Cut the values based on the Timerange.
values := make([]float64, request.Timerange.Slots())
for i := range values {
values[i] = series.Values[i+int(request.Timerange.Start())/30]
}
return api.Timeseries{Values: values, TagSet: series.TagSet}, nil
}
}
return api.Timeseries{}, errors.New("internal error")
}
开发者ID:deveshmittal,项目名称:metrics,代码行数:26,代码来源:api.go
示例5: Test_MetricName_GetTagSet_DB
func Test_MetricName_GetTagSet_DB(t *testing.T) {
a := assert.New(t)
db := newDatabase(t)
if db == nil {
return
}
defer cleanDatabase(t, db)
if _, err := db.GetTagSet("sample"); err == nil {
t.Errorf("Cassandra should error on fetching nonexistent metric")
}
metricNamesTests := []struct {
addTest bool
metricName string
tagString string
expectedTags map[string][]string // { metricName: [ tags ] }
}{
{true, "sample", "foo=bar1", map[string][]string{
"sample": []string{"foo=bar1"},
}},
{true, "sample", "foo=bar2", map[string][]string{
"sample": []string{"foo=bar1", "foo=bar2"},
}},
{true, "sample2", "foo=bar2", map[string][]string{
"sample": []string{"foo=bar1", "foo=bar2"},
"sample2": []string{"foo=bar2"},
}},
{false, "sample2", "foo=bar2", map[string][]string{
"sample": []string{"foo=bar1", "foo=bar2"},
}},
{false, "sample", "foo=bar1", map[string][]string{
"sample": []string{"foo=bar2"},
}},
}
for _, c := range metricNamesTests {
if c.addTest {
a.CheckError(db.AddMetricName(api.MetricKey(c.metricName), api.ParseTagSet(c.tagString)))
} else {
a.CheckError(db.RemoveMetricName(api.MetricKey(c.metricName), api.ParseTagSet(c.tagString)))
}
for k, v := range c.expectedTags {
if tags, err := db.GetTagSet(api.MetricKey(k)); err != nil {
t.Errorf("Error fetching tags")
} else {
stringTags := make([]string, len(tags))
for i, tag := range tags {
stringTags[i] = tag.Serialize()
}
a.EqInt(len(stringTags), len(v))
sort.Sort(sort.StringSlice(stringTags))
sort.Sort(sort.StringSlice(v))
a.Eq(stringTags, v)
}
}
}
}
开发者ID:deveshmittal,项目名称:metrics,代码行数:59,代码来源:cassandra_db_test.go
示例6: Test_GetAllMetrics_API
func Test_GetAllMetrics_API(t *testing.T) {
a := assert.New(t)
cassandra, context := newCassandraAPI(t)
defer cleanAPI(t, cassandra)
a.CheckError(cassandra.AddMetric(api.TaggedMetric{
"metric.a",
api.ParseTagSet("foo=a"),
}, context))
a.CheckError(cassandra.AddMetric(api.TaggedMetric{
"metric.a",
api.ParseTagSet("foo=b"),
}, context))
a.CheckError(cassandra.AddMetrics([]api.TaggedMetric{
{
"metric.c",
api.TagSet{
"bar": "cat",
},
},
{
"metric.d",
api.TagSet{
"bar": "dog",
},
},
{
"metric.e",
api.TagSet{
"bar": "cat",
},
},
}, context))
keys, err := cassandra.GetAllMetrics(context)
a.CheckError(err)
sort.Sort(api.MetricKeys(keys))
a.Eq(keys, []api.MetricKey{"metric.a", "metric.c", "metric.d", "metric.e"})
a.CheckError(cassandra.AddMetric(api.TaggedMetric{
"metric.b",
api.ParseTagSet("foo=c"),
}, context))
a.CheckError(cassandra.AddMetric(api.TaggedMetric{
"metric.b",
api.ParseTagSet("foo=c"),
}, context))
keys, err = cassandra.GetAllMetrics(context)
a.CheckError(err)
sort.Sort(api.MetricKeys(keys))
a.Eq(keys, []api.MetricKey{"metric.a", "metric.b", "metric.c", "metric.d", "metric.e"})
}
开发者ID:deveshmittal,项目名称:metrics,代码行数:49,代码来源:cassandra_api_test.go
示例7: TestCommand_Describe
func TestCommand_Describe(t *testing.T) {
fakeAPI := mocks.NewFakeMetricMetadataAPI()
fakeAPI.AddPairWithoutGraphite(api.TaggedMetric{"series_0", api.ParseTagSet("dc=west,env=production,host=a")}, emptyGraphiteName)
fakeAPI.AddPairWithoutGraphite(api.TaggedMetric{"series_0", api.ParseTagSet("dc=west,env=staging,host=b")}, emptyGraphiteName)
fakeAPI.AddPairWithoutGraphite(api.TaggedMetric{"series_0", api.ParseTagSet("dc=east,env=production,host=c")}, emptyGraphiteName)
fakeAPI.AddPairWithoutGraphite(api.TaggedMetric{"series_0", api.ParseTagSet("dc=east,env=staging,host=d")}, emptyGraphiteName)
for _, test := range []struct {
query string
metricmetadata api.MetricMetadataAPI
expected map[string][]string
}{
{"describe series_0", fakeAPI, map[string][]string{"dc": {"east", "west"}, "env": {"production", "staging"}, "host": {"a", "b", "c", "d"}}},
{"describe`series_0`", fakeAPI, map[string][]string{"dc": {"east", "west"}, "env": {"production", "staging"}, "host": {"a", "b", "c", "d"}}},
{"describe series_0 where dc='west'", fakeAPI, map[string][]string{"dc": {"west"}, "env": {"production", "staging"}, "host": {"a", "b"}}},
{"describe`series_0`where(dc='west')", fakeAPI, map[string][]string{"dc": {"west"}, "env": {"production", "staging"}, "host": {"a", "b"}}},
{"describe series_0 where dc='west' or env = 'production'", fakeAPI, map[string][]string{"dc": {"east", "west"}, "env": {"production", "staging"}, "host": {"a", "b", "c"}}},
{"describe series_0 where`dc`='west'or`env`='production'", fakeAPI, map[string][]string{"dc": {"east", "west"}, "env": {"production", "staging"}, "host": {"a", "b", "c"}}},
{"describe series_0 where dc='west' or env = 'production' and doesnotexist = ''", fakeAPI, map[string][]string{"dc": {"west"}, "env": {"production", "staging"}, "host": {"a", "b"}}},
{"describe series_0 where env = 'production' and doesnotexist = '' or dc = 'west'", fakeAPI, map[string][]string{"dc": {"west"}, "env": {"production", "staging"}, "host": {"a", "b"}}},
{"describe series_0 where (dc='west' or env = 'production') and doesnotexist = ''", fakeAPI, map[string][]string{}},
{"describe series_0 where(dc='west' or env = 'production')and`doesnotexist` = ''", fakeAPI, map[string][]string{}},
} {
a := assert.New(t).Contextf("query=%s", test.query)
command, err := Parse(test.query)
if err != nil {
a.Errorf("Unexpected error while parsing")
continue
}
a.EqString(command.Name(), "describe")
fakeTimeseriesStorage := mocks.FakeTimeseriesStorageAPI{}
rawResult, err := command.Execute(ExecutionContext{
TimeseriesStorageAPI: fakeTimeseriesStorage,
MetricMetadataAPI: test.metricmetadata,
FetchLimit: 1000,
Timeout: 0,
OptimizationConfiguration: optimize.NewOptimizationConfiguration(),
})
a.CheckError(err)
a.Eq(rawResult, test.expected)
}
}
开发者ID:ratneshdeepak,项目名称:metrics,代码行数:43,代码来源:command_test.go
示例8: Test_GetAllMetrics
func Test_GetAllMetrics(t *testing.T) {
a := assert.New(t)
db := newDatabase(t)
if db == nil {
return
}
defer cleanDatabase(t, db)
a.CheckError(db.AddMetricName("metric.a", api.ParseTagSet("foo=a")))
a.CheckError(db.AddMetricName("metric.a", api.ParseTagSet("foo=b")))
keys, err := db.GetAllMetrics()
a.CheckError(err)
sort.Sort(api.MetricKeys(keys))
a.Eq(keys, []api.MetricKey{"metric.a"})
a.CheckError(db.AddMetricName("metric.b", api.ParseTagSet("foo=c")))
a.CheckError(db.AddMetricName("metric.b", api.ParseTagSet("foo=c")))
keys, err = db.GetAllMetrics()
a.CheckError(err)
sort.Sort(api.MetricKeys(keys))
a.Eq(keys, []api.MetricKey{"metric.a", "metric.b"})
}
开发者ID:alokmenghrajani,项目名称:metrics,代码行数:20,代码来源:cassandra_test.go
示例9: TestToGraphiteName_Error
func TestToGraphiteName_Error(t *testing.T) {
a := assert.New(t)
rule, err := Compile(RawRule{
Pattern: "prefix.%foo%",
MetricKeyPattern: "test-metric",
})
a.CheckError(err)
reversed, err := rule.ToGraphiteName(api.TaggedMetric{
MetricKey: "test-metric",
TagSet: api.ParseTagSet(""),
})
checkConversionErrorCode(t, err, MissingTag)
a.EqString(string(reversed), "")
reversed, err = rule.ToGraphiteName(api.TaggedMetric{
MetricKey: "test-metric-foo",
TagSet: api.ParseTagSet("foo=fooValue"),
})
checkConversionErrorCode(t, err, CannotInterpolate)
a.EqString(string(reversed), "")
}
开发者ID:deveshmittal,项目名称:metrics,代码行数:21,代码来源:rules_test.go
示例10: FetchSingleSeries
func (f fakeApiBackend) FetchSingleSeries(request api.FetchSeriesRequest) (api.Timeseries, error) {
metricMap := map[api.MetricKey][]api.Timeseries{
"series_1": {{[]float64{1, 2, 3, 4, 5}, api.ParseTagSet("dc=west")}},
"series_2": {{[]float64{1, 2, 3, 4, 5}, api.ParseTagSet("dc=west")}, {[]float64{3, 0, 3, 6, 2}, api.ParseTagSet("dc=east")}},
}
if string(request.Metric.MetricKey) == "series_timeout" {
<-make(chan struct{}) // block forever
}
list, ok := metricMap[request.Metric.MetricKey]
if !ok {
return api.Timeseries{}, errors.New("internal error")
}
for _, series := range list {
if request.Metric.TagSet.Serialize() == series.TagSet.Serialize() {
// Cut the values based on the Timerange.
values := make([]float64, request.Timerange.Slots())
for i := range values {
values[i] = series.Values[i+int(request.Timerange.Start())/30]
}
return api.Timeseries{values, series.TagSet}, nil
}
}
return api.Timeseries{}, errors.New("internal error")
}
开发者ID:alokmenghrajani,项目名称:metrics,代码行数:24,代码来源:command_test.go
示例11: TestToGraphiteName
func TestToGraphiteName(t *testing.T) {
a := assert.New(t)
rule, err := Compile(RawRule{
Pattern: "prefix.%foo%",
MetricKeyPattern: "test-metric",
})
a.CheckError(err)
tm := api.TaggedMetric{
MetricKey: "test-metric",
TagSet: api.ParseTagSet("foo=fooValue"),
}
reversed, err := rule.ToGraphiteName(tm)
a.CheckError(err)
a.EqString(string(reversed), "prefix.fooValue")
}
开发者ID:deveshmittal,项目名称:metrics,代码行数:15,代码来源:rules_test.go
示例12: TestCommand_DescribeAll
func TestCommand_DescribeAll(t *testing.T) {
fakeAPI := mocks.NewFakeMetricMetadataAPI()
fakeAPI.AddPairWithoutGraphite(api.TaggedMetric{"series_0", api.ParseTagSet("")}, emptyGraphiteName)
fakeAPI.AddPairWithoutGraphite(api.TaggedMetric{"series_1", api.ParseTagSet("")}, emptyGraphiteName)
fakeAPI.AddPairWithoutGraphite(api.TaggedMetric{"series_2", api.ParseTagSet("")}, emptyGraphiteName)
fakeAPI.AddPairWithoutGraphite(api.TaggedMetric{"series_3", api.ParseTagSet("")}, emptyGraphiteName)
for _, test := range []struct {
query string
metricmetadata api.MetricMetadataAPI
expected []api.MetricKey
}{
{"describe all", fakeAPI, []api.MetricKey{"series_0", "series_1", "series_2", "series_3"}},
{"describe all match '_0'", fakeAPI, []api.MetricKey{"series_0"}},
{"describe all match '_5'", fakeAPI, []api.MetricKey{}},
} {
a := assert.New(t).Contextf("query=%s", test.query)
command, err := Parse(test.query)
if err != nil {
a.Errorf("Unexpected error while parsing")
continue
}
a.EqString(command.Name(), "describe all")
fakeMulti := mocks.FakeTimeseriesStorageAPI{}
rawResult, err := command.Execute(ExecutionContext{
TimeseriesStorageAPI: fakeMulti,
MetricMetadataAPI: test.metricmetadata,
FetchLimit: 1000,
Timeout: 0,
OptimizationConfiguration: optimize.NewOptimizationConfiguration(),
})
a.CheckError(err)
a.Eq(rawResult, test.expected)
}
}
开发者ID:ratneshdeepak,项目名称:metrics,代码行数:36,代码来源:command_test.go
示例13: GetTagSet
func (db *defaultDatabase) GetTagSet(metricKey api.MetricKey) ([]api.TagSet, error) {
var tags []api.TagSet
rawTag := ""
iterator := db.session.Query(
"SELECT tag_set FROM metric_names WHERE metric_key = ?",
metricKey,
).Iter()
for iterator.Scan(&rawTag) {
parsedTagSet := api.ParseTagSet(rawTag)
if parsedTagSet != nil {
tags = append(tags, parsedTagSet)
}
}
if err := iterator.Close(); err != nil {
return nil, err
}
return tags, nil
}
开发者ID:alokmenghrajani,项目名称:metrics,代码行数:18,代码来源:cassandra.go
示例14: GetTagSet
func (db *cassandraDatabase) GetTagSet(metricKey api.MetricKey) ([]api.TagSet, error) {
var tags []api.TagSet
rawTag := ""
iterator := db.session.Query(
"SELECT tag_set FROM metric_names WHERE metric_key = ?",
metricKey,
).Iter()
for iterator.Scan(&rawTag) {
parsedTagSet := api.ParseTagSet(rawTag)
if parsedTagSet != nil {
tags = append(tags, parsedTagSet)
}
}
if err := iterator.Close(); err != nil {
return nil, err
}
if len(tags) == 0 {
//
return nil, api.NewNoSuchMetricError(string(metricKey))
}
return tags, nil
}
开发者ID:ratneshdeepak,项目名称:metrics,代码行数:22,代码来源:cassandra.go
示例15: TestIncludeRawPayload
func TestIncludeRawPayload(t *testing.T) {
graphite := mocks.FakeGraphiteConverter{
MetricMap: map[util.GraphiteMetric]api.TaggedMetric{
util.GraphiteMetric("some.key.value"): api.TaggedMetric{
MetricKey: api.MetricKey("some.key"),
TagSet: api.ParseTagSet("tag=value"),
},
},
}
fakeApi := mocks.NewFakeMetricMetadataAPI()
fakeApi.AddPair(
api.TaggedMetric{
MetricKey: api.MetricKey("some.key"),
TagSet: api.ParseTagSet("tag=value"),
},
util.GraphiteMetric("some.key.value"),
&graphite,
)
now := time.Unix(1438734300000, 0)
baseTime := now.Unix() * 1000
timeSource := func() time.Time { return now }
queryTimerange, err := api.NewSnappedTimerange(
int64(baseTime)-300*1000*10, // 50 minutes ago
int64(baseTime)-300*1000*4, // 20 minutes ago
300*1000, // 5 minute resolution
)
// The queries have to be relative to "now"
defaultClientConfig := Config{
BaseUrl: "https://blueflood.url",
TenantId: "square",
Ttls: make(map[string]int64),
Timeout: time.Millisecond,
FullResolutionOverlap: 14400,
GraphiteMetricConverter: &graphite,
TimeSource: timeSource,
}
regularQueryURL := fmt.Sprintf(
"https://blueflood.url/v2.0/square/views/some.key.value?from=%d&resolution=MIN5&select=numPoints%%2Caverage&to=%d",
queryTimerange.Start(),
queryTimerange.End()+queryTimerange.ResolutionMillis(),
)
regularResponse := fmt.Sprintf(`{
"unit": "unknown",
"values": [
{
"numPoints": 28,
"timestamp": %d,
"average": 100
},
{
"numPoints": 29,
"timestamp": %d,
"average": 142
},
{
"numPoints": 27,
"timestamp": %d,
"average": 138
},
{
"numPoints": 28,
"timestamp": %d,
"average": 182
}
],
"metadata": {
"limit": null,
"next_href": null,
"count": 4,
"marker": null
}
}`,
baseTime-300*1000*10, // 50 minutes ago
baseTime-300*1000*9, // 45 minutes ago
baseTime-300*1000*8, // 40 minutes ago
baseTime-300*1000*7, // 35 minutes ago
)
fakeHttpClient := mocks.NewFakeHttpClient()
fakeHttpClient.SetResponse(regularQueryURL, mocks.Response{regularResponse, 0, http.StatusOK})
// fakeHttpClient.SetResponse(fullResolutionQueryURL, mocks.Response{fullResolutionResponse, 0, http.StatusOK})
defaultClientConfig.HttpClient = fakeHttpClient
defaultClientConfig.TimeSource = timeSource
b := NewBlueflood(defaultClientConfig)
if err != nil {
t.Fatalf("timerange error: %s", err.Error())
}
userConfig := api.UserSpecifiableConfig{
IncludeRawData: true,
}
//.........这里部分代码省略.........
开发者ID:deveshmittal,项目名称:metrics,代码行数:101,代码来源:blueflood_test.go
示例16: TestFullResolutionDataFilling
//.........这里部分代码省略.........
"count": 4,
"marker": null
}
}`,
baseTime-300*1000*10, // 50 minutes ago
baseTime-300*1000*9, // 45 minutes ago
baseTime-300*1000*8, // 40 minutes ago
baseTime-300*1000*7, // 35 minutes ago
)
fullResolutionQueryURL := fmt.Sprintf(
"https://blueflood.url/v2.0/square/views/some.key.value?from=%d&resolution=FULL&select=numPoints%%2Caverage&to=%d",
baseTime-300*1000*10, // 50 minutes ago
baseTime-300*1000*3, // 15 minutes ago
)
fullResolutionResponse := fmt.Sprintf(`{
"unit": "unknown",
"values": [
{
"numPoints": 28,
"timestamp": %d,
"average": 13
},
{
"numPoints": 29,
"timestamp": %d,
"average": 16
},
{
"numPoints": 27,
"timestamp": %d,
"average": 19
},
{
"numPoints": 28,
"timestamp": %d,
"average": 27
}
],
"metadata": {
"limit": null,
"next_href": null,
"count": 4,
"marker": null
}
}`,
baseTime-300*1000*6, // 30m ago
baseTime-300*1000*5+17, // 25m ago with random shuffling
baseTime-300*1000*4+2821, // 20m ago with random shuffling
baseTime-300*1000*3, // 15m ago
)
fakeHttpClient := mocks.NewFakeHttpClient()
fakeHttpClient.SetResponse(regularQueryURL, mocks.Response{regularResponse, 0, http.StatusOK})
fakeHttpClient.SetResponse(fullResolutionQueryURL, mocks.Response{fullResolutionResponse, 0, http.StatusOK})
fakeApi := mocks.NewFakeApi()
fakeApi.AddPair(
api.TaggedMetric{
MetricKey: api.MetricKey("some.key"),
TagSet: api.ParseTagSet("tag=value"),
},
api.GraphiteMetric("some.key.value"),
)
b := NewBlueflood(defaultClientConfig).(*blueflood)
b.client = fakeHttpClient
queryTimerange, err := api.NewSnappedTimerange(
int64(baseTime)-300*1000*10, // 50 minutes ago
int64(baseTime)-300*1000*4, // 20 minutes ago
300*1000, // 5 minute resolution
)
if err != nil {
t.Fatalf("timerange error: %s", err.Error())
}
seriesList, err := b.FetchSingleSeries(api.FetchSeriesRequest{
Metric: api.TaggedMetric{
MetricKey: api.MetricKey("some.key"),
TagSet: api.ParseTagSet("tag=value"),
},
SampleMethod: api.SampleMean,
Timerange: queryTimerange,
API: fakeApi,
Cancellable: api.NewCancellable(),
})
if err != nil {
t.Fatalf("Expected success, but got error: %s", err.Error())
}
expected := []float64{100, 142, 138, 182, 13, 16, 19}
if len(seriesList.Values) != len(expected) {
t.Fatalf("Expected %+v but got %+v", expected, seriesList)
}
for i, expect := range expected {
if seriesList.Values[i] != expect {
t.Fatalf("Expected %+v but got %+v", expected, seriesList)
}
}
}
开发者ID:jmptrader,项目名称:metrics,代码行数:101,代码来源:blueflood_test.go
示例17: TestCommand_Select
func TestCommand_Select(t *testing.T) {
epsilon := 1e-10
fakeApi := mocks.NewFakeApi()
fakeApi.AddPair(api.TaggedMetric{"series_1", api.ParseTagSet("dc=west")}, emptyGraphiteName)
fakeApi.AddPair(api.TaggedMetric{"series_2", api.ParseTagSet("dc=east")}, emptyGraphiteName)
fakeApi.AddPair(api.TaggedMetric{"series_2", api.ParseTagSet("dc=west")}, emptyGraphiteName)
fakeApi.AddPair(api.TaggedMetric{"series_3", api.ParseTagSet("dc=west")}, emptyGraphiteName)
fakeApi.AddPair(api.TaggedMetric{"series_3", api.ParseTagSet("dc=east")}, emptyGraphiteName)
fakeApi.AddPair(api.TaggedMetric{"series_3", api.ParseTagSet("dc=north")}, emptyGraphiteName)
fakeApi.AddPair(api.TaggedMetric{"series_timeout", api.ParseTagSet("dc=west")}, emptyGraphiteName)
var fakeBackend fakeApiBackend
testTimerange, err := api.NewTimerange(0, 120, 30)
if err != nil {
t.Errorf("Invalid test timerange")
return
}
earlyTimerange, err := api.NewTimerange(0, 60, 30)
if err != nil {
t.Errorf("Invalid test timerange")
}
lateTimerange, err := api.NewTimerange(60, 120, 30)
if err != nil {
t.Errorf("Invalid test timerange")
}
for _, test := range []struct {
query string
expectError bool
expected api.SeriesList
}{
{"select does_not_exist from 0 to 120 resolution 30ms", true, api.SeriesList{}},
{"select series_1 from 0 to 120 resolution 30ms", false, api.SeriesList{
Series: []api.Timeseries{{
[]float64{1, 2, 3, 4, 5},
api.ParseTagSet("dc=west"),
}},
Timerange: testTimerange,
Name: "series_1",
}},
{"select series_timeout from 0 to 120 resolution 30ms", true, api.SeriesList{}},
{"select series_1 + 1 from 0 to 120 resolution 30ms", false, api.SeriesList{
Series: []api.Timeseries{{
[]float64{2, 3, 4, 5, 6},
api.ParseTagSet("dc=west"),
}},
Timerange: testTimerange,
Name: "",
}},
{"select series_1 * 2 from 0 to 120 resolution 30ms", false, api.SeriesList{
Series: []api.Timeseries{{
[]float64{2, 4, 6, 8, 10},
api.ParseTagSet("dc=west"),
}},
Timerange: testTimerange,
Name: "",
}},
{"select aggregate.max(series_2) from 0 to 120 resolution 30ms", false, api.SeriesList{
Series: []api.Timeseries{{
[]float64{3, 2, 3, 6, 5},
api.NewTagSet(),
}},
Timerange: testTimerange,
Name: "series_2",
}},
{"select (1 + series_2) | aggregate.max from 0 to 120 resolution 30ms", false, api.SeriesList{
Series: []api.Timeseries{{
[]float64{4, 3, 4, 7, 6},
api.NewTagSet(),
}},
Timerange: testTimerange,
Name: "series_2",
}},
{"select series_1 from 0 to 60 resolution 30ms", false, api.SeriesList{
Series: []api.Timeseries{{
[]float64{1, 2, 3},
api.ParseTagSet("dc=west"),
}},
Timerange: earlyTimerange,
Name: "series_1",
}},
{"select transform.timeshift(series_1,31ms) from 0 to 60 resolution 30ms", false, api.SeriesList{
Series: []api.Timeseries{{
[]float64{2, 3, 4},
api.ParseTagSet("dc=west"),
}},
Timerange: earlyTimerange,
Name: "series_1",
}},
{"select transform.timeshift(series_1,62ms) from 0 to 60 resolution 30ms", false, api.SeriesList{
Series: []api.Timeseries{{
[]float64{3, 4, 5},
api.ParseTagSet("dc=west"),
}},
Timerange: earlyTimerange,
Name: "series_1",
}},
{"select transform.timeshift(series_1,29ms) from 0 to 60 resolution 30ms", false, api.SeriesList{
Series: []api.Timeseries{{
[]float64{2, 3, 4},
api.ParseTagSet("dc=west"),
}},
//.........这里部分代码省略.........
开发者ID:jmptrader,项目名称:metrics,代码行数:101,代码来源:command_test.go
示例18: Test_Blueflood
func Test_Blueflood(t *testing.T) {
timerange, err := api.NewTimerange(12000, 13000, 1000)
if err != nil {
t.Fatalf("invalid testcase timerange")
return
}
defaultClientConfig := Config{
"https://blueflood.url",
"square",
make(map[string]int64),
time.Millisecond,
0,
}
// Not really MIN1440, but that's what default TTLs will get with the Timerange we use
defaultQueryUrl := "https://blueflood.url/v2.0/square/views/some.key.graphite?from=12000&resolution=MIN1440&select=numPoints%2Caverage&to=14000"
for _, test := range []struct {
name string
metricMap map[api.GraphiteMetric]api.TaggedMetric
queryMetric api.TaggedMetric
sampleMethod api.SampleMethod
timerange api.Timerange
clientConfig Config
queryUrl string
queryResponse string
queryResponseCode int
queryDelay time.Duration
expectedErrorCode api.BackendErrorCode
expectedSeriesList api.Timeseries
}{
{
name: "Success case",
metricMap: map[api.GraphiteMetric]api.TaggedMetric{
api.GraphiteMetric("some.key.graphite"): api.TaggedMetric{
MetricKey: api.MetricKey("some.key"),
TagSet: api.ParseTagSet("tag=value"),
},
},
queryMetric: api.TaggedMetric{
MetricKey: api.MetricKey("some.key"),
TagSet: api.ParseTagSet("tag=value"),
},
sampleMethod: api.SampleMean,
timerange: timerange,
queryUrl: defaultQueryUrl,
clientConfig: defaultClientConfig,
queryResponse: `{
"unit": "unknown",
"values": [
{
"numPoints": 1,
"timestamp": 12000,
"average": 5
},
{
"numPoints": 1,
"timestamp": 13000,
"average": 3
}
],
"metadata": {
"limit": null,
"next_href": null,
"count": 2,
"marker": null
}
}`,
expectedSeriesList: api.Timeseries{
Values: []float64{5, 3},
TagSet: api.ParseTagSet("tag=value"),
},
},
{
name: "Failure case - invalid JSON",
metricMap: map[api.GraphiteMetric]api.TaggedMetric{
api.GraphiteMetric("some.key.graphite"): api.TaggedMetric{
MetricKey: api.MetricKey("some.key"),
TagSet: api.ParseTagSet("tag=value"),
},
},
queryMetric: api.TaggedMetric{
MetricKey: api.MetricKey("some.key"),
TagSet: api.ParseTagSet("tag=value"),
},
sampleMethod: api.SampleMean,
timerange: timerange,
clientConfig: defaultClientConfig,
queryUrl: defaultQueryUrl,
queryResponse: `{invalid}`,
expectedErrorCode: api.FetchIOError,
},
{
name: "Failure case - HTTP error",
metricMap: map[api.GraphiteMetric]api.TaggedMetric{
api.GraphiteMetric("some.key.graphite"): api.TaggedMetric{
MetricKey: api.MetricKey("some.key"),
TagSet: api.ParseTagSet("tag=value"),
},
},
queryMetric: api.TaggedMetric{
//.........这里部分代码省略.........
开发者ID:jmptrader,项目名称:metrics,代码行数:101,代码来源:blueflood_test.go
示例19: Test_MetricName_GetTagSet_API
func Test_MetricName_GetTagSet_API(t *testing.T) {
a := assert.New(t)
cassandra, context := newCassandraAPI(t)
defer cleanAPI(t, cassandra)
if _, err := cassandra.GetAllTags("sample", context); err == nil {
t.Errorf("Cassandra API should error on fetching nonexistent metric")
}
metricNamesTests := []struct {
addTest bool
metricName string
tagString string
expectedTags map[string][]string // { metricName: [ tags ] }
}{
{true, "sample", "foo=bar1", map[string][]string{
"sample": []string{"foo=bar1"},
}},
{true, "sample", "foo=bar2", map[string][]string{
"sample": []string{"foo=bar1", "foo=bar2"},
}},
{true, "sample2", "foo=bar2", map[string][]string{
"sample": []string{"foo=bar1", "foo=bar2"},
"sample2": []string{"foo=bar2"},
}},
{false, "sample2", "foo=bar2", map[string][]string{
"sample": []string{"foo=bar1", "foo=bar2"},
}},
{false, "sample", "foo=bar1", map[string][]string{
"sample": []string{"foo=bar2"},
}},
}
for _, c := range metricNamesTests {
if c.addTest {
a.CheckError(cassandra.AddMetric(api.TaggedMetric{
api.MetricKey(c.metricName),
api.ParseTagSet(c.tagString),
}, context))
} else {
a.CheckError(cassandra.RemoveMetric(api.TaggedMetric{
api.MetricKey(c.metricName),
api.ParseTagSet(c.tagString),
}, context))
}
for k, v := range c.expectedTags {
if tags, err := cassandra.GetAllTags(api.MetricKey(k), context); err != nil {
t.Errorf("Error fetching tags")
} else {
stringTags := make([]string, len(tags))
for i, tag := range tags {
stringTags[i] = tag.Serialize()
}
a.EqInt(len(stringTags), len(v))
sort.Sort(sort.StringSlice(stringTags))
sort.Sort(sort.StringSlice(v))
a.Eq(stringTags, v)
}
}
}
}
开发者ID:deveshmittal,项目名称:metrics,代码行数:64,代码来源:cassandra_api_test.go
示例20: TestProfilerIntegration
|
请发表评论