Skip to content

Commit daeefa1

Browse files
committed
TC-3071 scale test for put and patch advisory lables
1 parent 339d6a9 commit daeefa1

File tree

4 files changed

+95
-2
lines changed

4 files changed

+95
-2
lines changed

scenarios/full-20250604.json5

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,5 +111,7 @@
111111
"urn:uuid:01973122-384d-7002-886f-11dddf5040ad",
112112
"urn:uuid:01973122-3a0e-73f0-9596-baceb84383aa",
113113
"urn:uuid:01973122-3bdd-78a3-898a-fb67c06387ed"
114-
]
114+
],
115+
"put_advisory_lables": "urn:uuid:24ae57c3-4b57-4f4e-82c1-83ae26059a89",
116+
"patch_advisory_lables": "urn:uuid:9ffb1a1b-14e0-4abb-943a-76906daa54aa"
115117
}

src/main.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,10 @@ async fn main() -> Result<(), anyhow::Error> {
191191
tx!(s.post_vulnerability_analyze?(scenario.analyze_purl.clone()));
192192
tx!(s.get_purl_details?(scenario.get_purl_details.clone()));
193193
tx!(s.get_recommendations?(scenario.get_recommendations.clone()));
194+
tx!(s.put_advisory_labels?(scenario.put_advisory_lables.clone()));
195+
tx!(s.patch_advisory_labels?(
196+
scenario.patch_advisory_lables.clone()
197+
));
194198

195199
s
196200
})

src/restapi.rs

Lines changed: 52 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
use goose::goose::{GooseUser, TransactionResult};
1+
use goose::goose::{GooseMethod, GooseRequest, GooseUser, TransactionResult};
2+
use reqwest::{Client, RequestBuilder};
23
use serde_json::json;
34
use std::sync::{
45
Arc,
@@ -37,6 +38,56 @@ pub async fn search_advisory(user: &mut GooseUser) -> TransactionResult {
3738
Ok(())
3839
}
3940

41+
async fn send_advisory_label_request(
42+
advisory_id: String,
43+
user: &mut GooseUser,
44+
method: GooseMethod,
45+
source: &str,
46+
client_method: fn(&Client, String) -> RequestBuilder,
47+
) -> TransactionResult {
48+
let path = format!("/api/v2/advisory/{}/label", advisory_id);
49+
let json = json!({
50+
"source": source,
51+
"foo": "bar",
52+
"space": "with space",
53+
"empty": "",
54+
});
55+
56+
let url = user.build_url(&path)?;
57+
58+
let reqwest_request_builder = client_method(&user.client, url);
59+
let goose_request = GooseRequest::builder()
60+
.method(method)
61+
.path(path.as_str())
62+
.set_request_builder(reqwest_request_builder.json(&json))
63+
.build();
64+
let _response = user.request(goose_request).await?;
65+
66+
Ok(())
67+
}
68+
69+
pub async fn put_advisory_labels(advisory_id: String, user: &mut GooseUser) -> TransactionResult {
70+
send_advisory_label_request(
71+
advisory_id,
72+
user,
73+
GooseMethod::Put,
74+
"It's a put request",
75+
Client::put,
76+
)
77+
.await
78+
}
79+
80+
pub async fn patch_advisory_labels(advisory_id: String, user: &mut GooseUser) -> TransactionResult {
81+
send_advisory_label_request(
82+
advisory_id,
83+
user,
84+
GooseMethod::Patch,
85+
"It's a patch request",
86+
Client::patch,
87+
)
88+
.await
89+
}
90+
4091
pub async fn list_importer(user: &mut GooseUser) -> TransactionResult {
4192
let _response = user.get("/api/v2/importer").await?;
4293

src/scenario/mod.rs

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,12 @@ pub(crate) struct Scenario {
9696

9797
#[serde(default, skip_serializing_if = "Option::is_none")]
9898
pub delete_sbom_pool: Option<Vec<String>>,
99+
100+
#[serde(with = "required")]
101+
pub put_advisory_lables: Option<String>,
102+
103+
#[serde(with = "required")]
104+
pub patch_advisory_lables: Option<String>,
99105
}
100106

101107
impl Scenario {
@@ -136,6 +142,12 @@ impl Scenario {
136142
.collect(),
137143
);
138144

145+
let put_advisory_lables = Some(format!("urn:uuid:{}", loader.put_advisory_lables().await?));
146+
let patch_advisory_lables = Some(format!(
147+
"urn:uuid:{}",
148+
loader.patch_advisory_lables().await?
149+
));
150+
139151
Ok(Self {
140152
get_sbom: large_sbom_digest.clone(),
141153
get_sbom_advisories: large_sbom_digest.clone(),
@@ -150,6 +162,8 @@ impl Scenario {
150162
get_purl_details,
151163
get_recommendations: recommendations_purl,
152164
delete_sbom_pool,
165+
put_advisory_lables,
166+
patch_advisory_lables,
153167
})
154168
}
155169
}
@@ -356,6 +370,28 @@ LIMIT 100
356370
.map(|row| row.get::<String, _>("id"))
357371
.collect())
358372
}
373+
374+
/// A advisory ID for put labels
375+
pub async fn put_advisory_lables(&self) -> anyhow::Result<String> {
376+
self.find(
377+
r#"
378+
SELECT id::text as result
379+
FROM public.advisory where labels is not null order by modified desc limit 1;
380+
"#,
381+
)
382+
.await
383+
}
384+
385+
/// A advisory ID for patch labels
386+
pub async fn patch_advisory_lables(&self) -> anyhow::Result<String> {
387+
self.find(
388+
r#"
389+
SELECT id::text as result
390+
FROM public.advisory where labels is not null order by modified desc OFFSET 1 limit 1;
391+
"#,
392+
)
393+
.await
394+
}
359395
}
360396

361397
#[cfg(test)]

0 commit comments

Comments
 (0)