mirror of
https://github.com/featurebasedb/featurebase.git
synced 2026-09-06 08:35:55 +00:00
- all tests green on RoaringTx
- RoaringTx on by default
- blueGreenTx testing framework available for A-vs-B comparison
of Tx implementations
- flag -tx added to server command line but not wired to
change NewIndex() selection yet.
- 918 green tests, 14 tests red on BadgerTx.
A full list of the 14 red tests on BadgerTx follows.
Note that these red tests represent not defects in BadgerDB
or BadgerTx but rather failures of the pre-existing pilosa infrastructure to yet
be fully adapted from files to using a transactional storage engine.
As such these are tests that RBF should not be expected to
pass yet either.
Fixing the pilosa infrastructure to allow these tests
to go green under Badger is the next and highest priority
order of business, but RBF can get much testing benefit
from the 918 green tests we do have, and hence we merge
as much as we have today.
The 14 red tests when NewIndex() is set to use
BadgerTx are as follows. Note in particular
that pilosa cluster resizing is not working yet under a
transactional store.
TestCluster_ResizeStates/Multiple_nodes,_with_data
TestImportClearRestart/0MaxOpN10000
TestImportClearRestart/1MaxOpN10000
TestImportClearRestart/2MaxOpN10000
TestImportClearRestart/3MaxOpN10000
TestExecutor_Execute_Existence/Row
TestExecutor_ForeignIndex
TestExecutor_Execute_CountDistinct/Distinct
TestExecutor_Execute_CountDistinct/Count(Distinct)
TestExecutor_Execute_CountDistinct/GroupBy(Distinct)
TestExecutor_BareDistinct
TestExecutor_Execute_TopNDistinct/TopN
TestHolderSyncer_IntField/BasicSync
TestHolderSyncer_IntField/MultiShard
113 lines
2.8 KiB
Go
113 lines
2.8 KiB
Go
// home: https://github.com/glyerine/vprint
|
|
// Copyright 2019 Jason E. Aten, Ph.D. All rights reserved.
|
|
// License: MIT
|
|
//
|
|
// MIT License
|
|
//
|
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
// of this software and associated documentation files (the "Software"), to deal
|
|
// in the Software without restriction, including without limitation the rights
|
|
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
// copies of the Software, and to permit persons to whom the Software is
|
|
// furnished to do so, subject to the following conditions:
|
|
//
|
|
// The above copyright notice and this permission notice shall be included in all
|
|
// copies or substantial portions of the Software.
|
|
//
|
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
// SOFTWARE.
|
|
|
|
package pilosa
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
"os"
|
|
"path"
|
|
"runtime"
|
|
"runtime/debug"
|
|
"sync"
|
|
"time"
|
|
)
|
|
|
|
const RFC3339MsecTz0 = "2006-01-02T15:04:05.000Z07:00"
|
|
const RFC3339UsecTz0 = "2006-01-02T15:04:05.000000Z07:00"
|
|
|
|
// for tons of debug output
|
|
var VerboseVerbose bool = false
|
|
|
|
// convience functions for . import
|
|
var pp = PP
|
|
var vv = VV
|
|
|
|
var panicOn = PanicOn
|
|
|
|
func init() {
|
|
// keeper linter happy
|
|
_ = pp
|
|
_ = vv
|
|
}
|
|
|
|
func PanicOn(err error) {
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
}
|
|
|
|
func PP(format string, a ...interface{}) {
|
|
if VerboseVerbose {
|
|
TSPrintf(format, a...)
|
|
}
|
|
}
|
|
|
|
func VV(format string, a ...interface{}) {
|
|
TSPrintf(format, a...)
|
|
}
|
|
|
|
func AlwaysPrintf(format string, a ...interface{}) {
|
|
TSPrintf(format, a...)
|
|
}
|
|
|
|
var tsPrintfMut sync.Mutex
|
|
|
|
// time-stamped printf
|
|
func TSPrintf(format string, a ...interface{}) {
|
|
tsPrintfMut.Lock()
|
|
Printf("\n%s %s ", FileLine(3), ts())
|
|
Printf(format+"\n", a...)
|
|
tsPrintfMut.Unlock()
|
|
}
|
|
|
|
// get timestamp for logging purposes
|
|
func ts() string {
|
|
return time.Now().Format(RFC3339UsecTz0)
|
|
}
|
|
|
|
// so we can multi write easily, use our own printf
|
|
var OurStdout io.Writer = os.Stdout
|
|
|
|
// Printf formats according to a format specifier and writes to standard output.
|
|
// It returns the number of bytes written and any write error encountered.
|
|
func Printf(format string, a ...interface{}) (n int, err error) {
|
|
return fmt.Fprintf(OurStdout, format, a...)
|
|
}
|
|
|
|
func FileLine(depth int) string {
|
|
_, fileName, fileLine, ok := runtime.Caller(depth)
|
|
var s string
|
|
if ok {
|
|
s = fmt.Sprintf("%s:%d", path.Base(fileName), fileLine)
|
|
} else {
|
|
s = ""
|
|
}
|
|
return s
|
|
}
|
|
|
|
func stack() string {
|
|
return string(debug.Stack())
|
|
}
|