func (s *servicesWrapperGenSuite) TestGenServiceFileWithBusName(c *C) { yamlText := ` name: snap version: 1.0 apps: app: command: bin/start stop-command: bin/stop post-stop-command: bin/stop --post stop-timeout: 10s bus-name: foo.bar.baz daemon: dbus ` info, err := snap.InfoFromSnapYaml([]byte(yamlText)) c.Assert(err, IsNil) info.Revision = snap.R(44) app := info.Apps["app"] wrapperText, err := wrappers.GenerateSnapServiceFile(app) c.Assert(err, IsNil) c.Assert(wrapperText, Equals, expectedDbusService) }
func (s *servicesWrapperGenSuite) TestGenerateSnapServiceFileRestart(c *C) { yamlTextTemplate := ` name: snap apps: app: restart-condition: %s ` for name, cond := range systemd.RestartMap { yamlText := fmt.Sprintf(yamlTextTemplate, cond) info, err := snap.InfoFromSnapYaml([]byte(yamlText)) c.Assert(err, IsNil) info.Revision = snap.R(44) app := info.Apps["app"] wrapperText, err := wrappers.GenerateSnapServiceFile(app) c.Assert(err, IsNil) if cond == systemd.RestartNever { c.Check(wrapperText, Matches, `(?ms).*^Restart=no$.*`, Commentf(name)) } else { c.Check(wrapperText, Matches, `(?ms).*^Restart=`+name+`$.*`, Commentf(name)) } } }
func (s *servicesWrapperGenSuite) TestGenerateSnapServiceFileIllegalChars(c *C) { service := &snap.AppInfo{ Snap: &snap.Info{ SuggestedName: "xkcd-webserver", Version: "0.3.4", SideInfo: snap.SideInfo{Revision: snap.R(44)}, }, Name: "xkcd-webserver", Command: "bin/foo start\n", StopCommand: "bin/foo stop", PostStopCommand: "bin/foo post-stop", StopTimeout: timeout.DefaultTimeout, Daemon: "simple", } _, err := wrappers.GenerateSnapServiceFile(service) c.Assert(err, NotNil) }
func (s *servicesWrapperGenSuite) TestGenerateSnapServiceFileTypeForking(c *C) { service := &snap.AppInfo{ Snap: &snap.Info{ SuggestedName: "xkcd-webserver", Version: "0.3.4", SideInfo: snap.SideInfo{Revision: snap.R(44)}, }, Name: "xkcd-webserver", Command: "bin/foo start", StopCommand: "bin/foo stop", PostStopCommand: "bin/foo post-stop", StopTimeout: timeout.DefaultTimeout, Daemon: "forking", } generatedWrapper, err := wrappers.GenerateSnapServiceFile(service) c.Assert(err, IsNil) c.Assert(generatedWrapper, Equals, expectedTypeForkingWrapper) }
func (s *servicesWrapperGenSuite) TestGenerateSnapServiceFile(c *C) { yamlText := ` name: snap version: 1.0 apps: app: command: bin/start stop-command: bin/stop post-stop-command: bin/stop --post stop-timeout: 10s daemon: simple ` info, err := snap.InfoFromSnapYaml([]byte(yamlText)) c.Assert(err, IsNil) info.Revision = snap.R(44) app := info.Apps["app"] generatedWrapper, err := wrappers.GenerateSnapServiceFile(app) c.Assert(err, IsNil) c.Check(generatedWrapper, Equals, expectedAppService) }
func (s *servicesWrapperGenSuite) TestGenerateSnapServiceFileWithSocket(c *C) { service := &snap.AppInfo{ Snap: &snap.Info{ SideInfo: snap.SideInfo{ RealName: "xkcd-webserver", Revision: snap.R(44), }, Version: "0.3.4", }, Name: "xkcd-webserver", Command: "bin/foo start", StopCommand: "bin/foo stop", PostStopCommand: "bin/foo post-stop", StopTimeout: timeout.DefaultTimeout, Socket: true, Daemon: "simple", } generatedWrapper, err := wrappers.GenerateSnapServiceFile(service) c.Assert(err, IsNil) c.Assert(generatedWrapper, Equals, expectedSocketUsingWrapper) }