mirror of
https://github.com/siderolabs/talos.git
synced 2025-08-26 17:11:19 +02:00
It is now possible to `start`/`stop`/`restart` any service via `osctl` commands. There are some changes in `ServiceRunner` to support re-use (re-entering running state). `Services` singleton now tracks service running state to avoid calling `Start()` on already running `ServiceRunner` instance. Method `Start()` was renamed to `LoadAndStart()` to break up service loading (adding to the list of service) and actual service start. Signed-off-by: Andrey Smirnov <smirnov.andrey@gmail.com>
45 lines
1.2 KiB
Go
45 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: "proxyd", dependencies: []string{"containerd"}},
|
|
&MockService{name: "trustd", dependencies: []string{"containerd", "proxyd"}},
|
|
&MockService{name: "osd", dependencies: []string{"containerd"}},
|
|
)
|
|
time.Sleep(10 * time.Millisecond)
|
|
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)
|
|
}
|