2016-03-20 18:30:44 +01:00
|
|
|
package models
|
|
|
|
|
|
|
|
import (
|
|
|
|
"io/ioutil"
|
|
|
|
"os"
|
|
|
|
"testing"
|
2016-10-08 11:52:11 +02:00
|
|
|
"time"
|
2016-03-20 18:30:44 +01:00
|
|
|
|
2016-03-21 12:26:08 +01:00
|
|
|
"github.com/FreifunkBremen/respond-collector/data"
|
2016-03-20 18:30:44 +01:00
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
)
|
|
|
|
|
2016-10-08 11:52:11 +02:00
|
|
|
func TestExpire(t *testing.T) {
|
|
|
|
assert := assert.New(t)
|
|
|
|
config := &Config{}
|
|
|
|
config.Nodes.MaxAge = 6
|
|
|
|
nodes := &Nodes{
|
|
|
|
config: config,
|
|
|
|
List: make(map[string]*Node),
|
|
|
|
}
|
|
|
|
|
|
|
|
nodes.Update("expire", &data.ResponseData{}) // should expire
|
|
|
|
nodes.Update("offline", &data.ResponseData{}) // should become offline
|
|
|
|
nodes.Update("online", &data.ResponseData{}) // should stay online
|
|
|
|
|
|
|
|
expire := nodes.List["expire"]
|
|
|
|
expire.Lastseen = expire.Lastseen.Add((-6 * time.Hour * 24) - time.Minute)
|
|
|
|
offline := nodes.List["offline"]
|
|
|
|
offline.Lastseen = offline.Lastseen.Add((-6 * time.Hour * 24) + time.Minute)
|
|
|
|
|
|
|
|
nodes.expire()
|
|
|
|
|
|
|
|
// one expired?
|
|
|
|
assert.Equal(2, len(nodes.List))
|
|
|
|
assert.Nil(nodes.List["expire"])
|
|
|
|
|
|
|
|
// one offline?
|
|
|
|
assert.NotNil(nodes.List["offline"])
|
|
|
|
assert.False(nodes.List["offline"].Flags.Online)
|
|
|
|
|
|
|
|
// one online?
|
|
|
|
assert.NotNil(nodes.List["online"])
|
|
|
|
assert.True(nodes.List["online"].Flags.Online)
|
|
|
|
}
|
|
|
|
|
2016-03-20 18:30:44 +01:00
|
|
|
func TestLoadAndSave(t *testing.T) {
|
|
|
|
assert := assert.New(t)
|
|
|
|
|
|
|
|
config := &Config{}
|
2017-01-20 14:38:13 +01:00
|
|
|
config.Nodes.NodesDynamicPath = "testdata/nodes.json"
|
2016-03-20 18:30:44 +01:00
|
|
|
|
2016-11-20 18:45:18 +01:00
|
|
|
nodes := NewNodes(config)
|
2016-03-20 18:30:44 +01:00
|
|
|
nodes.load()
|
|
|
|
|
|
|
|
tmpfile, _ := ioutil.TempFile("/tmp", "nodes")
|
|
|
|
save(nodes, tmpfile.Name())
|
|
|
|
os.Remove(tmpfile.Name())
|
|
|
|
|
|
|
|
assert.Equal(1, len(nodes.List))
|
|
|
|
}
|
2016-03-21 12:26:08 +01:00
|
|
|
|
|
|
|
func TestUpdateNodes(t *testing.T) {
|
|
|
|
assert := assert.New(t)
|
|
|
|
nodes := &Nodes{List: make(map[string]*Node)}
|
|
|
|
assert.Equal(0, len(nodes.List))
|
|
|
|
|
|
|
|
res := &data.ResponseData{
|
|
|
|
Neighbours: &data.Neighbours{},
|
|
|
|
Statistics: &data.Statistics{},
|
|
|
|
NodeInfo: &data.NodeInfo{},
|
|
|
|
}
|
|
|
|
nodes.Update("abcdef012345", res)
|
|
|
|
|
|
|
|
assert.Equal(1, len(nodes.List))
|
|
|
|
}
|
2016-11-20 18:45:18 +01:00
|
|
|
|
2016-12-15 11:10:09 +01:00
|
|
|
func TestToInflux(t *testing.T) {
|
2016-11-20 18:45:18 +01:00
|
|
|
assert := assert.New(t)
|
|
|
|
|
2016-12-15 11:10:09 +01:00
|
|
|
node := Node{
|
|
|
|
Statistics: &data.Statistics{
|
|
|
|
NodeId: "foobar",
|
|
|
|
LoadAverage: 0.5,
|
|
|
|
},
|
|
|
|
Nodeinfo: &data.NodeInfo{
|
|
|
|
Owner: &data.Owner{
|
|
|
|
Contact: "nobody",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
Neighbours: &data.Neighbours{},
|
|
|
|
}
|
2016-11-20 18:45:18 +01:00
|
|
|
|
2016-12-15 11:10:09 +01:00
|
|
|
tags, fields := node.ToInflux()
|
2016-11-20 18:45:18 +01:00
|
|
|
|
2016-12-15 11:10:09 +01:00
|
|
|
assert.Equal("foobar", tags.GetString("nodeid"))
|
|
|
|
assert.Equal("nobody", tags.GetString("owner"))
|
|
|
|
assert.Equal(0.5, fields["load"])
|
2016-11-20 18:45:18 +01:00
|
|
|
}
|