Skip to content

Commit 83fc516

Browse files
committed
Initial commit
0 parents  commit 83fc516

File tree

13 files changed

+229
-0
lines changed

13 files changed

+229
-0
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
.idea/
2+
.DS_Store

LICENSE.txt

Whitespace-only changes.

README.md

Whitespace-only changes.

reportportal-client/__init__.py

Whitespace-only changes.

reportportal-client/service/__init__.py

Whitespace-only changes.
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
class ErrorRS():
2+
pass
3+
4+
5+
class ReportPortalException(Exception):
6+
def __init__(self, status_code, status_message, error_content, **kwargs):
7+
super(ReportPortalException, self).__init__(**kwargs)
8+
self.status_code = status_code
9+
self.status_message = status_message
10+
self.error_content = error_content
11+
12+
@property
13+
def message(self):
14+
return "Report Portal returned error\n" \
15+
"Status code: {0}\n" \
16+
"Status message: {1}\n" \
17+
"Error Message: {2}\n" \
18+
"Error Type: {3}\n" \
19+
"Stack Trace: ".format(self.status_code,
20+
self.status_message,
21+
self.error_content["message"],
22+
self.error_content["type"])
23+
24+
25+
class ReportPortalClientException(ReportPortalException):
26+
serialVersionUID = -3747137063782963453L
27+
28+
def __init__(self, *args, **kwargs):
29+
super(ReportPortalClientException, self).__init__(*args, **kwargs)
30+
31+
32+
class ReportPortalServerException(ReportPortalException):
33+
serialVersionUID = -3767279627075261149L
34+
35+
def __init__(self, *args, **kwargs):
36+
super(ReportPortalServerException, self).__init__(*args, **kwargs)

reportportal-client/service/model/__init__.py

Whitespace-only changes.
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
import json
2+
3+
4+
class RQ(object):
5+
def __init__(self):
6+
super(RQ, self).__init__()
7+
8+
def as_dict(self):
9+
res = {}
10+
for k, v in self.__dict__.items():
11+
if v:
12+
res[k] = v
13+
return res
14+
15+
@property
16+
def data(self):
17+
return json.dumps(self.as_dict())
18+
19+
20+
class StartRQ(RQ):
21+
def __init__(self, name=None, description=None, tags=None,
22+
start_time=None):
23+
super(StartRQ, self).__init__()
24+
self.name = name
25+
self.description = description
26+
self.tags = tags
27+
self.start_time = start_time
28+
29+
30+
class StartLaunchRQ(StartRQ):
31+
def __init__(self, name=None, description=None, tags=None, start_time=None,
32+
mode=None):
33+
super(StartLaunchRQ, self).__init__(name=name, description=description,
34+
tags=tags, start_time=start_time)
35+
self.mode = mode
36+
37+
38+
class FinishExecutionRQ(RQ):
39+
def __init__(self, end_time=None, status=None):
40+
super(FinishExecutionRQ, self).__init__()
41+
self.end_time = end_time
42+
self.status = status
43+
44+
45+
class StartTestItemRQ(StartRQ):
46+
def __init__(self, name=None, description=None, tags=None,
47+
start_time=None, launch_id=None, type=None):
48+
"""
49+
type can be (SUITE, STORY, TEST, SCENARIO, STEP, BEFORE_CLASS,
50+
BEFORE_GROUPS, BEFORE_METHOD, BEFORE_SUITE, BEFORE_TEST, AFTER_CLASS,
51+
AFTER_GROUPS, AFTER_METHOD, AFTER_SUITE, AFTER_TEST)
52+
:param launch_id:
53+
:param type:
54+
"""
55+
super(StartTestItemRQ, self).__init__(name=name,
56+
description=description,
57+
tags=tags, start_time=start_time)
58+
self.launch_id = launch_id
59+
self.type = type
60+
61+
62+
class FinishTestItemRQ(FinishExecutionRQ):
63+
def __init__(self, end_time=None, status=None, issue=None):
64+
super(FinishTestItemRQ, self).__init__(end_time=end_time,
65+
status=status)
66+
self.issue = issue
67+
68+
69+
class File(RQ):
70+
def __init__(self, name, content):
71+
super(File, self).__init__()
72+
self.name = name
73+
self.content = content
74+
75+
76+
class SaveLogRQ(RQ):
77+
def __init__(self, item_id=None, time=None, message=None, level=None,
78+
file_obj=None):
79+
super(SaveLogRQ, self).__init__()
80+
self.item_id = item_id
81+
self.time = time
82+
self.message = message
83+
self.level = level
84+
self.file = None
85+
if file_obj is not None:
86+
self.file = file_obj.data
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import json
2+
3+
4+
class EntryCreatedRS(object):
5+
def __init__(self, id=None, raw=None):
6+
super(EntryCreatedRS, self).__init__()
7+
self.id = id
8+
self.raw = raw
9+
if raw is not None:
10+
self.id = json.loads(raw)["id"]
11+
12+
def as_dict(self):
13+
return {"id": self.id}
14+
15+
16+
class OperationCompletionRS(object):
17+
def __init__(self, msg=None, raw=None):
18+
super(OperationCompletionRS, self).__init__()
19+
self.msg = msg
20+
if raw is not None:
21+
self.msg = json.loads(raw)["msg"]
22+
23+
def as_dict(self):
24+
return {"msg": self.msg}
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
import os
2+
3+
import requests
4+
5+
from .model.response import EntryCreatedRS, OperationCompletionRS
6+
7+
8+
def print_request(r):
9+
print("\n{0}: {1}\nRequest Body: {2}\nResponse Content: {3}\n".
10+
format(r.request.method, r.request.url, r.request.body, r.content))
11+
12+
13+
class ReportPortalService(object):
14+
def __init__(self, endpoint, project, token, api_base=None):
15+
super(ReportPortalService, self).__init__()
16+
self.endpoint = endpoint
17+
if api_base is None:
18+
self.api_base = "api/v1"
19+
self.project = project
20+
self.token = token
21+
self.base_url = os.path.join(self.endpoint,
22+
self.api_base,
23+
self.project)
24+
self.headers = {"Content-Type": "application/json",
25+
"Authorization": "{0} {1}".format("bearer",
26+
self.token)}
27+
28+
def start_launch(self, start_launch_rq):
29+
url = os.path.join(self.base_url, "launch")
30+
r = requests.post(url=url, headers=self.headers,
31+
data=start_launch_rq.data)
32+
# print_request(r)
33+
return EntryCreatedRS(raw=r.text)
34+
35+
def finish_launch(self, launch_id, finish_execution_rq):
36+
url = os.path.join(self.base_url, "launch", launch_id, "finish")
37+
r = requests.put(url=url, headers=self.headers,
38+
data=finish_execution_rq.data)
39+
# print_request(r)
40+
return OperationCompletionRS(raw=r.text)
41+
42+
def start_test_item(self, parent_item_id, start_test_item_rq):
43+
if parent_item_id is not None:
44+
url = os.path.join(self.base_url, "item", parent_item_id)
45+
else:
46+
url = os.path.join(self.base_url, "item")
47+
r = requests.post(url=url, headers=self.headers,
48+
data=start_test_item_rq.data)
49+
# print_request(r)
50+
return EntryCreatedRS(raw=r.text)
51+
52+
def finish_test_item(self, item_id, finish_test_item_rq):
53+
url = os.path.join(self.base_url, "item", item_id)
54+
r = requests.put(url=url, headers=self.headers,
55+
data=finish_test_item_rq.data)
56+
# print_request(r)
57+
return OperationCompletionRS(raw=r.text)
58+
59+
def log(self, save_log_rq):
60+
url = os.path.join(self.base_url, "log")
61+
r = requests.post(url=url, headers=self.headers,
62+
data=save_log_rq.data)
63+
# print_request(r)
64+
return EntryCreatedRS(raw=r.text)

0 commit comments

Comments
 (0)