diff options
author | Maros Ondrejicka <maros.ondrejicka@pantheon.tech> | 2022-12-14 16:30:04 +0100 |
---|---|---|
committer | Florin Coras <florin.coras@gmail.com> | 2022-12-19 17:11:52 +0000 |
commit | db823ed6e9543741f6969ff160314093002e037e (patch) | |
tree | bf046f85d1052058da38192687874e361c684e4c /extras/hs-test/framework_test.go | |
parent | aff4d320f0fe9ce68fcb83ee9ab0abc2d8612644 (diff) |
hs-test: abstract away topology from test cases
Definition of shared volumes and containers has been moved
to yaml files to be together with network topology.
Containers are automatically run at the beginning of each test case
and stopped afterward.
Type: test
Signed-off-by: Maros Ondrejicka <maros.ondrejicka@pantheon.tech>
Change-Id: I264cbb4f1355f8bd7aade221e9609fb5b9bd693e
Diffstat (limited to 'extras/hs-test/framework_test.go')
-rwxr-xr-x | extras/hs-test/framework_test.go | 86 |
1 files changed, 47 insertions, 39 deletions
diff --git a/extras/hs-test/framework_test.go b/extras/hs-test/framework_test.go index 3df509f30c1..a3d46ad0ab9 100755 --- a/extras/hs-test/framework_test.go +++ b/extras/hs-test/framework_test.go @@ -3,26 +3,43 @@ package main import ( "fmt" "testing" - "time" + "io/ioutil" "github.com/edwarnicke/exechelper" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/suite" + "gopkg.in/yaml.v3" ) type HstSuite struct { suite.Suite teardownSuite func() - containers []*Container + containers map[string]*Container volumes []string } func (s *HstSuite) TearDownSuite() { s.teardownSuite() - s.StopContainers() +} + +func (s *HstSuite) TearDownTest() { + s.ResetContainers() s.RemoveVolumes() } +func (s *HstSuite) SetupTest() { + for _, volume := range s.volumes { + cmd := "docker volume create --name=" + volume + fmt.Println(cmd) + exechelper.Run(cmd) + } + for _, container := range s.containers { + if container.isOptional == false { + container.run() + } + } +} + func (s *HstSuite) hstFail() { s.T().FailNow() } @@ -63,20 +80,7 @@ func (s *HstSuite) assertNotContains(testString, contains interface{}, msgAndArg } } -func (s *HstSuite) NewContainer(name string) (*Container, error) { - if name == "" { - return nil, fmt.Errorf("creating container failed: name must not be blank") - } - - container := new(Container) - container.name = name - - s.containers = append(s.containers, container) - - return container, nil -} - -func (s *HstSuite) StopContainers() { +func (s *HstSuite) ResetContainers() { for _, container := range s.containers { container.stop() } @@ -94,39 +98,43 @@ func (s *HstSuite) NewVolume(name string) error { func (s *HstSuite) RemoveVolumes() { for _, volumeName := range s.volumes { - exechelper.Run("docker volume rm " + volumeName) + cmd := "docker volume rm " + volumeName + exechelper.Run(cmd) } } -type TapSuite struct { - HstSuite +func (s *HstSuite) getContainerByName(name string) *Container { + return s.containers[name] } -func (s *TapSuite) SetupSuite() { - time.Sleep(1 * time.Second) - s.teardownSuite = setupSuite(&s.Suite, "tap") -} - -type VethsSuite struct { - HstSuite -} - -func (s *VethsSuite) SetupSuite() { - time.Sleep(1 * time.Second) - s.teardownSuite = setupSuite(&s.Suite, "2peerVeth") -} +func (s *HstSuite) loadContainerTopology(topologyName string) { + data, err := ioutil.ReadFile(ContainerTopologyDir + topologyName + ".yaml") + if err != nil { + s.T().Fatalf("read error: %v", err) + } + var yamlTopo YamlTopology + err = yaml.Unmarshal(data, &yamlTopo) + if err != nil { + s.T().Fatalf("unmarshal error: %v", err) + } -type NsSuite struct { - HstSuite -} + for _, elem := range yamlTopo.Volumes { + s.volumes = append(s.volumes, elem) + } -func (s *NsSuite) SetupSuite() { - s.teardownSuite = setupSuite(&s.Suite, "ns") + s.containers = make(map[string]*Container) + for _, elem := range yamlTopo.Containers { + newContainer, err := NewContainer(elem) + if err != nil { + s.T().Fatalf("config error: %v", err) + } + s.containers[newContainer.name] = newContainer + } } func setupSuite(s *suite.Suite, topologyName string) func() { t := s.T() - topology, err := LoadTopology(TopologyDir, topologyName) + topology, err := LoadTopology(NetworkTopologyDir, topologyName) if err != nil { t.Fatalf("error on loading topology '%s': %v", topologyName, err) } |