Ejemplo n.º 1
0
func (tsk *CPUCruncher) Configure(ctx fwk.Context) error {
	var err error

	for _, input := range tsk.inputs {
		if input == "" {
			continue
		}
		err = tsk.DeclInPort(input, reflect.TypeOf(int64(0)))
		if err != nil {
			return err
		}
	}

	for _, output := range tsk.outputs {
		if output == "" {
			continue
		}
		err = tsk.DeclOutPort(output, reflect.TypeOf(int64(0)))
		if err != nil {
			return err
		}
	}

	if len(tsk.cpus) <= 0 {
		msg := ctx.Msg()
		msg.Errorf("invalid cpu-timings list: %v\n", tsk.cpus)
		return fwk.Errorf("invalid cpu-timings")
	}

	return err
}
Ejemplo n.º 2
0
Archivo: htask.go Proyecto: postfix/fwk
func (tsk *testhsvc) StopTask(ctx fwk.Context) error {
	var err error

	h := tsk.h1d.Hist
	if h.Entries() != *evtmax {
		return fwk.Errorf("expected %d entries. got=%d", *evtmax, h.Entries())
	}
	mean := h.Mean()
	if mean != 4.5 {
		return fwk.Errorf("expected mean=%v. got=%v", 4.5, mean)
	}

	rms := h.RMS()
	if rms != 2.8722813232690143 {
		return fwk.Errorf("expected RMS=%v. got=%v", 2.8722813232690143, rms)
	}
	msg := ctx.Msg()
	msg.Infof("histo[%s]: entries=%v mean=%v RMS=%v\n",
		tsk.h1d.ID,
		h.Entries(),
		h.Mean(),
		h.RMS(),
	)

	return err
}
Ejemplo n.º 3
0
func (tsk *task3) Configure(ctx fwk.Context) error {
	var err error
	msg := ctx.Msg()
	msg.Infof("configure...\n")

	err = tsk.DeclOutPort(tsk.parts, reflect.TypeOf([]int{}))
	if err != nil {
		return err
	}

	msg.Infof("configure... [done]\n")
	return err
}
Ejemplo n.º 4
0
func (tsk *task3) Process(ctx fwk.Context) error {
	msg := ctx.Msg()
	msg.Infof("proc...\n")
	store := ctx.Store()

	parts := make([]int, 0)
	err := store.Put(tsk.parts, parts)
	if err != nil {
		return err
	}

	return nil
}
Ejemplo n.º 5
0
func (tsk *task2) Process(ctx fwk.Context) error {
	store := ctx.Store()
	msg := ctx.Msg()
	v, err := store.Get(tsk.input)
	if err != nil {
		return err
	}
	i := v.(int64)
	o := tsk.fct(i)
	err = store.Put(tsk.output, o)
	if err != nil {
		return err
	}

	msg.Infof("proc... (id=%d|%d) => [%d -> %d]\n", ctx.ID(), ctx.Slot(), i, o)
	return nil
}
Ejemplo n.º 6
0
func (tsk *reducer) StopTask(ctx fwk.Context) error {
	var err error

	tsk.mux.RLock()
	sum := tsk.sum
	nevts := tsk.nevts
	tsk.mux.RUnlock()

	msg := ctx.Msg()
	if sum != tsk.exp {
		msg.Errorf("expected sum=%v. got=%v (nevts=%d)\n", tsk.exp, sum, nevts)
		return fwk.Errorf("%s: expected sum=%v. got=%v (nevts=%d)", tsk.Name(), tsk.exp, sum, nevts)
	}
	msg.Debugf("expected sum=%v. got=%v (all GOOD) (nevts=%d)\n", tsk.exp, sum, nevts)

	return err
}
Ejemplo n.º 7
0
func (tsk *task2) Configure(ctx fwk.Context) error {
	var err error
	msg := ctx.Msg()
	msg.Infof("configure...\n")

	err = tsk.DeclInPort(tsk.input, reflect.TypeOf(int64(1)))
	if err != nil {
		return err
	}

	err = tsk.DeclOutPort(tsk.output, reflect.TypeOf(int64(1)))
	if err != nil {
		return err
	}

	msg.Infof("configure... [done]\n")
	return err
}
Ejemplo n.º 8
0
func (tsk *task1) Process(ctx fwk.Context) error {
	var err error
	msg := ctx.Msg()
	msg.Infof("proc... (id=%d|%d) => [%d, %d]\n", ctx.ID(), ctx.Slot(), tsk.i1, tsk.i2)
	store := ctx.Store()

	err = store.Put(tsk.i1prop, tsk.i1)
	if err != nil {
		return err
	}

	err = store.Put(tsk.i2prop, tsk.i2)
	if err != nil {
		return err
	}

	return nil
}
Ejemplo n.º 9
0
func (tsk *reducer) Process(ctx fwk.Context) error {
	var err error

	tsk.mux.Lock()
	tsk.nevts += 1
	tsk.mux.Unlock()

	store := ctx.Store()
	v, err := store.Get(tsk.input)
	if err != nil {
		return err
	}

	val := v.(int64)
	tsk.mux.Lock()
	tsk.sum += val
	sum := tsk.sum
	tsk.mux.Unlock()

	msg := ctx.Msg()
	msg.Infof("sum=%d (id=%d|%d)\n", sum, ctx.ID(), ctx.Slot())
	return err
}
Ejemplo n.º 10
0
func (tsk *task2) StopTask(ctx fwk.Context) error {
	msg := ctx.Msg()
	msg.Infof("stop...\n")
	return nil
}
Ejemplo n.º 11
0
func (tsk *task3) StartTask(ctx fwk.Context) error {
	msg := ctx.Msg()
	msg.Infof("start...\n")
	return nil
}
Ejemplo n.º 12
0
func (svc *svc1) StopSvc(ctx fwk.Context) error {
	var err error
	msg := ctx.Msg()
	msg.Infof("-- stop svc --\n")
	return err
}