Skip to content

Commit

Permalink
feedback addressed
Browse files Browse the repository at this point in the history
Signed-off-by: Dhruv-J <dhruvj@vmware.com>
  • Loading branch information
Dhruv-J committed Feb 10, 2025
1 parent e3d2e41 commit 6b4339f
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 14 deletions.
5 changes: 4 additions & 1 deletion pkg/agent/apiserver/handlers/fqdncache/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ func HandleFunc(npq querier.AgentNetworkPolicyInfoQuerier) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
fqdnFilter := newFilterFromURLQuery(r.URL.Query())
dnsEntryCache := npq.GetFQDNCache(fqdnFilter)
resp := []agentapi.FQDNCacheResponse{}
resp := make([]agentapi.FQDNCacheResponse, 0, len(dnsEntryCache))
for _, entry := range dnsEntryCache {
resp = append(resp, agentapi.FQDNCacheResponse{
FQDNName: entry.FQDNName,
Expand All @@ -45,5 +45,8 @@ func HandleFunc(npq querier.AgentNetworkPolicyInfoQuerier) http.HandlerFunc {
}

func newFilterFromURLQuery(query url.Values) *querier.FQDNCacheFilter {
if len(query) == 0 {
return nil
}
return &querier.FQDNCacheFilter{Domain: query.Get("domain")}
}
39 changes: 29 additions & 10 deletions pkg/agent/apiserver/handlers/fqdncache/handler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,20 +26,22 @@ import (
"github.com/stretchr/testify/require"
"go.uber.org/mock/gomock"

"antrea.io/antrea/pkg/agent/apis"
"antrea.io/antrea/pkg/agent/types"
queriertest "antrea.io/antrea/pkg/querier/testing"
)

func TestFqdnCacheQuery(t *testing.T) {
tests := []struct {
name string
expectedStatus int
expectedResponse []types.DnsCacheEntry
name string
expectedStatus int
filteredCacheEntries []types.DnsCacheEntry
expectedResponse []apis.FQDNCacheResponse
}{
{
name: "FQDN cache exists - multiple addresses multiple domains",
expectedStatus: http.StatusOK,
expectedResponse: []types.DnsCacheEntry{
filteredCacheEntries: []types.DnsCacheEntry{
{
FQDNName: "example.com",
IPAddress: net.ParseIP("10.0.0.1"),
Expand All @@ -56,18 +58,35 @@ func TestFqdnCacheQuery(t *testing.T) {
ExpirationTime: time.Date(2025, 12, 25, 15, 0, 0, 0, time.UTC),
},
},
expectedResponse: []apis.FQDNCacheResponse{
{
FQDNName: "example.com",
IPAddress: net.ParseIP("10.0.0.1").String(),
ExpirationTime: time.Date(2025, 12, 25, 15, 0, 0, 0, time.UTC),
},
{
FQDNName: "foo.com",
IPAddress: net.ParseIP("10.0.0.4").String(),
ExpirationTime: time.Date(2025, 12, 25, 15, 0, 0, 0, time.UTC),
},
{
FQDNName: "bar.com",
IPAddress: net.ParseIP("10.0.0.5").String(),
ExpirationTime: time.Date(2025, 12, 25, 15, 0, 0, 0, time.UTC),
},
},
},
{
name: "FQDN cache does not exist",
expectedStatus: http.StatusOK,
expectedResponse: []types.DnsCacheEntry{},
name: "FQDN cache does not exist",
expectedStatus: http.StatusOK,
filteredCacheEntries: []types.DnsCacheEntry{},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
ctrl := gomock.NewController(t)
q := queriertest.NewMockAgentNetworkPolicyInfoQuerier(ctrl)
q.EXPECT().GetFQDNCache(nil).Return(tt.expectedResponse)
q.EXPECT().GetFQDNCache(nil).Return(tt.filteredCacheEntries)
handler := HandleFunc(q)
req, err := http.NewRequest(http.MethodGet, "", nil)
require.NoError(t, err)
Expand All @@ -80,9 +99,9 @@ func TestFqdnCacheQuery(t *testing.T) {
for i, rec := range receivedResponse {
parsedTime, err := time.Parse(time.RFC3339, rec["expirationTime"].(string))
require.NoError(t, err)
assert.Equal(t, tt.expectedResponse[i], types.DnsCacheEntry{
assert.Equal(t, tt.expectedResponse[i], apis.FQDNCacheResponse{
FQDNName: rec["fqdnName"].(string),
IPAddress: net.ParseIP(rec["ipAddress"].(string)),
IPAddress: rec["ipAddress"].(string),
ExpirationTime: parsedTime,
})
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -552,9 +552,6 @@ func (c *Controller) GetFQDNCache(fqdnFilter *querier.FQDNCacheFilter) []types.D
// this pattern will match no strings if there is an error with the regex formatting or usage with the user specified --domain flag
pattern = regexp.MustCompile(`a\A`)
}
} else {
// this pattern will match all strings if the filter is unset
pattern = regexp.MustCompile(`.*`)
}
for fqdn, dnsMeta := range c.fqdnController.dnsEntryCache {
for _, ipWithExpiration := range dnsMeta.responseIPs {
Expand Down

0 comments on commit 6b4339f

Please sign in to comment.