Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
80 changes: 40 additions & 40 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ const MAX_ID_DISPLAY: usize = 32;
/// variant its own stable row in the load-test report.
///
/// # Arguments
/// * `path` — The URL path, e.g. `"/api/v2/advisory"`.
/// * `path` — The URL path, e.g. `"/api/v3/advisory"`.
/// * `query` — The pre-encoded query string without the leading `?`,
/// e.g. `"q=title~openssl"`, or `""` for no query string.
fn list_tx(path: &'static str, query: &'static str) -> Transaction {
Expand Down Expand Up @@ -192,30 +192,30 @@ async fn main() -> Result<(), anyhow::Error> {
custom_client.clone(),
)?
.set_weight(5)?
.register_transaction(list_tx("/api/v2/organization", ""))
.register_transaction(list_tx("/api/v3/organization", ""))
.register_transaction(list_tx("/api/v3/advisory", ""))
.register_transaction(list_tx("/api/v3/advisory", "offset=100&limit=10"))
.register_transaction(list_tx("/api/v3/advisory", "q=identifier%3dCVE-2022-0981"))
.register_transaction(list_tx("/api/v3/advisory", "q=CVE-2021-"))
.register_transaction(list_tx("/api/v3/vulnerability", ""))
.register_transaction(list_tx("/api/v3/vulnerability", "offset=100&limit=10"))
.register_transaction(list_tx("/api/v2/importer", ""))
.register_transaction(list_tx("/api/v2/purl", ""))
.register_transaction(list_tx("/api/v2/purl", "offset=100&limit=10"))
.register_transaction(list_tx("/api/v2/purl", "q=curl"))
.register_transaction(list_tx("/api/v2/purl", "q=name=curl"))
.register_transaction(list_tx("/api/v2/product", ""))
.register_transaction(list_tx("/api/v3/importer", ""))
.register_transaction(list_tx("/api/v3/purl", ""))
.register_transaction(list_tx("/api/v3/purl", "offset=100&limit=10"))
.register_transaction(list_tx("/api/v3/purl", "q=curl"))
.register_transaction(list_tx("/api/v3/purl", "q=name=curl"))
.register_transaction(list_tx("/api/v3/product", ""))
.register_transaction(list_tx("/api/v3/sbom", ""))
.register_transaction(list_tx("/api/v2/sbom", ""))
.register_transaction(list_tx("/api/v3/sbom", ""))
.register_transaction(list_tx("/api/v3/sbom", "offset=100&limit=10"))
.register_transaction(list_tx("/api/v3/sbom", "offset=100&limit=10"))
.register_transaction(list_tx("/api/v2/sbom", "offset=100&limit=10"))
.register_transaction(tx!(list_advisory_labels))
.register_transaction(list_tx("/api/v2/sbom-labels", ""))
.register_transaction(list_tx("/api/v2/purl/base", ""))
.register_transaction(list_tx("/api/v2/license", ""))
.register_transaction(list_tx("/api/v2/license/spdx/license", ""))
.register_transaction(list_tx("/api/v2/weakness", ""))
.register_transaction(list_tx("/api/v2/group/sbom", ""))
.register_transaction(list_tx("/api/v3/sbom-labels", ""))
.register_transaction(list_tx("/api/v3/purl/base", ""))
.register_transaction(list_tx("/api/v3/license", ""))
.register_transaction(list_tx("/api/v3/license/spdx/license", ""))
.register_transaction(list_tx("/api/v3/weakness", ""))
.register_transaction(list_tx("/api/v3/group/sbom", ""))
.register_transaction(tx!(post_vulnerability_analyze_v3))
.register_transaction(list_tx("/.well-known/trustify", ""))
.register_transaction(tx!(post_extract_sbom_purls))
Expand All @@ -231,19 +231,19 @@ async fn main() -> Result<(), anyhow::Error> {
.register_transaction(list_tx("/api/v3/vulnerability", "q=base_score>=7.0"))
.register_transaction(list_tx("/api/v3/vulnerability", "q=cwes=CWE-79"))
.register_transaction(list_tx("/api/v3/vulnerability", "sort=base_score:desc"))
.register_transaction(list_tx("/api/v2/purl", "q=purl:ty=rpm"))
.register_transaction(list_tx("/api/v2/purl", "q=purl:namespace=redhat"))
.register_transaction(list_tx("/api/v2/purl", "sort=purl:name:asc"))
.register_transaction(list_tx("/api/v2/purl/base", "q=type=rpm"))
.register_transaction(list_tx("/api/v2/purl/base", "q=namespace=redhat"))
.register_transaction(list_tx("/api/v2/purl/base", "sort=name:asc"))
.register_transaction(list_tx("/api/v2/organization", "sort=name:asc"))
.register_transaction(list_tx("/api/v2/product", "q=name~openshift"))
.register_transaction(list_tx("/api/v2/product", "sort=name:asc"))
.register_transaction(list_tx("/api/v2/weakness", "q=description~injection"))
.register_transaction(list_tx("/api/v2/weakness", "sort=id:asc"))
.register_transaction(list_tx("/api/v2/group/sbom", "totals=true"))
.register_transaction(list_tx("/api/v2/group/sbom", "parents=resolve"));
.register_transaction(list_tx("/api/v3/purl", "q=purl:ty=rpm"))
.register_transaction(list_tx("/api/v3/purl", "q=purl:namespace=redhat"))
.register_transaction(list_tx("/api/v3/purl", "sort=purl:name:asc"))
.register_transaction(list_tx("/api/v3/purl/base", "q=type=rpm"))
.register_transaction(list_tx("/api/v3/purl/base", "q=namespace=redhat"))
.register_transaction(list_tx("/api/v3/purl/base", "sort=name:asc"))
.register_transaction(list_tx("/api/v3/organization", "sort=name:asc"))
.register_transaction(list_tx("/api/v3/product", "q=name~openshift"))
.register_transaction(list_tx("/api/v3/product", "sort=name:asc"))
.register_transaction(list_tx("/api/v3/weakness", "q=description~injection"))
.register_transaction(list_tx("/api/v3/weakness", "sort=id:asc"))
.register_transaction(list_tx("/api/v3/group/sbom", "totals=true"))
.register_transaction(list_tx("/api/v3/group/sbom", "parents=resolve"));

tx!(s.get_sbom?(scenario.get_sbom.clone()));
tx!(s.get_sbom_advisories?(scenario.get_sbom_advisories.clone()));
Expand Down Expand Up @@ -297,13 +297,13 @@ async fn main() -> Result<(), anyhow::Error> {
custom_client.clone(),
)?
.set_weight(1)?
.register_transaction(list_tx("/api/v2/license", "q=ASL&sort=license:desc"))
.register_transaction(list_tx("/api/v2/sbom", "q=license~GPL&sort=name:desc"))
.register_transaction(list_tx("/api/v2/purl", "q=license~GPLv3+ with exceptions|Apache&sort=name:desc"))
.register_transaction(list_tx("/api/v2/license", "q=license~Apache"))
.register_transaction(list_tx("/api/v2/license", "q=license~GPL"))
.register_transaction(list_tx("/api/v2/license/spdx/license", "q=apache"))
.register_transaction(list_tx("/api/v2/license/spdx/license", "q=gpl"))
.register_transaction(list_tx("/api/v3/license", "q=ASL&sort=license:desc"))
.register_transaction(list_tx("/api/v3/sbom", "q=license~GPL&sort=name:desc"))
.register_transaction(list_tx("/api/v3/purl", "q=license~GPLv3+ with exceptions|Apache&sort=name:desc"))
.register_transaction(list_tx("/api/v3/license", "q=license~Apache"))
.register_transaction(list_tx("/api/v3/license", "q=license~GPL"))
.register_transaction(list_tx("/api/v3/license/spdx/license", "q=apache"))
.register_transaction(list_tx("/api/v3/license/spdx/license", "q=gpl"))
})
.register_scenario({
let mut s = create_scenario(
Expand All @@ -313,12 +313,12 @@ async fn main() -> Result<(), anyhow::Error> {
custom_client.clone(),
)?
.set_weight(2)?
.register_transaction(list_tx("/api/v2/analysis/status", ""))
.register_transaction(list_tx("/api/v2/analysis/latest/component/cpe%3A%2Fa%3Aredhat%3Aopenshift_builds%3A1.3%3A%3Ael9", ""))
.register_transaction(list_tx("/api/v3/analysis/status", ""))
.register_transaction(list_tx("/api/v3/analysis/latest/component/cpe%3A%2Fa%3Aredhat%3Aopenshift_builds%3A1.3%3A%3Ael9", ""))
// TODO: .register_transaction(tx!(search_analysis_component))
// TODO: .register_transaction(tx!(search_latest_component))
// TODO: .register_transaction(search_tx("/api/v2/analysis/component","q=openssl&descendants=1"))
// TODO: .register_transaction(search_tx("/api/v2/analysis/component", "q=curl&relationships=contains,dependency"))
// TODO: .register_transaction(search_tx("/api/v3/analysis/component","q=openssl&descendants=1"))
// TODO: .register_transaction(search_tx("/api/v3/analysis/component", "q=curl&relationships=contains,dependency"))
;

tx!(s.get_analysis_component?(
Expand Down
4 changes: 2 additions & 2 deletions src/restapi/advisory.rs
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ pub async fn download_advisory(id: String, user: &mut GooseUser) -> TransactionR

pub async fn list_advisory_labels(user: &mut GooseUser) -> TransactionResult {
let uri = format!(
"/api/v2/advisory-labels?filter_text={}&limit={}",
"/api/v3/advisory-labels?filter_text={}&limit={}",
encode("type"),
1000
);
Expand All @@ -93,7 +93,7 @@ async fn send_advisory_label_request(
source: &str,
client_method: fn(&Client, String) -> RequestBuilder,
) -> TransactionResult {
let path = format!("/api/v2/advisory/{}/label", advisory_id);
let path = format!("/api/v3/advisory/{}/label", advisory_id);
let json = json!({
"source": source,
"foo": "bar",
Expand Down
8 changes: 4 additions & 4 deletions src/restapi/analysis.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,30 +4,30 @@ use goose::goose::{GooseUser, TransactionResult};
use urlencoding::encode;

pub async fn search_analysis_component(user: &mut GooseUser) -> TransactionResult {
let _response = user.get("/api/v2/analysis/component?q=openssl").await?;
let _response = user.get("/api/v3/analysis/component?q=openssl").await?;

Ok(())
}

pub async fn get_analysis_component(key: String, user: &mut GooseUser) -> TransactionResult {
let _response = user
.get(&format!("/api/v2/analysis/component/{}", encode(&key)))
.get(&format!("/api/v3/analysis/component/{}", encode(&key)))
.await?;

Ok(())
}

pub async fn search_latest_component(user: &mut GooseUser) -> TransactionResult {
let _response = user
.get("/api/v2/analysis/latest/component?q=openssl")
.get("/api/v3/analysis/latest/component?q=openssl")
.await?;

Ok(())
}

pub async fn render_sbom_graph_dot(id: String, user: &mut GooseUser) -> TransactionResult {
let _response = user
.get(&format!("/api/v2/analysis/sbom/{}/render.dot", encode(&id)))
.get(&format!("/api/v3/analysis/sbom/{}/render.dot", encode(&id)))
.await?;

Ok(())
Expand Down
14 changes: 7 additions & 7 deletions src/restapi/misc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,47 +2,47 @@ use goose::goose::{GooseUser, TransactionResult};
use serde_json::json;

pub async fn get_product(id: String, user: &mut GooseUser) -> TransactionResult {
let _response = user.get(&format!("/api/v2/product/{id}")).await?;
let _response = user.get(&format!("/api/v3/product/{id}")).await?;

Ok(())
}

pub async fn get_organization(id: String, user: &mut GooseUser) -> TransactionResult {
let _response = user.get(&format!("/api/v2/organization/{id}")).await?;
let _response = user.get(&format!("/api/v3/organization/{id}")).await?;

Ok(())
}

pub async fn get_importer(name: String, user: &mut GooseUser) -> TransactionResult {
let _response = user.get(&format!("/api/v2/importer/{name}")).await?;
let _response = user.get(&format!("/api/v3/importer/{name}")).await?;

Ok(())
}

pub async fn get_importer_report(name: String, user: &mut GooseUser) -> TransactionResult {
let _response = user.get(&format!("/api/v2/importer/{name}/report")).await?;
let _response = user.get(&format!("/api/v3/importer/{name}/report")).await?;

Ok(())
}

pub async fn get_spdx_license(id: String, user: &mut GooseUser) -> TransactionResult {
let _response = user
.get(&format!("/api/v2/license/spdx/license/{id}"))
.get(&format!("/api/v3/license/spdx/license/{id}"))
.await?;

Ok(())
}

pub async fn get_weakness(id: String, user: &mut GooseUser) -> TransactionResult {
let _response = user.get(&format!("/api/v2/weakness/{id}")).await?;
let _response = user.get(&format!("/api/v3/weakness/{id}")).await?;

Ok(())
}

pub async fn post_extract_sbom_purls(user: &mut GooseUser) -> TransactionResult {
let _response = user
.post_json(
"/api/v2/ui/extract-sbom-purls",
"/api/v3/ui/extract-sbom-purls",
&json!({
"spdxVersion": "SPDX-2.3",
"dataLicense": "CC0-1.0",
Expand Down
4 changes: 2 additions & 2 deletions src/restapi/purl.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ pub async fn get_purl_details(purl_id: String, user: &mut GooseUser) -> Transact

pub async fn get_base_purl(key: String, user: &mut GooseUser) -> TransactionResult {
let _response = user
.get(&format!("/api/v2/purl/base/{}", encode(&key)))
.get(&format!("/api/v3/purl/base/{}", encode(&key)))
.await?;

Ok(())
Expand All @@ -26,7 +26,7 @@ pub async fn get_recommendations(
let batch: Vec<&String> = purls.0.iter().take(batch_size).collect();
let _response = user
.post_json(
"/api/v2/purl/recommend",
"/api/v3/purl/recommend",
&json!({
"purls": batch
}),
Expand Down
22 changes: 11 additions & 11 deletions src/restapi/sbom.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ use std::sync::{
use urlencoding::encode;

pub async fn get_sbom(sbom_id: String, user: &mut GooseUser) -> TransactionResult {
let _response = user.get(&format!("/api/v2/sbom/{sbom_id}")).await?;
let _response = user.get(&format!("/api/v3/sbom/{sbom_id}")).await?;

Ok(())
}
Expand All @@ -23,21 +23,21 @@ pub async fn get_sbom_advisories(sbom_id: String, user: &mut GooseUser) -> Trans

pub async fn get_sbom_packages(sbom_id: String, user: &mut GooseUser) -> TransactionResult {
let _response = user
.get(&format!("/api/v2/sbom/{sbom_id}/packages"))
.get(&format!("/api/v3/sbom/{sbom_id}/packages"))
.await?;

Ok(())
}

pub async fn get_sbom_related(sbom_id: String, user: &mut GooseUser) -> TransactionResult {
let _response = user.get(&format!("/api/v2/sbom/{sbom_id}/related")).await?;
let _response = user.get(&format!("/api/v3/sbom/{sbom_id}/related")).await?;

Ok(())
}

pub async fn sbom_by_package(purl: String, user: &mut GooseUser) -> TransactionResult {
let _response = user
.get(&format!("/api/v2/sbom/by-package?purl={}", encode(&purl)))
.get(&format!("/api/v3/sbom/by-package?purl={}", encode(&purl)))
.await?;

Ok(())
Expand All @@ -46,7 +46,7 @@ pub async fn sbom_by_package(purl: String, user: &mut GooseUser) -> TransactionR
pub async fn get_sbom_license_ids(sbom_id: String, user: &mut GooseUser) -> TransactionResult {
let _response = user
.get(&format!(
"/api/v2/sbom/{}/all-license-ids",
"/api/v3/sbom/{}/all-license-ids",
encode(&sbom_id)
))
.await?;
Expand All @@ -56,25 +56,25 @@ pub async fn get_sbom_license_ids(sbom_id: String, user: &mut GooseUser) -> Tran

pub async fn download_sbom(key: String, user: &mut GooseUser) -> TransactionResult {
let _response = user
.get(&format!("/api/v2/sbom/{}/download", encode(&key)))
.get(&format!("/api/v3/sbom/{}/download", encode(&key)))
.await?;

Ok(())
}

pub async fn get_sbom_license_export(id: String, user: &mut GooseUser) -> TransactionResult {
let _response = user
.get(&format!("/api/v2/sbom/{}/license-export", encode(&id)))
.get(&format!("/api/v3/sbom/{}/license-export", encode(&id)))
.await?;

Ok(())
}

pub async fn count_sbom_by_package(purl: String, user: &mut GooseUser) -> TransactionResult {
let url = user.build_url("/api/v2/sbom/count-by-package")?;
let url = user.build_url("/api/v3/sbom/count-by-package")?;
let goose_request = GooseRequest::builder()
.method(GooseMethod::Get)
.path("/api/v2/sbom/count-by-package")
.path("/api/v3/sbom/count-by-package")
.set_request_builder(Client::get(&user.client, url).json(&json!([{"purl": purl}])))
.build();
let _response = user.request(goose_request).await?;
Expand Down Expand Up @@ -105,7 +105,7 @@ async fn send_sbom_label_request(
client_method: fn(&Client, String) -> reqwest_12::RequestBuilder,
) -> TransactionResult {
use serde_json::json;
let path = format!("/api/v2/sbom/{}/label", encode(&sbom_id));
let path = format!("/api/v3/sbom/{}/label", encode(&sbom_id));
let json = json!({
"source": source,
"load-test": "true",
Expand All @@ -131,7 +131,7 @@ pub async fn delete_sbom_from_pool_sequential(
let index = counter.fetch_add(1, Ordering::Relaxed);
if index < pool.len() {
let sbom_id = &pool[index];
let _response = user.delete(&format!("/api/v2/sbom/{sbom_id}")).await?;
let _response = user.delete(&format!("/api/v3/sbom/{sbom_id}")).await?;
}
Ok(())
}
4 changes: 2 additions & 2 deletions src/restapi/sbom_group.rs
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
use goose::goose::{GooseUser, TransactionResult};

pub async fn get_sbom_group(id: String, user: &mut GooseUser) -> TransactionResult {
let _response = user.get(&format!("/api/v2/group/sbom/{id}")).await?;
let _response = user.get(&format!("/api/v3/group/sbom/{id}")).await?;

Ok(())
}

pub async fn get_sbom_group_assignments(id: String, user: &mut GooseUser) -> TransactionResult {
let _response = user
.get(&format!("/api/v2/group/sbom-assignment/{id}"))
.get(&format!("/api/v3/group/sbom-assignment/{id}"))
.await?;

Ok(())
Expand Down
2 changes: 1 addition & 1 deletion src/restapi/vulnerability.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ pub async fn get_vulnerability_scores(id: String, user: &mut GooseUser) -> Trans
pub async fn post_vulnerability_analyze(purl: String, user: &mut GooseUser) -> TransactionResult {
let _response = user
.post_json(
"/api/v2/vulnerability/analyze",
"/api/v3/vulnerability/analyze",
&json!({
"purls": [
purl
Expand Down
Loading