Skip to content

Commit

Permalink
Merge pull request #81 from nttcom/refactoring/core-message-test
Browse files Browse the repository at this point in the history
Messageのテストをbytes配列を使ってテストするように修正
  • Loading branch information
yuki-uchida committed Sep 13, 2024
2 parents 9dd4ac8 + 72265af commit 890038b
Show file tree
Hide file tree
Showing 13 changed files with 585 additions and 386 deletions.
106 changes: 47 additions & 59 deletions moqt-core/src/modules/messages/announce.rs
Original file line number Diff line number Diff line change
Expand Up @@ -95,19 +95,15 @@ mod success {
use crate::messages::moqt_payload::MOQTPayload;
use crate::messages::version_specific_parameters::AuthorizationInfo;
use crate::modules::messages::announce::Announce;
use crate::modules::messages::version_specific_parameters::{
VersionSpecificParameter, VersionSpecificParameterType,
};
use crate::modules::variable_integer::write_variable_integer;
use crate::modules::messages::version_specific_parameters::VersionSpecificParameter;
use bytes::BytesMut;

#[test]
fn packetize_announce_with_parameter() {
let track_namespace = "live.example.com/meeting/123/member/alice/".to_string();
let track_namespace = "live.example.com".to_string();
let number_of_parameters = 1;

let parameter_value = "test".to_string();
let parameter_length = parameter_value.len() as u8;

let parameter = VersionSpecificParameter::AuthorizationInfo(AuthorizationInfo::new(
parameter_value.clone(),
));
Expand All @@ -117,93 +113,85 @@ mod success {
let mut buf = bytes::BytesMut::new();
announce_message.packetize(&mut buf);

// Track Namespace Length
let mut combined_bytes = Vec::from((track_namespace.len() as u8).to_be_bytes());
// Track Namespace
combined_bytes.extend(track_namespace.as_bytes().to_vec());
// Number of Parameters
combined_bytes.extend(1u8.to_be_bytes());
// Parameters
combined_bytes
.extend((VersionSpecificParameterType::AuthorizationInfo as u8).to_be_bytes());
combined_bytes.extend(write_variable_integer(parameter_length as u64));
combined_bytes.extend(parameter_value.as_bytes());

assert_eq!(buf.as_ref(), combined_bytes.as_slice());
let expected_bytes_array = [
16, // Track Namespace(b): Length
108, 105, 118, 101, 46, 101, 120, 97, 109, 112, 108, 101, 46, 99, 111,
109, // Track Namespace(b): Value("live.example.com")
1, // Number of Parameters (i)
2, // Parameters (..): Parameter Type(AuthorizationInfo)
4, // Parameters (..): Length
116, 101, 115, 116, // Parameters (..): Value("test")
];

assert_eq!(buf.as_ref(), expected_bytes_array);
}

#[test]
fn depacketize_announce_with_parameter() {
let track_namespace = "live.example.com/meeting/123/member/alice/".to_string();
let number_of_parameters = 1;
let bytes_array = [
16, // Track Namespace(b): Length
108, 105, 118, 101, 46, 101, 120, 97, 109, 112, 108, 101, 46, 99, 111,
109, // Track Namespace(b): Value("live.example.com")
1, // Number of Parameters (i)
2, // Parameters (..): Parameter Type(AuthorizationInfo)
4, // Parameters (..): Length
116, 101, 115, 116, // Parameters (..): Value("test")
];
let mut buf = BytesMut::with_capacity(bytes_array.len());
buf.extend_from_slice(&bytes_array);
let depacketized_announce_message = Announce::depacketize(&mut buf).unwrap();

let track_namespace = "live.example.com".to_string();
let number_of_parameters = 1;
let parameter_value = "test".to_string();
let parameter_length = parameter_value.len() as u8;

let parameter = VersionSpecificParameter::AuthorizationInfo(AuthorizationInfo::new(
parameter_value.clone(),
));
let parameters = vec![parameter];
let expected_announce_message =
Announce::new(track_namespace.clone(), number_of_parameters, parameters);

// Track Namespace Length
let mut combined_bytes = Vec::from((track_namespace.len() as u8).to_be_bytes());
// Track Namespace
combined_bytes.extend(track_namespace.as_bytes().to_vec());
// Number of Parameters
combined_bytes.extend(1u8.to_be_bytes());
// Parameters
combined_bytes
.extend((VersionSpecificParameterType::AuthorizationInfo as u8).to_be_bytes());
combined_bytes.extend(write_variable_integer(parameter_length as u64));
combined_bytes.extend(parameter_value.as_bytes());

let mut buf = bytes::BytesMut::from(combined_bytes.as_slice());
let depacketized_announce_message = Announce::depacketize(&mut buf).unwrap();

assert_eq!(depacketized_announce_message, expected_announce_message);
}

#[test]
fn packetize_announce_without_parameter() {
let track_namespace = "live.example.com/meeting/123/member/alice/".to_string();
let track_namespace = "live.example.com".to_string();
let number_of_parameters = 0;
let parameters = vec![];
let announce_message =
Announce::new(track_namespace.clone(), number_of_parameters, parameters);
let mut buf = bytes::BytesMut::new();
announce_message.packetize(&mut buf);

// Track Namespace Length
let mut combined_bytes = Vec::from((track_namespace.len() as u8).to_be_bytes());
// Track Namespace
combined_bytes.extend(track_namespace.as_bytes().to_vec());
// Number of Parameters
combined_bytes.extend(0u8.to_be_bytes());
let expected_bytes_array = [
16, // Track Namespace(b): Length
108, 105, 118, 101, 46, 101, 120, 97, 109, 112, 108, 101, 46, 99, 111,
109, // Track Namespace(b): Value("live.example.com")
0, // Number of Parameters (i)
];

assert_eq!(buf.as_ref(), combined_bytes.as_slice());
assert_eq!(buf.as_ref(), expected_bytes_array);
}

#[test]
fn depacketize_announce_without_parameter() {
let track_namespace = "live.example.com/meeting/123/member/alice/".to_string();
let number_of_parameters = 0;
let bytes_array = [
16, // Track Namespace(b): Length
108, 105, 118, 101, 46, 101, 120, 97, 109, 112, 108, 101, 46, 99, 111,
109, // Track Namespace(b): Value("live.example.com")
0, // Number of Parameters (i)
];
let mut buf = BytesMut::with_capacity(bytes_array.len());
buf.extend_from_slice(&bytes_array);
let depacketized_announce_message = Announce::depacketize(&mut buf).unwrap();

let track_namespace = "live.example.com".to_string();
let number_of_parameters = 0;
let parameters = vec![];
let expected_announce_message =
Announce::new(track_namespace.clone(), number_of_parameters, parameters);

// Track Namespace Length
let mut combined_bytes = Vec::from((track_namespace.len() as u8).to_be_bytes());
// Track Namespace
combined_bytes.extend(track_namespace.as_bytes().to_vec());
// Number of Parameters
combined_bytes.extend(0u8.to_be_bytes());

let mut buf = bytes::BytesMut::from(combined_bytes.as_slice());
let depacketized_announce_message = Announce::depacketize(&mut buf).unwrap();

assert_eq!(depacketized_announce_message, expected_announce_message);
}
}
41 changes: 22 additions & 19 deletions moqt-core/src/modules/messages/announce_error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -82,45 +82,48 @@ mod success {
use crate::{
messages::moqt_payload::MOQTPayload, modules::messages::announce_error::AnnounceError,
};
use bytes::BytesMut;
#[test]
fn packetize_announce_error() {
let track_namespace = "test".to_string();
let track_namespace_length = track_namespace.len() as u8;
let error_code: u64 = 1;
let reason_phrase = "already exist".to_string();

let announce_error =
AnnounceError::new(track_namespace.clone(), error_code, reason_phrase.clone());
let mut buf = bytes::BytesMut::new();
announce_error.packetize(&mut buf);

let mut combined_bytes = Vec::from(track_namespace_length.to_be_bytes());
combined_bytes.extend_from_slice(track_namespace.as_bytes());
combined_bytes.extend_from_slice(&(error_code as u8).to_be_bytes());
combined_bytes.extend_from_slice(&(reason_phrase.len() as u8).to_be_bytes());
combined_bytes.extend_from_slice(reason_phrase.as_bytes());

assert_eq!(buf.as_ref(), combined_bytes.as_slice());
let expected_bytes_array = [
4, // Track Namespace(b): Length
116, 101, 115, 116, // Track Namespace(b): Value("test")
1, // Error Code (i)
13, // Reason Phrase (b): length
97, 108, 114, 101, 97, 100, 121, 32, 101, 120, 105, 115,
116, // Reason Phrase (b): Value("already exist")
];
assert_eq!(buf.as_ref(), expected_bytes_array.as_slice());
}

#[test]
fn depacketize_announce_error() {
let bytes_array = [
4, // Track Namespace(b): Length
116, 101, 115, 116, // Track Namespace(b): Value("test")
1, // Error Code (i)
13, // Reason Phrase (b): length
97, 108, 114, 101, 97, 100, 121, 32, 101, 120, 105, 115,
116, // Reason Phrase (b): Value("already exist")
];
let mut buf = BytesMut::with_capacity(bytes_array.len());
buf.extend_from_slice(&bytes_array);
let depacketized_announce_error = AnnounceError::depacketize(&mut buf).unwrap();

let track_namespace = "test".to_string();
let track_namespace_length = track_namespace.len() as u8;
let error_code: u64 = 1;
let reason_phrase = "already exist".to_string();
let expected_announce_error =
AnnounceError::new(track_namespace.clone(), error_code, reason_phrase.clone());

let mut combined_bytes = Vec::from(track_namespace_length.to_be_bytes());
combined_bytes.extend_from_slice(track_namespace.as_bytes());
combined_bytes.extend_from_slice(&(error_code as u8).to_be_bytes());
combined_bytes.extend_from_slice(&(reason_phrase.len() as u8).to_be_bytes());
combined_bytes.extend_from_slice(reason_phrase.as_bytes());

let mut buf = bytes::BytesMut::from(combined_bytes.as_slice());
let depacketized_announce_error = AnnounceError::depacketize(&mut buf).unwrap();

assert_eq!(depacketized_announce_error, expected_announce_error);
}
}
27 changes: 12 additions & 15 deletions moqt-core/src/modules/messages/announce_ok.rs
Original file line number Diff line number Diff line change
Expand Up @@ -55,27 +55,24 @@ mod success {
let mut buf = BytesMut::new();
announce_ok.packetize(&mut buf);

// Track Namespace bytes Length
let mut combined_bytes = Vec::from((track_namespace.len() as u8).to_be_bytes());
// Track Namespace bytes
combined_bytes.extend(track_namespace.as_bytes().to_vec());

assert_eq!(buf.as_ref(), combined_bytes.as_slice());
let expected_bytes_array = [
4, // Track Namespace(b): Length
116, 101, 115, 116, // Track Namespace(b): Value("test")
];
assert_eq!(buf.as_ref(), expected_bytes_array.as_slice());
}

#[test]
fn depacketize() {
let track_namespace = "test".to_string();
let mut buf = BytesMut::new();
// Track Namespace bytes Length
buf.extend((track_namespace.len() as u8).to_be_bytes());
// Track Namespace bytes
buf.extend(track_namespace.as_bytes().to_vec());

let bytes_array = [
4, // Track Namespace(b): Length
116, 101, 115, 116, // Track Namespace(b): Value("test")
];
let mut buf = BytesMut::with_capacity(bytes_array.len());
buf.extend_from_slice(&bytes_array);
let announce_ok = AnnounceOk::depacketize(&mut buf).unwrap();

let expected_announce_ok = AnnounceOk::new(track_namespace.clone());

let expected_announce_ok = AnnounceOk::new("test".to_string());
assert_eq!(announce_ok, expected_announce_ok);
}
}
64 changes: 25 additions & 39 deletions moqt-core/src/modules/messages/client_setup.rs
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,6 @@ impl MOQTPayload for ClientSetup {

#[cfg(test)]
mod success {
use crate::modules::variable_integer::write_variable_integer;
use crate::{
constants::MOQ_TRANSPORT_VERSION,
messages::moqt_payload::MOQTPayload,
Expand All @@ -94,62 +93,49 @@ mod success {
setup_parameters::{RoleCase, RoleParameter, SetupParameter},
},
};
use bytes::BytesMut;
#[test]
fn packetize_client_setup() {
let supported_versions = vec![MOQ_TRANSPORT_VERSION];
let supported_versions_length = supported_versions.len() as u8;

let role_parameter = RoleParameter::new(RoleCase::Delivery);
let setup_parameters = vec![SetupParameter::RoleParameter(role_parameter.clone())];
let setup_parameters_length = setup_parameters.len() as u8;

let client_setup = ClientSetup::new(supported_versions, setup_parameters.clone());
let mut buf = bytes::BytesMut::new();
client_setup.packetize(&mut buf);

// Number of Supported Versions (i)
let mut combined_bytes = Vec::from(supported_versions_length.to_be_bytes());
// Supported Version (i)
combined_bytes.extend(write_variable_integer(MOQ_TRANSPORT_VERSION as u64));
// Number of Parameters (i)
combined_bytes.extend(setup_parameters_length.to_be_bytes());
// SETUP Parameters (..)
combined_bytes.extend(vec![
role_parameter.key as u8,
role_parameter.value_length,
role_parameter.value as u8,
]);

assert_eq!(buf.as_ref(), combined_bytes.as_slice());
let expected_bytes_array = [
1, // Number of Supported Versions (i)
192, // Supported Version (i): Length(11 of 2MSB)
0, 0, 0, 255, 0, 0, 1, // Supported Version(i): Value(0xff000001) in 62bit
1, // Number of Parameters (i)
0, // SETUP Parameters (..): Type(Role)
1, // SETUP Parameters (..): Length
2, // SETUP Parameters (..): Role(Delivery)
];

assert_eq!(buf.as_ref(), expected_bytes_array);
}

#[test]
fn depacketize_client_setup() {
let supported_versions = vec![MOQ_TRANSPORT_VERSION];
let supported_versions_length = supported_versions.len() as u8;
let bytes_array = [
1, // Number of Supported Versions (i)
192, // Supported Version (i): Length(11 of 2MSB)
0, 0, 0, 255, 0, 0, 1, // Supported Version(i): Value(0xff000001) in 62bit
1, // Number of Parameters (i)
0, // SETUP Parameters (..): Type(Role)
1, // SETUP Parameters (..): Length
2, // SETUP Parameters (..): Role(Delivery)
];
let mut buf = BytesMut::with_capacity(bytes_array.len());
buf.extend_from_slice(&bytes_array);
let depacketized_client_setup = ClientSetup::depacketize(&mut buf).unwrap();

let supported_versions = vec![MOQ_TRANSPORT_VERSION];
let role_parameter = RoleParameter::new(RoleCase::Delivery);
let setup_parameters = vec![SetupParameter::RoleParameter(role_parameter.clone())];
let setup_parameters_length = setup_parameters.len() as u8;

let expected_client_setup = ClientSetup::new(supported_versions, setup_parameters.clone());

// Number of Supported Versions (i)
let mut combined_bytes = Vec::from(supported_versions_length.to_be_bytes());
// Supported Version (i)
combined_bytes.extend(write_variable_integer(MOQ_TRANSPORT_VERSION as u64));
// Number of Parameters (i)
combined_bytes.extend(setup_parameters_length.to_be_bytes());
// SETUP Parameters (..)
combined_bytes.extend(vec![
role_parameter.key as u8,
role_parameter.value_length,
role_parameter.value as u8,
]);

let mut buf = bytes::BytesMut::from(combined_bytes.as_slice());
let depacketized_client_setup = ClientSetup::depacketize(&mut buf).unwrap();

assert_eq!(depacketized_client_setup, expected_client_setup);
}
}
Loading

0 comments on commit 890038b

Please sign in to comment.