Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(compute): add integration tests for compute #4421

Merged
merged 23 commits into from Jul 16, 2021
Merged
Changes from 15 commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
54f9228
tests: add go integartion tests
georgiyekkert Jul 12, 2021
cc2e3e9
Merge branch 'googleapis:master' into master
georgiyekkert Jul 12, 2021
5a30666
tests: review fixes + formatting
georgiyekkert Jul 12, 2021
478eefd
tests: review fixes + formatting
georgiyekkert Jul 12, 2021
18c64fa
Merge branch 'master' of https://github.com/georgiyekkert/google-clou…
georgiyekkert Jul 12, 2021
c906601
Merge branch 'master' into master
georgiyekkert Jul 12, 2021
bf08f74
tests: review fixes
georgiyekkert Jul 12, 2021
7530380
Merge branch 'master' of https://github.com/georgiyekkert/google-clou…
georgiyekkert Jul 12, 2021
4ad0aea
Merge branch 'googleapis:master' into master
georgiyekkert Jul 13, 2021
059c905
tests: review fixes
georgiyekkert Jul 13, 2021
775152b
Merge branch 'master' into master
georgiyekkert Jul 13, 2021
66845b8
Merge branch 'master' into master
georgiyekkert Jul 14, 2021
4b71c2c
tests: review fixes
georgiyekkert Jul 14, 2021
596c03e
Merge branch 'master' of https://github.com/georgiyekkert/google-clou…
georgiyekkert Jul 14, 2021
3c52d7a
tests: review fixes
georgiyekkert Jul 14, 2021
2a400b6
tests: review fixes
georgiyekkert Jul 14, 2021
2244554
Merge branch 'master' into master
georgiyekkert Jul 14, 2021
2286baf
Merge branch 'googleapis:master' into master
georgiyekkert Jul 15, 2021
3333a2c
tests: formatting
georgiyekkert Jul 15, 2021
235c3d4
Merge branch 'master' of https://github.com/georgiyekkert/google-clou…
georgiyekkert Jul 15, 2021
9874753
Merge branch 'master' into master
georgiyekkert Jul 15, 2021
4850139
tests: goimports
georgiyekkert Jul 15, 2021
428e119
tests: remove yoda condition
georgiyekkert Jul 15, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
255 changes: 255 additions & 0 deletions compute/apiv1/smoke_test.go
@@ -0,0 +1,255 @@
// Copyright 2021 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
//
// https://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.

// To run these tests, set GCLOUD_TESTS_GOLANG_PROJECT_ID env var to your GCP projectID

package compute

import (
"cloud.google.com/go/internal/testutil"
"cloud.google.com/go/internal/uid"
"context"
"fmt"
computepb "google.golang.org/genproto/googleapis/cloud/compute/v1"
"google.golang.org/protobuf/proto"
"testing"
)

var projectId = testutil.ProjID()
var defaultZone = "us-central1-a"

func TestCreateGetListInstance(t *testing.T) {
if testing.Short() {
t.Skip("skipping smoke test in short mode")
}
space := uid.NewSpace("gogapic", nil)
name := space.New()
ctx := context.Background()
c, err := NewInstancesRESTClient(ctx)
if err != nil {
t.Fatal(err)
}
zonesClient, err := NewZoneOperationsRESTClient(ctx)
if err != nil {
t.Fatal(err)
}
createRequest := &computepb.InsertInstanceRequest{
Project: projectId,
Zone: defaultZone,
InstanceResource: &computepb.Instance{
Name: &name,
Description: proto.String("тест"),
MachineType: proto.String(fmt.Sprintf("https://www.googleapis.com/compute/v1/projects/%s/zones/%s/machineTypes/n1-standard-1", projectId, defaultZone)),
Disks: []*computepb.AttachedDisk{
{
AutoDelete: proto.Bool(true),
Boot: proto.Bool(true),
Type: computepb.AttachedDisk_PERSISTENT.Enum(),
InitializeParams: &computepb.AttachedDiskInitializeParams{
SourceImage: proto.String("projects/debian-cloud/global/images/family/debian-10"),
},
},
},
NetworkInterfaces: []*computepb.NetworkInterface{
{
AccessConfigs: []*computepb.AccessConfig{
{
Name: proto.String("default"),
},
},
},
},
},
}

insert, err := c.Insert(ctx, createRequest)
if err != nil {
t.Fatal(err)
}

waitZonalRequest := &computepb.WaitZoneOperationRequest{
Project: projectId,
Zone: defaultZone,
Operation: insert.GetName(),
}
_, err = zonesClient.Wait(ctx, waitZonalRequest)
if err != nil {
t.Error(err)
}
defer ForceDeleteInstance(ctx, name, c)

getRequest := &computepb.GetInstanceRequest{
Project: projectId,
Zone: defaultZone,
Instance: name,
}
get, err := c.Get(ctx, getRequest)
if err != nil {
t.Error(err)
}
if name != get.GetName() {
t.Fatal(fmt.Sprintf("expected instance name: %s, got: %s", name, get.GetName()))
}
if "тест" != get.GetDescription() {
t.Fatal(fmt.Sprintf("expected instance description: %s, got: %s", "тест", get.GetDescription()))
}
listRequest := &computepb.ListInstancesRequest{
Project: projectId,
Zone: defaultZone,
}

list, err := c.List(ctx, listRequest)
if err != nil {
t.Error(err)
}
items := list.GetItems()
found := false
for _, element := range items {
if element.GetName() == name {
found = true
}
}
if !found {
t.Error("Couldn't find the instance in list response")
}

deleteInstanceRequest := &computepb.DeleteInstanceRequest{
codyoss marked this conversation as resolved.
Show resolved Hide resolved
Project: projectId,
Zone: defaultZone,
Instance: name,
}
_, err = c.Delete(ctx, deleteInstanceRequest)
if err != nil {
t.Error(err)
}
}

func ForceDeleteInstance(ctx context.Context, name string, client *InstancesClient) {
deleteInstanceRequest := &computepb.DeleteInstanceRequest{
Project: projectId,
Zone: defaultZone,
Instance: name,
}
client.Delete(ctx, deleteInstanceRequest)
}

func TestCreateGetRemoveSecurityPolicies(t *testing.T) {
if testing.Short() {
t.Skip("skipping smoke test in short mode")
}
space := uid.NewSpace("gogapic", nil)
name := space.New()
ctx := context.Background()
c, err := NewSecurityPoliciesRESTClient(ctx)
if err != nil {
t.Fatal(err)
}
globalCLient, err := NewGlobalOperationsRESTClient(ctx)
if err != nil {
t.Fatal(err)
}
action := "allow"
matcher := &computepb.SecurityPolicyRuleMatcher{
Config: &computepb.SecurityPolicyRuleMatcherConfig{
SrcIpRanges: []string{
"*",
},
},
VersionedExpr: computepb.SecurityPolicyRuleMatcher_SRC_IPS_V1.Enum(),
}
securityPolicyRule := &computepb.SecurityPolicyRule{
Action: &action,
Priority: proto.Int32(0),
Description: proto.String("test rule"),
Match: matcher,
}
securityPolicyRuleDefault := &computepb.SecurityPolicyRule{
Action: &action,
Priority: proto.Int32(2147483647),
Description: proto.String("default rule"),
Match: matcher,
}
insertRequest := &computepb.InsertSecurityPolicyRequest{
Project: projectId,
SecurityPolicyResource: &computepb.SecurityPolicy{
Name: &name,
Rules: []*computepb.SecurityPolicyRule{
securityPolicyRule,
securityPolicyRuleDefault,
},
},
}
insert, err := c.Insert(ctx, insertRequest)
if err != nil {
t.Error(err)
}

waitGlobalRequest := &computepb.WaitGlobalOperationRequest{
Project: projectId,
Operation: insert.GetName(),
}
_, err = globalCLient.Wait(ctx, waitGlobalRequest)
if err != nil {
t.Error(err)
}
defer ForceDeleteSecurityPolicy(ctx, name, c)

removeRuleRequest := &computepb.RemoveRuleSecurityPolicyRequest{
Priority: proto.Int32(0),
Project: projectId,
SecurityPolicy: name,
}

rule, err := c.RemoveRule(ctx, removeRuleRequest)
if err != nil {
t.Error(err)
}
waitGlobalRequestRemove := &computepb.WaitGlobalOperationRequest{
Project: projectId,
Operation: rule.GetName(),
}
_, err = globalCLient.Wait(ctx, waitGlobalRequestRemove)
if err != nil {
t.Error(err)
}

getRequest := &computepb.GetSecurityPolicyRequest{
Project: projectId,
SecurityPolicy: name,
}
get, err := c.Get(ctx, getRequest)
if err != nil {
t.Error(err)
}
if len(get.GetRules()) != 1 {
t.Fatal(fmt.Sprintf("expected count for rules: %d, got: %d", 1, len(get.GetRules())))
}

deleteRequest := &computepb.DeleteSecurityPolicyRequest{
Project: projectId,
SecurityPolicy: name,
}
_, err = c.Delete(ctx, deleteRequest)
if err != nil {
t.Error(err)
}
}

func ForceDeleteSecurityPolicy(ctx context.Context, name string, client *SecurityPoliciesClient) {
deleteRequest := &computepb.DeleteSecurityPolicyRequest{
Project: projectId,
SecurityPolicy: name,
}
client.Delete(ctx, deleteRequest)
}