Skip to content

Commit

Permalink
database: move dbutil and testutil to database from pkg
Browse files Browse the repository at this point in the history
Move dbutil and testutil to database from pkg
Rename all "result"
  • Loading branch information
KeyboardNerd committed Oct 8, 2018
1 parent 0c1b80b commit e657d26
Show file tree
Hide file tree
Showing 9 changed files with 90 additions and 89 deletions.
70 changes: 34 additions & 36 deletions pkg/dbutil/dbutil.go → database/dbutil.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,47 +12,45 @@
// See the License for the specific language governing permissions and
// limitations under the License.

package dbutil
package database

import (
"github.com/deckarep/golang-set"

"github.com/coreos/clair/database"
)

// DeduplicateNamespaces deduplicates a list of namespaces.
func DeduplicateNamespaces(namespaces ...database.Namespace) []database.Namespace {
func DeduplicateNamespaces(namespaces ...Namespace) []Namespace {
nsSet := mapset.NewSet()
for _, ns := range namespaces {
nsSet.Add(ns)
}

result := make([]database.Namespace, 0, nsSet.Cardinality())
uniqueNamespaces := make([]Namespace, 0, nsSet.Cardinality())
for ns := range nsSet.Iter() {
result = append(result, ns.(database.Namespace))
uniqueNamespaces = append(uniqueNamespaces, ns.(Namespace))
}

return result
return uniqueNamespaces
}

// DeduplicateFeatures deduplicates a list of list of features.
func DeduplicateFeatures(features ...database.Feature) []database.Feature {
func DeduplicateFeatures(features ...Feature) []Feature {
fSet := mapset.NewSet()
for _, f := range features {
fSet.Add(f)
}

result := make([]database.Feature, 0, fSet.Cardinality())
uniqueFeatures := make([]Feature, 0, fSet.Cardinality())
for f := range fSet.Iter() {
result = append(result, f.(database.Feature))
uniqueFeatures = append(uniqueFeatures, f.(Feature))
}

return result
return uniqueFeatures
}

// PersistPartialLayer wraps session PersistLayer function with begin and
// commit.
func PersistPartialLayer(datastore database.Datastore, layer *database.Layer) error {
func PersistPartialLayer(datastore Datastore, layer *Layer) error {
tx, err := datastore.Begin()
if err != nil {
return err
Expand All @@ -67,7 +65,7 @@ func PersistPartialLayer(datastore database.Datastore, layer *database.Layer) er
}

// PersistFeatures wraps session PersistFeatures function with begin and commit.
func PersistFeatures(datastore database.Datastore, features []database.Feature) error {
func PersistFeatures(datastore Datastore, features []Feature) error {
tx, err := datastore.Begin()
if err != nil {
return err
Expand All @@ -82,7 +80,7 @@ func PersistFeatures(datastore database.Datastore, features []database.Feature)

// PersistNamespaces wraps session PersistNamespaces function with begin and
// commit.
func PersistNamespaces(datastore database.Datastore, namespaces []database.Namespace) error {
func PersistNamespaces(datastore Datastore, namespaces []Namespace) error {
tx, err := datastore.Begin()
if err != nil {
return err
Expand All @@ -97,20 +95,20 @@ func PersistNamespaces(datastore database.Datastore, namespaces []database.Names
}

// FindAncestry wraps session FindAncestry function with begin and rollback.
func FindAncestry(datastore database.Datastore, name string) (database.Ancestry, bool, error) {
func FindAncestry(datastore Datastore, name string) (Ancestry, bool, error) {
tx, err := datastore.Begin()
defer tx.Rollback()

if err != nil {
return database.Ancestry{}, false, err
return Ancestry{}, false, err
}

return tx.FindAncestry(name)
}

// FindLayer wraps session FindLayer function with begin and rollback.
func FindLayer(datastore database.Datastore, hash string) (layer database.Layer, ok bool, err error) {
var tx database.Session
func FindLayer(datastore Datastore, hash string) (layer Layer, ok bool, err error) {
var tx Session
if tx, err = datastore.Begin(); err != nil {
return
}
Expand All @@ -122,24 +120,24 @@ func FindLayer(datastore database.Datastore, hash string) (layer database.Layer,

// DeduplicateNamespacedFeatures returns a copy of all unique features in the
// input.
func DeduplicateNamespacedFeatures(features []database.NamespacedFeature) []database.NamespacedFeature {
func DeduplicateNamespacedFeatures(features []NamespacedFeature) []NamespacedFeature {
nsSet := mapset.NewSet()
for _, ns := range features {
nsSet.Add(ns)
}

result := make([]database.NamespacedFeature, 0, nsSet.Cardinality())
uniqueFeatures := make([]NamespacedFeature, 0, nsSet.Cardinality())
for ns := range nsSet.Iter() {
result = append(result, ns.(database.NamespacedFeature))
uniqueFeatures = append(uniqueFeatures, ns.(NamespacedFeature))
}

return result
return uniqueFeatures
}

// GetAncestryFeatures returns a list of unique namespaced features in the
// ancestry.
func GetAncestryFeatures(ancestry database.Ancestry) []database.NamespacedFeature {
features := []database.NamespacedFeature{}
func GetAncestryFeatures(ancestry Ancestry) []NamespacedFeature {
features := []NamespacedFeature{}
for _, layer := range ancestry.Layers {
features = append(features, layer.GetFeatures()...)
}
Expand All @@ -148,7 +146,7 @@ func GetAncestryFeatures(ancestry database.Ancestry) []database.NamespacedFeatur
}

// UpsertAncestry wraps session UpsertAncestry function with begin and commit.
func UpsertAncestry(datastore database.Datastore, ancestry database.Ancestry) error {
func UpsertAncestry(datastore Datastore, ancestry Ancestry) error {
tx, err := datastore.Begin()
if err != nil {
return err
Expand All @@ -168,7 +166,7 @@ func UpsertAncestry(datastore database.Datastore, ancestry database.Ancestry) er

// PersistNamespacedFeatures wraps session PersistNamespacedFeatures function
// with begin and commit.
func PersistNamespacedFeatures(datastore database.Datastore, features []database.NamespacedFeature) error {
func PersistNamespacedFeatures(datastore Datastore, features []NamespacedFeature) error {
tx, err := datastore.Begin()
if err != nil {
return err
Expand All @@ -188,7 +186,7 @@ func PersistNamespacedFeatures(datastore database.Datastore, features []database

// CacheRelatedVulnerability wraps session CacheAffectedNamespacedFeatures
// function with begin and commit.
func CacheRelatedVulnerability(datastore database.Datastore, features []database.NamespacedFeature) error {
func CacheRelatedVulnerability(datastore Datastore, features []NamespacedFeature) error {
tx, err := datastore.Begin()
if err != nil {
return err
Expand All @@ -203,7 +201,7 @@ func CacheRelatedVulnerability(datastore database.Datastore, features []database
}

// IntersectDetectors returns the detectors in both d1 and d2.
func IntersectDetectors(d1 []database.Detector, d2 []database.Detector) []database.Detector {
func IntersectDetectors(d1 []Detector, d2 []Detector) []Detector {
d1Set := mapset.NewSet()
for _, d := range d1 {
d1Set.Add(d)
Expand All @@ -215,16 +213,16 @@ func IntersectDetectors(d1 []database.Detector, d2 []database.Detector) []databa
}

inter := d1Set.Intersect(d2Set)
result := make([]database.Detector, 0, inter.Cardinality())
detectors := make([]Detector, 0, inter.Cardinality())
for d := range inter.Iter() {
result = append(result, d.(database.Detector))
detectors = append(detectors, d.(Detector))
}

return result
return detectors
}

// DiffDetectors returns the detectors belongs to d1 but not d2
func DiffDetectors(d1 []database.Detector, d2 []database.Detector) []database.Detector {
func DiffDetectors(d1 []Detector, d2 []Detector) []Detector {
d1Set := mapset.NewSet()
for _, d := range d1 {
d1Set.Add(d)
Expand All @@ -236,17 +234,17 @@ func DiffDetectors(d1 []database.Detector, d2 []database.Detector) []database.De
}

diff := d1Set.Difference(d2Set)
result := make([]database.Detector, 0, diff.Cardinality())
detectors := make([]Detector, 0, diff.Cardinality())
for d := range diff.Iter() {
result = append(result, d.(database.Detector))
detectors = append(detectors, d.(Detector))
}

return result
return detectors
}

// MergeLayers merges all content in new layer to l, where the content is
// updated.
func MergeLayers(l *database.Layer, new *database.Layer) *database.Layer {
func MergeLayers(l *Layer, new *Layer) *Layer {
featureSet := mapset.NewSet()
namespaceSet := mapset.NewSet()
bySet := mapset.NewSet()
Expand Down
5 changes: 2 additions & 3 deletions database/pgsql/ancestry_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ import (
"github.com/stretchr/testify/assert"

"github.com/coreos/clair/database"
"github.com/coreos/clair/pkg/testutil"
)

var upsertAncestryTests = []struct {
Expand Down Expand Up @@ -89,7 +88,7 @@ func TestUpsertAncestry(t *testing.T) {
actual, ok, err := tx.FindAncestry(test.in.Name)
assert.Nil(t, err)
assert.True(t, ok)
testutil.AssertAncestryEqual(t, test.in, &actual)
database.AssertAncestryEqual(t, test.in, &actual)
})
}
}
Expand Down Expand Up @@ -132,7 +131,7 @@ func TestFindAncestry(t *testing.T) {
assert.Nil(t, err)
assert.Equal(t, test.ok, ok)
if test.ok {
testutil.AssertAncestryEqual(t, test.ancestry, &ancestry)
database.AssertAncestryEqual(t, test.ancestry, &ancestry)
}
})
}
Expand Down
5 changes: 2 additions & 3 deletions database/pgsql/layer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ import (
"github.com/stretchr/testify/assert"

"github.com/coreos/clair/database"
"github.com/coreos/clair/pkg/testutil"
)

var persistLayerTests = []struct {
Expand Down Expand Up @@ -136,7 +135,7 @@ func TestPersistLayer(t *testing.T) {
layer, ok, err := tx.FindLayer(test.name)
assert.Nil(t, err)
assert.True(t, ok)
testutil.AssertLayerEqual(t, test.layer, &layer)
database.AssertLayerEqual(t, test.layer, &layer)
}
})
}
Expand Down Expand Up @@ -184,7 +183,7 @@ func TestFindLayer(t *testing.T) {
assert.Nil(t, err)
assert.Equal(t, test.ok, ok)
if test.ok {
testutil.AssertLayerEqual(t, test.out, &layer)
database.AssertLayerEqual(t, test.out, &layer)
}
})
}
Expand Down
5 changes: 2 additions & 3 deletions database/pgsql/testutil.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ import (

"github.com/coreos/clair/database"
"github.com/coreos/clair/pkg/pagination"
"github.com/coreos/clair/pkg/testutil"
)

// int keys must be the consistent with the database ID.
Expand Down Expand Up @@ -232,12 +231,12 @@ func AssertPagedVulnerableAncestriesEqual(t *testing.T, key pagination.Key, expe
return assert.Equal(t, expected, actual)
}

return testutil.AssertVulnerabilityEqual(t, &expected.Vulnerability, &actual.Vulnerability) &&
return database.AssertVulnerabilityEqual(t, &expected.Vulnerability, &actual.Vulnerability) &&
assert.Equal(t, expected.Limit, actual.Limit) &&
assert.Equal(t, mustUnmarshalToken(key, expected.Current), mustUnmarshalToken(key, actual.Current)) &&
assert.Equal(t, mustUnmarshalToken(key, expected.Next), mustUnmarshalToken(key, actual.Next)) &&
assert.Equal(t, expected.End, actual.End) &&
testutil.AssertIntStringMapEqual(t, expected.Affected, actual.Affected)
database.AssertIntStringMapEqual(t, expected.Affected, actual.Affected)
}

func mustUnmarshalToken(key pagination.Key, token pagination.Token) Page {
Expand Down

0 comments on commit e657d26

Please sign in to comment.