You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							99 lines
						
					
					
						
							3.8 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							99 lines
						
					
					
						
							3.8 KiB
						
					
					
				| #!/usr/bin/python | |
| # -*- coding: utf-8 -*- | |
| # --------------------------------------------------------------------------------------------------------- | |
| # Author : Ulrich Carmesin | |
| # Source : gitea.ucarmesin.de | |
| # --------------------------------------------------------------------------------------------------------- | |
| import os | |
| import basic.toolHandling | |
| import utils.data_const as D | |
| import basic.constants as B | |
| import model.entity | |
| import tools.config_tool | |
| import tools.job_tool | |
| import tools.path_tool | |
| import tools.path_const as P | |
| import model.entity | |
| 
 | |
| 
 | |
| class Testsuite(model.entity.Entity): | |
|     name = "" | |
|     description = "" | |
|     application = "" | |
|     usecase = [] | |
|     testcases = {} | |
|     tables = {} | |
|     steps = [] | |
| 
 | |
|     def __init__(self, job): | |
|         """ | |
|         to be initialized by readSpec | |
|         :param job: | |
|         """ | |
|         self.job = job | |
| 
 | |
|     def getSchema(self): | |
|         dbtype = self.job.conf[B.TOPIC_NODE_DB][B.ATTR_TYPE] | |
|         dbi = basic.toolHandling.getDbTool(self.job, None, dbtype) | |
|         sql = dbi.getCreateTable("testsuite") | |
|         sql += dbi.getSchemaAttribut("tsid", "id")+"," | |
|         sql += dbi.getSchemaAttribut("name", D.TYPE_STR)+"," | |
|         sql += dbi.getSchemaAttribut("description", D.TYPE_TEXT)+"," | |
|         sql += dbi.getSchemaAttribut("project", D.TYPE_STR)+"," | |
|         sql += dbi.getSchemaAttribut("usecase", D.TYPE_STR)+"," | |
|         sql += dbi.getSchemaAttribut("attributes", D.TYPE_TEXT)+"," | |
|         sql += self.getHistoryFields() | |
|         sql += ");\n" | |
|         sql += self.getHistoryIndex("testsuite") | |
|         for attr in ["application", "testcase"]: | |
|             sql += dbi.getSchemaSubtable("ts", [{"attr":attr, "atype": D.TYPE_STR}])+"\n" | |
|             sql += dbi.getSchemaIndex(dbi.getIndexName("ts", attr), | |
|                                       dbi.getSubTableId(dbi.getSubTableName("ts", attr), attr))+"\n" | |
|         for attr in ["dtable", "step"]: | |
|             sql += dbi.getSchemaSubtable("ts", [{"attr":attr, "atype": D.TYPE_STR}, {"attr":"attributes", "atype": D.TYPE_TEXT}])+"\n" | |
|             sql += dbi.getSchemaIndex(dbi.getSubTableName("ts", attr), | |
|                                       dbi.getSubTableId(dbi.getSubTableName("ts", attr), attr))+"\n" | |
|         return sql | |
| 
 | |
| def select_testsuite(job, project, testsuite): | |
|     jobProj = None | |
|     print("testsuite select: "+str(project)+" "+str(testsuite)) | |
|     if hasattr(job.par, B.PAR_PROJ): | |
|         jobProj = getattr(job.par, B.PAR_PROJ) | |
|     setattr(job.par, B.PAR_PROJ, project) | |
|     path = tools.path_tool.compose_path(job, P.P_TDROOT, None) | |
|     specpath = os.path.join(path, testsuite, D.DFILE_TESTSUITE_NAME + ".csv") | |
|     spec = model.entity.read_spec(job, testsuite, tools.job_tool.GRAN_TS, specpath) | |
|     if jobProj is None: | |
|         delattr(job.par, B.PAR_PROJ) | |
|     else: | |
|         setattr(job.par, B.PAR_PROJ, jobProj) | |
|     return spec | |
| 
 | |
| def select_testsuites(job, projList, appList): | |
|     out = {} | |
|     jobProj = None | |
|     print("testsuite select: "+str(projList)+" "+str(appList)) | |
|     if hasattr(job.par, B.PAR_PROJ): | |
|         jobProj = getattr(job.par, B.PAR_PROJ) | |
|     for proj in projList: | |
|         setattr(job.par, B.PAR_PROJ, proj) | |
|         path = tools.path_tool.compose_path(job, P.P_TDROOT, None) | |
|         if os.path.exists(path): | |
|             for d in os.listdir(path): | |
|                 if not os.path.isdir(os.path.join(path, d)): | |
|                     continue | |
|                 if d[0:1] == "_": | |
|                     continue | |
|                 print(d) | |
|                 specpath = os.path.join(path, d, D.DFILE_TESTSUITE_NAME + ".csv") | |
|                 spec = model.entity.read_spec(job, d, tools.job_tool.GRAN_TS, specpath) | |
|                 if spec is None: | |
|                     continue | |
|                 out[d] = spec | |
|                 out[d][B.SUBJECT_PROJECTS] = [proj] | |
|     if jobProj is None: | |
|         delattr(job.par, B.PAR_PROJ) | |
|     else: | |
|         setattr(job.par, B.PAR_PROJ, jobProj) | |
|     return out
 | |
| 
 |