func (proc *OTRProcess) Stop() {
	log.Printf("Stopping oplogtoredis with HTTP on %d", proc.port)
	err := proc.cmd.Process.Kill()
	if err != nil {
		panic(err)
	}
	waitTCPDown(fmt.Sprintf("localhost:%d", proc.port))
	log.Printf("Stopped oplogtoredis with HTTP on %d", proc.port)
}
Stop kills the Redis proc.
package harness
import (
	"fmt"
	"log"
	"math/rand"
	"net/http"
	"os/exec"
	promdata "github.com/prometheus/client_model/go"
	"github.com/prometheus/common/expfmt"
)
type OTRProcess struct {
	env  []string
	cmd  *exec.Cmd
	port int
}
func StartOTRProcess(mongoURL string, redisURL string, port int) *OTRProcess {
	return StartOTRProcessWithEnv(mongoURL, redisURL, port, []string{})
}
func StartOTRProcessWithEnv(mongoURL string, redisURL string, port int, extraEnv []string) *OTRProcess {
	proc := OTRProcess{
		port: port,
		env: append([]string{
			"OTR_MONGO_URL=" + mongoURL,
			"OTR_REDIS_URL=" + redisURL,
			"OTR_LOG_DEBUG=true",
			"OTR_METADATA_PREFIX=" + randString(16),
			fmt.Sprintf("OTR_HTTP_SERVER_ADDR=0.0.0.0:%d", port),
		}, extraEnv...),
	}
	proc.Start()
	return &proc
}
func (proc *OTRProcess) Start() {
	log.Printf("Starting up oplogtoredis with HTTP on %d", proc.port)
	proc.cmd = exec.Command("/bin/oplogtoredis")  
	proc.cmd.Stdout = makeLogStreamer(fmt.Sprintf("otr:%d", proc.port), "stdout")
	proc.cmd.Stderr = makeLogStreamer(fmt.Sprintf("otr:%d", proc.port), "stderr")
	proc.cmd.Env = proc.env
	err := proc.cmd.Start()
	if err != nil {
		panic("Error starting up OTR process: " + err.Error())
	}
	waitTCP(fmt.Sprintf("localhost:%d", proc.port))
	log.Printf("Started up oplogtoredis with HTTP on %d", proc.port)
}