You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

1023 lines
31 KiB

  1. // Copyright 2019 Google LLC
  2. //
  3. // Licensed under the Apache License, Version 2.0 (the "License");
  4. // you may not use this file except in compliance with the License.
  5. // You may obtain a copy of the License at
  6. //
  7. // https://www.apache.org/licenses/LICENSE-2.0
  8. //
  9. // Unless required by applicable law or agreed to in writing, software
  10. // distributed under the License is distributed on an "AS IS" BASIS,
  11. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. // See the License for the specific language governing permissions and
  13. // limitations under the License.
  14. // Code generated by gapic-generator. DO NOT EDIT.
  15. package redis
  16. import (
  17. emptypb "github.com/golang/protobuf/ptypes/empty"
  18. redispb "google.golang.org/genproto/googleapis/cloud/redis/v1"
  19. longrunningpb "google.golang.org/genproto/googleapis/longrunning"
  20. field_maskpb "google.golang.org/genproto/protobuf/field_mask"
  21. )
  22. import (
  23. "context"
  24. "flag"
  25. "fmt"
  26. "io"
  27. "log"
  28. "net"
  29. "os"
  30. "strings"
  31. "testing"
  32. "github.com/golang/protobuf/proto"
  33. "github.com/golang/protobuf/ptypes"
  34. "google.golang.org/api/option"
  35. status "google.golang.org/genproto/googleapis/rpc/status"
  36. "google.golang.org/grpc"
  37. "google.golang.org/grpc/codes"
  38. "google.golang.org/grpc/metadata"
  39. gstatus "google.golang.org/grpc/status"
  40. )
  41. var _ = io.EOF
  42. var _ = ptypes.MarshalAny
  43. var _ status.Status
  44. type mockCloudRedisServer struct {
  45. // Embed for forward compatibility.
  46. // Tests will keep working if more methods are added
  47. // in the future.
  48. redispb.CloudRedisServer
  49. reqs []proto.Message
  50. // If set, all calls return this error.
  51. err error
  52. // responses to return if err == nil
  53. resps []proto.Message
  54. }
  55. func (s *mockCloudRedisServer) ListInstances(ctx context.Context, req *redispb.ListInstancesRequest) (*redispb.ListInstancesResponse, error) {
  56. md, _ := metadata.FromIncomingContext(ctx)
  57. if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
  58. return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
  59. }
  60. s.reqs = append(s.reqs, req)
  61. if s.err != nil {
  62. return nil, s.err
  63. }
  64. return s.resps[0].(*redispb.ListInstancesResponse), nil
  65. }
  66. func (s *mockCloudRedisServer) GetInstance(ctx context.Context, req *redispb.GetInstanceRequest) (*redispb.Instance, error) {
  67. md, _ := metadata.FromIncomingContext(ctx)
  68. if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
  69. return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
  70. }
  71. s.reqs = append(s.reqs, req)
  72. if s.err != nil {
  73. return nil, s.err
  74. }
  75. return s.resps[0].(*redispb.Instance), nil
  76. }
  77. func (s *mockCloudRedisServer) CreateInstance(ctx context.Context, req *redispb.CreateInstanceRequest) (*longrunningpb.Operation, error) {
  78. md, _ := metadata.FromIncomingContext(ctx)
  79. if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
  80. return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
  81. }
  82. s.reqs = append(s.reqs, req)
  83. if s.err != nil {
  84. return nil, s.err
  85. }
  86. return s.resps[0].(*longrunningpb.Operation), nil
  87. }
  88. func (s *mockCloudRedisServer) UpdateInstance(ctx context.Context, req *redispb.UpdateInstanceRequest) (*longrunningpb.Operation, error) {
  89. md, _ := metadata.FromIncomingContext(ctx)
  90. if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
  91. return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
  92. }
  93. s.reqs = append(s.reqs, req)
  94. if s.err != nil {
  95. return nil, s.err
  96. }
  97. return s.resps[0].(*longrunningpb.Operation), nil
  98. }
  99. func (s *mockCloudRedisServer) ImportInstance(ctx context.Context, req *redispb.ImportInstanceRequest) (*longrunningpb.Operation, error) {
  100. md, _ := metadata.FromIncomingContext(ctx)
  101. if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
  102. return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
  103. }
  104. s.reqs = append(s.reqs, req)
  105. if s.err != nil {
  106. return nil, s.err
  107. }
  108. return s.resps[0].(*longrunningpb.Operation), nil
  109. }
  110. func (s *mockCloudRedisServer) ExportInstance(ctx context.Context, req *redispb.ExportInstanceRequest) (*longrunningpb.Operation, error) {
  111. md, _ := metadata.FromIncomingContext(ctx)
  112. if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
  113. return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
  114. }
  115. s.reqs = append(s.reqs, req)
  116. if s.err != nil {
  117. return nil, s.err
  118. }
  119. return s.resps[0].(*longrunningpb.Operation), nil
  120. }
  121. func (s *mockCloudRedisServer) FailoverInstance(ctx context.Context, req *redispb.FailoverInstanceRequest) (*longrunningpb.Operation, error) {
  122. md, _ := metadata.FromIncomingContext(ctx)
  123. if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
  124. return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
  125. }
  126. s.reqs = append(s.reqs, req)
  127. if s.err != nil {
  128. return nil, s.err
  129. }
  130. return s.resps[0].(*longrunningpb.Operation), nil
  131. }
  132. func (s *mockCloudRedisServer) DeleteInstance(ctx context.Context, req *redispb.DeleteInstanceRequest) (*longrunningpb.Operation, error) {
  133. md, _ := metadata.FromIncomingContext(ctx)
  134. if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
  135. return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
  136. }
  137. s.reqs = append(s.reqs, req)
  138. if s.err != nil {
  139. return nil, s.err
  140. }
  141. return s.resps[0].(*longrunningpb.Operation), nil
  142. }
  143. // clientOpt is the option tests should use to connect to the test server.
  144. // It is initialized by TestMain.
  145. var clientOpt option.ClientOption
  146. var (
  147. mockCloudRedis mockCloudRedisServer
  148. )
  149. func TestMain(m *testing.M) {
  150. flag.Parse()
  151. serv := grpc.NewServer()
  152. redispb.RegisterCloudRedisServer(serv, &mockCloudRedis)
  153. lis, err := net.Listen("tcp", "localhost:0")
  154. if err != nil {
  155. log.Fatal(err)
  156. }
  157. go serv.Serve(lis)
  158. conn, err := grpc.Dial(lis.Addr().String(), grpc.WithInsecure())
  159. if err != nil {
  160. log.Fatal(err)
  161. }
  162. clientOpt = option.WithGRPCConn(conn)
  163. os.Exit(m.Run())
  164. }
  165. func TestCloudRedisListInstances(t *testing.T) {
  166. var nextPageToken string = ""
  167. var instancesElement *redispb.Instance = &redispb.Instance{}
  168. var instances = []*redispb.Instance{instancesElement}
  169. var expectedResponse = &redispb.ListInstancesResponse{
  170. NextPageToken: nextPageToken,
  171. Instances: instances,
  172. }
  173. mockCloudRedis.err = nil
  174. mockCloudRedis.reqs = nil
  175. mockCloudRedis.resps = append(mockCloudRedis.resps[:0], expectedResponse)
  176. var formattedParent string = fmt.Sprintf("projects/%s/locations/%s", "[PROJECT]", "[LOCATION]")
  177. var request = &redispb.ListInstancesRequest{
  178. Parent: formattedParent,
  179. }
  180. c, err := NewCloudRedisClient(context.Background(), clientOpt)
  181. if err != nil {
  182. t.Fatal(err)
  183. }
  184. resp, err := c.ListInstances(context.Background(), request).Next()
  185. if err != nil {
  186. t.Fatal(err)
  187. }
  188. if want, got := request, mockCloudRedis.reqs[0]; !proto.Equal(want, got) {
  189. t.Errorf("wrong request %q, want %q", got, want)
  190. }
  191. want := (interface{})(expectedResponse.Instances[0])
  192. got := (interface{})(resp)
  193. var ok bool
  194. switch want := (want).(type) {
  195. case proto.Message:
  196. ok = proto.Equal(want, got.(proto.Message))
  197. default:
  198. ok = want == got
  199. }
  200. if !ok {
  201. t.Errorf("wrong response %q, want %q)", got, want)
  202. }
  203. }
  204. func TestCloudRedisListInstancesError(t *testing.T) {
  205. errCode := codes.PermissionDenied
  206. mockCloudRedis.err = gstatus.Error(errCode, "test error")
  207. var formattedParent string = fmt.Sprintf("projects/%s/locations/%s", "[PROJECT]", "[LOCATION]")
  208. var request = &redispb.ListInstancesRequest{
  209. Parent: formattedParent,
  210. }
  211. c, err := NewCloudRedisClient(context.Background(), clientOpt)
  212. if err != nil {
  213. t.Fatal(err)
  214. }
  215. resp, err := c.ListInstances(context.Background(), request).Next()
  216. if st, ok := gstatus.FromError(err); !ok {
  217. t.Errorf("got error %v, expected grpc error", err)
  218. } else if c := st.Code(); c != errCode {
  219. t.Errorf("got error code %q, want %q", c, errCode)
  220. }
  221. _ = resp
  222. }
  223. func TestCloudRedisGetInstance(t *testing.T) {
  224. var name2 string = "name2-1052831874"
  225. var displayName string = "displayName1615086568"
  226. var locationId string = "locationId552319461"
  227. var alternativeLocationId string = "alternativeLocationId-718920621"
  228. var redisVersion string = "redisVersion-685310444"
  229. var reservedIpRange string = "reservedIpRange-1082940580"
  230. var host string = "host3208616"
  231. var port int32 = 3446913
  232. var currentLocationId string = "currentLocationId1312712735"
  233. var statusMessage string = "statusMessage-239442758"
  234. var memorySizeGb int32 = 34199707
  235. var authorizedNetwork string = "authorizedNetwork-1733809270"
  236. var persistenceIamIdentity string = "persistenceIamIdentity1061944584"
  237. var expectedResponse = &redispb.Instance{
  238. Name: name2,
  239. DisplayName: displayName,
  240. LocationId: locationId,
  241. AlternativeLocationId: alternativeLocationId,
  242. RedisVersion: redisVersion,
  243. ReservedIpRange: reservedIpRange,
  244. Host: host,
  245. Port: port,
  246. CurrentLocationId: currentLocationId,
  247. StatusMessage: statusMessage,
  248. MemorySizeGb: memorySizeGb,
  249. AuthorizedNetwork: authorizedNetwork,
  250. PersistenceIamIdentity: persistenceIamIdentity,
  251. }
  252. mockCloudRedis.err = nil
  253. mockCloudRedis.reqs = nil
  254. mockCloudRedis.resps = append(mockCloudRedis.resps[:0], expectedResponse)
  255. var formattedName string = fmt.Sprintf("projects/%s/locations/%s/instances/%s", "[PROJECT]", "[LOCATION]", "[INSTANCE]")
  256. var request = &redispb.GetInstanceRequest{
  257. Name: formattedName,
  258. }
  259. c, err := NewCloudRedisClient(context.Background(), clientOpt)
  260. if err != nil {
  261. t.Fatal(err)
  262. }
  263. resp, err := c.GetInstance(context.Background(), request)
  264. if err != nil {
  265. t.Fatal(err)
  266. }
  267. if want, got := request, mockCloudRedis.reqs[0]; !proto.Equal(want, got) {
  268. t.Errorf("wrong request %q, want %q", got, want)
  269. }
  270. if want, got := expectedResponse, resp; !proto.Equal(want, got) {
  271. t.Errorf("wrong response %q, want %q)", got, want)
  272. }
  273. }
  274. func TestCloudRedisGetInstanceError(t *testing.T) {
  275. errCode := codes.PermissionDenied
  276. mockCloudRedis.err = gstatus.Error(errCode, "test error")
  277. var formattedName string = fmt.Sprintf("projects/%s/locations/%s/instances/%s", "[PROJECT]", "[LOCATION]", "[INSTANCE]")
  278. var request = &redispb.GetInstanceRequest{
  279. Name: formattedName,
  280. }
  281. c, err := NewCloudRedisClient(context.Background(), clientOpt)
  282. if err != nil {
  283. t.Fatal(err)
  284. }
  285. resp, err := c.GetInstance(context.Background(), request)
  286. if st, ok := gstatus.FromError(err); !ok {
  287. t.Errorf("got error %v, expected grpc error", err)
  288. } else if c := st.Code(); c != errCode {
  289. t.Errorf("got error code %q, want %q", c, errCode)
  290. }
  291. _ = resp
  292. }
  293. func TestCloudRedisCreateInstance(t *testing.T) {
  294. var name string = "name3373707"
  295. var displayName string = "displayName1615086568"
  296. var locationId string = "locationId552319461"
  297. var alternativeLocationId string = "alternativeLocationId-718920621"
  298. var redisVersion string = "redisVersion-685310444"
  299. var reservedIpRange string = "reservedIpRange-1082940580"
  300. var host string = "host3208616"
  301. var port int32 = 3446913
  302. var currentLocationId string = "currentLocationId1312712735"
  303. var statusMessage string = "statusMessage-239442758"
  304. var memorySizeGb2 int32 = 1493816946
  305. var authorizedNetwork string = "authorizedNetwork-1733809270"
  306. var persistenceIamIdentity string = "persistenceIamIdentity1061944584"
  307. var expectedResponse = &redispb.Instance{
  308. Name: name,
  309. DisplayName: displayName,
  310. LocationId: locationId,
  311. AlternativeLocationId: alternativeLocationId,
  312. RedisVersion: redisVersion,
  313. ReservedIpRange: reservedIpRange,
  314. Host: host,
  315. Port: port,
  316. CurrentLocationId: currentLocationId,
  317. StatusMessage: statusMessage,
  318. MemorySizeGb: memorySizeGb2,
  319. AuthorizedNetwork: authorizedNetwork,
  320. PersistenceIamIdentity: persistenceIamIdentity,
  321. }
  322. mockCloudRedis.err = nil
  323. mockCloudRedis.reqs = nil
  324. any, err := ptypes.MarshalAny(expectedResponse)
  325. if err != nil {
  326. t.Fatal(err)
  327. }
  328. mockCloudRedis.resps = append(mockCloudRedis.resps[:0], &longrunningpb.Operation{
  329. Name: "longrunning-test",
  330. Done: true,
  331. Result: &longrunningpb.Operation_Response{Response: any},
  332. })
  333. var formattedParent string = fmt.Sprintf("projects/%s/locations/%s", "[PROJECT]", "[LOCATION]")
  334. var instanceId string = "test_instance"
  335. var tier redispb.Instance_Tier = redispb.Instance_BASIC
  336. var memorySizeGb int32 = 1
  337. var instance = &redispb.Instance{
  338. Tier: tier,
  339. MemorySizeGb: memorySizeGb,
  340. }
  341. var request = &redispb.CreateInstanceRequest{
  342. Parent: formattedParent,
  343. InstanceId: instanceId,
  344. Instance: instance,
  345. }
  346. c, err := NewCloudRedisClient(context.Background(), clientOpt)
  347. if err != nil {
  348. t.Fatal(err)
  349. }
  350. respLRO, err := c.CreateInstance(context.Background(), request)
  351. if err != nil {
  352. t.Fatal(err)
  353. }
  354. resp, err := respLRO.Wait(context.Background())
  355. if err != nil {
  356. t.Fatal(err)
  357. }
  358. if want, got := request, mockCloudRedis.reqs[0]; !proto.Equal(want, got) {
  359. t.Errorf("wrong request %q, want %q", got, want)
  360. }
  361. if want, got := expectedResponse, resp; !proto.Equal(want, got) {
  362. t.Errorf("wrong response %q, want %q)", got, want)
  363. }
  364. }
  365. func TestCloudRedisCreateInstanceError(t *testing.T) {
  366. errCode := codes.PermissionDenied
  367. mockCloudRedis.err = nil
  368. mockCloudRedis.resps = append(mockCloudRedis.resps[:0], &longrunningpb.Operation{
  369. Name: "longrunning-test",
  370. Done: true,
  371. Result: &longrunningpb.Operation_Error{
  372. Error: &status.Status{
  373. Code: int32(errCode),
  374. Message: "test error",
  375. },
  376. },
  377. })
  378. var formattedParent string = fmt.Sprintf("projects/%s/locations/%s", "[PROJECT]", "[LOCATION]")
  379. var instanceId string = "test_instance"
  380. var tier redispb.Instance_Tier = redispb.Instance_BASIC
  381. var memorySizeGb int32 = 1
  382. var instance = &redispb.Instance{
  383. Tier: tier,
  384. MemorySizeGb: memorySizeGb,
  385. }
  386. var request = &redispb.CreateInstanceRequest{
  387. Parent: formattedParent,
  388. InstanceId: instanceId,
  389. Instance: instance,
  390. }
  391. c, err := NewCloudRedisClient(context.Background(), clientOpt)
  392. if err != nil {
  393. t.Fatal(err)
  394. }
  395. respLRO, err := c.CreateInstance(context.Background(), request)
  396. if err != nil {
  397. t.Fatal(err)
  398. }
  399. resp, err := respLRO.Wait(context.Background())
  400. if st, ok := gstatus.FromError(err); !ok {
  401. t.Errorf("got error %v, expected grpc error", err)
  402. } else if c := st.Code(); c != errCode {
  403. t.Errorf("got error code %q, want %q", c, errCode)
  404. }
  405. _ = resp
  406. }
  407. func TestCloudRedisUpdateInstance(t *testing.T) {
  408. var name string = "name3373707"
  409. var displayName2 string = "displayName21615000987"
  410. var locationId string = "locationId552319461"
  411. var alternativeLocationId string = "alternativeLocationId-718920621"
  412. var redisVersion string = "redisVersion-685310444"
  413. var reservedIpRange string = "reservedIpRange-1082940580"
  414. var host string = "host3208616"
  415. var port int32 = 3446913
  416. var currentLocationId string = "currentLocationId1312712735"
  417. var statusMessage string = "statusMessage-239442758"
  418. var memorySizeGb2 int32 = 1493816946
  419. var authorizedNetwork string = "authorizedNetwork-1733809270"
  420. var persistenceIamIdentity string = "persistenceIamIdentity1061944584"
  421. var expectedResponse = &redispb.Instance{
  422. Name: name,
  423. DisplayName: displayName2,
  424. LocationId: locationId,
  425. AlternativeLocationId: alternativeLocationId,
  426. RedisVersion: redisVersion,
  427. ReservedIpRange: reservedIpRange,
  428. Host: host,
  429. Port: port,
  430. CurrentLocationId: currentLocationId,
  431. StatusMessage: statusMessage,
  432. MemorySizeGb: memorySizeGb2,
  433. AuthorizedNetwork: authorizedNetwork,
  434. PersistenceIamIdentity: persistenceIamIdentity,
  435. }
  436. mockCloudRedis.err = nil
  437. mockCloudRedis.reqs = nil
  438. any, err := ptypes.MarshalAny(expectedResponse)
  439. if err != nil {
  440. t.Fatal(err)
  441. }
  442. mockCloudRedis.resps = append(mockCloudRedis.resps[:0], &longrunningpb.Operation{
  443. Name: "longrunning-test",
  444. Done: true,
  445. Result: &longrunningpb.Operation_Response{Response: any},
  446. })
  447. var pathsElement string = "display_name"
  448. var pathsElement2 string = "memory_size_gb"
  449. var paths = []string{pathsElement, pathsElement2}
  450. var updateMask = &field_maskpb.FieldMask{
  451. Paths: paths,
  452. }
  453. var displayName string = "UpdatedDisplayName"
  454. var memorySizeGb int32 = 4
  455. var instance = &redispb.Instance{
  456. DisplayName: displayName,
  457. MemorySizeGb: memorySizeGb,
  458. }
  459. var request = &redispb.UpdateInstanceRequest{
  460. UpdateMask: updateMask,
  461. Instance: instance,
  462. }
  463. c, err := NewCloudRedisClient(context.Background(), clientOpt)
  464. if err != nil {
  465. t.Fatal(err)
  466. }
  467. respLRO, err := c.UpdateInstance(context.Background(), request)
  468. if err != nil {
  469. t.Fatal(err)
  470. }
  471. resp, err := respLRO.Wait(context.Background())
  472. if err != nil {
  473. t.Fatal(err)
  474. }
  475. if want, got := request, mockCloudRedis.reqs[0]; !proto.Equal(want, got) {
  476. t.Errorf("wrong request %q, want %q", got, want)
  477. }
  478. if want, got := expectedResponse, resp; !proto.Equal(want, got) {
  479. t.Errorf("wrong response %q, want %q)", got, want)
  480. }
  481. }
  482. func TestCloudRedisUpdateInstanceError(t *testing.T) {
  483. errCode := codes.PermissionDenied
  484. mockCloudRedis.err = nil
  485. mockCloudRedis.resps = append(mockCloudRedis.resps[:0], &longrunningpb.Operation{
  486. Name: "longrunning-test",
  487. Done: true,
  488. Result: &longrunningpb.Operation_Error{
  489. Error: &status.Status{
  490. Code: int32(errCode),
  491. Message: "test error",
  492. },
  493. },
  494. })
  495. var pathsElement string = "display_name"
  496. var pathsElement2 string = "memory_size_gb"
  497. var paths = []string{pathsElement, pathsElement2}
  498. var updateMask = &field_maskpb.FieldMask{
  499. Paths: paths,
  500. }
  501. var displayName string = "UpdatedDisplayName"
  502. var memorySizeGb int32 = 4
  503. var instance = &redispb.Instance{
  504. DisplayName: displayName,
  505. MemorySizeGb: memorySizeGb,
  506. }
  507. var request = &redispb.UpdateInstanceRequest{
  508. UpdateMask: updateMask,
  509. Instance: instance,
  510. }
  511. c, err := NewCloudRedisClient(context.Background(), clientOpt)
  512. if err != nil {
  513. t.Fatal(err)
  514. }
  515. respLRO, err := c.UpdateInstance(context.Background(), request)
  516. if err != nil {
  517. t.Fatal(err)
  518. }
  519. resp, err := respLRO.Wait(context.Background())
  520. if st, ok := gstatus.FromError(err); !ok {
  521. t.Errorf("got error %v, expected grpc error", err)
  522. } else if c := st.Code(); c != errCode {
  523. t.Errorf("got error code %q, want %q", c, errCode)
  524. }
  525. _ = resp
  526. }
  527. func TestCloudRedisDeleteInstance(t *testing.T) {
  528. var expectedResponse *emptypb.Empty = &emptypb.Empty{}
  529. mockCloudRedis.err = nil
  530. mockCloudRedis.reqs = nil
  531. any, err := ptypes.MarshalAny(expectedResponse)
  532. if err != nil {
  533. t.Fatal(err)
  534. }
  535. mockCloudRedis.resps = append(mockCloudRedis.resps[:0], &longrunningpb.Operation{
  536. Name: "longrunning-test",
  537. Done: true,
  538. Result: &longrunningpb.Operation_Response{Response: any},
  539. })
  540. var formattedName string = fmt.Sprintf("projects/%s/locations/%s/instances/%s", "[PROJECT]", "[LOCATION]", "[INSTANCE]")
  541. var request = &redispb.DeleteInstanceRequest{
  542. Name: formattedName,
  543. }
  544. c, err := NewCloudRedisClient(context.Background(), clientOpt)
  545. if err != nil {
  546. t.Fatal(err)
  547. }
  548. respLRO, err := c.DeleteInstance(context.Background(), request)
  549. if err != nil {
  550. t.Fatal(err)
  551. }
  552. err = respLRO.Wait(context.Background())
  553. if err != nil {
  554. t.Fatal(err)
  555. }
  556. if want, got := request, mockCloudRedis.reqs[0]; !proto.Equal(want, got) {
  557. t.Errorf("wrong request %q, want %q", got, want)
  558. }
  559. }
  560. func TestCloudRedisDeleteInstanceError(t *testing.T) {
  561. errCode := codes.PermissionDenied
  562. mockCloudRedis.err = nil
  563. mockCloudRedis.resps = append(mockCloudRedis.resps[:0], &longrunningpb.Operation{
  564. Name: "longrunning-test",
  565. Done: true,
  566. Result: &longrunningpb.Operation_Error{
  567. Error: &status.Status{
  568. Code: int32(errCode),
  569. Message: "test error",
  570. },
  571. },
  572. })
  573. var formattedName string = fmt.Sprintf("projects/%s/locations/%s/instances/%s", "[PROJECT]", "[LOCATION]", "[INSTANCE]")
  574. var request = &redispb.DeleteInstanceRequest{
  575. Name: formattedName,
  576. }
  577. c, err := NewCloudRedisClient(context.Background(), clientOpt)
  578. if err != nil {
  579. t.Fatal(err)
  580. }
  581. respLRO, err := c.DeleteInstance(context.Background(), request)
  582. if err != nil {
  583. t.Fatal(err)
  584. }
  585. err = respLRO.Wait(context.Background())
  586. if st, ok := gstatus.FromError(err); !ok {
  587. t.Errorf("got error %v, expected grpc error", err)
  588. } else if c := st.Code(); c != errCode {
  589. t.Errorf("got error code %q, want %q", c, errCode)
  590. }
  591. }
  592. func TestCloudRedisImportInstance(t *testing.T) {
  593. var name2 string = "name2-1052831874"
  594. var displayName string = "displayName1615086568"
  595. var locationId string = "locationId552319461"
  596. var alternativeLocationId string = "alternativeLocationId-718920621"
  597. var redisVersion string = "redisVersion-685310444"
  598. var reservedIpRange string = "reservedIpRange-1082940580"
  599. var host string = "host3208616"
  600. var port int32 = 3446913
  601. var currentLocationId string = "currentLocationId1312712735"
  602. var statusMessage string = "statusMessage-239442758"
  603. var memorySizeGb int32 = 34199707
  604. var authorizedNetwork string = "authorizedNetwork-1733809270"
  605. var persistenceIamIdentity string = "persistenceIamIdentity1061944584"
  606. var expectedResponse = &redispb.Instance{
  607. Name: name2,
  608. DisplayName: displayName,
  609. LocationId: locationId,
  610. AlternativeLocationId: alternativeLocationId,
  611. RedisVersion: redisVersion,
  612. ReservedIpRange: reservedIpRange,
  613. Host: host,
  614. Port: port,
  615. CurrentLocationId: currentLocationId,
  616. StatusMessage: statusMessage,
  617. MemorySizeGb: memorySizeGb,
  618. AuthorizedNetwork: authorizedNetwork,
  619. PersistenceIamIdentity: persistenceIamIdentity,
  620. }
  621. mockCloudRedis.err = nil
  622. mockCloudRedis.reqs = nil
  623. any, err := ptypes.MarshalAny(expectedResponse)
  624. if err != nil {
  625. t.Fatal(err)
  626. }
  627. mockCloudRedis.resps = append(mockCloudRedis.resps[:0], &longrunningpb.Operation{
  628. Name: "longrunning-test",
  629. Done: true,
  630. Result: &longrunningpb.Operation_Response{Response: any},
  631. })
  632. var formattedName string = fmt.Sprintf("projects/%s/locations/%s/instances/%s", "[PROJECT]", "[LOCATION]", "[INSTANCE]")
  633. var inputConfig *redispb.InputConfig = &redispb.InputConfig{}
  634. var request = &redispb.ImportInstanceRequest{
  635. Name: formattedName,
  636. InputConfig: inputConfig,
  637. }
  638. c, err := NewCloudRedisClient(context.Background(), clientOpt)
  639. if err != nil {
  640. t.Fatal(err)
  641. }
  642. respLRO, err := c.ImportInstance(context.Background(), request)
  643. if err != nil {
  644. t.Fatal(err)
  645. }
  646. resp, err := respLRO.Wait(context.Background())
  647. if err != nil {
  648. t.Fatal(err)
  649. }
  650. if want, got := request, mockCloudRedis.reqs[0]; !proto.Equal(want, got) {
  651. t.Errorf("wrong request %q, want %q", got, want)
  652. }
  653. if want, got := expectedResponse, resp; !proto.Equal(want, got) {
  654. t.Errorf("wrong response %q, want %q)", got, want)
  655. }
  656. }
  657. func TestCloudRedisImportInstanceError(t *testing.T) {
  658. errCode := codes.PermissionDenied
  659. mockCloudRedis.err = nil
  660. mockCloudRedis.resps = append(mockCloudRedis.resps[:0], &longrunningpb.Operation{
  661. Name: "longrunning-test",
  662. Done: true,
  663. Result: &longrunningpb.Operation_Error{
  664. Error: &status.Status{
  665. Code: int32(errCode),
  666. Message: "test error",
  667. },
  668. },
  669. })
  670. var formattedName string = fmt.Sprintf("projects/%s/locations/%s/instances/%s", "[PROJECT]", "[LOCATION]", "[INSTANCE]")
  671. var inputConfig *redispb.InputConfig = &redispb.InputConfig{}
  672. var request = &redispb.ImportInstanceRequest{
  673. Name: formattedName,
  674. InputConfig: inputConfig,
  675. }
  676. c, err := NewCloudRedisClient(context.Background(), clientOpt)
  677. if err != nil {
  678. t.Fatal(err)
  679. }
  680. respLRO, err := c.ImportInstance(context.Background(), request)
  681. if err != nil {
  682. t.Fatal(err)
  683. }
  684. resp, err := respLRO.Wait(context.Background())
  685. if st, ok := gstatus.FromError(err); !ok {
  686. t.Errorf("got error %v, expected grpc error", err)
  687. } else if c := st.Code(); c != errCode {
  688. t.Errorf("got error code %q, want %q", c, errCode)
  689. }
  690. _ = resp
  691. }
  692. func TestCloudRedisExportInstance(t *testing.T) {
  693. var name2 string = "name2-1052831874"
  694. var displayName string = "displayName1615086568"
  695. var locationId string = "locationId552319461"
  696. var alternativeLocationId string = "alternativeLocationId-718920621"
  697. var redisVersion string = "redisVersion-685310444"
  698. var reservedIpRange string = "reservedIpRange-1082940580"
  699. var host string = "host3208616"
  700. var port int32 = 3446913
  701. var currentLocationId string = "currentLocationId1312712735"
  702. var statusMessage string = "statusMessage-239442758"
  703. var memorySizeGb int32 = 34199707
  704. var authorizedNetwork string = "authorizedNetwork-1733809270"
  705. var persistenceIamIdentity string = "persistenceIamIdentity1061944584"
  706. var expectedResponse = &redispb.Instance{
  707. Name: name2,
  708. DisplayName: displayName,
  709. LocationId: locationId,
  710. AlternativeLocationId: alternativeLocationId,
  711. RedisVersion: redisVersion,
  712. ReservedIpRange: reservedIpRange,
  713. Host: host,
  714. Port: port,
  715. CurrentLocationId: currentLocationId,
  716. StatusMessage: statusMessage,
  717. MemorySizeGb: memorySizeGb,
  718. AuthorizedNetwork: authorizedNetwork,
  719. PersistenceIamIdentity: persistenceIamIdentity,
  720. }
  721. mockCloudRedis.err = nil
  722. mockCloudRedis.reqs = nil
  723. any, err := ptypes.MarshalAny(expectedResponse)
  724. if err != nil {
  725. t.Fatal(err)
  726. }
  727. mockCloudRedis.resps = append(mockCloudRedis.resps[:0], &longrunningpb.Operation{
  728. Name: "longrunning-test",
  729. Done: true,
  730. Result: &longrunningpb.Operation_Response{Response: any},
  731. })
  732. var formattedName string = fmt.Sprintf("projects/%s/locations/%s/instances/%s", "[PROJECT]", "[LOCATION]", "[INSTANCE]")
  733. var outputConfig *redispb.OutputConfig = &redispb.OutputConfig{}
  734. var request = &redispb.ExportInstanceRequest{
  735. Name: formattedName,
  736. OutputConfig: outputConfig,
  737. }
  738. c, err := NewCloudRedisClient(context.Background(), clientOpt)
  739. if err != nil {
  740. t.Fatal(err)
  741. }
  742. respLRO, err := c.ExportInstance(context.Background(), request)
  743. if err != nil {
  744. t.Fatal(err)
  745. }
  746. resp, err := respLRO.Wait(context.Background())
  747. if err != nil {
  748. t.Fatal(err)
  749. }
  750. if want, got := request, mockCloudRedis.reqs[0]; !proto.Equal(want, got) {
  751. t.Errorf("wrong request %q, want %q", got, want)
  752. }
  753. if want, got := expectedResponse, resp; !proto.Equal(want, got) {
  754. t.Errorf("wrong response %q, want %q)", got, want)
  755. }
  756. }
  757. func TestCloudRedisExportInstanceError(t *testing.T) {
  758. errCode := codes.PermissionDenied
  759. mockCloudRedis.err = nil
  760. mockCloudRedis.resps = append(mockCloudRedis.resps[:0], &longrunningpb.Operation{
  761. Name: "longrunning-test",
  762. Done: true,
  763. Result: &longrunningpb.Operation_Error{
  764. Error: &status.Status{
  765. Code: int32(errCode),
  766. Message: "test error",
  767. },
  768. },
  769. })
  770. var formattedName string = fmt.Sprintf("projects/%s/locations/%s/instances/%s", "[PROJECT]", "[LOCATION]", "[INSTANCE]")
  771. var outputConfig *redispb.OutputConfig = &redispb.OutputConfig{}
  772. var request = &redispb.ExportInstanceRequest{
  773. Name: formattedName,
  774. OutputConfig: outputConfig,
  775. }
  776. c, err := NewCloudRedisClient(context.Background(), clientOpt)
  777. if err != nil {
  778. t.Fatal(err)
  779. }
  780. respLRO, err := c.ExportInstance(context.Background(), request)
  781. if err != nil {
  782. t.Fatal(err)
  783. }
  784. resp, err := respLRO.Wait(context.Background())
  785. if st, ok := gstatus.FromError(err); !ok {
  786. t.Errorf("got error %v, expected grpc error", err)
  787. } else if c := st.Code(); c != errCode {
  788. t.Errorf("got error code %q, want %q", c, errCode)
  789. }
  790. _ = resp
  791. }
  792. func TestCloudRedisFailoverInstance(t *testing.T) {
  793. var name2 string = "name2-1052831874"
  794. var displayName string = "displayName1615086568"
  795. var locationId string = "locationId552319461"
  796. var alternativeLocationId string = "alternativeLocationId-718920621"
  797. var redisVersion string = "redisVersion-685310444"
  798. var reservedIpRange string = "reservedIpRange-1082940580"
  799. var host string = "host3208616"
  800. var port int32 = 3446913
  801. var currentLocationId string = "currentLocationId1312712735"
  802. var statusMessage string = "statusMessage-239442758"
  803. var memorySizeGb int32 = 34199707
  804. var authorizedNetwork string = "authorizedNetwork-1733809270"
  805. var persistenceIamIdentity string = "persistenceIamIdentity1061944584"
  806. var expectedResponse = &redispb.Instance{
  807. Name: name2,
  808. DisplayName: displayName,
  809. LocationId: locationId,
  810. AlternativeLocationId: alternativeLocationId,
  811. RedisVersion: redisVersion,
  812. ReservedIpRange: reservedIpRange,
  813. Host: host,
  814. Port: port,
  815. CurrentLocationId: currentLocationId,
  816. StatusMessage: statusMessage,
  817. MemorySizeGb: memorySizeGb,
  818. AuthorizedNetwork: authorizedNetwork,
  819. PersistenceIamIdentity: persistenceIamIdentity,
  820. }
  821. mockCloudRedis.err = nil
  822. mockCloudRedis.reqs = nil
  823. any, err := ptypes.MarshalAny(expectedResponse)
  824. if err != nil {
  825. t.Fatal(err)
  826. }
  827. mockCloudRedis.resps = append(mockCloudRedis.resps[:0], &longrunningpb.Operation{
  828. Name: "longrunning-test",
  829. Done: true,
  830. Result: &longrunningpb.Operation_Response{Response: any},
  831. })
  832. var formattedName string = fmt.Sprintf("projects/%s/locations/%s/instances/%s", "[PROJECT]", "[LOCATION]", "[INSTANCE]")
  833. var dataProtectionMode redispb.FailoverInstanceRequest_DataProtectionMode = redispb.FailoverInstanceRequest_DATA_PROTECTION_MODE_UNSPECIFIED
  834. var request = &redispb.FailoverInstanceRequest{
  835. Name: formattedName,
  836. DataProtectionMode: dataProtectionMode,
  837. }
  838. c, err := NewCloudRedisClient(context.Background(), clientOpt)
  839. if err != nil {
  840. t.Fatal(err)
  841. }
  842. respLRO, err := c.FailoverInstance(context.Background(), request)
  843. if err != nil {
  844. t.Fatal(err)
  845. }
  846. resp, err := respLRO.Wait(context.Background())
  847. if err != nil {
  848. t.Fatal(err)
  849. }
  850. if want, got := request, mockCloudRedis.reqs[0]; !proto.Equal(want, got) {
  851. t.Errorf("wrong request %q, want %q", got, want)
  852. }
  853. if want, got := expectedResponse, resp; !proto.Equal(want, got) {
  854. t.Errorf("wrong response %q, want %q)", got, want)
  855. }
  856. }
  857. func TestCloudRedisFailoverInstanceError(t *testing.T) {
  858. errCode := codes.PermissionDenied
  859. mockCloudRedis.err = nil
  860. mockCloudRedis.resps = append(mockCloudRedis.resps[:0], &longrunningpb.Operation{
  861. Name: "longrunning-test",
  862. Done: true,
  863. Result: &longrunningpb.Operation_Error{
  864. Error: &status.Status{
  865. Code: int32(errCode),
  866. Message: "test error",
  867. },
  868. },
  869. })
  870. var formattedName string = fmt.Sprintf("projects/%s/locations/%s/instances/%s", "[PROJECT]", "[LOCATION]", "[INSTANCE]")
  871. var dataProtectionMode redispb.FailoverInstanceRequest_DataProtectionMode = redispb.FailoverInstanceRequest_DATA_PROTECTION_MODE_UNSPECIFIED
  872. var request = &redispb.FailoverInstanceRequest{
  873. Name: formattedName,
  874. DataProtectionMode: dataProtectionMode,
  875. }
  876. c, err := NewCloudRedisClient(context.Background(), clientOpt)
  877. if err != nil {
  878. t.Fatal(err)
  879. }
  880. respLRO, err := c.FailoverInstance(context.Background(), request)
  881. if err != nil {
  882. t.Fatal(err)
  883. }
  884. resp, err := respLRO.Wait(context.Background())
  885. if st, ok := gstatus.FromError(err); !ok {
  886. t.Errorf("got error %v, expected grpc error", err)
  887. } else if c := st.Code(); c != errCode {
  888. t.Errorf("got error code %q, want %q", c, errCode)
  889. }
  890. _ = resp
  891. }