func main() { runtime.GOMAXPROCS(runtime.NumCPU()) var config workload.Config workload.ReadConfig(&config) s := seriesly.SerieslyClient{} s.Init(config.SerieslyHostname, "sync_latency"+config.SerieslyDatabase) c := api.SyncGatewayClient{} c.Init(config.Hostname, config.Database) user := api.UserAuth{"collector", "password", []string{"stats"}} c.AddUser(user.Name, user) session := api.Session{Name: user.Name, TTL: 2592000} cookie := c.CreateSession(user.Name, session) c.AddCookie(&cookie) activeSamplers = 0 for doc := range workload.DocIterator(0, DocsPerUser, config.DocSize, "stats") { if activeSamplers < MaxSamplers { activeSamplers++ go measureLatency(&c, &s, doc) } time.Sleep(time.Duration(1000) * time.Millisecond) } }
func runUser(user workload.User, config workload.Config, cookie http.Cookie, wg *sync.WaitGroup) { c := api.SyncGatewayClient{} c.Init(config.Hostname, config.Database) c.AddCookie(&cookie) log.Printf("Starting new %s (%s)", user.Type, user.Name) if user.Type == "pusher" { go workload.RunPusher(&c, user.Channel, config.DocSize, user.SeqId, config.SleepTimeMs, wg) } else { go workload.RunPuller(&c, user.Channel, user.Name, wg) } }