-
Notifications
You must be signed in to change notification settings - Fork 509
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* rework new snapshot api to remove the need of API updates whenever a new xDS server is implemented Signed-off-by: Alec Holmes <[email protected]>
- Loading branch information
1 parent
67485fd
commit 4ca66c8
Showing
13 changed files
with
257 additions
and
182 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
package cache | ||
|
||
import "github.com/envoyproxy/go-control-plane/pkg/cache/types" | ||
|
||
// Resources is a versioned group of resources. | ||
type Resources struct { | ||
// Version information. | ||
Version string | ||
|
||
// Items in the group indexed by name. | ||
Items map[string]types.ResourceWithTTL | ||
} | ||
|
||
// IndexResourcesByName creates a map from the resource name to the resource. | ||
func IndexResourcesByName(items []types.ResourceWithTTL) map[string]types.ResourceWithTTL { | ||
indexed := make(map[string]types.ResourceWithTTL) | ||
for _, item := range items { | ||
indexed[GetResourceName(item.Resource)] = item | ||
} | ||
return indexed | ||
} | ||
|
||
// IndexRawResourcesByName creates a map from the resource name to the resource. | ||
func IndexRawResourcesByName(items []types.Resource) map[string]types.Resource { | ||
indexed := make(map[string]types.Resource) | ||
for _, item := range items { | ||
indexed[GetResourceName(item)] = item | ||
} | ||
return indexed | ||
} | ||
|
||
// NewResources creates a new resource group. | ||
func NewResources(version string, items []types.Resource) Resources { | ||
itemsWithTTL := []types.ResourceWithTTL{} | ||
for _, item := range items { | ||
itemsWithTTL = append(itemsWithTTL, types.ResourceWithTTL{Resource: item}) | ||
} | ||
return NewResourcesWithTTL(version, itemsWithTTL) | ||
} | ||
|
||
// NewResourcesWithTTL creates a new resource group. | ||
func NewResourcesWithTTL(version string, items []types.ResourceWithTTL) Resources { | ||
return Resources{ | ||
Version: version, | ||
Items: IndexResourcesByName(items), | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,84 @@ | ||
package cache_test | ||
|
||
import ( | ||
"testing" | ||
|
||
"github.com/stretchr/testify/assert" | ||
|
||
"github.com/envoyproxy/go-control-plane/pkg/cache/types" | ||
"github.com/envoyproxy/go-control-plane/pkg/cache/v3" | ||
) | ||
|
||
func TestIndexResourcesByName(t *testing.T) { | ||
tests := []struct { | ||
name string | ||
resources []types.ResourceWithTTL | ||
want map[string]types.ResourceWithTTL | ||
}{ | ||
{ | ||
name: "empty", | ||
resources: nil, | ||
want: map[string]types.ResourceWithTTL{}, | ||
}, | ||
{ | ||
name: "more than one", | ||
resources: []types.ResourceWithTTL{ | ||
{Resource: testEndpoint, TTL: &ttl}, | ||
{Resource: testRoute, TTL: &ttl}, | ||
}, | ||
want: map[string]types.ResourceWithTTL{ | ||
"cluster0": {Resource: testEndpoint, TTL: &ttl}, | ||
"route0": {Resource: testRoute, TTL: &ttl}, | ||
}, | ||
}, | ||
} | ||
|
||
for _, tt := range tests { | ||
t.Run(tt.name, func(t *testing.T) { | ||
got := cache.IndexResourcesByName(tt.resources) | ||
assert.Equal(t, tt.want, got) | ||
}) | ||
} | ||
} | ||
|
||
func TestIndexRawResourceByName(t *testing.T) { | ||
tests := []struct { | ||
name string | ||
resources []types.Resource | ||
want map[string]types.Resource | ||
}{ | ||
{ | ||
name: "empty", | ||
resources: nil, | ||
want: map[string]types.Resource{}, | ||
}, | ||
{ | ||
name: "more than one", | ||
resources: []types.Resource{ | ||
testEndpoint, | ||
testRoute, | ||
}, | ||
want: map[string]types.Resource{ | ||
"cluster0": testEndpoint, | ||
"route0": testRoute, | ||
}, | ||
}, | ||
} | ||
|
||
for _, tt := range tests { | ||
t.Run(tt.name, func(t *testing.T) { | ||
got := cache.IndexRawResourcesByName(tt.resources) | ||
assert.Equal(t, tt.want, got) | ||
}) | ||
} | ||
} | ||
|
||
func TestNewResources(t *testing.T) { | ||
resources := cache.NewResources("x", []types.Resource{ | ||
testEndpoint, | ||
testRoute, | ||
}) | ||
|
||
assert.NotNil(t, resources.Items) | ||
assert.Equal(t, "x", resources.Version) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.