Skip to content

Commit

Permalink
Trace Dimensions API
Browse files Browse the repository at this point in the history
  • Loading branch information
Shamal Faily committed Jan 4, 2017
1 parent 24d0d1e commit 3bca44f
Show file tree
Hide file tree
Showing 4 changed files with 75 additions and 0 deletions.
47 changes: 47 additions & 0 deletions cairis/controllers/TraceController.py
Original file line number Diff line number Diff line change
Expand Up @@ -167,3 +167,50 @@ def delete(self, from_object,from_name,to_object,to_name):
resp = make_response(json_serialize(resp_dict), httplib.OK)
resp.contenttype = 'application/json'
return resp

class TraceDimensionsAPI(Resource):
#region Swagger Doc
@swagger.operation(
notes='Get trace dimensions',
nickname='trace-dimensions',
parameters=[
{
"name": "session_id",
"description": "The ID of the user's session",
"required": False,
"allowMultiple": False,
"dataType": str.__name__,
"paramType": "query"
}
],
responseMessages=[
{
'code': httplib.BAD_REQUEST,
'message': 'One or more attributes are missing'
},
{
'code': httplib.CONFLICT,
'message': 'Some problems were found during the name check'
},
{
'code': httplib.CONFLICT,
'message': 'A database error has occurred'
}
]
)
#endregion
def get(self, dimension_name,is_from):
session_id = get_session_id(session, request)

dao = TraceDAO(session_id)
if is_from == '1':
is_from = True
else:
is_from = False

dims = dao.trace_dimensions(dimension_name,is_from)
dao.close()

resp = make_response(json_serialize(dims, session_id=session_id), httplib.OK)
resp.headers['Content-type'] = 'application/json'
return resp
1 change: 1 addition & 0 deletions cairis/daemon/main/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -345,6 +345,7 @@ def get_image(path):
# Trace routes
api.add_resource(TraceController.TracesAPI, '/api/traces',endpoint='traces')
api.add_resource(TraceController.TraceByEnvironmentAPI, '/api/traces/environment/<string:environment_name>',endpoint='traces_environment')
api.add_resource(TraceController.TraceDimensionsAPI, '/api/traces/dimensions/<string:dimension_name>/is_from/<string:is_from>',endpoint='trace_dimensions')
api.add_resource(TraceController.TraceByNameAPI, '/api/traces/from_type/<string:from_object>/from_name/<string:from_name>/to_type/<string:to_object>/to_name/<string:to_name>',endpoint='traces_name')

# Upload controller
Expand Down
8 changes: 8 additions & 0 deletions cairis/data/TraceDAO.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,14 @@ def delete_trace(self, fromObjt,fromName,toObjt,toName):
self.close()
raise ARMHTTPError(ex)

def trace_dimensions(self,dimension_name,is_from):
try:
return self.db_proxy.getTraceDimensions(dimension_name,is_from)
except ARMException as ex:
self.close()
raise ARMHTTPError(ex)


def from_json(self, request):
json = request.get_json(silent=True)
if json is False or json is None:
Expand Down
19 changes: 19 additions & 0 deletions cairis/test/test_TraceAPI.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,25 @@ def setUp(self):
'object': self.new_tr
}

def test_get_trace_dimensions(self):
method = 'test_get_trace_dimensions'
url = '/api/traces/dimensions/requirement/is_from/1?session_id=test'
self.logger.info('[%s] URL: %s', method, url)
rv = self.app.get(url)
fromDims = jsonpickle.decode(rv.data)
self.assertIsNotNone(fromDims, 'No results after deserialization')
self.logger.info('[%s] Traces found: %d', method, len(fromDims))
self.assertEquals(len(fromDims),6)

url = '/api/traces/dimensions/requirement/is_from/0?session_id=test'
self.logger.info('[%s] URL: %s', method, url)
rv = self.app.get(url)
toDims = jsonpickle.decode(rv.data)
self.assertIsNotNone(toDims, 'No results after deserialization')
self.logger.info('[%s] Traces found: %d', method, len(toDims))
self.assertEquals(len(toDims),5)


def test_get_all(self):
method = 'test_get_traces'
url = '/api/traces/environment/Psychosis?session_id=test'
Expand Down

0 comments on commit 3bca44f

Please sign in to comment.