Skip to content

Commit 0747566

Browse files
committed
Add an endpoint for closing an experiment
With this it's possible to close an experiment on the server. Upon reception of the command the server can dispose allocated resources hence the client doesn't need them anymore. This change follows the TSP update provided by: eclipse-cdt-cloud/trace-server-protocol#95 Also add CLI option and unit test for this. Signed-off-by: Bernd Hufmann <bernd.hufmann@ericsson.com>
1 parent b0ca7a8 commit 0747566

File tree

4 files changed

+39
-0
lines changed

4 files changed

+39
-0
lines changed

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,8 @@ optional arguments:
9999
--list-experiment UUID
100100
Get details on the given experiment
101101
--list-experiments List all open experiments on the server
102+
--close-experiment UUID
103+
Close an experiment on the server
102104
--delete-experiment UUID
103105
Delete an experiment on the server
104106
--list-outputs UUID Get details on the given trace
@@ -147,6 +149,7 @@ Examples:
147149
./tsp_cli_client --open-experiment EXP_NAME --paths PATHS
148150
./tsp_cli_client --list-experiments
149151
./tsp_cli_client --list-experiment UUID
152+
./tsp_cli_client --close-experiment UUID
150153
./tsp_cli_client --delete-experiment UUID [--do-delete-traces]
151154
./tsp_cli_client --list-outputs UUID
152155
./tsp_cli_client --get-tree OUTPUT_ID --uuid UUID

test_tsp.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,8 +188,14 @@ def test_open_experiment(self, kernel, other):
188188
os.path.basename(kernel), traces)
189189
assert response.status_code == 200
190190

191+
exp_uuid = response.model.UUID
192+
191193
response = self.tsp_client.fetch_experiments()
192194
assert len(response.model.experiments) == 1
195+
196+
response = self.tsp_client.close_experiment(exp_uuid)
197+
assert response.model.indexin_status == "CLOSED"
198+
193199
self._delete_experiments()
194200
self._delete_traces()
195201

tsp/tsp_client.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,25 @@ def fetch_experiment(self, uuid):
172172
print("get trace failed: {0}".format(response.status_code))
173173
return TspClientResponse(None, response.status_code, response.text)
174174

175+
def close_experiment(self, uuid):
176+
'''
177+
Close a specific experiment
178+
:param uuid: Experiment UUID to fetch
179+
:return: :class:`TspClientResponse <Experiment>` object
180+
:rtype: TspClientResponse
181+
'''
182+
api_url = '{0}experiments/{1}:close'.format(self.base_url, uuid)
183+
parameters = {'parameters': {}}
184+
185+
response = requests.put(api_url, json=parameters, headers=headers)
186+
187+
if response.status_code == 200:
188+
return TspClientResponse(Experiment(json.loads(response.content.decode('utf-8'))),
189+
response.status_code, response.text)
190+
else: # pragma: no cover
191+
print("delete experiment failed: {0}".format(response.status_code))
192+
return TspClientResponse(None, response.status_code, response.text)
193+
175194
def delete_experiment(self, uuid):
176195
'''
177196
Delete a specific experiment

tsp_cli_client

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,8 @@ if __name__ == "__main__":
180180
help="Get details on the given experiment", metavar="UUID")
181181
parser.add_argument("--list-experiments", dest="list_experiments",
182182
action='store_true', help="List all open experiments on the server")
183+
parser.add_argument("--close-experiment", dest="close_experiment",
184+
help="Close an experiment on the server", metavar="UUID")
183185
parser.add_argument("--delete-experiment", dest="delete_experiment",
184186
help="Delete an experiment on the server", metavar="UUID")
185187
parser.add_argument("--list-outputs", dest="list_outputs",
@@ -323,6 +325,15 @@ if __name__ == "__main__":
323325
else:
324326
sys.exit(1)
325327

328+
if options.close_experiment:
329+
response = tsp_client.close_experiment(options.close_experiment)
330+
if response.status_code == 200:
331+
print("Successfully closed experiment")
332+
sys.exit(0)
333+
else:
334+
print("Failed closing experiment with error " + response.status_code)
335+
sys.exit(1)
336+
326337
if options.delete_experiment:
327338
response = tsp_client.delete_experiment(options.delete_experiment)
328339
if response.status_code == 200:

0 commit comments

Comments
 (0)