From 1730e6d964807ed9d1db6f7939b657b5cb9234fd Mon Sep 17 00:00:00 2001 From: ading2210 Date: Wed, 20 Mar 2024 02:34:40 -0400 Subject: [PATCH] add new unit test, fix minor bugs --- client/javascript/http.js | 2 +- client/libcurl/session.c | 1 + client/tests/run_tests.py | 3 +++ client/tests/scripts/fetch_multiple.js | 1 + client/tests/scripts/fetch_once.js | 1 + client/tests/scripts/fetch_parallel.js | 5 ++++- client/tests/scripts/test_http_session.js | 19 +++++++++++++++++++ 7 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 client/tests/scripts/test_http_session.js diff --git a/client/javascript/http.js b/client/javascript/http.js index 7a1f3fc..110e650 100644 --- a/client/javascript/http.js +++ b/client/javascript/http.js @@ -119,7 +119,7 @@ class HTTPSession extends CurlSession { static async create_options(params) { let body = null; - let request_obj = new Request("/", params); + let request_obj = new Request("http://127.0.0.1/", params); let array_buffer = await request_obj.arrayBuffer(); if (array_buffer.byteLength > 0) { body = new Uint8Array(array_buffer); diff --git a/client/libcurl/session.c b/client/libcurl/session.c index 059f844..0b03a02 100644 --- a/client/libcurl/session.c +++ b/client/libcurl/session.c @@ -49,4 +49,5 @@ void session_remove_request(struct SessionInfo *session, CURL* http_handle) { void session_cleanup(struct SessionInfo *session) { curl_multi_cleanup(session->multi_handle); + free(session); } \ No newline at end of file diff --git a/client/tests/run_tests.py b/client/tests/run_tests.py index 19c2ad6..2cff216 100644 --- a/client/tests/run_tests.py +++ b/client/tests/run_tests.py @@ -52,5 +52,8 @@ class JSTest(unittest.TestCase): def test_tls_socket(self): self.run_test("test_tls_socket.js") + def test_http_session(self): + self.run_test("test_http_session.js") + if __name__ == "__main__": unittest.main() \ No newline at end of file diff --git a/client/tests/scripts/fetch_multiple.js b/client/tests/scripts/fetch_multiple.js index fe7cb86..19818d0 100644 --- a/client/tests/scripts/fetch_multiple.js +++ b/client/tests/scripts/fetch_multiple.js @@ -3,5 +3,6 @@ async function test() { for (let i=0; i<20; i++) { let r = await libcurl.fetch("https://example.com/"); assert(r.status === 200, "wrong status"); + await r.text(); } } \ No newline at end of file diff --git a/client/tests/scripts/fetch_once.js b/client/tests/scripts/fetch_once.js index e94fefa..ed9863d 100644 --- a/client/tests/scripts/fetch_once.js +++ b/client/tests/scripts/fetch_once.js @@ -1,4 +1,5 @@ async function test() { let r = await libcurl.fetch("https://example.com/"); assert(r.status === 200, "wrong status"); + await r.text(); } \ No newline at end of file diff --git a/client/tests/scripts/fetch_parallel.js b/client/tests/scripts/fetch_parallel.js index 98a083a..6e09d30 100644 --- a/client/tests/scripts/fetch_parallel.js +++ b/client/tests/scripts/fetch_parallel.js @@ -2,7 +2,10 @@ async function test() { await libcurl.fetch("https://www.example.com/"); let promises = []; for (let i=0; i<10; i++) { - promises.push(libcurl.fetch("https://www.example.com/")) + promises.push((async ()=>{ + let r = await libcurl.fetch("https://www.example.com/"); + await r.text(); + })()) } await Promise.all(promises); } diff --git a/client/tests/scripts/test_http_session.js b/client/tests/scripts/test_http_session.js new file mode 100644 index 0000000..99d4f8f --- /dev/null +++ b/client/tests/scripts/test_http_session.js @@ -0,0 +1,19 @@ +async function test() { + let sessions = []; + for (let i=0; i<5; i++) { + sessions.push(new libcurl.HTTPSession()); + } + + let promises = []; + for (let session of sessions) { + promises.push((async ()=>{ + let r = await session.fetch("https://www.example.com/"); + await r.text(); + })()); + } + await Promise.all(promises); + + for (let session of sessions) { + session.close(); + } +} \ No newline at end of file