Skip to content

Commit

Permalink
[Backend] Filter run on status (#3959)
Browse files Browse the repository at this point in the history
* filter run on status

* unit test

* add assertion

* one more test for not equal

* verify generated args as well

* assertion
  • Loading branch information
jingzhang36 authored and Bobgy committed Jun 16, 2020
1 parent e7beae4 commit 3d41d5d
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 0 deletions.
1 change: 1 addition & 0 deletions backend/src/apiserver/model/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ go_test(
srcs = [
"pipeline_version_test.go",
"resource_reference_test.go",
"run_test.go",
],
embed = [":go_default_library"],
importpath = "github.com/kubeflow/pipelines/backend/src/apiserver/model",
Expand Down
1 change: 1 addition & 0 deletions backend/src/apiserver/model/run.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ var runAPIToModelFieldMap = map[string]string{
"description": "Description",
"scheduled_at": "ScheduledAtInSec",
"storage_state": "StorageState",
"status": "Conditions",
}

// APIToModelFieldMap returns a map from API names to field names for model Run.
Expand Down
51 changes: 51 additions & 0 deletions backend/src/apiserver/model/run_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package model

import (
"testing"

sq "github.com/Masterminds/squirrel"
api "github.com/kubeflow/pipelines/backend/api/go_client"
"github.com/kubeflow/pipelines/backend/src/apiserver/list"
"github.com/stretchr/testify/assert"
)

// Test model name usage in sorting clause
func TestAddStatusFilterToSelect(t *testing.T) {
listable := &Run{
UUID: "run_id_1",
CreatedAtInSec: 1,
Name: "run_name_1",
Conditions: "Succeeded",
}
protoFilter := &api.Filter{}
protoFilter.Predicates = []*api.Predicate{
{
Key: "status",
Op: api.Predicate_EQUALS,
Value: &api.Predicate_StringValue{StringValue: "Succeeded"},
},
}
listableOptions, err := list.NewOptions(listable, 10, "name", protoFilter)
assert.Nil(t, err)
sqlBuilder := sq.Select("*").From("run_details")
sql, args, err := listableOptions.AddFilterToSelect(sqlBuilder).ToSql()
assert.Nil(t, err)
assert.Contains(t, sql, "WHERE Conditions = ?") // filtering on status, aka Conditions in db
assert.Contains(t, args, "Succeeded")

notEqualProtoFilter := &api.Filter{}
notEqualProtoFilter.Predicates = []*api.Predicate{
{
Key: "status",
Op: api.Predicate_NOT_EQUALS,
Value: &api.Predicate_StringValue{StringValue: "somevalue"},
},
}
listableOptions, err = list.NewOptions(listable, 10, "name", notEqualProtoFilter)
assert.Nil(t, err)
sqlBuilder = sq.Select("*").From("run_details")
sql, args, err = listableOptions.AddFilterToSelect(sqlBuilder).ToSql()
assert.Nil(t, err)
assert.Contains(t, sql, "WHERE Conditions <> ?") // filtering on status, aka Conditions in db
assert.Contains(t, args, "somevalue")
}

0 comments on commit 3d41d5d

Please sign in to comment.