@@ -239,6 +239,9 @@ func (c *Config) compare(want *Config) error {
239
239
if diff := cmp .Diff (want .NodeProto , c .NodeProto , cmp .Comparer (proto .Equal )); diff != "" {
240
240
return fmt .Errorf ("config.NodeProto diff (-want, +got):\n %s" , diff )
241
241
}
242
+ if c .ServerResourceNameID != want .ServerResourceNameID {
243
+ return fmt .Errorf ("config.ServerResourceNameID is %q, want %q" , c .ServerResourceNameID , want .ServerResourceNameID )
244
+ }
242
245
243
246
// A vanilla cmp.Equal or cmp.Diff will not produce useful error message
244
247
// here. So, we iterate through the list of configs and compare them one at
@@ -699,3 +702,81 @@ func TestNewConfigWithCertificateProviders(t *testing.T) {
699
702
})
700
703
}
701
704
}
705
+
706
+ func TestNewConfigWithServerResourceNameID (t * testing.T ) {
707
+ cancel := setupBootstrapOverride (map [string ]string {
708
+ "badServerResourceNameID" : `
709
+ {
710
+ "node": {
711
+ "id": "ENVOY_NODE_ID",
712
+ "metadata": {
713
+ "TRAFFICDIRECTOR_GRPC_HOSTNAME": "trafficdirector"
714
+ }
715
+ },
716
+ "xds_servers" : [{
717
+ "server_uri": "trafficdirector.googleapis.com:443",
718
+ "channel_creds": [
719
+ { "type": "google_default" }
720
+ ]
721
+ }],
722
+ "grpc_server_resource_name_id": 123456789
723
+ }` ,
724
+ "goodServerResourceNameID" : `
725
+ {
726
+ "node": {
727
+ "id": "ENVOY_NODE_ID",
728
+ "metadata": {
729
+ "TRAFFICDIRECTOR_GRPC_HOSTNAME": "trafficdirector"
730
+ }
731
+ },
732
+ "xds_servers" : [{
733
+ "server_uri": "trafficdirector.googleapis.com:443",
734
+ "channel_creds": [
735
+ { "type": "google_default" }
736
+ ]
737
+ }],
738
+ "grpc_server_resource_name_id": "grpc/server"
739
+ }` ,
740
+ })
741
+ defer cancel ()
742
+
743
+ tests := []struct {
744
+ name string
745
+ wantConfig * Config
746
+ wantErr bool
747
+ }{
748
+ {
749
+ name : "badServerResourceNameID" ,
750
+ wantErr : true ,
751
+ },
752
+ {
753
+ name : "goodServerResourceNameID" ,
754
+ wantConfig : & Config {
755
+ BalancerName : "trafficdirector.googleapis.com:443" ,
756
+ Creds : grpc .WithCredentialsBundle (google .NewComputeEngineCredentials ()),
757
+ TransportAPI : version .TransportV2 ,
758
+ NodeProto : v2NodeProto ,
759
+ ServerResourceNameID : "grpc/server" ,
760
+ },
761
+ },
762
+ }
763
+
764
+ for _ , test := range tests {
765
+ t .Run (test .name , func (t * testing.T ) {
766
+ origBootstrapFileName := env .BootstrapFileName
767
+ env .BootstrapFileName = test .name
768
+ defer func () { env .BootstrapFileName = origBootstrapFileName }()
769
+
770
+ c , err := NewConfig ()
771
+ if (err != nil ) != test .wantErr {
772
+ t .Fatalf ("NewConfig() returned (%+v, %v), wantErr: %v" , c , err , test .wantErr )
773
+ }
774
+ if test .wantErr {
775
+ return
776
+ }
777
+ if err := c .compare (test .wantConfig ); err != nil {
778
+ t .Fatal (err )
779
+ }
780
+ })
781
+ }
782
+ }
0 commit comments