extern crate jmx;
use std::process::Command;
use std::thread;
use std::time::Duration;
use jmx::MBeanAddress;
use jmx::MBeanClient;
use jmx::MBeanClientTrait;
static JMX_PORT: u16 = 1616;
#[test]
fn introduction() {
let mut server = Command::new("java")
.arg("-Dcom.sun.management.jmxremote")
.arg(format!("-Dcom.sun.management.jmxremote.port={}", JMX_PORT))
.arg("-Dcom.sun.management.jmxremote.authenticate=false")
.arg("-Dcom.sun.management.jmxremote.ssl=false")
.arg("TestServer")
.current_dir("tests/jmxserver")
.spawn()
.expect("Could not start JMX server");
thread::sleep(Duration::from_secs(1));
run_test();
let _ = server.kill();
}
fn run_test() {
let url = format!(
"service:jmx:rmi://localhost:{}/jndi/rmi://localhost:{}/jmxrmi",
JMX_PORT, JMX_PORT
);
let server = MBeanClient::connect(MBeanAddress::service_url(url))
.expect("Failed to connect to the JMX test server");
let threads: i32 = server.get_attribute("FOO:name=ServerBean", "ThreadCount").unwrap();
let schema: String = server.get_attribute("FOO:name=ServerBean", "SchemaName").unwrap();
assert_eq!(threads, 16);
assert_eq!(schema, "test");
}