use std::collections::HashMap;
use serde::{Deserialize, Serialize};
use time::{serde::timestamp, OffsetDateTime};
#[derive(Debug, Serialize, Deserialize)]
pub struct Container {
pub id: String,
pub pid: usize,
pub status: String,
pub bundle: String,
pub rootfs: String,
#[serde(with = "timestamp")]
pub created: OffsetDateTime,
pub annotations: HashMap<String, String>,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn serde_test() {
let j = r#"
{
"id": "fake",
"pid": 1000,
"status": "RUNNING",
"bundle": "/path/to/bundle",
"rootfs": "/path/to/rootfs",
"created": 1431684000,
"annotations": {
"foo": "bar"
}
}"#;
let c: Container = serde_json::from_str(j).unwrap();
assert_eq!(c.id, "fake");
assert_eq!(c.pid, 1000);
assert_eq!(c.status, "RUNNING");
assert_eq!(c.bundle, "/path/to/bundle");
assert_eq!(c.rootfs, "/path/to/rootfs");
assert_eq!(
c.created,
OffsetDateTime::from_unix_timestamp(1431684000).unwrap()
);
assert_eq!(c.annotations.get("foo"), Some(&"bar".to_string()));
assert_eq!(c.annotations.get("bar"), None);
}
}