Merge branch 'issues/issues-10-unit-tests-pcp-module' into 'master'

unit tests for pcp module

See merge request 
This commit is contained in:
Pradyumna Kaushik 2019-10-24 20:07:17 +00:00
commit 26f96f361f
3 changed files with 100 additions and 0 deletions

View file

@ -41,6 +41,7 @@ func AverageNodePowerHistory(history *ring.Ring) float64 {
return 0.0
}
// TODO (pkaushik) handle cases when DRAM power is not being monitored.
count /= 4 // Two PKGs, two DRAM for all nodes currently.
return (total / count)

49
pcp/utils_test.go Normal file
View file

@ -0,0 +1,49 @@
// Copyright (C) 2018 spdf
//
// This file is part of Elektron.
//
// Elektron is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Elektron is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Elektron. If not, see <http://www.gnu.org/licenses/>.
//
package pcp
import (
"container/ring"
"github.com/stretchr/testify/assert"
"testing"
)
func TestAverageNodePowerHistory(t *testing.T) {
// Creating a ring to hold 5 seconds of node power readings.
// Note that as we're considering both CPU and DRAM packages, this amounts to 20 entries
// in the ring.
nodePowerRecordings := ring.New(20)
for i := 1; i <= 20; i++ {
nodePowerRecordings.Value = float64(i)
nodePowerRecordings = nodePowerRecordings.Next()
}
assert.Equal(t, 42.0, AverageNodePowerHistory(nodePowerRecordings))
}
func TestAverageClusterPowerHistory(t *testing.T) {
// Creating a ring to hold 5 seconds of cluster power consumption.
clusterPowerRecordings := ring.New(5)
for i := 1; i <= 5; i++ {
clusterPowerRecordings.Value = float64(i)
clusterPowerRecordings = clusterPowerRecordings.Next()
}
assert.Equal(t, 3.0, AverageClusterPowerHistory(clusterPowerRecordings))
}

50
pcp/victim_test.go Normal file
View file

@ -0,0 +1,50 @@
// Copyright (C) 2018 spdf
//
// This file is part of Elektron.
//
// Elektron is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Elektron is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Elektron. If not, see <http://www.gnu.org/licenses/>.
//
package pcp
import (
"github.com/stretchr/testify/assert"
"sort"
"testing"
)
// TestVictimSorter tests whether victim nodes are sorted in the non-increasing
// order of Watts consumption.
func TestVictimSorter(t *testing.T) {
victims := []Victim{
{Watts: 10.0, Host: "host1"},
{Watts: 20.0, Host: "host2"},
{Watts: 30.0, Host: "host3"},
{Watts: 40.0, Host: "host4"},
}
sort.Sort(VictimSorter(victims))
expectedVictimsOrder := []Victim{
{Watts: 40.0, Host: "host4"},
{Watts: 30.0, Host: "host3"},
{Watts: 20.0, Host: "host2"},
{Watts: 10.0, Host: "host1"},
}
for i, v := range expectedVictimsOrder {
assert.Equal(t, v.Watts, victims[i].Watts, "failed to sorted victims")
assert.Equal(t, v.Host, victims[i].Host, "failed to sorted victims")
}
}