• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 use log::*;
2 
3 use tungstenite::{connect, Error, Message, Result};
4 
5 const AGENT: &str = "Tungstenite";
6 
get_case_count() -> Result<u32>7 fn get_case_count() -> Result<u32> {
8     let (mut socket, _) = connect("ws://localhost:9001/getCaseCount")?;
9     let msg = socket.read()?;
10     socket.close(None)?;
11     Ok(msg.into_text()?.parse::<u32>().unwrap())
12 }
13 
update_reports() -> Result<()>14 fn update_reports() -> Result<()> {
15     let (mut socket, _) = connect(&format!("ws://localhost:9001/updateReports?agent={AGENT}"))?;
16     socket.close(None)?;
17     Ok(())
18 }
19 
run_test(case: u32) -> Result<()>20 fn run_test(case: u32) -> Result<()> {
21     info!("Running test case {}", case);
22     let case_url = &format!("ws://localhost:9001/runCase?case={case}&agent={AGENT}");
23     let (mut socket, _) = connect(case_url)?;
24     loop {
25         match socket.read()? {
26             msg @ Message::Text(_) | msg @ Message::Binary(_) => {
27                 socket.send(msg)?;
28             }
29             Message::Ping(_) | Message::Pong(_) | Message::Close(_) | Message::Frame(_) => {}
30         }
31     }
32 }
33 
main()34 fn main() {
35     env_logger::init();
36 
37     let total = get_case_count().unwrap();
38 
39     for case in 1..=total {
40         if let Err(e) = run_test(case) {
41             match e {
42                 Error::ConnectionClosed | Error::Protocol(_) | Error::Utf8 => (),
43                 err => error!("test: {}", err),
44             }
45         }
46     }
47 
48     update_reports().unwrap();
49 }
50