blob: a9d5def8362ba5767e0eb367e5e491f634b8a143 [file] [log] [blame]
Gary Wu9abb61c2018-09-27 10:38:50 -07001'''
2Created on Aug 18, 2017
3
4@author: sw6830
5'''
6from robot.api import logger
7from Queue import Queue
8import uuid
9import time
10import datetime
11import json
12import threading
13import os
14import platform
15import subprocess
16import paramiko
17import DcaeVariables
18import DMaaP
19
20
21class DcaeLibrary(object):
22
23 def __init__(self):
24 pass
25
26 @staticmethod
27 def setup_dmaap_server(port_num=3904):
28 if DcaeVariables.HttpServerThread is not None:
29 DMaaP.clean_up_event()
30 logger.console("Clean up event from event queue before test")
31 logger.info("DMaaP Server already started")
32 return "true"
33
34 DcaeVariables.IsRobotRun = True
35 DMaaP.test(port=port_num)
36 try:
37 DcaeVariables.VESEventQ = Queue()
38 DcaeVariables.HttpServerThread = threading.Thread(name='DMAAP_HTTPServer', target=DMaaP.DMaaPHttpd.serve_forever)
39 DcaeVariables.HttpServerThread.start()
40 logger.console("DMaaP Mockup Sever started")
41 time.sleep(2)
42 return "true"
43 except Exception as e:
44 print (str(e))
45 return "false"
46
47 @staticmethod
48 def shutdown_dmaap():
49 if DcaeVariables.HTTPD is not None:
50 DcaeVariables.HTTPD.shutdown()
51 logger.console("DMaaP Server shut down")
52 time.sleep(3)
53 return "true"
54 else:
55 return "false"
56
57 @staticmethod
58 def cleanup_ves_events():
59 if DcaeVariables.HttpServerThread is not None:
60 DMaaP.clean_up_event()
61 logger.console("DMaaP event queue is cleaned up")
62 return "true"
63 logger.console("DMaaP server not started yet")
64 return "false"
65
66 @staticmethod
Aleksandra Maciagafd6c8fa2019-11-06 15:14:11 +010067 def enable_vesc_with_certBasicAuth():
Gary Wu9abb61c2018-09-27 10:38:50 -070068 global client
69 if 'Windows' in platform.system():
70 try:
71 client = paramiko.SSHClient()
72 client.load_system_host_keys()
73 # client.set_missing_host_key_policy(paramiko.WarningPolicy)
74 client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
75
76 client.connect(os.environ['CSIT_IP'], port=22, username=os.environ['CSIT_USER'], password=os.environ['CSIT_PD'])
Gary Wu13111e92018-09-27 11:31:33 -070077 stdin, stdout, stderr = client.exec_command('%{WORKSPACE}/tests/dcaegen2/testcases/resources/vesc_enable_https_auth.sh')
Gary Wu9abb61c2018-09-27 10:38:50 -070078 logger.console(stdout.read())
79 finally:
80 client.close()
81 return
82 ws = os.environ['WORKSPACE']
Gary Wu13111e92018-09-27 11:31:33 -070083 script2run = ws + "/tests/dcaegen2/testcases/resources/vesc_enable_https_auth.sh"
Gary Wu9abb61c2018-09-27 10:38:50 -070084 logger.info("Running script: " + script2run)
85 logger.console("Running script: " + script2run)
86 subprocess.call(script2run)
87 time.sleep(5)
Aleksandra Maciagafd6c8fa2019-11-06 15:14:11 +010088 return
89
Gary Wu9abb61c2018-09-27 10:38:50 -070090 @staticmethod
Bartosz Gardziejewskia926d942020-07-29 11:13:36 +020091 def dmaap_message_receive_on_topic(evtobj, topic):
92
93 evt_str = DMaaP.deque_event()
94 while evt_str != None:
95 if evtobj in evt_str and topic in evt_str:
96 logger.info("DMaaP Receive Expected Publish Event:\n" + evt_str)
97 logger.info("On Expected Topic:\n" + topic)
98 return 'true'
99 evt_str = DMaaP.deque_event()
100 return 'false'
101
102 @staticmethod
Gary Wu9abb61c2018-09-27 10:38:50 -0700103 def dmaap_message_receive(evtobj, action='contain'):
104
105 evt_str = DMaaP.deque_event()
106 while evt_str != None:
Gary Wu9abb61c2018-09-27 10:38:50 -0700107 if action == 'contain':
108 if evtobj in evt_str:
109 logger.info("DMaaP Receive Expected Publish Event:\n" + evt_str)
110 return 'true'
111 if action == 'sizematch':
112 if len(evtobj) == len(evt_str):
113 return 'true'
114 if action == 'dictmatch':
115 evt_dict = json.loads(evt_str)
116 if cmp(evtobj, evt_dict) == 0:
117 return 'true'
118 evt_str = DMaaP.deque_event()
119 return 'false'
120
121 @staticmethod
122 def is_json_empty(resp):
123 logger.info("Enter is_json_empty: resp.text: " + resp.text)
124 if resp.text is None or len(resp.text) < 2:
125 return 'True'
126 return 'False'
127
128 @staticmethod
129 def generate_uuid():
130 """generate a uuid"""
131 return uuid.uuid4()
132
133 @staticmethod
134 def get_json_value_list(jsonstr, keyval):
135 logger.info("Enter Get_Json_Key_Value_List")
136 if jsonstr is None or len(jsonstr) < 2:
137 logger.info("No Json data found")
138 return []
139 try:
140 data = json.loads(jsonstr)
141 nodelist = []
142 for item in data:
143 nodelist.append(item[keyval])
144 return nodelist
145 except Exception as e:
146 logger.info("Json data parsing fails")
147 print str(e)
148 return []
149
150 @staticmethod
151 def generate_millitimestamp_uuid():
152 """generate a millisecond timestamp uuid"""
153 then = datetime.datetime.now()
154 return int(time.mktime(then.timetuple())*1e3 + then.microsecond/1e3)
155
156 @staticmethod
157 def test():
158 import json
159 from pprint import pprint
160
161 with open('robot/assets/dcae/ves_volte_single_fault_event.json') as data_file:
162 data = json.load(data_file)
163
164 data['event']['commonEventHeader']['version'] = '5.0'
165 pprint(data)
166
167
168if __name__ == '__main__':
169 '''
170 dictStr = "action=getTable,Accept=application/json,Content-Type=application/json,X-FromAppId=1234908903284"
171 cls = DcaeLibrary()
172 #dict = cls.create_header_from_string(dictStr)
173 #print str(dict)
174 jsonStr = "[{'Node': 'onapfcnsl00', 'CheckID': 'serfHealth', 'Name': 'Serf Health Status', 'ServiceName': '', 'Notes': '', 'ModifyIndex': 6, 'Status': 'passing', 'ServiceID': '', 'ServiceTags': [], 'Output': 'Agent alive and reachable', 'CreateIndex': 6}]"
175 lsObj = cls.get_json_value_list(jsonStr, 'Status')
176 print lsObj
177 '''
178
179 lib = DcaeLibrary()
180 lib.enable_vesc_https_auth()
181
182 ret = lib.setup_dmaap_server()
183 print ret
184 time.sleep(100000)