| // 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. |
| |
| var test = require('prova'); |
| var vanadium = require('../../'); |
| var serve = require('./serve'); |
| |
| function dispatcher(suffix) { |
| return { |
| service: function(ctx, serverCall) { |
| throw new Error('NotImplemented'); |
| }, |
| authorizer: function(ctx, call) { |
| return null; |
| } |
| }; |
| } |
| |
| test('Test IsLeaf=True Server Option', function(t) { |
| var serverOption = vanadium.rpc.serverOption({ |
| isLeaf: true |
| }); |
| var name = 'testing/serverOption/isLeafTrue'; |
| |
| var servObj = { |
| name: name, |
| dispatcher: dispatcher, |
| serverOption: serverOption |
| }; |
| |
| serve(servObj, function(err, res) { |
| t.error(err); |
| |
| var rt = res.runtime; |
| var ns = rt.getNamespace(); |
| var stream = ns.glob(rt.getContext(), name).stream; |
| stream.on('data', function(mp) { |
| t.error(err); |
| |
| t.equal(mp.isLeaf, true, 'Glob must indicate server is a leaf'); |
| t.equal(mp.servesMountTable, false, |
| 'Glob must indicate server is not a mounttable'); |
| res.end(t); |
| }); |
| }); |
| }); |
| |
| test('Test IsLeaf=False Server Option', function(t) { |
| var serverOption = vanadium.rpc.serverOption({ |
| isLeaf: false |
| }); |
| var name = 'testing/serverOption/isLeafFalse'; |
| |
| var servObj = { |
| name: name, |
| dispatcher: dispatcher, |
| serverOption: serverOption |
| }; |
| |
| serve(servObj, function(err, res) { |
| t.error(err); |
| |
| var rt = res.runtime; |
| var ns = rt.getNamespace(); |
| var stream = ns.glob(rt.getContext(), name).stream; |
| stream.on('data', function(mp) { |
| t.error(err); |
| |
| t.equal(mp.isLeaf, false, 'Glob must indicate server is not a leaf'); |
| t.equal(mp.servesMountTable, false, |
| 'Glob must indicate server is not a mounttable'); |
| res.end(t); |
| }); |
| }); |
| }); |
| |
| test('Test ServesMountTable=True Server Option', function(t) { |
| var serverOption = vanadium.rpc.serverOption({ |
| servesMountTable: true |
| }); |
| var name = 'testing/serverOption/ServesMountTableTrue'; |
| |
| var servObj = { |
| name: name, |
| dispatcher: dispatcher, |
| serverOption: serverOption |
| }; |
| |
| serve(servObj, function(err, res) { |
| t.error(err); |
| |
| var rt = res.runtime; |
| var ns = rt.getNamespace(); |
| var stream = ns.glob(rt.getContext(), name).stream; |
| stream.on('data', function(mp) { |
| t.error(err); |
| |
| t.equal(mp.isLeaf, false, 'Glob must indicate server is not a leaf'); |
| t.equal(mp.servesMountTable, true, |
| 'Glob must indicate server is a mounttable'); |
| res.end(t); |
| }); |
| }); |
| }); |
| |
| test('Test ServesMountTable=false server option', function(t) { |
| var serverOption = vanadium.rpc.serverOption({ |
| servesMountTable: false |
| }); |
| var name = 'testing/serverOption/ServesMountTableFalse'; |
| |
| var servObj = { |
| name: name, |
| dispatcher: dispatcher, |
| serverOption: serverOption |
| }; |
| |
| serve(servObj, function(err, res) { |
| t.error(err); |
| |
| var rt = res.runtime; |
| var ns = rt.getNamespace(); |
| var stream = ns.glob(rt.getContext(), name).stream; |
| stream.on('data', function(mp) { |
| t.error(err); |
| |
| t.equal(mp.isLeaf, false, 'Glob must indicate server is not a leaf'); |
| t.equal(mp.servesMountTable, false, |
| 'Glob must indicate server is not a mounttable'); |
| res.end(t); |
| }); |
| }); |
| }); |
| |
| test('Test ServesMountTable=ture and IsLeaf=true server option', |
| function(t) { |
| var serverOption = vanadium.rpc.serverOption({ |
| servesMountTable: true, |
| isLeaf: true |
| }); |
| var name = 'testing/serverOption/Both'; |
| |
| var servObj = { |
| name: name, |
| dispatcher: dispatcher, |
| serverOption: serverOption |
| }; |
| |
| serve(servObj, function(err, res) { |
| t.error(err); |
| |
| var rt = res.runtime; |
| var ns = rt.getNamespace(); |
| var stream = ns.glob(rt.getContext(), name).stream; |
| stream.on('data', function(mp) { |
| t.error(err); |
| |
| t.equal(mp.isLeaf, true, 'Glob must indicate server is a leaf'); |
| t.equal(mp.servesMountTable, true, |
| 'Glob must indicate server is a mounttable'); |
| res.end(t); |
| }); |
| }); |
| }); |