var IsPersistent = flag.Bool("persist", false, "persists topology config")
var IsVerbose = flag.Bool("verbose", false, "verbose test output")
+var IsUnconfiguring = flag.Bool("unconfigure", false, "remove topology")
+var IsVppDebug = flag.Bool("debug", false, "attach gdb to vpp")
type HstSuite struct {
suite.Suite
containers map[string]*Container
volumes []string
netConfigs []NetConfig
- netInterfaces map[string]NetInterface
+ netInterfaces map[string]*NetInterface
addresser *Addresser
testIds map[string]string
}
s.RemoveVolumes()
}
+func (s *HstSuite) skipIfUnconfiguring() {
+ if *IsUnconfiguring {
+ s.skip("skipping to unconfigure")
+ }
+}
+
func (s *HstSuite) SetupTest() {
+ s.skipIfUnconfiguring()
s.SetupVolumes()
s.SetupContainers()
}
func (s *HstSuite) log(args ...any) {
if *IsVerbose {
- s.T().Helper()
+ s.T().Helper()
s.T().Log(args...)
}
}
}
s.addresser = NewAddresser(s)
- s.netInterfaces = make(map[string]NetInterface)
+ s.netInterfaces = make(map[string]*NetInterface)
for _, elem := range yamlTopo.Devices {
switch elem["type"].(string) {
case NetNs:
s.T().Fatalf("network config error: %v", err)
}
}
- case Veth:
+ case Veth, Tap:
{
- if veth, err := NewVeth(elem, s.addresser); err == nil {
- s.netConfigs = append(s.netConfigs, &veth)
- s.netInterfaces[veth.Name()] = &veth
- } else {
- s.T().Fatalf("network config error: %v", err)
- }
- }
- case Tap:
- {
- if tap, err := NewTap(elem, s.addresser); err == nil {
- s.netConfigs = append(s.netConfigs, &tap)
- s.netInterfaces[tap.Name()] = &tap
+ if netIf, err := NewNetworkInterface(elem, s.addresser); err == nil {
+ s.netConfigs = append(s.netConfigs, netIf)
+ s.netInterfaces[netIf.Name()] = netIf
} else {
s.T().Fatalf("network config error: %v", err)
}
func (s *HstSuite) configureNetworkTopology(topologyName string) {
s.loadNetworkTopology(topologyName)
+ if *IsUnconfiguring {
+ return
+ }
+
for _, nc := range s.netConfigs {
if err := nc.Configure(); err != nil {
s.T().Fatalf("network config error: %v", err)
return s.testIds[testName]
}
-type NetworkAddresses struct {
- network int
- numberOfAddresses int
-}
-
type AddressCounter = int
type Addresser struct {