polardbxoperator/third-party/hsperfdata/hsperfdata_test.go

313 lines
6.8 KiB
Go

package hsperfdata
import (
"reflect"
"testing"
)
func TestPerfDataPath(t *testing.T) {
type args struct {
pid string
}
tests := []struct {
name string
args args
want string
wantErr bool
}{
{
"1",
args{"18877"},
"C:\\Users\\0686\\AppData\\Local\\Temp\\hsperfdata_0686\\18877",
false,
},
{
"2",
args{"123"},
"",
true,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, err := PerfDataPath(tt.args.pid)
if (err != nil) != tt.wantErr {
t.Errorf("PerfDataPath() error = %v, wantErr %v", err, tt.wantErr)
return
}
if got != tt.want {
t.Errorf("PerfDataPath() = %v, want %v", got, tt.want)
}
})
}
}
func TestPerfDataPaths(t *testing.T) {
type args struct {
pids []string
}
tests := []struct {
name string
args args
want map[string]string
wantErr bool
}{
{
"1",
args{[]string{"18877", "18878"}},
map[string]string{
"18877": "C:\\Users\\0686\\AppData\\Local\\Temp\\hsperfdata_0686\\18877",
"18878": "C:\\Users\\0686\\AppData\\Local\\Temp\\hsperfdata_0686\\18878",
},
false,
},
{
"2",
args{[]string{"18877", "123"}},
nil,
true,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, err := PerfDataPaths(tt.args.pids)
if (err != nil) != tt.wantErr {
t.Errorf("PerfDataPaths() error = %v, wantErr %v", err, tt.wantErr)
return
}
if !reflect.DeepEqual(got, tt.want) {
t.Errorf("PerfDataPaths() = %v, want %v", got, tt.want)
}
})
}
}
func TestUserPerfDataPaths(t *testing.T) {
type args struct {
user string
}
tests := []struct {
name string
args args
want map[string]string
wantErr bool
}{
{
"1",
args{"0686"},
map[string]string{
"18877": "C:\\Users\\0686\\AppData\\Local\\Temp\\hsperfdata_0686\\18877",
"18878": "C:\\Users\\0686\\AppData\\Local\\Temp\\hsperfdata_0686\\18878",
},
false,
},
{
"2",
args{"root"},
nil,
true,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, err := UserPerfDataPaths(tt.args.user)
if (err != nil) != tt.wantErr {
t.Errorf("UserPerfDataPaths() error = %v, wantErr %v", err, tt.wantErr)
return
}
if !reflect.DeepEqual(got, tt.want) {
t.Errorf("UserPerfDataPaths() = %v, want %v", got, tt.want)
}
})
}
}
func TestCurrentUserPerfDataPaths(t *testing.T) {
tests := []struct {
name string
want map[string]string
wantErr bool
}{
{
"1",
map[string]string{
"18877": "C:\\Users\\0686\\AppData\\Local\\Temp\\hsperfdata_0686\\18877",
"18878": "C:\\Users\\0686\\AppData\\Local\\Temp\\hsperfdata_0686\\18878",
},
false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, err := CurrentUserPerfDataPaths()
if (err != nil) != tt.wantErr {
t.Errorf("CurrentUserPerfDataPaths() error = %v, wantErr %v", err, tt.wantErr)
return
}
if !reflect.DeepEqual(got, tt.want) {
t.Errorf("CurrentUserPerfDataPaths() = %v, want %v", got, tt.want)
}
})
}
}
func TestAllPerfDataPaths(t *testing.T) {
tests := []struct {
name string
want map[string]string
wantErr bool
}{
{
"1",
map[string]string{
"18877": "C:\\Users\\0686\\AppData\\Local\\Temp\\hsperfdata_0686\\18877",
"18878": "C:\\Users\\0686\\AppData\\Local\\Temp\\hsperfdata_0686\\18878",
},
false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, err := AllPerfDataPaths()
if (err != nil) != tt.wantErr {
t.Errorf("AllPerfDataPaths() error = %v, wantErr %v", err, tt.wantErr)
return
}
if !reflect.DeepEqual(got, tt.want) {
t.Errorf("AllPerfDataPaths() = %v, want %v", got, tt.want)
}
})
}
}
func Test_removeNull(t *testing.T) {
type args struct {
s []byte
}
tests := []struct {
name string
args args
want []byte
}{
{
"1",
args{[]byte{1, 2, 3, 0}},
[]byte{1, 2, 3},
},
{
"2",
args{[]byte{1, 2, 3}},
[]byte{1, 2, 3},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := removeNull(tt.args.s); !reflect.DeepEqual(got, tt.want) {
t.Errorf("removeNull() = %v, want %v", got, tt.want)
}
})
}
}
func TestDataPathsByProcessName(t *testing.T) {
type args struct {
processName string
}
tests := []struct {
name string
args args
want map[string]string
wantErr bool
}{
{
"1",
args{"java"},
map[string]string{"53516": "C:\\Users\\0686\\AppData\\Local\\Temp\\hsperfdata_0686\\53516"},
false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, err := DataPathsByProcessName(tt.args.processName)
if (err != nil) != tt.wantErr {
t.Errorf("DataPathsByProcessName() error = %v, wantErr %v", err, tt.wantErr)
return
}
if !reflect.DeepEqual(got, tt.want) {
t.Errorf("DataPathsByProcessName() = %v, want %v", got, tt.want)
}
})
}
}
func TestReadPerfData(t *testing.T) {
type args struct {
filepath string
parserTime bool
}
tests := []struct {
name string
args args
want [4]interface{}
wantErr bool
}{
{
"2036",
args{"../test-data/2036", false},
[4]interface{}{"1.6.0_45", "1.0", int64(20358139), 245},
false,
},
{
"2956",
args{"../test-data/2956", false},
[4]interface{}{"1.7.0-u40-rel_19", "1.7", int64(0), 218},
false,
},
{
"13223",
args{"../test-data/13223", true},
[4]interface{}{"1.6.0_65", "1.0", int64(11955673569), 212},
false,
},
{
"13984",
args{"../test-data/13984", true},
[4]interface{}{"1.8.0_172", "1.8", int64(85266870), 254},
false,
},
{
"15192",
args{"../test-data/15192", true},
[4]interface{}{"1.8.0_92", "1.8", int64(34831378), 253},
false,
},
{
"21916",
args{"../test-data/21916", false},
[4]interface{}{"1.8.0_31", "1.8", int64(0), 253},
false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, err := ReadPerfData(tt.args.filepath, tt.args.parserTime)
if (err != nil) != tt.wantErr {
t.Errorf("ReadPerfData() error = %v, wantErr %v", err, tt.wantErr)
return
}
if !reflect.DeepEqual(got["java.property.java.version"], tt.want[0]) {
t.Errorf("ReadPerfData() java.property.java.version = %v, want %v", got["java.property.java.version"], tt.want[0])
}
if !reflect.DeepEqual(got["java.property.java.vm.specification.version"], tt.want[1]) {
t.Errorf("ReadPerfData() java.property.java.vm.specification.version = %v, want %v", got["java.property.java.vm.specification.version"], tt.want[1])
}
if !reflect.DeepEqual(got["sun.gc.collector.1.time"], tt.want[2]) {
t.Errorf("ReadPerfData() sun.gc.collector.1.time = %v, want %v", got["sun.gc.collector.1.time"], tt.want[2])
}
if !reflect.DeepEqual(len(got), tt.want[3]) {
t.Errorf("ReadPerfData() entries number = %v, want %v", len(got), tt.want[3])
}
})
}
}