1 #!/usr/bin/env smbscript
3 test echo pipe calls from ejs
9 generate a ramp as an integer array
11 function ramp_array(N)
22 test the echo_AddOne interface
24 function test_AddOne(conn)
28 print("Testing echo_AddOne\n");
32 status = dcerpc_echo_AddOne(conn, io);
33 check_status_ok(status);
34 assert(io.output.out_data == i + 1);
39 test the echo_EchoData interface
41 function test_EchoData(conn)
45 print("Testing echo_EchoData\n");
47 for (i=0; i<30; i=i+5) {
49 io.input.in_data = ramp_array(i);
50 status = dcerpc_echo_EchoData(conn, io);
51 check_status_ok(status);
52 check_array_equal(io.input.in_data, io.output.out_data);
58 test the echo_SinkData interface
60 function test_SinkData(conn)
64 print("Testing echo_SinkData\n");
66 for (i=0; i<30; i=i+5) {
68 io.input.data = ramp_array(i);
69 status = dcerpc_echo_SinkData(conn, io);
70 check_status_ok(status);
76 test the echo_SourceData interface
78 function test_SourceData(conn)
82 print("Testing echo_SourceData\n");
84 for (i=0; i<30; i=i+5) {
86 status = dcerpc_echo_SourceData(conn, io);
87 check_status_ok(status);
88 correct = ramp_array(i);
89 check_array_equal(correct, io.output.data);
95 test the echo_TestCall interface
97 function test_TestCall(conn)
101 print("Testing echo_TestCall\n");
103 io.input.s1 = "my test string";
104 status = dcerpc_echo_TestCall(conn, io);
105 check_status_ok(status);
106 assert("this is a test string" == io.output.s2);
110 test the echo_TestCall2 interface
112 function test_TestCall2(conn)
116 print("Testing echo_TestCall2\n");
120 status = dcerpc_echo_TestCall2(conn, io);
121 check_status_ok(status);
126 test the echo_TestSleep interface
128 function test_TestSleep(conn)
132 print("Testing echo_TestSleep\n");
134 io.input.seconds = 1;
135 status = dcerpc_echo_TestSleep(conn, io);
136 check_status_ok(status);
140 test the echo_TestEnum interface
142 function test_TestEnum(conn)
146 print("Testing echo_TestEnum\n");
148 io.input.foo1 = ECHO_ENUM1;
149 io.input.foo2 = new Object();
150 io.input.foo2.e1 = ECHO_ENUM1;
151 io.input.foo2.e2 = ECHO_ENUM1_32;
152 io.input.foo3 = new Object();
153 io.input.foo3.e1 = ECHO_ENUM2;
154 status = dcerpc_echo_TestEnum(conn, io);
155 check_status_ok(status);
156 assert(io.output.foo1 == ECHO_ENUM1);
157 assert(io.output.foo2.e1 == ECHO_ENUM2);
158 assert(io.output.foo2.e2 == ECHO_ENUM1_32);
159 assert(io.output.foo3.e1 == ECHO_ENUM2);
163 test the echo_TestSurrounding interface
165 function test_TestSurrounding(conn)
169 print("Testing echo_TestSurrounding\n");
171 io.input.data = new Object();
172 io.input.data.x = 10;
173 io.input.data.surrounding = ramp_array(10);
174 status = dcerpc_echo_TestSurrounding(conn, io);
175 check_status_ok(status);
176 assert(io.output.data.surrounding.length == 20);
177 check_array_zero(io.output.data.surrounding);
181 test the echo_TestDoublePointer interface
183 function test_TestDoublePointer(conn)
187 print("Testing echo_TestDoublePointer\n");
190 status = dcerpc_echo_TestDoublePointer(conn, io);
191 check_status_ok(status);
192 assert(io.input.data == io.input.data);
196 if (ARGV.length == 0) {
197 print("Usage: echo.js <RPCBINDING>\n");
201 var binding = ARGV[0];
202 var conn = new Object();
204 print("Connecting to " + binding + "\n");
205 status = rpc_connect(conn, binding, "rpcecho");
206 if (status.is_ok != true) {
207 print("Failed to connect to " + binding + " - " + status.errstr + "\n");
214 test_SourceData(conn);
216 test_TestCall2(conn);
217 test_TestSleep(conn);
219 test_TestSurrounding(conn);
220 test_TestDoublePointer(conn);