@@ -3,12 +3,16 @@ package cmd
33import (
44 "bytes"
55 "errors"
6+ "net"
67 "net/http"
78 "net/url"
89 "os"
10+ "regexp"
911 "testing"
1012
13+ "github.com/containers/gvisor-tap-vsock/pkg/types"
1114 "github.com/crc-org/crc/v2/pkg/crc/api/client"
15+ crcConfig "github.com/crc-org/crc/v2/pkg/crc/config"
1216
1317 "github.com/sirupsen/logrus"
1418 "github.com/stretchr/testify/assert"
@@ -84,3 +88,69 @@ func TestCheckDaemonVersion_WhenErrorReturnedWhileFetchingVersion_ThenReturnFals
8488 assert .NoError (t , err )
8589 assert .Equal (t , false , result )
8690}
91+
92+ func TestCreateNewVirtualNetworkConfig (t * testing.T ) {
93+ // Given
94+ oldPcapFileEnvVal := os .Getenv ("CRC_DAEMON_PCAP_FILE" )
95+ err := os .Setenv ("CRC_DAEMON_PCAP_FILE" , "/tmp/pcapfile" )
96+ assert .NoError (t , err )
97+ defer func (key , value string ) {
98+ err := os .Setenv (key , value )
99+ assert .NoError (t , err )
100+ }("CRC_DAEMON_PCAP_FILE" , oldPcapFileEnvVal )
101+ testCrcConfig := crcConfig .New (crcConfig .NewEmptyInMemoryStorage (), crcConfig .NewEmptyInMemorySecretStorage ())
102+
103+ // When
104+ virtualNetworkConfig := createNewVirtualNetworkConfig (testCrcConfig )
105+
106+ // Then
107+ assert .Equal (t , false , virtualNetworkConfig .Debug )
108+ assert .Equal (t , "/tmp/pcapfile" , virtualNetworkConfig .CaptureFile )
109+ assert .Equal (t , 4000 , virtualNetworkConfig .MTU )
110+ assert .Equal (t , "192.168.127.0/24" , virtualNetworkConfig .Subnet )
111+ assert .Equal (t , "192.168.127.1" , virtualNetworkConfig .GatewayIP )
112+ assert .ElementsMatch (t , []string {"192.168.127.254" }, virtualNetworkConfig .GatewayVirtualIPs )
113+ assert .Equal (t , "5a:94:ef:e4:0c:dd" , virtualNetworkConfig .GatewayMacAddress )
114+ assert .Equal (t , types .Protocol ("hyperkit" ), virtualNetworkConfig .Protocol )
115+
116+ assert .Len (t , virtualNetworkConfig .DHCPStaticLeases , 1 )
117+ assert .Equal (t , "5a:94:ef:e4:0c:ee" , virtualNetworkConfig .DHCPStaticLeases ["192.168.127.2" ])
118+
119+ assert .Len (t , virtualNetworkConfig .DNS , 4 )
120+ assert .Equal (t , "apps-crc.testing." , virtualNetworkConfig .DNS [0 ].Name )
121+ assert .Equal (t , net .ParseIP ("192.168.127.2" ), virtualNetworkConfig .DNS [0 ].DefaultIP )
122+ assert .Equal (t , "crc.testing." , virtualNetworkConfig .DNS [1 ].Name )
123+ assert .Equal (t , "host" , virtualNetworkConfig .DNS [1 ].Records [0 ].Name )
124+ assert .Equal (t , net .ParseIP ("192.168.127.254" ), virtualNetworkConfig .DNS [1 ].Records [0 ].IP )
125+ assert .Equal (t , "gateway" , virtualNetworkConfig .DNS [1 ].Records [1 ].Name )
126+ assert .Equal (t , net .ParseIP ("192.168.127.1" ), virtualNetworkConfig .DNS [1 ].Records [1 ].IP )
127+ assert .Equal (t , "api" , virtualNetworkConfig .DNS [1 ].Records [2 ].Name )
128+ assert .Equal (t , net .ParseIP ("192.168.127.2" ), virtualNetworkConfig .DNS [1 ].Records [2 ].IP )
129+ assert .Equal (t , "api-int" , virtualNetworkConfig .DNS [1 ].Records [3 ].Name )
130+ assert .Equal (t , net .ParseIP ("192.168.127.2" ), virtualNetworkConfig .DNS [1 ].Records [3 ].IP )
131+ assert .Equal (t , regexp .MustCompile ("crc-(.*?)-master-0" ), virtualNetworkConfig .DNS [1 ].Records [4 ].Regexp )
132+ assert .Equal (t , net .ParseIP ("192.168.126.11" ), virtualNetworkConfig .DNS [1 ].Records [4 ].IP )
133+
134+ assert .Equal (t , "containers.internal." , virtualNetworkConfig .DNS [2 ].Name )
135+ assert .Len (t , virtualNetworkConfig .DNS [2 ].Records , 1 )
136+ assert .Equal (t , "gateway" , virtualNetworkConfig .DNS [2 ].Records [0 ].Name )
137+ assert .Equal (t , net .ParseIP ("192.168.127.254" ), virtualNetworkConfig .DNS [2 ].Records [0 ].IP )
138+ assert .Equal (t , "docker.internal." , virtualNetworkConfig .DNS [3 ].Name )
139+ assert .Len (t , virtualNetworkConfig .DNS [3 ].Records , 1 )
140+ assert .Equal (t , "gateway" , virtualNetworkConfig .DNS [3 ].Records [0 ].Name )
141+ assert .Equal (t , net .ParseIP ("192.168.127.254" ), virtualNetworkConfig .DNS [3 ].Records [0 ].IP )
142+ }
143+
144+ func TestCreateNewVirtualNetworkConfig_WhenHostNetworkConfigSet_ThenSetNAT (t * testing.T ) {
145+ // Given
146+ testCrcConfig := crcConfig .New (crcConfig .NewEmptyInMemoryStorage (), crcConfig .NewEmptyInMemorySecretStorage ())
147+ testCrcConfig .AddSetting ("host-network-access" , false , crcConfig .ValidateBool , crcConfig .SuccessfullyApplied , "test message" )
148+ _ , err := testCrcConfig .Set (crcConfig .HostNetworkAccess , true )
149+ assert .NoError (t , err )
150+
151+ // When
152+ virtualNetworkConfig := createNewVirtualNetworkConfig (testCrcConfig )
153+
154+ // Then
155+ assert .Equal (t , "127.0.0.1" , virtualNetworkConfig .NAT ["192.168.127.254" ])
156+ }
0 commit comments