yanic/models/nodes_test.go

78 lines
1.7 KiB
Go
Raw Normal View History

2016-03-20 17:30:44 +00:00
package models
import (
"io/ioutil"
"os"
"testing"
2016-10-08 09:52:11 +00:00
"time"
2016-03-20 17:30:44 +00:00
"github.com/stretchr/testify/assert"
2017-03-03 15:19:35 +00:00
"github.com/FreifunkBremen/yanic/data"
2016-03-20 17:30:44 +00:00
)
2016-10-08 09:52:11 +00:00
func TestExpire(t *testing.T) {
assert := assert.New(t)
config := &Config{}
config.Nodes.OfflineAfter.Duration = time.Minute * 10
config.Nodes.PruneAfter.Duration = time.Hour * 24 * 6
2016-10-08 09:52:11 +00:00
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.Len(nodes.List, 2)
2016-10-08 09:52:11 +00:00
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 17:30:44 +00:00
func TestLoadAndSave(t *testing.T) {
assert := assert.New(t)
config := &Config{}
config.Nodes.StatePath = "testdata/nodes.json"
2016-03-20 17:30:44 +00:00
2016-11-20 17:45:18 +00:00
nodes := NewNodes(config)
2016-03-20 17:30:44 +00:00
nodes.load()
tmpfile, _ := ioutil.TempFile("/tmp", "nodes")
save(nodes, tmpfile.Name())
os.Remove(tmpfile.Name())
assert.Len(nodes.List, 1)
2016-03-20 17:30:44 +00:00
}
2016-03-21 11:26:08 +00:00
func TestUpdateNodes(t *testing.T) {
assert := assert.New(t)
nodes := &Nodes{List: make(map[string]*Node)}
assert.Len(nodes.List, 0)
2016-03-21 11:26:08 +00:00
res := &data.ResponseData{
Neighbours: &data.Neighbours{},
Statistics: &data.Statistics{},
NodeInfo: &data.NodeInfo{},
}
nodes.Update("abcdef012345", res)
assert.Len(nodes.List, 1)
2016-03-21 11:26:08 +00:00
}