Skip to content

Commit 21d8b83

Browse files
committed
test build error fix
1 parent 0645dcc commit 21d8b83

File tree

6 files changed

+98
-63
lines changed

6 files changed

+98
-63
lines changed

golem-web-search/Makefile.toml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,21 @@ args = [
144144
"-Dwarnings",
145145
]
146146

147+
148+
[tasks.build-test-components]
149+
dependencies = ["build"]
150+
description = "Builds all test components with golem-cli"
151+
install_crate = "cargo-binstall"
152+
script = '''
153+
cargo-binstall golem-cli@1.2.2-dev.11 --locked --force --no-confirm
154+
cargo-binstall wac-cli --locked --force --no-confirm
155+
cd test
156+
golem-cli --version
157+
golem-cli app clean
158+
golem-cli app build -b google-debug
159+
'''
160+
161+
147162
[tasks.set-version]
148163
description = "Sets the version in all Cargo.toml files to the value of the VERSION environment variable"
149164
condition = { env_set = ["VERSION"] }

golem-web-search/test/Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

golem-web-search/test/components-rust/test-web-search/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,10 @@ path = "wit-generated"
3232
"golem:rpc/types@0.2.0" = "golem_rust::wasm_rpc::golem_rpc_0_2_x::types"
3333

3434
[package.metadata.component.target.dependencies]
35-
"golem:web-search" = { path = "wit-generated/deps/golem-web-search" }
36-
"wasi:clocks" = { path = "wit-generated/deps/clocks" }
3735
"wasi:io" = { path = "wit-generated/deps/io" }
36+
"wasi:clocks" = { path = "wit-generated/deps/clocks" }
3837
"golem:rpc" = { path = "wit-generated/deps/golem-rpc" }
38+
"golem:web-search" = { path = "wit-generated/deps/golem-web-search" }
3939
"test:helper-client" = { path = "wit-generated/deps/test_helper-client" }
4040
"test:web-search-exports" = { path = "wit-generated/deps/test_web-search-exports" }
4141

golem-web-search/test/components-rust/test-web-search/golem.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ components:
1818
- ../../common-rust
1919
targets:
2020
- ../../target/wasm32-wasip1/debug/test_web_search.wasm
21-
- command: wac plug --plug ../../../../target/wasm32-wasip1/debug/golem_websearch_openai.wasm ../../target/wasm32-wasip1/debug/test_web_search.wasm -o ../../target/wasm32-wasip1/debug/test_google_plugged.wasm
21+
- command: wac plug --plug ../../../../target/wasm32-wasip1/debug/golem_websearch_google.wasm ../../target/wasm32-wasip1/debug/test_web_search.wasm -o ../../target/wasm32-wasip1/debug/test_google_plugged.wasm
2222
sources:
2323
- ../../target/wasm32-wasip1/debug/test_web_search.wasm
2424
- ../../../../target/wasm32-wasip1/debug/test_web_search.wasm
@@ -58,6 +58,6 @@ components:
5858
defaultProfile: google-debug
5959

6060
dependencies:
61-
test:llm:
61+
test:web-search:
6262
- target: test:helper
6363
type: wasm-rpc
Lines changed: 75 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,112 +1,133 @@
11
#[allow(static_mut_refs)]
22
mod bindings;
33

4-
use golem_rust::atomically;
54
use crate::bindings::exports::test::web_search_exports::test_web_search_api::*;
65
use crate::bindings::golem::web_search::web_search;
76
use crate::bindings::test::helper_client::test_helper_client::TestHelperApi;
7+
use golem_rust::atomically;
88

99
struct Component;
1010

1111
impl Guest for Component {
1212
/// test1 demonstrates a simple web search query
1313
fn test1() -> String {
14-
let config = web_search::Config {
15-
provider: "google".to_string(),
16-
provider_options: vec![],
14+
let params = web_search::SearchParams {
15+
query: "Rust programming language".to_string(),
16+
safe_search: None,
17+
language: None,
18+
region: None,
19+
max_results: Some(10),
20+
time_range: None,
21+
include_domains: None,
22+
exclude_domains: None,
23+
include_images: None,
24+
include_html: None,
25+
advanced_answer: None,
1726
};
1827

1928
println!("Sending web search request...");
20-
let response = web_search::search(
21-
"Rust programming language",
22-
&config,
23-
);
29+
let response = web_search::search_once(&params);
2430
println!("Response: {:?}", response);
2531

2632
match response {
27-
Ok(results) => {
33+
Ok((results, metadata)) => {
2834
format!(
29-
"Found {} results. First result: {}",
35+
"Found {} results.\nResults: {:?}\nMetadata: {:?}",
3036
results.len(),
31-
results.first()
32-
.map(|r| format!("{} - {}", r.title, r.url))
33-
.unwrap_or("No results".to_string())
37+
results,
38+
metadata
3439
)
3540
}
3641
Err(error) => {
37-
format!(
38-
"ERROR: {}",
39-
error
40-
)
42+
format!("ERROR: {:?}", error)
4143
}
4244
}
4345
}
4446

4547
/// test2 demonstrates a more complex web search query with multiple terms
4648
fn test2() -> String {
47-
let config = web_search::Config {
48-
provider: "google".to_string(),
49-
provider_options: vec![],
49+
let params = web_search::SearchParams {
50+
query: "WebAssembly WASI components tutorial".to_string(),
51+
safe_search: None,
52+
language: None,
53+
region: None,
54+
max_results: Some(5),
55+
time_range: None,
56+
include_domains: None,
57+
exclude_domains: None,
58+
include_images: None,
59+
include_html: None,
60+
advanced_answer: None,
5061
};
5162

5263
println!("Sending complex web search request...");
53-
let response = web_search::search(
54-
"WebAssembly WASI components tutorial",
55-
&config,
56-
);
64+
let response = web_search::search_once(&params);
5765
println!("Response: {:?}", response);
5866

5967
match response {
60-
Ok(results) => {
61-
let mut output = format!("Found {} results:\n", results.len());
62-
for (i, result) in results.iter().take(3).enumerate() {
63-
output.push_str(&format!(
64-
"{}. {} - {} ({})\n",
65-
i + 1,
66-
result.title,
67-
result.url,
68-
result.snippet.as_deref().unwrap_or("No snippet")
69-
));
70-
}
71-
output
68+
Ok((results, metadata)) => {
69+
format!(
70+
"Found {} results.\nResults: {:?}\nMetadata: {:?}",
71+
results.len(),
72+
results,
73+
metadata
74+
)
7275
}
7376
Err(error) => {
74-
format!("ERROR: {}", error)
77+
format!("ERROR: {:?}", error)
7578
}
7679
}
7780
}
7881

7982
/// test3 demonstrates error handling with an invalid search query
8083
fn test3() -> String {
81-
let config = web_search::Config {
82-
provider: "google".to_string(),
83-
provider_options: vec![],
84+
let params = web_search::SearchParams {
85+
query: "".to_string(),
86+
safe_search: None,
87+
language: None,
88+
region: None,
89+
max_results: Some(10),
90+
time_range: None,
91+
include_domains: None,
92+
exclude_domains: None,
93+
include_images: None,
94+
include_html: None,
95+
advanced_answer: None,
8496
};
8597

8698
println!("Sending empty web search request...");
87-
let response = web_search::search("", &config);
99+
let response = web_search::search_once(&params);
88100
println!("Response: {:?}", response);
89101

90102
match response {
91-
Ok(results) => {
103+
Ok((results, _metadata)) => {
92104
format!("Unexpected success with {} results", results.len())
93105
}
94106
Err(error) => {
95-
format!("Expected error: {}", error)
107+
format!("Expected error: {:?}", error)
96108
}
97109
}
98110
}
99111

100112
/// test4 simulates a crash during a web search, but only first time.
101113
/// after the automatic recovery it will continue and finish the request successfully.
102114
fn test4() -> String {
103-
let config = web_search::Config {
104-
provider: "google".to_string(),
105-
provider_options: vec![],
115+
let params = web_search::SearchParams {
116+
query: "Golem cloud WebAssembly components".to_string(),
117+
safe_search: None,
118+
language: None,
119+
region: None,
120+
max_results: Some(10),
121+
time_range: None,
122+
include_domains: None,
123+
exclude_domains: None,
124+
include_images: None,
125+
include_html: None,
126+
advanced_answer: None,
106127
};
107128

108129
let name = std::env::var("GOLEM_WORKER_NAME").unwrap();
109-
130+
110131
atomically(|| {
111132
let client = TestHelperApi::new(&name);
112133
let counter = client.blocking_inc_and_get();
@@ -116,27 +137,23 @@ impl Guest for Component {
116137
});
117138

118139
println!("Sending web search request after recovery...");
119-
let response = web_search::search(
120-
"Golem cloud WebAssembly components",
121-
&config,
122-
);
140+
let response = web_search::search_once(&params);
123141
println!("Response: {:?}", response);
124142

125143
match response {
126-
Ok(results) => {
144+
Ok((results, metadata)) => {
127145
format!(
128-
"Recovery successful! Found {} results. First: {}",
146+
"Found {} results.\nResults: {:?}\nMetadata: {:?}",
129147
results.len(),
130-
results.first()
131-
.map(|r| format!("{} - {}", r.title, r.url))
132-
.unwrap_or("No results".to_string())
148+
results,
149+
metadata
133150
)
134151
}
135152
Err(error) => {
136-
format!("ERROR after recovery: {}", error)
153+
format!("ERROR after recovery: {:?}", error)
137154
}
138155
}
139156
}
140157
}
141158

142-
bindings::export!(Component with_types_in bindings);
159+
bindings::export!(Component with_types_in bindings);

golem-web-search/websearch-google/src/lib.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,3 +115,6 @@ impl Guest for GoogleWebSearchComponent {
115115
)
116116
}
117117
}
118+
119+
120+
golem_web_search::export_web_search!(GoogleWebSearchComponent with_types_in golem_web_search);

0 commit comments

Comments
 (0)