mockforge_tcp/
fixtures.rs1use serde::{Deserialize, Serialize};
4use std::path::PathBuf;
5
6#[derive(Debug, Clone, Serialize, Deserialize)]
8pub struct TcpFixture {
9 pub identifier: String,
11
12 pub name: String,
14
15 #[serde(default)]
17 pub description: String,
18
19 pub match_criteria: MatchCriteria,
21
22 pub response: TcpResponse,
24
25 #[serde(default)]
27 pub behavior: BehaviorConfig,
28}
29
30#[derive(Debug, Clone, Serialize, Deserialize, Default)]
32pub struct MatchCriteria {
33 #[serde(default)]
35 pub data_pattern: Option<String>,
36
37 #[serde(default)]
39 pub text_pattern: Option<String>,
40
41 #[serde(default)]
43 pub exact_bytes: Option<String>,
44
45 #[serde(default)]
47 pub match_all: bool,
48
49 #[serde(default)]
51 pub min_length: Option<usize>,
52
53 #[serde(default)]
55 pub max_length: Option<usize>,
56}
57
58#[derive(Debug, Clone, Serialize, Deserialize)]
60pub struct TcpResponse {
61 pub data: String,
63
64 #[serde(default = "default_encoding")]
66 pub encoding: String,
67
68 #[serde(default)]
70 pub file_path: Option<PathBuf>,
71
72 #[serde(default)]
74 pub delay_ms: u64,
75
76 #[serde(default)]
78 pub close_after_response: bool,
79
80 #[serde(default)]
82 pub keep_alive: bool,
83}
84
85fn default_encoding() -> String {
86 "text".to_string()
87}
88
89#[derive(Debug, Clone, Serialize, Deserialize, Default)]
91pub struct BehaviorConfig {
92 #[serde(default)]
94 pub connection_delay_ms: u64,
95
96 #[serde(default)]
98 pub throttle_bytes_per_sec: Option<u64>,
99
100 #[serde(default)]
102 pub drop_connection_probability: f64,
103
104 #[serde(default)]
106 pub partial_data_bytes: Option<usize>,
107}