summaryrefslogtreecommitdiff
path: root/src/mongo/gotools/src/github.com/mongodb/mongo-tools/vendor/github.com/10gen/llmgo/testserver/testserver.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/gotools/src/github.com/mongodb/mongo-tools/vendor/github.com/10gen/llmgo/testserver/testserver.go')
-rw-r--r--src/mongo/gotools/src/github.com/mongodb/mongo-tools/vendor/github.com/10gen/llmgo/testserver/testserver.go168
1 files changed, 0 insertions, 168 deletions
diff --git a/src/mongo/gotools/src/github.com/mongodb/mongo-tools/vendor/github.com/10gen/llmgo/testserver/testserver.go b/src/mongo/gotools/src/github.com/mongodb/mongo-tools/vendor/github.com/10gen/llmgo/testserver/testserver.go
deleted file mode 100644
index 0910dbce962..00000000000
--- a/src/mongo/gotools/src/github.com/mongodb/mongo-tools/vendor/github.com/10gen/llmgo/testserver/testserver.go
+++ /dev/null
@@ -1,168 +0,0 @@
-// WARNING: This package was replaced by mgo.v2/dbtest.
-package testserver
-
-import (
- "bytes"
- "fmt"
- "net"
- "os"
- "os/exec"
- "strconv"
- "time"
-
- "github.com/10gen/llmgo"
- "gopkg.in/tomb.v2"
-)
-
-// WARNING: This package was replaced by mgo.v2/dbtest.
-type TestServer struct {
- session *mgo.Session
- output bytes.Buffer
- server *exec.Cmd
- dbpath string
- host string
- tomb tomb.Tomb
-}
-
-// WARNING: This package was replaced by mgo.v2/dbtest.
-func (ts *TestServer) SetPath(dbpath string) {
- ts.dbpath = dbpath
-}
-
-func (ts *TestServer) start() {
- if ts.server != nil {
- panic("TestServer already started")
- }
- if ts.dbpath == "" {
- panic("TestServer.SetPath must be called before using the server")
- }
- mgo.SetStats(true)
- l, err := net.Listen("tcp", "127.0.0.1:0")
- if err != nil {
- panic("unable to listen on a local address: " + err.Error())
- }
- addr := l.Addr().(*net.TCPAddr)
- l.Close()
- ts.host = addr.String()
-
- args := []string{
- "--dbpath", ts.dbpath,
- "--bind_ip", "127.0.0.1",
- "--port", strconv.Itoa(addr.Port),
- "--nssize", "1",
- "--noprealloc",
- "--smallfiles",
- "--nojournal",
- }
- ts.tomb = tomb.Tomb{}
- ts.server = exec.Command("mongod", args...)
- ts.server.Stdout = &ts.output
- ts.server.Stderr = &ts.output
- err = ts.server.Start()
- if err != nil {
- panic(err)
- }
- ts.tomb.Go(ts.monitor)
- ts.Wipe()
-}
-
-func (ts *TestServer) monitor() error {
- ts.server.Process.Wait()
- if ts.tomb.Alive() {
- // Present some debugging information.
- fmt.Fprintf(os.Stderr, "---- mongod process died unexpectedly:\n")
- fmt.Fprintf(os.Stderr, "%s", ts.output.Bytes())
- fmt.Fprintf(os.Stderr, "---- mongod processes running right now:\n")
- cmd := exec.Command("/bin/sh", "-c", "ps auxw | grep mongod")
- cmd.Stdout = os.Stderr
- cmd.Stderr = os.Stderr
- cmd.Run()
- fmt.Fprintf(os.Stderr, "----------------------------------------\n")
-
- panic("mongod process died unexpectedly")
- }
- return nil
-}
-
-// WARNING: This package was replaced by mgo.v2/dbtest.
-func (ts *TestServer) Stop() {
- if ts.session != nil {
- ts.checkSessions()
- if ts.session != nil {
- ts.session.Close()
- ts.session = nil
- }
- }
- if ts.server != nil {
- ts.tomb.Kill(nil)
- ts.server.Process.Kill()
- select {
- case <-ts.tomb.Dead():
- case <-time.After(5 * time.Second):
- panic("timeout waiting for mongod process to die")
- }
- ts.server = nil
- }
-}
-
-// WARNING: This package was replaced by mgo.v2/dbtest.
-func (ts *TestServer) Session() *mgo.Session {
- if ts.server == nil {
- ts.start()
- }
- if ts.session == nil {
- mgo.ResetStats()
- var err error
- ts.session, err = mgo.Dial(ts.host + "/test")
- if err != nil {
- panic(err)
- }
- }
- return ts.session.Copy()
-}
-
-// WARNING: This package was replaced by mgo.v2/dbtest.
-func (ts *TestServer) checkSessions() {
- if check := os.Getenv("CHECK_SESSIONS"); check == "0" || ts.server == nil || ts.session == nil {
- return
- }
- ts.session.Close()
- ts.session = nil
- for i := 0; i < 100; i++ {
- stats := mgo.GetStats()
- if stats.SocketsInUse == 0 && stats.SocketsAlive == 0 {
- return
- }
- time.Sleep(100 * time.Millisecond)
- }
- panic("There are mgo sessions still alive.")
-}
-
-// WARNING: This package was replaced by mgo.v2/dbtest.
-func (ts *TestServer) Wipe() {
- if ts.server == nil || ts.session == nil {
- return
- }
- ts.checkSessions()
- sessionUnset := ts.session == nil
- session := ts.Session()
- defer session.Close()
- if sessionUnset {
- ts.session.Close()
- ts.session = nil
- }
- names, err := session.DatabaseNames()
- if err != nil {
- panic(err)
- }
- for _, name := range names {
- switch name {
- case "admin", "local", "config":
- default:
- err = session.DB(name).DropDatabase()
- if err != nil {
- panic(err)
- }
- }
- }
-}