mirror of
https://github.com/luxfi/cli.git
synced 2026-10-30 17:01:20 +00:00
163 lines
5.5 KiB
Go
163 lines
5.5 KiB
Go
// Copyright (C) 2025, Lux Industries, Inc. All rights reserved.
|
|
// See the file LICENSE for licensing terms.
|
|
package localnet
|
|
|
|
import (
|
|
"context"
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/luxfi/cli/v2/pkg/application"
|
|
"github.com/luxfi/cli/v2/pkg/config"
|
|
"github.com/luxfi/cli/v2/pkg/constants"
|
|
"github.com/luxfi/cli/v2/pkg/prompts"
|
|
"github.com/luxfi/ids"
|
|
"github.com/luxfi/node/v2/v2/utils/logging"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func createFile(t *testing.T, path string) {
|
|
f, err := os.Create(path)
|
|
require.NoError(t, err)
|
|
err = f.Close()
|
|
require.NoError(t, err)
|
|
}
|
|
|
|
func TestGetTmpNetAvailableLogs(t *testing.T) {
|
|
app := &application.Lux{}
|
|
appDir, err := os.MkdirTemp(os.TempDir(), "cli-app-test")
|
|
require.NoError(t, err)
|
|
app.Setup(appDir, logging.NoLog{}, config.New(), "", prompts.NewPrompter(), application.NewDownloader(), nil)
|
|
networkID, unparsedGenesis, upgradeBytes, defaultFlags, nodes, err := GetDefaultNetworkConf(2)
|
|
require.NoError(t, err)
|
|
networkDir, err := os.MkdirTemp(os.TempDir(), "cli-tmpnet-test")
|
|
require.NoError(t, err)
|
|
_, err = TmpNetCreate(
|
|
context.Background(),
|
|
app.Log,
|
|
networkDir,
|
|
"",
|
|
"",
|
|
networkID,
|
|
nil,
|
|
nil,
|
|
unparsedGenesis,
|
|
upgradeBytes,
|
|
defaultFlags,
|
|
nodes,
|
|
false,
|
|
)
|
|
require.NoError(t, err)
|
|
// no logs yet
|
|
logPaths, err := GetTmpNetAvailableLogs(networkDir, ids.Empty, false)
|
|
require.NoError(t, err)
|
|
require.Equal(t, []string{}, logPaths)
|
|
// default network
|
|
node1ID := "NodeID-7Xhw2mDxuDS44j42TCB6U5579esbSt3Lg"
|
|
node2ID := "NodeID-MFrZFVCXPv5iCn6M9K6XduxGTYp891xXZ"
|
|
node1Logs := filepath.Join(networkDir, node1ID, "logs")
|
|
node2Logs := filepath.Join(networkDir, node2ID, "logs")
|
|
err = os.MkdirAll(node1Logs, constants.DefaultPerms755)
|
|
require.NoError(t, err)
|
|
err = os.MkdirAll(node2Logs, constants.DefaultPerms755)
|
|
require.NoError(t, err)
|
|
// add main log
|
|
createFile(t, filepath.Join(node1Logs, "main.log"))
|
|
createFile(t, filepath.Join(node2Logs, "main.log"))
|
|
logPaths, err = GetTmpNetAvailableLogs(networkDir, ids.Empty, false)
|
|
require.NoError(t, err)
|
|
require.Equal(t, []string{
|
|
filepath.Join(node1Logs, "main.log"),
|
|
filepath.Join(node2Logs, "main.log"),
|
|
}, logPaths)
|
|
// add P chain log
|
|
createFile(t, filepath.Join(node1Logs, "P.log"))
|
|
createFile(t, filepath.Join(node2Logs, "P.log"))
|
|
logPaths, err = GetTmpNetAvailableLogs(networkDir, ids.Empty, false)
|
|
require.NoError(t, err)
|
|
require.Equal(t, []string{
|
|
filepath.Join(node1Logs, "P.log"),
|
|
filepath.Join(node1Logs, "main.log"),
|
|
filepath.Join(node2Logs, "P.log"),
|
|
filepath.Join(node2Logs, "main.log"),
|
|
}, logPaths)
|
|
// gather C chain when no files are present
|
|
logPaths, err = GetTmpNetAvailableLogs(networkDir, ids.Empty, true)
|
|
require.NoError(t, err)
|
|
require.Equal(t, []string{
|
|
filepath.Join(node1Logs, "P.log"),
|
|
filepath.Join(node1Logs, "main.log"),
|
|
filepath.Join(node2Logs, "P.log"),
|
|
filepath.Join(node2Logs, "main.log"),
|
|
}, logPaths)
|
|
// gather C chain when files are present
|
|
createFile(t, filepath.Join(node1Logs, "C.log"))
|
|
createFile(t, filepath.Join(node2Logs, "C.log"))
|
|
logPaths, err = GetTmpNetAvailableLogs(networkDir, ids.Empty, true)
|
|
require.NoError(t, err)
|
|
require.Equal(t, []string{
|
|
filepath.Join(node1Logs, "C.log"),
|
|
filepath.Join(node1Logs, "P.log"),
|
|
filepath.Join(node1Logs, "main.log"),
|
|
filepath.Join(node2Logs, "C.log"),
|
|
filepath.Join(node2Logs, "P.log"),
|
|
filepath.Join(node2Logs, "main.log"),
|
|
}, logPaths)
|
|
// don't gather C chain when files are present
|
|
logPaths, err = GetTmpNetAvailableLogs(networkDir, ids.Empty, false)
|
|
require.NoError(t, err)
|
|
require.Equal(t, []string{
|
|
filepath.Join(node1Logs, "P.log"),
|
|
filepath.Join(node1Logs, "main.log"),
|
|
filepath.Join(node2Logs, "P.log"),
|
|
filepath.Join(node2Logs, "main.log"),
|
|
}, logPaths)
|
|
// gather blockchain when no files are present
|
|
blockchainID := ids.GenerateTestID()
|
|
logPaths, err = GetTmpNetAvailableLogs(networkDir, blockchainID, false)
|
|
require.NoError(t, err)
|
|
require.Equal(t, []string{
|
|
filepath.Join(node1Logs, "P.log"),
|
|
filepath.Join(node1Logs, "main.log"),
|
|
filepath.Join(node2Logs, "P.log"),
|
|
filepath.Join(node2Logs, "main.log"),
|
|
}, logPaths)
|
|
// gather blockchain when files are present
|
|
createFile(t, filepath.Join(node1Logs, blockchainID.String()+".log"))
|
|
createFile(t, filepath.Join(node2Logs, blockchainID.String()+".log"))
|
|
logPaths, err = GetTmpNetAvailableLogs(networkDir, blockchainID, false)
|
|
require.NoError(t, err)
|
|
require.Equal(t, []string{
|
|
filepath.Join(node1Logs, blockchainID.String()+".log"),
|
|
filepath.Join(node1Logs, "P.log"),
|
|
filepath.Join(node1Logs, "main.log"),
|
|
filepath.Join(node2Logs, blockchainID.String()+".log"),
|
|
filepath.Join(node2Logs, "P.log"),
|
|
filepath.Join(node2Logs, "main.log"),
|
|
}, logPaths)
|
|
// don't gather blockchain when files are present
|
|
logPaths, err = GetTmpNetAvailableLogs(networkDir, ids.Empty, false)
|
|
require.NoError(t, err)
|
|
require.Equal(t, []string{
|
|
filepath.Join(node1Logs, "P.log"),
|
|
filepath.Join(node1Logs, "main.log"),
|
|
filepath.Join(node2Logs, "P.log"),
|
|
filepath.Join(node2Logs, "main.log"),
|
|
}, logPaths)
|
|
// gather all files are present
|
|
logPaths, err = GetTmpNetAvailableLogs(networkDir, blockchainID, true)
|
|
require.NoError(t, err)
|
|
require.Equal(t, []string{
|
|
filepath.Join(node1Logs, blockchainID.String()+".log"),
|
|
filepath.Join(node1Logs, "C.log"),
|
|
filepath.Join(node1Logs, "P.log"),
|
|
filepath.Join(node1Logs, "main.log"),
|
|
filepath.Join(node2Logs, blockchainID.String()+".log"),
|
|
filepath.Join(node2Logs, "C.log"),
|
|
filepath.Join(node2Logs, "P.log"),
|
|
filepath.Join(node2Logs, "main.log"),
|
|
}, logPaths)
|
|
}
|