示例#1
0
func TestSystemWithAllMock(t *testing.T) {
	l := listener.NewMockListener()
	l.StartListen()
	e := emitter.NewEmitter(l)
	as := actions.NewActions(nil)

	// Setup actions
	addr := &actions.ActionAddress{
		NewFunc: actions.NewMockAction,
	}
	actions.RegisterAction(addr)
	actions.ActivateActions()

	// Load actions to Emitter
	e.LoadActions(as.EnabledActions)

	// BroadCast message
	e.BroadCast()

	<-e.Stopped()
	<-actions.Actions()["mock"].(*actions.MockAction).Stopped

	assert.Len(t, actions.Actions()["mock"].(*actions.MockAction).Memory, 10, "produced message size")

	actions.ClearActions()
}
示例#2
0
func TestSystemWithDockerEvents(t *testing.T) {
	l := listener.NewMockListener()
	l.StartProduceDockerEvents()
	e := emitter.NewEmitter(l)
	as := actions.NewActions(nil).EnabledActions

	// Setup actions
	addr := &actions.ActionAddress{
		NewFunc: actions.NewMockAction,
	}
	actions.RegisterAction(addr)
	actions.ActivateActions()

	// Load actions to Emitter
	e.LoadActions(as)

	// BroadCast message
	e.BroadCast()

	<-e.Stopped()
	<-actions.Actions()["mock"].(*actions.MockAction).Stopped

	assert.Len(t, actions.Actions()["mock"].(*actions.MockAction).Memory, 10, "produced message size")

	event := actions.Actions()["mock"].(*actions.MockAction).Memory[0].(*docker.APIEvents)

	assert.Equal(t, event.From, "base:latest")

	actions.ClearActions()
}
示例#3
0
func TestBroadCast(t *testing.T) {
	l := listener.NewMockListener()

	e := NewEmitter(l)

	e.actions = make(map[string]actions.Action)

	msg := "message"
	actionNum := 10

	var count uint64

	var wg sync.WaitGroup

	// Prepare mock actions
	for i := 1; i <= actionNum; i++ {
		actionName := fmt.Sprintf("receiver_%d", i)
		a := actions.NewMockAction().(*actions.MockAction)
		a.SetName(actionName)

		e.actions[fmt.Sprintf("mock_%d", i)] = a
	}

	for i := 1; i <= actionNum; i++ {
		wg.Add(1)
		go func(j int) {
			defer wg.Done()
			select {
			case ev, ok := <-e.actions[fmt.Sprintf("mock_%d", j)].Ch():
				if ok {
					assert.Equal(t, ev, msg, "received broadcasted message")
					atomic.AddUint64(&count, 1)
				}
			}
		}(i)
	}

	e.BroadCast()
	e.l.(*listener.MockListener).Ch <- msg
	close(e.l.Stopped())

	wg.Wait()

	expected := strconv.Itoa(actionNum)
	actual := strconv.FormatUint(atomic.LoadUint64(&count), 10)

	assert.Equal(t, expected, actual, "All Actions received message")
}
示例#4
0
文件: agent_test.go 项目: ainoya/fune
func TestStart(t *testing.T) {
	cfg := &AgentConfig{}
	agent, _ := NewAgent(cfg)
	cfg.EnabledActions = []string{"mock"}

	agent.listener = listener.NewMockListener()
	agent.emitter = emitter.NewEmitter(agent.listener)

	agent.Start()

	<-agent.emitter.Stopped()
	<-actions.Actions()["mock"].(*actions.MockAction).Stopped

	assert.Len(t, actions.Actions()["mock"].(*actions.MockAction).Memory, 10, "produced message size")

	actions.ClearActions()
}