Skip to content

Commit

Permalink
perf(serverless): reduce clone()ing (#977)
Browse files Browse the repository at this point in the history
  • Loading branch information
QuiiBz authored Jun 20, 2023
1 parent 7a2b184 commit 2cda111
Show file tree
Hide file tree
Showing 18 changed files with 250 additions and 395 deletions.
5 changes: 5 additions & 0 deletions .changeset/perfect-boats-divide.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@lagon/serverless': patch
---

Reduce `clone()`ing
11 changes: 3 additions & 8 deletions crates/cli/src/commands/dev.rs
Original file line number Diff line number Diff line change
Expand Up @@ -94,14 +94,15 @@ async fn handle_request(
);

let run_result = match handle_asset(public_dir.unwrap(), asset) {
Ok(response) => RunResult::Response(response, None),
Ok((response_builder, body)) => RunResult::Response(response_builder, body, None),
Err(error) => RunResult::Error(format!("Could not retrieve asset ({asset}): {error}")),
};

tx.send_async(run_result).await.unwrap_or(());
} else if url == FAVICON_URL {
tx.send_async(RunResult::Response(
Response::builder().status(404).body(Body::empty())?,
Response::builder().status(404),
Body::empty(),
None,
))
.await
Expand Down Expand Up @@ -143,12 +144,6 @@ async fn handle_request(

handle_response(rx, deployment, |event| async move {
match event {
ResponseEvent::StreamDoneNoDataError => {
println!(
"{} The stream was done before sending a response/data",
style("✕").red()
);
}
ResponseEvent::UnexpectedStreamResult(result) => {
println!(
"{} Unexpected stream result: {:?}",
Expand Down
14 changes: 5 additions & 9 deletions crates/runtime/tests/allow_codegen.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use hyper::{header::CONTENT_TYPE, Request, Response};
use hyper::{header::CONTENT_TYPE, Body, Request, Response};
use lagon_runtime_isolate::options::IsolateOptions;

mod utils;
Expand All @@ -17,10 +17,8 @@ return new Response(result)

utils::assert_response(
&receiver,
Response::builder()
.header(CONTENT_TYPE, "text/plain;charset=UTF-8")
.body("2".into())
.unwrap(),
Response::builder().header(CONTENT_TYPE, "text/plain;charset=UTF-8"),
Body::from("2"),
)
.await;
}
Expand All @@ -39,10 +37,8 @@ async fn allow_function() {

utils::assert_response(
&receiver,
Response::builder()
.header(CONTENT_TYPE, "text/plain;charset=UTF-8")
.body("2".into())
.unwrap(),
Response::builder().header(CONTENT_TYPE, "text/plain;charset=UTF-8"),
Body::from("2"),
)
.await;
}
28 changes: 11 additions & 17 deletions crates/runtime/tests/async_context.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use hyper::{header::CONTENT_TYPE, Request, Response};
use hyper::{header::CONTENT_TYPE, Body, Request, Response};
use lagon_runtime_isolate::options::IsolateOptions;

mod utils;
Expand All @@ -24,10 +24,8 @@ export function handler() {

utils::assert_response(
&receiver,
Response::builder()
.header(CONTENT_TYPE, "text/plain;charset=UTF-8")
.body("true".into())
.unwrap(),
Response::builder().header(CONTENT_TYPE, "text/plain;charset=UTF-8"),
Body::from("true"),
)
.await;
}
Expand All @@ -51,7 +49,7 @@ export function handler() {
));
send(Request::default());

utils::assert_response(&receiver, Response::default()).await;
utils::assert_response(&receiver, Response::builder(), Body::empty()).await;
}

#[tokio::test]
Expand All @@ -74,7 +72,7 @@ export function handler() {
));
send(Request::default());

utils::assert_response(&receiver, Response::default()).await;
utils::assert_response(&receiver, Response::builder(), Body::empty()).await;
}

#[tokio::test]
Expand Down Expand Up @@ -111,7 +109,7 @@ export function handler() {
));
send(Request::default());

utils::assert_response(&receiver, Response::default()).await;
utils::assert_response(&receiver, Response::builder(), Body::empty()).await;
}

#[tokio::test]
Expand Down Expand Up @@ -160,7 +158,7 @@ export function handler() {
));
send(Request::default());

utils::assert_response(&receiver, Response::default()).await;
utils::assert_response(&receiver, Response::builder(), Body::empty()).await;
}

#[tokio::test]
Expand Down Expand Up @@ -193,21 +191,17 @@ export async function handler() {

utils::assert_response(
&receiver,
Response::builder()
.header(CONTENT_TYPE, "text/plain;charset=UTF-8")
.body("2".into())
.unwrap(),
Response::builder().header(CONTENT_TYPE, "text/plain;charset=UTF-8"),
Body::from("2"),
)
.await;

send(Request::default());

utils::assert_response(
&receiver,
Response::builder()
.header(CONTENT_TYPE, "text/plain;charset=UTF-8")
.body("4".into())
.unwrap(),
Response::builder().header(CONTENT_TYPE, "text/plain;charset=UTF-8"),
Body::from("4"),
)
.await;

Expand Down
Loading

0 comments on commit 2cda111

Please sign in to comment.