Skip to content

Commit 3886c18

Browse files
committed
more optimizations
1 parent 245daef commit 3886c18

File tree

1 file changed

+17
-26
lines changed

1 file changed

+17
-26
lines changed

examples/drupal_loadtest.rs

Lines changed: 17 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
2525
use rand::Rng;
2626
use regex::Regex;
27-
use scraper::{Html, Selector};
2827

2928
use goose::GooseState;
3029
use goose::goose::{GooseTaskSet, GooseClient, GooseTask};
@@ -120,26 +119,23 @@ fn drupal_loadtest_login(client: &mut GooseClient) {
120119
Ok(r) => {
121120
match r.text() {
122121
Ok(html) => {
123-
// Extract the form_build_id from the user login form.
124-
let user_page = Html::parse_document(&html);
125-
let selector = Selector::parse(r#"input[name='form_build_id']"#).expect("failed to parse selector");
126-
let input = match user_page.select(&selector).next() {
127-
Some(i) => i,
122+
let re = Regex::new( r#"name="form_build_id" value=['"](.*?)['"]"#).unwrap();
123+
let form_build_id = match re.captures(&html) {
124+
Some(f) => f,
128125
None => {
129-
eprintln!("no form_build_id found on /user");
126+
eprintln!("no form_build_id on page: /user page");
130127
client.set_failure();
131128
return;
132129
}
133130
};
134-
let form_build_id = input.value().attr("value").expect("failed to get form_build_id value");
135131

136132
// Log the user in.
137133
let uid = rand::thread_rng().gen_range(3, 5_002);
138134
let username = format!("user{}", uid);
139135
let params = [
140136
("name", username.as_str()),
141137
("pass", "12345"),
142-
("form_build_id", form_build_id),
138+
("form_build_id", &form_build_id[1]),
143139
("form_id", "user_login"),
144140
("op", "Log+in"),
145141
];
@@ -167,50 +163,45 @@ fn drupal_loadtest_post_comment(client: &mut GooseClient) {
167163
match r.text() {
168164
Ok(html) => {
169165
// Extract the form_build_id from the user login form.
170-
let comment_page = Html::parse_document(&html);
171-
172-
let selector = Selector::parse(r#"input[name='form_build_id']"#).expect("failed to parse form_build_id selector");
173-
let input = match comment_page.select(&selector).next() {
174-
Some(i) => i,
166+
let re = Regex::new( r#"name="form_build_id" value=['"](.*?)['"]"#).unwrap();
167+
let form_build_id = match re.captures(&html) {
168+
Some(f) => f,
175169
None => {
176170
eprintln!("no form_build_id found on node/{}", &nid);
177171
client.set_failure();
178172
return;
179173
}
180174
};
181-
let form_build_id = input.value().attr("value").expect("failed to get form_build_id value");
182175

183-
let selector = Selector::parse(r#"input[name='form_token']"#).expect("failed to parse form_token selector");
184-
let input = match comment_page.select(&selector).next() {
185-
Some(i) => i,
176+
let re = Regex::new( r#"name="form_token" value=['"](.*?)['"]"#).unwrap();
177+
let form_token = match re.captures(&html) {
178+
Some(f) => f,
186179
None => {
187180
eprintln!("no form_token found on node/{}", &nid);
188181
client.set_failure();
189182
return;
190183
}
191184
};
192-
let form_token = input.value().attr("value").expect("failed to get form_token value");
193185

194-
let selector = Selector::parse(r#"input[name='form_id']"#).expect("failed to parse form_token selector");
195-
let input = match comment_page.select(&selector).next() {
196-
Some(i) => i,
186+
let re = Regex::new( r#"name="form_id" value=['"](.*?)['"]"#).unwrap();
187+
let form_id = match re.captures(&html) {
188+
Some(f) => f,
197189
None => {
198190
eprintln!("no form_id found on node/{}", &nid);
199191
client.set_failure();
200192
return;
201193
}
202194
};
203-
let form_id = input.value().attr("value").expect("failed to get form_id value");
204195
//println!("form_id: {}, form_build_id: {}, form_token: {}", &form_id, &form_build_id, &form_token);
205196

206197
let comment_body = "this is a test comment body";
207198
let params = [
208199
("subject", "this is a test comment subject"),
209200
("comment_body[und][0][value]", &comment_body),
210201
("comment_body[und][0][format]", "filtered_html"),
211-
("form_build_id", form_build_id),
212-
("form_token", form_token),
213-
("form_id", form_id),
202+
("form_build_id", &form_build_id[1]),
203+
("form_token", &form_token[1]),
204+
("form_id", &form_id[1]),
214205
("op", "Save"),
215206
];
216207
let request_builder = client.goose_post(format!("/comment/reply/{}", &nid).as_str());

0 commit comments

Comments
 (0)