Skip to content
This repository has been archived by the owner on Oct 17, 2018. It is now read-only.

Commit

Permalink
tests round 3
Browse files Browse the repository at this point in the history
  • Loading branch information
Dmitriy Gromov committed Aug 17, 2017
1 parent ac43189 commit 44d4ba1
Show file tree
Hide file tree
Showing 3 changed files with 508 additions and 6 deletions.
137 changes: 137 additions & 0 deletions rules/namespace_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -415,3 +415,140 @@ func TestNamespaceTombstoneAlreadyDead(t *testing.T) {
err = ns.markTombstoned(4)
require.Error(t, err)
}

func TestNamespaceAdd(t *testing.T) {
testNss := &schema.Namespaces{
Namespaces: []*schema.Namespace{
&schema.Namespace{
Name: "foo",
Snapshots: []*schema.NamespaceSnapshot{
&schema.NamespaceSnapshot{ForRulesetVersion: 1, Tombstoned: true},
},
},
},
}

nss, err := NewNamespaces(1, testNss)
require.NoError(t, err)

err = nss.AddNamespace("bar")
require.NoError(t, err)

ns, err := nss.Namespace("bar")
require.NoError(t, err)
require.False(t, ns.Tombstoned())
}

func TestNamespaceAddDup(t *testing.T) {
testNss := &schema.Namespaces{
Namespaces: []*schema.Namespace{
&schema.Namespace{
Name: "foo",
Snapshots: []*schema.NamespaceSnapshot{
&schema.NamespaceSnapshot{ForRulesetVersion: 1, Tombstoned: false},
},
},
},
}

nss, err := NewNamespaces(1, testNss)
require.NoError(t, err)

err = nss.AddNamespace("foo")
require.Error(t, err)
}

func TestNamespaceRevive(t *testing.T) {
testNss := &schema.Namespaces{
Namespaces: []*schema.Namespace{
&schema.Namespace{
Name: "foo",
Snapshots: []*schema.NamespaceSnapshot{
&schema.NamespaceSnapshot{ForRulesetVersion: 1, Tombstoned: false},
},
},
},
}

nss, err := NewNamespaces(1, testNss)
require.NoError(t, err)
ns, err := nss.Namespace("foo")
require.NoError(t, err)

err = nss.DeleteNamespace("foo", 4)
require.NoError(t, err)

ns, err = nss.Namespace("foo")
require.True(t, ns.Tombstoned())

err = nss.AddNamespace("foo")
require.NoError(t, err)

ns, err = nss.Namespace("foo")
require.NoError(t, err)
require.Equal(t, ns.snapshots[len(ns.snapshots)-1].forRuleSetVersion, 5)
require.Equal(t, len(ns.snapshots), 3)
}

func TestNamespaceDelete(t *testing.T) {
testNss := &schema.Namespaces{
Namespaces: []*schema.Namespace{
&schema.Namespace{
Name: "foo",
Snapshots: []*schema.NamespaceSnapshot{
&schema.NamespaceSnapshot{ForRulesetVersion: 1, Tombstoned: false},
},
},
},
}

nss, err := NewNamespaces(1, testNss)
require.NoError(t, err)
ns, err := nss.Namespace("foo")
require.NoError(t, err)

err = nss.DeleteNamespace("foo", 4)
require.NoError(t, err)
ns, err = nss.Namespace("foo")
require.NoError(t, err)
require.True(t, ns.Tombstoned())
require.Equal(t, ns.snapshots[len(ns.snapshots)-1].forRuleSetVersion, 5)
}

func TestNamespaceDeleteMissing(t *testing.T) {
testNss := &schema.Namespaces{
Namespaces: []*schema.Namespace{
&schema.Namespace{
Name: "foo",
Snapshots: []*schema.NamespaceSnapshot{
&schema.NamespaceSnapshot{ForRulesetVersion: 1, Tombstoned: false},
},
},
},
}

nss, err := NewNamespaces(1, testNss)
require.NoError(t, err)

err = nss.DeleteNamespace("bar", 4)
require.Error(t, err)
}

func TestNamespaceDeleteTombstoned(t *testing.T) {
testNss := &schema.Namespaces{
Namespaces: []*schema.Namespace{
&schema.Namespace{
Name: "foo",
Snapshots: []*schema.NamespaceSnapshot{
&schema.NamespaceSnapshot{ForRulesetVersion: 1, Tombstoned: true},
},
},
},
}

nss, err := NewNamespaces(1, testNss)
require.NoError(t, err)

err = nss.DeleteNamespace("foo", 4)
require.Error(t, err)
}
8 changes: 2 additions & 6 deletions rules/ruleset.go
Original file line number Diff line number Diff line change
Expand Up @@ -870,8 +870,6 @@ type MappingRuleData struct {
// MappingRuleUpdate contains a MappingRuleData along with an ID for a mapping rule.
// The rule with that ID is meant to updated to the given config.
type MappingRuleUpdate struct {
UpdateMetadata

Data MappingRuleData `json:"config" validate:"nonzero"`
ID string `json:"id" validate:"nonzero"`
}
Expand All @@ -889,8 +887,6 @@ type RollupRuleData struct {
// RollupRuleUpdate is a RollupRuleConfig along with an ID for a rollup rule.
// The rule with that ID is meant to updated with a given config.
type RollupRuleUpdate struct {
UpdateMetadata

Data RollupRuleData `json:"data" validate:"nonzero"`
ID string `json:"id" validate:"nonzero"`
}
Expand Down Expand Up @@ -951,7 +947,7 @@ func (rs *ruleSet) UpdateMappingRule(mru MappingRuleUpdate) error {
if err != nil {
return fmt.Errorf(ruleActionErrorFmt, "update", mru.ID, err)
}
meta := mru.UpdateMetadata
meta := mrd.UpdateMetadata
if err := m.addSnapshot(
mrd.Name,
mrd.Filters,
Expand Down Expand Up @@ -1028,7 +1024,7 @@ func (rs *ruleSet) UpdateRollupRule(rru RollupRuleUpdate) error {
return fmt.Errorf(ruleActionErrorFmt, "update", rru.ID, err)
}

meta := rru.UpdateMetadata
meta := rrd.UpdateMetadata
if err = r.addSnapshot(
rrd.Name,
rrd.Filters,
Expand Down
Loading

0 comments on commit 44d4ba1

Please sign in to comment.