1+ #
2+ # Copyright(c) 2019-2021 Intel Corporation
3+ # SPDX-License-Identifier: BSD-3-Clause-Clear
4+ #
5+
6+ import pytest
7+
8+ from api .cas import casadm
9+ from api .cas .json_api import Json_api
10+ from core .test_run import TestRun
11+ from storage_devices .disk import DiskTypeSet , DiskType , DiskTypeLowerThan
12+ from test_utils .size import Size , Unit
13+
14+ @pytest .mark .require_disk ("cache" , DiskTypeSet ([DiskType .optane , DiskType .nand ]))
15+ @pytest .mark .require_disk ("core" , DiskTypeLowerThan ("cache" ))
16+ def test_json_api_requests ():
17+
18+ with TestRun .step ("Check JSON API installed" ):
19+ Json_api .check_json_api_installed ()
20+
21+ with TestRun .step ("Prepare CAS device." ):
22+ cache_disk = TestRun .disks ['cache' ]
23+ cache_disk .create_partitions ([Size (20 , Unit .GibiByte )])
24+ cache_dev = cache_disk .partitions [0 ]
25+
26+ core_disk = TestRun .disks ['core' ]
27+ core_disk .create_partitions ([Size (20 , Unit .GibiByte )])
28+ core_dev = core_disk .partitions [0 ]
29+
30+ cache = casadm .start_cache (cache_dev , force = True )
31+ core = cache .add_core (core_dev )
32+ TestRun .LOGGER .info (TestRun .executor .run ("casadm -L" ).stdout )
33+
34+ with TestRun .step ("Parametrize valid requests" ):
35+ io_class = 0
36+ cache_id = cache .cache_id
37+ core_id = core .core_id
38+
39+ with TestRun .step ("Init valid all requests" ):
40+ request_opencas_cache_stats_get = {"command" : "opencas.cache.stats.get" ,
41+ "params" : {"cache id" : cache_id }}
42+ request_opencas_cache_core_stats_get = {"command" : "opencas.cache.core.stats.get" ,
43+ "params" : {"cache id" : cache_id ,
44+ "core id" : core_id }}
45+ request_opencas_cache_ioclass_stats_get = {"command" :
46+ "opencas.cache.ioclass.stats.get" ,
47+ "params" : {"cache id" : cache_id ,
48+ "io class" : io_class }}
49+ request_opencas_cache_core_ioclass_stats_get = {"command" :
50+ "opencas.cache.core.ioclass.stats.get" ,
51+ "params" : {"cache id" : cache_id ,
52+ "core id" : core_id ,
53+ "io class" : io_class }}
54+ request_opencas_cache_list_get = {"command" : "opencas.cache_list.get" ,
55+ "params" : {}}
56+ request_opencas_cache_info_get = {"command" : "opencas.cache.info.get" ,
57+ "params" : {"cache id" : cache_id , }}
58+ request_opencas_core_info_get = {"command" : "opencas.cache.core.info.get" ,
59+ "params" : {"cache id" : cache_id , "core id" : core_id }}
60+ request_opencas_ioclass_info_get = {"command" : "opencas.cache.ioclass.info.get" ,
61+ "params" : {"cache id" : cache_id , "io class" : io_class }}
62+
63+ with TestRun .group ("JSON API requests" ):
64+ with TestRun .step ("GET CACHE REQUEST" ):
65+ response = Json_api .send_request (request_opencas_cache_stats_get )
66+ Json_api .verify_response_structure (request_opencas_cache_stats_get ["command" ], response )
67+ with TestRun .step ("GET CACHE CORE REQUEST" ):
68+ response = Json_api .send_request (request_opencas_cache_core_stats_get )
69+ Json_api .verify_response_structure (
70+ request_opencas_cache_core_stats_get ["command" ], response )
71+ with TestRun .step ("GET CACHE IO CLASS REQUEST" ):
72+ response = Json_api .send_request (request_opencas_cache_ioclass_stats_get )
73+ Json_api .verify_response_structure (
74+ request_opencas_cache_ioclass_stats_get ["command" ], response )
75+ with TestRun .step ("GET CACHE CORE IO CLAS REQUEST" ):
76+ response = Json_api .send_request (request_opencas_cache_core_ioclass_stats_get )
77+ Json_api .verify_response_structure (
78+ request_opencas_cache_core_ioclass_stats_get ["command" ], response )
79+ with TestRun .step ("GET CACHE LIST" ):
80+ response = Json_api .send_request (request_opencas_cache_list_get )
81+ Json_api .verify_response_structure (request_opencas_cache_list_get ["command" ], response )
82+ with TestRun .step ("GET CACHE INFO" ):
83+ response = Json_api .send_request (request_opencas_cache_info_get )
84+ Json_api .verify_response_structure (request_opencas_cache_info_get ["command" ], response )
85+ with TestRun .step ("GET CORE INFO" ):
86+ response = Json_api .send_request (request_opencas_core_info_get )
87+ Json_api .verify_response_structure (request_opencas_core_info_get ["command" ], response )
88+ with TestRun .step ("GET IO CLASS INFO" ):
89+ response = Json_api .send_request (request_opencas_ioclass_info_get )
90+ Json_api .verify_response_structure (
91+ request_opencas_ioclass_info_get ["command" ], response )
92+
93+ with TestRun .group ("JSON API invalid requests" ):
94+ with TestRun .step ("Corner values" ):
95+ invalid_cache_id = cache_id + 1
96+ invalid_core_id = core_id + 1
97+ different_io_class = io_class + 1
98+
99+ with TestRun .step ("Init all invalid requests" ):
100+ request_opencas_cache_stats_get = {"command" : "opencas.cache.stats.get" ,
101+ "params" : {"cache id" : invalid_cache_id }}
102+ request_opencas_cache_core_stats_get = {"command" : "opencas.cache.core.stats.get" ,
103+ "params" : {"cache id" : cache_id ,
104+ "core id" : invalid_core_id }}
105+ request_opencas_cache_ioclass_stats_get = {"command" : "opencas.cache.ioclass.stats.get" ,
106+ "params" : {"cache id" : invalid_cache_id ,
107+ "io class" : different_io_class }}
108+ request_opencas_cache_core_ioclass_stats_get = {"command" :
109+ "opencas.cache.core.ioclass.stats.get" ,
110+ "params" : {"cache id" : invalid_cache_id ,
111+ "core id" : invalid_core_id ,
112+ "io class" : different_io_class }}
113+ request_opencas_cache_info_get = {"command" : "opencas.cache.info.get" ,
114+ "params" : {"cache id" : invalid_cache_id , }}
115+ request_opencas_core_info_get = {"command" : "opencas.cache.core.info.get" ,
116+ "params" : {"cache id" : cache_id ,
117+ "core id" : invalid_core_id }}
118+ request_opencas_ioclass_info_get = {"command" : "opencas.cache.ioclass.info.get" ,
119+ "params" : {"cache id" : invalid_cache_id ,
120+ "io class" : different_io_class }}
121+
122+ with TestRun .group ("JSON API invalid requests" ):
123+ with TestRun .step ("GET CACHE REQUEST" ):
124+ response = Json_api .send_request (request_opencas_cache_stats_get )
125+ Json_api .verify_invalid_request_response (request_opencas_cache_stats_get ["command" ],
126+ response )
127+ with TestRun .step ("GET CACHE CORE REQUEST" ):
128+ response = Json_api .send_request (request_opencas_cache_core_stats_get )
129+ Json_api .verify_invalid_request_response (
130+ request_opencas_cache_core_stats_get ["command" ], response )
131+ with TestRun .step ("GET CACHE IO CLASS REQUEST" ):
132+ response = Json_api .send_request (request_opencas_cache_ioclass_stats_get )
133+ Json_api .verify_invalid_request_response (
134+ request_opencas_cache_ioclass_stats_get ["command" ], response )
135+ with TestRun .step ("GET CACHE CORE IO CLAS REQUEST" ):
136+ response = Json_api .send_request (request_opencas_cache_core_ioclass_stats_get )
137+ Json_api .verify_invalid_request_response (
138+ request_opencas_cache_core_ioclass_stats_get ["command" ], response )
139+
140+ with TestRun .step ("GET CACHE INFO" ):
141+ response = Json_api .send_request (request_opencas_cache_info_get )
142+ Json_api .verify_invalid_request_response (request_opencas_cache_info_get ["command" ],
143+ response )
144+ with TestRun .step ("GET CORE INFO" ):
145+ response = Json_api .send_request (request_opencas_core_info_get )
146+ Json_api .verify_invalid_request_response (request_opencas_core_info_get ["command" ],
147+ response )
148+ with TestRun .step ("GET IO CLASS INFO" ):
149+ response = Json_api .send_request (request_opencas_ioclass_info_get )
150+ Json_api .verify_invalid_request_response (
151+ request_opencas_ioclass_info_get ["command" ], response )
0 commit comments