mirror of
https://github.com/samba-team/samba.git
synced 2024-12-25 23:21:54 +03:00
f6d2892faa
calls. This changes the generated RPC and IRPC calls to use the 'this'
object pointer instead of requiring the passing of the object on each
call. So typical usage is now:
var echo = echo_init();
var io = irpcObj();
status = echo.connect("ncacn_np:server");
assert(status.is_ok);
io.input.in_data = 7;
status = echo.AddOne(io);
assert(status.is_ok);
(This used to be commit f7b49ecd08
)
234 lines
4.2 KiB
JavaScript
Executable File
234 lines
4.2 KiB
JavaScript
Executable File
#!/usr/bin/env smbscript
|
|
/*
|
|
test echo pipe calls from ejs
|
|
*/
|
|
|
|
var options = new Object();
|
|
|
|
ok = GetOptions(ARGV, options,
|
|
"POPT_AUTOHELP",
|
|
"POPT_COMMON_SAMBA",
|
|
"POPT_COMMON_CREDENTIALS");
|
|
if (ok == false) {
|
|
println("Failed to parse options: " + options.ERROR);
|
|
return -1;
|
|
}
|
|
|
|
libinclude("base.js");
|
|
|
|
/*
|
|
generate a ramp as an integer array
|
|
*/
|
|
function ramp_array(N)
|
|
{
|
|
var a = new Array(N);
|
|
for (i=0;i<N;i++) {
|
|
a[i] = i;
|
|
}
|
|
return a;
|
|
}
|
|
|
|
|
|
/*
|
|
test the echo_AddOne interface
|
|
*/
|
|
function test_AddOne(echo)
|
|
{
|
|
var io = irpcObj();
|
|
|
|
print("Testing echo_AddOne\n");
|
|
|
|
for (i=0;i<10;i++) {
|
|
io.input.in_data = i;
|
|
status = echo.echo_AddOne(io);
|
|
check_status_ok(status);
|
|
assert(io.output.out_data == i + 1);
|
|
}
|
|
}
|
|
|
|
/*
|
|
test the echo_EchoData interface
|
|
*/
|
|
function test_EchoData(echo)
|
|
{
|
|
var io = irpcObj();
|
|
|
|
print("Testing echo_EchoData\n");
|
|
|
|
for (i=0; i<30; i=i+5) {
|
|
io.input.len = i;
|
|
io.input.in_data = ramp_array(i);
|
|
status = echo.echo_EchoData(io);
|
|
check_status_ok(status);
|
|
check_array_equal(io.input.in_data, io.output.out_data);
|
|
}
|
|
}
|
|
|
|
|
|
/*
|
|
test the echo_SinkData interface
|
|
*/
|
|
function test_SinkData(echo)
|
|
{
|
|
var io = irpcObj();
|
|
|
|
print("Testing echo_SinkData\n");
|
|
|
|
for (i=0; i<30; i=i+5) {
|
|
io.input.len = i;
|
|
io.input.data = ramp_array(i);
|
|
status = echo.echo_SinkData(io);
|
|
check_status_ok(status);
|
|
}
|
|
}
|
|
|
|
|
|
/*
|
|
test the echo_SourceData interface
|
|
*/
|
|
function test_SourceData(echo)
|
|
{
|
|
var io = irpcObj();
|
|
|
|
print("Testing echo_SourceData\n");
|
|
|
|
for (i=0; i<30; i=i+5) {
|
|
io.input.len = i;
|
|
status = echo.echo_SourceData(io);
|
|
check_status_ok(status);
|
|
correct = ramp_array(i);
|
|
check_array_equal(correct, io.output.data);
|
|
}
|
|
}
|
|
|
|
|
|
/*
|
|
test the echo_TestCall interface
|
|
*/
|
|
function test_TestCall(echo)
|
|
{
|
|
var io = irpcObj();
|
|
|
|
print("Testing echo_TestCall\n");
|
|
|
|
io.input.s1 = "my test string";
|
|
status = echo.echo_TestCall(io);
|
|
check_status_ok(status);
|
|
assert("this is a test string" == io.output.s2);
|
|
}
|
|
|
|
/*
|
|
test the echo_TestCall2 interface
|
|
*/
|
|
function test_TestCall2(echo)
|
|
{
|
|
var io = irpcObj();
|
|
|
|
print("Testing echo_TestCall2\n");
|
|
|
|
for (i=1;i<=7;i++) {
|
|
io.input.level = i;
|
|
status = echo.echo_TestCall2(io);
|
|
check_status_ok(status);
|
|
}
|
|
}
|
|
|
|
/*
|
|
test the echo_TestSleep interface
|
|
*/
|
|
function test_TestSleep(echo)
|
|
{
|
|
var io = irpcObj();
|
|
|
|
print("Testing echo_TestSleep\n");
|
|
|
|
io.input.seconds = 1;
|
|
status = echo.echo_TestSleep(io);
|
|
check_status_ok(status);
|
|
}
|
|
|
|
/*
|
|
test the echo_TestEnum interface
|
|
*/
|
|
function test_TestEnum(echo)
|
|
{
|
|
var io = irpcObj();
|
|
|
|
print("Testing echo_TestEnum\n");
|
|
|
|
io.input.foo1 = echo.ECHO_ENUM1;
|
|
io.input.foo2 = new Object();
|
|
io.input.foo2.e1 = echo.ECHO_ENUM1;
|
|
io.input.foo2.e2 = echo.ECHO_ENUM1_32;
|
|
io.input.foo3 = new Object();
|
|
io.input.foo3.e1 = echo.ECHO_ENUM2;
|
|
status = echo.echo_TestEnum(io);
|
|
check_status_ok(status);
|
|
assert(io.output.foo1 == echo.ECHO_ENUM1);
|
|
assert(io.output.foo2.e1 == echo.ECHO_ENUM2);
|
|
assert(io.output.foo2.e2 == echo.ECHO_ENUM1_32);
|
|
assert(io.output.foo3.e1 == echo.ECHO_ENUM2);
|
|
}
|
|
|
|
/*
|
|
test the echo_TestSurrounding interface
|
|
*/
|
|
function test_TestSurrounding(echo)
|
|
{
|
|
var io = irpcObj();
|
|
|
|
print("Testing echo_TestSurrounding\n");
|
|
|
|
io.input.data = new Object();
|
|
io.input.data.x = 10;
|
|
io.input.data.surrounding = ramp_array(10);
|
|
status = echo.echo_TestSurrounding(io);
|
|
check_status_ok(status);
|
|
assert(io.output.data.surrounding.length == 20);
|
|
check_array_zero(io.output.data.surrounding);
|
|
}
|
|
|
|
/*
|
|
test the echo_TestDoublePointer interface
|
|
*/
|
|
function test_TestDoublePointer(echo)
|
|
{
|
|
var io = irpcObj();
|
|
|
|
print("Testing echo_TestDoublePointer\n");
|
|
|
|
io.input.data = 7;
|
|
status = echo.echo_TestDoublePointer(io);
|
|
check_status_ok(status);
|
|
assert(io.input.data == io.input.data);
|
|
}
|
|
|
|
|
|
if (options.ARGV.length != 1) {
|
|
println("Usage: echo.js <BINDING>");
|
|
return -1;
|
|
}
|
|
var binding = options.ARGV[0];
|
|
var echo = rpcecho_init();
|
|
|
|
print("Connecting to " + binding + "\n");
|
|
status = echo.connect(binding);
|
|
if (status.is_ok != true) {
|
|
printf("Failed to connect to %s - %s\n", binding, status.errstr);
|
|
return;
|
|
}
|
|
|
|
test_AddOne(echo);
|
|
test_EchoData(echo);
|
|
test_SinkData(echo);
|
|
test_SourceData(echo);
|
|
test_TestCall(echo);
|
|
test_TestCall2(echo);
|
|
test_TestSleep(echo);
|
|
test_TestEnum(echo);
|
|
test_TestSurrounding(echo);
|
|
test_TestDoublePointer(echo);
|
|
|
|
print("All OK\n");
|
|
return 0;
|