Skip to content

Commit

Permalink
Merge pull request #12 from torresashjian/test_engine_worker
Browse files Browse the repository at this point in the history
Add worker tests
  • Loading branch information
Frank Martinez authored Nov 29, 2016
2 parents ece4539 + 4b9aaef commit 9bd8f43
Show file tree
Hide file tree
Showing 2 changed files with 93 additions and 0 deletions.
7 changes: 7 additions & 0 deletions engine/runner/worker.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package runner

import (
"context"
"fmt"

"github.com/TIBCOSoftware/flogo-lib/core/action"
)
Expand Down Expand Up @@ -78,6 +79,12 @@ func (w ActionWorker) Start() {
log.Debugf("worker-%d: Received Request\n", w.ID)

switch work.ReqType {
default:

err := fmt.Errorf("Unsupported work request type: '%d'", work.ReqType)
actionData := work.actionData
actionData.rc <- &ActionResult{err: err}

case RtRun:

actionData := work.actionData
Expand Down
86 changes: 86 additions & 0 deletions engine/runner/worker_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
package runner

import (
"errors"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
"testing"
)

//TestWorkerInvalidRequestType worker returns error for invalid request type
func TestWorkerInvalidRequestType(t *testing.T) {
worker := createDefaultWorker()
worker.Start()

rc := make(chan *ActionResult)
actionData := &ActionData{rc: rc}

// Create some work
invalidWorkRequest := ActionWorkRequest{ReqType: -1, actionData: actionData}

// Send some work
worker.Work <- invalidWorkRequest

// Check work result
result := <-actionData.rc

assert.NotNil(t, result.err)
assert.Equal(t, "Unsupported work request type: '-1'", result.err.Error())
}

//TestWorkerErrorInAction returns an error when the action returns error
func TestWorkerErrorInAction(t *testing.T) {
worker := createDefaultWorker()
worker.Start()

rc := make(chan *ActionResult)

action := new(MockFullAction)
action.On("Run", nil, mock.AnythingOfType("string"), nil, mock.AnythingOfType("*runner.AsyncResultHandler")).Return(errors.New("Error in action"))

actionData := &ActionData{rc: rc, action: action}

// Create some work
errorWorkRequest := ActionWorkRequest{ReqType: RtRun, actionData: actionData}

// Send some work
worker.Work <- errorWorkRequest

// Check work result
result := <-actionData.rc

assert.NotNil(t, result.err)
assert.Equal(t, "Error in action", result.err.Error())
}

//TestWorkerStartOk
func TestWorkerStartOk(t *testing.T) {
worker := createDefaultWorker()
worker.Start()

rc := make(chan *ActionResult)

action := new(MockResultAction)
action.On("Run", nil, mock.AnythingOfType("string"), nil, mock.AnythingOfType("*runner.AsyncResultHandler")).Return(nil)

actionData := &ActionData{rc: rc, action: action}

// Create some work
okWorkRequest := ActionWorkRequest{ReqType: RtRun, actionData: actionData}

// Send some work
worker.Work <- okWorkRequest

// Check work result
result := <-actionData.rc

assert.Nil(t, result.err)
assert.NotNil(t, result)
assert.Equal(t, "mock", result.data)
}

func createDefaultWorker() ActionWorker {
runner := NewDirect()
queue := make(chan chan ActionWorkRequest, 2)
return NewWorker(1, runner, queue)
}

0 comments on commit 9bd8f43

Please sign in to comment.