~nskaggs/+junk/xenial-test

« back to all changes in this revision

Viewing changes to src/gopkg.in/mgo.v2/dbtest/dbserver_test.go

  • Committer: Nicholas Skaggs
  • Date: 2016-10-24 20:56:05 UTC
  • Revision ID: nicholas.skaggs@canonical.com-20161024205605-z8lta0uvuhtxwzwl
Initi with beta15

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
package dbtest_test
 
2
 
 
3
import (
 
4
        "os"
 
5
        "testing"
 
6
        "time"
 
7
 
 
8
        . "gopkg.in/check.v1"
 
9
 
 
10
        "gopkg.in/mgo.v2"
 
11
        "gopkg.in/mgo.v2/dbtest"
 
12
)
 
13
 
 
14
type M map[string]interface{}
 
15
 
 
16
func TestAll(t *testing.T) {
 
17
        TestingT(t)
 
18
}
 
19
 
 
20
type S struct {
 
21
        oldCheckSessions string
 
22
}
 
23
 
 
24
var _ = Suite(&S{})
 
25
 
 
26
func (s *S) SetUpTest(c *C) {
 
27
        s.oldCheckSessions = os.Getenv("CHECK_SESSIONS")
 
28
        os.Setenv("CHECK_SESSIONS", "")
 
29
}
 
30
 
 
31
func (s *S) TearDownTest(c *C) {
 
32
        os.Setenv("CHECK_SESSIONS", s.oldCheckSessions)
 
33
}
 
34
 
 
35
func (s *S) TestWipeData(c *C) {
 
36
        var server dbtest.DBServer
 
37
        server.SetPath(c.MkDir())
 
38
        defer server.Stop()
 
39
 
 
40
        session := server.Session()
 
41
        err := session.DB("mydb").C("mycoll").Insert(M{"a": 1})
 
42
        session.Close()
 
43
        c.Assert(err, IsNil)
 
44
 
 
45
        server.Wipe()
 
46
 
 
47
        session = server.Session()
 
48
        names, err := session.DatabaseNames()
 
49
        session.Close()
 
50
        c.Assert(err, IsNil)
 
51
        for _, name := range names {
 
52
                if name != "local" && name != "admin" {
 
53
                        c.Fatalf("Wipe should have removed this database: %s", name)
 
54
                }
 
55
        }
 
56
}
 
57
 
 
58
func (s *S) TestStop(c *C) {
 
59
        var server dbtest.DBServer
 
60
        server.SetPath(c.MkDir())
 
61
        defer server.Stop()
 
62
 
 
63
        // Server should not be running.
 
64
        process := server.ProcessTest()
 
65
        c.Assert(process, IsNil)
 
66
 
 
67
        session := server.Session()
 
68
        addr := session.LiveServers()[0]
 
69
        session.Close()
 
70
 
 
71
        // Server should be running now.
 
72
        process = server.ProcessTest()
 
73
        p, err := os.FindProcess(process.Pid)
 
74
        c.Assert(err, IsNil)
 
75
        p.Release()
 
76
 
 
77
        server.Stop()
 
78
 
 
79
        // Server should not be running anymore.
 
80
        session, err = mgo.DialWithTimeout(addr, 500*time.Millisecond)
 
81
        if session != nil {
 
82
                session.Close()
 
83
                c.Fatalf("Stop did not stop the server")
 
84
        }
 
85
}
 
86
 
 
87
func (s *S) TestCheckSessions(c *C) {
 
88
        var server dbtest.DBServer
 
89
        server.SetPath(c.MkDir())
 
90
        defer server.Stop()
 
91
 
 
92
        session := server.Session()
 
93
        defer session.Close()
 
94
        c.Assert(server.Wipe, PanicMatches, "There are mgo sessions still alive.")
 
95
}
 
96
 
 
97
func (s *S) TestCheckSessionsDisabled(c *C) {
 
98
        var server dbtest.DBServer
 
99
        server.SetPath(c.MkDir())
 
100
        defer server.Stop()
 
101
 
 
102
        os.Setenv("CHECK_SESSIONS", "0")
 
103
 
 
104
        // Should not panic, although it looks to Wipe like this session will leak.
 
105
        session := server.Session()
 
106
        defer session.Close()
 
107
        server.Wipe()
 
108
}