mirror of
https://github.com/tuna/tunasync.git
synced 2025-06-15 14:12:47 +00:00
refactor(worker): change provider's Run method to Start, and change logfile handling
This commit is contained in:
parent
276ab233c5
commit
0e808a449a
@ -20,6 +20,7 @@ type cmdProvider struct {
|
|||||||
cmdConfig
|
cmdConfig
|
||||||
command []string
|
command []string
|
||||||
cmd *cmdJob
|
cmd *cmdJob
|
||||||
|
logFile *os.File
|
||||||
}
|
}
|
||||||
|
|
||||||
func newCmdProvider(c cmdConfig) (*cmdProvider, error) {
|
func newCmdProvider(c cmdConfig) (*cmdProvider, error) {
|
||||||
@ -46,10 +47,7 @@ func newCmdProvider(c cmdConfig) (*cmdProvider, error) {
|
|||||||
return provider, nil
|
return provider, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *cmdProvider) InitRunner() {
|
func (p *cmdProvider) Start() error {
|
||||||
}
|
|
||||||
|
|
||||||
func (p *cmdProvider) Run() error {
|
|
||||||
env := map[string]string{
|
env := map[string]string{
|
||||||
"TUNASYNC_MIRROR_NAME": p.Name(),
|
"TUNASYNC_MIRROR_NAME": p.Name(),
|
||||||
"TUNASYNC_WORKING_DIR": p.WorkingDir(),
|
"TUNASYNC_WORKING_DIR": p.WorkingDir(),
|
||||||
@ -65,13 +63,16 @@ func (p *cmdProvider) Run() error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
// defer logFile.Close()
|
p.logFile = logFile
|
||||||
p.cmd.SetLogFile(logFile)
|
p.cmd.SetLogFile(logFile)
|
||||||
|
|
||||||
return p.cmd.Start()
|
return p.cmd.Start()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *cmdProvider) Wait() error {
|
func (p *cmdProvider) Wait() error {
|
||||||
|
if p.logFile != nil {
|
||||||
|
defer p.logFile.Close()
|
||||||
|
}
|
||||||
return p.cmd.Wait()
|
return p.cmd.Wait()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -79,6 +80,9 @@ func (p *cmdProvider) Terminate() error {
|
|||||||
if p.cmd == nil {
|
if p.cmd == nil {
|
||||||
return errors.New("provider command job not initialized")
|
return errors.New("provider command job not initialized")
|
||||||
}
|
}
|
||||||
|
if p.logFile != nil {
|
||||||
|
defer p.logFile.Close()
|
||||||
|
}
|
||||||
err := p.cmd.Terminate()
|
err := p.cmd.Terminate()
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -16,8 +16,10 @@ type mirrorProvider interface {
|
|||||||
Name() string
|
Name() string
|
||||||
|
|
||||||
// TODO: implement Run, Terminate and Hooks
|
// TODO: implement Run, Terminate and Hooks
|
||||||
// run mirror job
|
// run mirror job in background
|
||||||
Run()
|
Start()
|
||||||
|
// Wait job to finish
|
||||||
|
Wait()
|
||||||
// terminate mirror job
|
// terminate mirror job
|
||||||
Terminate()
|
Terminate()
|
||||||
// job hooks
|
// job hooks
|
||||||
|
@ -80,6 +80,9 @@ func TestCmdProvider(t *testing.T) {
|
|||||||
logDir: tmpDir,
|
logDir: tmpDir,
|
||||||
logFile: tmpFile,
|
logFile: tmpFile,
|
||||||
interval: 600,
|
interval: 600,
|
||||||
|
env: map[string]string{
|
||||||
|
"AOSP_REPO_BIN": "/usr/local/bin/repo",
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
provider, err := newCmdProvider(c)
|
provider, err := newCmdProvider(c)
|
||||||
@ -97,13 +100,15 @@ echo $TUNASYNC_WORKING_DIR
|
|||||||
echo $TUNASYNC_MIRROR_NAME
|
echo $TUNASYNC_MIRROR_NAME
|
||||||
echo $TUNASYNC_UPSTREAM_URL
|
echo $TUNASYNC_UPSTREAM_URL
|
||||||
echo $TUNASYNC_LOG_FILE
|
echo $TUNASYNC_LOG_FILE
|
||||||
|
echo $AOSP_REPO_BIN
|
||||||
`
|
`
|
||||||
exceptedOutput := fmt.Sprintf(
|
exceptedOutput := fmt.Sprintf(
|
||||||
"%s\n%s\n%s\n%s\n",
|
"%s\n%s\n%s\n%s\n%s\n",
|
||||||
provider.WorkingDir(),
|
provider.WorkingDir(),
|
||||||
provider.Name(),
|
provider.Name(),
|
||||||
provider.upstreamURL,
|
provider.upstreamURL,
|
||||||
provider.LogFile(),
|
provider.LogFile(),
|
||||||
|
"/usr/local/bin/repo",
|
||||||
)
|
)
|
||||||
err = ioutil.WriteFile(scriptFile, []byte(scriptContent), 0755)
|
err = ioutil.WriteFile(scriptFile, []byte(scriptContent), 0755)
|
||||||
So(err, ShouldBeNil)
|
So(err, ShouldBeNil)
|
||||||
@ -111,7 +116,7 @@ echo $TUNASYNC_LOG_FILE
|
|||||||
So(err, ShouldBeNil)
|
So(err, ShouldBeNil)
|
||||||
So(readedScriptContent, ShouldResemble, []byte(scriptContent))
|
So(readedScriptContent, ShouldResemble, []byte(scriptContent))
|
||||||
|
|
||||||
err = provider.Run()
|
err = provider.Start()
|
||||||
So(err, ShouldBeNil)
|
So(err, ShouldBeNil)
|
||||||
err = provider.Wait()
|
err = provider.Wait()
|
||||||
So(err, ShouldBeNil)
|
So(err, ShouldBeNil)
|
||||||
@ -129,7 +134,7 @@ echo $TUNASYNC_LOG_FILE
|
|||||||
So(err, ShouldBeNil)
|
So(err, ShouldBeNil)
|
||||||
So(readedScriptContent, ShouldResemble, []byte(scriptContent))
|
So(readedScriptContent, ShouldResemble, []byte(scriptContent))
|
||||||
|
|
||||||
err = provider.Run()
|
err = provider.Start()
|
||||||
So(err, ShouldBeNil)
|
So(err, ShouldBeNil)
|
||||||
err = provider.Wait()
|
err = provider.Wait()
|
||||||
So(err, ShouldNotBeNil)
|
So(err, ShouldNotBeNil)
|
||||||
@ -143,7 +148,7 @@ sleep 5
|
|||||||
err = ioutil.WriteFile(scriptFile, []byte(scriptContent), 0755)
|
err = ioutil.WriteFile(scriptFile, []byte(scriptContent), 0755)
|
||||||
So(err, ShouldBeNil)
|
So(err, ShouldBeNil)
|
||||||
|
|
||||||
err = provider.Run()
|
err = provider.Start()
|
||||||
So(err, ShouldBeNil)
|
So(err, ShouldBeNil)
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
|
@ -33,7 +33,7 @@ func newRsyncProvider(c rsyncConfig) (*rsyncProvider, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TODO: implement this
|
// TODO: implement this
|
||||||
func (p *rsyncProvider) Run() {
|
func (p *rsyncProvider) Start() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -45,15 +45,6 @@ func newCmdJob(cmdAndArgs []string, workingDir string, env map[string]string) *c
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// start job and wait
|
|
||||||
func (c *cmdJob) Run() error {
|
|
||||||
err := c.cmd.Start()
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
return c.Wait()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *cmdJob) Start() error {
|
func (c *cmdJob) Start() error {
|
||||||
c.finished = make(chan struct{}, 1)
|
c.finished = make(chan struct{}, 1)
|
||||||
return c.cmd.Start()
|
return c.cmd.Start()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user