in integration/create_server.go [63:107]
func (server *ZKServer) Run() error {
zkURL := fmt.Sprintf(zkFormatURL, server.Version, server.Version)
workdir, err := os.Getwd()
if err != nil {
return fmt.Errorf("error getting working directory: %s", err.Error())
}
archivePath := filepath.Join(workdir, defaultArchiveName)
if _, err := os.Stat(archivePath); os.IsNotExist(err) {
err = downloadToFile(zkURL, archivePath)
if err != nil {
return fmt.Errorf("error downloading file: %s", err)
}
log.Printf("successfully downloaded archive %s\n", defaultArchiveName)
}
dirName := "apache-zookeeper-" + server.Version + "-bin"
if _, err := os.Stat(filepath.Join(workdir, dirName)); os.IsNotExist(err) {
_, err := extractTarGz(archivePath)
if err != nil {
return fmt.Errorf("error extracting file: %s", err)
}
}
serverScriptPath := filepath.Join(workdir, dirName, "bin/zkServer.sh")
err = os.Chmod(serverScriptPath, 0777)
if err != nil {
return fmt.Errorf("error changing server script permissions: %s", err)
}
server.cmd = exec.Command(serverScriptPath, "start-foreground", filepath.Join(workdir, defaultConfigName))
server.cmd.Stdout = os.Stdout
server.cmd.Stderr = os.Stderr
err = server.cmd.Start()
if err != nil {
return fmt.Errorf("error executing server command: %s", err)
}
if err = waitForStart(fmt.Sprintf(":%d", server.Config.ClientPort), maxRetries, time.Second); err != nil {
return err
}
return nil
}