Skip to content

Commit f29ab53

Browse files
committed
all: temporarily replace use of time.DateOnly with telemetry.DateOnly
To unbreak the gopls build at 1.19, replace uses of time.DateOnly with a temporary constant telemetry.DateOnly. Confirmed (via a replace directive) that this fixes the gopls build. Change-Id: Ib1c6dc8d27cb9d5200dc00e2e4745edb732896d2 Reviewed-on: https://go-review.googlesource.com/c/telemetry/+/609597 Reviewed-by: Hyang-Ah Hana Kim <[email protected]> LUCI-TryBot-Result: Go LUCI <[email protected]>
1 parent a797f33 commit f29ab53

File tree

15 files changed

+50
-38
lines changed

15 files changed

+50
-38
lines changed

cmd/gotelemetry/internal/view/view.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -437,7 +437,7 @@ func formatDateTime(date time.Time) string {
437437
// parseReportDate parses the date string in the format
438438
// used byt the telemetry report.
439439
func parseReportDate(s string) (time.Time, error) {
440-
return time.Parse(time.DateOnly, s)
440+
return time.Parse(telemetry.DateOnly, s)
441441
}
442442

443443
// charts returns chartdata for a set of telemetry reports. It uses the config
@@ -580,7 +580,7 @@ func pending(files []*counterFile, cfg *config.Config) []*telemetryReport {
580580
log.Printf("skipping malformed %v: unexpected TimeEnd value %q", f.ID, f.Meta["TimeEnd"])
581581
continue
582582
}
583-
week := tb.Format(time.DateOnly)
583+
week := tb.Format(telemetry.DateOnly)
584584
if _, ok := reports[week]; !ok {
585585
reports[week] = &telemetry.Report{Week: week}
586586
}

cmd/gotelemetry/internal/view/view_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ func Test_summary(t *testing.T) {
100100

101101
func Test_reportsDomain(t *testing.T) {
102102
mustParseDate := func(date string) time.Time {
103-
ts, err := time.Parse(time.DateOnly, date)
103+
ts, err := time.Parse(telemetry.DateOnly, date)
104104
if err != nil {
105105
t.Fatalf("failed to parse date %q: %v", date, err)
106106
}

godev/cmd/telemetrygodev/main.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,7 @@ func handleUpload(ucfg *tconfig.Config, uploadBucket storage.BucketHandle) conte
314314
// validate validates the telemetry report data against the latest config.
315315
func validate(r *telemetry.Report, cfg *tconfig.Config) error {
316316
// TODO: reject/drop data arrived too early or too late.
317-
if _, err := time.Parse(time.DateOnly, r.Week); err != nil {
317+
if _, err := time.Parse(telemetry.DateOnly, r.Week); err != nil {
318318
return fmt.Errorf("invalid week %s", r.Week)
319319
}
320320
if !semver.IsValid(r.Config) {

godev/cmd/worker/main.go

+14-14
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ func handleCopy(cfg *config.Config, dest *storage.API) content.HandlerFunc {
102102
g.SetLimit(concurrency)
103103

104104
for date := start; !date.After(end); date = date.AddDate(0, 0, 1) {
105-
it := sourceBucket.Objects(ctx, date.Format(time.DateOnly))
105+
it := sourceBucket.Objects(ctx, date.Format(telemetry.DateOnly))
106106
for {
107107
fileName, err := it.Next()
108108
if errors.Is(err, storage.ErrObjectIteratorDone) {
@@ -138,13 +138,13 @@ func handleTasks(cfg *config.Config) content.HandlerFunc {
138138

139139
// Copy the past 20 days uploaded reports from prod to dev gcs bucket.
140140
if cfg.Env != "prod" {
141-
url := cfg.WorkerURL + "/copy/?start=" + now.AddDate(0, 0, -1*20).Format(time.DateOnly) + "&end=" + now.Format(time.DateOnly)
141+
url := cfg.WorkerURL + "/copy/?start=" + now.AddDate(0, 0, -1*20).Format(telemetry.DateOnly) + "&end=" + now.Format(telemetry.DateOnly)
142142
if _, err := createHTTPTask(cfg, url); err != nil {
143143
return err
144144
}
145145
}
146146
for i := 7; i > 0; i-- {
147-
date := now.AddDate(0, 0, -1*i).Format(time.DateOnly)
147+
date := now.AddDate(0, 0, -1*i).Format(telemetry.DateOnly)
148148
url := cfg.WorkerURL + "/merge/?date=" + date
149149
if _, err := createHTTPTask(cfg, url); err != nil {
150150
return err
@@ -154,7 +154,7 @@ func handleTasks(cfg *config.Config) content.HandlerFunc {
154154
// coded one day delay.
155155
for i := 8; i > 1; i-- {
156156
// Daily chart: generate chart using one day's data.
157-
date := now.AddDate(0, 0, -1*i).Format(time.DateOnly)
157+
date := now.AddDate(0, 0, -1*i).Format(telemetry.DateOnly)
158158
url := cfg.WorkerURL + "/chart/?date=" + date
159159
if _, err := createHTTPTask(cfg, url); err != nil {
160160
return err
@@ -163,7 +163,7 @@ func handleTasks(cfg *config.Config) content.HandlerFunc {
163163
// Weekly chart: generate chart using past 7 days' data.
164164
end := now.AddDate(0, 0, -1*i)
165165
start := end.AddDate(0, 0, -6)
166-
url = cfg.WorkerURL + "/chart/?start=" + start.Format(time.DateOnly) + "&end=" + end.Format(time.DateOnly)
166+
url = cfg.WorkerURL + "/chart/?start=" + start.Format(telemetry.DateOnly) + "&end=" + end.Format(telemetry.DateOnly)
167167
if _, err := createHTTPTask(cfg, url); err != nil {
168168
return err
169169
}
@@ -213,7 +213,7 @@ func handleMerge(s *storage.API) content.HandlerFunc {
213213
return func(w http.ResponseWriter, r *http.Request) error {
214214
ctx := r.Context()
215215
date := r.URL.Query().Get("date")
216-
if _, err := time.Parse(time.DateOnly, date); err != nil {
216+
if _, err := time.Parse(telemetry.DateOnly, date); err != nil {
217217
return content.Error(err, http.StatusBadRequest)
218218
}
219219
it := s.Upload.Objects(ctx, date)
@@ -259,10 +259,10 @@ func handleMerge(s *storage.API) content.HandlerFunc {
259259

260260
func fileName(start, end time.Time) string {
261261
if start.Equal(end) {
262-
return end.Format(time.DateOnly) + ".json"
262+
return end.Format(telemetry.DateOnly) + ".json"
263263
}
264264

265-
return start.Format(time.DateOnly) + "_" + end.Format(time.DateOnly) + ".json"
265+
return start.Format(telemetry.DateOnly) + "_" + end.Format(telemetry.DateOnly) + ".json"
266266
}
267267

268268
// parseDateRange returns the start and end date from the given url.
@@ -271,7 +271,7 @@ func parseDateRange(url *url.URL) (start, end time.Time, _ error) {
271271
if url.Query().Get("start") != "" || url.Query().Get("end") != "" {
272272
return time.Time{}, time.Time{}, content.Error(fmt.Errorf("start or end key should be empty when date key is being used"), http.StatusBadRequest)
273273
}
274-
date, err := time.Parse(time.DateOnly, dateString)
274+
date, err := time.Parse(telemetry.DateOnly, dateString)
275275
if err != nil {
276276
return time.Time{}, time.Time{}, content.Error(err, http.StatusBadRequest)
277277
}
@@ -280,12 +280,12 @@ func parseDateRange(url *url.URL) (start, end time.Time, _ error) {
280280

281281
var err error
282282
startString := url.Query().Get("start")
283-
start, err = time.Parse(time.DateOnly, startString)
283+
start, err = time.Parse(telemetry.DateOnly, startString)
284284
if err != nil {
285285
return time.Time{}, time.Time{}, content.Error(err, http.StatusBadRequest)
286286
}
287287
endString := url.Query().Get("end")
288-
end, err = time.Parse(time.DateOnly, endString)
288+
end, err = time.Parse(telemetry.DateOnly, endString)
289289
if err != nil {
290290
return time.Time{}, time.Time{}, content.Error(err, http.StatusBadRequest)
291291
}
@@ -330,7 +330,7 @@ func handleChart(cfg *tconfig.Config, s *storage.API) content.HandlerFunc {
330330
var reports []telemetry.Report
331331
var xs []float64
332332
for date := start; !date.After(end); date = date.AddDate(0, 0, 1) {
333-
dailyReports, err := readMergedReports(ctx, date.Format(time.DateOnly)+".json", s)
333+
dailyReports, err := readMergedReports(ctx, date.Format(telemetry.DateOnly)+".json", s)
334334
if err != nil {
335335
return err
336336
}
@@ -341,7 +341,7 @@ func handleChart(cfg *tconfig.Config, s *storage.API) content.HandlerFunc {
341341
}
342342

343343
data := nest(reports)
344-
charts := charts(cfg, start.Format(time.DateOnly), end.Format(time.DateOnly), data, xs)
344+
charts := charts(cfg, start.Format(telemetry.DateOnly), end.Format(telemetry.DateOnly), data, xs)
345345

346346
obj := fileName(start, end)
347347
out, err := s.Chart.Object(obj).NewWriter(ctx)
@@ -357,7 +357,7 @@ func handleChart(cfg *tconfig.Config, s *storage.API) content.HandlerFunc {
357357
return err
358358
}
359359

360-
msg := fmt.Sprintf("processed %d reports from date %s to %s into %s", len(reports), start.Format(time.DateOnly), end.Format(time.DateOnly), s.Chart.URI()+"/"+obj)
360+
msg := fmt.Sprintf("processed %d reports from date %s to %s into %s", len(reports), start.Format(telemetry.DateOnly), end.Format(telemetry.DateOnly), s.Chart.URI()+"/"+obj)
361361
return content.Text(w, msg, http.StatusOK)
362362
}
363363
}

godev/cmd/worker/main_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -834,7 +834,7 @@ func TestParseDateRange(t *testing.T) {
834834

835835
if !tc.wantErr {
836836
if !gotStart.Equal(tc.wantStart) || !gotEnd.Equal(tc.wantEnd) {
837-
t.Errorf("parseDateRange(%s) = (%s, %s), want (%s, %s)", tc.url, gotStart.Format(time.DateOnly), gotEnd.Format(time.DateOnly), tc.wantStart.Format(time.DateOnly), tc.wantEnd.Format(time.DateOnly))
837+
t.Errorf("parseDateRange(%s) = (%s, %s), want (%s, %s)", tc.url, gotStart.Format(telemetry.DateOnly), gotEnd.Format(telemetry.DateOnly), tc.wantStart.Format(telemetry.DateOnly), tc.wantEnd.Format(telemetry.DateOnly))
838838
}
839839
}
840840
})

internal/counter/file.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,7 @@ func (f *file) rotate1() time.Time {
297297
goVers,
298298
runtime.GOOS,
299299
runtime.GOARCH,
300-
f.timeBegin.Format(time.DateOnly),
300+
f.timeBegin.Format(telemetry.DateOnly),
301301
FileVersion,
302302
)
303303
dir := telemetry.Default.LocalDir()

internal/counter/rotate_test.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ func TestRotateCounters(t *testing.T) {
7575
// move into the future and rotate the file, remapping it
7676
now = now.Add(7 * 24 * time.Hour)
7777
f.rotate()
78-
if got, want := f.timeBegin.Format(time.DateOnly), now.Format(time.DateOnly); got != want {
78+
if got, want := f.timeBegin.Format(telemetry.DateOnly), now.Format(telemetry.DateOnly); got != want {
7979
t.Errorf("f.timeBegin = %q, want %q", got, want)
8080
}
8181

@@ -167,8 +167,8 @@ func TestRotate(t *testing.T) {
167167
t.Fatalf("err=%v, len(fi) = %d, want 2", err, len(fi))
168168
}
169169
x := fi[0].Name()
170-
y := x[len(x)-len(time.DateOnly)-len(".v1.count") : len(x)-len(".v1.count")]
171-
us, err := time.ParseInLocation(time.DateOnly, y, time.UTC)
170+
y := x[len(x)-len(telemetry.DateOnly)-len(".v1.count") : len(x)-len(".v1.count")]
171+
us, err := time.ParseInLocation(telemetry.DateOnly, y, time.UTC)
172172
if err != nil {
173173
t.Fatal(err)
174174
}

internal/regtest/regtest.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ func NewProgram(t *testing.T, name string, fn func() int) Program {
5252
// We are running the separate process that was spawned by RunProg.
5353
fmt.Fprintf(os.Stderr, "running program %q\n", name)
5454
if asofEnvVarValue != "" {
55-
asof, err := time.Parse(time.DateOnly, asofEnvVarValue)
55+
asof, err := time.Parse(telemetry.DateOnly, asofEnvVarValue)
5656
if err != nil {
5757
log.Fatalf("error parsing asof time %q: %v", asof, err)
5858
}
@@ -116,7 +116,7 @@ func RunProgAsOf(t *testing.T, telemetryDir string, asof time.Time, prog Program
116116
cmd := exec.Command(testBin, "-test.run", fmt.Sprintf("^%s$", testName))
117117
cmd.Env = append(os.Environ(), telemetryDirEnvVar+"="+telemetryDir, entryPointEnvVar+"="+string(prog))
118118
if !asof.IsZero() {
119-
cmd.Env = append(cmd.Env, asofEnvVar+"="+asof.Format(time.DateOnly))
119+
cmd.Env = append(cmd.Env, asofEnvVar+"="+asof.Format(telemetry.DateOnly))
120120
}
121121
return cmd.CombinedOutput()
122122
}

internal/telemetry/dateonly.go

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
// Copyright 2024 The Go Authors. All rights reserved.
2+
// Use of this source code is governed by a BSD-style
3+
// license that can be found in the LICENSE file.
4+
5+
package telemetry
6+
7+
// TODO(rfindley): replace uses of DateOnly with time.DateOnly once we no
8+
// longer support building gopls with go 1.19.
9+
const DateOnly = "2006-01-02"

internal/telemetry/dir.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -102,9 +102,9 @@ func (d Dir) SetModeAsOf(mode string, asofTime time.Time) error {
102102
return fmt.Errorf("cannot create a telemetry mode file: %w", err)
103103
}
104104

105-
asof := asofTime.UTC().Format(time.DateOnly)
105+
asof := asofTime.UTC().Format(DateOnly)
106106
// Defensively guarantee that we can parse the asof time.
107-
if _, err := time.Parse(time.DateOnly, asof); err != nil {
107+
if _, err := time.Parse(DateOnly, asof); err != nil {
108108
return fmt.Errorf("internal error: invalid mode date %q: %v", asof, err)
109109
}
110110

@@ -136,7 +136,7 @@ func (d Dir) Mode() (string, time.Time) {
136136
//
137137
// If the modefile contains a date, return it.
138138
if idx := strings.Index(mode, " "); idx >= 0 {
139-
d, err := time.Parse(time.DateOnly, mode[idx+1:])
139+
d, err := time.Parse(DateOnly, mode[idx+1:])
140140
if err != nil {
141141
d = time.Time{}
142142
}

internal/upload/date.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"time"
1212

1313
"golang.org/x/telemetry/internal/counter"
14+
"golang.org/x/telemetry/internal/telemetry"
1415
)
1516

1617
// time and date handling
@@ -19,7 +20,7 @@ var distantPast = 21 * 24 * time.Hour
1920

2021
// reports that are too old (21 days) are not uploaded
2122
func (u *uploader) tooOld(date string, uploadStartTime time.Time) bool {
22-
t, err := time.Parse(time.DateOnly, date)
23+
t, err := time.Parse(telemetry.DateOnly, date)
2324
if err != nil {
2425
u.logger.Printf("tooOld: %v", err)
2526
return false

internal/upload/dates_test.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,7 @@ func TestDates(t *testing.T) {
227227
}
228228

229229
func mustParseDate(d string) time.Time {
230-
x, err := time.Parse(time.DateOnly, d)
230+
x, err := time.Parse(telemetry.DateOnly, d)
231231
if err != nil {
232232
log.Fatalf("couldn't parse time %s", d)
233233
}
@@ -236,13 +236,13 @@ func mustParseDate(d string) time.Time {
236236

237237
// return a day more than 'old' before 'today'
238238
func olderThan(t *testing.T, today string, old time.Duration, nm string) string {
239-
x, err := time.Parse(time.DateOnly, today)
239+
x, err := time.Parse(telemetry.DateOnly, today)
240240
if err != nil {
241241
t.Errorf("%q not a day in test %s (%v)", today, nm, err)
242242
return today // so test should fail
243243
}
244244
ans := x.Add(-old - 24*time.Hour)
245-
msg := ans.Format(time.DateOnly)
245+
msg := ans.Format(telemetry.DateOnly)
246246
return msg
247247
}
248248

internal/upload/reports.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ func (u *uploader) reports(todo *work) ([]string, error) {
2626
return nil, nil // no reports
2727
}
2828
thisInstant := u.startTime
29-
today := thisInstant.Format(time.DateOnly)
29+
today := thisInstant.Format(telemetry.DateOnly)
3030
lastWeek := latestReport(todo.uploaded)
3131
if lastWeek >= today { //should never happen
3232
lastWeek = ""

internal/upload/upload.go

+5-3
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,13 @@ import (
1212
"regexp"
1313
"strings"
1414
"time"
15+
16+
"golang.org/x/telemetry/internal/telemetry"
1517
)
1618

1719
var (
1820
dateRE = regexp.MustCompile(`(\d\d\d\d-\d\d-\d\d)[.]json$`)
19-
dateFormat = time.DateOnly
21+
dateFormat = telemetry.DateOnly
2022
// TODO(rfindley): use dateFormat throughout.
2123
)
2224

@@ -41,7 +43,7 @@ func (u *uploader) uploadReport(fname string) {
4143
// TODO(rfindley): use uploadReportDate here, once we've done a gopls release.
4244

4345
// first make sure it is not in the future
44-
today := thisInstant.Format(time.DateOnly)
46+
today := thisInstant.Format(telemetry.DateOnly)
4547
match := dateRE.FindStringSubmatch(fname)
4648
if match == nil || len(match) < 2 {
4749
u.logger.Printf("Report name %q missing date", filepath.Base(fname))
@@ -62,7 +64,7 @@ func (u *uploader) uploadReport(fname string) {
6264
// try to upload the report, 'true' if successful
6365
func (u *uploader) uploadReportContents(fname string, buf []byte) bool {
6466
fdate := strings.TrimSuffix(filepath.Base(fname), ".json")
65-
fdate = fdate[len(fdate)-len(time.DateOnly):]
67+
fdate = fdate[len(fdate)-len(telemetry.DateOnly):]
6668

6769
newname := filepath.Join(u.dir.UploadDir(), fdate+".json")
6870

start_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ func runProg(prog string) int {
5858
}
5959

6060
// Get the fake time used by all programs.
61-
asof, err := time.Parse(time.DateOnly, mustGetEnv(asofEnv))
61+
asof, err := time.Parse(it.DateOnly, mustGetEnv(asofEnv))
6262
if err != nil {
6363
log.Fatalf("parsing %s: %v", asofEnv, err)
6464
}
@@ -101,7 +101,7 @@ func execProg(t *testing.T, telemetryDir, prog string, asof time.Time, env ...st
101101
cmd := exec.Command(exe, "** TestStart **") // this unused arg is just for ps(1)
102102
cmd.Stderr = os.Stderr
103103
cmd.Env = os.Environ()
104-
cmd.Env = append(cmd.Env, asofEnv+"="+asof.Format(time.DateOnly))
104+
cmd.Env = append(cmd.Env, asofEnv+"="+asof.Format(it.DateOnly))
105105
cmd.Env = append(cmd.Env, telemetryDirEnv+"="+telemetryDir)
106106
cmd.Env = append(cmd.Env, runStartEnv+"="+prog) // see TestMain
107107
cmd.Env = append(cmd.Env, env...)

0 commit comments

Comments
 (0)