0155c21b44
On run, write the storage directory verification file. Every time the node runs it will write the file even if it already exists. The reason we do this is because if the verification file is missing, the SN doesn't know whether it is an incorrect directory, or it simply hasn't written the file yet, and we want to keep nodes running without needing operator intervention. Once this change has been a part of the minimum version for several releases, we will move the file creation from the run command to the setup command. Run will only verify its existence. Change-Id: Ib7d20e78e711c63817db0ab3036a50af0e8f49cb
45 lines
1.2 KiB
Go
45 lines
1.2 KiB
Go
// Copyright (C) 2019 Storj Labs, Inc.
|
|
// See LICENSE for copying information.
|
|
|
|
package monitor_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"storj.io/common/memory"
|
|
"storj.io/common/pb"
|
|
"storj.io/common/testcontext"
|
|
"storj.io/common/testrand"
|
|
"storj.io/storj/private/testplanet"
|
|
)
|
|
|
|
func TestMonitor(t *testing.T) {
|
|
testplanet.Run(t, testplanet.Config{
|
|
SatelliteCount: 1, StorageNodeCount: 6, UplinkCount: 1,
|
|
}, func(t *testing.T, ctx *testcontext.Context, planet *testplanet.Planet) {
|
|
for _, storageNode := range planet.StorageNodes {
|
|
storageNode.Storage2.Monitor.Loop.Pause()
|
|
}
|
|
|
|
expectedData := testrand.Bytes(100 * memory.KiB)
|
|
|
|
err := planet.Uplinks[0].Upload(ctx, planet.Satellites[0], "testbucket", "test/path", expectedData)
|
|
require.NoError(t, err)
|
|
|
|
nodeAssertions := 0
|
|
for _, storageNode := range planet.StorageNodes {
|
|
storageNode.Storage2.Monitor.Loop.TriggerWait()
|
|
storageNode.Storage2.Monitor.VerifyDirLoop.TriggerWait()
|
|
stats, err := storageNode.Storage2.Inspector.Stats(ctx, &pb.StatsRequest{})
|
|
require.NoError(t, err)
|
|
if stats.UsedSpace > 0 {
|
|
nodeAssertions++
|
|
}
|
|
}
|
|
assert.NotZero(t, nodeAssertions, "No storage node were verifed")
|
|
})
|
|
}
|