|
17 | 17 | * under the License. |
18 | 18 | */ |
19 | 19 |
|
20 | | -use iggy_common::MessageClient; |
21 | | -use iggy_common::{Consumer, Identifier, PollingStrategy}; |
| 20 | +use crate::connectors::random_source_liveness; |
22 | 21 | use integration::harness::seeds; |
23 | 22 | use integration::iggy_harness; |
24 | | -use std::time::Duration; |
25 | | -use tokio::time::sleep; |
26 | 23 |
|
27 | 24 | #[iggy_harness( |
28 | 25 | server(connectors_runtime(config_path = "tests/connectors/random/source.toml")), |
29 | 26 | seed = seeds::connector_stream |
30 | 27 | )] |
31 | 28 | async fn random_source_produces_messages(harness: &TestHarness) { |
32 | | - sleep(Duration::from_secs(1)).await; |
33 | | - |
34 | | - let client = harness.root_client().await.unwrap(); |
35 | | - let stream_id: Identifier = seeds::names::STREAM.try_into().unwrap(); |
36 | | - let topic_id: Identifier = seeds::names::TOPIC.try_into().unwrap(); |
37 | | - let consumer_id: Identifier = "test_consumer".try_into().unwrap(); |
38 | | - |
39 | | - let messages = client |
40 | | - .poll_messages( |
41 | | - &stream_id, |
42 | | - &topic_id, |
43 | | - None, |
44 | | - &Consumer::new(consumer_id), |
45 | | - &PollingStrategy::next(), |
46 | | - 10, |
47 | | - true, |
48 | | - ) |
49 | | - .await |
50 | | - .expect("Failed to poll messages"); |
51 | | - |
52 | | - assert!( |
53 | | - !messages.messages.is_empty(), |
54 | | - "No messages received from random source" |
55 | | - ); |
56 | | - assert!( |
57 | | - messages.current_offset > 0, |
58 | | - "Current offset should be greater than 0" |
59 | | - ); |
60 | | -} |
61 | | - |
62 | | -#[iggy_harness( |
63 | | - server(connectors_runtime(config_path = "tests/connectors/random/source.toml")), |
64 | | - seed = seeds::connector_stream |
65 | | -)] |
66 | | -async fn state_persists_across_connector_restart(harness: &mut TestHarness) { |
67 | | - let stream_id: Identifier = seeds::names::STREAM.try_into().unwrap(); |
68 | | - let topic_id: Identifier = seeds::names::TOPIC.try_into().unwrap(); |
69 | | - let consumer_id: Identifier = "state_test_consumer".try_into().unwrap(); |
70 | | - |
71 | | - sleep(Duration::from_secs(1)).await; |
72 | | - |
73 | | - let client = harness.root_client().await.unwrap(); |
74 | | - let offset_before = { |
75 | | - let messages = client |
76 | | - .poll_messages( |
77 | | - &stream_id, |
78 | | - &topic_id, |
79 | | - None, |
80 | | - &Consumer::new(consumer_id.clone()), |
81 | | - &PollingStrategy::next(), |
82 | | - 100, |
83 | | - true, |
84 | | - ) |
85 | | - .await |
86 | | - .expect("Failed to poll messages before restart"); |
87 | | - assert!( |
88 | | - messages.current_offset > 0, |
89 | | - "Should have messages before restart" |
90 | | - ); |
91 | | - messages.current_offset |
92 | | - }; |
93 | | - |
94 | | - harness |
95 | | - .server_mut() |
96 | | - .stop_dependents() |
97 | | - .expect("Failed to stop connectors"); |
98 | | - harness |
99 | | - .server_mut() |
100 | | - .start_dependents() |
101 | | - .await |
102 | | - .expect("Failed to restart connectors"); |
103 | | - sleep(Duration::from_secs(1)).await; |
104 | | - |
105 | | - let offset_after = client |
106 | | - .poll_messages( |
107 | | - &stream_id, |
108 | | - &topic_id, |
109 | | - None, |
110 | | - &Consumer::new(consumer_id), |
111 | | - &PollingStrategy::next(), |
112 | | - 100, |
113 | | - true, |
114 | | - ) |
115 | | - .await |
116 | | - .expect("Failed to poll messages after restart") |
117 | | - .current_offset; |
118 | | - |
119 | | - assert!( |
120 | | - offset_after > offset_before, |
121 | | - "After restart, offset {offset_after} should be greater than before {offset_before}" |
122 | | - ); |
| 29 | + random_source_liveness::assert_produces_messages(harness).await; |
123 | 30 | } |
0 commit comments