mirror of
https://github.com/siderolabs/talos.git
synced 2025-10-23 13:31:12 +02:00
The problem was that flow to re-run the service with different parameters was not consistent: it depends on whether services was loaded before or not, but that is not reliable, as e.g. with bootstrap API `bootkube` is loaded for the bootstrap and stays until reboot, and never loaded for any other boot. `Unload()` stops and removes the service completely so that new instance of the service could be loaded and started. This fixes the edge case with recovery API not running bootkube properly before reboot after bootstrap. Signed-off-by: Andrey Smirnov <smirnov.andrey@gmail.com>
50 lines
1.2 KiB
Go
50 lines
1.2 KiB
Go
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
package system_test
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/suite"
|
|
|
|
"github.com/talos-systems/talos/internal/app/machined/pkg/system"
|
|
)
|
|
|
|
type SystemServicesSuite struct {
|
|
suite.Suite
|
|
}
|
|
|
|
func (suite *SystemServicesSuite) TestStartShutdown() {
|
|
system.Services(nil).LoadAndStart(
|
|
&MockService{name: "containerd"},
|
|
&MockService{name: "trustd", dependencies: []string{"containerd"}},
|
|
&MockService{name: "osd", dependencies: []string{"containerd", "trustd"}},
|
|
)
|
|
time.Sleep(10 * time.Millisecond)
|
|
|
|
suite.Require().NoError(system.Services(nil).Unload(context.Background(), "trustd", "notrunning"))
|
|
|
|
system.Services(nil).Shutdown()
|
|
}
|
|
|
|
func TestSystemServicesSuite(t *testing.T) {
|
|
suite.Run(t, new(SystemServicesSuite))
|
|
}
|
|
|
|
func (suite *SystemServicesSuite) TestStartStop() {
|
|
system.Services(nil).LoadAndStart(
|
|
&MockService{name: "yolo"},
|
|
)
|
|
|
|
time.Sleep(10 * time.Millisecond)
|
|
|
|
err := system.Services(nil).Stop(
|
|
context.TODO(), "yolo",
|
|
)
|
|
suite.Assert().NoError(err)
|
|
}
|