Skip to content
Snippets Groups Projects
Commit 00a98a74 authored by Mahmoud Akl's avatar Mahmoud Akl Committed by claudio
Browse files

[NRRPLT-5856] update it.py

updated the integration test script to test cloned experiments. The script
now has to be called with either the storage username or the oidc username
to be able to clone experiments.

The cloned experiments used in the tests are deleted after the tests are
finished.

Change-Id: I247875c2984ab68e70739a309c985a6973e7db40
parent e6c3bfa4
No related branches found
No related tags found
No related merge requests found
...@@ -27,6 +27,7 @@ interfaces/APIs that are supported. ...@@ -27,6 +27,7 @@ interfaces/APIs that are supported.
import argparse import argparse
import logging import logging
import json
import sys import sys
import time import time
import traceback import traceback
...@@ -109,7 +110,7 @@ def run(oidc_username, storage_username): ...@@ -109,7 +110,7 @@ def run(oidc_username, storage_username):
# running array of test case results, unfortunately we have to hardcode the number of # running array of test case results, unfortunately we have to hardcode the number of
# test cases because the indeterminate progress bar is not helpful for the tester # test cases because the indeterminate progress bar is not helpful for the tester
NUM_TEST_CASES = 29 NUM_TEST_CASES = 31
results = TestCases(NUM_TEST_CASES) results = TestCases(NUM_TEST_CASES)
try: try:
...@@ -142,13 +143,35 @@ def run(oidc_username, storage_username): ...@@ -142,13 +143,35 @@ def run(oidc_username, storage_username):
# ensure the desired IT experiment is cloned and is available in the storage server. Clone # ensure the desired IT experiment is cloned and is available in the storage server. Clone
# the experiment first if not. # the experiment first if not.
results.start('Checking for Empty Template Husky Experiment in the Storage Server') results.start('Cloning a new Empty Template Husky Experiment from the Storage Server')
if 'template_husky_0' not in vc._VirtualCoach__get_experiment_list(cloned=True):
if 'ExDTemplateHusky' not in [s[0] for s in server_info.iteritems()]: if 'ExDTemplateHusky' not in [s[0] for s in server_info.iteritems()]:
raise TestCaseError('Husky Template Experiment is not available on the server to be' raise TestCaseError('Husky Template Experiment is not available on the server to be'
' cloned.') ' cloned.')
else: experiment_id = vc.clone_experiment_to_storage('ExDTemplateHusky')
vc.clone_experiment_to_storage('ExDTemplateHusky') stored_experiments = vc._VirtualCoach__get_experiment_list(cloned=True)
if experiment_id not in stored_experiments:
raise TestCaseError('Template Husky Experiment was not cloned to the storage.')
results.done(True)
##
## Clone a Cloned Experiment
##
results.start('Cloning a cloned experiment')
new_experiment_id = json.loads(vc.clone_cloned_experiment(experiment_id))['clonedExp']
if new_experiment_id not in vc._VirtualCoach__get_experiment_list(cloned=True):
raise TestCaseError('Cloning the cloned Template Husky Experiment failed')
results.done(True)
##
## Delete a Cloned Experiment
##
results.start('Deleting a cloned experiment')
vc.delete_cloned_experiment(new_experiment_id)
if new_experiment_id in vc._VirtualCoach__get_experiment_list(cloned=True):
raise TestCaseError('Deleting a cloned Experiment failed')
results.done(True) results.done(True)
## ##
...@@ -157,7 +180,7 @@ def run(oidc_username, storage_username): ...@@ -157,7 +180,7 @@ def run(oidc_username, storage_username):
# launch an experiment # launch an experiment
results.start('Launching Empty Template Husky Experiment') results.start('Launching Empty Template Husky Experiment')
sim = vc.launch_experiment('template_husky_0') sim = vc.launch_experiment(experiment_id)
results.done(True) results.done(True)
# status handlers for simulation status events, simply write to our global status message # status handlers for simulation status events, simply write to our global status message
...@@ -421,13 +444,14 @@ def tf(t): ...@@ -421,13 +444,14 @@ def tf(t):
results.done(True) results.done(True)
## ##
## Shutdown and Cleanup ## Shutdown, Cleanup and Delete the cloned experiment used in the tests
## ##
# shutdown the experiment cleanly # shutdown the experiment cleanly
results.start('Stopping Simulation') results.start('Stopping Simulation')
sim.stop() sim.stop()
wait_condition(5, 'Waiting for simulation to stop.', lambda x: x['state'] == 'stopped') wait_condition(5, 'Waiting for simulation to stop.', lambda x: x['state'] == 'stopped')
vc.delete_cloned_experiment(experiment_id)
results.done(True) results.done(True)
# handle test case or unexpected failures, attempt to cleanup and terminate # handle test case or unexpected failures, attempt to cleanup and terminate
......
...@@ -446,6 +446,7 @@ mock-server-5 ...@@ -446,6 +446,7 @@ mock-server-5
class Request(object): class Request(object):
status_code = 200 status_code = 200
content = 'experiment_id'
request.return_value = Request() request.return_value = Request()
self._vc._VirtualCoach__storage_username = 'username' self._vc._VirtualCoach__storage_username = 'username'
...@@ -496,6 +497,7 @@ mock-server-5 ...@@ -496,6 +497,7 @@ mock-server-5
class Request(object): class Request(object):
status_code = 200 status_code = 200
content = None
request.return_value = Request() request.return_value = Request()
self._vc._VirtualCoach__storage_username = 'token' self._vc._VirtualCoach__storage_username = 'token'
......
...@@ -281,6 +281,7 @@ class VirtualCoach(object): ...@@ -281,6 +281,7 @@ class VirtualCoach(object):
instantiated with Storage Server support, i.e. Storage Server credentials instantiated with Storage Server support, i.e. Storage Server credentials
:param exp_id: The id of the experiment to be cloned :param exp_id: The id of the experiment to be cloned
:returns: The ID of the cloned experiment
""" """
assert isinstance(exp_id, str) assert isinstance(exp_id, str)
...@@ -297,6 +298,7 @@ class VirtualCoach(object): ...@@ -297,6 +298,7 @@ class VirtualCoach(object):
raise Exception('Cloning Experiment failed, Status Code: %s' % res.status_code) raise Exception('Cloning Experiment failed, Status Code: %s' % res.status_code)
else: else:
logger.info('Experiment "%s" cloned successfully', exp_id) logger.info('Experiment "%s" cloned successfully', exp_id)
return res.content
def delete_cloned_experiment(self, exp_id): def delete_cloned_experiment(self, exp_id):
""" """
...@@ -318,6 +320,8 @@ class VirtualCoach(object): ...@@ -318,6 +320,8 @@ class VirtualCoach(object):
Attempts to clone a cloned experiment to the Storage Server. Attempts to clone a cloned experiment to the Storage Server.
:param experiment_id: The id of the cloned experiment to be cloned. E.g. benchmark_p3dx_1 :param experiment_id: The id of the cloned experiment to be cloned. E.g. benchmark_p3dx_1
:returns: A dict containing the ID of the cloned experiment and the ID of the original
experiment. Dict Keys are: 'clonedExp' and 'originalExp'
""" """
assert isinstance(experiment_id, str) assert isinstance(experiment_id, str)
...@@ -341,6 +345,7 @@ class VirtualCoach(object): ...@@ -341,6 +345,7 @@ class VirtualCoach(object):
raise Exception('Cloning Experiment failed, Status Code: %s' % res.status_code) raise Exception('Cloning Experiment failed, Status Code: %s' % res.status_code)
else: else:
logger.info('Experiment "%s" cloned successfully', experiment_id) logger.info('Experiment "%s" cloned successfully', experiment_id)
return res.content
def print_cloned_experiments(self): def print_cloned_experiments(self):
""" """
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment