Skip to content

Commit

Permalink
feat(server): add resolved trigger to test run object (#3119)
Browse files Browse the repository at this point in the history
* feat(server): add resolved trigger to test run object

* fix fe test run model

---------

Co-authored-by: Jorge Padilla <jorge.esteban.padilla@gmail.com>
  • Loading branch information
mathnogueira and jorgeepc committed Sep 1, 2023
1 parent 10c8d97 commit d8d1ba8
Show file tree
Hide file tree
Showing 12 changed files with 126 additions and 27 deletions.
2 changes: 2 additions & 0 deletions api/tests.yaml
Expand Up @@ -197,6 +197,8 @@ components:
format: date-time
variableSet:
$ref: "./variableSets.yaml#/components/schemas/VariableSet"
resolvedTrigger:
$ref: "./triggers.yaml#/components/schemas/Trigger"
triggerResult:
$ref: "./triggers.yaml#/components/schemas/TriggerResult"
trace:
Expand Down
36 changes: 36 additions & 0 deletions cli/openapi/model_test_run.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions server/executor/runner.go
Expand Up @@ -146,6 +146,9 @@ func (r persistentRunner) ProcessItem(ctx context.Context, job Job) {
r.handleError(job.Run, err)
}

run.ResolvedTrigger = resolvedTest.Trigger
r.handleDBError(run, r.updater.Update(ctx, run))

err = r.eventEmitter.Emit(ctx, events.TriggerResolveSuccess(job.Run.TestID, job.Run.ID))
if err != nil {
r.handleError(job.Run, err)
Expand Down
24 changes: 24 additions & 0 deletions server/executor/workers/trigger_preparation_worker.go
@@ -0,0 +1,24 @@
package workers

import (
"context"

"github.com/kubeshop/tracetest/server/executor"
triggerer "github.com/kubeshop/tracetest/server/executor/trigger"
"github.com/kubeshop/tracetest/server/model"
"github.com/kubeshop/tracetest/server/test"
)

type EventEmitter interface {
Emit(ctx context.Context, event model.TestRunEvent) error
}

type TriggerPreparationWorker struct {
runRepository test.RunRepository
eventEmiter EventEmitter
triggers *triggerer.Registry
}

func (w *TriggerPreparationWorker) ProcessItem(ctx context.Context, job executor.Job) {

}
1 change: 1 addition & 0 deletions server/http/mappings/tests.go
Expand Up @@ -281,6 +281,7 @@ func (m OpenAPI) Run(in *test.Run) openapi.TestRun {
ServiceTriggerCompletedAt: in.ServiceTriggerCompletedAt,
ObtainedTraceAt: in.ObtainedTraceAt,
CompletedAt: in.CompletedAt,
ResolvedTrigger: m.Trigger(in.ResolvedTrigger),
TriggerResult: m.TriggerResult(in.TriggerResult),
TestVersion: int32(in.TestVersion),
Trace: m.Trace(in.Trace),
Expand Down
@@ -0,0 +1,3 @@
ALTER TABLE
test_runs
DROP COLUMN resolved_trigger;
4 changes: 4 additions & 0 deletions server/migrations/32_add_resolved_trigger_to_test_run.up.sql
@@ -0,0 +1,4 @@
ALTER TABLE
test_runs
ADD
COLUMN resolved_trigger jsonb;
5 changes: 5 additions & 0 deletions server/openapi/model_test_run.go
Expand Up @@ -47,6 +47,8 @@ type TestRun struct {

VariableSet VariableSet `json:"variableSet,omitempty"`

ResolvedTrigger Trigger `json:"resolvedTrigger,omitempty"`

TriggerResult TriggerResult `json:"triggerResult,omitempty"`

Trace Trace `json:"trace,omitempty"`
Expand All @@ -71,6 +73,9 @@ func AssertTestRunRequired(obj TestRun) error {
if err := AssertVariableSetRequired(obj.VariableSet); err != nil {
return err
}
if err := AssertTriggerRequired(obj.ResolvedTrigger); err != nil {
return err
}
if err := AssertTriggerResultRequired(obj.TriggerResult); err != nil {
return err
}
Expand Down
58 changes: 38 additions & 20 deletions server/test/run_repository.go
Expand Up @@ -106,6 +106,7 @@ INSERT INTO test_runs (
"span_id",
-- result info
"resolved_trigger",
"trigger_results",
"test_results",
"trace",
Expand Down Expand Up @@ -144,19 +145,20 @@ INSERT INTO test_runs (
$9, -- span_id
-- result info
$10, -- trigger_results
$10, -- resolved_trigger
$11, -- trigger_results
'{}', -- test_results
$11, -- trace
$12, -- trace
'[]', -- outputs
NULL, -- last_error
0, -- pass
0, -- fail
$12, -- metadata
$13, -- variable_set
$14, -- linter
$15, -- required_gates_result
$16 -- tenant_id
$13, -- metadata
$14, -- variable_set
$15, -- linter
$16, -- required_gates_result
$17 -- tenant_id
)
RETURNING "id"`

Expand All @@ -168,6 +170,11 @@ func (r *runRepository) CreateRun(ctx context.Context, test Test, run Run) (Run,
run.CreatedAt = time.Now()
}

jsonResolvedTrigger, err := json.Marshal(run.ResolvedTrigger)
if err != nil {
return Run{}, fmt.Errorf("resolved trigger encoding error: %w", err)
}

jsonTriggerResults, err := json.Marshal(run.TriggerResult)
if err != nil {
return Run{}, fmt.Errorf("trigger results encoding error: %w", err)
Expand Down Expand Up @@ -224,6 +231,7 @@ func (r *runRepository) CreateRun(ctx context.Context, test Test, run Run) (Run,
run.State,
run.TraceID.String(),
run.SpanID.String(),
jsonResolvedTrigger,
jsonTriggerResults,
jsonTrace,
jsonMetadata,
Expand Down Expand Up @@ -257,27 +265,33 @@ UPDATE test_runs SET
"span_id" = $7,
-- result info
"trigger_results" = $8,
"test_results" = $9,
"trace" = $10,
"outputs" = $11,
"last_error" = $12,
"pass" = $13,
"fail" = $14,
"metadata" = $15,
"variable_set" = $18,
"resolved_trigger" = $8,
"trigger_results" = $9,
"test_results" = $10,
"trace" = $11,
"outputs" = $12,
"last_error" = $13,
"pass" = $14,
"fail" = $15,
"metadata" = $16,
"variable_set" = $19,
--- linter
"linter" = $19,
"linter" = $20,
--- required gates
"required_gates_result" = $20
"required_gates_result" = $21
WHERE id = $16 AND test_id = $17
WHERE id = $17 AND test_id = $18
`

func (r *runRepository) UpdateRun(ctx context.Context, run Run) error {
jsonResolvedTrigger, err := json.Marshal(run.ResolvedTrigger)
if err != nil {
return fmt.Errorf("resolved trigger encoding error: %w", err)
}

jsonTriggerResults, err := json.Marshal(run.TriggerResult)
if err != nil {
return fmt.Errorf("trigger results encoding error: %w", err)
Expand Down Expand Up @@ -336,6 +350,7 @@ func (r *runRepository) UpdateRun(ctx context.Context, run Run) error {
run.State,
run.TraceID.String(),
run.SpanID.String(),
jsonResolvedTrigger,
jsonTriggerResults,
jsonTestResults,
jsonTrace,
Expand Down Expand Up @@ -412,6 +427,7 @@ const (
"span_id",
-- result info
"resolved_trigger",
"trigger_results",
"test_results",
"trace",
Expand Down Expand Up @@ -544,6 +560,7 @@ func readRunRow(row scanner) (Run, error) {
r := Run{}

var (
jsonResolvedTrigger,
jsonTriggerResults,
jsonTestResults,
jsonTrace,
Expand Down Expand Up @@ -573,6 +590,7 @@ func readRunRow(row scanner) (Run, error) {
&r.State,
&traceID,
&spanID,
&jsonResolvedTrigger,
&jsonTriggerResults,
&jsonTestResults,
&jsonTrace,
Expand Down
15 changes: 8 additions & 7 deletions server/test/test_entities.go
Expand Up @@ -113,13 +113,14 @@ type (
SpanID trace.SpanID

// result info
TriggerResult trigger.TriggerResult
Results *RunResults
Trace *traces.Trace
Outputs maps.Ordered[string, RunOutput]
LastError error
Pass int
Fail int
ResolvedTrigger trigger.Trigger
TriggerResult trigger.TriggerResult
Results *RunResults
Trace *traces.Trace
Outputs maps.Ordered[string, RunOutput]
LastError error
Pass int
Fail int

Metadata RunMetadata

Expand Down
1 change: 1 addition & 0 deletions web/src/models/TestRun.model.ts
Expand Up @@ -27,6 +27,7 @@ type TestRun = Model<
triggerTime: number;
lastErrorState?: string;
trigger?: TTriggerSchemas['Trigger'];
resolvedTrigger?: TTriggerSchemas['Trigger'];
triggerResult?: TriggerResult;
outputs?: TestRunOutput[];
variableSet?: VariableSet;
Expand Down
1 change: 1 addition & 0 deletions web/src/types/Generated.types.ts
Expand Up @@ -1846,6 +1846,7 @@ export interface external {
/** Format: date-time */
completedAt?: string;
variableSet?: external["variableSets.yaml"]["components"]["schemas"]["VariableSet"];
resolvedTrigger?: external["triggers.yaml"]["components"]["schemas"]["Trigger"];
triggerResult?: external["triggers.yaml"]["components"]["schemas"]["TriggerResult"];
trace?: external["trace.yaml"]["components"]["schemas"]["Trace"];
result?: external["tests.yaml"]["components"]["schemas"]["AssertionResults"];
Expand Down

0 comments on commit d8d1ba8

Please sign in to comment.