mirror of
				https://source.quilibrium.com/quilibrium/ceremonyclient.git
				synced 2025-11-04 03:07:28 +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)
 | 
						|
		})
 | 
						|
	}
 | 
						|
}
 |