|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- // Copyright 2016 Google LLC
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
-
- package logadmin
-
- import (
- "log"
- "testing"
- "time"
-
- "cloud.google.com/go/internal/testutil"
- "cloud.google.com/go/internal/uid"
- "golang.org/x/net/context"
- "google.golang.org/api/iterator"
- )
-
- var metricIDs = uid.NewSpace("GO-CLIENT-TEST-METRIC", nil)
-
- // Initializes the tests before they run.
- func initMetrics(ctx context.Context) {
- // Clean up from aborted tests.
- it := client.Metrics(ctx)
- loop:
- for {
- m, err := it.Next()
- switch err {
- case nil:
- if metricIDs.Older(m.ID, 24*time.Hour) {
- client.DeleteMetric(ctx, m.ID)
- }
- case iterator.Done:
- break loop
- default:
- log.Printf("cleanupMetrics: %v", err)
- return
- }
- }
- }
-
- func TestCreateDeleteMetric(t *testing.T) {
- ctx := context.Background()
- metric := &Metric{
- ID: metricIDs.New(),
- Description: "DESC",
- Filter: "FILTER",
- }
- if err := client.CreateMetric(ctx, metric); err != nil {
- t.Fatal(err)
- }
- defer client.DeleteMetric(ctx, metric.ID)
-
- got, err := client.Metric(ctx, metric.ID)
- if err != nil {
- t.Fatal(err)
- }
- if want := metric; !testutil.Equal(got, want) {
- t.Errorf("got %+v, want %+v", got, want)
- }
-
- if err := client.DeleteMetric(ctx, metric.ID); err != nil {
- t.Fatal(err)
- }
-
- if _, err := client.Metric(ctx, metric.ID); err == nil {
- t.Fatal("got no error, expected one")
- }
- }
-
- func TestUpdateMetric(t *testing.T) {
- ctx := context.Background()
- metric := &Metric{
- ID: metricIDs.New(),
- Description: "DESC",
- Filter: "FILTER",
- }
-
- // Updating a non-existent metric creates a new one.
- if err := client.UpdateMetric(ctx, metric); err != nil {
- t.Fatal(err)
- }
- defer client.DeleteMetric(ctx, metric.ID)
- got, err := client.Metric(ctx, metric.ID)
- if err != nil {
- t.Fatal(err)
- }
- if want := metric; !testutil.Equal(got, want) {
- t.Errorf("got %+v, want %+v", got, want)
- }
-
- // Updating an existing metric changes it.
- metric.Description = "CHANGED"
- if err := client.UpdateMetric(ctx, metric); err != nil {
- t.Fatal(err)
- }
- got, err = client.Metric(ctx, metric.ID)
- if err != nil {
- t.Fatal(err)
- }
- if want := metric; !testutil.Equal(got, want) {
- t.Errorf("got %+v, want %+v", got, want)
- }
- }
-
- func TestListMetrics(t *testing.T) {
- ctx := context.Background()
-
- var metrics []*Metric
- want := map[string]*Metric{}
- for i := 0; i < 10; i++ {
- m := &Metric{
- ID: metricIDs.New(),
- Description: "DESC",
- Filter: "FILTER",
- }
- metrics = append(metrics, m)
- want[m.ID] = m
- }
- for _, m := range metrics {
- if err := client.CreateMetric(ctx, m); err != nil {
- t.Fatalf("Create(%q): %v", m.ID, err)
- }
- defer client.DeleteMetric(ctx, m.ID)
- }
-
- got := map[string]*Metric{}
- it := client.Metrics(ctx)
- for {
- m, err := it.Next()
- if err == iterator.Done {
- break
- }
- if err != nil {
- t.Fatal(err)
- }
- // If tests run simultaneously, we may have more metrics than we
- // created. So only check for our own.
- if _, ok := want[m.ID]; ok {
- got[m.ID] = m
- }
- }
- if !testutil.Equal(got, want) {
- t.Errorf("got %+v, want %+v", got, want)
- }
- }
|