summaryrefslogtreecommitdiffstats
path: root/extras/hs-test/framework_test.go
diff options
context:
space:
mode:
authorMaros Ondrejicka <maros.ondrejicka@pantheon.tech>2022-12-01 09:56:37 +0100
committerFlorin Coras <florin.coras@gmail.com>2022-12-02 21:35:10 +0000
commit11a03e972e6752513ab931540f713ce1520696a7 (patch)
treeeca0fca1593103cf5bc9f7fbb63706313de1925a /extras/hs-test/framework_test.go
parentb01efc557b411e02379c9647eebf7e762efd8473 (diff)
hs-test: add test suite features
Test suite now supports assertions which on fail stop test case run, also it allows to create docker containers which are going to be stopped automatically after the test run is finished. Type: improvement Signed-off-by: Maros Ondrejicka <maros.ondrejicka@pantheon.tech> Change-Id: I2834709b1efd17b8182d36cc0404b986b4ed595d Signed-off-by: Filip Tehlar <ftehlar@cisco.com>
Diffstat (limited to 'extras/hs-test/framework_test.go')
-rwxr-xr-xextras/hs-test/framework_test.go95
1 files changed, 74 insertions, 21 deletions
diff --git a/extras/hs-test/framework_test.go b/extras/hs-test/framework_test.go
index 38003925f2f..fc186f35180 100755
--- a/extras/hs-test/framework_test.go
+++ b/extras/hs-test/framework_test.go
@@ -1,53 +1,106 @@
package main
import (
+ "fmt"
"testing"
"time"
+ "github.com/edwarnicke/exechelper"
+ "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/suite"
)
-type TapSuite struct {
+type HstSuite struct {
suite.Suite
teardownSuite func()
+ containers []string
+ volumes []string
}
-func (s *TapSuite) SetupSuite() {
- time.Sleep(1 * time.Second)
- s.teardownSuite = setupSuite(&s.Suite, "tap")
+func (s *HstSuite) TearDownSuite() {
+ s.teardownSuite()
+ s.StopContainers()
+ s.RemoveVolumes()
}
-func (s *TapSuite) TearDownSuite() {
- s.teardownSuite()
+func (s *HstSuite) hstFail() {
+ s.T().FailNow()
}
-type Veths2Suite struct {
- suite.Suite
- teardownSuite func()
+func (s *HstSuite) assertNil(object interface{}, msgAndArgs ...interface{}) {
+ if !assert.Nil(s.T(), object, msgAndArgs...) {
+ s.hstFail()
+ }
+}
+
+func (s *HstSuite) assertNotNil(object interface{}, msgAndArgs ...interface{}) {
+ if !assert.NotNil(s.T(), object, msgAndArgs...) {
+ s.hstFail()
+ }
+}
+
+func (s *HstSuite) assertEqual(expected, actual interface{}, msgAndArgs ...interface{}) {
+ if !assert.Equal(s.T(), expected, actual, msgAndArgs...) {
+ s.hstFail()
+ }
+}
+
+func (s *HstSuite) assertNotContains(testString, contains interface{}, msgAndArgs ...interface{}) {
+ if !assert.NotContains(s.T(), testString, contains, msgAndArgs...) {
+ s.hstFail()
+ }
+}
+
+func (s *HstSuite) NewContainer(name string) (*Container, error) {
+ if name == "" {
+ return nil, fmt.Errorf("creating container failed: name must not be blank")
+ }
+
+ s.containers = append(s.containers, name)
+
+ container := new(Container)
+ container.name = name
+ return container, nil
}
-func (s *Veths2Suite) SetupSuite() {
+func (s *HstSuite) StopContainers() {
+ for _, containerName := range s.containers {
+ exechelper.Run("docker stop " + containerName)
+ }
+}
+
+func (s *HstSuite) RemoveVolumes() {
+ for _, volumeName := range s.volumes {
+ exechelper.Run("docker volume rm " + volumeName)
+ }
+}
+
+type TapSuite struct {
+ HstSuite
+}
+
+func (s *TapSuite) SetupSuite() {
time.Sleep(1 * time.Second)
- s.teardownSuite = setupSuite(&s.Suite, "2peerVeth")
+ s.teardownSuite = setupSuite(&s.Suite, "tap")
}
-func (s *Veths2Suite) TearDownSuite() {
- s.teardownSuite()
+type VethsSuite struct {
+ HstSuite
+}
+
+func (s *VethsSuite) SetupSuite() {
+ time.Sleep(1 * time.Second)
+ s.teardownSuite = setupSuite(&s.Suite, "2peerVeth")
}
type NsSuite struct {
- suite.Suite
- teardownSuite func()
+ HstSuite
}
func (s *NsSuite) SetupSuite() {
s.teardownSuite = setupSuite(&s.Suite, "ns")
}
-func (s *NsSuite) TearDownSuite() {
- s.teardownSuite()
-}
-
func setupSuite(s *suite.Suite, topologyName string) func() {
t := s.T()
topology, err := LoadTopology(TopologyDir, topologyName)
@@ -75,7 +128,7 @@ func TestNs(t *testing.T) {
suite.Run(t, &m)
}
-func TestVeths2(t *testing.T) {
- var m Veths2Suite
+func TestVeths(t *testing.T) {
+ var m VethsSuite
suite.Run(t, &m)
}