hs-test: add tests repeat option
[vpp.git] / extras / hs-test / suite_no_topo_test.go
1 package main
2
3 import (
4         "reflect"
5         "runtime"
6         "strings"
7         "time"
8
9         . "github.com/onsi/ginkgo/v2"
10 )
11
12 const (
13         singleTopoContainerVpp   = "vpp"
14         singleTopoContainerNginx = "nginx"
15         tapInterfaceName         = "htaphost"
16 )
17
18 var noTopoTests = []func(s *NoTopoSuite){}
19 var noTopoSoloTests = []func(s *NoTopoSuite){}
20
21 type NoTopoSuite struct {
22         HstSuite
23 }
24
25 func registerNoTopoTests(tests ...func(s *NoTopoSuite)) {
26         noTopoTests = append(noTopoTests, tests...)
27 }
28 func registerNoTopoSoloTests(tests ...func(s *NoTopoSuite)) {
29         noTopoSoloTests = append(noTopoSoloTests, tests...)
30 }
31
32 func (s *NoTopoSuite) SetupSuite() {
33         s.HstSuite.SetupSuite()
34         s.loadNetworkTopology("tap")
35         s.loadContainerTopology("single")
36 }
37
38 func (s *NoTopoSuite) SetupTest() {
39         s.HstSuite.SetupTest()
40
41         // Setup test conditions
42         var sessionConfig Stanza
43         sessionConfig.
44                 newStanza("session").
45                 append("enable").
46                 append("use-app-socket-api").close()
47
48         cpus := s.AllocateCpus()
49         container := s.getContainerByName(singleTopoContainerVpp)
50         vpp, _ := container.newVppInstance(cpus, sessionConfig)
51         s.assertNil(vpp.start())
52
53         tapInterface := s.getInterfaceByName(tapInterfaceName)
54
55         s.assertNil(vpp.createTap(tapInterface), "failed to create tap interface")
56 }
57
58 var _ = Describe("NoTopoSuite", Ordered, ContinueOnFailure, func() {
59         var s NoTopoSuite
60         BeforeAll(func() {
61                 s.SetupSuite()
62         })
63         BeforeEach(func() {
64                 s.SetupTest()
65         })
66         AfterAll(func() {
67                 s.TearDownSuite()
68         })
69         AfterEach(func() {
70                 s.TearDownTest()
71         })
72
73         for _, test := range noTopoTests {
74                 test := test
75                 pc := reflect.ValueOf(test).Pointer()
76                 funcValue := runtime.FuncForPC(pc)
77                 It(strings.Split(funcValue.Name(), ".")[2], func(ctx SpecContext) {
78                         test(&s)
79                 }, SpecTimeout(time.Minute*5))
80         }
81 })
82
83 var _ = Describe("NoTopoSuiteSolo", Ordered, ContinueOnFailure, Serial, func() {
84         var s NoTopoSuite
85         BeforeAll(func() {
86                 s.SetupSuite()
87         })
88         BeforeEach(func() {
89                 s.SetupTest()
90         })
91         AfterAll(func() {
92                 s.TearDownSuite()
93         })
94         AfterEach(func() {
95                 s.TearDownTest()
96         })
97
98         for _, test := range noTopoSoloTests {
99                 test := test
100                 pc := reflect.ValueOf(test).Pointer()
101                 funcValue := runtime.FuncForPC(pc)
102                 It(strings.Split(funcValue.Name(), ".")[2], Label("SOLO"), func(ctx SpecContext) {
103                         test(&s)
104                 }, SpecTimeout(time.Minute*5))
105         }
106 })