mirror of
https://github.com/featurebasedb/featurebase.git
synced 2026-08-28 10:54:59 +00:00
At some point the code changeover to use roaring iterators for unmarshal got dropped, but the old unmarshal code is way harder to make work for inspect, so this change is back. This exports some of the names from the things returned by Info, but also adds a roaring function to use the unmarshalling logic on arbitrary data, allowing us to get more insight into a file -- in particular, letting us distinguish between the bitmaps specified by the roaring data and the bitmaps resulting from applying the ops log.
60 lines
1.5 KiB
Go
60 lines
1.5 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 ctl
|
|
|
|
import (
|
|
"bytes"
|
|
"context"
|
|
"io"
|
|
"io/ioutil"
|
|
"os"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestInspectCommand_Run(t *testing.T) {
|
|
rder := []byte{}
|
|
stdin := bytes.NewReader(rder)
|
|
r, w, _ := os.Pipe()
|
|
|
|
cm := NewInspectCommand(stdin, w, w)
|
|
file, err := ioutil.TempFile("", "inspectTest")
|
|
if err != nil {
|
|
t.Fatalf("Error creating tempfile: %s", err)
|
|
}
|
|
_, err = file.Write([]byte("12358267538963"))
|
|
if err != nil {
|
|
t.Fatalf("writing to tempfile: %v", err)
|
|
}
|
|
file.Close()
|
|
cm.Path = file.Name()
|
|
err = cm.Run(context.Background())
|
|
expectedError := "inspecting: "
|
|
if !strings.Contains(err.Error(), expectedError) {
|
|
t.Fatalf("expected error '%s', got '%v'", expectedError, err)
|
|
}
|
|
|
|
w.Close()
|
|
var buf bytes.Buffer
|
|
_, err = io.Copy(&buf, r)
|
|
if err != nil {
|
|
t.Fatalf("copying data: %v", err)
|
|
}
|
|
if !strings.Contains(buf.String(), "inspecting bitmap...") {
|
|
t.Fatalf("Inspect doesn't work: %s", err)
|
|
}
|
|
|
|
// Todo: need correct roaring file for happy path
|
|
}
|