Ejemplo n.º 1
0
func valueString(ts *ts.TimeSeries, start, end time.Time) (string, error) {
	s := bytes.NewBufferString("[ '")
	if _, err := s.WriteString(ts.Key()); err != nil {
		return "", err
	}
	if _, err := s.WriteString("', "); err != nil {
		return "", err
	}
	for cursor, step := start, ts.Step(); cursor.Before(end); cursor = cursor.Add(step) {
		v, _ := ts.GetAt(cursor)
		if _, err := s.WriteString(strconv.FormatFloat(v, 'E', 2, 64)); err != nil {
			return "", err
		}
		if err := s.WriteByte(','); err != nil {
			return "", err
		}
		if step == 0 {
			break
		}
	}
	if s.Len() > 0 {
		s.Truncate(s.Len() - 1)
	}
	if err := s.WriteByte(']'); err != nil {
		return "", err
	}
	return s.String(), nil
}
Ejemplo n.º 2
0
func timeString(ts *ts.TimeSeries) (string, error) {
	s := bytes.NewBufferString("[ 'x', ")

	cursor := ts.Start()
	step := ts.Step()
	for _, _ = range ts.Data() {
		if err := s.WriteByte('\''); err != nil {
			return "", err
		}
		if _, err := s.WriteString(cursor.Format("20060102 15:04:05")); err != nil {
			return "", err
		}
		if _, err := s.WriteString("',"); err != nil {
			return "", err
		}
		cursor = cursor.Add(step)
	}
	if s.Len() > 0 {
		s.Truncate(s.Len() - 1)
	}
	if err := s.WriteByte(']'); err != nil {
		return "", err
	}
	return s.String(), nil
}
Ejemplo n.º 3
0
func (carbon *Carbon) Write(ts *ts.TimeSeries) {
	carbon.Init()

	var buffer bytes.Buffer

	it := ts.IteratorTimeValue()
	for t, v, ok := it.Next(); ok; t, v, ok = it.Next() {
		fmt.Fprintf(&buffer, "%s %f %d\n", ts.Key(), v, t.Unix())
	}

	go func() {
		carbon.feed <- buffer
	}()
}
func checkTimeSeries(t *testing.T, got *ts.TimeSeries, exp *TestSeries) {
	if got == nil {
		t.Errorf("FAIL(TimeSeries): can't be nil")
		return
	}
	if exp == nil {
		t.Errorf("FAIL(TimeSeries): can't be nil")
		return
	}
	checkKey(t, got.Key(), exp.Key)
	checkStart(t, got.Start(), exp.Start)
	checkEnd(t, got.End(), exp.End)
	checkStep(t, got.Step(), exp.Step)
	checkData(t, got.Data(), exp.Data)
}
Ejemplo n.º 5
0
func Last(ts *ts.TimeSeries, predicate func(float64) bool) bool {
	if ts == nil {
		return false
	}
	last, ok := ts.Iterator().Last()
	if !ok {
		return false
	}
	return predicate(last)
}
Ejemplo n.º 6
0
func Any(ts *ts.TimeSeries, predicate func(float64) bool) bool {
	if ts == nil {
		return false
	}
	it := ts.Iterator()
	for val, ok := it.Next(); ok; val, ok = it.Next() {
		if predicate(val) {
			return true
		}
	}
	return false
}
Ejemplo n.º 7
0
func First(ts *ts.TimeSeries, predicate func(float64) bool) (time.Time, float64, bool) {
	if ts == nil {
		return time.Time{}, NaN, false
	}
	it := ts.IteratorTimeValue()
	for t, v, ok := it.Next(); ok; t, v, ok = it.Next() {
		if predicate(v) {
			return t, v, true
		}
	}
	return time.Time{}, 0, false
}
Ejemplo n.º 8
0
func ChartSingle(ts *ts.TimeSeries) (template.JS, error) {
	if ts == nil {
		return template.JS(""), nil
	}
	t, err := timeString(ts)
	if err != nil {
		return "", err
	}
	s := bytes.NewBufferString(t)
	if err := s.WriteByte(','); err != nil {
		return "", err
	}

	v, err := valueString(ts, ts.Start(), ts.End())
	if err != nil {
		return "", err
	}
	if _, err := s.WriteString(v); err != nil {
		return "", err
	}
	return template.JS(s.String()), nil
}