summaryrefslogtreecommitdiff
path: root/lib/erl_interface/test/ei_tmo_SUITE_data
diff options
context:
space:
mode:
Diffstat (limited to 'lib/erl_interface/test/ei_tmo_SUITE_data')
-rw-r--r--lib/erl_interface/test/ei_tmo_SUITE_data/Makefile.src3
-rw-r--r--lib/erl_interface/test/ei_tmo_SUITE_data/ei_tmo_test.c172
2 files changed, 124 insertions, 51 deletions
diff --git a/lib/erl_interface/test/ei_tmo_SUITE_data/Makefile.src b/lib/erl_interface/test/ei_tmo_SUITE_data/Makefile.src
index b4ee361939..378e276524 100644
--- a/lib/erl_interface/test/ei_tmo_SUITE_data/Makefile.src
+++ b/lib/erl_interface/test/ei_tmo_SUITE_data/Makefile.src
@@ -25,7 +25,8 @@ CC = ..@DS@all_SUITE_data@DS@gccifier@exe@ -CC"$(CC0)"
LD = @LD@
LIBEI = @erl_interface_eilib@
LIBFLAGS = ../all_SUITE_data/ei_runner@obj@ \
- $(LIBEI) @LIBS@ @erl_interface_sock_libs@ \
+ ../all_SUITE_data/my_ussi@obj@ \
+ $(LIBEI) @LIBS@ @erl_interface_sock_libs@ \
@erl_interface_threadlib@
CFLAGS = @EI_CFLAGS@ $(THR_DEFS) -I@erl_interface_include@ -I../all_SUITE_data
EI_TMO_OBJS = ei_tmo_test@obj@ ei_tmo_test_decl@obj@
diff --git a/lib/erl_interface/test/ei_tmo_SUITE_data/ei_tmo_test.c b/lib/erl_interface/test/ei_tmo_SUITE_data/ei_tmo_test.c
index 693e405f75..3c20e94c02 100644
--- a/lib/erl_interface/test/ei_tmo_SUITE_data/ei_tmo_test.c
+++ b/lib/erl_interface/test/ei_tmo_SUITE_data/ei_tmo_test.c
@@ -21,9 +21,6 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#ifdef VXWORKS
-#include "reclaim.h"
-#endif
#ifdef __WIN32__
#include <winsock2.h>
@@ -35,6 +32,7 @@
#endif
#include "ei_runner.h"
+#include "my_ussi.h"
#ifndef __WIN32__
#define closesocket(X) close(X)
@@ -67,7 +65,7 @@ static void debugf_open(int number)
{
char filename[1024];
sprintf(filename,"ei_tmo_test%d.debug",number);
-#if !defined(VXWORKS) && !defined(__WIN32__)
+#if !defined(__WIN32__)
close(2);
#endif
debugfile = fopen(filename,"a");
@@ -86,6 +84,7 @@ static void debugf_close(void)
#define DEBUGF(X) /* noop */
#endif
+
TESTCASE(framework_check)
{
char *ptr = NULL;
@@ -128,19 +127,26 @@ TESTCASE(framework_check)
report(1);
}
-int decode_request(char **nodename_p, char **cookie_p, char **peername_p)
+int decode_request(char **nodename_p, char **cookie_p, char **peername_p,
+ int *use_ussi_p)
{
char *nodename = NULL;
char *cookie = NULL;
char *peername = NULL;
+ char socket_impl[10];
char *ptr = NULL;
ei_x_buff x;
int len;
int version;
int type;
int size;
- int expected_size = (peername_p == NULL) ? 2 : 3;
+ int expected_size = 2;
int ret = -1;
+
+ if (peername_p)
+ ++expected_size;
+ if (use_ussi_p)
+ ++expected_size;
ptr = read_packet(&len);
ei_x_new(&x);
@@ -180,7 +186,6 @@ int decode_request(char **nodename_p, char **cookie_p, char **peername_p)
}
nodename = malloc(size+1);
ei_decode_atom(x.buff,&len,nodename);
- nodename[size] = '\0'; /* needed????? */
if (ei_get_type(x.buff,&len,&type,&size) != 0) {
DEBUGF(("Failure at line %d\n",__LINE__));
goto cleanup;
@@ -191,8 +196,7 @@ int decode_request(char **nodename_p, char **cookie_p, char **peername_p)
}
cookie = malloc(size + 1);
ei_decode_atom(x.buff,&len,cookie);
- cookie[size] = '\0'; /* needed????? */
- if (expected_size > 2) {
+ if (peername_p) {
if (ei_get_type(x.buff,&len,&type,&size) != 0) {
DEBUGF(("Failure at line %d\n",__LINE__));
goto cleanup;
@@ -212,6 +216,22 @@ int decode_request(char **nodename_p, char **cookie_p, char **peername_p)
DEBUGF(("nodename = %s, cookie = %s\n",
nodename, cookie));
}
+
+ if (use_ussi_p) {
+ if (ei_decode_atom_as(x.buff,&len,socket_impl,sizeof(socket_impl),
+ ERLANG_ASCII, NULL, NULL)) {
+ DEBUGF(("Failure at line %d\n",__LINE__));
+ goto cleanup;
+ }
+ if (strcmp(socket_impl,"default") == 0)
+ *use_ussi_p = 0;
+ else if (strcmp(socket_impl,"ussi") == 0)
+ *use_ussi_p = 1;
+ else {
+ DEBUGF(("Unkown socket_impl '%s' at %d\n",socket_impl,__LINE__));
+ goto cleanup;
+ }
+ }
*nodename_p = nodename;
nodename = NULL;
*cookie_p = cookie;
@@ -339,6 +359,7 @@ TESTCASE(recv_tmo)
char *nodename = NULL;
char *cookie = NULL;
char *peername = NULL;
+ int use_ussi;
int com_sock = -1;
ei_cnode nodeinfo;
@@ -346,12 +367,22 @@ TESTCASE(recv_tmo)
OPEN_DEBUGFILE(5);
- if (decode_request(&nodename,&cookie,&peername) != 0) {
+ if (decode_request(&nodename,&cookie,&peername,&use_ussi) != 0) {
goto cleanup;
}
- if (ei_connect_init(&nodeinfo, nodename, cookie, 0) < 0) {
- DEBUGF(("Failure at line %d\n",__LINE__));
- goto cleanup;
+ if (use_ussi) {
+ my_ussi_init();
+ if (ei_connect_init_ussi(&nodeinfo, nodename, cookie, 0,
+ &my_ussi, sizeof(my_ussi), NULL) < 0) {
+ DEBUGF(("Failure at line %d\n",__LINE__));
+ goto cleanup;
+ }
+ }
+ else {
+ if (ei_connect_init(&nodeinfo, nodename, cookie, 0) < 0) {
+ DEBUGF(("Failure at line %d\n",__LINE__));
+ goto cleanup;
+ }
}
if ((com_sock = ei_connect_tmo(&nodeinfo, peername, 5000)) < 0) {
@@ -451,18 +482,29 @@ TESTCASE(send_tmo)
char *cookie = NULL;
char *peername = NULL;
int com_sock = -1;
+ int use_ussi;
ei_cnode nodeinfo;
ei_init();
OPEN_DEBUGFILE(4);
- if (decode_request(&nodename,&cookie,&peername) != 0) {
+ if (decode_request(&nodename,&cookie,&peername,&use_ussi) != 0) {
goto cleanup;
}
- if (ei_connect_init(&nodeinfo, nodename, cookie, 0) < 0) {
- DEBUGF(("Failure at line %d\n",__LINE__));
- goto cleanup;
+ if (use_ussi) {
+ my_ussi_init();
+ if (ei_connect_init_ussi(&nodeinfo, nodename, cookie, 0,
+ &my_ussi, sizeof(my_ussi), NULL) < 0) {
+ DEBUGF(("Failure at line %d\n",__LINE__));
+ goto cleanup;
+ }
+ }
+ else {
+ if (ei_connect_init(&nodeinfo, nodename, cookie, 0) < 0) {
+ DEBUGF(("Failure at line %d\n",__LINE__));
+ goto cleanup;
+ }
}
if ((com_sock = ei_connect_tmo(&nodeinfo, peername, 5000)) < 0) {
@@ -593,18 +635,29 @@ TESTCASE(connect_tmo)
char *cookie = NULL;
char *peername = NULL;
int com_sock = -1;
+ int use_ussi;
ei_cnode nodeinfo;
ei_init();
OPEN_DEBUGFILE(3);
- if (decode_request(&nodename,&cookie,&peername) != 0) {
+ if (decode_request(&nodename,&cookie,&peername,&use_ussi) != 0) {
goto cleanup;
}
- if (ei_connect_init(&nodeinfo, nodename, cookie, 0) < 0) {
- DEBUGF(("Failure at line %d\n",__LINE__));
- goto cleanup;
+ if (use_ussi) {
+ my_ussi_init();
+ if (ei_connect_init_ussi(&nodeinfo, nodename, cookie, 0,
+ &my_ussi, sizeof(my_ussi), NULL) < 0) {
+ DEBUGF(("Failure at line %d\n",__LINE__));
+ goto cleanup;
+ }
+ }
+ else {
+ if (ei_connect_init(&nodeinfo, nodename, cookie, 0) < 0) {
+ DEBUGF(("Failure at line %d\n",__LINE__));
+ goto cleanup;
+ }
}
if ((com_sock = ei_connect_tmo(&nodeinfo, peername, 5000)) < 0) {
@@ -679,10 +732,12 @@ TESTCASE(accept_tmo)
int listen_sock = -1;
int epmd_sock = -1;
int com_sock = -1;
+ int use_ussi;
struct sockaddr_in sin;
int sin_siz = sizeof(sin);
ErlConnect peer;
ei_cnode nodeinfo;
+ int port_no;
ei_init();
@@ -690,38 +745,55 @@ TESTCASE(accept_tmo)
putenv("EI_TRACELEVEL=10");
- if (decode_request(&nodename,&cookie,NULL) != 0) {
- goto cleanup;
- }
- if (ei_connect_init(&nodeinfo, nodename, cookie, 0) < 0) {
- DEBUGF(("Failure at line %d\n",__LINE__));
+ if (decode_request(&nodename,&cookie,NULL,&use_ussi) != 0) {
goto cleanup;
}
+ if (use_ussi) {
+ my_ussi_init();
+ if (ei_connect_init_ussi(&nodeinfo, nodename, cookie, 0,
+ &my_ussi, sizeof(my_ussi), NULL) < 0) {
+ DEBUGF(("Failure at line %d\n",__LINE__));
+ goto cleanup;
+ }
+ port_no = 0;
+ listen_sock = ei_listen(&nodeinfo, &port_no, 5);
+ if (listen_sock == ERL_ERROR) {
+ DEBUGF(("Failure at line %d\n",__LINE__));
+ goto cleanup;
+ }
+ }
+ else {
+ if (ei_connect_init(&nodeinfo, nodename, cookie, 0) < 0) {
+ DEBUGF(("Failure at line %d\n",__LINE__));
+ goto cleanup;
+ }
- if ((listen_sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
- DEBUGF(("Failure at line %d\n",__LINE__));
- goto cleanup;
- }
- memset(&sin, 0, sizeof(sin));
- sin.sin_family = AF_INET;
- sin.sin_addr.s_addr = INADDR_ANY;
-
- if (bind(listen_sock,(struct sockaddr *) &sin, sizeof(sin)) != 0) {
- DEBUGF(("Failure at line %d\n",__LINE__));
- goto cleanup;
- }
- if (getsockname(listen_sock,
- (struct sockaddr *) &sin, &sin_siz) != 0) {
- DEBUGF(("Failure at line %d\n",__LINE__));
- goto cleanup;
- }
- if (listen(listen_sock, 5) != 0) {
- DEBUGF(("Failure at line %d\n",__LINE__));
- goto cleanup;
- }
-
- if ((epmd_sock = ei_publish(&nodeinfo, ntohs(sin.sin_port))) < 0) {
- DEBUGF(("Failure at line %d[%d,%d]\n",__LINE__,sin.sin_port,erl_errno));
+ if ((listen_sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
+ DEBUGF(("Failure at line %d\n",__LINE__));
+ goto cleanup;
+ }
+ memset(&sin, 0, sizeof(sin));
+ sin.sin_family = AF_INET;
+ sin.sin_addr.s_addr = INADDR_ANY;
+
+ if (bind(listen_sock,(struct sockaddr *) &sin, sizeof(sin)) != 0) {
+ DEBUGF(("Failure at line %d\n",__LINE__));
+ goto cleanup;
+ }
+ if (getsockname(listen_sock,
+ (struct sockaddr *) &sin, &sin_siz) != 0) {
+ DEBUGF(("Failure at line %d\n",__LINE__));
+ goto cleanup;
+ }
+ if (listen(listen_sock, 5) != 0) {
+ DEBUGF(("Failure at line %d\n",__LINE__));
+ goto cleanup;
+ }
+ port_no = ntohs(sin.sin_port);
+ }
+
+ if ((epmd_sock = ei_publish(&nodeinfo, port_no)) < 0) {
+ DEBUGF(("Failure at line %d[%d,%d]\n",__LINE__,port_no,erl_errno));
goto cleanup;
}