|
15 | 15 | package platform
|
16 | 16 |
|
17 | 17 | import (
|
| 18 | + "context" |
18 | 19 | "errors"
|
19 | 20 | "testing"
|
20 | 21 |
|
@@ -361,92 +362,87 @@ func TestDefaultPort(t *testing.T) {
|
361 | 362 |
|
362 | 363 | func TestLocality(t *testing.T) {
|
363 | 364 | tests := []struct {
|
364 |
| - name string |
365 |
| - shouldFill shouldFillFn |
366 |
| - projectIDFn metadataFn |
367 |
| - numericProjectIDFn metadataFn |
368 |
| - locationFn metadataFn |
369 |
| - clusterNameFn metadataFn |
370 |
| - instanceNameFn metadataFn |
371 |
| - instanceIDFn metadataFn |
372 |
| - instanceTemplateFn metadataFn |
373 |
| - instanceCreatedByFn metadataFn |
374 |
| - env map[string]string |
375 |
| - want map[string]string |
| 365 | + name string |
| 366 | + zoneFn func(context.Context) (string, error) |
| 367 | + env map[string]string |
| 368 | + want map[string]string |
376 | 369 | }{
|
377 | 370 | {
|
378 | 371 | "fill by env variable",
|
379 |
| - func() bool { return true }, |
380 |
| - func() (string, error) { return "pid", nil }, |
381 |
| - func() (string, error) { return "npid", nil }, |
382 |
| - func() (string, error) { return "location", nil }, |
383 |
| - func() (string, error) { return "cluster", nil }, |
384 |
| - func() (string, error) { return "instanceName", nil }, |
385 |
| - func() (string, error) { return "instance", nil }, |
386 |
| - func() (string, error) { return "instanceTemplate", nil }, |
387 |
| - func() (string, error) { return "createdBy", nil }, |
| 372 | + func(context.Context) (string, error) { return "us-east1-ir", nil }, |
388 | 373 | map[string]string{
|
389 |
| - GCPProject: "env_pid", |
390 |
| - GCPProjectNumber: "env_pn", |
391 |
| - GCPCluster: "env_cluster", |
392 |
| - GCPLocation: "us-west1-ir", |
| 374 | + GCPZone: "us-central2-ir", |
393 | 375 | },
|
394 |
| - map[string]string{"Zone": "us-west1-ir", "Region": "us-west1"}, |
| 376 | + map[string]string{"Zone": "us-central2-ir", "Region": "us-central2"}, |
395 | 377 | },
|
396 | 378 | {
|
397 |
| - "no env variable", |
398 |
| - func() bool { return true }, |
399 |
| - func() (string, error) { return "pid", nil }, |
400 |
| - func() (string, error) { return "npid", nil }, |
401 |
| - func() (string, error) { return "us-west1-ir", nil }, |
402 |
| - func() (string, error) { return "cluster", nil }, |
403 |
| - func() (string, error) { return "instanceName", nil }, |
404 |
| - func() (string, error) { return "instance", nil }, |
405 |
| - func() (string, error) { return "instanceTemplate", nil }, |
406 |
| - func() (string, error) { return "createdBy", nil }, |
| 379 | + "fill by metadata server", |
| 380 | + func(context.Context) (string, error) { return "us-east1-ir", nil }, |
407 | 381 | map[string]string{},
|
408 |
| - map[string]string{"Zone": "us-west1-ir", "Region": "us-west1"}, |
| 382 | + map[string]string{"Zone": "us-east1-ir", "Region": "us-east1"}, |
409 | 383 | },
|
410 | 384 | {
|
411 |
| - "empty result", |
412 |
| - func() bool { return false }, |
413 |
| - func() (string, error) { return "pid", nil }, |
414 |
| - func() (string, error) { return "npid", nil }, |
415 |
| - func() (string, error) { return "us-west1-ir", nil }, |
416 |
| - func() (string, error) { return "cluster", nil }, |
417 |
| - func() (string, error) { return "instanceName", nil }, |
418 |
| - func() (string, error) { return "instance", nil }, |
419 |
| - func() (string, error) { return "instanceTemplate", nil }, |
420 |
| - func() (string, error) { return "createdBy", nil }, |
421 |
| - map[string]string{}, |
422 |
| - map[string]string{}, |
| 385 | + "fill by env variable without compute metadata", |
| 386 | + func(context.Context) (string, error) { return "", errors.New("error") }, |
| 387 | + map[string]string{ |
| 388 | + GCPZone: "us-central2-ir", |
| 389 | + }, |
| 390 | + map[string]string{"Zone": "us-central2-ir", "Region": "us-central2"}, |
423 | 391 | },
|
424 | 392 | {
|
425 |
| - "unable to reach compute metadata", |
426 |
| - func() bool { return true }, |
427 |
| - func() (string, error) { return "", errors.New("error") }, |
428 |
| - func() (string, error) { return "", errors.New("error") }, |
429 |
| - func() (string, error) { return "", errors.New("error") }, |
430 |
| - func() (string, error) { return "cluster", nil }, |
431 |
| - func() (string, error) { return "instanceName", nil }, |
432 |
| - func() (string, error) { return "instance", nil }, |
433 |
| - func() (string, error) { return "instanceTemplate", nil }, |
434 |
| - func() (string, error) { return "createdBy", nil }, |
| 393 | + "no env variable and unable to reach compute metadata", |
| 394 | + func(context.Context) (string, error) { return "", errors.New("error") }, |
435 | 395 | map[string]string{},
|
436 | 396 | map[string]string{},
|
437 | 397 | },
|
438 | 398 | }
|
439 | 399 | for _, tt := range tests {
|
440 | 400 | t.Run(tt.name, func(t *testing.T) {
|
441 | 401 | test.SetForTest(t, &GCPStaticMetadata, tt.env)
|
442 |
| - shouldFillMetadata, projectIDFn, numericProjectIDFn, clusterLocationFn, clusterNameFn, |
443 |
| - instanceNameFn, instanceIDFn, instanceTemplateFn, createdByFn = tt.shouldFill, tt.projectIDFn, |
444 |
| - tt.numericProjectIDFn, tt.locationFn, tt.clusterNameFn, tt.instanceNameFn, tt.instanceIDFn, tt.instanceTemplateFn, tt.instanceCreatedByFn |
445 |
| - |
| 402 | + zoneFn = tt.zoneFn |
446 | 403 | e := NewGCP()
|
447 | 404 | got := e.Locality()
|
448 | 405 | assert.Equal(t, got.Zone, tt.want["Zone"])
|
449 | 406 | assert.Equal(t, got.Region, tt.want["Region"])
|
450 | 407 | })
|
451 | 408 | }
|
452 | 409 | }
|
| 410 | + |
| 411 | +func TestZoneToRegion(t *testing.T) { |
| 412 | + tests := []struct { |
| 413 | + zone string |
| 414 | + wantRegion string |
| 415 | + wantErr bool |
| 416 | + }{ |
| 417 | + { |
| 418 | + zone: "us-central1-f", |
| 419 | + wantRegion: "us-central1", |
| 420 | + }, |
| 421 | + { |
| 422 | + zone: "us-central1", |
| 423 | + wantErr: true, |
| 424 | + }, |
| 425 | + { |
| 426 | + zone: "abcd", |
| 427 | + wantErr: true, |
| 428 | + }, |
| 429 | + } |
| 430 | + |
| 431 | + for _, tc := range tests { |
| 432 | + t.Run(tc.zone, func(t *testing.T) { |
| 433 | + got, err := zoneToRegion(tc.zone) |
| 434 | + if tc.wantErr { |
| 435 | + if err == nil { |
| 436 | + t.Errorf("expected error was not raised") |
| 437 | + } |
| 438 | + } else { |
| 439 | + if err != nil { |
| 440 | + t.Fatalf("unexpected error was raised") |
| 441 | + } |
| 442 | + if got != tc.wantRegion { |
| 443 | + t.Errorf("unexpected region was returned. (got: %v, want: %v)", got, tc.wantRegion) |
| 444 | + } |
| 445 | + } |
| 446 | + }) |
| 447 | + } |
| 448 | +} |
0 commit comments