gopkg.in/rethinkdb/rethinkdb-go.v6@v6.2.2/internal/integration/tests/session_test.go (about) 1 package tests 2 3 import ( 4 "os" 5 "time" 6 7 test "gopkg.in/check.v1" 8 r "gopkg.in/rethinkdb/rethinkdb-go.v6" 9 ) 10 11 func (s *RethinkSuite) TestSessionConnect(c *test.C) { 12 session, err := r.Connect(r.ConnectOpts{ 13 Address: url, 14 }) 15 c.Assert(err, test.IsNil) 16 17 row, err := r.Expr("Hello World").Run(session) 18 c.Assert(err, test.IsNil) 19 20 var response string 21 err = row.One(&response) 22 c.Assert(err, test.IsNil) 23 c.Assert(response, test.Equals, "Hello World") 24 } 25 26 func (s *RethinkSuite) TestSessionConnectHandshakeV1_0(c *test.C) { 27 session, err := r.Connect(r.ConnectOpts{ 28 Address: url, 29 HandshakeVersion: r.HandshakeV1_0, 30 }) 31 c.Assert(err, test.IsNil) 32 33 row, err := r.Expr("Hello World").Run(session) 34 c.Assert(err, test.IsNil) 35 36 var response string 37 err = row.One(&response) 38 c.Assert(err, test.IsNil) 39 c.Assert(response, test.Equals, "Hello World") 40 } 41 42 func (s *RethinkSuite) TestSessionConnectHandshakeV0_4(c *test.C) { 43 session, err := r.Connect(r.ConnectOpts{ 44 Address: url, 45 HandshakeVersion: r.HandshakeV0_4, 46 }) 47 c.Assert(err, test.IsNil) 48 49 row, err := r.Expr("Hello World").Run(session) 50 c.Assert(err, test.IsNil) 51 52 var response string 53 err = row.One(&response) 54 c.Assert(err, test.IsNil) 55 c.Assert(response, test.Equals, "Hello World") 56 } 57 58 func (s *RethinkSuite) TestSessionReconnect(c *test.C) { 59 session, err := r.Connect(r.ConnectOpts{ 60 Address: url, 61 }) 62 c.Assert(err, test.IsNil) 63 64 row, err := r.Expr("Hello World").Run(session) 65 c.Assert(err, test.IsNil) 66 67 var response string 68 err = row.One(&response) 69 c.Assert(err, test.IsNil) 70 c.Assert(response, test.Equals, "Hello World") 71 72 err = session.Reconnect() 73 c.Assert(err, test.IsNil) 74 75 row, err = r.Expr("Hello World 2").Run(session) 76 c.Assert(err, test.IsNil) 77 78 err = row.One(&response) 79 c.Assert(err, test.IsNil) 80 c.Assert(response, test.Equals, "Hello World 2") 81 } 82 83 func (s *RethinkSuite) TestSessionConnectError(c *test.C) { 84 var err error 85 _, err = r.Connect(r.ConnectOpts{ 86 Address: "nonexistanturl", 87 Timeout: time.Second, 88 }) 89 90 c.Assert(err, test.NotNil) 91 c.Assert(err, test.FitsTypeOf, r.RQLConnectionError{}) 92 } 93 94 func (s *RethinkSuite) TestSessionClose(c *test.C) { 95 session, err := r.Connect(r.ConnectOpts{ 96 Address: url, 97 }) 98 c.Assert(err, test.IsNil) 99 100 _, err = r.Expr("Hello World").Run(session) 101 c.Assert(err, test.IsNil) 102 103 err = session.Close() 104 c.Assert(err, test.IsNil) 105 106 _, err = r.Expr("Hello World").Run(session) 107 c.Assert(err, test.NotNil) 108 } 109 110 func (s *RethinkSuite) TestSessionServer(c *test.C) { 111 session, err := r.Connect(r.ConnectOpts{ 112 Address: url, 113 }) 114 c.Assert(err, test.IsNil) 115 116 server, err := session.Server() 117 c.Assert(err, test.IsNil) 118 119 c.Assert(len(server.ID) > 0, test.Equals, true) 120 c.Assert(len(server.Name) > 0, test.Equals, true) 121 } 122 123 func (s *RethinkSuite) TestSessionConnectDatabase(c *test.C) { 124 session, err := r.Connect(r.ConnectOpts{ 125 Address: url, 126 AuthKey: os.Getenv("RETHINKDB_AUTHKEY"), 127 Database: "test2", 128 }) 129 c.Assert(err, test.IsNil) 130 c.Assert(session.Database(), test.Equals, "test2") 131 132 _, err = r.Table("test2").Run(session) 133 c.Assert(err, test.NotNil) 134 c.Assert(err.Error(), test.Equals, "rethinkdb: Database `test2` does not exist. in:\nr.Table(\"test2\")") 135 136 session.Use("test3") 137 c.Assert(session.Database(), test.Equals, "test3") 138 } 139 140 func (s *RethinkSuite) TestSessionConnectUsername(c *test.C) { 141 session, err := r.Connect(r.ConnectOpts{ 142 Address: url, 143 }) 144 c.Assert(err, test.IsNil) 145 146 r.DB("rethinkdb").Table("users").Insert(map[string]string{ 147 "id": "rethinkdb_test", 148 "password": "password", 149 }).Exec(session) 150 151 session, err = r.Connect(r.ConnectOpts{ 152 Address: url, 153 Username: "rethinkdb_test", 154 Password: "password", 155 }) 156 c.Assert(err, test.IsNil) 157 158 _, err = r.Expr("Hello World").Run(session) 159 c.Assert(err, test.IsNil) 160 } 161 162 func (s *RethinkSuite) TestSessionIdleConnectionRemainsUsableSmallTimeout(c *test.C) { 163 session, err := r.Connect(r.ConnectOpts{ 164 Address: url, 165 NumRetries: 1, 166 InitialCap: 1, 167 ReadTimeout: 10 * time.Millisecond, 168 WriteTimeout: 10 * time.Millisecond, 169 }) 170 c.Assert(err, test.IsNil) 171 172 time.Sleep(20 * time.Millisecond) 173 174 var num int 175 err = r.Expr(5).ReadOne(&num, session) 176 c.Assert(err, test.IsNil) 177 c.Assert(num, test.Equals, 5) 178 179 time.Sleep(20 * time.Millisecond) 180 181 err = r.Expr(6).ReadOne(&num, session) 182 c.Assert(err, test.IsNil) 183 c.Assert(num, test.Equals, 6) 184 } 185 186 func (s *RethinkSuite) TestSessionIdleConnectionRemainsUsableNoTimeout(c *test.C) { 187 session, err := r.Connect(r.ConnectOpts{ 188 Address: url, 189 NumRetries: 1, 190 InitialCap: 1, 191 }) 192 c.Assert(err, test.IsNil) 193 194 time.Sleep(10 * time.Millisecond) 195 196 var num int 197 err = r.Expr(5).ReadOne(&num, session) 198 c.Assert(err, test.IsNil) 199 c.Assert(num, test.Equals, 5) 200 201 time.Sleep(10 * time.Millisecond) 202 203 err = r.Expr(6).ReadOne(&num, session) 204 c.Assert(err, test.IsNil) 205 c.Assert(num, test.Equals, 6) 206 }