Skip to content

Commit ebaa134

Browse files
committed
chore: cleanup rivet-engine tests
1 parent 11133d8 commit ebaa134

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+8482
-3847
lines changed

Cargo.lock

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

engine/packages/api-peer/src/actors/delete.rs

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,8 @@
11
use anyhow::Result;
22
use gas::prelude::*;
33
use rivet_api_builder::ApiCtx;
4+
use rivet_api_types::actors::delete::*;
45
use rivet_util::Id;
5-
use serde::{Deserialize, Serialize};
6-
use utoipa::{IntoParams, ToSchema};
7-
8-
#[derive(Debug, Deserialize, Serialize, IntoParams)]
9-
#[serde(deny_unknown_fields)]
10-
#[into_params(parameter_in = Query)]
11-
pub struct DeleteQuery {
12-
pub namespace: Option<String>,
13-
}
14-
15-
#[derive(Serialize, ToSchema)]
16-
#[schema(as = ActorsDeleteResponse)]
17-
pub struct DeleteResponse {}
18-
19-
#[derive(Deserialize)]
20-
#[serde(deny_unknown_fields)]
21-
pub struct DeletePath {
22-
pub actor_id: Id,
23-
}
246

257
#[utoipa::path(
268
delete,

engine/packages/api-peer/src/internal.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ pub struct CachePurgeRequest {
1010
pub keys: Vec<rivet_cache::RawCacheKey>,
1111
}
1212

13-
#[derive(Serialize)]
13+
#[derive(Serialize, Deserialize)]
1414
#[serde(deny_unknown_fields)]
1515
pub struct CachePurgeResponse {}
1616

@@ -38,7 +38,7 @@ pub struct SetTracingConfigRequest {
3838
pub sampler_ratio: Option<Option<f64>>,
3939
}
4040

41-
#[derive(Serialize)]
41+
#[derive(Serialize, Deserialize)]
4242
#[serde(deny_unknown_fields)]
4343
pub struct SetTracingConfigResponse {}
4444

@@ -66,11 +66,11 @@ pub async fn set_tracing_config(
6666
Ok(SetTracingConfigResponse {})
6767
}
6868

69-
#[derive(Deserialize)]
69+
#[derive(Serialize, Deserialize)]
7070
#[serde(deny_unknown_fields)]
7171
pub struct ReplicaReconfigureRequest {}
7272

73-
#[derive(Serialize)]
73+
#[derive(Serialize, Deserialize)]
7474
#[serde(deny_unknown_fields)]
7575
pub struct ReplicaReconfigureResponse {}
7676

@@ -97,7 +97,7 @@ pub async fn epoxy_replica_reconfigure(
9797
Ok(ReplicaReconfigureResponse {})
9898
}
9999

100-
#[derive(Serialize)]
100+
#[derive(Serialize, Deserialize)]
101101
#[serde(deny_unknown_fields)]
102102
pub struct GetEpoxyStateResponse {
103103
pub config: epoxy::types::ClusterConfig,
@@ -126,13 +126,13 @@ pub async fn get_epoxy_state(ctx: ApiCtx, _path: (), _query: ()) -> Result<GetEp
126126
})
127127
}
128128

129-
#[derive(Deserialize)]
129+
#[derive(Serialize, Deserialize)]
130130
#[serde(deny_unknown_fields)]
131131
pub struct SetEpoxyStateRequest {
132132
pub config: epoxy::types::ClusterConfig,
133133
}
134134

135-
#[derive(Serialize)]
135+
#[derive(Serialize, Deserialize)]
136136
#[serde(deny_unknown_fields)]
137137
pub struct SetEpoxyStateResponse {}
138138

engine/packages/api-peer/src/namespaces.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,8 @@ pub async fn list(ctx: ApiCtx, _path: (), query: ListQuery) -> Result<ListRespon
6969
#[serde(deny_unknown_fields)]
7070
#[schema(as = NamespacesCreateRequest)]
7171
pub struct CreateRequest {
72-
name: String,
73-
display_name: String,
72+
pub name: String,
73+
pub display_name: String,
7474
}
7575

7676
#[derive(Serialize, Deserialize, ToSchema)]

engine/packages/api-peer/src/runners.rs

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
use anyhow::Result;
22
use rivet_api_builder::ApiCtx;
3-
use rivet_api_types::{pagination::Pagination, runners::list::*};
4-
use serde::{Deserialize, Serialize};
5-
use utoipa::{IntoParams, ToSchema};
3+
use rivet_api_types::{pagination::Pagination, runners::list::*, runners::list_names::*};
64

75
#[utoipa::path(
86
get,
@@ -69,23 +67,6 @@ pub async fn list(ctx: ApiCtx, _path: (), query: ListQuery) -> Result<ListRespon
6967
}
7068
}
7169

72-
#[derive(Debug, Serialize, Deserialize, Clone, IntoParams)]
73-
#[serde(deny_unknown_fields)]
74-
#[into_params(parameter_in = Query)]
75-
pub struct ListNamesQuery {
76-
pub namespace: String,
77-
pub limit: Option<usize>,
78-
pub cursor: Option<String>,
79-
}
80-
81-
#[derive(Serialize, Deserialize, ToSchema)]
82-
#[serde(deny_unknown_fields)]
83-
#[schema(as = RunnersListNamesResponse)]
84-
pub struct ListNamesResponse {
85-
pub names: Vec<String>,
86-
pub pagination: Pagination,
87-
}
88-
8970
#[tracing::instrument(skip_all)]
9071
pub async fn list_names(
9172
ctx: ApiCtx,

engine/packages/api-public/src/actors/create.rs

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,11 @@ use rivet_api_builder::{
44
ApiError,
55
extract::{Extension, Json, Query},
66
};
7-
use rivet_api_types::actors::create::{CreateRequest, CreateResponse};
7+
use rivet_api_types::actors::create::*;
88
use rivet_api_util::request_remote_datacenter;
9-
use serde::{Deserialize, Serialize};
10-
use utoipa::IntoParams;
119

1210
use crate::ctx::ApiCtx;
1311

14-
#[derive(Debug, Serialize, Deserialize, IntoParams)]
15-
#[serde(deny_unknown_fields)]
16-
#[into_params(parameter_in = Query)]
17-
pub struct CreateQuery {
18-
pub namespace: String,
19-
}
20-
2112
/// ## Datacenter Round Trips
2213
///
2314
/// **If actor is created in the current datacenter:**

engine/packages/api-public/src/actors/delete.rs

Lines changed: 2 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -4,30 +4,12 @@ use rivet_api_builder::{
44
ApiError,
55
extract::{Extension, Json, Path, Query},
66
};
7+
use rivet_api_types::actors::delete::*;
78
use rivet_api_util::request_remote_datacenter_raw;
89
use rivet_util::Id;
9-
use serde::{Deserialize, Serialize};
10-
use utoipa::{IntoParams, ToSchema};
1110

1211
use crate::ctx::ApiCtx;
1312

14-
#[derive(Debug, Deserialize, Serialize, IntoParams)]
15-
#[serde(deny_unknown_fields)]
16-
#[into_params(parameter_in = Query)]
17-
pub struct DeleteQuery {
18-
pub namespace: Option<String>,
19-
}
20-
21-
#[derive(Deserialize)]
22-
#[serde(deny_unknown_fields)]
23-
pub struct DeletePath {
24-
pub actor_id: Id,
25-
}
26-
27-
#[derive(Serialize, ToSchema)]
28-
#[schema(as = ActorsDeleteResponse)]
29-
pub struct DeleteResponse {}
30-
3113
/// ## Datacenter Round Trips
3214
///
3315
/// 2 round trip:
@@ -63,13 +45,7 @@ async fn delete_inner(ctx: ApiCtx, path: DeletePath, query: DeleteQuery) -> Resu
6345
ctx.auth().await?;
6446

6547
if path.actor_id.label() == ctx.config().dc_label() {
66-
let peer_path = rivet_api_peer::actors::delete::DeletePath {
67-
actor_id: path.actor_id,
68-
};
69-
let peer_query = rivet_api_peer::actors::delete::DeleteQuery {
70-
namespace: query.namespace,
71-
};
72-
let res = rivet_api_peer::actors::delete::delete(ctx.into(), peer_path, peer_query).await?;
48+
let res = rivet_api_peer::actors::delete::delete(ctx.into(), path, query).await?;
7349

7450
Ok(Json(res).into_response())
7551
} else {

engine/packages/api-public/src/actors/list.rs

Lines changed: 25 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,14 @@
11
use anyhow::{Context, Result};
22
use axum::response::{IntoResponse, Response};
3-
use gas::prelude::*;
43
use rivet_api_builder::{
54
ApiError,
65
extract::{Extension, Json, Query},
76
};
8-
use rivet_api_types::pagination::Pagination;
7+
use rivet_api_types::{actors::list::*, pagination::Pagination};
98
use rivet_api_util::fanout_to_datacenters;
10-
use serde::{Deserialize, Serialize};
11-
use utoipa::{IntoParams, ToSchema};
129

1310
use crate::{actors::utils::fetch_actors_by_ids, ctx::ApiCtx, errors};
1411

15-
#[derive(Debug, Serialize, Deserialize, Clone, IntoParams)]
16-
#[serde(deny_unknown_fields)]
17-
#[into_params(parameter_in = Query)]
18-
pub struct ListQuery {
19-
pub namespace: String,
20-
pub name: Option<String>,
21-
pub key: Option<String>,
22-
/// Deprecated.
23-
#[serde(default)]
24-
pub actor_ids: Option<String>,
25-
#[serde(default)]
26-
pub actor_id: Vec<Id>,
27-
pub include_destroyed: Option<bool>,
28-
pub limit: Option<usize>,
29-
pub cursor: Option<String>,
30-
}
31-
32-
#[derive(Serialize, Deserialize, ToSchema)]
33-
#[serde(deny_unknown_fields)]
34-
#[schema(as = ActorsListResponse)]
35-
pub struct ListResponse {
36-
pub actors: Vec<rivet_types::actors::Actor>,
37-
pub pagination: Pagination,
38-
}
39-
4012
/// ## Datacenter Round Trips
4113
///
4214
/// **If key is some & `include_destroyed` is false**
@@ -80,7 +52,7 @@ async fn list_inner(ctx: ApiCtx, query: ListQuery) -> Result<ListResponse> {
8052

8153
// Parse query
8254
let actor_ids = [
83-
query.actor_id,
55+
query.actor_id.clone(),
8456
query
8557
.actor_ids
8658
.as_ref()
@@ -128,15 +100,25 @@ async fn list_inner(ctx: ApiCtx, query: ListQuery) -> Result<ListResponse> {
128100
.ok_or_else(|| namespace::errors::Namespace::NotFound.build())?;
129101

130102
// Fetch actors
131-
let actors = fetch_actors_by_ids(
103+
let mut actors = fetch_actors_by_ids(
132104
&ctx,
133105
actor_ids,
134106
query.namespace.clone(),
135107
query.include_destroyed,
136-
query.limit,
108+
None, // Don't apply limit in fetch, we'll apply it after cursor filtering
137109
)
138110
.await?;
139111

112+
// Apply cursor filtering if provided
113+
if let Some(cursor_str) = &query.cursor {
114+
let cursor_ts: i64 = cursor_str.parse().context("invalid cursor format")?;
115+
actors.retain(|actor| actor.create_ts < cursor_ts);
116+
}
117+
118+
// Apply limit after cursor filtering
119+
let limit = query.limit.unwrap_or(100);
120+
actors.truncate(limit);
121+
140122
let cursor = actors.last().map(|x| x.create_ts.to_string());
141123

142124
Ok(ListResponse {
@@ -201,41 +183,25 @@ async fn list_inner(ctx: ApiCtx, query: ListQuery) -> Result<ListResponse> {
201183
.build());
202184
}
203185

204-
// Prepare peer query for local handler
205-
let peer_query = rivet_api_types::actors::list::ListQuery {
206-
namespace: query.namespace.clone(),
207-
name: Some(query.name.as_ref().unwrap().clone()),
208-
key: query.key.clone(),
209-
actor_ids: None,
210-
actor_id: Vec::new(),
211-
include_destroyed: query.include_destroyed,
212-
limit: query.limit,
213-
cursor: query.cursor.clone(),
214-
};
186+
let limit = query.limit.unwrap_or(100);
215187

216188
// Fanout to all datacenters
217-
let mut actors = fanout_to_datacenters::<
218-
rivet_api_types::actors::list::ListResponse,
219-
_,
220-
_,
221-
_,
222-
_,
223-
Vec<rivet_types::actors::Actor>,
224-
>(
225-
ctx.into(),
226-
"/actors",
227-
peer_query,
228-
|ctx, query| async move { rivet_api_peer::actors::list::list(ctx, (), query).await },
229-
|_, res, agg| agg.extend(res.actors),
230-
)
231-
.await?;
189+
let mut actors =
190+
fanout_to_datacenters::<ListResponse, _, _, _, _, Vec<rivet_types::actors::Actor>>(
191+
ctx.into(),
192+
"/actors",
193+
query,
194+
|ctx, query| async move { rivet_api_peer::actors::list::list(ctx, (), query).await },
195+
|_, res, agg| agg.extend(res.actors),
196+
)
197+
.await?;
232198

233199
// Sort by create ts desc
234200
actors.sort_by_cached_key(|x| std::cmp::Reverse(x.create_ts));
235201

236202
// Shorten array since returning all actors from all regions could end up returning `regions *
237203
// limit` results, which is a lot.
238-
actors.truncate(query.limit.unwrap_or(100));
204+
actors.truncate(limit);
239205

240206
let cursor = actors.last().map(|x| x.create_ts.to_string());
241207

0 commit comments

Comments
 (0)