blob: ef648eca5eb36a917555f8c110ca01d8e25af851 [file] [log] [blame]
# Simple example showing multiple mount tables, servers and globing
set localaddr="--veyron.tcp.address=127.0.0.1:0"
set ws=--veyron.tcp.protocol=ws
root -- $localaddr
set m=$_
read $m
eval $m
set root=$MT_NAME
set NAMESPACE_ROOT=$root
mt -- $localaddr $ws $localaddr usa
set m=$_
read $m
eval $m
set usa_mt=$MT_NAME
mt -- $localaddr $ws $localaddr uk
set m=$_
read $m
eval $m
set uk_mt=$MT_NAME
ls $root/...
set l=$_
eval $l
assert $RN 3
wait $l
set NAMESPACE_ROOT=$usa_mt
mt -- $localaddr $ws $localaddr "palo alto"
set m=$_
read $m
eval $m
set pa_mt=$MT_NAME
set NAMESPACE_ROOT=$uk_mt
mt -- $localaddr $ws $localaddr "cambridge"
set m=$_
read $m
eval $m
set cam_mt=$MT_NAME
ls $root/...
set l=$_
eval $l
assert $RN 7
wait $l
ls -- -l $root/...
wait $_
resolve $root/usa
set r=$_
eval $r
# We get two endpoints back, in arbitrary order
# one of which is 'ws', the other 'tcp'
assert $RN 2
eval $r
set ep1=$R0
eval $r
set ep2=$R1
assertOneOf $usa_mt $ep1 $ep2
wait $r
resolve "$root/usa/palo alto"
set r=$_
assert $RN 2
eval $r
# this resolves to the mount table hosting palo alto, not the mount table
# that would host any objects mounted on .../palo alto/...
# but the uk/cambridge example below seems to behave the opposite way?
eval $r
set ep1=$R0
eval $r
set ep2=$R1
assertOneOf $pa_mt $ep1 $ep2
wait $r
resolve $root/uk
set r=$_
eval $r
assert $RN 2
eval $r
set ep1=$R0
eval $r
set ep2=$R1
assertOneOf $uk_mt $ep1 $ep2
wait $r
resolve "$root/uk/cambridge"
set r=$_
eval $r
assert $RN 2
eval $r
set ep1=$R0
eval $r
set ep2=$R1
# this behaves differently to the usa/palo alto case?
assertOneOf $cam_mt $ep1 $ep2
wait $r