aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManuel Schölling <[email protected]>2015-03-11 14:08:48 +0100
committerManuel Schölling <[email protected]>2015-04-06 12:22:50 +0200
commit8a0e9d6cca4459dd0d256fc2e1b9453a9e0c48f8 (patch)
tree682062bd57272cc156034992f800b4929999bbbc
parentAdd DTLS docs (diff)
downloadrust-openssl-8a0e9d6cca4459dd0d256fc2e1b9453a9e0c48f8.tar.xz
rust-openssl-8a0e9d6cca4459dd0d256fc2e1b9453a9e0c48f8.zip
Fix travis test setup for DTLS
-rw-r--r--.travis.yml5
-rw-r--r--README.md14
-rw-r--r--openssl/src/ssl/tests.rs31
-rwxr-xr-xopenssl/test/test.sh13
4 files changed, 39 insertions, 24 deletions
diff --git a/.travis.yml b/.travis.yml
index 3292dcdb..7961026a 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -5,10 +5,9 @@ os:
env:
global:
- secure: J4i75AV4KMrU/UQrLIzzIh35Xix40Ki0uWjm8j05oxlXVl5aPU2zB30AemDne2QXYzkN4kRG/iRnNORE/8D0lF7YipQNSNxgfiBVoOEfj/NSogvI2BftYX9vlLZJUvt+s/nbE3xa/Pyge1IPv7itDYGO7SMe8RTSqitgqyfE2Eg=
- - FEATURES="tlsv1_1 tlsv1_2 aes_xts npn"
+ - FEATURES="tlsv1_1 tlsv1_2 dtlsv1 dtlsv1_2 aes_xts npn"
before_script:
-- openssl s_server -accept 15418 -www -cert openssl/test/cert.pem -key openssl/test/key.pem >/dev/null 2>&1 &
-- openssl s_server -accept 15419 -www -cert openssl/test/cert.pem -key openssl/test/key.pem -nextprotoneg "http/1.1,spdy/3.1" >/dev/null 2>&1 &
+ - ./openssl/tests/test.sh &
script:
- (cd openssl && cargo test)
- (test $TRAVIS_OS_NAME == "osx" || (cd openssl && cargo test --features "$FEATURES"))
diff --git a/README.md b/README.md
index 7a0c02b3..d38ead28 100644
--- a/README.md
+++ b/README.md
@@ -72,18 +72,6 @@ s_server` window. Those aren't anything to worry about. You can stop the server
using Control-C.
For DTLS testing each test requires its own instance of OpenSSL's s_server. On
-Linux you can start them like this:
-
- for port in `seq 15410 15450`; do
- echo hello | openssl s_server -accept $port -dtls1 -cert test/cert.pem \
- -key test/key.pem -msg -debug & >/dev/null;
- done
-
-Note that the test ssl::tests::write::dtlsv1 should be started individually and
-requires an interactive instance:
-
- openssl s_server -accept 15411 -dtls1 -cert test/cert.pem -key test/key.pem
-
-
+Linux you can run the bash script in `openssl/tests/test.sh`.
[1]: http://slproweb.com/products/Win32OpenSSL.html
diff --git a/openssl/src/ssl/tests.rs b/openssl/src/ssl/tests.rs
index 4d78e182..5a0ff9b5 100644
--- a/openssl/src/ssl/tests.rs
+++ b/openssl/src/ssl/tests.rs
@@ -58,8 +58,8 @@ macro_rules! run_test(
use std::net::UdpSocket;
use std::net::TcpStream;
use ssl::SslMethod::Sslv23;
- #[cfg(feature="dtlsv1")]
use ssl;
+ #[cfg(feature="dtlsv1")]
use ssl::SslMethod::Dtlsv1;
use ssl::{SslContext, SslStream, VerifyCallback};
use ssl::connected_socket::Connect;
@@ -288,13 +288,28 @@ run_test!(clear_ctx_options, |method, _| {
assert!(!opts.contains(ssl::SSL_OP_ALL));
});
-run_test!(write, |method, stream| {
- let mut s = SslStream::new(&SslContext::new(method).unwrap(), stream).unwrap();
- s.write_all("hello".as_bytes()).unwrap();
- s.flush().unwrap();
- s.write_all(" there".as_bytes()).unwrap();
- s.flush().unwrap();
-});
+#[test]
+fn test_write() {
+ let stream = TcpStream::connect("127.0.0.1:15418").unwrap();
+ let mut stream = SslStream::new(&SslContext::new(Sslv23).unwrap(), stream).unwrap();
+ stream.write_all("hello".as_bytes()).unwrap();
+ stream.flush().unwrap();
+ stream.write_all(" there".as_bytes()).unwrap();
+ stream.flush().unwrap();
+}
+
+#[test]
+#[cfg(feature = "dtlsv1")]
+fn test_write_dtlsv1() {
+ let sock = UdpSocket::bind("127.0.0.1:0").unwrap();
+ let stream = sock.connect("127.0.0.1:15410").unwrap();
+
+ let mut stream = SslStream::new(&SslContext::new(Dtlsv1).unwrap(), stream).unwrap();
+ stream.write_all("hello".as_bytes()).unwrap();
+ stream.flush().unwrap();
+ stream.write_all(" there".as_bytes()).unwrap();
+ stream.flush().unwrap();
+}
#[test]
fn test_read() {
diff --git a/openssl/test/test.sh b/openssl/test/test.sh
new file mode 100755
index 00000000..3d035905
--- /dev/null
+++ b/openssl/test/test.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+trap "trap - SIGTERM && kill -- -$$" SIGINT SIGTERM EXIT
+
+openssl s_server -accept 15418 -www -cert openssl/test/cert.pem -key openssl/test/key.pem >/dev/null 2>&1 &
+
+for port in `seq 15411 15430`; do
+ echo hello | openssl s_server -accept $port -dtls1 -cert openssl/test/cert.pem \
+ -key openssl/test/key.pem 2>&1 >/dev/null &
+done
+# the server for the test ssl::tests::test_write_dtlsv1 must wait to receive
+# data from the client
+openssl s_server -accept 15410 -dtls1 -cert openssl/test/cert.pem \
+ -key openssl/test/key.pem 2>&1 >/dev/null