mirror of
https://github.com/featurebasedb/featurebase.git
synced 2026-08-28 10:54:59 +00:00
use t.Fatal(f) to abort tests, not panic
This commit is contained in:
parent
6035345fb1
commit
346dbb04fe
1 changed files with 32 additions and 25 deletions
57
tx_test.go
57
tx_test.go
|
|
@ -8,13 +8,14 @@ import (
|
|||
|
||||
pilosa "github.com/molecula/featurebase/v3"
|
||||
"github.com/molecula/featurebase/v3/test"
|
||||
. "github.com/molecula/featurebase/v3/vprint" // nolint:staticcheck
|
||||
)
|
||||
|
||||
func queryIRABit(m0api *pilosa.API, acctOwnerID uint64, iraField string, iraRowID uint64, index string) (bit bool) {
|
||||
func queryIRABit(t *testing.T, m0api *pilosa.API, acctOwnerID uint64, iraField string, iraRowID uint64, index string) (bit bool) {
|
||||
query := fmt.Sprintf("Row(%v=%v)", iraField, iraRowID) // acctOwnerID)
|
||||
res, err := m0api.Query(context.Background(), &pilosa.QueryRequest{Index: index, Query: query})
|
||||
PanicOn(err)
|
||||
if err != nil {
|
||||
t.Fatalf("querying IRA bit: %v", err)
|
||||
}
|
||||
cols := res.Results[0].(*pilosa.Row).Columns()
|
||||
for i := range cols {
|
||||
if cols[i] == acctOwnerID {
|
||||
|
|
@ -24,10 +25,12 @@ func queryIRABit(m0api *pilosa.API, acctOwnerID uint64, iraField string, iraRowI
|
|||
return false
|
||||
}
|
||||
|
||||
func mustQueryAcct(m0api *pilosa.API, acctOwnerID uint64, fieldAcct0, index string) (acctBal int64) {
|
||||
func mustQueryAcct(t *testing.T, m0api *pilosa.API, acctOwnerID uint64, fieldAcct0, index string) (acctBal int64) {
|
||||
query := fmt.Sprintf("FieldValue(field=%v, column=%v)", fieldAcct0, acctOwnerID)
|
||||
res, err := m0api.Query(context.Background(), &pilosa.QueryRequest{Index: index, Query: query})
|
||||
PanicOn(err)
|
||||
if err != nil {
|
||||
t.Fatalf("querying account: %v", err)
|
||||
}
|
||||
|
||||
if len(res.Results) == 0 {
|
||||
return 0
|
||||
|
|
@ -36,10 +39,10 @@ func mustQueryAcct(m0api *pilosa.API, acctOwnerID uint64, fieldAcct0, index stri
|
|||
return valCount.Val
|
||||
}
|
||||
|
||||
func queryBalances(m0api *pilosa.API, acctOwnerID uint64, fldAcct0, fldAcct1, index string) (acct0bal, acct1bal int64) {
|
||||
func queryBalances(t *testing.T, m0api *pilosa.API, acctOwnerID uint64, fldAcct0, fldAcct1, index string) (acct0bal, acct1bal int64) {
|
||||
|
||||
acct0bal = mustQueryAcct(m0api, acctOwnerID, fldAcct0, index)
|
||||
acct1bal = mustQueryAcct(m0api, acctOwnerID, fldAcct1, index)
|
||||
acct0bal = mustQueryAcct(t, m0api, acctOwnerID, fldAcct0, index)
|
||||
acct1bal = mustQueryAcct(t, m0api, acctOwnerID, fldAcct1, index)
|
||||
return
|
||||
}
|
||||
|
||||
|
|
@ -143,19 +146,19 @@ func TestAPI_ImportAtomicRecord(t *testing.T) {
|
|||
|
||||
//vv("AFTER the first ImportAtomicRecord!")
|
||||
|
||||
iraBit := queryIRABit(m0api, acctOwnerID, iraField, iraRowID, index)
|
||||
iraBit := queryIRABit(t, m0api, acctOwnerID, iraField, iraRowID, index)
|
||||
if !iraBit {
|
||||
PanicOn("IRA bit should have been set")
|
||||
t.Fatal("IRA bit should have been set")
|
||||
}
|
||||
|
||||
startingBalanceAcct0, startingBalanceAcct1 := queryBalances(m0api, acctOwnerID, fieldAcct0, fieldAcct1, index)
|
||||
startingBalanceAcct0, startingBalanceAcct1 := queryBalances(t, m0api, acctOwnerID, fieldAcct0, fieldAcct1, index)
|
||||
//vv("starting balance: acct0=%v, acct1=%v", startingBalanceAcct0, startingBalanceAcct1)
|
||||
|
||||
if startingBalanceAcct0 != expectedBalStartingAcct0 {
|
||||
PanicOn(fmt.Sprintf("expected %v, observed %v starting acct0 balance", expectedBalStartingAcct0, startingBalanceAcct0))
|
||||
t.Fatalf("expected %v, observed %v starting acct0 balance", expectedBalStartingAcct0, startingBalanceAcct0)
|
||||
}
|
||||
if startingBalanceAcct1 != expectedBalStartingAcct1 {
|
||||
PanicOn(fmt.Sprintf("expected %v, observed %v starting acct1 balance", expectedBalStartingAcct1, startingBalanceAcct1))
|
||||
t.Fatalf("expected %v, observed %v starting acct1 balance", expectedBalStartingAcct1, startingBalanceAcct1)
|
||||
}
|
||||
|
||||
//vv("sad path: transferUSD %v from %v -> %v, with power loss half-way through", transferUSD, fieldAcct0, fieldAcct1)
|
||||
|
|
@ -174,20 +177,20 @@ func TestAPI_ImportAtomicRecord(t *testing.T) {
|
|||
err = m0api.ImportAtomicRecord(ctx, qcx, air.Clone(), opt)
|
||||
//err = m0api.ImportAtomicRecord(ctx, nil, air, opt)
|
||||
if err != pilosa.ErrAborted {
|
||||
PanicOn(fmt.Sprintf("expected ErrTxnAborted but got err='%#v'", err))
|
||||
t.Fatalf("expected ErrTxnAborted but got err='%#v'", err)
|
||||
}
|
||||
// sad path, cleanup
|
||||
qcx.Abort()
|
||||
qcx = nil
|
||||
|
||||
b0, b1 := queryBalances(m0api, acctOwnerID, fieldAcct0, fieldAcct1, index)
|
||||
b0, b1 := queryBalances(t, m0api, acctOwnerID, fieldAcct0, fieldAcct1, index)
|
||||
//vv("after power failure tx, balance: acct0=%v, acct1=%v", b0, b1)
|
||||
|
||||
if b0 != expectedBalStartingAcct0 {
|
||||
PanicOn(fmt.Sprintf("expected %v, observed %v starting acct0 balance", expectedBalStartingAcct0, b0))
|
||||
t.Fatalf("expected %v, observed %v starting acct0 balance", expectedBalStartingAcct0, b0)
|
||||
}
|
||||
if b1 != expectedBalStartingAcct1 {
|
||||
PanicOn(fmt.Sprintf("expected %v, observed %v starting acct1 balance", expectedBalStartingAcct1, b1))
|
||||
t.Fatalf("expected %v, observed %v starting acct1 balance", expectedBalStartingAcct1, b1)
|
||||
}
|
||||
//vv("good: with power loss half-way, no change in account balances; acct0=%v; acct1=%v", b0, b1)
|
||||
|
||||
|
|
@ -198,16 +201,18 @@ func TestAPI_ImportAtomicRecord(t *testing.T) {
|
|||
|
||||
qcx = m0api.Txf().NewQcx()
|
||||
err = m0api.ImportAtomicRecord(ctx, qcx, air.Clone())
|
||||
PanicOn(err)
|
||||
if err != nil {
|
||||
t.Fatalf("importing record: %v", err)
|
||||
}
|
||||
if err := qcx.Finish(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
eb0, eb1 := queryBalances(m0api, acctOwnerID, fieldAcct0, fieldAcct1, index)
|
||||
eb0, eb1 := queryBalances(t, m0api, acctOwnerID, fieldAcct0, fieldAcct1, index)
|
||||
|
||||
// should have been applied this time.
|
||||
if eb0 != expectedBalEndingAcct0 ||
|
||||
eb1 != expectedBalEndingAcct1 {
|
||||
PanicOn(fmt.Sprintf("problem: transaction did not get committed/applied. transferUSD=%v, but we see: startingBalanceAcct0=%v -> endingBalanceAcct0=%v; startingBalanceAcct1=%v -> endingBalanceAcct1=%v", transferUSD, startingBalanceAcct0, eb0, startingBalanceAcct1, eb1))
|
||||
t.Fatalf("problem: transaction did not get committed/applied. transferUSD=%v, but we see: startingBalanceAcct0=%v -> endingBalanceAcct0=%v; startingBalanceAcct1=%v -> endingBalanceAcct1=%v", transferUSD, startingBalanceAcct0, eb0, startingBalanceAcct1, eb1)
|
||||
}
|
||||
//vv("ending balance: acct0=%v, acct1=%v", eb0, eb1)
|
||||
|
||||
|
|
@ -218,20 +223,22 @@ func TestAPI_ImportAtomicRecord(t *testing.T) {
|
|||
|
||||
qcx = m0api.Txf().NewQcx()
|
||||
err = m0api.ImportAtomicRecord(ctx, qcx, air)
|
||||
if err != nil {
|
||||
t.Fatalf("importing record: %v", err)
|
||||
}
|
||||
if err := qcx.Finish(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
PanicOn(err)
|
||||
|
||||
eb0, eb1 = queryBalances(m0api, acctOwnerID, fieldAcct0, fieldAcct1, index)
|
||||
eb0, eb1 = queryBalances(t, m0api, acctOwnerID, fieldAcct0, fieldAcct1, index)
|
||||
if eb0 != 0 ||
|
||||
eb1 != 0 {
|
||||
PanicOn("problem: bits did not clear")
|
||||
t.Fatal("problem: bits did not clear")
|
||||
}
|
||||
//vv("cleared balances: acct0=%v, acct1=%v", eb0, eb1)
|
||||
|
||||
iraBit = queryIRABit(m0api, acctOwnerID, iraField, iraRowID, index)
|
||||
iraBit = queryIRABit(t, m0api, acctOwnerID, iraField, iraRowID, index)
|
||||
if iraBit {
|
||||
PanicOn("IRA bit should have been cleared")
|
||||
t.Fatal("IRA bit should have been cleared")
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue