Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Test tableInfoStore
  • Loading branch information
asdine committed Jul 27, 2020
1 parent 149bf7c commit 7edf0ff
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 36 deletions.
6 changes: 2 additions & 4 deletions cmd/genji/shell/command.go
Expand Up @@ -9,10 +9,8 @@ import (
func runTablesCmd(db *genji.DB) error {
var tables []string
err := db.View(func(tx *genji.Tx) error {
var err error

tables, err = tx.ListTables()
return err
tables = tx.ListTables()
return nil
})
if err != nil {
return err
Expand Down
4 changes: 3 additions & 1 deletion database/config.go
Expand Up @@ -258,6 +258,7 @@ func (t *tableInfoStore) loadAllTableInfo(tx engine.Transaction) error {
}

it := st.NewIterator(engine.IteratorConfig{})
defer it.Close()

t.tableInfos = make(map[string]TableInfo)
var b []byte
Expand All @@ -276,7 +277,8 @@ func (t *tableInfoStore) loadAllTableInfo(tx engine.Transaction) error {

t.tableInfos[string(itm.Key())] = ti
}
return it.Close()

return nil
}

// ListTables lists all the tables.
Expand Down
31 changes: 10 additions & 21 deletions database/config_test.go
Expand Up @@ -12,16 +12,13 @@ func TestTableInfoStore(t *testing.T) {
ng := memoryengine.NewEngine()
defer ng.Close()

tx, err := ng.Begin(true)
db, err := New(ng)
require.NoError(t, err)
defer tx.Rollback()
defer db.Close()

err = tx.CreateStore([]byte("foo"))
tx, err := db.Begin(true)
require.NoError(t, err)
st, err := tx.GetStore([]byte("foo"))
require.NoError(t, err)

tcs := tableInfoStore{st}
defer tx.Rollback()

info := &TableInfo{
FieldConstraints: []FieldConstraint{
Expand All @@ -30,37 +27,29 @@ func TestTableInfoStore(t *testing.T) {
}

// Inserting one tableInfo should work.
sid, err := tcs.Insert("foo1", info)
sid, err := tx.tableInfoStore.Insert(tx.Tx, "foo1", info)
require.NoError(t, err)
require.NotNil(t, sid)

// Inserting an existing tableInfo should not work.
_, err = tcs.Insert("foo1", info)
_, err = tx.tableInfoStore.Insert(tx.Tx, "foo1", info)
require.Equal(t, err, ErrTableAlreadyExists)

// Listing all tables should return their name
// lexicographically ordered.
_, _ = tcs.Insert("foo3", info)
_, _ = tcs.Insert("foo2", info)
lt, err := tcs.ListTables()
require.NoError(t, err)
require.Equal(t, []string{"foo1", "foo2", "foo3"}, lt)

// Getting an existing tableInfo should work.
received, err := tcs.Get("foo1")
received, err := tx.tableInfoStore.Get("foo1")
require.NoError(t, err)
require.NotNil(t, received.storeID)

// Getting a non-existing tableInfo should not work.
_, err = tcs.Get("unknown")
_, err = tx.tableInfoStore.Get("unknown")
require.Equal(t, ErrTableNotFound, err)

// Deleting an existing tableInfo should work.
err = tcs.Delete("foo1")
err = tx.tableInfoStore.Delete(tx.Tx, "foo1")
require.NoError(t, err)

// Deleting a non-existing tableInfo should not work.
err = tcs.Delete("foo1")
err = tx.tableInfoStore.Delete(tx.Tx, "foo1")
require.Equal(t, ErrTableNotFound, err)
}

Expand Down
9 changes: 3 additions & 6 deletions database/transaction_test.go
Expand Up @@ -79,11 +79,10 @@ func TestTxTable(t *testing.T) {
tx, cleanup := newTestDB(t)
defer cleanup()

tables, err := tx.ListTables()
require.NoError(t, err)
tables := tx.ListTables()
require.Len(t, tables, 0)

err = tx.CreateTable("foo", nil)
err := tx.CreateTable("foo", nil)
require.NoError(t, err)

err = tx.CreateTable("bar", nil)
Expand All @@ -92,9 +91,7 @@ func TestTxTable(t *testing.T) {
err = tx.CreateTable("baz", nil)
require.NoError(t, err)

tables, err = tx.ListTables()
require.NoError(t, err)

tables = tx.ListTables()
// The returned slice should be lexicographically ordered.
exp := []string{"bar", "baz", "foo"}
require.Equal(t, exp, tables)
Expand Down
6 changes: 2 additions & 4 deletions sql/query/drop_test.go
Expand Up @@ -30,10 +30,8 @@ func TestDropTable(t *testing.T) {
// Assert that only the table `test1` has been dropped.
var tables []string
err = db.View(func(tx *genji.Tx) error {
var err error

tables, err = tx.ListTables()
return err
tables = tx.ListTables()
return nil
})
require.Len(t, tables, 2)
}
Expand Down

0 comments on commit 7edf0ff

Please sign in to comment.