pulsar_sys/
lib.rs

1#![allow(non_upper_case_globals)]
2#![allow(non_camel_case_types)]
3#![allow(non_snake_case)]
4
5include!(concat!(env!("OUT_DIR"), "/bindings.rs"));
6
7#[test]
8fn test_connect_disconnect() {
9    use std::ffi::{CStr, CString};
10
11    unsafe {
12        let url = CString::new("pulsar://localhost:6650").unwrap();
13        let config = pulsar_client_configuration_create();
14        let client = pulsar_client_create(url.as_ptr(), config);
15        pulsar_client_configuration_free(config);
16
17        let producer = Box::into_raw(Box::new(std::ptr::null_mut() as *mut pulsar_producer_t));
18        let config = pulsar_producer_configuration_create();
19        let topic = CString::new("persistent://public/default/my-topic").unwrap();
20        let result = pulsar_client_create_producer(client, topic.as_ptr(), config, producer);
21
22        assert_eq!(
23            CStr::from_ptr(pulsar_result_str(result)).to_str().unwrap(),
24            "Ok"
25        );
26
27        let result = pulsar_producer_close(*producer);
28        pulsar_producer_free(*producer);
29        drop(producer);
30
31        assert_eq!(
32            CStr::from_ptr(pulsar_result_str(result)).to_str().unwrap(),
33            "Ok"
34        );
35
36        let result = pulsar_client_close(client);
37        pulsar_client_free(client);
38        drop(client);
39
40        assert_eq!(
41            CStr::from_ptr(pulsar_result_str(result)).to_str().unwrap(),
42            "Ok"
43        );
44    }
45}