10 . "github.com/onsi/ginkgo/v2"
13 // These correspond to names used in yaml config
15 serverInterfaceName = "srv"
16 clientInterfaceName = "cln"
19 var vethTests = map[string][]func(s *VethsSuite){}
20 var vethSoloTests = map[string][]func(s *VethsSuite){}
22 type VethsSuite struct {
26 func registerVethTests(tests ...func(s *VethsSuite)) {
27 vethTests[getTestFilename()] = tests
29 func registerSoloVethTests(tests ...func(s *VethsSuite)) {
30 vethSoloTests[getTestFilename()] = tests
33 func (s *VethsSuite) SetupSuite() {
34 time.Sleep(1 * time.Second)
35 s.HstSuite.SetupSuite()
36 s.configureNetworkTopology("2peerVeth")
37 s.loadContainerTopology("2peerVeth")
40 func (s *VethsSuite) SetupTest() {
41 s.HstSuite.SetupTest()
43 // Setup test conditions
44 var sessionConfig Stanza
48 append("use-app-socket-api").close()
51 serverContainer := s.getContainerByName("server-vpp")
53 serverVpp, err := serverContainer.newVppInstance(serverContainer.allocatedCpus, sessionConfig)
54 s.assertNotNil(serverVpp, fmt.Sprint(err))
59 clientContainer := s.getContainerByName("client-vpp")
61 clientVpp, err := clientContainer.newVppInstance(clientContainer.allocatedCpus, sessionConfig)
62 s.assertNotNil(clientVpp, fmt.Sprint(err))
67 func (s *VethsSuite) setupServerVpp() {
68 serverVpp := s.getContainerByName("server-vpp").vppInstance
69 s.assertNil(serverVpp.start())
71 serverVeth := s.getInterfaceByName(serverInterfaceName)
72 idx, err := serverVpp.createAfPacket(serverVeth)
73 s.assertNil(err, fmt.Sprint(err))
74 s.assertNotEqual(0, idx)
77 func (s *VethsSuite) setupClientVpp() {
78 clientVpp := s.getContainerByName("client-vpp").vppInstance
79 s.assertNil(clientVpp.start())
81 clientVeth := s.getInterfaceByName(clientInterfaceName)
82 idx, err := clientVpp.createAfPacket(clientVeth)
83 s.assertNil(err, fmt.Sprint(err))
84 s.assertNotEqual(0, idx)
87 var _ = Describe("VethsSuite", Ordered, ContinueOnFailure, func() {
103 // https://onsi.github.io/ginkgo/#dynamically-generating-specs
104 for filename, tests := range vethTests {
105 for _, test := range tests {
107 pc := reflect.ValueOf(test).Pointer()
108 funcValue := runtime.FuncForPC(pc)
109 testName := filename + "/" + strings.Split(funcValue.Name(), ".")[2]
110 It(testName, func(ctx SpecContext) {
111 s.log(testName + ": BEGIN")
113 }, SpecTimeout(suiteTimeout))
118 var _ = Describe("VethsSuiteSolo", Ordered, ContinueOnFailure, Serial, func() {
133 // https://onsi.github.io/ginkgo/#dynamically-generating-specs
134 for filename, tests := range vethSoloTests {
135 for _, test := range tests {
137 pc := reflect.ValueOf(test).Pointer()
138 funcValue := runtime.FuncForPC(pc)
139 testName := filename + "/" + strings.Split(funcValue.Name(), ".")[2]
140 It(testName, Label("SOLO"), func(ctx SpecContext) {
141 s.log(testName + ": BEGIN")
143 }, SpecTimeout(suiteTimeout))