Make it possible to load_test with per-message-deflate
This commit is contained in:
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
default:
|
default:
|
||||||
clang -flto -O3 -DLIBUS_USE_OPENSSL -I../uSockets/src ../uSockets/src/*.c ../uSockets/src/eventing/*.c ../uSockets/src/crypto/*.c broadcast_test.c load_test.c scale_test.c -c
|
clang -flto -O3 -DLIBUS_USE_OPENSSL -I../uSockets/src ../uSockets/src/*.c ../uSockets/src/eventing/*.c ../uSockets/src/crypto/*.c broadcast_test.c load_test.c scale_test.c -c
|
||||||
clang++ -flto -O3 -DLIBUS_USE_OPENSSL -I../uSockets/src ../uSockets/src/crypto/*.cpp -c -std=c++20
|
clang++ -flto -O3 -DLIBUS_USE_OPENSSL -I../uSockets/src ../uSockets/src/crypto/*.cpp -c -std=c++17
|
||||||
clang++ -flto -O3 -DLIBUS_USE_OPENSSL `ls *.o | grep -Ev "load_test|scale_test"` -lssl -lcrypto -o broadcast_test
|
clang++ -flto -O3 -DLIBUS_USE_OPENSSL `ls *.o | grep -Ev "load_test|scale_test"` -lssl -lcrypto -o broadcast_test
|
||||||
clang++ -flto -O3 -DLIBUS_USE_OPENSSL `ls *.o | grep -Ev "broadcast_test|scale_test"` -lssl -lcrypto -o load_test
|
clang++ -flto -O3 -DLIBUS_USE_OPENSSL `ls *.o | grep -Ev "broadcast_test|scale_test"` -lssl -lcrypto -o load_test
|
||||||
clang++ -flto -O3 -DLIBUS_USE_OPENSSL `ls *.o | grep -Ev "broadcast_test|load_test"` -lssl -lcrypto -o scale_test
|
clang++ -flto -O3 -DLIBUS_USE_OPENSSL `ls *.o | grep -Ev "broadcast_test|load_test"` -lssl -lcrypto -o scale_test
|
||||||
|
|||||||
+50
-11
@@ -9,12 +9,37 @@ int SSL;
|
|||||||
|
|
||||||
// request eller upgradeRequest samt webSocketFrame
|
// request eller upgradeRequest samt webSocketFrame
|
||||||
|
|
||||||
unsigned char web_socket_request[26] = {130, 128 | 20, 1, 2, 3, 4};
|
/* Whatever type we selected (compressed or not) */
|
||||||
|
unsigned char *web_socket_request;
|
||||||
|
int web_socket_request_size;
|
||||||
|
|
||||||
char request[] = "GET / HTTP/1.1\r\n"
|
char *upgrade_request;
|
||||||
|
int upgrade_request_length;
|
||||||
|
|
||||||
|
/* Compressed message */
|
||||||
|
unsigned char web_socket_request_deflate[13] = {
|
||||||
|
130 | 64, 128 | 7,
|
||||||
|
0, 0, 0, 0,
|
||||||
|
0xf2, 0x48, 0xcd, 0xc9, 0xc9, 0x07, 0x00
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Not compressed */
|
||||||
|
unsigned char web_socket_request_text[26] = {130, 128 | 20, 1, 2, 3, 4};
|
||||||
|
|
||||||
|
|
||||||
|
char request_deflate[] = "GET / HTTP/1.1\r\n"
|
||||||
"Upgrade: websocket\r\n"
|
"Upgrade: websocket\r\n"
|
||||||
"Connection: Upgrade\r\n"
|
"Connection: Upgrade\r\n"
|
||||||
"Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==\r\n"
|
"Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==\r\n"
|
||||||
|
"Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits\r\n"
|
||||||
|
"Host: server.example.com\r\n"
|
||||||
|
"Sec-WebSocket-Version: 13\r\n\r\n";
|
||||||
|
|
||||||
|
char request_text[] = "GET / HTTP/1.1\r\n"
|
||||||
|
"Upgrade: websocket\r\n"
|
||||||
|
"Connection: Upgrade\r\n"
|
||||||
|
"Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==\r\n"
|
||||||
|
//"Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits\r\n"
|
||||||
"Host: server.example.com\r\n"
|
"Host: server.example.com\r\n"
|
||||||
"Sec-WebSocket-Version: 13\r\n\r\n";
|
"Sec-WebSocket-Version: 13\r\n\r\n";
|
||||||
char *host;
|
char *host;
|
||||||
@@ -60,16 +85,16 @@ struct us_socket_t *on_http_socket_writable(struct us_socket_t *s) {
|
|||||||
struct http_socket *http_socket = (struct http_socket *) us_socket_ext(SSL, s);
|
struct http_socket *http_socket = (struct http_socket *) us_socket_ext(SSL, s);
|
||||||
|
|
||||||
/* Are we still not upgraded yet? */
|
/* Are we still not upgraded yet? */
|
||||||
if (http_socket->upgrade_offset < sizeof(request) - 1) {
|
if (http_socket->upgrade_offset < upgrade_request_length) {
|
||||||
http_socket->upgrade_offset += us_socket_write(SSL, s, request + http_socket->upgrade_offset, sizeof(request) - 1 - http_socket->upgrade_offset, 0);
|
http_socket->upgrade_offset += us_socket_write(SSL, s, upgrade_request + http_socket->upgrade_offset, upgrade_request_length - http_socket->upgrade_offset, 0);
|
||||||
|
|
||||||
/* Now we should be */
|
/* Now we should be */
|
||||||
if (http_socket->upgrade_offset == sizeof(request) - 1) {
|
if (http_socket->upgrade_offset == upgrade_request_length) {
|
||||||
next_connection(s);
|
next_connection(s);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* Stream whatever is remaining of the request */
|
/* Stream whatever is remaining of the request */
|
||||||
http_socket->offset += us_socket_write(SSL, s, (char *) web_socket_request + http_socket->offset, sizeof(web_socket_request) - http_socket->offset, 0);
|
http_socket->offset += us_socket_write(SSL, s, (char *) web_socket_request + http_socket->offset, web_socket_request_size - http_socket->offset, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
return s;
|
return s;
|
||||||
@@ -92,7 +117,7 @@ struct us_socket_t *on_http_socket_data(struct us_socket_t *s, char *data, int l
|
|||||||
//struct http_context *http_context = (struct http_context *) us_socket_context_ext(SSL, us_socket_context(SSL, s));
|
//struct http_context *http_context = (struct http_context *) us_socket_context_ext(SSL, us_socket_context(SSL, s));
|
||||||
|
|
||||||
/* We treat all data events as a response */
|
/* We treat all data events as a response */
|
||||||
http_socket->offset = us_socket_write(SSL, s, (char *) web_socket_request, sizeof(web_socket_request), 0);
|
http_socket->offset = us_socket_write(SSL, s, (char *) web_socket_request, web_socket_request_size, 0);
|
||||||
|
|
||||||
/* */
|
/* */
|
||||||
responses++;
|
responses++;
|
||||||
@@ -107,8 +132,8 @@ struct us_socket_t *on_http_socket_open(struct us_socket_t *s, int is_client, ch
|
|||||||
http_socket->offset = 0;
|
http_socket->offset = 0;
|
||||||
|
|
||||||
/* Send an upgrade request */
|
/* Send an upgrade request */
|
||||||
http_socket->upgrade_offset = us_socket_write(SSL, s, request, sizeof(request) - 1, 0);
|
http_socket->upgrade_offset = us_socket_write(SSL, s, upgrade_request, upgrade_request_length, 0);
|
||||||
if (http_socket->upgrade_offset == sizeof(request) - 1) {
|
if (http_socket->upgrade_offset == upgrade_request_length) {
|
||||||
next_connection(s);
|
next_connection(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -128,8 +153,8 @@ struct us_socket_t *on_http_socket_timeout(struct us_socket_t *s) {
|
|||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
|
|
||||||
/* Parse host and port */
|
/* Parse host and port */
|
||||||
if (argc != 5) {
|
if (argc != 6) {
|
||||||
printf("Usage: connections host port ssl\n");
|
printf("Usage: connections host port ssl deflate\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -138,6 +163,20 @@ int main(int argc, char **argv) {
|
|||||||
memcpy(host, argv[2], strlen(argv[2]) + 1);
|
memcpy(host, argv[2], strlen(argv[2]) + 1);
|
||||||
connections = atoi(argv[1]);
|
connections = atoi(argv[1]);
|
||||||
SSL = atoi(argv[4]);
|
SSL = atoi(argv[4]);
|
||||||
|
if (atoi(argv[5])) {
|
||||||
|
/* Set up deflate */
|
||||||
|
web_socket_request = web_socket_request_deflate;
|
||||||
|
web_socket_request_size = sizeof(web_socket_request_deflate);
|
||||||
|
|
||||||
|
upgrade_request = request_deflate;
|
||||||
|
upgrade_request_length = sizeof(request_deflate) - 1;
|
||||||
|
} else {
|
||||||
|
web_socket_request = web_socket_request_text;
|
||||||
|
web_socket_request_size = sizeof(web_socket_request_text);
|
||||||
|
|
||||||
|
upgrade_request = request_text;
|
||||||
|
upgrade_request_length = sizeof(request_text) - 1;
|
||||||
|
}
|
||||||
|
|
||||||
/* Create the event loop */
|
/* Create the event loop */
|
||||||
struct us_loop_t *loop = us_create_loop(0, on_wakeup, on_pre, on_post, 0);
|
struct us_loop_t *loop = us_create_loop(0, on_wakeup, on_pre, on_post, 0);
|
||||||
|
|||||||
Reference in New Issue
Block a user