rd_agent_intf/
side_defs.rs

1// Copyright (c) Facebook, Inc. and its affiliates.
2use serde::{Deserialize, Serialize};
3use std::collections::BTreeMap;
4
5use rd_util::*;
6
7const SIDE_DEF_DOC: &str = "\
8//
9// rd-agent side/sysload definitions
10//
11//  DEF_ID.args[]: Command arguments
12//  DEF_ID.frozen_exp: Sideloader frozen expiration duration
13//
14";
15
16#[derive(Debug, Clone, Serialize, Deserialize)]
17pub struct SideloadSpec {
18    pub args: Vec<String>,
19    pub frozen_exp: u32,
20}
21
22#[derive(Serialize, Deserialize)]
23#[serde(default)]
24pub struct SideloadDefs {
25    #[serde(flatten)]
26    pub defs: BTreeMap<String, SideloadSpec>,
27}
28
29impl Default for SideloadDefs {
30    fn default() -> Self {
31        Self {
32            defs: [
33                (
34                    "build-linux-half".into(),
35                    SideloadSpec {
36                        args: vec![
37                            "build-linux.sh".into(),
38                            "allmodconfig".into(),
39                            "1".into(),
40                            "2".into(),
41                        ],
42                        frozen_exp: 30,
43                    },
44                ),
45                (
46                    "build-linux-1x".into(),
47                    SideloadSpec {
48                        args: vec!["build-linux.sh".into(), "allmodconfig".into(), "1".into()],
49                        frozen_exp: 30,
50                    },
51                ),
52                (
53                    "build-linux-2x".into(),
54                    SideloadSpec {
55                        args: vec!["build-linux.sh".into(), "allmodconfig".into(), "2".into()],
56                        frozen_exp: 30,
57                    },
58                ),
59                (
60                    "build-linux-4x".into(),
61                    SideloadSpec {
62                        args: vec!["build-linux.sh".into(), "allmodconfig".into(), "4".into()],
63                        frozen_exp: 30,
64                    },
65                ),
66                (
67                    "build-linux-8x".into(),
68                    SideloadSpec {
69                        args: vec!["build-linux.sh".into(), "allmodconfig".into(), "8".into()],
70                        frozen_exp: 30,
71                    },
72                ),
73                (
74                    "build-linux-16x".into(),
75                    SideloadSpec {
76                        args: vec!["build-linux.sh".into(), "allmodconfig".into(), "16".into()],
77                        frozen_exp: 30,
78                    },
79                ),
80                (
81                    "build-linux-32x".into(),
82                    SideloadSpec {
83                        args: vec!["build-linux.sh".into(), "allmodconfig".into(), "32".into()],
84                        frozen_exp: 30,
85                    },
86                ),
87                (
88                    "build-linux-unlimited".into(),
89                    SideloadSpec {
90                        args: vec!["build-linux.sh".into(), "allmodconfig".into()],
91                        frozen_exp: 30,
92                    },
93                ),
94                (
95                    "build-linux-allnoconfig-1x".into(),
96                    SideloadSpec {
97                        args: vec!["build-linux.sh".into(), "allnoconfig".into(), "1".into()],
98                        frozen_exp: 30,
99                    },
100                ),
101                (
102                    "build-linux-defconfig-1x".into(),
103                    SideloadSpec {
104                        args: vec!["build-linux.sh".into(), "defconfig".into(), "1".into()],
105                        frozen_exp: 30,
106                    },
107                ),
108                (
109                    "mem-hog-10pct".into(),
110                    SideloadSpec {
111                        args: vec!["mem-hog.sh".into(), "10%".into(), "0%".into()],
112                        frozen_exp: 30,
113                    },
114                ),
115                (
116                    "mem-hog-25pct".into(),
117                    SideloadSpec {
118                        args: vec!["mem-hog.sh".into(), "25%".into(), "0%".into()],
119                        frozen_exp: 30,
120                    },
121                ),
122                (
123                    "mem-hog-50pct".into(),
124                    SideloadSpec {
125                        args: vec!["mem-hog.sh".into(), "50%".into(), "0%".into()],
126                        frozen_exp: 30,
127                    },
128                ),
129                (
130                    "mem-hog-1x".into(),
131                    SideloadSpec {
132                        args: vec!["mem-hog.sh".into(), "100%".into(), "0%".into()],
133                        frozen_exp: 30,
134                    },
135                ),
136                (
137                    "mem-hog-2x".into(),
138                    SideloadSpec {
139                        args: vec!["mem-hog.sh".into(), "200%".into(), "0%".into()],
140                        frozen_exp: 30,
141                    },
142                ),
143                (
144                    "mem-bloat-1x".into(),
145                    SideloadSpec {
146                        args: vec!["mem-hog.sh".into(), "1000%".into(), "100%".into()],
147                        frozen_exp: 30,
148                    },
149                ),
150                (
151                    "read-bomb".into(),
152                    SideloadSpec {
153                        args: vec!["read-bomb.py".into(), "1024".into(), "16384".into()],
154                        frozen_exp: 30,
155                    },
156                ),
157                (
158                    "burn-cpus-50pct".into(),
159                    SideloadSpec {
160                        args: vec!["burn-cpus.sh".into(), "1".into(), "2".into()],
161                        frozen_exp: 30,
162                    },
163                ),
164                (
165                    "burn-cpus-1x".into(),
166                    SideloadSpec {
167                        args: vec!["burn-cpus.sh".into(), "1".into()],
168                        frozen_exp: 30,
169                    },
170                ),
171                (
172                    "burn-cpus-2x".into(),
173                    SideloadSpec {
174                        args: vec!["burn-cpus.sh".into(), "2".into()],
175                        frozen_exp: 30,
176                    },
177                ),
178                (
179                    "inodesteal-test".into(),
180                    SideloadSpec {
181                        args: vec!["inodesteal-test.py".into()],
182                        frozen_exp: 30,
183                    },
184                ),
185            ]
186            .iter()
187            .cloned()
188            .collect(),
189        }
190    }
191}
192
193impl JsonLoad for SideloadDefs {}
194
195impl JsonSave for SideloadDefs {
196    fn preamble() -> Option<String> {
197        Some(SIDE_DEF_DOC.to_string())
198    }
199}