mirror of
				https://source.quilibrium.com/quilibrium/ceremonyclient.git
				synced 2025-11-04 07:07:26 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			76 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package quicreuse
 | 
						|
 | 
						|
import (
 | 
						|
	"bytes"
 | 
						|
	"io"
 | 
						|
	"os"
 | 
						|
	"strings"
 | 
						|
	"testing"
 | 
						|
 | 
						|
	"github.com/klauspost/compress/zstd"
 | 
						|
	"github.com/quic-go/quic-go"
 | 
						|
	"github.com/quic-go/quic-go/logging"
 | 
						|
	"github.com/stretchr/testify/require"
 | 
						|
)
 | 
						|
 | 
						|
func createLogDir(t *testing.T) string {
 | 
						|
	dir, err := os.MkdirTemp("", "libp2p-quic-transport-test")
 | 
						|
	require.NoError(t, err)
 | 
						|
	t.Cleanup(func() { os.RemoveAll(dir) })
 | 
						|
	return dir
 | 
						|
}
 | 
						|
 | 
						|
func getFile(t *testing.T, dir string) os.FileInfo {
 | 
						|
	files, err := os.ReadDir(dir)
 | 
						|
	require.NoError(t, err)
 | 
						|
	require.Len(t, files, 1)
 | 
						|
	info, err := files[0].Info()
 | 
						|
	require.NoError(t, err)
 | 
						|
	return info
 | 
						|
}
 | 
						|
 | 
						|
func TestSaveQlog(t *testing.T) {
 | 
						|
	qlogDir := createLogDir(t)
 | 
						|
	logger := newQlogger(qlogDir, logging.PerspectiveServer, quic.ConnectionIDFromBytes([]byte{0xde, 0xad, 0xbe, 0xef}))
 | 
						|
	file := getFile(t, qlogDir)
 | 
						|
	require.Equal(t, string(file.Name()[0]), ".")
 | 
						|
	require.Truef(t, strings.HasSuffix(file.Name(), ".qlog.swp"), "expected %s to have the .qlog.swp file ending", file.Name())
 | 
						|
	// close the logger. This should move the file.
 | 
						|
	require.NoError(t, logger.Close())
 | 
						|
	file = getFile(t, qlogDir)
 | 
						|
	require.NotEqual(t, string(file.Name()[0]), ".")
 | 
						|
	require.Truef(t, strings.HasSuffix(file.Name(), ".qlog.zst"), "expected %s to have the .qlog.zst file ending", file.Name())
 | 
						|
	require.Contains(t, file.Name(), "server")
 | 
						|
	require.Contains(t, file.Name(), "deadbeef")
 | 
						|
}
 | 
						|
 | 
						|
func TestQlogBuffering(t *testing.T) {
 | 
						|
	qlogDir := createLogDir(t)
 | 
						|
	logger := newQlogger(qlogDir, logging.PerspectiveServer, quic.ConnectionIDFromBytes([]byte("connid")))
 | 
						|
	initialSize := getFile(t, qlogDir).Size()
 | 
						|
	// Do a small write.
 | 
						|
	// Since the writter is buffered, this should not be written to disk yet.
 | 
						|
	logger.Write([]byte("foobar"))
 | 
						|
	require.Equal(t, getFile(t, qlogDir).Size(), initialSize)
 | 
						|
	// Close the logger. This should flush the buffer to disk.
 | 
						|
	require.NoError(t, logger.Close())
 | 
						|
	finalSize := getFile(t, qlogDir).Size()
 | 
						|
	t.Logf("initial log file size: %d, final log file size: %d\n", initialSize, finalSize)
 | 
						|
	require.Greater(t, finalSize, initialSize)
 | 
						|
}
 | 
						|
 | 
						|
func TestQlogCompression(t *testing.T) {
 | 
						|
	qlogDir := createLogDir(t)
 | 
						|
	logger := newQlogger(qlogDir, logging.PerspectiveServer, quic.ConnectionIDFromBytes([]byte("connid")))
 | 
						|
	logger.Write([]byte("foobar"))
 | 
						|
	require.NoError(t, logger.Close())
 | 
						|
	compressed, err := os.ReadFile(qlogDir + "/" + getFile(t, qlogDir).Name())
 | 
						|
	require.NoError(t, err)
 | 
						|
	require.NotEqual(t, compressed, "foobar")
 | 
						|
	c, err := zstd.NewReader(bytes.NewReader(compressed))
 | 
						|
	require.NoError(t, err)
 | 
						|
	data, err := io.ReadAll(c)
 | 
						|
	require.NoError(t, err)
 | 
						|
	require.Equal(t, data, []byte("foobar"))
 | 
						|
}
 |