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  }