This repository has been archived by the owner on Jan 21, 2022. It is now read-only.
/
nginx_service.go
61 lines (51 loc) · 1.55 KB
/
nginx_service.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package dummy
import (
"time"
bltassets "github.com/cloudfoundry-incubator/bosh-load-tests/assets"
bltcom "github.com/cloudfoundry-incubator/bosh-load-tests/command"
bosherr "github.com/cloudfoundry/bosh-utils/errors"
boshsys "github.com/cloudfoundry/bosh-utils/system"
)
type NginxService struct {
nginxStartCommand string
directorPort int
nginxPort int
cmdRunner boshsys.CmdRunner
process boshsys.Process
assetsProvider bltassets.Provider
portWaiter PortWaiter
}
func NewNginxService(
nginxStartCommand string,
directorPort int,
nginxPort int,
cmdRunner boshsys.CmdRunner,
assetsProvider bltassets.Provider,
portWaiter PortWaiter,
) *NginxService {
return &NginxService{
nginxStartCommand: nginxStartCommand,
directorPort: directorPort,
nginxPort: nginxPort,
cmdRunner: cmdRunner,
assetsProvider: assetsProvider,
portWaiter: portWaiter,
}
}
func (s *NginxService) Start() error {
nginxStartCommand := bltcom.CreateCommand(s.nginxStartCommand)
configPath, err := s.assetsProvider.FullPath("nginx.yml")
if err != nil {
return bosherr.WrapError(err, "Getting nginx config path")
}
nginxStartCommand.Args = append(nginxStartCommand.Args, "-c", configPath)
s.process, err = s.cmdRunner.RunComplexCommandAsync(nginxStartCommand)
if err != nil {
return bosherr.WrapError(err, "starting nginx")
}
s.process.Wait()
return s.portWaiter.Wait("NginxService", "127.0.0.1", s.nginxPort)
}
func (s *NginxService) Stop() {
s.process.TerminateNicely(5 * time.Second)
}