From f27a058c5a729e87b83406ffdfcb6974d873efd7 Mon Sep 17 00:00:00 2001 From: Martin Geno Date: Sat, 6 May 2017 15:09:59 +0200 Subject: [PATCH] [TASK] ssh manager handler for string output --- ssh/run.go | 19 +++++++++++++++++-- ssh/run_test.go | 12 +++++------- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/ssh/run.go b/ssh/run.go index 9662f31..44bb8a9 100644 --- a/ssh/run.go +++ b/ssh/run.go @@ -10,9 +10,24 @@ import ( "github.com/FreifunkBremen/freifunkmanager/lib/log" ) -type SSHRunResultHandler func([]byte, error) +type SSHResultHandler func([]byte, error) -func (m *Manager) RunEverywhere(cmd string, handler SSHRunResultHandler) { +type SSHResultStringHandler func(string, error) + +func SSHResultToString(result []byte) string { + if len(result) > 0 { + result = result[:len(result)-1] + } + return string(result) +} + +func SSHResultToStringHandler(handler SSHResultStringHandler) SSHResultHandler { + return func(result []byte, err error) { + handler(SSHResultToString(result), err) + } +} + +func (m *Manager) RunEverywhere(cmd string, handler SSHResultHandler) { for host, client := range m.clients { result, err := m.run(host, client, cmd) handler(result, err) diff --git a/ssh/run_test.go b/ssh/run_test.go index 4d75c71..0ec0609 100644 --- a/ssh/run_test.go +++ b/ssh/run_test.go @@ -16,18 +16,16 @@ func TestRun(t *testing.T) { mgmt.ConnectTo(net.ParseIP("2a06:8782:ffbb:1337::127")) - mgmt.RunEverywhere("echo 13", func(result []byte, err error) { + mgmt.RunEverywhere("echo 13", SSHResultToStringHandler(func(result string, err error) { assert.NoError(err) - result = result[:len(result)-1] - - assert.Equal([]byte{'1', '3'}, result) - }) + assert.Equal("13", result) + })) result, err := mgmt.RunOn(net.ParseIP("2a06:8782:ffbb:1337::127"), "echo 16") assert.NoError(err) - result = result[:len(result)-1] - resultInt, _ := strconv.Atoi(string(result)) + str := SSHResultToString(result) + resultInt, _ := strconv.Atoi(str) assert.Equal(16, resultInt)