From 393caf55f8491fe6919a59818ec1dbb2a00b478e Mon Sep 17 00:00:00 2001 From: Martin/Geno Date: Sun, 15 Jul 2018 21:04:17 +0200 Subject: [PATCH] announce useable channels + fix tests --- runtime/channel.go | 12 +++++------- runtime/channel_test.go | 30 ++++++++++++++++++++++++++++++ ssh/execute_test.go | 2 +- ssh/manager_test.go | 2 +- ssh/run_test.go | 2 +- websocket/hd_connect.go | 20 ++++++++++++++++++++ websocket/hd_connect_test.go | 27 +++++++++++++++++++++++++++ websocket/msg.go | 3 +++ 8 files changed, 88 insertions(+), 10 deletions(-) create mode 100644 runtime/channel_test.go create mode 100644 websocket/hd_connect_test.go diff --git a/runtime/channel.go b/runtime/channel.go index bf31108..e3fbc7b 100644 --- a/runtime/channel.go +++ b/runtime/channel.go @@ -13,7 +13,8 @@ type Channel struct { } var ( - ChannelEU = true + ChannelEU = true + ChannelList = map[uint32]*Channel{ 1: &Channel{Frequenz: 2412, AllowedInEU: true, DFS: false, Indoor: false, SDR: false}, 2: &Channel{Frequenz: 2417, AllowedInEU: true, DFS: false, Indoor: false, SDR: false}, @@ -84,16 +85,13 @@ var ( ) func ChannelIs5GHz(channel uint32) bool { - fre, ok := ChannelList[channel] - return ok && fre.Frequenz < FREQ_THREASHOLD + ch, ok := ChannelList[channel] + return ok && (!ChannelEU || ch.AllowedInEU) && ch.Frequenz > FREQ_THREASHOLD } func GetChannel(channel uint32) *Channel { if ch, ok := ChannelList[channel]; ok { - if !ChannelEU { - return ch - } - if ch.AllowedInEU { + if !ChannelEU || ch.AllowedInEU { return ch } } diff --git a/runtime/channel_test.go b/runtime/channel_test.go new file mode 100644 index 0000000..575d3e4 --- /dev/null +++ b/runtime/channel_test.go @@ -0,0 +1,30 @@ +package runtime + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestChannel(t *testing.T) { + assert := assert.New(t) + + ChannelEU = true + assert.False(ChannelIs5GHz(11), "is 2.4 GHz in EU") + assert.True(ChannelIs5GHz(40), "is 5 GHz everywhere") + assert.False(ChannelIs5GHz(42), "is not 5 GHz in EU") + + assert.NotNil(GetChannel(11), "is 2.4 GHz channel everywhere") + assert.NotNil(GetChannel(40), "is 5 GHz channel everywhere") + assert.Nil(GetChannel(42), "is not a 5 GHz channel in EU") + + ChannelEU = false + assert.False(ChannelIs5GHz(11), "is 2.4 GHz in EU") + assert.True(ChannelIs5GHz(40), "is 5 GHz everywhere") + assert.True(ChannelIs5GHz(42), "is 5 GHz somewhere else") + + assert.NotNil(GetChannel(11), "is 2.4 GHz channel everywhere") + assert.NotNil(GetChannel(40), "is 5 GHz channel everywhere") + assert.NotNil(GetChannel(42), "is 5 GHz channel somewhere else") + +} diff --git a/ssh/execute_test.go b/ssh/execute_test.go index ebf13f6..3fcd8e5 100644 --- a/ssh/execute_test.go +++ b/ssh/execute_test.go @@ -10,7 +10,7 @@ import ( func TestExecute(t *testing.T) { assert := assert.New(t) - addr := net.TCPAddr{IP: net.ParseIP("2a06:8782:ffbb:1337::127"), Port: 22} + addr := net.TCPAddr{IP: net.ParseIP("fd2f:5119:f2c::127"), Port: 22} mgmt := NewManager("~/.ssh/id_rsa") assert.NotNil(mgmt, "no new manager created") diff --git a/ssh/manager_test.go b/ssh/manager_test.go index 1d7fed2..7d17e18 100644 --- a/ssh/manager_test.go +++ b/ssh/manager_test.go @@ -13,6 +13,6 @@ func TestManager(t *testing.T) { mgmt := NewManager("~/.ssh/id_rsa") assert.NotNil(mgmt, "no new manager created") - client, _ := mgmt.ConnectTo(net.TCPAddr{IP: net.ParseIP("2a06:8782:ffbb:1337::127"), Port: 22}) + client, _ := mgmt.ConnectTo(net.TCPAddr{IP: net.ParseIP("fd2f:5119:f2c::127"), Port: 22}) client.Close() } diff --git a/ssh/run_test.go b/ssh/run_test.go index 54f78ac..05d3434 100644 --- a/ssh/run_test.go +++ b/ssh/run_test.go @@ -10,7 +10,7 @@ import ( func TestRun(t *testing.T) { assert := assert.New(t) - addr := net.TCPAddr{IP: net.ParseIP("2a06:8782:ffbb:1337::127"), Port: 22} + addr := net.TCPAddr{IP: net.ParseIP("fd2f:5119:f2c::127"), Port: 22} mgmt := NewManager("~/.ssh/id_rsa") assert.NotNil(mgmt, "no new manager created") diff --git a/websocket/hd_connect.go b/websocket/hd_connect.go index ae66a0a..2b8df33 100644 --- a/websocket/hd_connect.go +++ b/websocket/hd_connect.go @@ -4,8 +4,13 @@ import ( log "github.com/sirupsen/logrus" wsLib "github.com/genofire/golang-lib/websocket" + + "github.com/FreifunkBremen/freifunkmanager/runtime" ) +var wifi24Channels []uint32 +var wifi5Channels []uint32 + func (ws *WebsocketServer) connectHandler(logger *log.Entry, msg *wsLib.Message) error { msg.From.Write(&wsLib.Message{Subject: MessageTypeStats, Body: ws.nodes.Statistics}) @@ -15,6 +20,21 @@ func (ws *WebsocketServer) connectHandler(logger *log.Entry, msg *wsLib.Message) for _, node := range ws.nodes.Current { msg.From.Write(&wsLib.Message{Subject: MessageTypeCurrentNode, Body: node}) } + msg.From.Write(&wsLib.Message{Subject: MessageTypeChannelsWifi24, Body: wifi24Channels}) + msg.From.Write(&wsLib.Message{Subject: MessageTypeChannelsWifi5, Body: wifi5Channels}) logger.Debug("done") return nil } + +func init() { + for ch, channel := range runtime.ChannelList { + if runtime.ChannelEU && !channel.AllowedInEU { + continue + } + if channel.Frequenz > runtime.FREQ_THREASHOLD { + wifi5Channels = append(wifi5Channels, ch) + } else { + wifi24Channels = append(wifi24Channels, ch) + } + } +} diff --git a/websocket/hd_connect_test.go b/websocket/hd_connect_test.go new file mode 100644 index 0000000..64e5fd5 --- /dev/null +++ b/websocket/hd_connect_test.go @@ -0,0 +1,27 @@ +package websocket + +import ( + "fmt" + "testing" + + "github.com/stretchr/testify/assert" + + "github.com/FreifunkBremen/freifunkmanager/runtime" +) + +func TestConnectChannelInit(t *testing.T) { + assert := assert.New(t) + + for _, channel := range wifi24Channels { + assert.False(runtime.ChannelIs5GHz(channel), fmt.Sprintf("wifi24-is channel: %d", channel)) + assert.NotNil(runtime.GetChannel(channel), fmt.Sprintf("wifi24-get channel: %d", channel)) + } + assert.Len(wifi24Channels, 13) + + for _, channel := range wifi5Channels { + assert.True(runtime.ChannelIs5GHz(channel), fmt.Sprintf("wifi5-is channel: %d", channel)) + assert.NotNil(runtime.GetChannel(channel), fmt.Sprintf("wifi5-get channel: %d", channel)) + } + assert.Len(wifi5Channels, 35) + +} diff --git a/websocket/msg.go b/websocket/msg.go index 067f4bd..17c2291 100644 --- a/websocket/msg.go +++ b/websocket/msg.go @@ -7,6 +7,9 @@ const ( MessageTypeAuthStatus = "auth_status" MessageTypeLogout = "logout" + MessageTypeChannelsWifi24 = "channel_wifi24" + MessageTypeChannelsWifi5 = "channel_wifi5" + MessageTypeSystemNode = "node-system" MessageTypeCurrentNode = "node-current" MessageTypeStats = "stats"