func perftesterHandler(w http.ResponseWriter, r *http.Request) { ctx := appengine.NewContext(r) tStart := time.Now() str := "" debugf := func(step string, fmtstr string, varargs ...interface{}) { payload := fmt.Sprintf(fmtstr, varargs...) outStr := fmt.Sprintf("[%s] %9.6f %s", step, time.Since(tStart).Seconds(), payload) log.Debugf(ctx, outStr) str += "* " + outStr + "\n" } debugf("pt_001", "starting") stats := map[string]*complaintdb.DailyCount{} dailys := []complaintdb.DailyCount{} counts := []types.CountItem{} debugf("pt_002", "populating") t := time.Now().AddDate(0, -6, 0) for i := 0; i < 150; i++ { t = t.AddDate(0, 0, 1) dailys = append(dailys, complaintdb.DailyCount{t.Format("2006.01.02"), i, i, false, false}) item := complaintdb.DailyCount{t.Format("2006.01.02"), i, i, false, false} stats[date.Datestring2MidnightPdt(item.Datestring).Format("Jan 02")] = &item } debugf("pt_005", "populating all done") pdt, _ := time.LoadLocation("America/Los_Angeles") dateNoTimeFormat := "2006.01.02" arbitraryDatestring2MidnightPdt := func(s string, fmt string) time.Time { t, _ := time.ParseInLocation(fmt, s, pdt) return t } datestring2MidnightPdt := func(s string) time.Time { return arbitraryDatestring2MidnightPdt(s, dateNoTimeFormat) } _ = datestring2MidnightPdt debugf("pt_010", "daily stats loaded (%d dailys, %d stats)", len(dailys), len(stats)) for _, daily := range dailys { // cdb.C.Infof(" -- we have a daily: %#v", daily) //key := datestring2MidnightPdt(daily.Datestring).Format("Jan 02") item := types.CountItem{ //Key: key, //fmt.Sprintf("Jan %02d", j+1), //daily.Timestamp().Format("Jan 02"), Key: daily.Timestamp().Format("Jan 02"), Count: daily.NumComplaints, } if dc, exists := stats[item.Key]; exists { item.TotalComplainers = dc.NumComplainers item.TotalComplaints = dc.NumComplaints item.IsMaxComplainers = dc.IsMaxComplainers item.IsMaxComplaints = dc.IsMaxComplaints } //counts = append(counts, item) } debugf("pt_090", "daily stats munged (%d counts)", len(counts)) w.Header().Set("Content-Type", "text/plain") w.Write([]byte(str)) }
func (cdb ComplaintDB) getDailyCountsByEmailAdress(ea string) ([]types.CountItem, error) { counts := []types.CountItem{} gs, _ := cdb.LoadGlobalStats() stats := map[string]*DailyCount{} if gs != nil { for i, dc := range gs.Counts { stats[date.Datestring2MidnightPdt(dc.Datestring).Format("Jan 02")] = &gs.Counts[i] } } if dailys, err := cdb.GetDailyCounts(ea); err != nil { return counts, err } else { for _, daily := range dailys { // cdb.C.Infof(" -- we have a daily: %#v", daily) item := types.CountItem{ Key: daily.Timestamp().Format("Jan 02"), Count: daily.NumComplaints, } if dc, exists := stats[item.Key]; exists { item.TotalComplainers = dc.NumComplainers item.TotalComplaints = dc.NumComplaints item.IsMaxComplainers = dc.IsMaxComplainers item.IsMaxComplaints = dc.IsMaxComplaints } counts = append(counts, item) } } return counts, nil }
func (cdb ComplaintDB) getDailyCountsByEmailAdress(ea string) ([]types.CountItem, error) { cdb.Debugf("gDCBEA_001", "starting") gs, _ := cdb.LoadGlobalStats() cdb.Debugf("gDCBEA_002", "global stats loaded") stats := map[string]*DailyCount{} if gs != nil { for i, dc := range gs.Counts { stats[date.Datestring2MidnightPdt(dc.Datestring).Format("Jan 02")] = &gs.Counts[i] } } cdb.Debugf("gDCBEA_003", "global stats munged; loading daily") dailys, err := cdb.GetDailyCounts(ea) if err != nil { return []types.CountItem{}, err } counts := []types.CountItem{} cdb.Debugf("gDCBEA_004", "daily stats loaded (%d dailys, %d stats)", len(dailys), len(stats)) for _, daily := range dailys { item := types.CountItem{ Key: daily.Timestamp().Format("Jan 02"), Count: daily.NumComplaints, } if dc, exists := stats[item.Key]; exists { item.TotalComplainers = dc.NumComplainers item.TotalComplaints = dc.NumComplaints item.IsMaxComplainers = dc.IsMaxComplainers item.IsMaxComplaints = dc.IsMaxComplaints } counts = append(counts, item) } cdb.Debugf("gDCBEA_005", "daily stats munged (%d counts)", len(counts)) return counts, nil }