mirror of
				https://github.com/optim-enterprises-bv/vault.git
				synced 2025-10-31 02:28:09 +00:00 
			
		
		
		
	 0f1569b7f5
			
		
	
	0f1569b7f5
	
	
	
		
			
			Merge both functions for creating mongodb containers into one. Add retries to docker container cleanups. Require $VAULT_ACC be set to enable AWS tests.
		
			
				
	
	
		
			57 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package mongodb
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 	"os"
 | |
| 	"testing"
 | |
| 	"time"
 | |
| 
 | |
| 	"github.com/hashicorp/vault/helper/testhelpers/docker"
 | |
| 	"github.com/ory/dockertest"
 | |
| 	"gopkg.in/mgo.v2"
 | |
| )
 | |
| 
 | |
| func PrepareTestContainer(t *testing.T, version string) (cleanup func(), retURL string) {
 | |
| 	if os.Getenv("MONGODB_URL") != "" {
 | |
| 		return func() {}, os.Getenv("MONGODB_URL")
 | |
| 	}
 | |
| 
 | |
| 	pool, err := dockertest.NewPool("")
 | |
| 	if err != nil {
 | |
| 		t.Fatalf("Failed to connect to docker: %s", err)
 | |
| 	}
 | |
| 
 | |
| 	resource, err := pool.Run("mongo", "latest", []string{})
 | |
| 	if err != nil {
 | |
| 		t.Fatalf("Could not start local mongo docker container: %s", err)
 | |
| 	}
 | |
| 
 | |
| 	cleanup = func() {
 | |
| 		docker.CleanupResource(t, pool, resource)
 | |
| 	}
 | |
| 
 | |
| 	addr := fmt.Sprintf("localhost:%s", resource.GetPort("27017/tcp"))
 | |
| 	retURL = "mongodb://" + addr
 | |
| 
 | |
| 	// exponential backoff-retry
 | |
| 	if err = pool.Retry(func() error {
 | |
| 		session, err := mgo.DialWithInfo(&mgo.DialInfo{
 | |
| 			Addrs:   []string{addr},
 | |
| 			Timeout: 10 * time.Second,
 | |
| 		})
 | |
| 		if err != nil {
 | |
| 			return err
 | |
| 		}
 | |
| 		defer session.Close()
 | |
| 
 | |
| 		session.SetSyncTimeout(1 * time.Minute)
 | |
| 		session.SetSocketTimeout(1 * time.Minute)
 | |
| 		return session.Ping()
 | |
| 	}); err != nil {
 | |
| 		cleanup()
 | |
| 		t.Fatalf("Could not connect to mongo docker container: %s", err)
 | |
| 	}
 | |
| 
 | |
| 	return
 | |
| }
 |