mirror of
https://github.com/featurebasedb/featurebase.git
synced 2026-08-28 10:54:59 +00:00
With the new addition of the holder background scan, it's possible for an open holder to write log messages at arbitrary times. The TestHolder_Open/ErrIndexName test checks the contents of the output buffer, but those contents could be changing if the background task happens to run at the right time. Use trivial locking around that so that this shouldn't happen.
54 lines
1.3 KiB
Go
54 lines
1.3 KiB
Go
// Copyright 2017 Pilosa Corp.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
package test
|
|
|
|
import (
|
|
"bytes"
|
|
"fmt"
|
|
"io/ioutil"
|
|
"sync"
|
|
)
|
|
|
|
// bufferLogger represents a test Logger that holds log messages
|
|
// in a buffer for review.
|
|
type bufferLogger struct {
|
|
buf *bytes.Buffer
|
|
mu sync.Mutex
|
|
}
|
|
|
|
// NewBufferLogger returns a new instance of BufferLogger.
|
|
func NewBufferLogger() *bufferLogger {
|
|
return &bufferLogger{
|
|
buf: &bytes.Buffer{},
|
|
}
|
|
}
|
|
|
|
func (b *bufferLogger) Printf(format string, v ...interface{}) {
|
|
b.mu.Lock()
|
|
defer b.mu.Unlock()
|
|
s := fmt.Sprintf(format, v...)
|
|
_, err := b.buf.WriteString(s)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
}
|
|
|
|
func (b *bufferLogger) Debugf(format string, v ...interface{}) {}
|
|
|
|
func (b *bufferLogger) ReadAll() ([]byte, error) {
|
|
b.mu.Lock()
|
|
defer b.mu.Unlock()
|
|
return ioutil.ReadAll(b.buf)
|
|
}
|