datasource.py 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. import unittest
  2. import requests
  3. from util import req, reqGet
  4. class MyTest(unittest.TestCase):
  5. def setUp(self) -> None:
  6. self.host = "http://127.0.0.1:8080" # local
  7. # self.host = "https://gateway.rxdpdev.k5.bigtree.tech/rxdp-xdata-web" # dev
  8. # self.host = "http://172.18.232.249:8080" # test
  9. # self.host = "http://172.18.150.210:8080" # 仿真环境
  10. def test_queryAllDataSource(self):
  11. """查询所有数据源"""
  12. reqGet(self.host + "/dataSource/queryAllDataSource", {})
  13. def test3(self):
  14. """测试mysql驱动是否连接"""
  15. req(self.host + "/dataSource/testConnection", {
  16. "id": 2,
  17. "createBy": "admin",
  18. "createByView": None,
  19. "createTime": "2022-08-17 16:45:41",
  20. "updateBy": "admin",
  21. "updateByView": None,
  22. "updateTime": "2022-08-17 16:45:41",
  23. "version": 1,
  24. "sourceCode": "test",
  25. "sourceName": "test",
  26. "sourceDesc": "",
  27. "sourceType": "jdbc",
  28. "sourceConfig": "{\"driverName\":\"com.mysql.cj.jdbc.Driver\",\"jdbcUrl\":\"jdbc:mysql://127.0.0.1:3306/aj_report?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8\",\"username\":\"root\",\"password\":\"root\"}",
  29. "enableFlag": 1,
  30. "deleteFlag": 0,
  31. "jdbcUrl": None,
  32. "username": None,
  33. "password": None,
  34. "driverName": None,
  35. "sql": None,
  36. "apiUrl": None,
  37. "method": None,
  38. "header": None,
  39. "body": None,
  40. "dynSentence": None,
  41. "contextData": None,
  42. "accessKey": "1aec8e5d33aee82c021ba8df4c6b09e9"
  43. })
  44. def testTransform(self):
  45. """mysql测试"""
  46. req(self.host + "/dataSet/testTransform", {"dataSetTransformDtoList": [],
  47. "dynSentence": "{\"apiUrl\":\"https://api.tianyunperfect.cn/test/test\",\"body\":\"\",\"method\":\"GET\",\"header\":\"{ \\\"Content-Type\\\": \\\"application/json;charset=UTF-8\\\" }\"}",
  48. "setType": "http", "dataSetParamDtoList": []})
  49. def testTransform1(self):
  50. """mysql- clickhouse测试"""
  51. req(self.host + "/dataSet/testTransform", {
  52. "sourceCode": "clickhouse1",
  53. "dynSentence": "SELECT version()",
  54. "dataSetParamDtoList": [],
  55. "dataSetTransformDtoList": [],
  56. "setType": "sql"
  57. })
  58. # mysql-测试
  59. def testTrans2(self):
  60. req(self.host + "/dataSet/testTransform", {"dataSetTransformDtoList": [
  61. {"createTime": "2022-09-08 11:01:15", "setCode": "3", "orderNum": 1, "editTime": "2022-09-08 11:01:15",
  62. "transformScript": "{\"3\":{\"3\":\"3\"},\"5\":{\"5\":\"5\"}}", "id": 24, "transformType": "dict",
  63. "enableFlag": "1", "useStatus": "0"}],
  64. "dynSentence": "{\"apiUrl\":\"https://api.tianyunperfect.cn/test/test\",\"method\":\"GET\",\"header\":\"{\\\"Content-Type\\\":\\\"application/json;charset=UTF-8\\\"}\",\"body\":\"3\"}",
  65. "dataSetParamDtoList": [
  66. {"setCode": "3", "editId": "USR840299609749222294",
  67. "editTime": "2022-09-08 11:01:16", "paramName": "2",
  68. "requiredFlag": 1, "editName": "liudehua", "useStatus": "0",
  69. "paramType": "2", "paramDesc": "2",
  70. "createTime": "2022-09-08 11:01:16",
  71. "createId": "USR840299609749222294", "id": 44, "enableFlag": 1,
  72. "createName": "liudehua", "sampleItem": "2"}]})
  73. def testQuerySet(self):
  74. """数据集 query 接口测试"""
  75. req(self.host + "/dataSet/query", {
  76. "setCode": "gjhgh",
  77. "map": {
  78. "id": 2,
  79. }
  80. })
  81. def testQuerySet(self):
  82. """test"""
  83. req(self.host + "/dataSet/testTransform", {
  84. "sourceCode": "hu_hawq_test2234",
  85. "dynSentence": "SELECT org_no AS orgNo, 23 AS tagValue FROM company_business_information WHERE taxpayer_level = 'A'",
  86. "dataSetParamDtoList": [],
  87. "dataSetTransformDtoList": [
  88. {
  89. "createBy": "admin",
  90. "createByView": None,
  91. "createTime": "2022-09-01 14:18:09",
  92. "updateBy": "admin",
  93. "updateByView": None,
  94. "updateTime": "2022-09-01 14:18:09",
  95. "version": 1,
  96. "setCode": "hawq_12341321",
  97. "transformType": "dict",
  98. "transformScript": "{\"tagvalue\":{\"23\":\"26\"}}",
  99. "orderNum": 1,
  100. "enableFlag": 1,
  101. "deleteFlag": 0,
  102. "accessKey": "7a4620a55d8924ff4a02b9fd68e65d22"
  103. },
  104. {
  105. "createBy": "admin",
  106. "createByView": None,
  107. "createTime": "2022-09-01 14:18:09",
  108. "updateBy": "admin",
  109. "updateByView": None,
  110. "updateTime": "2022-09-01 14:18:09",
  111. "version": 1,
  112. "setCode": "hawq_12341321",
  113. "transformType": "javaBean",
  114. "transformScript": "package com.bigtreefinance.rxdp.xdata.groovy;\n\nimport com.alibaba.fastjson.JSONObject;\nimport com.bigtreefinance.rxdp.xdata.service.transform.IGroovyHandler;\n\nimport java.util.List;\n\n/**\n * 建议在idea写好复制整个类到此处,位置report-core/src/test/java/com/DemoGroovyHandler.java\n */\npublic class DemoGroovyHandler implements IGroovyHandler {\n\n @Override\n public List<JSONObject> transform(List<JSONObject> data) {\n\n for(JSONObject json : data){\n json.put(\"value\",json.get(\"tagvalue\"));\n json.remove(\"task_no\");\n }\n return data;\n }\n}",
  115. "orderNum": 2,
  116. "enableFlag": 1,
  117. "deleteFlag": 0,
  118. "accessKey": "8713ec121c219011fa2ff7b4f973da96"
  119. }
  120. ],
  121. "setType": "sql"
  122. })
  123. def testDataSourcePage(self):
  124. """数据源分页查询"""
  125. reqGet(self.host + "/dataSource/pageList?page=1&limit=10", {})
  126. def testDataSetPage(self):
  127. """数据源分页查询"""
  128. reqGet(self.host + "/dataSet/pageList?page=1&limit=10", {})
  129. def testDataSetDelete(self):
  130. """数据源分页查询"""
  131. # reqGet(self.host + "/dataSet/73", {})
  132. requests.delete(self.host + "/dataSet/73")
  133. def testDict(self):
  134. reqGet(self.host + "/rxdp-data-dict-item/TRANSFORM_TYPE", {})
  135. # ========= 数据源 =========
  136. # 批量删除
  137. def testBachDelete(self):
  138. req(self.host + "/dataSource/delete/batch", [7, 8])
  139. # 添加、更新
  140. def testAdd(self):
  141. req(self.host + "/dataSource",
  142. {"sourceType": "mysql", "sourceCode": "1", "sourceName": "1", "sourceDesc": "1", "driverName": "1",
  143. "jdbcUrl": "1", "username": "1", "password": "1",
  144. "sourceConfig": "{\"driverName\":\"1\",\"jdbcUrl\":\"1\",\"username\":\"1\",\"password\":\"1\"}"})
  145. def testDataSourceType(self):
  146. reqGet(self.host + "/rxdp-data-dict-item/SOURCE_TYPE", {})
  147. def testTransform3(self):
  148. req(self.host + "/dataSet/testTransform", {"dataSetTransformDtoList": [
  149. {"createTime": "2022-08-30 10:40:01", "setCode": "hu233333321", "orderNum": 1,
  150. "editTime": "2022-09-05 16:20:24",
  151. "transformScript": "package com; import com.alibaba.fastjson.JSONObject; import com.anjiplus.template.gaea.business.modules.datasettransform.service.IGroovyHandler; import java.util.List; /** * 建议在idea写好复制整个类到此处,位置report-core/src/test/java/com/DemoGroovyHandler.java */ public class DemoGroovyHandler implements IGroovyHandler { @Override public List&lt;JSONObject&gt; transform(List&lt;JSONObject&gt; data) { for(JSONObject json : data){ json.put(\"taskNo\",json.get(\"task_no\")); json.remove(\"task_no\"); } return data; } }",
  152. "id": 123, "transformType": "javaBean", "enableFlag": "1", "version": 1, "useStatus": "0"},
  153. {"createTime": "2022-09-14 18:28:48", "setCode": "hu233333321", "orderNum": 2,
  154. "editTime": "2022-09-14 18:28:48", "transformScript": "", "id": 124, "transformType": "js",
  155. "enableFlag": "1", "useStatus": "0"},
  156. {"createTime": "2022-09-14 18:28:48", "setCode": "hu233333321", "orderNum": 3,
  157. "editTime": "2022-09-14 18:28:48", "transformScript": "", "id": 125, "transformType": "",
  158. "enableFlag": "1", "useStatus": "0"}],
  159. "dynSentence": "SELECT task_no,task_name,task_type,job_id,entity_no FROM rxdp_tag_task WHERE task_type = ${taskType} and task_status = ${taskStatus}",
  160. "setType": "sql", "dataSetParamDtoList": [
  161. {"setCode": "hu233333321", "editId": "USR840299609749222148", "orderNum": 1,
  162. "editTime": "2022-09-05 16:20:24", "paramName": "taskType", "version": 1, "requiredFlag": 1,
  163. "editName": "yanfa", "useStatus": "0", "createTime": "2022-08-30 10:40:01",
  164. "createId": "USR840299609749222148", "id": 101, "enableFlag": 1, "createName": "yanfa",
  165. "sampleItem": "taskType"},
  166. {"setCode": "hu233333321", "editId": "USR840299609749222148", "editTime": "2022-09-15 20:37:58",
  167. "paramName": "task_status", "requiredFlag": 1, "editName": "yanfa", "useStatus": "0",
  168. "createTime": "2022-09-15 20:37:58", "createId": "USR840299609749222148", "id": 102, "enableFlag": 1,
  169. "createName": "yanfa", "sampleItem": "task_status"}], "sourceCode": "hu123123"})
  170. # ========= 数据集 =========
  171. def testDataSetUpdate(self):
  172. req(self.host + "/dataSet/update", {"setName": "3", "setCode": "3",
  173. "caseResult": "[{\"code\":1,\"data\":[{\"json_str\":\"hello1\",\"name\":\"hi2\",\"id\":19},{\"json_str\":\"hello\",\"name\":\"hi2\",\"id\":20},{\"json_str\":\"hello\",\"name\":\"hi1\",\"id\":21},{\"json_str\":\"hello3\",\"name\":\"hi2\",\"id\":22},{\"json_str\":\"hello\",\"name\":\"hi2\",\"id\":23},{\"json_str\":\"hello1\",\"name\":\"hi2\",\"id\":24},{\"json_str\":\"hello\",\"name\":\"hi0\",\"id\":25},{\"json_str\":\"hello\",\"name\":\"hi2\",\"id\":26},{\"json_str\":\"hello\",\"name\":\"hi2\",\"id\":27},{\"json_str\":\"hhh\",\"name\":\"testtest2\",\"id\":28}],\"message\":\"success\",\"timestamp\":1662604491373,\"executeTime\":3}]",
  174. "editTime": "2022-09-08 11:01:15", "setType": "http",
  175. "dynSentence": "{\"apiUrl\":\"https://api.tianyunperfect.cn/test/test\",\"method\":\"GET\",\"header\":\"{\\\"Content-Type\\\":\\\"application/json;charset=UTF-8\\\"}\",\"body\":\"3\"}",
  176. "enableFlagString": "已启动", "dataSetParamDtoList": [
  177. {"setCode": "3", "editId": "USR840299609749222294", "editTime": "2022-09-08 11:01:16", "paramName": "2",
  178. "requiredFlag": 1, "editName": "liudehua", "useStatus": "0", "paramType": "2", "paramDesc": "2",
  179. "createTime": "2022-09-08 11:01:16", "createId": "USR840299609749222294", "id": 33, "enableFlag": 1,
  180. "createName": "liudehua", "sampleItem": "2"}], "setDesc": "3", "dataSetTransformDtoList": [
  181. {"createTime": "2022-09-08 11:01:15", "setCode": "3", "orderNum": 1, "editTime": "2022-09-08 11:01:15",
  182. "transformScript": "{\"3\":{\"3\":\"3\"},\"5\":{\"5\":\"5\"}}", "id": 16, "transformType": "dict",
  183. "enableFlag": "1", "useStatus": "0"}], "id": 85, "enableFlag": 1,
  184. "setParamList": ["code", "data", "message", "timestamp", "executeTime"]})
  185. def testDetailBysetId(self):
  186. reqGet(self.host + "/dataSet/detailBysetId/90", {})
  187. def testUpdateDataSet(self):
  188. req(self.host + "/dataSet/update",
  189. {"setCode": "rr", "setDesc": "r", "setName": "r", "dynSentence": "rrr", "setType": "sql",
  190. "dataSetParamDtoList": [], "dataSetTransformDtoList": [
  191. {"createTime": "2022-09-13 17:43:27", "setCode": "rr", "orderNum": 1, "editTime": "2022-09-13 17:43:27",
  192. "transformScript": "", "id": 36, "transformType": "js", "enableFlag": "1", "useStatus": "0"}],
  193. "caseResult": "{}", "sourceCode": "33"})