Skip to content

Commit

Permalink
fix tests
Browse files Browse the repository at this point in the history
  • Loading branch information
f1shl3gs committed Jul 14, 2024
1 parent f6aede1 commit b51066e
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 18 deletions.
37 changes: 32 additions & 5 deletions lib/codecs/src/encoding/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -48,10 +48,9 @@ impl FramingConfig {

/// Encoding configuration
#[derive(Configurable, Clone, Debug, Deserialize, Serialize)]
#[serde(deny_unknown_fields)]
pub struct EncodingConfig {
/// The encoding codec used to serialize the events before outputting.
#[configurable(required)]
#[serde(flatten)]
codec: SerializerConfig,

#[serde(flatten)]
Expand Down Expand Up @@ -172,10 +171,38 @@ where

#[cfg(test)]
mod tests {
use event::log::parse_value_path;

use super::*;
use crate::encoding::format::json::JsonSerializerConfig;
use crate::encoding::TimestampFormat;
use event::log::parse_value_path;

#[test]
fn json() {
for (input, want) in [
(
r#"codec: json"#,
SerializerConfig::Json(JsonSerializerConfig { pretty: false }),
),
(
r#"
codec: json
pretty: false
"#,
SerializerConfig::Json(JsonSerializerConfig { pretty: false }),
),
(
r#"
codec: json
pretty: true
"#,
SerializerConfig::Json(JsonSerializerConfig { pretty: true }),
),
] {
let got = serde_yaml::from_str::<SerializerConfig>(input).unwrap();
assert_eq!(got, want);
}
}

#[test]
fn deserialize() {
Expand Down Expand Up @@ -242,7 +269,7 @@ encoding:
only_fields: [ "a.b.c" ]
"#,
Some(FramingConfig::NewlineDelimited),
SerializerConfig::Json,
SerializerConfig::Json(JsonSerializerConfig { pretty: false }),
Transformer::new(Some(vec![parse_value_path("a.b.c").unwrap()]), None, None)
.unwrap(),
),
Expand All @@ -253,7 +280,7 @@ encoding:
only_fields: [ "a.b.c" ]
"#,
None,
SerializerConfig::Json,
SerializerConfig::Json(JsonSerializerConfig { pretty: false }),
Transformer::new(Some(vec![parse_value_path("a.b.c").unwrap()]), None, None)
.unwrap(),
),
Expand Down
4 changes: 3 additions & 1 deletion lib/codecs/src/encoding/format/json.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,14 @@ use serde::{Deserialize, Serialize};
use tokio_util::codec::Encoder;

use super::SerializeError;
use crate::serde::skip_serializing_if_default;

/// Config used to build a `JsonSerializer`
#[derive(Clone, Configurable, Debug, Deserialize, Serialize)]
#[cfg_attr(test, derive(PartialEq))]
pub struct JsonSerializerConfig {
/// Whether to use pretty JSON formatting.
#[serde(default)]
#[serde(default, skip_serializing_if = "skip_serializing_if_default")]
pub pretty: bool,
}

Expand Down
46 changes: 34 additions & 12 deletions lib/codecs/src/encoding/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,20 +18,17 @@ use serde::{Deserialize, Serialize};

pub use config::{EncodingConfig, EncodingConfigWithFraming, FramingConfig, SinkType};
pub use encoder::{Encoder, EncodingError};
pub use format::{
json::JsonSerializer, logfmt::LogfmtSerializer, native_json::NativeJsonSerializer,
text::TextSerializer,
};
pub use framing::{
bytes::BytesEncoder,
character::{CharacterDelimitedEncoder, CharacterDelimitedFramerConfig},
length_delimited::LengthDelimitedEncoder,
newline::NewlineDelimitedEncoder,
};
pub use format::json::{JsonSerializer, JsonSerializerConfig};
pub use format::logfmt::LogfmtSerializer;
pub use format::native_json::NativeJsonSerializer;
pub use format::text::TextSerializer;
pub use framing::bytes::BytesEncoder;
pub use framing::character::{CharacterDelimitedEncoder, CharacterDelimitedFramerConfig};
pub use framing::length_delimited::LengthDelimitedEncoder;
pub use framing::newline::NewlineDelimitedEncoder;
pub use transformer::{TimestampFormat, Transformer};

use super::FramingError;
pub use crate::encoding::format::json::JsonSerializerConfig;

/// The error returned when serializing a structured event into bytes.
#[derive(Debug)]
Expand Down Expand Up @@ -80,7 +77,8 @@ impl Display for SerializeError {

/// Configuration for building a `Serializer`
#[derive(Configurable, Clone, Debug, Deserialize, Serialize)]
#[serde(rename_all = "snake_case")]
#[serde(tag = "codec", rename_all = "snake_case")]
#[cfg_attr(test, derive(PartialEq))]
pub enum SerializerConfig {
/// Configures the `JsonSerializer`
Json(JsonSerializerConfig),
Expand Down Expand Up @@ -112,10 +110,13 @@ impl SerializerConfig {
pub enum Serializer {
/// Uses a `JsonSerializer` for serialization.
Json(JsonSerializer),

/// Uses a `LogfmtSerializer` for serialization.
Logfmt(LogfmtSerializer),

/// Uses a `NativeJsonSerializer` for serialization.
Native(NativeJsonSerializer),

/// Uses a `TextSerializer` for serialization.
Text(TextSerializer),
}
Expand Down Expand Up @@ -182,3 +183,24 @@ impl tokio_util::codec::Encoder<()> for Framer {
}
}
}

#[cfg(test)]
mod tests {
use super::*;

#[test]
fn config_json() {
let config = SerializerConfig::Json(JsonSerializerConfig { pretty: false });
let json = serde_json::to_string_pretty(&config).unwrap();
let got = serde_json::from_str::<SerializerConfig>(&json).unwrap();
assert_eq!(config, got);
}

#[test]
fn config_yaml() {
let config = SerializerConfig::Json(JsonSerializerConfig { pretty: false });
let json = serde_yaml::to_string(&config).unwrap();
let got = serde_yaml::from_str::<SerializerConfig>(&json).unwrap();
assert_eq!(config, got);
}
}

0 comments on commit b51066e

Please sign in to comment.