Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
98 changes: 85 additions & 13 deletions tests/runtest.sh
Original file line number Diff line number Diff line change
Expand Up @@ -156,12 +156,12 @@ tlshd_tests()
print_start "Kernel Tests (kernel -> lkquic, Certificate, Sample)"
if [ -f ../modules/net/quic/quic_sample_test.ko ]; then
daemon_run ./sample_test server 0.0.0.0 1234 ./keys/server-key.pem \
./keys/server-cert.pem sample
./keys/server-cert.pem default sample
insmod ../modules/net/quic/quic_sample_test.ko || return 1
else
modprobe -n quic_sample_test || return 0
daemon_run ./sample_test server 0.0.0.0 1234 ./keys/server-key.pem \
./keys/server-cert.pem sample
./keys/server-cert.pem default sample
modprobe quic_sample_test || return 1
fi
rmmod quic_sample_test
Expand All @@ -170,11 +170,11 @@ tlshd_tests()

print_start "Kernel Tests (lkquic -> kernel, Certificate, Sample)"
if [ -f ../modules/net/quic/quic_sample_test.ko ]; then
daemon_run ./sample_test client 127.0.0.1 1234 none none sample
daemon_run ./sample_test client 127.0.0.1 1234 none none default sample
insmod ../modules/net/quic/quic_sample_test.ko role=server || return 1
else
modprobe -n quic_sample_test || return 0
daemon_run ./sample_test client 127.0.0.1 1234 none none sample
daemon_run ./sample_test client 127.0.0.1 1234 none none default sample
modprobe quic_sample_test role=server || return 1
fi
rmmod quic_sample_test
Expand All @@ -184,11 +184,11 @@ tlshd_tests()
print_start "Kernel Tests (kernel -> lkquic, PSK, Sample)"
PSK=`keyctl show @u |grep test1 |awk '{print $1}'`
if [ -f ../modules/net/quic/quic_sample_test.ko ]; then
daemon_run ./sample_test server 0.0.0.0 1234 ./keys/server-psk.txt none sample
daemon_run ./sample_test server 0.0.0.0 1234 ./keys/server-psk.txt none default sample
insmod ../modules/net/quic/quic_sample_test.ko psk=$PSK || return 1
else
modprobe -n quic_sample_test || return 0
daemon_run ./sample_test server 0.0.0.0 1234 ./keys/server-psk.txt none sample
daemon_run ./sample_test server 0.0.0.0 1234 ./keys/server-psk.txt none default sample
modprobe quic_sample_test psk=$PSK || return 1
fi
rmmod quic_sample_test
Expand All @@ -197,11 +197,11 @@ tlshd_tests()

print_start "Kernel Tests (lkquic -> kernel, PSK, Sample)"
if [ -f ../modules/net/quic/quic_sample_test.ko ]; then
daemon_run ./sample_test client 127.0.0.1 1234 ./keys/client-psk.txt none sample
daemon_run ./sample_test client 127.0.0.1 1234 ./keys/client-psk.txt none default sample
insmod ../modules/net/quic/quic_sample_test.ko role=server psk=1 || return 1
else
modprobe -n quic_sample_test || return 0
daemon_run ./sample_test client 127.0.0.1 1234 ./keys/client-psk.txt none sample
daemon_run ./sample_test client 127.0.0.1 1234 ./keys/client-psk.txt none default sample
modprobe quic_sample_test role=server psk=1 || return 1
fi
rmmod quic_sample_test
Expand Down Expand Up @@ -273,16 +273,88 @@ ticket_tests()
daemon_stop "ticket_test"
}

sample_tests()
sample_def_def_tests()
{
print_start "Sample Tests"
daemon_run ./sample_test server 0.0.0.0 1234 ./keys/server-key.pem ./keys/server-cert.pem
./sample_test client 127.0.0.1 1234 none none || return 1
print_start "Sample cli=default srv=default Tests"
daemon_run ./sample_test server 0.0.0.0 1234 ./keys/server-key.pem ./keys/server-cert.pem default
./sample_test client 127.0.0.1 1234 none none default || return 1
daemon_stop "sample_test"

}

TESTS="func perf netem http3 tlshd alpn ticket sample"
sample_def_v1_tests()
{
print_start "Sample cli=default srv=v1 Tests"
daemon_run ./sample_test server 0.0.0.0 1234 ./keys/server-key.pem ./keys/server-cert.pem v1
./sample_test client 127.0.0.1 1234 none none default || return 1
daemon_stop "sample_test"

}

sample_def_v2_tests()
{
print_start "Sample cli=default srv=v2 Tests"
daemon_run ./sample_test server 0.0.0.0 1234 ./keys/server-key.pem ./keys/server-cert.pem v2
./sample_test client 127.0.0.1 1234 none none default || return 1
daemon_stop "sample_test"

}

sample_v1_def_tests()
{
print_start "Sample cli=v1 srv=default Tests"
daemon_run ./sample_test server 0.0.0.0 1234 ./keys/server-key.pem ./keys/server-cert.pem default
./sample_test client 127.0.0.1 1234 none none v1 || return 1
daemon_stop "sample_test"

}

sample_v1_v1_tests()
{
print_start "Sample cli=v1 srv=v1 Tests"
daemon_run ./sample_test server 0.0.0.0 1234 ./keys/server-key.pem ./keys/server-cert.pem v1
./sample_test client 127.0.0.1 1234 none none v1 || return 1
daemon_stop "sample_test"

}

sample_v1_v2_tests()
{
print_start "Sample cli=v1 srv=v2 Tests"
daemon_run ./sample_test server 0.0.0.0 1234 ./keys/server-key.pem ./keys/server-cert.pem v2
./sample_test client 127.0.0.1 1234 none none v1 || return 1
daemon_stop "sample_test"

}

sample_v2_def_tests()
{
print_start "Sample cli=v2 srv=default Tests"
daemon_run ./sample_test server 0.0.0.0 1234 ./keys/server-key.pem ./keys/server-cert.pem default
./sample_test client 127.0.0.1 1234 none none v2 || return 1
daemon_stop "sample_test"

}

sample_v2_v1_tests()
{
print_start "Sample cli=v2 srv=v1 Tests"
daemon_run ./sample_test server 0.0.0.0 1234 ./keys/server-key.pem ./keys/server-cert.pem v2
./sample_test client 127.0.0.1 1234 none none v2 || return 1
daemon_stop "sample_test"

}

sample_v2_v2_tests()
{
print_start "Sample cli=v2 srv=v2 Tests"
daemon_run ./sample_test server 0.0.0.0 1234 ./keys/server-key.pem ./keys/server-cert.pem v2
./sample_test client 127.0.0.1 1234 none none v2 || return 1
daemon_stop "sample_test"

}

TESTS="func perf netem http3 tlshd alpn ticket sample_def_def sample_def_v1 sample_def_v2 sample_v1_def sample_v1_v1 sample_v2_def sample_v2_v1 sample_v2_v2"
trap cleanup EXIT

[ "$1" = "" ] || TESTS=$1
Expand Down
48 changes: 41 additions & 7 deletions tests/sample_test.c
Original file line number Diff line number Diff line change
Expand Up @@ -32,14 +32,15 @@ static int do_client(int argc, char *argv[])
{
struct sockaddr_storage ra = {};
char msg[50], *psk, *host;
struct quic_config config = {};
unsigned int flags;
int ret, sockfd;
const char *rc;
int64_t sid;

if (argc < 6) {
if (argc < 7) {
printf("%s client <PEER ADDR> <PEER PORT> <PSK_FILE | 'none'> "
"<HOSTNAME | 'none'> [ALPN]\n", argv[0]);
"<HOSTNAME | 'none'> <'default' | 'v1' | 'v2'> [ALPN]\n", argv[0]);
return 0;
}

Expand All @@ -53,6 +54,22 @@ static int do_client(int argc, char *argv[])
printf("socket create failed\n");
return -1;
}
if (strcmp(argv[6], "v1") == 0) {
config.version = QUIC_VERSION_V1;
if (setsockopt(sockfd, SOL_QUIC, QUIC_SOCKOPT_CONFIG, &config, sizeof(config))) {
printf("socket setsockopt config failed\n");
return -1;
}
} else if (strcmp(argv[6], "v2") == 0) {
config.version = QUIC_VERSION_V2;
if (setsockopt(sockfd, SOL_QUIC, QUIC_SOCKOPT_CONFIG, &config, sizeof(config))) {
printf("socket setsockopt config failed\n");
return -1;
}
} else if (strcmp(argv[6], "default") != 0) {
printf("%s: invalid protocol[%s]\n", argv[0], argv[6]);
return -1;
}

if (connect(sockfd, (struct sockaddr *)&ra, sizeof(ra))) {
printf("socket connect failed\n");
Expand All @@ -61,7 +78,7 @@ static int do_client(int argc, char *argv[])

psk = strcmp(argv[4], "none") ? argv[4] : NULL;
host = strcmp(argv[5], "none") ? argv[5] : NULL;
if (quic_client_handshake(sockfd, psk, host, argv[6]))
if (quic_client_handshake(sockfd, psk, host, argv[7]))
return -1;

/* set MSG_STREAM_NEW flag to open a stream while sending first data
Expand Down Expand Up @@ -96,13 +113,14 @@ static int do_server(int argc, char *argv[])
unsigned int addrlen, flags;
struct sockaddr_storage sa = {};
char msg[50], *alpn, *cert;
struct quic_config config = {};
int listenfd, sockfd, ret;
const char *rc;
int64_t sid;

if (argc < 6) {
if (argc < 7) {
printf("%s server <LOCAL ADDR> <LOCAL PORT> <PRIVATE_KEY_FILE | PSK_FILE> "
"<CERTIFICATE_FILE | 'none'> [ALPN]\n", argv[0]);
"<CERTIFICATE_FILE | 'none'> <'default' | 'v1' | 'v2'> [ALPN]\n", argv[0]);
return 0;
}

Expand All @@ -120,7 +138,23 @@ static int do_server(int argc, char *argv[])
printf("socket bind failed\n");
return -1;
}
alpn = argv[6]; /* For kernel ALPN match */
if (strcmp(argv[6], "v1") == 0) {
config.version = QUIC_VERSION_V1;
if (setsockopt(listenfd, SOL_QUIC, QUIC_SOCKOPT_CONFIG, &config, sizeof(config))) {
printf("socket setsockopt config failed\n");
return -1;
}
} else if (strcmp(argv[6], "v2") == 0) {
config.version = QUIC_VERSION_V2;
if (setsockopt(listenfd, SOL_QUIC, QUIC_SOCKOPT_CONFIG, &config, sizeof(config))) {
printf("socket setsockopt config failed\n");
return -1;
}
} else if (strcmp(argv[6], "default") != 0) {
printf("%s: invalid protocol[%s]\n", argv[0], argv[6]);
return -1;
}
alpn = argv[7]; /* For kernel ALPN match */
if (alpn && setsockopt(listenfd, SOL_QUIC, QUIC_SOCKOPT_ALPN, alpn, strlen(alpn))) {
printf("socket setsockopt alpn failed\n");
return -1;
Expand All @@ -137,7 +171,7 @@ static int do_server(int argc, char *argv[])
}

cert = strcmp(argv[5], "none") ? argv[5] : NULL;
if (quic_server_handshake(sockfd, argv[4], cert, argv[6]))
if (quic_server_handshake(sockfd, argv[4], cert, argv[7]))
return -1;

flags = 0;
Expand Down