1
+ from typing import List
1
2
from click .testing import CliRunner
2
3
from csle_cli .cli import ls
3
4
5
+ from csle_cluster .cluster_manager .cluster_manager_pb2 import DockerContainerDTO
6
+
4
7
5
8
class TestCSLECliSuite :
6
9
"""
7
10
Test suite for cli.py
8
11
"""
9
12
10
- def test_ls (self ) -> None :
13
+ def test_ls_all (self ) -> None :
11
14
"""
12
15
Tests the ls command
13
16
@@ -16,3 +19,31 @@ def test_ls(self) -> None:
16
19
runner = CliRunner ()
17
20
result = runner .invoke (ls , ["--all" ])
18
21
assert result .exit_code == 0
22
+
23
+ def test_ls_running_containers (self ) -> None :
24
+ """
25
+ Tests the ls command
26
+
27
+ :return: None
28
+ """
29
+ import csle_common .constants .constants as constants
30
+ from csle_common .metastore .metastore_facade import MetastoreFacade
31
+ from csle_cluster .cluster_manager .cluster_controller import ClusterController
32
+ config = MetastoreFacade .get_config (id = 1 )
33
+ running_containers : List [DockerContainerDTO ] = []
34
+ for node in config .cluster_config .cluster_nodes :
35
+ running_containers_dto = ClusterController .list_all_running_containers (
36
+ ip = node .ip , port = constants .GRPC_SERVERS .CLUSTER_MANAGER_PORT )
37
+ running_containers_dtos = list (running_containers_dto .runningContainers )
38
+ running_containers = running_containers + running_containers_dtos
39
+ runner = CliRunner ()
40
+ result = runner .invoke (ls , ["containers" ])
41
+ cli_output = result .stdout_bytes .decode ('utf-8' )
42
+ cli_output_lines = cli_output .strip ().split ('\n ' )
43
+ number_of_containers_from_cli = 0
44
+ for line in cli_output_lines :
45
+ if "[running]" in line :
46
+ number_of_containers_from_cli += 1
47
+
48
+ assert number_of_containers_from_cli == len (running_containers )
49
+ assert result .exit_code == 0
0 commit comments