blob: 13ab9532f759982ea7ca630d0d9a453ab8ebe7b3 [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 transition
import (
"testing"
"v.io/v23"
"v.io/v23/context"
"v.io/v23/naming"
"v.io/v23/rpc"
_ "v.io/x/ref/runtime/factories/generic"
irpc "v.io/x/ref/runtime/internal/rpc"
"v.io/x/ref/runtime/internal/rpc/stream/manager"
"v.io/x/ref/test"
"v.io/x/ref/test/testutil"
)
type example struct{}
func (e *example) Echo(ctx *context.T, call rpc.ServerCall, arg string) (string, error) {
return arg, nil
}
func TestTransitionToNew(t *testing.T) {
// TODO(mattr): Make a test showing the transition client
// connecting to a new server once the new server is available.
}
func TestTransitionToOld(t *testing.T) {
ctx, shutdown := test.V23Init()
defer shutdown()
sm := manager.InternalNew(ctx, naming.FixedRoutingID(0x555555555))
defer sm.Shutdown()
sp := testutil.NewPrincipal()
testutil.IDProviderFromPrincipal(v23.GetPrincipal(ctx)).Bless(sp, "server")
server, err := irpc.DeprecatedNewServer(ctx, sm, v23.GetNamespace(ctx),
nil, "", v23.GetClient(ctx))
if err != nil {
t.Fatal(err)
}
if _, err = server.Listen(v23.GetListenSpec(ctx)); err != nil {
t.Fatal(err)
}
if err = server.Serve("echo", &example{}, nil); err != nil {
t.Fatal(err)
}
var result string
err = v23.GetClient(ctx).Call(ctx, "echo", "Echo",
[]interface{}{"hello"}, []interface{}{&result})
if err != nil {
t.Fatal(err)
}
if result != "hello" {
t.Errorf("got %s, wanted hello", result)
}
}