| // Copyright 2013 Google Inc. All rights reserved. |
| // Use of this source code is governed by the Apache 2.0 |
| // license that can be found in the LICENSE file. |
| |
| package module |
| |
| import ( |
| "reflect" |
| "testing" |
| |
| "github.com/golang/protobuf/proto" |
| |
| "google.golang.org/appengine/internal/aetesting" |
| pb "google.golang.org/appengine/internal/modules" |
| ) |
| |
| const version = "test-version" |
| const module = "test-module" |
| const instances = 3 |
| |
| func TestList(t *testing.T) { |
| c := aetesting.FakeSingleContext(t, "modules", "GetModules", func(req *pb.GetModulesRequest, res *pb.GetModulesResponse) error { |
| res.Module = []string{"default", "mod1"} |
| return nil |
| }) |
| got, err := List(c) |
| if err != nil { |
| t.Fatalf("List: %v", err) |
| } |
| want := []string{"default", "mod1"} |
| if !reflect.DeepEqual(got, want) { |
| t.Errorf("List = %v, want %v", got, want) |
| } |
| } |
| |
| func TestSetNumInstances(t *testing.T) { |
| c := aetesting.FakeSingleContext(t, "modules", "SetNumInstances", func(req *pb.SetNumInstancesRequest, res *pb.SetNumInstancesResponse) error { |
| if *req.Module != module { |
| t.Errorf("Module = %v, want %v", req.Module, module) |
| } |
| if *req.Version != version { |
| t.Errorf("Version = %v, want %v", req.Version, version) |
| } |
| if *req.Instances != instances { |
| t.Errorf("Instances = %v, want %d", req.Instances, instances) |
| } |
| return nil |
| }) |
| err := SetNumInstances(c, module, version, instances) |
| if err != nil { |
| t.Fatalf("SetNumInstances: %v", err) |
| } |
| } |
| |
| func TestVersions(t *testing.T) { |
| c := aetesting.FakeSingleContext(t, "modules", "GetVersions", func(req *pb.GetVersionsRequest, res *pb.GetVersionsResponse) error { |
| if *req.Module != module { |
| t.Errorf("Module = %v, want %v", req.Module, module) |
| } |
| res.Version = []string{"v1", "v2", "v3"} |
| return nil |
| }) |
| got, err := Versions(c, module) |
| if err != nil { |
| t.Fatalf("Versions: %v", err) |
| } |
| want := []string{"v1", "v2", "v3"} |
| if !reflect.DeepEqual(got, want) { |
| t.Errorf("Versions = %v, want %v", got, want) |
| } |
| } |
| |
| func TestDefaultVersion(t *testing.T) { |
| c := aetesting.FakeSingleContext(t, "modules", "GetDefaultVersion", func(req *pb.GetDefaultVersionRequest, res *pb.GetDefaultVersionResponse) error { |
| if *req.Module != module { |
| t.Errorf("Module = %v, want %v", req.Module, module) |
| } |
| res.Version = proto.String(version) |
| return nil |
| }) |
| got, err := DefaultVersion(c, module) |
| if err != nil { |
| t.Fatalf("DefaultVersion: %v", err) |
| } |
| if got != version { |
| t.Errorf("Version = %v, want %v", got, version) |
| } |
| } |
| |
| func TestStart(t *testing.T) { |
| c := aetesting.FakeSingleContext(t, "modules", "StartModule", func(req *pb.StartModuleRequest, res *pb.StartModuleResponse) error { |
| if *req.Module != module { |
| t.Errorf("Module = %v, want %v", req.Module, module) |
| } |
| if *req.Version != version { |
| t.Errorf("Version = %v, want %v", req.Version, version) |
| } |
| return nil |
| }) |
| |
| err := Start(c, module, version) |
| if err != nil { |
| t.Fatalf("Start: %v", err) |
| } |
| } |
| |
| func TestStop(t *testing.T) { |
| c := aetesting.FakeSingleContext(t, "modules", "StopModule", func(req *pb.StopModuleRequest, res *pb.StopModuleResponse) error { |
| version := "test-version" |
| module := "test-module" |
| if *req.Module != module { |
| t.Errorf("Module = %v, want %v", req.Module, module) |
| } |
| if *req.Version != version { |
| t.Errorf("Version = %v, want %v", req.Version, version) |
| } |
| return nil |
| }) |
| |
| err := Stop(c, module, version) |
| if err != nil { |
| t.Fatalf("Stop: %v", err) |
| } |
| } |