Mutualise RebootNow() method on Client

This commit is contained in:
2019-02-12 11:12:50 +01:00
parent a1a417b05b
commit e63d7b6f97
4 changed files with 15 additions and 16 deletions

View File

@ -1,56 +0,0 @@
package updater
import (
"context"
"sync"
"forge.cadoles.com/Pyxis/golang-socketio"
"github.com/pkg/errors"
)
const (
eventReboot = "reboot now"
)
// RebootNow asks the ReachRS module to reboot now
func (c *Client) RebootNow(ctx context.Context, waitDisconnect bool) error {
var err error
var wg sync.WaitGroup
if waitDisconnect {
var once sync.Once
done := func() {
c.Off(gosocketio.OnDisconnection)
wg.Done()
}
wg.Add(1)
go func() {
<-ctx.Done()
err = ctx.Err()
once.Do(done)
}()
err = c.On(gosocketio.OnDisconnection, func(h *gosocketio.Channel) {
once.Do(done)
})
if err != nil {
return errors.Wrapf(err, "error while binding to '%s' event", gosocketio.OnDisconnection)
}
}
if err = c.Emit(eventReboot, nil); err != nil {
return err
}
if waitDisconnect {
wg.Wait()
}
return err
}

View File

@ -1,37 +0,0 @@
package updater
import (
"context"
"testing"
"time"
"forge.cadoles.com/Pyxis/orion/emlid"
)
func TestClientRebootNow(t *testing.T) {
if !*runUpdaterIntegrationTests {
t.Skip("To run this test, use: go test -updater-integration")
}
if !*runRebootTest {
t.Skip("To run this test, use: go test -updater-reboot-test")
}
client := NewClient(
emlid.WithStandardLogger(),
emlid.WithEndpoint(*reachHost, 80),
)
if err := client.Connect(); err != nil {
t.Fatal(err)
}
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
if err := client.RebootNow(ctx, true); err != nil {
t.Error(err)
}
defer client.Close()
}

View File

@ -7,11 +7,6 @@ var runUpdaterIntegrationTests = flag.Bool(
"Run the 'Updater' integration tests (in addition to the unit tests)",
)
var runRebootTest = flag.Bool(
"updater-reboot-test", false,
"Run the updater 'Reboot' test (in addition to the unit tests)",
)
var runJoinNetworkTest = flag.Bool(
"updater-join-network-test", false,
"Run the updater 'JoinWiFiNetwork' test (in addition to the unit tests)",