gopkg.in/rethinkdb/rethinkdb-go.v6@v6.2.2/internal/integration/reql_tests/reql_changefeeds_table_test.go (about)

     1  // Code generated by gen_tests.py and process_polyglot.py.
     2  // Do not edit this file directly.
     3  // The template for this file is located at:
     4  // ../template.go.tpl
     5  package reql_tests
     6  
     7  import (
     8  	"testing"
     9  	"time"
    10  
    11  	"github.com/stretchr/testify/suite"
    12  	r "gopkg.in/rethinkdb/rethinkdb-go.v6"
    13  	"gopkg.in/rethinkdb/rethinkdb-go.v6/internal/compare"
    14  )
    15  
    16  // Test changefeeds on a table
    17  func TestChangefeedsTableSuite(t *testing.T) {
    18  	suite.Run(t, new(ChangefeedsTableSuite))
    19  }
    20  
    21  type ChangefeedsTableSuite struct {
    22  	suite.Suite
    23  
    24  	session *r.Session
    25  }
    26  
    27  func (suite *ChangefeedsTableSuite) SetupTest() {
    28  	suite.T().Log("Setting up ChangefeedsTableSuite")
    29  	// Use imports to prevent errors
    30  	_ = time.Time{}
    31  	_ = compare.AnythingIsFine
    32  
    33  	session, err := r.Connect(r.ConnectOpts{
    34  		Address: url,
    35  	})
    36  	suite.Require().NoError(err, "Error returned when connecting to server")
    37  	suite.session = session
    38  
    39  	r.DBDrop("test").Exec(suite.session)
    40  	err = r.DBCreate("test").Exec(suite.session)
    41  	suite.Require().NoError(err)
    42  	err = r.DB("test").Wait().Exec(suite.session)
    43  	suite.Require().NoError(err)
    44  
    45  	r.DB("test").TableDrop("tbl").Exec(suite.session)
    46  	err = r.DB("test").TableCreate("tbl").Exec(suite.session)
    47  	suite.Require().NoError(err)
    48  	err = r.DB("test").Table("tbl").Wait().Exec(suite.session)
    49  	suite.Require().NoError(err)
    50  }
    51  
    52  func (suite *ChangefeedsTableSuite) TearDownSuite() {
    53  	suite.T().Log("Tearing down ChangefeedsTableSuite")
    54  
    55  	if suite.session != nil {
    56  		r.DB("rethinkdb").Table("_debug_scratch").Delete().Exec(suite.session)
    57  		r.DB("test").TableDrop("tbl").Exec(suite.session)
    58  		r.DBDrop("test").Exec(suite.session)
    59  
    60  		suite.session.Close()
    61  	}
    62  }
    63  
    64  func (suite *ChangefeedsTableSuite) TestCases() {
    65  	suite.T().Log("Running ChangefeedsTableSuite: Test changefeeds on a table")
    66  
    67  	tbl := r.DB("test").Table("tbl")
    68  	_ = tbl // Prevent any noused variable errors
    69  
    70  	// changefeeds/table.yaml line #9
    71  	// all = tbl.changes()
    72  	suite.T().Log("Possibly executing: var all r.Term = tbl.Changes()")
    73  
    74  	all := maybeRun(tbl.Changes(), suite.session, r.RunOpts{})
    75  	_ = all // Prevent any noused variable errors
    76  
    77  	{
    78  		// changefeeds/table.yaml line #15
    79  		/* partial({'errors':0, 'inserted':2}) */
    80  		var expected_ compare.Expected = compare.PartialMatch(map[interface{}]interface{}{"errors": 0, "inserted": 2})
    81  		/* tbl.insert([{'id':1}, {'id':2}]) */
    82  
    83  		suite.T().Log("About to run line #15: tbl.Insert([]interface{}{map[interface{}]interface{}{'id': 1, }, map[interface{}]interface{}{'id': 2, }})")
    84  
    85  		runAndAssert(suite.Suite, expected_, tbl.Insert([]interface{}{map[interface{}]interface{}{"id": 1}, map[interface{}]interface{}{"id": 2}}), suite.session, r.RunOpts{
    86  			GeometryFormat: "raw",
    87  			GroupFormat:    "map",
    88  		})
    89  		suite.T().Log("Finished running line #15")
    90  	}
    91  
    92  	{
    93  		// changefeeds/table.yaml line #17
    94  		/* bag([{'old_val':null, 'new_val':{'id':1}}, {'old_val':null, 'new_val':{'id':2}}]) */
    95  		var expected_ compare.Expected = compare.UnorderedMatch([]interface{}{map[interface{}]interface{}{"old_val": nil, "new_val": map[interface{}]interface{}{"id": 1}}, map[interface{}]interface{}{"old_val": nil, "new_val": map[interface{}]interface{}{"id": 2}}})
    96  		/* fetch(all, 2) */
    97  
    98  		suite.T().Log("About to run line #17: fetch(all, 2)")
    99  
   100  		fetchAndAssert(suite.Suite, expected_, all, 2)
   101  		suite.T().Log("Finished running line #17")
   102  	}
   103  
   104  	{
   105  		// changefeeds/table.yaml line #22
   106  		/* partial({'errors':0, 'replaced':1}) */
   107  		var expected_ compare.Expected = compare.PartialMatch(map[interface{}]interface{}{"errors": 0, "replaced": 1})
   108  		/* tbl.get(1).update({'version':1}) */
   109  
   110  		suite.T().Log("About to run line #22: tbl.Get(1).Update(map[interface{}]interface{}{'version': 1, })")
   111  
   112  		runAndAssert(suite.Suite, expected_, tbl.Get(1).Update(map[interface{}]interface{}{"version": 1}), suite.session, r.RunOpts{
   113  			GeometryFormat: "raw",
   114  			GroupFormat:    "map",
   115  		})
   116  		suite.T().Log("Finished running line #22")
   117  	}
   118  
   119  	{
   120  		// changefeeds/table.yaml line #24
   121  		/* [{'old_val':{'id':1}, 'new_val':{'id':1, 'version':1}}] */
   122  		var expected_ []interface{} = []interface{}{map[interface{}]interface{}{"old_val": map[interface{}]interface{}{"id": 1}, "new_val": map[interface{}]interface{}{"id": 1, "version": 1}}}
   123  		/* fetch(all, 1) */
   124  
   125  		suite.T().Log("About to run line #24: fetch(all, 1)")
   126  
   127  		fetchAndAssert(suite.Suite, expected_, all, 1)
   128  		suite.T().Log("Finished running line #24")
   129  	}
   130  
   131  	{
   132  		// changefeeds/table.yaml line #29
   133  		/* partial({'errors':0, 'deleted':1}) */
   134  		var expected_ compare.Expected = compare.PartialMatch(map[interface{}]interface{}{"errors": 0, "deleted": 1})
   135  		/* tbl.get(1).delete() */
   136  
   137  		suite.T().Log("About to run line #29: tbl.Get(1).Delete()")
   138  
   139  		runAndAssert(suite.Suite, expected_, tbl.Get(1).Delete(), suite.session, r.RunOpts{
   140  			GeometryFormat: "raw",
   141  			GroupFormat:    "map",
   142  		})
   143  		suite.T().Log("Finished running line #29")
   144  	}
   145  
   146  	{
   147  		// changefeeds/table.yaml line #31
   148  		/* [{'old_val':{'id':1, 'version':1}, 'new_val':null}] */
   149  		var expected_ []interface{} = []interface{}{map[interface{}]interface{}{"old_val": map[interface{}]interface{}{"id": 1, "version": 1}, "new_val": nil}}
   150  		/* fetch(all, 1) */
   151  
   152  		suite.T().Log("About to run line #31: fetch(all, 1)")
   153  
   154  		fetchAndAssert(suite.Suite, expected_, all, 1)
   155  		suite.T().Log("Finished running line #31")
   156  	}
   157  
   158  	// changefeeds/table.yaml line #36
   159  	// pluck = tbl.changes().pluck({'new_val':['version']})
   160  	suite.T().Log("Possibly executing: var pluck r.Term = tbl.Changes().Pluck(map[interface{}]interface{}{'new_val': []interface{}{'version'}, })")
   161  
   162  	pluck := maybeRun(tbl.Changes().Pluck(map[interface{}]interface{}{"new_val": []interface{}{"version"}}), suite.session, r.RunOpts{})
   163  	_ = pluck // Prevent any noused variable errors
   164  
   165  	{
   166  		// changefeeds/table.yaml line #37
   167  		/* partial({'errors':0, 'inserted':1}) */
   168  		var expected_ compare.Expected = compare.PartialMatch(map[interface{}]interface{}{"errors": 0, "inserted": 1})
   169  		/* tbl.insert([{'id':5, 'version':5}]) */
   170  
   171  		suite.T().Log("About to run line #37: tbl.Insert([]interface{}{map[interface{}]interface{}{'id': 5, 'version': 5, }})")
   172  
   173  		runAndAssert(suite.Suite, expected_, tbl.Insert([]interface{}{map[interface{}]interface{}{"id": 5, "version": 5}}), suite.session, r.RunOpts{
   174  			GeometryFormat: "raw",
   175  			GroupFormat:    "map",
   176  		})
   177  		suite.T().Log("Finished running line #37")
   178  	}
   179  
   180  	{
   181  		// changefeeds/table.yaml line #39
   182  		/* [{'new_val':{'version':5}}] */
   183  		var expected_ []interface{} = []interface{}{map[interface{}]interface{}{"new_val": map[interface{}]interface{}{"version": 5}}}
   184  		/* fetch(pluck, 1) */
   185  
   186  		suite.T().Log("About to run line #39: fetch(pluck, 1)")
   187  
   188  		fetchAndAssert(suite.Suite, expected_, pluck, 1)
   189  		suite.T().Log("Finished running line #39")
   190  	}
   191  
   192  	{
   193  		// changefeeds/table.yaml line #44
   194  		/* err('ReqlQueryLogicError', "Cannot call a terminal (`reduce`, `count`, etc.) on an infinite stream (such as a changefeed).") */
   195  		var expected_ Err = err("ReqlQueryLogicError", "Cannot call a terminal (`reduce`, `count`, etc.) on an infinite stream (such as a changefeed).")
   196  		/* tbl.changes().order_by('id') */
   197  
   198  		suite.T().Log("About to run line #44: tbl.Changes().OrderBy('id')")
   199  
   200  		runAndAssert(suite.Suite, expected_, tbl.Changes().OrderBy("id"), suite.session, r.RunOpts{
   201  			GeometryFormat: "raw",
   202  			GroupFormat:    "map",
   203  		})
   204  		suite.T().Log("Finished running line #44")
   205  	}
   206  
   207  	// changefeeds/table.yaml line #59
   208  	// overflow = tbl.changes()
   209  	suite.T().Log("Possibly executing: var overflow r.Term = tbl.Changes()")
   210  
   211  	overflow := maybeRun(tbl.Changes(), suite.session, r.RunOpts{
   212  		ChangefeedQueueSize: 100,
   213  	})
   214  	_ = overflow // Prevent any noused variable errors
   215  
   216  	{
   217  		// changefeeds/table.yaml line #64
   218  		/* AnythingIsFine */
   219  		var expected_ string = compare.AnythingIsFine
   220  		/* tbl.insert(r.range(200).map(lambda x: {})) */
   221  
   222  		suite.T().Log("About to run line #64: tbl.Insert(r.Range(200).Map(func(x r.Term) interface{} { return map[interface{}]interface{}{}}))")
   223  
   224  		runAndAssert(suite.Suite, expected_, tbl.Insert(r.Range(200).Map(func(x r.Term) interface{} { return map[interface{}]interface{}{} })), suite.session, r.RunOpts{
   225  			GeometryFormat: "raw",
   226  			GroupFormat:    "map",
   227  		})
   228  		suite.T().Log("Finished running line #64")
   229  	}
   230  
   231  	{
   232  		// changefeeds/table.yaml line #66
   233  		/* partial([{'error': regex('Changefeed cache over array size limit, skipped \d+ elements.')}]) */
   234  		var expected_ compare.Expected = compare.PartialMatch([]interface{}{map[interface{}]interface{}{"error": compare.MatchesRegexp("Changefeed cache over array size limit, skipped \\d+ elements.")}})
   235  		/* fetch(overflow, 90) */
   236  
   237  		suite.T().Log("About to run line #66: fetch(overflow, 90)")
   238  
   239  		fetchAndAssert(suite.Suite, expected_, overflow, 90)
   240  		suite.T().Log("Finished running line #66")
   241  	}
   242  
   243  	// changefeeds/table.yaml line #71
   244  	// vtbl = r.db('rethinkdb').table('_debug_scratch')
   245  	suite.T().Log("Possibly executing: var vtbl r.Term = r.DB('rethinkdb').Table('_debug_scratch')")
   246  
   247  	vtbl := r.DB("rethinkdb").Table("_debug_scratch")
   248  	_ = vtbl // Prevent any noused variable errors
   249  
   250  	// changefeeds/table.yaml line #72
   251  	// allVirtual = vtbl.changes()
   252  	suite.T().Log("Possibly executing: var allVirtual r.Term = vtbl.Changes()")
   253  
   254  	allVirtual := maybeRun(vtbl.Changes(), suite.session, r.RunOpts{})
   255  	_ = allVirtual // Prevent any noused variable errors
   256  
   257  	{
   258  		// changefeeds/table.yaml line #76
   259  		/* partial({'errors':0, 'inserted':2}) */
   260  		var expected_ compare.Expected = compare.PartialMatch(map[interface{}]interface{}{"errors": 0, "inserted": 2})
   261  		/* vtbl.insert([{'id':1}, {'id':2}]) */
   262  
   263  		suite.T().Log("About to run line #76: vtbl.Insert([]interface{}{map[interface{}]interface{}{'id': 1, }, map[interface{}]interface{}{'id': 2, }})")
   264  
   265  		runAndAssert(suite.Suite, expected_, vtbl.Insert([]interface{}{map[interface{}]interface{}{"id": 1}, map[interface{}]interface{}{"id": 2}}), suite.session, r.RunOpts{
   266  			GeometryFormat: "raw",
   267  			GroupFormat:    "map",
   268  		})
   269  		suite.T().Log("Finished running line #76")
   270  	}
   271  
   272  	{
   273  		// changefeeds/table.yaml line #78
   274  		/* bag([{'old_val':null, 'new_val':{'id':1}}, {'old_val':null, 'new_val':{'id':2}}]) */
   275  		var expected_ compare.Expected = compare.UnorderedMatch([]interface{}{map[interface{}]interface{}{"old_val": nil, "new_val": map[interface{}]interface{}{"id": 1}}, map[interface{}]interface{}{"old_val": nil, "new_val": map[interface{}]interface{}{"id": 2}}})
   276  		/* fetch(allVirtual, 2) */
   277  
   278  		suite.T().Log("About to run line #78: fetch(allVirtual, 2)")
   279  
   280  		fetchAndAssert(suite.Suite, expected_, allVirtual, 2)
   281  		suite.T().Log("Finished running line #78")
   282  	}
   283  
   284  	{
   285  		// changefeeds/table.yaml line #83
   286  		/* partial({'errors':0, 'replaced':1}) */
   287  		var expected_ compare.Expected = compare.PartialMatch(map[interface{}]interface{}{"errors": 0, "replaced": 1})
   288  		/* vtbl.get(1).update({'version':1}) */
   289  
   290  		suite.T().Log("About to run line #83: vtbl.Get(1).Update(map[interface{}]interface{}{'version': 1, })")
   291  
   292  		runAndAssert(suite.Suite, expected_, vtbl.Get(1).Update(map[interface{}]interface{}{"version": 1}), suite.session, r.RunOpts{
   293  			GeometryFormat: "raw",
   294  			GroupFormat:    "map",
   295  		})
   296  		suite.T().Log("Finished running line #83")
   297  	}
   298  
   299  	{
   300  		// changefeeds/table.yaml line #85
   301  		/* [{'old_val':{'id':1}, 'new_val':{'id':1, 'version':1}}] */
   302  		var expected_ []interface{} = []interface{}{map[interface{}]interface{}{"old_val": map[interface{}]interface{}{"id": 1}, "new_val": map[interface{}]interface{}{"id": 1, "version": 1}}}
   303  		/* fetch(allVirtual, 1) */
   304  
   305  		suite.T().Log("About to run line #85: fetch(allVirtual, 1)")
   306  
   307  		fetchAndAssert(suite.Suite, expected_, allVirtual, 1)
   308  		suite.T().Log("Finished running line #85")
   309  	}
   310  
   311  	{
   312  		// changefeeds/table.yaml line #90
   313  		/* partial({'errors':0, 'deleted':1}) */
   314  		var expected_ compare.Expected = compare.PartialMatch(map[interface{}]interface{}{"errors": 0, "deleted": 1})
   315  		/* vtbl.get(1).delete() */
   316  
   317  		suite.T().Log("About to run line #90: vtbl.Get(1).Delete()")
   318  
   319  		runAndAssert(suite.Suite, expected_, vtbl.Get(1).Delete(), suite.session, r.RunOpts{
   320  			GeometryFormat: "raw",
   321  			GroupFormat:    "map",
   322  		})
   323  		suite.T().Log("Finished running line #90")
   324  	}
   325  
   326  	{
   327  		// changefeeds/table.yaml line #92
   328  		/* [{'old_val':{'id':1, 'version':1}, 'new_val':null}] */
   329  		var expected_ []interface{} = []interface{}{map[interface{}]interface{}{"old_val": map[interface{}]interface{}{"id": 1, "version": 1}, "new_val": nil}}
   330  		/* fetch(allVirtual, 1) */
   331  
   332  		suite.T().Log("About to run line #92: fetch(allVirtual, 1)")
   333  
   334  		fetchAndAssert(suite.Suite, expected_, allVirtual, 1)
   335  		suite.T().Log("Finished running line #92")
   336  	}
   337  
   338  	// changefeeds/table.yaml line #97
   339  	// vpluck = vtbl.changes().pluck({'new_val':['version']})
   340  	suite.T().Log("Possibly executing: var vpluck r.Term = vtbl.Changes().Pluck(map[interface{}]interface{}{'new_val': []interface{}{'version'}, })")
   341  
   342  	vpluck := maybeRun(vtbl.Changes().Pluck(map[interface{}]interface{}{"new_val": []interface{}{"version"}}), suite.session, r.RunOpts{})
   343  	_ = vpluck // Prevent any noused variable errors
   344  
   345  	{
   346  		// changefeeds/table.yaml line #98
   347  		/* partial({'errors':0, 'inserted':1}) */
   348  		var expected_ compare.Expected = compare.PartialMatch(map[interface{}]interface{}{"errors": 0, "inserted": 1})
   349  		/* vtbl.insert([{'id':5, 'version':5}]) */
   350  
   351  		suite.T().Log("About to run line #98: vtbl.Insert([]interface{}{map[interface{}]interface{}{'id': 5, 'version': 5, }})")
   352  
   353  		runAndAssert(suite.Suite, expected_, vtbl.Insert([]interface{}{map[interface{}]interface{}{"id": 5, "version": 5}}), suite.session, r.RunOpts{
   354  			GeometryFormat: "raw",
   355  			GroupFormat:    "map",
   356  		})
   357  		suite.T().Log("Finished running line #98")
   358  	}
   359  
   360  	{
   361  		// changefeeds/table.yaml line #100
   362  		/* [{'new_val':{'version':5}}] */
   363  		var expected_ []interface{} = []interface{}{map[interface{}]interface{}{"new_val": map[interface{}]interface{}{"version": 5}}}
   364  		/* fetch(vpluck, 1) */
   365  
   366  		suite.T().Log("About to run line #100: fetch(vpluck, 1)")
   367  
   368  		fetchAndAssert(suite.Suite, expected_, vpluck, 1)
   369  		suite.T().Log("Finished running line #100")
   370  	}
   371  }