From 77c3f771e05cb25d9087b3a9022d1fbc35b28be2 Mon Sep 17 00:00:00 2001 From: George Tankersley Date: Tue, 20 Nov 2018 21:45:28 -0500 Subject: [PATCH] storage: test sqlite in-memory --- storage/sqlite3.go | 5 ++--- storage/sqlite3_test.go | 41 +++++++++++++++---------------------- storage/testdata/blocks.db | Bin 12288 -> 0 bytes 3 files changed, 19 insertions(+), 27 deletions(-) delete mode 100644 storage/testdata/blocks.db diff --git a/storage/sqlite3.go b/storage/sqlite3.go index 4bda13b..1dfe5a5 100644 --- a/storage/sqlite3.go +++ b/storage/sqlite3.go @@ -5,11 +5,10 @@ import "database/sql" func createBlockTable(conn *sql.DB) error { tableCreation := ` CREATE TABLE IF NOT EXISTS blocks ( - height INTEGER, + height INTEGER PRIMARY KEY, hash TEXT, has_sapling_tx BOOL, - compact_encoding BLOB, - PRIMARY KEY (height, hash) + compact_encoding BLOB ); ` _, err := conn.Exec(tableCreation) diff --git a/storage/sqlite3_test.go b/storage/sqlite3_test.go index d6438ad..1a4b552 100644 --- a/storage/sqlite3_test.go +++ b/storage/sqlite3_test.go @@ -2,13 +2,10 @@ package storage import ( "database/sql" - "encoding/base64" "encoding/hex" "encoding/json" "fmt" "io/ioutil" - "log" - "os" "testing" protobuf "github.com/golang/protobuf/proto" @@ -17,24 +14,6 @@ import ( "github.com/pkg/errors" ) -func TestMain(m *testing.M) { - conn, err := sql.Open("sqlite3", "testdata/blocks.db") - if err != nil { - log.Fatal(err) - } - - err = createBlockTable(conn) - if err != nil { - conn.Close() - log.Fatal(err) - } - - ret := m.Run() - conn.Close() - //os.Remove("testdata/blocks.db") - os.Exit(ret) -} - func TestFillDB(t *testing.T) { type compactTest struct { BlockHeight int `json:"block"` @@ -54,11 +33,15 @@ func TestFillDB(t *testing.T) { t.Fatal(err) } - conn, err := sql.Open("sqlite3", "testdata/blocks.db") + conn, err := sql.Open("sqlite3", ":memory:") if err != nil { t.Fatal(err) } defer conn.Close() + err = createBlockTable(conn) + if err != nil { + t.Fatal(err) + } for _, test := range compactTests { blockData, _ := hex.DecodeString(test.Full) @@ -73,13 +56,23 @@ func TestFillDB(t *testing.T) { hash := hex.EncodeToString(block.GetHash()) hasSapling := block.HasSaplingTransactions() marshaled, _ := protobuf.Marshal(block.ToCompact()) - compactB64 := base64.RawStdEncoding.EncodeToString(marshaled) insertBlock := "INSERT INTO blocks (height, hash, has_sapling_tx, compact_encoding) values (?, ?, ?, ?)" - _, err := conn.Exec(insertBlock, height, hash, hasSapling, compactB64) + _, err := conn.Exec(insertBlock, height, hash, hasSapling, marshaled) if err != nil { t.Error(errors.Wrap(err, fmt.Sprintf("storing compact block %d", height))) continue } } + + var count int + countBlocks := "SELECT count(*) FROM blocks" + conn.QueryRow(countBlocks).Scan(&count) + if err != nil { + t.Error(errors.Wrap(err, fmt.Sprintf("counting compact blocks"))) + } + + if count != len(compactTests) { + t.Errorf("Wrong row count, want %d got %d", len(compactTests), count) + } } diff --git a/storage/testdata/blocks.db b/storage/testdata/blocks.db deleted file mode 100644 index 8899e5fdbae3aa4bdd4db60d61b109df6d7635fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI0OOK=2700W(tDl+fn%$^(jz%N(h*5ycdzAnN8*DI7+pw4tj|;{xYy&oUSJ5cS zE?*|eB%dM6tnwZ50kRC`n(9@gS@cNRaHR_zt~fgPr*r;S9NQdcCF~{nVH1=+;_Az* z>+7rE^?FxVSFhUnyq!e=l#SGV8X{^RF9=+-*| z9f6KON1!9n5$FhX1Udp8fsQ~&pd;{qBXIxq^{cNwe7OGougf4@!*HEPtK#wcOtd84 zk$MgNK zIszSmjzCA?7bWn+_b*>Pzkm1UkJQcb?-+)$A)62Y#2gc{3=xu1$S@3!b8)}|JR&GI z=3`0IAd*l6{57`hh{Sa#uQAKeI>|ZX$}de zUkxF*%2*~ecY(+UIZtuPX^pHTeUiPLkCGwGgzFJS%2flDLV!% zG0IYOw?QYCl5TAtD?J0HC$+vBMB+-^?Sy6A47A8Fc-gB)BrpmGpsE+>s#AeLH3h-K zrrAM+LmhZ7SvE(C7=^p#Vp4l6Jw}8;;gn;Fp3i25j)(n4>aKH?q{=E~gNDsunx{pS z`KR?XHFY+%H_2wIYTMfGhgsPyia>0*8c$bC!Y?J)Rwlw~;D}4hNLv!@uHxZfV;J6G z57$#6i#&289a-ajH}Ly~dRk)WsLaK~Ogx=34n5AR#@&V(DdEeVQ?u6I zw`nDxG-Menb16UPg=nPHUCylTu@?^s_WIttS^lj}FfJlU7?T_zAkH#uk^m}-IUFMh zjG!Yf3Sf+JB#cN%0gA<09E)%oU?2?JOuQtR{*Yh-Q8h&>r;U)>^K~teDia-4eaZJ% z5w=E&)H8Nt*C{mhF~NlMIu-c2M4zTc7|wi0^O#6PwBZgF+9I70zI#Z+4#5I}&F%)=^+;Y^5wAb=2O=s4yA949z7j9|!IYNF&W zAp@FeJc%Cqp_Nqoh05?rsz-v8k>%Q++bV9tQXLqI{ur`YDL$HvLw%p4n|-B6H4(42 zb-s2q>#QtGcD|q!$=wVVwt0^|{}l3H+mJDad&n6g7j$Kvmt83ODg|^3?!xJO! z<@M0yA4BGw1+Ixe>=Ope)g3k!M)EPF3=K4H-5A3upx3fpr>E_Z|Ka;*pOoh>ZNxN5 z5gbKwblmC;j$<6gLP)e5!2pcoh=Ku01_2HLjEENf!vkfWW9_X=}O6|&B|0Kb~VJ7oM)NhuWjjr?) zuZMf3^wT-9Gq0)*tR0;qCAq+ zwA;(f11d+AmpZPrP-8EbfNO$nzO6zz4Sf6Luv+$@JYuT}=;^q?gcum+Y9CkieiF?E zAc0k`png;yt&s(1zN@v$gV#s95u!684_R5GIs8;R*wHSg4b(-*5}V~16j+RAJ2KFf z!>V6!f#dg?{!E?68?>A?8%9ip0*Mr@Hi{%>4aDyo5-}8UQ1;mb9!ylRaZ|_$r&$YF z#b1;MA0Rl#?@bf|n`~WAYPlMnGgDq^2mg?qoS`3($fN?>fo3Z@qD_UucTI9Nm=4jE zyw%RTJv<$NFo*MfF_hG8!bS&XJ8P9ECero`_IL=~0NKucitxF4vqJPHU4}=;9++4% zK8l(?iB}_JMD7)?Y!pK(s@+T<%sH7cY3{s$({T=uD@UktFG2idUNNbgOe}h!y79qNPH)?@ z{pEY<>h{Om&F$Ck|MmV)t&=KeebObsA9f6KON1!9n5$Fi~F9OPow%>OB t3$$}zK6(1=zTJx_PoLdRyLs~T*W?k^0T`P{{>GWChPzJ