Skip to content

Commit

Permalink
Automatically running tests for normal and for swarm modes, easy to c…
Browse files Browse the repository at this point in the history
…alculate test coverage
  • Loading branch information
ubuntolog committed Jul 20, 2017
1 parent 1d763f4 commit d1d2bf2
Show file tree
Hide file tree
Showing 5 changed files with 68 additions and 66 deletions.
5 changes: 1 addition & 4 deletions .travis.yml
Expand Up @@ -7,7 +7,4 @@ before_install:
- echo ${GOPATH}
- curl https://glide.sh/get | sh

script:
- make build
- docker swarm init --advertise-addr 127.0.0.1
- GEF_SECRET_KEY="test" go test -v -timeout 4m ./gefserver/tests
script: make build
9 changes: 1 addition & 8 deletions gefserver/pier/internal/dckr/dckr.go
Expand Up @@ -269,14 +269,7 @@ func (c *Client) BuildImage(dirpath string) (Image, error) {

// InitiateOrLeaveSwarmMode switches a node to the Swarm Mode, if it was off and vice versa
func (c Client) InitiateOrLeaveSwarmMode(listenAddr string, advertiseAddr string) (string, error) {
swarm, err := c.c.InitSwarm(
docker.InitSwarmOptions{
InitRequest: swarm.InitRequest{
ListenAddr: listenAddr,
AdvertiseAddr: advertiseAddr,
},
},
)
swarm, err := c.InitiateSwarmMode(listenAddr, advertiseAddr)
if err == NodeAlreadyInSwarm {
err = c.LeaveSwarmMode(true)
}
Expand Down
6 changes: 3 additions & 3 deletions gefserver/pier/pier.go
Expand Up @@ -114,9 +114,9 @@ func (p *Pier) SetDockerConnection(config def.DockerConfig, limits def.LimitConf
return nil
}

// InitiateOrLeaveSwarmMode switches a node to the Swarm Mode, if it was off and vice versa
func (p *Pier) InitiateOrLeaveSwarmMode(listenAddr string, advertiseAddr string) (string, error) {
return p.docker.client.InitiateOrLeaveSwarmMode(listenAddr, advertiseAddr)
// InitiateSwarmMode switches a node to the Swarm Mode
func (p *Pier) InitiateSwarmMode(listenAddr string, advertiseAddr string) (string, error) {
return p.docker.client.InitiateSwarmMode(listenAddr, advertiseAddr)
}

// LeaveIfInSwarmMode deactivates the Swarm Mode, if it was on
Expand Down
51 changes: 0 additions & 51 deletions gefserver/tests/pier_test.go
Expand Up @@ -23,57 +23,6 @@ var (
email2 = "user2@example.com"
)

func TestMain(m *testing.M) {
code := m.Run()
if code != 0 {
os.Exit(code)
} else {
log.Println("************************************")
log.Println("* Running tests for the swarm mode *")
log.Println("************************************")
config, err := def.ReadConfigFile(configFilePath)
if err != nil {
log.Fatal(def.Err(err, "reading config files failed"))
os.Exit(1)
}

db, file, err := db.InitDbForTesting()
if err != nil {
log.Fatal(def.Err(err, "creating db failed"))
os.Exit(1)
}
defer db.Close()
defer os.Remove(file)

pier, err := pier.NewPier(&db, config.TmpDir)
if err != nil {
log.Fatal(def.Err(err, "creating new pier failed"))
os.Exit(1)
}

err = pier.SetDockerConnection(config.Docker, config.Limits, config.Timeouts, internalServicesFolder)
if err != nil {
log.Fatal(def.Err(err, "setting docker connection failed"))
os.Exit(1)
}

_, err = pier.InitiateOrLeaveSwarmMode("127.0.0.1", "127.0.0.1")
if err != nil {
log.Fatal(def.Err(err, "switching to the swarm mode or leaving swarm failed"))
os.Exit(1)
}

swarmExitCode := m.Run()
err = pier.LeaveIfInSwarmMode()
if err != nil {
log.Fatal(def.Err(err, "leaving swarm failed"))
os.Exit(1)
}

os.Exit(swarmExitCode)
}
}

func TestClient(t *testing.T) {
config, err := def.ReadConfigFile(configFilePath)
checkMsg(t, err, "reading config files")
Expand Down
63 changes: 63 additions & 0 deletions gefserver/tests/swarm_test.go
@@ -0,0 +1,63 @@
package tests

import (
"log"
"os"
"testing"

"github.com/EUDAT-GEF/GEF/gefserver/db"
"github.com/EUDAT-GEF/GEF/gefserver/def"
"github.com/EUDAT-GEF/GEF/gefserver/pier"
)

func TestMain(m *testing.M) {
doYouNeedSwarm(false)
code := m.Run()
os.Exit(code)
}

func TestAgainInSwarm(t *testing.T) {
log.Println("************************************")
log.Println("* Running tests for the swarm mode *")
log.Println("************************************")

doYouNeedSwarm(true) // switching to a swarm
TestClient(t)
TestExecution(t)
TestServer(t)
doYouNeedSwarm(false) // leaving a swarm
}

func doYouNeedSwarm(activate bool) {
config, err := def.ReadConfigFile(configFilePath)
if err != nil {
log.Fatal(def.Err(err, "reading config files failed"))
os.Exit(1)
}

pier, err := pier.NewPier(&db.Db{}, config.TmpDir)
if err != nil {
log.Fatal(def.Err(err, "creating new pier failed"))
os.Exit(1)
}

err = pier.SetDockerConnection(config.Docker, config.Limits, config.Timeouts, internalServicesFolder)
if err != nil {
log.Fatal(def.Err(err, "setting docker connection failed"))
os.Exit(1)
}

if activate {
_, err = pier.InitiateSwarmMode("127.0.0.1", "127.0.0.1")
if err != nil {
log.Fatal(def.Err(err, "switching to the swarm mode or leaving swarm failed"))
os.Exit(1)
}
} else {
err = pier.LeaveIfInSwarmMode()
if err != nil {
log.Fatal(def.Err(err, "leaving swarm failed"))
os.Exit(1)
}
}
}

0 comments on commit d1d2bf2

Please sign in to comment.