From eadd589b8cf9cedcd4f266260056a7987075ca4f Mon Sep 17 00:00:00 2001 From: nylar Date: Mon, 12 Jan 2015 10:26:56 +0000 Subject: [PATCH] Sped up tests by clearing the tables instead of deleting, tests from 45 seconds to ~1.2 seconds --- crawl_test.go | 4 ++-- indexer_test.go | 23 ++++++++++++++++++----- search_test.go | 9 ++++++--- utils.go | 10 ++++++++-- 4 files changed, 34 insertions(+), 12 deletions(-) diff --git a/crawl_test.go b/crawl_test.go index b22beb3..7e7301a 100644 --- a/crawl_test.go +++ b/crawl_test.go @@ -27,7 +27,7 @@ func TestCrawl_grabURL(t *testing.T) { } func TestCrawl_Crawler(t *testing.T) { - DatabaseRebuild(session) + defer tearDbDown(session) data := []byte("really cool stuff") ts := Handler(200, data) @@ -38,7 +38,7 @@ func TestCrawl_Crawler(t *testing.T) { } func TestCrawl_CrawlerNoURL(t *testing.T) { - DatabaseRebuild(session) + defer tearDbDown(session) err := Crawler("", session) assert.Error(t, err) diff --git a/indexer_test.go b/indexer_test.go index 23f78be..eaea01e 100644 --- a/indexer_test.go +++ b/indexer_test.go @@ -44,8 +44,21 @@ func init() { } // Reset database - rdb.DbDrop(Conf.Database.Name).Exec(session) rdb.DbCreate(Conf.Database.Name).Exec(session) + rdb.Db(Conf.Database.Name).TableCreate(Conf.Tables.DocumentTable).Exec(session) + rdb.Db(Conf.Database.Name).TableCreate(Conf.Tables.IndexTable).Exec(session) + rdb.Db(Conf.Database.Name).Table(Conf.Tables.IndexTable).IndexCreate("word").Exec(session) +} + +func tearDbDown(session *rdb.Session) { + rdb.Db(Conf.Database.Name).Table(Conf.Tables.DocumentTable).Delete(rdb.DeleteOpts{ + Durability: "soft", + ReturnChanges: false, + }).Exec(session) + rdb.Db(Conf.Database.Name).Table(Conf.Tables.IndexTable).Delete(rdb.DeleteOpts{ + Durability: "soft", + ReturnChanges: false, + }).Exec(session) } func TestIndexer_Stopper(t *testing.T) { @@ -164,7 +177,7 @@ func TestIndexer_IndexString(t *testing.T) { } func TestIndexer_IndexPut(t *testing.T) { - DatabaseRebuild(session) + defer tearDbDown(session) index := Index{Word: "hello", Count: 5, DocumentID: "12345-67890-ABCDE"} @@ -185,7 +198,7 @@ func TestIndexer_IndexPut(t *testing.T) { } func TestIndexer_IndexPutInvalid(t *testing.T) { - DatabaseRebuild(session) + defer tearDbDown(session) i := Index{ID: "1"} i2 := Index{ID: "1"} @@ -221,7 +234,7 @@ func TestIndexer_DocumentString(t *testing.T) { } func TestIndexer_DocumentPut(t *testing.T) { - DatabaseRebuild(session) + defer tearDbDown(session) doc := Document{ Source: "www.google.com", @@ -244,7 +257,7 @@ func TestIndexer_DocumentPut(t *testing.T) { } func TestIndexer_DocumentPutDupeDocs(t *testing.T) { - DatabaseRebuild(session) + defer tearDbDown(session) doc1 := Document{ID: "1"} doc2 := Document{ID: "1"} diff --git a/search_test.go b/search_test.go index 95d88a8..9c41091 100644 --- a/search_test.go +++ b/search_test.go @@ -18,8 +18,6 @@ func tearDown() { } func SearchSetup() error { - DatabaseRebuild(session) - d1 := Document{ ID: "1", Source: "http://example.com", @@ -59,6 +57,8 @@ func SearchSetup() error { } func TestSearch_Search(t *testing.T) { + defer tearDbDown(session) + setUp(1) if err := SearchSetup(); err != nil { t.Errorf(err.Error()) @@ -74,6 +74,8 @@ func TestSearch_Search(t *testing.T) { } func TestSearch_SearchNumberOfResults(t *testing.T) { + defer tearDbDown(session) + if err := SearchSetup(); err != nil { t.Errorf(err.Error()) } @@ -99,7 +101,8 @@ func TestSearch_SearchNumberOfResultsNoIndex(t *testing.T) { } func TestSearch_SearchWithNoIndex(t *testing.T) { - DatabaseRebuild(session) + defer tearDbDown(session) + rdb.Db(Conf.Database.Name).Table(Conf.Tables.IndexTable).IndexDrop("word").Exec(session) _, err := Search("hello", session, 1) diff --git a/utils.go b/utils.go index 4fbb142..ada97ef 100644 --- a/utils.go +++ b/utils.go @@ -22,11 +22,17 @@ var ( // DatabaseRebuild resets the database to an empty state, it also sets the // secondary index for the index table. func DatabaseRebuild(session *rdb.Session) { - rdb.Db(Conf.Database.Name).TableDrop(Conf.Tables.DocumentTable).Exec(session) - rdb.Db(Conf.Database.Name).TableDrop(Conf.Tables.IndexTable).Exec(session) rdb.Db(Conf.Database.Name).TableCreate(Conf.Tables.DocumentTable).Exec(session) rdb.Db(Conf.Database.Name).TableCreate(Conf.Tables.IndexTable).Exec(session) rdb.Db(Conf.Database.Name).Table(Conf.Tables.IndexTable).IndexCreate("word").Exec(session) + rdb.Db(Conf.Database.Name).Table(Conf.Tables.DocumentTable).Delete(rdb.DeleteOpts{ + Durability: "soft", + ReturnChanges: false, + }).Exec(session) + rdb.Db(Conf.Database.Name).Table(Conf.Tables.IndexTable).Delete(rdb.DeleteOpts{ + Durability: "soft", + ReturnChanges: false, + }).Exec(session) } // ToString converts an interface{} to a string, a string, byte slice or integer