summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Schneider <asn@cryptomilk.org>2014-04-15 21:22:05 +0200
committerFabiano FidĂȘncio <fidencio@redhat.com>2015-10-12 13:47:09 +0200
commit046c86d8d6b73c527189bdc207204d27dae041f9 (patch)
tree3df2ce760c4d94ce57b9e61bb03d6d651b69bb7b
parentdb984fde970deffdaa3e6565694d503771ae7e80 (diff)
downloadlibssh-046c86d8d6b73c527189bdc207204d27dae041f9.tar.gz
libssh-046c86d8d6b73c527189bdc207204d27dae041f9.tar.xz
libssh-046c86d8d6b73c527189bdc207204d27dae041f9.zip
torture: Add torture_setup_socket_dir().
-rw-r--r--tests/torture.c42
-rw-r--r--tests/torture.h12
2 files changed, 54 insertions, 0 deletions
diff --git a/tests/torture.c b/tests/torture.c
index ef77c2f8..d510f040 100644
--- a/tests/torture.c
+++ b/tests/torture.c
@@ -279,6 +279,10 @@ static const char torture_ed25519_testkey_pp[]=
"Y3GsmYTDstmicanQ==\n"
"-----END OPENSSH PRIVATE KEY-----\n";
+#define TORTURE_SOCKET_DIR "/tmp/test_socket_wrapper_XXXXXX"
+#define TORTURE_SSHD_PIDFILE "sshd.pid"
+#define TORTURE_PCAP_FILE "socket_trace.pcap"
+
static int verbosity = 0;
static const char *pattern = NULL;
@@ -754,6 +758,44 @@ const char *torture_server_address(int family)
return NULL;
}
+void torture_setup_socket_dir(void **state)
+{
+ struct torture_state *s;
+ const char *p;
+ size_t len;
+
+ s = malloc(sizeof(struct torture_state));
+ assert_non_null(s);
+
+ s->socket_dir = strdup(TORTURE_SOCKET_DIR);
+ assert_non_null(s->socket_dir);
+
+ p = mkdtemp(s->socket_dir);
+ assert_non_null(p);
+
+ /* pcap file */
+ len = strlen(p) + 1 + strlen(TORTURE_PCAP_FILE) + 1;
+
+ s->pcap_file = malloc(len);
+ assert_non_null(s->pcap_file);
+
+ snprintf(s->pcap_file, len, "%s/%s", p, TORTURE_PCAP_FILE);
+
+ /* pid file */
+ len = strlen(p) + 1 + strlen(TORTURE_SSHD_PIDFILE) + 1;
+
+ s->srv_pidfile = malloc(len);
+ assert_non_null(s->srv_pidfile);
+
+ snprintf(s->srv_pidfile, len, "%s/%s", p, TORTURE_SSHD_PIDFILE);
+
+ setenv("SOCKET_WRAPPER_DIR", p, 1);
+ setenv("SOCKET_WRAPPER_DEFAULT_IFACE", "170", 1);
+ setenv("SOCKET_WRAPPER_PCAP_FILE", s->pcap_file, 1);
+
+ *state = s;
+}
+
int torture_libssh_verbosity(void){
return verbosity;
}
diff --git a/tests/torture.h b/tests/torture.h
index 6b6e0cbf..f85c1513 100644
--- a/tests/torture.h
+++ b/tests/torture.h
@@ -60,6 +60,16 @@ struct torture_sftp {
char *testdir;
};
+struct torture_state {
+ char *socket_dir;
+ char *pcap_file;
+ char *srv_pidfile;
+};
+
+#ifndef ZERO_STRUCT
+#define ZERO_STRUCT(x) memset((char *)&(x), 0, sizeof(x))
+#endif
+
void torture_cmdline_parse(int argc, char **argv, struct argument_s *arguments);
int torture_rmdirs(const char *path);
@@ -97,6 +107,8 @@ void _torture_filter_tests(struct CMUnitTest *tests, size_t ntests);
const char *torture_server_address(int domain);
int torture_server_port(void);
+void torture_setup_socket_dir(void **state);
+
/*
* This function must be defined in every unit test file.
*/