Skip to content

Commit

Permalink
Add TestSpec events (#2280)
Browse files Browse the repository at this point in the history
* Adding logic to find events

* Added tests to event emitter on Test Spec validations

* Updating constants

* Fixing mappings

* Adding PR suggestions

* Revert HTTP mapping change
  • Loading branch information
danielbdias committed Mar 30, 2023
1 parent 89cf156 commit de26d24
Show file tree
Hide file tree
Showing 4 changed files with 429 additions and 0 deletions.
10 changes: 10 additions & 0 deletions server/executor/assertion_runner.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (

"github.com/kubeshop/tracetest/server/expression"
"github.com/kubeshop/tracetest/server/model"
"github.com/kubeshop/tracetest/server/model/events"
"github.com/kubeshop/tracetest/server/subscription"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/propagation"
Expand Down Expand Up @@ -36,6 +37,7 @@ type defaultAssertionRunner struct {
inputChannel chan AssertionRequest
exitChannel chan bool
subscriptionManager *subscription.Manager
eventEmitter EventEmitter
}

var _ WorkerPool = &defaultAssertionRunner{}
Expand All @@ -54,6 +56,7 @@ func NewAssertionRunner(
assertionExecutor: assertionExecutor,
inputChannel: make(chan AssertionRequest, 1),
subscriptionManager: subscriptionManager,
eventEmitter: eventEmitter,
}
}

Expand Down Expand Up @@ -103,19 +106,26 @@ func (e *defaultAssertionRunner) startWorker() {

func (e *defaultAssertionRunner) runAssertionsAndUpdateResult(ctx context.Context, request AssertionRequest) (model.Run, error) {
log.Printf("[AssertionRunner] Test %s Run %d: Starting\n", request.Test.ID, request.Run.ID)

e.eventEmitter.Emit(ctx, events.TestSpecsRunStart(request.Test.ID, request.Run.ID))

run, err := e.executeAssertions(ctx, request)
if err != nil {
log.Printf("[AssertionRunner] Test %s Run %d: error executing assertions: %s\n", request.Test.ID, request.Run.ID, err.Error())
e.eventEmitter.Emit(ctx, events.TestSpecsRunError(request.Test.ID, request.Run.ID, err))
return model.Run{}, e.updater.Update(ctx, run.Failed(err))
}
log.Printf("[AssertionRunner] Test %s Run %d: Success. pass: %d, fail: %d\n", request.Test.ID, request.Run.ID, run.Pass, run.Fail)

err = e.updater.Update(ctx, run)
if err != nil {
log.Printf("[AssertionRunner] Test %s Run %d: error updating run: %s\n", request.Test.ID, request.Run.ID, err.Error())
e.eventEmitter.Emit(ctx, events.TestSpecsRunError(request.Test.ID, request.Run.ID, err))
return model.Run{}, fmt.Errorf("could not save result on database: %w", err)
}

e.eventEmitter.Emit(ctx, events.TestSpecsRunSuccess(request.Test.ID, request.Run.ID))

return run, nil
}

Expand Down
Loading

0 comments on commit de26d24

Please sign in to comment.