From 2e04e7c85c83a8ffe12253b7a8cf47e80650d277 Mon Sep 17 00:00:00 2001
From: Anthony Graignic <anthony.graignic@uca.fr>
Date: Wed, 10 Jan 2024 14:14:58 +0100
Subject: [PATCH 1/2] Update serialization of MobilityRecord

Fix potential empty output
---
 src/utils/mobility_data.rs | 23 +++++++++--------------
 1 file changed, 9 insertions(+), 14 deletions(-)

diff --git a/src/utils/mobility_data.rs b/src/utils/mobility_data.rs
index edc15bf..44d77f1 100644
--- a/src/utils/mobility_data.rs
+++ b/src/utils/mobility_data.rs
@@ -6,7 +6,7 @@ use ethers::{
     types::Bytes,
 };
 use primitive_types::U256;
-use serde::Deserialize;
+use serde::{Deserialize, Serialize};
 use time::OffsetDateTime;
 
 /// Mobility Record from Public Transportation
@@ -15,7 +15,7 @@ use time::OffsetDateTime;
 ///
 /// CSV header:
 /// id user_id network service label created_at from_coord from_label from_datetime from_latitude from_longitude to_coord to_label to_datetime to_latitude to_longitude
-#[derive(Debug, Deserialize, Clone)]
+#[derive(Clone, Debug, Deserialize, Serialize)]
 pub struct MobilityRecord {
     pub id: u64,
     pub user_id: u64,
@@ -44,18 +44,12 @@ pub struct MobilityRecord {
 }
 
 impl MobilityRecord {
-    unsafe fn any_as_u8_slice<T: Sized>(p: &T) -> &[u8] {
-        ::core::slice::from_raw_parts((p as *const T) as *const u8, ::core::mem::size_of::<T>())
-    }
+    // Convert to a byte array
+    // TODO: update serialization when CSV struct is final
     pub fn to_bytes(&self) -> Bytes {
-        let bytes: &[u8] = unsafe {
-            ::core::slice::from_raw_parts(
-                (self as *const MobilityRecord) as *const u8,
-                ::core::mem::size_of::<MobilityRecord>(),
-            )
-        };
-
-        Bytes::from_static(bytes)
+        let serialized_mobility_record = serde_json::to_string(self).unwrap();
+        let bytes = serialized_mobility_record.as_bytes();
+        Bytes::from(bytes.to_vec())
     }
 }
 
@@ -192,7 +186,8 @@ mod tests {
 
         // FIXME Binary data change between tests o
         assert!(!result.to_string().is_empty());
-        // assert_eq!("0x", result.to_string());
+        assert_eq!("0x7b226964223a313333372c22757365725f6964223a312c226e6574776f726b223a226d756c686f757365222c2273657276696365223a225055424c49435f5452414e53504f5254222c226c6162656c223a22424c41424c41424c41222c22637265617465645f6174223a22323032332d31312d30375431303a33353a30385a222c2266726f6d5f636f6f7264223a6e756c6c2c2266726f6d5f6c6162656c223a6e756c6c2c2266726f6d5f6461746574696d65223a6e756c6c2c2266726f6d5f6c61746974756465223a6e756c6c2c2266726f6d5f6c6f6e676974756465223a6e756c6c2c22746f5f636f6f7264223a6e756c6c2c22746f5f6c6162656c223a6e756c6c2c22746f5f6461746574696d65223a6e756c6c2c22746f5f6c61746974756465223a6e756c6c2c22746f5f6c6f6e676974756465223a6e756c6c7d",
+         result.to_string());
     }
 
     #[test]
-- 
GitLab


From ec9fa9fdb653a9a7916544c99e7426a6832186a6 Mon Sep 17 00:00:00 2001
From: Anthony Graignic <anthony.graignic@uca.fr>
Date: Wed, 10 Jan 2024 15:10:19 +0100
Subject: [PATCH 2/2] Replace default input bytes in Bx simulation with real
 ones

---
 src/main.rs                | 2 +-
 src/utils/mobility_data.rs | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/main.rs b/src/main.rs
index b59a281..beedb7c 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -292,7 +292,7 @@ async fn main() -> Result<(), anyhow::Error> {
                                 chain_id,
                                 time_since_beginning,
                                 simulation_behavior.quantity,
-                                Bytes::default(), // Bytes::from_static(&behavior.mobility_record),
+                                simulation_behavior.mobility_record.to_bytes()
                             ).await;
                             info!("Sent bx({:?}): {:?}",simulation_behavior.id,bx_hash);
                     }
diff --git a/src/utils/mobility_data.rs b/src/utils/mobility_data.rs
index 44d77f1..3640577 100644
--- a/src/utils/mobility_data.rs
+++ b/src/utils/mobility_data.rs
@@ -45,7 +45,7 @@ pub struct MobilityRecord {
 
 impl MobilityRecord {
     // Convert to a byte array
-    // TODO: update serialization when CSV struct is final
+    // TODO: update serialization when CSV struct is in final version
     pub fn to_bytes(&self) -> Bytes {
         let serialized_mobility_record = serde_json::to_string(self).unwrap();
         let bytes = serialized_mobility_record.as_bytes();
-- 
GitLab