// +build integration

package rethinkdb

import (
	"log"
	"math/rand"
	"net/url"
	"os"
	"testing"
	"time"

	"gopkg.in/dancannon/gorethink.v1"
)

var connect_url, authKey string
var server *Server

func init() {
	connect_url = os.Getenv("RETHINKDB_URL")
	if connect_url == "" {
		connect_url = "127.0.0.1:28015"
	}
	authKey = os.Getenv("RETHINKDB_AUTHKEY")

}

func testSetup(m *testing.M) {
	var err error
	server = &Server{Url: &url.URL{Host: connect_url}}
	server.session, _ = gorethink.Connect(gorethink.ConnectOpts{
		Address:       server.Url.Host,
		AuthKey:       authKey,
		DiscoverHosts: false,
	})
	if err != nil {
		log.Fatalln(err.Error())
	}

	err = server.getServerStatus()
	if err != nil {
		log.Fatalln(err.Error())
	}
}

func testTeardown(m *testing.M) {
	server.session.Close()
}

func TestMain(m *testing.M) {
	// seed randomness for use with tests
	rand.Seed(time.Now().UTC().UnixNano())

	testSetup(m)
	res := m.Run()
	testTeardown(m)

	os.Exit(res)
}