github.com/cilium/cilium@v1.16.2/pkg/azure/types/types_test.go (about)

     1  // SPDX-License-Identifier: Apache-2.0
     2  // Copyright Authors of Cilium
     3  
     4  package types
     5  
     6  import (
     7  	"testing"
     8  
     9  	"github.com/stretchr/testify/require"
    10  
    11  	"github.com/cilium/cilium/pkg/ipam/types"
    12  )
    13  
    14  func TestForeachAddresses(t *testing.T) {
    15  	m := types.NewInstanceMap()
    16  	m.Update("i-1", types.InterfaceRevision{
    17  		Resource: &AzureInterface{ID: "1", Addresses: []AzureAddress{
    18  			{IP: "1.1.1.1"},
    19  			{IP: "2.2.2.2"},
    20  		},
    21  		}})
    22  	m.Update("i-2", types.InterfaceRevision{
    23  		Resource: &AzureInterface{ID: "1", Addresses: []AzureAddress{
    24  			{IP: "3.3.3.3"},
    25  			{IP: "4.4.4.4"},
    26  		},
    27  		}})
    28  
    29  	// Iterate over all instances
    30  	addresses := 0
    31  	m.ForeachAddress("", func(instanceID, interfaceID, ip, poolID string, address types.Address) error {
    32  		addresses++
    33  		return nil
    34  	})
    35  	require.Equal(t, 4, addresses)
    36  
    37  	// Iterate over "i-1"
    38  	addresses = 0
    39  	m.ForeachAddress("i-1", func(instanceID, interfaceID, ip, poolID string, address types.Address) error {
    40  		addresses++
    41  		return nil
    42  	})
    43  	require.Equal(t, 2, addresses)
    44  
    45  	// Iterate over all interfaces
    46  	interfaces := 0
    47  	m.ForeachInterface("", func(instanceID, interfaceID string, interfaceObj types.InterfaceRevision) error {
    48  		interfaces++
    49  		return nil
    50  	})
    51  	require.Equal(t, 2, interfaces)
    52  }
    53  
    54  func TestExtractIDs(t *testing.T) {
    55  	vmssIntf := AzureInterface{}
    56  	vmssIntf.SetID("/subscriptions/xxx/resourceGroups/MC_aks-test_aks-test_westeurope/providers/Microsoft.Compute/virtualMachineScaleSets/aks-nodepool1-10706209-vmss/virtualMachines/3/networkInterfaces/aks-nodepool1-10706209-vmss")
    57  
    58  	vmIntf := AzureInterface{}
    59  	vmIntf.SetID("/subscriptions/xxx/resourceGroups/az-test-rg/providers/Microsoft.Network/networkInterfaces/pods-interface")
    60  
    61  	require.Equal(t, "MC_aks-test_aks-test_westeurope", vmssIntf.GetResourceGroup())
    62  	require.Equal(t, "3", vmssIntf.GetVMID())
    63  	require.Equal(t, "aks-nodepool1-10706209-vmss", vmssIntf.GetVMScaleSetName())
    64  	require.Equal(t, "az-test-rg", vmIntf.GetResourceGroup())
    65  }