mirror of
https://github.com/percona/percona-toolkit.git
synced 2025-09-09 18:30:16 +00:00
104 lines
3.4 KiB
Go
104 lines
3.4 KiB
Go
package translate
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestAddHashToNodeName(t *testing.T) {
|
|
hash1 := "somehash"
|
|
name1 := "somename"
|
|
ResetDB()
|
|
ts1, _ := time.Parse(time.RFC3339, "2001-01-01T01:01:01")
|
|
AddHashToNodeName(hash1, name1, ts1)
|
|
if length := len(db.HashToNodeNames[hash1]); length != 1 {
|
|
t.Errorf("incorrect hashtonodenames length: %d, expected 1", length)
|
|
t.Fail()
|
|
}
|
|
name2 := "somename.with.a.fqdn.net"
|
|
AddHashToNodeName(hash1, name2, ts1)
|
|
if length := len(db.HashToNodeNames[hash1]); length != 1 {
|
|
t.Errorf("incorrect hashtonodenames length: %d, expected 1", length)
|
|
t.Fail()
|
|
}
|
|
name3 := "somename2.with.a.fqdn.net"
|
|
AddHashToNodeName(hash1, name3, ts1)
|
|
if length := len(db.HashToNodeNames[hash1]); length != 2 {
|
|
t.Errorf("incorrect hashtonodenames length: %d, expected 2", length)
|
|
t.Fail()
|
|
}
|
|
}
|
|
|
|
func TestAddIPToNodeName(t *testing.T) {
|
|
ip := "127.0.0.1"
|
|
name1 := "somename"
|
|
ResetDB()
|
|
ts1, _ := time.Parse(time.RFC3339, "2001-01-01T01:01:01")
|
|
AddIPToNodeName(ip, name1, ts1)
|
|
if length := len(db.IPToNodeNames[ip]); length != 1 {
|
|
t.Errorf("incorrect iptonodenames length: %d, expected 1", length)
|
|
t.Fail()
|
|
}
|
|
name2 := "somename.with.a.fqdn.net"
|
|
AddIPToNodeName(ip, name2, ts1)
|
|
if length := len(db.IPToNodeNames[ip]); length != 1 {
|
|
t.Errorf("incorrect iptonodenames length: %d, expected 1", length)
|
|
t.Fail()
|
|
}
|
|
name3 := "somename2.with.a.fqdn.net"
|
|
AddIPToNodeName(ip, name3, ts1)
|
|
if length := len(db.IPToNodeNames[ip]); length != 2 {
|
|
t.Errorf("incorrect iptonodenames length: %d, expected 2", length)
|
|
t.Fail()
|
|
}
|
|
}
|
|
|
|
func testMostAppropriateValueFromTS(t *testing.T) {
|
|
tests := []struct {
|
|
inputunits []translationUnit
|
|
inputts time.Time
|
|
expected string
|
|
}{
|
|
{
|
|
inputunits: []translationUnit{
|
|
translationUnit{Value: "value1", Timestamp: time.Date(2001, time.January, 1, 1, 1, 1, 0, time.UTC)},
|
|
translationUnit{Value: "value2", Timestamp: time.Date(2001, time.January, 1, 3, 1, 1, 0, time.UTC)},
|
|
},
|
|
inputts: time.Date(2001, time.January, 1, 2, 1, 1, 0, time.UTC),
|
|
expected: "value1",
|
|
},
|
|
{
|
|
inputunits: []translationUnit{
|
|
translationUnit{Value: "value1", Timestamp: time.Date(2001, time.January, 1, 1, 1, 1, 0, time.UTC)},
|
|
translationUnit{Value: "value2", Timestamp: time.Date(2001, time.January, 1, 3, 1, 1, 0, time.UTC)},
|
|
},
|
|
inputts: time.Date(2001, time.January, 1, 4, 1, 1, 0, time.UTC),
|
|
expected: "value2",
|
|
},
|
|
{
|
|
inputunits: []translationUnit{
|
|
translationUnit{Value: "value1", Timestamp: time.Date(2001, time.January, 1, 1, 1, 1, 0, time.UTC)},
|
|
translationUnit{Value: "value2", Timestamp: time.Date(2001, time.January, 1, 3, 1, 1, 0, time.UTC)},
|
|
translationUnit{Value: "value3", Timestamp: time.Date(2001, time.January, 1, 5, 1, 1, 0, time.UTC)},
|
|
},
|
|
inputts: time.Date(2001, time.January, 1, 4, 1, 1, 0, time.UTC),
|
|
expected: "value2",
|
|
},
|
|
{
|
|
inputunits: []translationUnit{
|
|
translationUnit{Value: "value1", Timestamp: time.Date(2001, time.January, 1, 1, 1, 1, 0, time.UTC)},
|
|
translationUnit{Value: "value2", Timestamp: time.Date(2001, time.January, 1, 3, 1, 1, 0, time.UTC)},
|
|
},
|
|
inputts: time.Date(2001, time.January, 1, 0, 1, 1, 0, time.UTC),
|
|
expected: "value1",
|
|
},
|
|
}
|
|
|
|
for i, test := range tests {
|
|
out := mostAppropriateValueFromTS(test.inputunits, test.inputts)
|
|
if out != test.expected {
|
|
t.Errorf("test %d, expected: %s, got: %s", i, test.expected, out)
|
|
}
|
|
}
|
|
}
|