Exemplo n.º 1
0
Arquivo: item.go Projeto: npk/trailk
func getItem(
	sID int64,
	stype string,
	trailk *context.Context,
	ctx appengine.Context,
	keyTool *key.Tool) (*item, error) {
	var err error
	var s *source.Source
	var bestest float64 = 0
	var worstest float64 = 0

	i := &item{}

	switch stype {
	case "Source":
		s, err = source.NewSources(trailk, ctx, keyTool).Source(sID).Get()

	case "Reference":
		s, err = source.NewSources(trailk, ctx, keyTool).Reference(sID).Get()

	default:
		return nil, ErrUnknownSourceType
	}

	if err != nil {
		return nil, err
	}

	i.Source = s

	for _, r := range s.Records(100) {
		if bestest < r.Max {
			bestest = r.Max
		}

		if worstest > r.Min || (r.Min != 0 && worstest == 0) {
			worstest = r.Min
		}

		i.Records = append(i.Records, &record{
			Average:  math.Ceil(r.Average / 1024),
			Max:      math.Ceil(r.Max / 1024),
			Min:      math.Ceil(r.Min / 1024),
			Timeout:  math.Ceil(float64(r.Timeout.Nanoseconds() / time.Millisecond.Nanoseconds())),
			Repeated: r.Repeated,
			Time:     r.Time,
		})
	}

	if len(i.Records) < 1 {
		i.EmptyRecord = true
	} else {
		i.EmptyRecord = false
	}

	i.Maxest = math.Ceil(bestest / 1024)
	i.Minest = math.Ceil(worstest / 1024)

	return i, nil
}