You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

76 lines
1.7 KiB

package volume_server_ui
import (
"bytes"
"testing"
"time"
"github.com/seaweedfs/seaweedfs/weed/stats"
)
func TestStatusTpl(t *testing.T) {
args := struct {
Version string
Masters []string
Volumes interface{}
EcVolumes interface{}
RemoteVolumes interface{}
DiskStatuses interface{}
Stats interface{}
Counters *stats.ServerStats
}{
Version: "3.59",
Masters: []string{"localhost:9333"},
EcVolumes: []interface{}{
struct {
VolumeId uint32
Collection string
Size uint64
Shards []interface{}
CreatedAt time.Time
}{
VolumeId: 1,
Collection: "ectest",
Size: 8 * 1024 * 1024,
Shards: []interface{}{
struct {
ShardId uint8
Size int64
}{
ShardId: 4,
Size: 1024 * 1024,
},
struct {
ShardId uint8
Size uint32
}{
ShardId: 6,
Size: 1024 * 1024,
},
},
CreatedAt: time.Now(),
},
},
Counters: stats.NewServerStats(),
}
var buf bytes.Buffer
if err := StatusTpl.Execute(&buf, args); err != nil {
t.Logf("output: %s", buf.String())
t.Fatalf("template execution error: %v", err)
}
if !bytes.Contains(buf.Bytes(), []byte("8.00 MiB")) {
t.Errorf("output does not contain formatted volume size '8.00 MiB'")
}
if bytes.Count(buf.Bytes(), []byte("1.00 MiB")) != 2 {
t.Errorf("expected two shards of size '1.00 MiB', but they were not found or not formatted correctly")
}
if !bytes.Contains(buf.Bytes(), []byte("Erasure Coding Shards")) {
t.Errorf("output does not contain 'Erasure Coding Shards'")
}
if !bytes.Contains(buf.Bytes(), []byte("ectest")) {
t.Errorf("output does not contain 'ectest'")
}
}