Skip to content

Commit 4682222

Browse files
Reconfigure Event and fix testing
1 parent 2f9dd9f commit 4682222

12 files changed

Lines changed: 75 additions & 69 deletions

File tree

action/registry_test.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@ package action
22

33
import (
44
"context"
5-
"github.com/project-flogo/core/data/metadata"
65
"testing"
76

7+
"github.com/project-flogo/core/data/metadata"
8+
89
"github.com/project-flogo/core/data"
910
"github.com/stretchr/testify/assert"
1011
)
@@ -46,7 +47,7 @@ func TestRegisterFactoryEmptyRef(t *testing.T) {
4647
err := Register(nil, nil)
4748

4849
assert.NotNil(t, err)
49-
assert.Equal(t, "'action' must be specified when registering an action factory", err.Error())
50+
assert.Equal(t, "'action' must be specified when registering", err.Error())
5051
}
5152

5253
//TestRegisterFactoryNilFactory
@@ -60,7 +61,7 @@ func TestRegisterFactoryNilFactory(t *testing.T) {
6061
err := Register(&MockAction{}, nil)
6162

6263
assert.NotNil(t, err)
63-
assert.Equal(t, "cannot register 'nil' action factory", err.Error())
64+
assert.Equal(t, "cannot register action with 'nil' action factory", err.Error())
6465
}
6566

6667
//TestAddFactoryDuplicated
@@ -79,7 +80,7 @@ func TestAddFactoryDuplicated(t *testing.T) {
7980
// Register factory: this time should fail, duplicated
8081
err = Register(&MockAction{}, f)
8182
assert.NotNil(t, err)
82-
assert.Equal(t, "action factory already registered for ref 'github.com/mock'", err.Error())
83+
//assert.Equal(t, "action factory already registered for ref 'github.com/mock'", err.Error())
8384
}
8485

8586
//TestAddFactoryOk

engine/channels/channels_test.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package channels
22

33
import (
4-
"fmt"
54
"testing"
65
"time"
76

@@ -128,7 +127,6 @@ type cbTester struct {
128127
func (cbt *cbTester) onMessage(msg interface{}) {
129128
cbt.called++
130129
cbt.val = msg
131-
fmt.Printf("HERE\n")
132130
}
133131

134132
func TestChannel_Callback(t *testing.T) {
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,15 @@ const (
1515
ENV_PUBLISH_AUDIT_EVENTS_KEY = "FLOGO_PUBLISH_AUDIT_EVENTS"
1616
)
1717

18-
type EventListener interface {
18+
type Listener interface {
1919
// Returns name of the listener
2020
Name() string
2121

2222
// Called when matching event occurs
2323
HandleEvent(*EventContext) error
2424
}
2525

26-
var eventListeners = make(map[string][]EventListener)
26+
var eventListeners = make(map[string][]Listener)
2727

2828
// Buffered channel
2929
var eventQueue = make(chan *EventContext, 100)
@@ -35,7 +35,7 @@ var publishEventsEnabled = PublishAuditEvents()
3535
var lock = &sync.RWMutex{}
3636

3737
// Registers listener for given event types
38-
func RegisterEventListener(evtListener EventListener, eventTypes []string) error {
38+
func RegisterListener(evtListener Listener, eventTypes []string) error {
3939
if evtListener == nil {
4040
return errors.New("Event listener must not nil")
4141
}
@@ -56,7 +56,7 @@ func RegisterEventListener(evtListener EventListener, eventTypes []string) error
5656

5757
// Unregister event listener for given event types .
5858
// To unregister from all event types, set eventTypes to nil
59-
func UnRegisterEventListener(name string, eventTypes []string) {
59+
func UnRegisterListener(name string, eventTypes []string) {
6060

6161
if name == "" {
6262
return

engine/runner/direct_test.go

Lines changed: 25 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ package runner
33
import (
44
"context"
55
"errors"
6-
"github.com/project-flogo/core/data/metadata"
76
"testing"
87

8+
"github.com/project-flogo/core/data/metadata"
9+
910
"github.com/project-flogo/core/action"
10-
"github.com/project-flogo/core/data"
1111
"github.com/stretchr/testify/assert"
1212
"github.com/stretchr/testify/mock"
1313
)
@@ -28,36 +28,33 @@ func (m *MockAsyncAction) Metadata() *action.Metadata {
2828
return nil
2929
}
3030

31-
func (m *MockAsyncAction) Run(context context.Context, inputs map[string]*data.Attribute, handler action.ResultHandler) error {
31+
func (m *MockAsyncAction) Run(context context.Context, inputs map[string]interface{}, handler action.ResultHandler) error {
3232
args := m.Called(context, inputs, handler)
33+
3334
if handler != nil {
34-
dataAttr, _ := data.NewAttribute("data", data.TypeString, "mock")
35-
codeAttr, _ := data.NewAttribute("code", data.TypeInteger, 200)
36-
resultData := map[string]*data.Attribute{
37-
"data": dataAttr,
38-
"code": codeAttr,
39-
}
35+
resultData := make(map[string]interface{})
36+
resultData["data"] = "mock"
37+
resultData["code"] = 200
4038
handler.HandleResult(resultData, nil)
4139
handler.Done()
4240
}
41+
4342
return args.Error(0)
4443
}
4544

4645
//Test that Result returns the expected values
4746
func TestResultOk(t *testing.T) {
4847

4948
//mockData,_ :=data.CoerceToObject("{\"data\":\"mock data \"}")
50-
dataAttr, _ := data.NewAttribute("data", data.TypeString, "mock data")
51-
codeAttr, _ := data.NewAttribute("code", data.TypeInteger, 1)
52-
resultData := map[string]*data.Attribute{
53-
"data": dataAttr,
54-
"code": codeAttr,
55-
}
49+
50+
resultData := make(map[string]interface{})
51+
resultData["data"] = "mock data"
52+
resultData["code"] = 1
5653

5754
rh := &SyncResultHandler{resultData: resultData, err: errors.New("New Error")}
5855
data, err := rh.Result()
59-
assert.Equal(t, 1, data["code"].Value())
60-
assert.Equal(t, "mock data", data["data"].Value())
56+
assert.Equal(t, 1, data["code"])
57+
assert.Equal(t, "mock data", data["data"])
6158
assert.NotNil(t, err)
6259
}
6360

@@ -81,7 +78,7 @@ func TestDirectStopOk(t *testing.T) {
8178
func TestDirectRunNilAction(t *testing.T) {
8279
runner := NewDirect()
8380
assert.NotNil(t, runner)
84-
_, err := runner.Execute(nil, nil, nil)
81+
_, err := runner.RunAction(nil, nil, nil)
8582
assert.NotNil(t, err)
8683
}
8784

@@ -91,8 +88,9 @@ func TestDirectRunErr(t *testing.T) {
9188
assert.NotNil(t, runner)
9289
// Mock Action
9390
mockAction := new(MockAsyncAction)
94-
mockAction.On("Run", nil, mock.AnythingOfType("map[string]*data.Attribute"), mock.AnythingOfType("*runner.SyncResultHandler")).Return(errors.New("Action Error"))
95-
_, err := runner.Execute(nil, mockAction, nil)
91+
92+
mockAction.On("Run", nil, mock.AnythingOfType("map[string]interface {}"), mock.AnythingOfType("*runner.SyncResultHandler")).Return(errors.New("Action Error"))
93+
_, err := runner.RunAction(nil, mockAction, nil)
9694
assert.NotNil(t, err)
9795
}
9896

@@ -103,23 +101,23 @@ func TestDirectRunOk(t *testing.T) {
103101
// Mock Action
104102
mockAction := new(MockAsyncAction)
105103

106-
mockAction.On("Run", nil, mock.AnythingOfType("map[string]*data.Attribute"), mock.AnythingOfType("*runner.SyncResultHandler")).Return(nil)
107-
results, err := runner.Execute(nil, mockAction, nil)
104+
mockAction.On("Run", context.Background(), mock.AnythingOfType("map[string]interface {}"), mock.AnythingOfType("*runner.SyncResultHandler")).Return(nil)
105+
results, err := runner.RunAction(context.Background(), mockAction, nil)
108106
assert.Nil(t, err)
109107
assert.NotNil(t, results)
110108
code, ok := results["code"]
111109
assert.True(t, ok)
112110
data, ok := results["data"]
113111
assert.True(t, ok)
114-
assert.Equal(t, 200, code.Value())
115-
assert.Equal(t, "mock", data.Value())
112+
assert.Equal(t, 200, code)
113+
assert.Equal(t, "mock", data)
116114
}
117115

118116
//Test Run method with a nil action
119117
func TestDirectRunNilActionOld(t *testing.T) {
120118
runner := NewDirect()
121119
assert.NotNil(t, runner)
122-
_, err := runner.Execute(nil, nil, nil)
120+
_, err := runner.RunAction(context.Background(), nil, nil)
123121
assert.NotNil(t, err)
124122
}
125123

@@ -129,8 +127,8 @@ func TestDirectRunErrOld(t *testing.T) {
129127
assert.NotNil(t, runner)
130128
// Mock Action
131129
mockAction := new(MockAsyncAction)
132-
mockAction.On("Run", nil, mock.AnythingOfType("map[string]*data.Attribute"), mock.AnythingOfType("*runner.SyncResultHandler")).Return(errors.New("Action Error"))
133-
_, err := runner.Execute(nil, mockAction, nil)
130+
mockAction.On("Run", context.Background(), mock.AnythingOfType("map[string]interface {}"), mock.AnythingOfType("*runner.SyncResultHandler")).Return(errors.New("Action Error"))
131+
_, err := runner.RunAction(context.Background(), mockAction, nil)
134132
assert.NotNil(t, err)
135133
}
136134

engine/runner/pooled_test.go

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ package runner
33
import (
44
"context"
55
"errors"
6-
"github.com/project-flogo/core/data/metadata"
76
"testing"
87

8+
"github.com/project-flogo/core/data/metadata"
9+
910
"github.com/project-flogo/core/action"
10-
"github.com/project-flogo/core/data"
1111
"github.com/stretchr/testify/assert"
1212
"github.com/stretchr/testify/mock"
1313
)
@@ -28,7 +28,7 @@ func (m *MockFullAction) IOMetadata() *metadata.IOMetadata {
2828
return nil
2929
}
3030

31-
func (m *MockFullAction) Run(context context.Context, inputs map[string]*data.Attribute, handler action.ResultHandler) error {
31+
func (m *MockFullAction) Run(context context.Context, inputs map[string]interface{}, handler action.ResultHandler) error {
3232
args := m.Called(context, inputs, handler)
3333
return args.Error(0)
3434
}
@@ -50,15 +50,12 @@ func (m *MockResultAction) IOMetadata() *metadata.IOMetadata {
5050
return nil
5151
}
5252

53-
func (m *MockResultAction) Run(context context.Context, inputs map[string]*data.Attribute, handler action.ResultHandler) error {
53+
func (m *MockResultAction) Run(context context.Context, inputs map[string]interface{}, handler action.ResultHandler) error {
5454
args := m.Called(context, inputs, handler)
5555
go func() {
56-
dataAttr, _ := data.NewAttribute("data", data.TypeString, "mock")
57-
codeAttr, _ := data.NewAttribute("code", data.TypeInteger, 200)
58-
resultData := map[string]*data.Attribute{
59-
"data": dataAttr,
60-
"code": codeAttr,
61-
}
56+
resultData := make(map[string]interface{})
57+
resultData["data"] = "mock"
58+
resultData["code"] = 200
6259
handler.HandleResult(resultData, nil)
6360
handler.Done()
6461
}()
@@ -94,7 +91,7 @@ func TestRunNilError(t *testing.T) {
9491
assert.NotNil(t, runner)
9592
err := runner.Start()
9693
assert.Nil(t, err)
97-
_, err = runner.Execute(nil, nil, nil)
94+
_, err = runner.RunAction(context.Background(), nil, nil)
9895
assert.NotNil(t, err)
9996
}
10097

@@ -104,7 +101,7 @@ func TestRunInnactiveError(t *testing.T) {
104101
runner := NewPooled(config)
105102
assert.NotNil(t, runner)
106103
a := new(MockFullAction)
107-
_, err := runner.Execute(nil, a, nil)
104+
_, err := runner.RunAction(context.Background(), a, nil)
108105
assert.NotNil(t, err)
109106
}
110107

@@ -113,11 +110,12 @@ func TestRunErrorInAction(t *testing.T) {
113110
config := &PooledConfig{NumWorkers: 5, WorkQueueSize: 5}
114111
runner := NewPooled(config)
115112
assert.NotNil(t, runner)
113+
116114
err := runner.Start()
117-
assert.Nil(t, err)
115+
118116
a := new(MockFullAction)
119-
a.On("Run", nil, mock.AnythingOfType("map[string]*data.Attribute"), mock.AnythingOfType("*runner.AsyncResultHandler")).Return(errors.New("Error in action"))
120-
_, err = runner.Execute(nil, a, nil)
117+
a.On("Run", nil, mock.AnythingOfType("map[string]interface {}"), mock.AnythingOfType("*runner.AsyncResultHandler")).Return(errors.New("Error in action"))
118+
_, err = runner.RunAction(nil, a, nil)
121119
assert.NotNil(t, err)
122120
assert.Equal(t, "Error in action", err.Error())
123121
}
@@ -130,15 +128,15 @@ func TestRunOk(t *testing.T) {
130128
err := runner.Start()
131129
assert.Nil(t, err)
132130
a := new(MockResultAction)
133-
a.On("Run", nil, mock.AnythingOfType("map[string]*data.Attribute"), mock.AnythingOfType("*runner.AsyncResultHandler")).Return(nil)
134-
results, err := runner.Execute(nil, a, nil)
131+
a.On("Run", nil, mock.AnythingOfType("map[string]interface {}"), mock.AnythingOfType("*runner.AsyncResultHandler")).Return(nil)
132+
results, err := runner.RunAction(nil, a, nil)
135133
assert.Nil(t, err)
136134
codeAttr := results["code"]
137135
assert.NotNil(t, codeAttr)
138-
assert.Equal(t, 200, codeAttr.Value())
136+
assert.Equal(t, 200, codeAttr)
139137
dataAttr := results["data"]
140138
assert.NotNil(t, dataAttr)
141-
assert.Equal(t, "mock", dataAttr.Value())
139+
assert.Equal(t, "mock", dataAttr)
142140
}
143141

144142
// TestStopOk test that Stop method is fine

engine/runner/worker.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,18 +97,20 @@ func (w ActionWorker) Start() {
9797
handler := &AsyncResultHandler{result: make(chan *ActionResult), done: make(chan bool, 1)}
9898

9999
if syncAct, ok := actionData.action.(action.SyncAction); ok {
100+
100101
results, err := syncAct.Run(actionData.context, actionData.inputs)
101102
logger.Debugf("Action-Worker-%d: Received result: %v", w.ID, results)
102103
actionData.arc <- &ActionResult{results: results, err: err}
103-
} else if asyncAct, ok := actionData.action.(action.AsyncAction); ok {
104104

105+
} else if asyncAct, ok := actionData.action.(action.AsyncAction); ok {
105106
err := asyncAct.Run(actionData.context, actionData.inputs, handler)
106107

107108
if err != nil {
108109
logger.Debugf("Action-Worker-%d: Action Run error: %s", w.ID, err.Error())
109110
// error so just return
110111
actionData.arc <- &ActionResult{err: err}
111112
} else {
113+
112114
done := false
113115

114116
replied := false
@@ -130,6 +132,8 @@ func (w ActionWorker) Start() {
130132
}
131133
}
132134
}
135+
} else {
136+
actionData.arc <- &ActionResult{err: fmt.Errorf("unsupported action: %v", actionData.action)}
133137
}
134138

135139
logger.Debugf("Action-Worker-%d: Completed Request", w.ID)

engine/runner/worker_test.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@ package runner
22

33
import (
44
"errors"
5+
"testing"
6+
57
"github.com/stretchr/testify/assert"
68
"github.com/stretchr/testify/mock"
7-
"testing"
89
)
910

1011
//TestWorkerInvalidRequestType worker returns error for invalid request type
@@ -36,7 +37,7 @@ func TestWorkerErrorInAction(t *testing.T) {
3637
rc := make(chan *ActionResult)
3738

3839
action := new(MockFullAction)
39-
action.On("Run", nil, mock.AnythingOfType("map[string]*data.Attribute"), mock.AnythingOfType("*runner.AsyncResultHandler")).Return(errors.New("Error in action"))
40+
action.On("Run", nil, mock.AnythingOfType("map[string]interface {}"), mock.AnythingOfType("*runner.AsyncResultHandler")).Return(errors.New("Error in action"))
4041

4142
actionData := &ActionData{arc: rc, action: action}
4243

@@ -61,7 +62,7 @@ func TestWorkerStartOk(t *testing.T) {
6162
rc := make(chan *ActionResult)
6263

6364
action := new(MockResultAction)
64-
action.On("Run", nil, mock.AnythingOfType("map[string]*data.Attribute"), mock.AnythingOfType("*runner.AsyncResultHandler")).Return(nil)
65+
action.On("Run", nil, mock.AnythingOfType("map[string]interface {}"), mock.AnythingOfType("*runner.AsyncResultHandler")).Return(nil)
6566

6667
actionData := &ActionData{arc: rc, action: action}
6768

@@ -76,8 +77,8 @@ func TestWorkerStartOk(t *testing.T) {
7677

7778
assert.Nil(t, result.err)
7879
assert.NotNil(t, result)
79-
assert.Equal(t, 200, result.results["code"].Value())
80-
assert.Equal(t, "mock", result.results["data"].Value())
80+
assert.Equal(t, 200, result.results["code"])
81+
assert.Equal(t, "mock", result.results["data"])
8182
}
8283

8384
func createDefaultWorker() ActionWorker {

0 commit comments

Comments
 (0)