blob: 6069227c469a4d5c2035901ebc6e51277da2627a [file] [log] [blame]
// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package discovery_test
import (
"testing"
"v.io/v23"
"v.io/v23/discovery"
"v.io/v23/naming"
idiscovery "v.io/x/ref/lib/discovery"
fdiscovery "v.io/x/ref/lib/discovery/factory"
"v.io/x/ref/lib/discovery/plugins/mock"
"v.io/x/ref/lib/discovery/testutil"
_ "v.io/x/ref/runtime/factories/generic"
"v.io/x/ref/test"
)
func withNewAddresses(ad *discovery.Advertisement, eps []naming.Endpoint, suffix string) discovery.Advertisement {
newAd := *ad
newAd.Addresses = make([]string, len(eps))
for i, ep := range eps {
newAd.Addresses[i] = naming.JoinAddressName(ep.Name(), suffix)
}
return newAd
}
func TestAdvertiseServer(t *testing.T) {
ctx, shutdown := test.V23Init()
defer shutdown()
df, _ := idiscovery.NewFactory(ctx, mock.New())
fdiscovery.InjectFactory(df)
const suffix = "test"
eps := testutil.ToEndpoints("addr1:123")
mockServer := testutil.NewMockServer(eps)
ad := discovery.Advertisement{
InterfaceName: "v.io/v23/a",
Attributes: map[string]string{"a1": "v1"},
}
_, err := idiscovery.AdvertiseServer(ctx, nil, mockServer, suffix, &ad, nil)
if err != nil {
t.Fatal(err)
}
d, _ := v23.NewDiscovery(ctx)
newAd := withNewAddresses(&ad, eps, suffix)
if err := testutil.ScanAndMatch(ctx, d, "", newAd); err != nil {
t.Error(err)
}
tests := [][]naming.Endpoint{
testutil.ToEndpoints("addr2:123", "addr3:456"),
testutil.ToEndpoints("addr4:123"),
testutil.ToEndpoints("addr5:123", "addr6:456"),
}
for _, eps := range tests {
mockServer.UpdateNetwork(eps)
newAd = withNewAddresses(&ad, eps, suffix)
if err := testutil.ScanAndMatch(ctx, d, "", newAd); err != nil {
t.Error(err)
}
}
}