// 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) }) } }