func prepareTestContainer(t *testing.T, s logical.Storage, b logical.Backend) (cid dockertest.ContainerID, retAddress string) { if os.Getenv("CONSUL_ADDR") != "" { return "", os.Getenv("CONSUL_ADDR") } // Without this the checks for whether the container has started seem to // never actually pass. There's really no reason to expose the test // containers, so don't. dockertest.BindDockerToLocalhost = "yep" testImagePull.Do(func() { dockertest.Pull(dockertest.ConsulImageName) }) try := 0 cid, connErr := dockertest.ConnectToConsul(60, 500*time.Millisecond, func(connAddress string) bool { try += 1 // Build a client and verify that the credentials work config := consulapi.DefaultConfig() config.Address = connAddress config.Token = dockertest.ConsulACLMasterToken client, err := consulapi.NewClient(config) if err != nil { if try > 50 { panic(err) } return false } _, err = client.KV().Put(&consulapi.KVPair{ Key: "setuptest", Value: []byte("setuptest"), }, nil) if err != nil { if try > 50 { panic(err) } return false } retAddress = connAddress return true }) if connErr != nil { t.Fatalf("could not connect to consul: %v", connErr) } return }
func prepareTestContainer(t *testing.T, s logical.Storage, b logical.Backend) (cid dockertest.ContainerID, retURI string) { if os.Getenv("MONGODB_URI") != "" { return "", os.Getenv("MONGODB_URI") } // Without this the checks for whether the container has started seem to // never actually pass. There's really no reason to expose the test // containers, so don't. dockertest.BindDockerToLocalhost = "yep" testImagePull.Do(func() { dockertest.Pull(dockertest.MongoDBImageName) }) cid, connErr := dockertest.ConnectToMongoDB(60, 500*time.Millisecond, func(connURI string) bool { connURI = "mongodb://" + connURI // This will cause a validation to run resp, err := b.HandleRequest(&logical.Request{ Storage: s, Operation: logical.UpdateOperation, Path: "config/connection", Data: map[string]interface{}{ "uri": connURI, }, }) if err != nil || (resp != nil && resp.IsError()) { // It's likely not up and running yet, so return false and try again return false } if resp == nil { t.Fatal("expected warning") } retURI = connURI return true }) if connErr != nil { t.Fatalf("could not connect to database: %v", connErr) } return }