Skip to content

Commit 81844e8

Browse files
committed
add more unit tests
1 parent 6cc3a9b commit 81844e8

5 files changed

Lines changed: 570 additions & 0 deletions

File tree

pkg/awsutils/awsutils_test.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3874,3 +3874,30 @@ func TestDataStoreENISubnetID(t *testing.T) {
38743874
})
38753875
}
38763876
}
3877+
3878+
func TestIsPrimaryENI(t *testing.T) {
3879+
cache := &EC2InstanceMetadataCache{primaryENI: "eni-primary"}
3880+
3881+
assert.True(t, cache.IsPrimaryENI("eni-primary"))
3882+
assert.False(t, cache.IsPrimaryENI("eni-secondary"))
3883+
assert.False(t, cache.IsPrimaryENI(""))
3884+
}
3885+
3886+
func TestIsEfaOnlyENI(t *testing.T) {
3887+
cache := &EC2InstanceMetadataCache{
3888+
efaOnlyENIsByNetworkCard: []string{"", "eni-efa"},
3889+
}
3890+
3891+
assert.True(t, cache.IsEfaOnlyENI(1, "eni-efa"))
3892+
assert.False(t, cache.IsEfaOnlyENI(0, "eni-efa"))
3893+
assert.False(t, cache.IsEfaOnlyENI(1, "eni-other"))
3894+
}
3895+
3896+
func TestIsUnmanagedENI(t *testing.T) {
3897+
cache := &EC2InstanceMetadataCache{unmanagedENIs: StringSet{}}
3898+
cache.unmanagedENIs.Set([]string{"eni-unmanaged"})
3899+
3900+
assert.True(t, cache.IsUnmanagedENI("eni-unmanaged"))
3901+
assert.False(t, cache.IsUnmanagedENI("eni-managed"))
3902+
assert.False(t, cache.IsUnmanagedENI(""))
3903+
}

pkg/ec2wrapper/ec2wrapper_test.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,3 +89,15 @@ type mockEC2ServiceClient struct {
8989
func (m mockEC2ServiceClient) DescribeTags(ctx context.Context, input *ec2.DescribeTagsInput, f ...func(*ec2.Options)) (*ec2.DescribeTagsOutput, error) {
9090
return m.tags, m.tagsErr
9191
}
92+
93+
func TestNew(t *testing.T) {
94+
cfg := aws.Config{Region: "us-east-1"}
95+
client := New(cfg)
96+
assert.NotNil(t, client)
97+
}
98+
99+
func TestNewMetricsClient(t *testing.T) {
100+
_, err := NewMetricsClient()
101+
// This will fail in test environment without IMDS, which is expected
102+
assert.Error(t, err)
103+
}

pkg/ipamd/datastore/data_store_test.go

Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2217,3 +2217,122 @@ func TestDeallocateEmptyCIDR(t *testing.T) {
22172217
assert.True(t, exists, "ENI should still exist")
22182218
})
22192219
}
2220+
2221+
func TestDataStore_IsENIExcludedForPodIPs(t *testing.T) {
2222+
ds := NewDataStore(Testlog, NullCheckpoint{}, false, defaultNetworkCard)
2223+
eniID := "eni-test"
2224+
err := ds.AddENI(eniID, 1, false, false, false, 0, "")
2225+
assert.NoError(t, err)
2226+
assert.False(t, ds.IsENIExcludedForPodIPs(eniID))
2227+
err = ds.SetENIExcludedForPodIPs(eniID, true)
2228+
assert.NoError(t, err)
2229+
assert.True(t, ds.IsENIExcludedForPodIPs(eniID))
2230+
assert.False(t, ds.IsENIExcludedForPodIPs("non-existent"))
2231+
}
2232+
2233+
func TestDataStore_GetTrunkENI(t *testing.T) {
2234+
ds := NewDataStore(Testlog, NullCheckpoint{}, false, defaultNetworkCard)
2235+
assert.Equal(t, "", ds.GetTrunkENI())
2236+
err := ds.AddENI("eni-regular", 1, false, false, false, 0, "")
2237+
assert.NoError(t, err)
2238+
assert.Equal(t, "", ds.GetTrunkENI())
2239+
err = ds.AddENI("eni-trunk", 2, false, true, false, 0, "")
2240+
assert.NoError(t, err)
2241+
assert.Equal(t, "eni-trunk", ds.GetTrunkENI())
2242+
}
2243+
2244+
func TestDataStore_GetEFAENIs(t *testing.T) {
2245+
ds := NewDataStore(Testlog, NullCheckpoint{}, false, defaultNetworkCard)
2246+
efas := ds.GetEFAENIs()
2247+
assert.Empty(t, efas)
2248+
err := ds.AddENI("eni-regular", 1, false, false, false, 0, "")
2249+
assert.NoError(t, err)
2250+
efas = ds.GetEFAENIs()
2251+
assert.Empty(t, efas)
2252+
err = ds.AddENI("eni-efa1", 2, false, false, true, 0, "")
2253+
assert.NoError(t, err)
2254+
err = ds.AddENI("eni-efa2", 3, false, false, true, 0, "")
2255+
assert.NoError(t, err)
2256+
efas = ds.GetEFAENIs()
2257+
assert.Len(t, efas, 2)
2258+
assert.True(t, efas["eni-efa1"])
2259+
assert.True(t, efas["eni-efa2"])
2260+
}
2261+
2262+
func TestDivCeil(t *testing.T) {
2263+
assert.Equal(t, 1, DivCeil(1, 1))
2264+
assert.Equal(t, 2, DivCeil(3, 2))
2265+
assert.Equal(t, 3, DivCeil(5, 2))
2266+
assert.Equal(t, 5, DivCeil(10, 2))
2267+
assert.Equal(t, 1, DivCeil(1, 10))
2268+
}
2269+
2270+
func TestGetPrefixDelegationDefaults(t *testing.T) {
2271+
numPrefixes, numIPs, prefixLen := GetPrefixDelegationDefaults()
2272+
assert.Equal(t, 1, numPrefixes)
2273+
assert.Equal(t, 16, numIPs)
2274+
assert.Equal(t, 28, prefixLen)
2275+
}
2276+
2277+
func TestDataStore_CheckFreeableENIexists(t *testing.T) {
2278+
ds := NewDataStore(Testlog, NullCheckpoint{}, false, defaultNetworkCard)
2279+
assert.False(t, ds.CheckFreeableENIexists())
2280+
err := ds.AddENI("eni-primary", 0, true, false, false, 0, "")
2281+
assert.NoError(t, err)
2282+
assert.False(t, ds.CheckFreeableENIexists())
2283+
err = ds.AddENI("eni-secondary", 1, false, false, false, 0, "")
2284+
assert.NoError(t, err)
2285+
assert.True(t, ds.CheckFreeableENIexists())
2286+
err = ds.AddENI("eni-trunk", 2, false, true, false, 0, "")
2287+
assert.NoError(t, err)
2288+
assert.True(t, ds.CheckFreeableENIexists())
2289+
err = ds.AddENI("eni-efa", 3, false, false, true, 0, "")
2290+
assert.NoError(t, err)
2291+
assert.True(t, ds.CheckFreeableENIexists())
2292+
}
2293+
2294+
func TestDataStoreStats_String(t *testing.T) {
2295+
stats := &DataStoreStats{TotalIPs: 10, AssignedIPs: 5}
2296+
str := stats.String()
2297+
assert.Contains(t, str, "Total")
2298+
}
2299+
2300+
func TestDataStore_FreeableIPs(t *testing.T) {
2301+
ds := NewDataStore(Testlog, NullCheckpoint{}, false, defaultNetworkCard)
2302+
eniID := "eni-test"
2303+
err := ds.AddENI(eniID, 1, false, false, false, 0, "")
2304+
assert.NoError(t, err)
2305+
_, ipnet1, _ := net.ParseCIDR("10.0.1.1/32")
2306+
err = ds.AddIPv4CidrToStore(eniID, *ipnet1, false)
2307+
assert.NoError(t, err)
2308+
_, ipnet2, _ := net.ParseCIDR("10.0.1.2/32")
2309+
err = ds.AddIPv4CidrToStore(eniID, *ipnet2, false)
2310+
assert.NoError(t, err)
2311+
freeableIPs := ds.FreeableIPs(eniID)
2312+
assert.Len(t, freeableIPs, 2)
2313+
}
2314+
2315+
func TestDataStore_GetFreePrefixes(t *testing.T) {
2316+
ds := NewDataStore(Testlog, NullCheckpoint{}, true, defaultNetworkCard)
2317+
eniID := "eni-test"
2318+
err := ds.AddENI(eniID, 1, false, false, false, 0, "")
2319+
assert.NoError(t, err)
2320+
_, ipnet, _ := net.ParseCIDR("10.0.1.0/28")
2321+
err = ds.AddIPv4CidrToStore(eniID, *ipnet, true)
2322+
assert.NoError(t, err)
2323+
freePrefixes := ds.GetFreePrefixes()
2324+
assert.Equal(t, 1, freePrefixes)
2325+
}
2326+
2327+
func TestDataStore_FindFreeableCidrs(t *testing.T) {
2328+
ds := NewDataStore(Testlog, NullCheckpoint{}, true, defaultNetworkCard)
2329+
eniID := "eni-test"
2330+
err := ds.AddENI(eniID, 1, false, false, false, 0, "")
2331+
assert.NoError(t, err)
2332+
_, ipnet, _ := net.ParseCIDR("10.0.1.0/28")
2333+
err = ds.AddIPv4CidrToStore(eniID, *ipnet, true)
2334+
assert.NoError(t, err)
2335+
cidrs := ds.FindFreeableCidrs(eniID)
2336+
assert.Len(t, cidrs, 1)
2337+
}
2338+

0 commit comments

Comments
 (0)