mirror of
https://source.quilibrium.com/quilibrium/ceremonyclient.git
synced 2024-12-26 16:45:18 +00:00
79 lines
1.9 KiB
Go
79 lines
1.9 KiB
Go
// Copyright 2021 The LevelDB-Go and Pebble Authors. All rights reserved. Use
|
|
// of this source code is governed by a BSD-style license that can be found in
|
|
// the LICENSE file.
|
|
|
|
package main
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
const (
|
|
dataDirPath = "./testdata/data"
|
|
dataSymlinkedDirPath = "./testdata/data-symlink"
|
|
dataJSPath = "./testdata/data.js"
|
|
)
|
|
|
|
var dataDirPaths = []string{dataDirPath, dataSymlinkedDirPath}
|
|
|
|
func TestParseYCSB_FromScratch(t *testing.T) {
|
|
maybeSkip(t)
|
|
|
|
testFn := func(t *testing.T, dataDir string) {
|
|
// Write out a new data.js file from the input data.
|
|
fPath := filepath.Join(t.TempDir(), "data.js")
|
|
parseYCSB(dataDir, fPath, fPath)
|
|
|
|
// Confirm the two data.js files are now equal.
|
|
err := filesEqual(dataJSPath, fPath)
|
|
require.NoError(t, err)
|
|
}
|
|
|
|
for _, dir := range dataDirPaths {
|
|
t.Run(dir, func(t *testing.T) {
|
|
testFn(t, dir)
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestYCSB_Existing(t *testing.T) {
|
|
maybeSkip(t)
|
|
|
|
testFn := func(t *testing.T, dataDir string) {
|
|
// Set up the test directory.
|
|
testDir := t.TempDir()
|
|
newDataDir := filepath.Join(testDir, "data")
|
|
newDataJS := filepath.Join(testDir, "data.js")
|
|
|
|
// Copy all files into the test dir excluding one day.
|
|
err := copyDir(dataDir, newDataDir)
|
|
require.NoError(t, err)
|
|
err = os.RemoveAll(filepath.Join(newDataDir, "20211027"))
|
|
require.NoError(t, err)
|
|
|
|
// Construct the data.js file on the test data with a single day removed.
|
|
parseYCSB(newDataDir, newDataJS, newDataJS)
|
|
|
|
// Confirm the two data.js files are not equal.
|
|
err = filesEqual(dataJSPath, newDataJS)
|
|
require.Error(t, err)
|
|
|
|
// Re-construct the data.js file with the full set of data.
|
|
parseYCSB(dataDir, dataJSPath, newDataJS)
|
|
|
|
// Confirm the two data.js files are now equal.
|
|
err = filesEqual(dataJSPath, newDataJS)
|
|
require.NoError(t, err)
|
|
}
|
|
|
|
for _, dir := range dataDirPaths {
|
|
t.Run(dir, func(t *testing.T) {
|
|
testFn(t, dir)
|
|
})
|
|
}
|
|
}
|