@@ -19,8 +19,10 @@ PLATFORM_UTIL_TEST("find docker container ID") {
1919 {__LINE__, " empty inputs" , " " , nullopt },
2020 {__LINE__, " no docker container ID" , " coucou" , nullopt },
2121 {__LINE__, " one line with docker container ID" ,
22- " 0::/system.slice/docker-abcdef0123456789abcdef0123456789.scope" ,
23- " abcdef0123456789abcdef0123456789" },
22+ " 0::/system.slice/"
23+ " docker-"
24+ " cde7c2bab394630a42d73dc610b9c57415dced996106665d427f6d0566594411.scope" ,
25+ " cde7c2bab394630a42d73dc610b9c57415dced996106665d427f6d0566594411" },
2426 {__LINE__, " multiline wihtout docker container ID" , R"(
25270::/
262810:memory:/user.slice/user-0.slice/session-14.scope
@@ -41,22 +43,150 @@ PLATFORM_UTIL_TEST("find docker container ID") {
41439:hugetlb:/
42448:cpuset:/
43457:pids:/user.slice/user-0.slice/session-14.scope
44- 3:cpu:/system.slice/docker-abcdef0123456789abcdef0123456789 .scope
46+ 3:cpu:/system.slice/docker-cde7c2bab394630a42d73dc610b9c57415dced996106665d427f6d0566594411 .scope
45476:freezer:/
46485:net_cls,net_prio:/
47494:perf_event:/
48503:cpu,cpuacct:/user.slice/user-0.slice/session-14.scope
49512:devices:/user.slice/user-0.slice/session-14.scope
50521:name=systemd:/user.slice/user-0.slice/session-14.scope
5153 )" ,
52- " abcdef0123456789abcdef0123456789 " },
54+ " cde7c2bab394630a42d73dc610b9c57415dced996106665d427f6d0566594411 " },
5355 }));
5456
5557 CAPTURE (test_case.name );
5658
5759 std::istringstream is (test_case.input );
5860
59- auto maybe_container_id = container::find_docker_container_id (is);
61+ auto maybe_container_id = container::find_container_id (is);
62+ if (test_case.expected_container_id .has_value ()) {
63+ REQUIRE (maybe_container_id.has_value ());
64+ CHECK (*maybe_container_id == *test_case.expected_container_id );
65+ } else {
66+ CHECK (!maybe_container_id.has_value ());
67+ }
68+ }
69+
70+ PLATFORM_UTIL_TEST (" find multiline container IDs" ) {
71+ struct TestCase {
72+ size_t line;
73+ std::string_view name;
74+ std::string input;
75+ Optional<std::string> expected_container_id;
76+ };
77+
78+ auto test_case = GENERATE (values<TestCase>({
79+ {__LINE__, " Docker" , R"(
80+ 13:name=systemd:/docker/3726184226f5d3147c25fdeab5b60097e378e8a720503a5e19ecfdf29f869860
81+ 12:pids:/docker/3726184226f5d3147c25fdeab5b60097e378e8a720503a5e19ecfdf29f869860
82+ 11:hugetlb:/docker/3726184226f5d3147c25fdeab5b60097e378e8a720503a5e19ecfdf29f869860
83+ 10:net_prio:/docker/3726184226f5d3147c25fdeab5b60097e378e8a720503a5e19ecfdf29f869860
84+ 9:perf_event:/docker/3726184226f5d3147c25fdeab5b60097e378e8a720503a5e19ecfdf29f869860
85+ 8:net_cls:/docker/3726184226f5d3147c25fdeab5b60097e378e8a720503a5e19ecfdf29f869860
86+ 7:freezer:/docker/3726184226f5d3147c25fdeab5b60097e378e8a720503a5e19ecfdf29f869860
87+ 6:devices:/docker/3726184226f5d3147c25fdeab5b60097e378e8a720503a5e19ecfdf29f869860
88+ 5:memory:/docker/3726184226f5d3147c25fdeab5b60097e378e8a720503a5e19ecfdf29f869860
89+ 4:blkio:/docker/3726184226f5d3147c25fdeab5b60097e378e8a720503a5e19ecfdf29f869860
90+ 3:cpuacct:/docker/3726184226f5d3147c25fdeab5b60097e378e8a720503a5e19ecfdf29f869860
91+ 2:cpu:/docker/3726184226f5d3147c25fdeab5b60097e378e8a720503a5e19ecfdf29f869860
92+ 1:cpuset:/docker/3726184226f5d3147c25fdeab5b60097e378e8a720503a5e19ecfdf29f869860
93+ )" ,
94+ " 3726184226f5d3147c25fdeab5b60097e378e8a720503a5e19ecfdf29f869860" },
95+ {__LINE__, " Kubernetes" , R"(
96+ 11:perf_event:/kubepods/besteffort/pod3d274242-8ee0-11e9-a8a6-1e68d864ef1a/3e74d3fd9db4c9dd921ae05c2502fb984d0cde1b36e581b13f79c639da4518a1
97+ 10:pids:/kubepods/besteffort/pod3d274242-8ee0-11e9-a8a6-1e68d864ef1a/3e74d3fd9db4c9dd921ae05c2502fb984d0cde1b36e581b13f79c639da4518a1
98+ 9:memory:/kubepods/besteffort/pod3d274242-8ee0-11e9-a8a6-1e68d864ef1a/3e74d3fd9db4c9dd921ae05c2502fb984d0cde1b36e581b13f79c639da4518a1
99+ 8:cpu,cpuacct:/kubepods/besteffort/pod3d274242-8ee0-11e9-a8a6-1e68d864ef1a/3e74d3fd9db4c9dd921ae05c2502fb984d0cde1b36e581b13f79c639da4518a1
100+ 7:blkio:/kubepods/besteffort/pod3d274242-8ee0-11e9-a8a6-1e68d864ef1a/3e74d3fd9db4c9dd921ae05c2502fb984d0cde1b36e581b13f79c639da4518a1
101+ 6:cpuset:/kubepods/besteffort/pod3d274242-8ee0-11e9-a8a6-1e68d864ef1a/3e74d3fd9db4c9dd921ae05c2502fb984d0cde1b36e581b13f79c639da4518a1
102+ 5:devices:/kubepods/besteffort/pod3d274242-8ee0-11e9-a8a6-1e68d864ef1a/3e74d3fd9db4c9dd921ae05c2502fb984d0cde1b36e581b13f79c639da4518a1
103+ 4:freezer:/kubepods/besteffort/pod3d274242-8ee0-11e9-a8a6-1e68d864ef1a/3e74d3fd9db4c9dd921ae05c2502fb984d0cde1b36e581b13f79c639da4518a1
104+ 3:net_cls,net_prio:/kubepods/besteffort/pod3d274242-8ee0-11e9-a8a6-1e68d864ef1a/3e74d3fd9db4c9dd921ae05c2502fb984d0cde1b36e581b13f79c639da4518a1
105+ 2:hugetlb:/kubepods/besteffort/pod3d274242-8ee0-11e9-a8a6-1e68d864ef1a/3e74d3fd9db4c9dd921ae05c2502fb984d0cde1b36e581b13f79c639da4518a1
106+ 1:name=systemd:/kubepods/besteffort/pod3d274242-8ee0-11e9-a8a6-1e68d864ef1a/3e74d3fd9db4c9dd921ae05c2502fb984d0cde1b36e581b13f79c639da4518a1
107+ 1:name=systemd:/kubepods.slice/kubepods-burstable.slice/kubepods-burstable-pod2d3da189_6407_48e3_9ab6_78188d75e609.slice/docker-3e74d3fd9db4c9dd921ae05c2502fb984d0cde1b36e581b13f79c639da4518a1.scope
108+ )" ,
109+ " 3e74d3fd9db4c9dd921ae05c2502fb984d0cde1b36e581b13f79c639da4518a1" },
110+ {__LINE__, " Ecs" , R"(
111+ 9:perf_event:/ecs/haissam-ecs-classic/5a0d5ceddf6c44c1928d367a815d890f/38fac3e99302b3622be089dd41e7ccf38aff368a86cc339972075136ee2710ce
112+ 8:memory:/ecs/haissam-ecs-classic/5a0d5ceddf6c44c1928d367a815d890f/38fac3e99302b3622be089dd41e7ccf38aff368a86cc339972075136ee2710ce
113+ 7:hugetlb:/ecs/haissam-ecs-classic/5a0d5ceddf6c44c1928d367a815d890f/38fac3e99302b3622be089dd41e7ccf38aff368a86cc339972075136ee2710ce
114+ 6:freezer:/ecs/haissam-ecs-classic/5a0d5ceddf6c44c1928d367a815d890f/38fac3e99302b3622be089dd41e7ccf38aff368a86cc339972075136ee2710ce
115+ 5:devices:/ecs/haissam-ecs-classic/5a0d5ceddf6c44c1928d367a815d890f/38fac3e99302b3622be089dd41e7ccf38aff368a86cc339972075136ee2710ce
116+ 4:cpuset:/ecs/haissam-ecs-classic/5a0d5ceddf6c44c1928d367a815d890f/38fac3e99302b3622be089dd41e7ccf38aff368a86cc339972075136ee2710ce
117+ 3:cpuacct:/ecs/haissam-ecs-classic/5a0d5ceddf6c44c1928d367a815d890f/38fac3e99302b3622be089dd41e7ccf38aff368a86cc339972075136ee2710ce
118+ 2:cpu:/ecs/haissam-ecs-classic/5a0d5ceddf6c44c1928d367a815d890f/38fac3e99302b3622be089dd41e7ccf38aff368a86cc339972075136ee2710ce
119+ 1:blkio:/ecs/haissam-ecs-classic/5a0d5ceddf6c44c1928d367a815d890f/38fac3e99302b3622be089dd41e7ccf38aff368a86cc339972075136ee2710ce
120+ )" ,
121+ " 38fac3e99302b3622be089dd41e7ccf38aff368a86cc339972075136ee2710ce" },
122+ {__LINE__, " Fargate1Dot3" , R"(
123+ 11:hugetlb:/ecs/55091c13-b8cf-4801-b527-f4601742204d/432624d2150b349fe35ba397284dea788c2bf66b885d14dfc1569b01890ca7da
124+ 10:pids:/ecs/55091c13-b8cf-4801-b527-f4601742204d/432624d2150b349fe35ba397284dea788c2bf66b885d14dfc1569b01890ca7da
125+ 9:cpuset:/ecs/55091c13-b8cf-4801-b527-f4601742204d/432624d2150b349fe35ba397284dea788c2bf66b885d14dfc1569b01890ca7da
126+ 8:net_cls,net_prio:/ecs/55091c13-b8cf-4801-b527-f4601742204d/432624d2150b349fe35ba397284dea788c2bf66b885d14dfc1569b01890ca7da
127+ 7:cpu,cpuacct:/ecs/55091c13-b8cf-4801-b527-f4601742204d/432624d2150b349fe35ba397284dea788c2bf66b885d14dfc1569b01890ca7da
128+ 6:perf_event:/ecs/55091c13-b8cf-4801-b527-f4601742204d/432624d2150b349fe35ba397284dea788c2bf66b885d14dfc1569b01890ca7da
129+ 5:freezer:/ecs/55091c13-b8cf-4801-b527-f4601742204d/432624d2150b349fe35ba397284dea788c2bf66b885d14dfc1569b01890ca7da
130+ 4:devices:/ecs/55091c13-b8cf-4801-b527-f4601742204d/432624d2150b349fe35ba397284dea788c2bf66b885d14dfc1569b01890ca7da
131+ 3:blkio:/ecs/55091c13-b8cf-4801-b527-f4601742204d/432624d2150b349fe35ba397284dea788c2bf66b885d14dfc1569b01890ca7da
132+ 2:memory:/ecs/55091c13-b8cf-4801-b527-f4601742204d/432624d2150b349fe35ba397284dea788c2bf66b885d14dfc1569b01890ca7da
133+ 1:name=systemd:/ecs/55091c13-b8cf-4801-b527-f4601742204d/432624d2150b349fe35ba397284dea788c2bf66b885d14dfc1569b01890ca7da
134+ )" ,
135+ " 432624d2150b349fe35ba397284dea788c2bf66b885d14dfc1569b01890ca7da" },
136+ {__LINE__, " Fargate1Dot4" , R"(
137+ 11:hugetlb:/ecs/34dc0b5e626f2c5c4c5170e34b10e765-1234567890
138+ 10:pids:/ecs/34dc0b5e626f2c5c4c5170e34b10e765-1234567890
139+ 9:cpuset:/ecs/34dc0b5e626f2c5c4c5170e34b10e765-1234567890
140+ 8:net_cls,net_prio:/ecs/34dc0b5e626f2c5c4c5170e34b10e765-1234567890
141+ 7:cpu,cpuacct:/ecs/34dc0b5e626f2c5c4c5170e34b10e765-1234567890
142+ 6:perf_event:/ecs/34dc0b5e626f2c5c4c5170e34b10e765-1234567890
143+ 5:freezer:/ecs/34dc0b5e626f2c5c4c5170e34b10e765-1234567890
144+ 4:devices:/ecs/34dc0b5e626f2c5c4c5170e34b10e765-1234567890
145+ 3:blkio:/ecs/34dc0b5e626f2c5c4c5170e34b10e765-1234567890
146+ 2:memory:/ecs/34dc0b5e626f2c5c4c5170e34b10e765-1234567890
147+ 1:name=systemd:/ecs/34dc0b5e626f2c5c4c5170e34b10e765-1234567890
148+ )" ,
149+ " 34dc0b5e626f2c5c4c5170e34b10e765-1234567890" },
150+ {__LINE__, " EksNodegroup" , R"(
151+ 11:blkio:/kubepods.slice/kubepods-pod9508fe66_7675_4003_b7c9_d83e9f8f85e5.slice/cri-containerd-26cfbe35e08b24f053011af4ada23d8fcbf81f27f8331a94f56de5b677c903e4.scope
152+ 10:cpuset:/kubepods.slice/kubepods-pod9508fe66_7675_4003_b7c9_d83e9f8f85e5.slice/cri-containerd-26cfbe35e08b24f053011af4ada23d8fcbf81f27f8331a94f56de5b677c903e4.scope
153+ 9:perf_event:/kubepods.slice/kubepods-pod9508fe66_7675_4003_b7c9_d83e9f8f85e5.slice/cri-containerd-26cfbe35e08b24f053011af4ada23d8fcbf81f27f8331a94f56de5b677c903e4.scope
154+ 8:memory:/kubepods.slice/kubepods-pod9508fe66_7675_4003_b7c9_d83e9f8f85e5.slice/cri-containerd-26cfbe35e08b24f053011af4ada23d8fcbf81f27f8331a94f56de5b677c903e4.scope
155+ 7:pids:/kubepods.slice/kubepods-pod9508fe66_7675_4003_b7c9_d83e9f8f85e5.slice/cri-containerd-26cfbe35e08b24f053011af4ada23d8fcbf81f27f8331a94f56de5b677c903e4.scope
156+ 6:cpu,cpuacct:/kubepods.slice/kubepods-pod9508fe66_7675_4003_b7c9_d83e9f8f85e5.slice/cri-containerd-26cfbe35e08b24f053011af4ada23d8fcbf81f27f8331a94f56de5b677c903e4.scope
157+ 5:net_cls,net_prio:/kubepods.slice/kubepods-pod9508fe66_7675_4003_b7c9_d83e9f8f85e5.slice/cri-containerd-26cfbe35e08b24f053011af4ada23d8fcbf81f27f8331a94f56de5b677c903e4.scope
158+ 4:devices:/kubepods.slice/kubepods-pod9508fe66_7675_4003_b7c9_d83e9f8f85e5.slice/cri-containerd-26cfbe35e08b24f053011af4ada23d8fcbf81f27f8331a94f56de5b677c903e4.scope
159+ 3:freezer:/kubepods.slice/kubepods-pod9508fe66_7675_4003_b7c9_d83e9f8f85e5.slice/cri-containerd-26cfbe35e08b24f053011af4ada23d8fcbf81f27f8331a94f56de5b677c903e4.scope
160+ 2:hugetlb:/kubepods.slice/kubepods-pod9508fe66_7675_4003_b7c9_d83e9f8f85e5.slice/cri-containerd-26cfbe35e08b24f053011af4ada23d8fcbf81f27f8331a94f56de5b677c903e4.scope
161+ 1:name=systemd:/kubepods.slice/kubepods-pod9508fe66_7675_4003_b7c9_d83e9f8f85e5.slice/cri-containerd-26cfbe35e08b24f053011af4ada23d8fcbf81f27f8331a94f56de5b677c903e4.scope
162+ )" ,
163+ " 26cfbe35e08b24f053011af4ada23d8fcbf81f27f8331a94f56de5b677c903e4" },
164+ {__LINE__, " PcfContainer1" , R"(
165+ 12:memory:/system.slice/garden.service/garden/6f265890-5165-7fab-6b52-18d1
166+ 11:rdma:/
167+ 10:freezer:/garden/6f265890-5165-7fab-6b52-18d1
168+ 9:hugetlb:/garden/6f265890-5165-7fab-6b52-18d1
169+ 8:pids:/system.slice/garden.service/garden/6f265890-5165-7fab-6b52-18d1
170+ 7:perf_event:/garden/6f265890-5165-7fab-6b52-18d1
171+ 6:cpu,cpuacct:/system.slice/garden.service/garden/6f265890-5165-7fab-6b52-18d1
172+ 5:net_cls,net_prio:/garden/6f265890-5165-7fab-6b52-18d1
173+ 4:cpuset:/garden/6f265890-5165-7fab-6b52-18d1
174+ 3:blkio:/system.slice/garden.service/garden/6f265890-5165-7fab-6b52-18d1
175+ 2:devices:/system.slice/garden.service/garden/6f265890-5165-7fab-6b52-18d1
176+ 1:name=systemd:/system.slice/garden.service/garden/6f265890-5165-7fab-6b52-18d1
177+ )" ,
178+ " 6f265890-5165-7fab-6b52-18d1" },
179+ {__LINE__, " PcfContainer2" , R"(
180+ 1:name=systemd:/system.slice/garden.service/garden/6f265890-5165-7fab-6b52-18d1
181+ )" ,
182+ " 6f265890-5165-7fab-6b52-18d1" },
183+ }));
184+
185+ CAPTURE (test_case.name );
186+
187+ std::istringstream is (test_case.input );
188+
189+ auto maybe_container_id = container::find_container_id (is);
60190 if (test_case.expected_container_id .has_value ()) {
61191 REQUIRE (maybe_container_id.has_value ());
62192 CHECK (*maybe_container_id == *test_case.expected_container_id );
0 commit comments