Skip to content

Commit

Permalink
Merge branch 'master' into bench-add-constraint
Browse files Browse the repository at this point in the history
  • Loading branch information
Will Beason (he/him) authored Jan 12, 2022
2 parents 61ca0d8 + 8c2d6e2 commit c54516a
Show file tree
Hide file tree
Showing 145 changed files with 212 additions and 178,895 deletions.
1 change: 0 additions & 1 deletion constraint/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ require (
github.com/google/go-cmp v0.5.6
github.com/google/gofuzz v1.2.0 // indirect
github.com/mailru/easyjson v0.7.7 // indirect
github.com/onsi/gomega v1.13.0
github.com/open-policy-agent/opa v0.35.0
github.com/prometheus/common v0.32.1 // indirect
github.com/prometheus/procfs v0.7.3 // indirect
Expand Down
45 changes: 35 additions & 10 deletions constraint/pkg/apis/templates/v1/constrainttemplate_types_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,12 @@ import (
"testing"

"github.com/google/go-cmp/cmp"
"github.com/onsi/gomega"
"github.com/open-policy-agent/frameworks/constraint/pkg/core/templates"
"github.com/open-policy-agent/frameworks/constraint/pkg/schema"
"golang.org/x/net/context"
"k8s.io/apiextensions-apiserver/pkg/apis/apiextensions"
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
apierrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
Expand All @@ -43,26 +43,51 @@ func TestStorageConstraintTemplate(t *testing.T) {
Name: "foo",
},
}
g := gomega.NewGomegaWithT(t)

// Test Create
fetched := &ConstraintTemplate{}
g.Expect(c.Create(ctx, created)).NotTo(gomega.HaveOccurred())
var err error

g.Expect(c.Get(ctx, key, fetched)).NotTo(gomega.HaveOccurred())
g.Expect(fetched).To(gomega.Equal(created))
err = c.Create(ctx, created)
if err != nil {
t.Fatalf("got Create() error = %v, want nil", err)
}

err = c.Get(ctx, key, fetched)
if err != nil {
t.Fatalf("got Get() error = %v, want nil", err)
}

if diff := cmp.Diff(created, fetched); diff != "" {
t.Fatal(diff)
}

// Test Updating the Labels
updated := fetched.DeepCopy()
updated.Labels = map[string]string{"hello": "world"}
g.Expect(c.Update(ctx, updated)).NotTo(gomega.HaveOccurred())
err = c.Update(ctx, updated)
if err != nil {
t.Fatalf("got Update() error = %v, want nil", err)
}

g.Expect(c.Get(ctx, key, fetched)).NotTo(gomega.HaveOccurred())
g.Expect(fetched).To(gomega.Equal(updated))
err = c.Get(ctx, key, fetched)
if err != nil {
t.Fatalf("got Get() error = %v, want nil", err)
}
if diff := cmp.Diff(updated, fetched); diff != "" {
t.Fatal(diff)
}

// Test Delete
g.Expect(c.Delete(ctx, fetched)).NotTo(gomega.HaveOccurred())
g.Expect(c.Get(ctx, key, fetched)).To(gomega.HaveOccurred())
err = c.Delete(ctx, fetched)
if err != nil {
t.Fatalf("got Delete() errror = %v, want nil", err)
}

err = c.Get(ctx, key, fetched)
if !apierrors.IsNotFound(err) {
t.Fatalf("got Get() error = %v, want IsNotFound", err)
}
}

func TestTypeConversion(t *testing.T) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,12 @@ import (
"testing"

"github.com/google/go-cmp/cmp"
"github.com/onsi/gomega"
"github.com/open-policy-agent/frameworks/constraint/pkg/core/templates"
"github.com/open-policy-agent/frameworks/constraint/pkg/schema"
"golang.org/x/net/context"
"k8s.io/apiextensions-apiserver/pkg/apis/apiextensions"
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
apierrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
Expand All @@ -43,26 +43,51 @@ func TestStorageConstraintTemplate(t *testing.T) {
Name: "foo",
},
}
g := gomega.NewGomegaWithT(t)

// Test Create
fetched := &ConstraintTemplate{}
g.Expect(c.Create(ctx, created)).NotTo(gomega.HaveOccurred())
var err error

g.Expect(c.Get(ctx, key, fetched)).NotTo(gomega.HaveOccurred())
g.Expect(fetched).To(gomega.Equal(created))
err = c.Create(ctx, created)
if err != nil {
t.Fatalf("got Create() error = %v, want nil", err)
}

err = c.Get(ctx, key, fetched)
if err != nil {
t.Fatalf("got Get() error = %v, want nil", err)
}

if diff := cmp.Diff(created, fetched); diff != "" {
t.Fatal(diff)
}

// Test Updating the Labels
updated := fetched.DeepCopy()
updated.Labels = map[string]string{"hello": "world"}
g.Expect(c.Update(ctx, updated)).NotTo(gomega.HaveOccurred())
err = c.Update(ctx, updated)
if err != nil {
t.Fatalf("got Update() error = %v, want nil", err)
}

g.Expect(c.Get(ctx, key, fetched)).NotTo(gomega.HaveOccurred())
g.Expect(fetched).To(gomega.Equal(updated))
err = c.Get(ctx, key, fetched)
if err != nil {
t.Fatalf("got Get() error = %v, want nil", err)
}
if diff := cmp.Diff(updated, fetched); diff != "" {
t.Fatal(diff)
}

// Test Delete
g.Expect(c.Delete(ctx, fetched)).NotTo(gomega.HaveOccurred())
g.Expect(c.Get(ctx, key, fetched)).To(gomega.HaveOccurred())
err = c.Delete(ctx, fetched)
if err != nil {
t.Fatalf("got Delete() errror = %v, want nil", err)
}

err = c.Get(ctx, key, fetched)
if !apierrors.IsNotFound(err) {
t.Fatalf("got Get() error = %v, want IsNotFound", err)
}
}

func TestTypeConversion(t *testing.T) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,12 @@ import (
"testing"

"github.com/google/go-cmp/cmp"
"github.com/onsi/gomega"
"github.com/open-policy-agent/frameworks/constraint/pkg/core/templates"
"github.com/open-policy-agent/frameworks/constraint/pkg/schema"
"golang.org/x/net/context"
"k8s.io/apiextensions-apiserver/pkg/apis/apiextensions"
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
apierrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
Expand All @@ -43,26 +43,51 @@ func TestStorageConstraintTemplate(t *testing.T) {
Name: "foo",
},
}
g := gomega.NewGomegaWithT(t)

// Test Create
fetched := &ConstraintTemplate{}
g.Expect(c.Create(ctx, created)).NotTo(gomega.HaveOccurred())
var err error

g.Expect(c.Get(ctx, key, fetched)).NotTo(gomega.HaveOccurred())
g.Expect(fetched).To(gomega.Equal(created))
err = c.Create(ctx, created)
if err != nil {
t.Fatalf("got Create() error = %v, want nil", err)
}

err = c.Get(ctx, key, fetched)
if err != nil {
t.Fatalf("got Get() error = %v, want nil", err)
}

if diff := cmp.Diff(created, fetched); diff != "" {
t.Fatal(diff)
}

// Test Updating the Labels
updated := fetched.DeepCopy()
updated.Labels = map[string]string{"hello": "world"}
g.Expect(c.Update(ctx, updated)).NotTo(gomega.HaveOccurred())
err = c.Update(ctx, updated)
if err != nil {
t.Fatalf("got Update() error = %v, want nil", err)
}

g.Expect(c.Get(ctx, key, fetched)).NotTo(gomega.HaveOccurred())
g.Expect(fetched).To(gomega.Equal(updated))
err = c.Get(ctx, key, fetched)
if err != nil {
t.Fatalf("got Get() error = %v, want nil", err)
}
if diff := cmp.Diff(updated, fetched); diff != "" {
t.Fatal(diff)
}

// Test Delete
g.Expect(c.Delete(ctx, fetched)).NotTo(gomega.HaveOccurred())
g.Expect(c.Get(ctx, key, fetched)).To(gomega.HaveOccurred())
err = c.Delete(ctx, fetched)
if err != nil {
t.Fatalf("got Delete() errror = %v, want nil", err)
}

err = c.Get(ctx, key, fetched)
if !apierrors.IsNotFound(err) {
t.Fatalf("got Get() error = %v, want IsNotFound", err)
}
}

func TestTypeConversion(t *testing.T) {
Expand Down
13 changes: 13 additions & 0 deletions constraint/pkg/client/drivers/local/args.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"github.com/open-policy-agent/opa/ast"
"github.com/open-policy-agent/opa/storage"
"github.com/open-policy-agent/opa/storage/inmem"
"github.com/open-policy-agent/opa/topdown/print"
opatypes "github.com/open-policy-agent/opa/types"
)

Expand Down Expand Up @@ -45,6 +46,18 @@ func Tracing(enabled bool) Arg {
}
}

func PrintEnabled(enabled bool) Arg {
return func(d *driver) {
d.printEnabled = enabled
}
}

func PrintHook(hook print.Hook) Arg {
return func(d *driver) {
d.printHook = hook
}
}

func Modules(modules map[string]*ast.Module) Arg {
return func(d *driver) {
d.modules = modules
Expand Down
8 changes: 7 additions & 1 deletion constraint/pkg/client/drivers/local/local.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import (
"github.com/open-policy-agent/opa/rego"
"github.com/open-policy-agent/opa/storage"
"github.com/open-policy-agent/opa/topdown"
"github.com/open-policy-agent/opa/topdown/print"
opatypes "github.com/open-policy-agent/opa/types"
"k8s.io/utils/pointer"
)
Expand Down Expand Up @@ -67,6 +68,8 @@ type driver struct {
storage storage.Store
capabilities *ast.Capabilities
traceEnabled bool
printEnabled bool
printHook print.Hook
providerCache *externaldata.ProviderCache
}

Expand Down Expand Up @@ -243,7 +246,8 @@ func (d *driver) alterModules(insert insertParam, remove []string) (int, error)
}

c := ast.NewCompiler().WithPathConflictsCheck(storage.NonEmpty(ctx, d.storage, txn)).
WithCapabilities(d.capabilities)
WithCapabilities(d.capabilities).
WithEnablePrintStatements(d.printEnabled)

if c.Compile(updatedModules); c.Failed() {
d.storage.Abort(ctx, txn)
Expand Down Expand Up @@ -391,6 +395,8 @@ func (d *driver) eval(ctx context.Context, path string, input interface{}, cfg *
rego.Store(d.storage),
rego.Input(input),
rego.Query(path),
rego.EnablePrintStatements(d.printEnabled),
rego.PrintHook(d.printHook),
}

buf := topdown.NewBufferTracer()
Expand Down
Loading

0 comments on commit c54516a

Please sign in to comment.