fix: strip timezone information from a date in dau response (#11962)

* fix: strip timezone information from a date in dau response

Timezone information is lost, so do not forward it to the client.

* fix: timezone offset should be flipped
* Make tests deterministic
This commit is contained in:
Steven Masley
2024-01-31 16:01:50 -06:00
committed by GitHub
parent 76e73287a5
commit ac64155282
12 changed files with 111 additions and 67 deletions

View File

@ -22,6 +22,10 @@ import (
"github.com/coder/retry"
)
func OnlyDate(t time.Time) string {
return t.Format("2006-01-02")
}
// deploymentTimezoneOffsets are the timezones that are cached and supported.
// Any non-listed timezone offsets will need to use the closest supported one.
var deploymentTimezoneOffsets = []int{
@ -166,7 +170,9 @@ func convertDAUResponse[T dauRow](rows []T, tzOffset int) codersdk.DAUsResponse
var resp codersdk.DAUsResponse
for _, date := range fillEmptyDays(dates) {
resp.Entries = append(resp.Entries, codersdk.DAUEntry{
Date: date,
// This date is truncated to 00:00:00 of the given day, so only
// return date information.
Date: OnlyDate(date),
Amount: len(respMap[date]),
})
}

View File

@ -67,19 +67,19 @@ func TestCache_TemplateUsers(t *testing.T) {
},
tplWant: want{[]codersdk.DAUEntry{
{
Date: date(2022, 8, 27),
Date: metricscache.OnlyDate(date(2022, 8, 27)),
Amount: 1,
},
{
Date: date(2022, 8, 28),
Date: metricscache.OnlyDate(date(2022, 8, 28)),
Amount: 0,
},
{
Date: date(2022, 8, 29),
Date: metricscache.OnlyDate(date(2022, 8, 29)),
Amount: 0,
},
{
Date: date(2022, 8, 30),
Date: metricscache.OnlyDate(date(2022, 8, 30)),
Amount: 1,
},
}, 1},
@ -95,15 +95,15 @@ func TestCache_TemplateUsers(t *testing.T) {
},
tplWant: want{[]codersdk.DAUEntry{
{
Date: date(2022, 8, 27),
Date: metricscache.OnlyDate(date(2022, 8, 27)),
Amount: 1,
},
{
Date: date(2022, 8, 28),
Date: metricscache.OnlyDate(date(2022, 8, 28)),
Amount: 1,
},
{
Date: date(2022, 8, 29),
Date: metricscache.OnlyDate(date(2022, 8, 29)),
Amount: 1,
},
}, 1},
@ -121,31 +121,31 @@ func TestCache_TemplateUsers(t *testing.T) {
},
tplWant: want{[]codersdk.DAUEntry{
{
Date: date(2022, 1, 1),
Date: metricscache.OnlyDate(date(2022, 1, 1)),
Amount: 2,
},
{
Date: date(2022, 1, 2),
Date: metricscache.OnlyDate(date(2022, 1, 2)),
Amount: 0,
},
{
Date: date(2022, 1, 3),
Date: metricscache.OnlyDate(date(2022, 1, 3)),
Amount: 0,
},
{
Date: date(2022, 1, 4),
Date: metricscache.OnlyDate(date(2022, 1, 4)),
Amount: 1,
},
{
Date: date(2022, 1, 5),
Date: metricscache.OnlyDate(date(2022, 1, 5)),
Amount: 0,
},
{
Date: date(2022, 1, 6),
Date: metricscache.OnlyDate(date(2022, 1, 6)),
Amount: 0,
},
{
Date: date(2022, 1, 7),
Date: metricscache.OnlyDate(date(2022, 1, 7)),
Amount: 2,
},
}, 2},
@ -164,17 +164,17 @@ func TestCache_TemplateUsers(t *testing.T) {
},
tplWant: want{[]codersdk.DAUEntry{
{
Date: date(2022, 1, 2),
Date: metricscache.OnlyDate(date(2022, 1, 2)),
Amount: 2,
},
}, 2},
dauWant: []codersdk.DAUEntry{
{
Date: date(2022, 1, 1),
Date: metricscache.OnlyDate(date(2022, 1, 1)),
Amount: 2,
},
{
Date: date(2022, 1, 2),
Date: metricscache.OnlyDate(date(2022, 1, 2)),
Amount: 2,
},
},
@ -192,13 +192,13 @@ func TestCache_TemplateUsers(t *testing.T) {
},
dauWant: []codersdk.DAUEntry{
{
Date: date(2022, 1, 1),
Date: metricscache.OnlyDate(date(2022, 1, 1)),
Amount: 2,
},
},
tplWant: want{[]codersdk.DAUEntry{
{
Date: date(2022, 1, 2),
Date: metricscache.OnlyDate(date(2022, 1, 2)),
Amount: 2,
},
}, 2},