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.
 
 
 

642 lines
18 KiB

  1. // Copyright 2018 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. // AUTO-GENERATED CODE. 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/v1beta1"
  19. longrunningpb "google.golang.org/genproto/googleapis/longrunning"
  20. field_maskpb "google.golang.org/genproto/protobuf/field_mask"
  21. )
  22. import (
  23. "flag"
  24. "fmt"
  25. "io"
  26. "log"
  27. "net"
  28. "os"
  29. "strings"
  30. "testing"
  31. "github.com/golang/protobuf/proto"
  32. "github.com/golang/protobuf/ptypes"
  33. "golang.org/x/net/context"
  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) DeleteInstance(ctx context.Context, req *redispb.DeleteInstanceRequest) (*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. // clientOpt is the option tests should use to connect to the test server.
  111. // It is initialized by TestMain.
  112. var clientOpt option.ClientOption
  113. var (
  114. mockCloudRedis mockCloudRedisServer
  115. )
  116. func TestMain(m *testing.M) {
  117. flag.Parse()
  118. serv := grpc.NewServer()
  119. redispb.RegisterCloudRedisServer(serv, &mockCloudRedis)
  120. lis, err := net.Listen("tcp", "localhost:0")
  121. if err != nil {
  122. log.Fatal(err)
  123. }
  124. go serv.Serve(lis)
  125. conn, err := grpc.Dial(lis.Addr().String(), grpc.WithInsecure())
  126. if err != nil {
  127. log.Fatal(err)
  128. }
  129. clientOpt = option.WithGRPCConn(conn)
  130. os.Exit(m.Run())
  131. }
  132. func TestCloudRedisListInstances(t *testing.T) {
  133. var nextPageToken string = ""
  134. var instancesElement *redispb.Instance = &redispb.Instance{}
  135. var instances = []*redispb.Instance{instancesElement}
  136. var expectedResponse = &redispb.ListInstancesResponse{
  137. NextPageToken: nextPageToken,
  138. Instances: instances,
  139. }
  140. mockCloudRedis.err = nil
  141. mockCloudRedis.reqs = nil
  142. mockCloudRedis.resps = append(mockCloudRedis.resps[:0], expectedResponse)
  143. var formattedParent string = fmt.Sprintf("projects/%s/locations/%s", "[PROJECT]", "[LOCATION]")
  144. var request = &redispb.ListInstancesRequest{
  145. Parent: formattedParent,
  146. }
  147. c, err := NewCloudRedisClient(context.Background(), clientOpt)
  148. if err != nil {
  149. t.Fatal(err)
  150. }
  151. resp, err := c.ListInstances(context.Background(), request).Next()
  152. if err != nil {
  153. t.Fatal(err)
  154. }
  155. if want, got := request, mockCloudRedis.reqs[0]; !proto.Equal(want, got) {
  156. t.Errorf("wrong request %q, want %q", got, want)
  157. }
  158. want := (interface{})(expectedResponse.Instances[0])
  159. got := (interface{})(resp)
  160. var ok bool
  161. switch want := (want).(type) {
  162. case proto.Message:
  163. ok = proto.Equal(want, got.(proto.Message))
  164. default:
  165. ok = want == got
  166. }
  167. if !ok {
  168. t.Errorf("wrong response %q, want %q)", got, want)
  169. }
  170. }
  171. func TestCloudRedisListInstancesError(t *testing.T) {
  172. errCode := codes.PermissionDenied
  173. mockCloudRedis.err = gstatus.Error(errCode, "test error")
  174. var formattedParent string = fmt.Sprintf("projects/%s/locations/%s", "[PROJECT]", "[LOCATION]")
  175. var request = &redispb.ListInstancesRequest{
  176. Parent: formattedParent,
  177. }
  178. c, err := NewCloudRedisClient(context.Background(), clientOpt)
  179. if err != nil {
  180. t.Fatal(err)
  181. }
  182. resp, err := c.ListInstances(context.Background(), request).Next()
  183. if st, ok := gstatus.FromError(err); !ok {
  184. t.Errorf("got error %v, expected grpc error", err)
  185. } else if c := st.Code(); c != errCode {
  186. t.Errorf("got error code %q, want %q", c, errCode)
  187. }
  188. _ = resp
  189. }
  190. func TestCloudRedisGetInstance(t *testing.T) {
  191. var name2 string = "name2-1052831874"
  192. var displayName string = "displayName1615086568"
  193. var locationId string = "locationId552319461"
  194. var alternativeLocationId string = "alternativeLocationId-718920621"
  195. var redisVersion string = "redisVersion-685310444"
  196. var reservedIpRange string = "reservedIpRange-1082940580"
  197. var host string = "host3208616"
  198. var port int32 = 3446913
  199. var currentLocationId string = "currentLocationId1312712735"
  200. var statusMessage string = "statusMessage-239442758"
  201. var memorySizeGb int32 = 34199707
  202. var authorizedNetwork string = "authorizedNetwork-1733809270"
  203. var expectedResponse = &redispb.Instance{
  204. Name: name2,
  205. DisplayName: displayName,
  206. LocationId: locationId,
  207. AlternativeLocationId: alternativeLocationId,
  208. RedisVersion: redisVersion,
  209. ReservedIpRange: reservedIpRange,
  210. Host: host,
  211. Port: port,
  212. CurrentLocationId: currentLocationId,
  213. StatusMessage: statusMessage,
  214. MemorySizeGb: memorySizeGb,
  215. AuthorizedNetwork: authorizedNetwork,
  216. }
  217. mockCloudRedis.err = nil
  218. mockCloudRedis.reqs = nil
  219. mockCloudRedis.resps = append(mockCloudRedis.resps[:0], expectedResponse)
  220. var formattedName string = fmt.Sprintf("projects/%s/locations/%s/instances/%s", "[PROJECT]", "[LOCATION]", "[INSTANCE]")
  221. var request = &redispb.GetInstanceRequest{
  222. Name: formattedName,
  223. }
  224. c, err := NewCloudRedisClient(context.Background(), clientOpt)
  225. if err != nil {
  226. t.Fatal(err)
  227. }
  228. resp, err := c.GetInstance(context.Background(), request)
  229. if err != nil {
  230. t.Fatal(err)
  231. }
  232. if want, got := request, mockCloudRedis.reqs[0]; !proto.Equal(want, got) {
  233. t.Errorf("wrong request %q, want %q", got, want)
  234. }
  235. if want, got := expectedResponse, resp; !proto.Equal(want, got) {
  236. t.Errorf("wrong response %q, want %q)", got, want)
  237. }
  238. }
  239. func TestCloudRedisGetInstanceError(t *testing.T) {
  240. errCode := codes.PermissionDenied
  241. mockCloudRedis.err = gstatus.Error(errCode, "test error")
  242. var formattedName string = fmt.Sprintf("projects/%s/locations/%s/instances/%s", "[PROJECT]", "[LOCATION]", "[INSTANCE]")
  243. var request = &redispb.GetInstanceRequest{
  244. Name: formattedName,
  245. }
  246. c, err := NewCloudRedisClient(context.Background(), clientOpt)
  247. if err != nil {
  248. t.Fatal(err)
  249. }
  250. resp, err := c.GetInstance(context.Background(), request)
  251. if st, ok := gstatus.FromError(err); !ok {
  252. t.Errorf("got error %v, expected grpc error", err)
  253. } else if c := st.Code(); c != errCode {
  254. t.Errorf("got error code %q, want %q", c, errCode)
  255. }
  256. _ = resp
  257. }
  258. func TestCloudRedisCreateInstance(t *testing.T) {
  259. var name string = "name3373707"
  260. var displayName string = "displayName1615086568"
  261. var locationId string = "locationId552319461"
  262. var alternativeLocationId string = "alternativeLocationId-718920621"
  263. var redisVersion string = "redisVersion-685310444"
  264. var reservedIpRange string = "reservedIpRange-1082940580"
  265. var host string = "host3208616"
  266. var port int32 = 3446913
  267. var currentLocationId string = "currentLocationId1312712735"
  268. var statusMessage string = "statusMessage-239442758"
  269. var memorySizeGb2 int32 = 1493816946
  270. var authorizedNetwork string = "authorizedNetwork-1733809270"
  271. var expectedResponse = &redispb.Instance{
  272. Name: name,
  273. DisplayName: displayName,
  274. LocationId: locationId,
  275. AlternativeLocationId: alternativeLocationId,
  276. RedisVersion: redisVersion,
  277. ReservedIpRange: reservedIpRange,
  278. Host: host,
  279. Port: port,
  280. CurrentLocationId: currentLocationId,
  281. StatusMessage: statusMessage,
  282. MemorySizeGb: memorySizeGb2,
  283. AuthorizedNetwork: authorizedNetwork,
  284. }
  285. mockCloudRedis.err = nil
  286. mockCloudRedis.reqs = nil
  287. any, err := ptypes.MarshalAny(expectedResponse)
  288. if err != nil {
  289. t.Fatal(err)
  290. }
  291. mockCloudRedis.resps = append(mockCloudRedis.resps[:0], &longrunningpb.Operation{
  292. Name: "longrunning-test",
  293. Done: true,
  294. Result: &longrunningpb.Operation_Response{Response: any},
  295. })
  296. var formattedParent string = fmt.Sprintf("projects/%s/locations/%s", "[PROJECT]", "[LOCATION]")
  297. var instanceId string = "test_instance"
  298. var tier redispb.Instance_Tier = redispb.Instance_BASIC
  299. var memorySizeGb int32 = 1
  300. var instance = &redispb.Instance{
  301. Tier: tier,
  302. MemorySizeGb: memorySizeGb,
  303. }
  304. var request = &redispb.CreateInstanceRequest{
  305. Parent: formattedParent,
  306. InstanceId: instanceId,
  307. Instance: instance,
  308. }
  309. c, err := NewCloudRedisClient(context.Background(), clientOpt)
  310. if err != nil {
  311. t.Fatal(err)
  312. }
  313. respLRO, err := c.CreateInstance(context.Background(), request)
  314. if err != nil {
  315. t.Fatal(err)
  316. }
  317. resp, err := respLRO.Wait(context.Background())
  318. if err != nil {
  319. t.Fatal(err)
  320. }
  321. if want, got := request, mockCloudRedis.reqs[0]; !proto.Equal(want, got) {
  322. t.Errorf("wrong request %q, want %q", got, want)
  323. }
  324. if want, got := expectedResponse, resp; !proto.Equal(want, got) {
  325. t.Errorf("wrong response %q, want %q)", got, want)
  326. }
  327. }
  328. func TestCloudRedisCreateInstanceError(t *testing.T) {
  329. errCode := codes.PermissionDenied
  330. mockCloudRedis.err = nil
  331. mockCloudRedis.resps = append(mockCloudRedis.resps[:0], &longrunningpb.Operation{
  332. Name: "longrunning-test",
  333. Done: true,
  334. Result: &longrunningpb.Operation_Error{
  335. Error: &status.Status{
  336. Code: int32(errCode),
  337. Message: "test error",
  338. },
  339. },
  340. })
  341. var formattedParent string = fmt.Sprintf("projects/%s/locations/%s", "[PROJECT]", "[LOCATION]")
  342. var instanceId string = "test_instance"
  343. var tier redispb.Instance_Tier = redispb.Instance_BASIC
  344. var memorySizeGb int32 = 1
  345. var instance = &redispb.Instance{
  346. Tier: tier,
  347. MemorySizeGb: memorySizeGb,
  348. }
  349. var request = &redispb.CreateInstanceRequest{
  350. Parent: formattedParent,
  351. InstanceId: instanceId,
  352. Instance: instance,
  353. }
  354. c, err := NewCloudRedisClient(context.Background(), clientOpt)
  355. if err != nil {
  356. t.Fatal(err)
  357. }
  358. respLRO, err := c.CreateInstance(context.Background(), request)
  359. if err != nil {
  360. t.Fatal(err)
  361. }
  362. resp, err := respLRO.Wait(context.Background())
  363. if st, ok := gstatus.FromError(err); !ok {
  364. t.Errorf("got error %v, expected grpc error", err)
  365. } else if c := st.Code(); c != errCode {
  366. t.Errorf("got error code %q, want %q", c, errCode)
  367. }
  368. _ = resp
  369. }
  370. func TestCloudRedisUpdateInstance(t *testing.T) {
  371. var name string = "name3373707"
  372. var displayName2 string = "displayName21615000987"
  373. var locationId string = "locationId552319461"
  374. var alternativeLocationId string = "alternativeLocationId-718920621"
  375. var redisVersion string = "redisVersion-685310444"
  376. var reservedIpRange string = "reservedIpRange-1082940580"
  377. var host string = "host3208616"
  378. var port int32 = 3446913
  379. var currentLocationId string = "currentLocationId1312712735"
  380. var statusMessage string = "statusMessage-239442758"
  381. var memorySizeGb2 int32 = 1493816946
  382. var authorizedNetwork string = "authorizedNetwork-1733809270"
  383. var expectedResponse = &redispb.Instance{
  384. Name: name,
  385. DisplayName: displayName2,
  386. LocationId: locationId,
  387. AlternativeLocationId: alternativeLocationId,
  388. RedisVersion: redisVersion,
  389. ReservedIpRange: reservedIpRange,
  390. Host: host,
  391. Port: port,
  392. CurrentLocationId: currentLocationId,
  393. StatusMessage: statusMessage,
  394. MemorySizeGb: memorySizeGb2,
  395. AuthorizedNetwork: authorizedNetwork,
  396. }
  397. mockCloudRedis.err = nil
  398. mockCloudRedis.reqs = nil
  399. any, err := ptypes.MarshalAny(expectedResponse)
  400. if err != nil {
  401. t.Fatal(err)
  402. }
  403. mockCloudRedis.resps = append(mockCloudRedis.resps[:0], &longrunningpb.Operation{
  404. Name: "longrunning-test",
  405. Done: true,
  406. Result: &longrunningpb.Operation_Response{Response: any},
  407. })
  408. var pathsElement string = "display_name"
  409. var pathsElement2 string = "memory_size_gb"
  410. var paths = []string{pathsElement, pathsElement2}
  411. var updateMask = &field_maskpb.FieldMask{
  412. Paths: paths,
  413. }
  414. var displayName string = "UpdatedDisplayName"
  415. var memorySizeGb int32 = 4
  416. var instance = &redispb.Instance{
  417. DisplayName: displayName,
  418. MemorySizeGb: memorySizeGb,
  419. }
  420. var request = &redispb.UpdateInstanceRequest{
  421. UpdateMask: updateMask,
  422. Instance: instance,
  423. }
  424. c, err := NewCloudRedisClient(context.Background(), clientOpt)
  425. if err != nil {
  426. t.Fatal(err)
  427. }
  428. respLRO, err := c.UpdateInstance(context.Background(), request)
  429. if err != nil {
  430. t.Fatal(err)
  431. }
  432. resp, err := respLRO.Wait(context.Background())
  433. if err != nil {
  434. t.Fatal(err)
  435. }
  436. if want, got := request, mockCloudRedis.reqs[0]; !proto.Equal(want, got) {
  437. t.Errorf("wrong request %q, want %q", got, want)
  438. }
  439. if want, got := expectedResponse, resp; !proto.Equal(want, got) {
  440. t.Errorf("wrong response %q, want %q)", got, want)
  441. }
  442. }
  443. func TestCloudRedisUpdateInstanceError(t *testing.T) {
  444. errCode := codes.PermissionDenied
  445. mockCloudRedis.err = nil
  446. mockCloudRedis.resps = append(mockCloudRedis.resps[:0], &longrunningpb.Operation{
  447. Name: "longrunning-test",
  448. Done: true,
  449. Result: &longrunningpb.Operation_Error{
  450. Error: &status.Status{
  451. Code: int32(errCode),
  452. Message: "test error",
  453. },
  454. },
  455. })
  456. var pathsElement string = "display_name"
  457. var pathsElement2 string = "memory_size_gb"
  458. var paths = []string{pathsElement, pathsElement2}
  459. var updateMask = &field_maskpb.FieldMask{
  460. Paths: paths,
  461. }
  462. var displayName string = "UpdatedDisplayName"
  463. var memorySizeGb int32 = 4
  464. var instance = &redispb.Instance{
  465. DisplayName: displayName,
  466. MemorySizeGb: memorySizeGb,
  467. }
  468. var request = &redispb.UpdateInstanceRequest{
  469. UpdateMask: updateMask,
  470. Instance: instance,
  471. }
  472. c, err := NewCloudRedisClient(context.Background(), clientOpt)
  473. if err != nil {
  474. t.Fatal(err)
  475. }
  476. respLRO, err := c.UpdateInstance(context.Background(), request)
  477. if err != nil {
  478. t.Fatal(err)
  479. }
  480. resp, err := respLRO.Wait(context.Background())
  481. if st, ok := gstatus.FromError(err); !ok {
  482. t.Errorf("got error %v, expected grpc error", err)
  483. } else if c := st.Code(); c != errCode {
  484. t.Errorf("got error code %q, want %q", c, errCode)
  485. }
  486. _ = resp
  487. }
  488. func TestCloudRedisDeleteInstance(t *testing.T) {
  489. var expectedResponse *emptypb.Empty = &emptypb.Empty{}
  490. mockCloudRedis.err = nil
  491. mockCloudRedis.reqs = nil
  492. any, err := ptypes.MarshalAny(expectedResponse)
  493. if err != nil {
  494. t.Fatal(err)
  495. }
  496. mockCloudRedis.resps = append(mockCloudRedis.resps[:0], &longrunningpb.Operation{
  497. Name: "longrunning-test",
  498. Done: true,
  499. Result: &longrunningpb.Operation_Response{Response: any},
  500. })
  501. var formattedName string = fmt.Sprintf("projects/%s/locations/%s/instances/%s", "[PROJECT]", "[LOCATION]", "[INSTANCE]")
  502. var request = &redispb.DeleteInstanceRequest{
  503. Name: formattedName,
  504. }
  505. c, err := NewCloudRedisClient(context.Background(), clientOpt)
  506. if err != nil {
  507. t.Fatal(err)
  508. }
  509. respLRO, err := c.DeleteInstance(context.Background(), request)
  510. if err != nil {
  511. t.Fatal(err)
  512. }
  513. err = respLRO.Wait(context.Background())
  514. if err != nil {
  515. t.Fatal(err)
  516. }
  517. if want, got := request, mockCloudRedis.reqs[0]; !proto.Equal(want, got) {
  518. t.Errorf("wrong request %q, want %q", got, want)
  519. }
  520. }
  521. func TestCloudRedisDeleteInstanceError(t *testing.T) {
  522. errCode := codes.PermissionDenied
  523. mockCloudRedis.err = nil
  524. mockCloudRedis.resps = append(mockCloudRedis.resps[:0], &longrunningpb.Operation{
  525. Name: "longrunning-test",
  526. Done: true,
  527. Result: &longrunningpb.Operation_Error{
  528. Error: &status.Status{
  529. Code: int32(errCode),
  530. Message: "test error",
  531. },
  532. },
  533. })
  534. var formattedName string = fmt.Sprintf("projects/%s/locations/%s/instances/%s", "[PROJECT]", "[LOCATION]", "[INSTANCE]")
  535. var request = &redispb.DeleteInstanceRequest{
  536. Name: formattedName,
  537. }
  538. c, err := NewCloudRedisClient(context.Background(), clientOpt)
  539. if err != nil {
  540. t.Fatal(err)
  541. }
  542. respLRO, err := c.DeleteInstance(context.Background(), request)
  543. if err != nil {
  544. t.Fatal(err)
  545. }
  546. err = respLRO.Wait(context.Background())
  547. if st, ok := gstatus.FromError(err); !ok {
  548. t.Errorf("got error %v, expected grpc error", err)
  549. } else if c := st.Code(); c != errCode {
  550. t.Errorf("got error code %q, want %q", c, errCode)
  551. }
  552. }