コード例 #1
0
ファイル: perf_test.go プロジェクト: warmfusion/cache
		filter.InitGraphiteMetrics()

		patterns = filter.NewPatternStorage()
		patterns.DoRefresh(db)
		cache = &filter.CacheStorage{}
		cache.BuildRetentions(bufio.NewScanner(strings.NewReader(testRetentions)))

		testMetricsLines = generateMetrics(patterns, 100000)
	})

	Context("Without saving", func() {
		Measure("metrics processing", func(b Benchmarker) {
			runtime := b.Time("runtime", func() {
				for _, line := range testMetricsLines {
					patterns.ProcessIncomingMetric([]byte(line))
				}
			})
			Expect(runtime.Seconds()).Should(BeNumerically("<", 1), "metrics processing shouldn't take too long.")
			b.RecordValue("metrics per sec", float64(len(testMetricsLines))/runtime.Seconds())
			filter.UpdateProcessingMetrics()
			b.RecordValue("matched", float64(filter.MatchingMetricsReceived.Count()))
		}, 10)
	})
})

func generateMetrics(patterns *filter.PatternStorage, count int) []string {

	result := make([]string, 0, count)

	timestamp := time.Now()