Skip to content

Commit

Permalink
add a unit test for ipam issue
Browse files Browse the repository at this point in the history
Signed-off-by: NikitaSkrynnik <nikita.skrynnik@xored.com>
  • Loading branch information
NikitaSkrynnik committed Jul 17, 2024
1 parent c0bcf88 commit 4e47f53
Showing 1 changed file with 36 additions and 0 deletions.
36 changes: 36 additions & 0 deletions pkg/networkservice/ipam/point2pointipam/server_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -536,3 +536,39 @@ func TestRecoveryServers(t *testing.T) {
require.NoError(t, err)
validateConns(t, conn3, []string{"192.168.10.0/32", "fe80::fa00/128"}, []string{"192.168.10.1/32", "fe80::fa01/128"})
}

func TestRaceCond(t *testing.T) {

_, ipNet, err := net.ParseCIDR("172.16.0.0/24")
require.NoError(t, err)

srv := newIpamServer(ipNet)

emptyRequest := newRequest()
emptyRequest.Connection.Context.IpContext.ExcludedPrefixes = append(emptyRequest.Connection.Context.IpContext.ExcludedPrefixes, "10.96.0.0/16", "10.244.0.0/16")

request := newRequest()

request.Connection.Context.IpContext.SrcIpAddrs = append(request.Connection.Context.IpContext.SrcIpAddrs, "172.16.0.1/32")
request.Connection.Context.IpContext.SrcIpAddrs = append(request.Connection.Context.IpContext.SrcIpAddrs, "172.16.0.25/32")

request.Connection.Context.IpContext.DstIpAddrs = append(request.Connection.Context.IpContext.DstIpAddrs, "172.16.0.0/32")
request.Connection.Context.IpContext.DstIpAddrs = append(request.Connection.Context.IpContext.DstIpAddrs, "172.16.0.24/32")

request.Connection.Context.IpContext.SrcRoutes = append(request.Connection.Context.IpContext.SrcRoutes, &networkservice.Route{Prefix: "172.16.0.2/32"})
request.Connection.Context.IpContext.SrcRoutes = append(request.Connection.Context.IpContext.SrcRoutes, &networkservice.Route{Prefix: "172.16.0.24/32"})

request.Connection.Context.IpContext.DstRoutes = append(request.Connection.Context.IpContext.DstRoutes, &networkservice.Route{Prefix: "172.16.0.3/32"})
request.Connection.Context.IpContext.DstRoutes = append(request.Connection.Context.IpContext.DstRoutes, &networkservice.Route{Prefix: "172.16.0.25/32"})

request.Connection.Context.IpContext.ExcludedPrefixes = append(request.Connection.Context.IpContext.ExcludedPrefixes, "10.96.0.0/16", "10.244.0.0/16", "100:100::1/128", "100:100::/128")

conn, err := srv.Request(context.Background(), emptyRequest)
require.NoError(t, err)
validateConn(t, conn, "172.16.0.0/32", "172.16.0.1/32")

conn, err = srv.Request(context.Background(), request)
require.NoError(t, err)
require.NotContains(t, conn.Context.IpContext.DstIpAddrs, "172.16.0.0/32")
require.NotContains(t, conn.Context.IpContext.SrcIpAddrs, "172.16.0.1/32")
}

0 comments on commit 4e47f53

Please sign in to comment.