mirror of
https://github.com/golang/go.git
synced 2025-05-05 23:53:05 +00:00
See bug for more details on exactly what was migrated. Notably: * No more Google-internal deployment scripts; see README.godoc-app and the Makefile for details. * Build tag "golangorg" is used for the godoc configuration used for golang.org. * Use of App Engine libraries replaced with GCP client libraries. * Redis is used to replace App Engine memcache. * Google analytics is controlled by an environment variable. * Regression tests have been migrated from Google-internal. * hg -> git hash map is moved from Google-internal. Updates golang/go#27205. Change-Id: Ia0a983f239c50eda8be2363494c8b784f60c2c6d Reviewed-on: https://go-review.googlesource.com/133355 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
84 lines
1.7 KiB
Go
84 lines
1.7 KiB
Go
// Copyright 2018 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package memcache
|
|
|
|
import (
|
|
"context"
|
|
"os"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func getClient(t *testing.T) *Client {
|
|
t.Helper()
|
|
|
|
addr := os.Getenv("GOLANG_REDIS_ADDR")
|
|
if addr == "" {
|
|
t.Skip("skipping because GOLANG_REDIS_ADDR is unset")
|
|
}
|
|
|
|
return New(addr)
|
|
}
|
|
|
|
func TestCacheMiss(t *testing.T) {
|
|
c := getClient(t)
|
|
ctx := context.Background()
|
|
|
|
if _, err := c.Get(ctx, "doesnotexist"); err != ErrCacheMiss {
|
|
t.Errorf("got %v; want ErrCacheMiss", err)
|
|
}
|
|
}
|
|
|
|
func TestExpiry(t *testing.T) {
|
|
c := getClient(t).WithCodec(Gob)
|
|
ctx := context.Background()
|
|
|
|
key := "testexpiry"
|
|
|
|
firstTime := time.Now()
|
|
err := c.Set(ctx, &Item{
|
|
Key: key,
|
|
Object: firstTime,
|
|
Expiration: 3500 * time.Millisecond, // NOTE: check that non-rounded expiries work.
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("Set: %v", err)
|
|
}
|
|
|
|
var newTime time.Time
|
|
if err := c.Get(ctx, key, &newTime); err != nil {
|
|
t.Fatalf("Get: %v", err)
|
|
}
|
|
if !firstTime.Equal(newTime) {
|
|
t.Errorf("Get: got value %v, want %v", newTime, firstTime)
|
|
}
|
|
|
|
time.Sleep(4 * time.Second)
|
|
|
|
if err := c.Get(ctx, key, &newTime); err != ErrCacheMiss {
|
|
t.Errorf("Get: got %v, want ErrCacheMiss", err)
|
|
}
|
|
}
|
|
|
|
func TestShortExpiry(t *testing.T) {
|
|
c := getClient(t).WithCodec(Gob)
|
|
ctx := context.Background()
|
|
|
|
key := "testshortexpiry"
|
|
|
|
err := c.Set(ctx, &Item{
|
|
Key: key,
|
|
Value: []byte("ok"),
|
|
Expiration: time.Millisecond,
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("Set: %v", err)
|
|
}
|
|
|
|
if err := c.Get(ctx, key, nil); err != ErrCacheMiss {
|
|
t.Errorf("GetBytes: got %v, want ErrCacheMiss", err)
|
|
}
|
|
}
|