Просмотр исходного кода

Merge branch 'master' into candidate-8.4.x

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman 3 лет назад
Родитель
Сommit
6bb703e180

+ 57 - 1
esp/src/src/nls/es/hpcc.ts

@@ -19,6 +19,7 @@ export = {
     ActiveWorkunit: "Unidad activa",
     Activities: "Actividades",
     Activity: "Actividad",
+    ActivityLabel: "Etiqueta de actividad",
     ActivityMap: "Mapa de Actividades",
     ActualSize: "Tamaño real",
     Add: "Agregar",
@@ -50,6 +51,7 @@ export = {
     Append: "Agregar",
     AppendCluster: "Agregar Sistema",
     Apply: "Aplicar",
+    Apps: "Aplicaciones",
     ArchivedOnly: "Solo archivado",
     ArchivedWarning: "Advertencia: Por favor especifique rango de fechas corto. O si no, la recuperacion de workunits puede ser demorada.",
     AreYouSureYouWantToResetTheme: "¿Esta seguro que quiere reajustar al tema defecto?",
@@ -93,6 +95,7 @@ export = {
     ClonedWUID: "WUID Clonado",
     CloneTooltip: "Duplicar Workunit",
     Close: "Cerrar",
+    CloseModal: "Cerrar modal emergente",
     Cluster: "Sistema",
     ClusterName: "Nombre del sistema",
     ClusterPlaceholder: "r?x*",
@@ -101,6 +104,7 @@ export = {
     CodeGenerator: "Generador de Código",
     Col: "Columna",
     CollapseAll: "Colapsar Todo",
+    Columns: "Columnas",
     Command: "Comando",
     Comment: "Comentario",
     Compiled: "Compilado",
@@ -112,6 +116,7 @@ export = {
     Compress: "Comprimir",
     Compressed: "Comprimido",
     CompressedFileSize: "Tamaño de Archivo Comprimido",
+    CompressedSize: "Tamaño Comprimido",
     ComputerUpTime: "Tiempo de trabajo de computadora",
     Condition: "Condición",
     Configuration: "Configuracion",
@@ -125,13 +130,17 @@ export = {
     ContinueWorking: "Sigue trabajando",
     Copied: "Copiado",
     Copy: "Copia",
+    CopyLogicalFilename: "Copiar nombre de archivo lógico",
     CopyLogicalFiles: "Copiar Archivo Lógico",
+    CopySelectionToClipboard: "Copiar la selección al portapapeles",
     CopyToClipboard: "Copiar al portapapeles",
     CopyURLToClipboard: "Copia URL al portapapeles",
     CopyWUID: "Copiar WUID",
     CopyWUIDs: "Copiar WUIDs al portapapeles",
     CopyWUIDToClipboard: "Copia WUID al portapapeles",
     Count: "Número",
+    CountFailed: "Recuento de fallidos",
+    CountTotal: "Total de recuento",
     CPULoad: "Carga de CPU",
     Create: "Crear",
     CreateANewFile: "Crear un nuevo superarchivo",
@@ -141,9 +150,11 @@ export = {
     CreatedTime: "Tiempo creado",
     Creating: "Creando",
     Critical: "Crítico",
+    CrossTab: "Tabulación cruzada",
     CSV: "CSV",
     Dali: "Dali",
     DaliIP: "IP de Dali",
+    Dashboard: "Tablero",
     DataPatterns: "Patrones de datos",
     DataPatternsNotStarted: "Análisis no se encuntra. Para comenzar, oprima el botón Analizar encima.",
     DataPatternsStarted: "Analizando. Cuando el reporte este completo se mostrará aquí.",
@@ -209,6 +220,7 @@ export = {
     Down: "Abajo",
     Download: "Descargar",
     Downloads: "Descargas",
+    DownloadSelectionAsCSV: "Descargar la selección como CSV",
     DownloadToCSV: "Bajar en formato CSV",
     DropZone: "Zona de carga",
     DueToInctivity: "Se desconectará de todas las sesiones de ECL Watch en 3 minutos debido a inactividad.",
@@ -219,6 +231,7 @@ export = {
     ECLWatchRequiresCookies: "ECL Watch requiere cookies habilitadas para continuar.",
     ECLWatchSessionManagement: "Gestión de sesiones de ECL Watch",
     ECLWorkunit: "Unidad de Trabajo de ECL",
+    EdgeLabel: "Etiqueta de borde",
     Edges: "Bordes",
     Edit: "Editar",
     EditDOT: "Editar DOT",
@@ -235,6 +248,8 @@ export = {
     EnableBannerText: "Habilitar texto de bandera",
     EnableScopeScans: "Activar Scope Scans",
     EnableScopeScansConfirm: "Esta seguro que desea activar Scope Scans?  Cuando DALI se reinicie, las opciones cambiadas se revierten a las opciones de la configuración.",
+    EndPoint: "Punto final",
+    EndTime: "Hora de finalización",
     EnglishQ: "Ingles?",
     EnterAPercentage: "Entre un porcentaje",
     EnterAPercentageOrMB: "Entre un porcentaje o MB",
@@ -265,6 +280,7 @@ export = {
     ExportSelectionsToList: "Exportar selecciones a lista",
     FailIfNoSourceFile: "Falla si no hay archivo de origen",
     Fatal: "Fatal",
+    Favorites: "Favoritos",
     Fetched: "Obtenido",
     FetchingData: "Obteniendo Data...",
     fetchingresults: "obteniendo resultados",
@@ -331,15 +347,19 @@ export = {
     HideSpills: "Esconder derrames",
     High: "Alto",
     History: "Historia",
+    Homepage: "Página principal",
     HPCCSystems: "HPCC Systems®",
     Icon: "Icono",
     ID: "ID",
+    IgnoreGlobalStoreOutEdges: "Ignorar los bordes de salida de el almacén global",
+    Import: "Importar",
     Inactive: "Inactivo",
     IncludeSlaveLogs: "Incluir slave logs",
     Index: "Indice",
     Info: "información",
     InfoDialog: "Diálogo informativo",
     Informational: "Informativo",
+    Infos: "Información",
     InheritedPermissions: "Heredar Permisos",
     Inputs: "Entradas",
     InUse: "En uso",
@@ -374,12 +394,14 @@ export = {
     LastNHours: "Ultimas N Horas",
     LastNRows: "Ultimas N Filas",
     LastRun: "Ultima ejecución",
+    Layout: "Diseño",
     LDAPWarning: "<b>Error en Servicios de LDAP:</b>  &lsquo;Demasiados Usuarios&rsquo; - Por favor aplique un Filtro.",
     LearnMore: "Aprende más",
     LegacyForm: "Forma histórica",
     LegacyGraphLayout: "Diseño de graphica legacia",
     LegacyGraphWidget: "Widget de graphica legacia",
     Legend: "Leyanda",
+    Length: "Largura",
     LibrariesUsed: "Bibliotecas usadas",
     LibraryName: "Nombre de Biblioteca",
     Limit: "Limito",
@@ -396,8 +418,8 @@ export = {
     LocalFileSystemsOnly: "Sistema de archivos locales solamente",
     Location: "Ubicación",
     Lock: "Cerrar",
-    Log: "Registro",
     log_analysis_1: "log_analysis_1*",
+    Log: "Registro",
     LogDirectory: "Directorio de logs",
     LogFile: "Archivo de registro",
     LoggedInAs: "Conectado como",
@@ -436,11 +458,14 @@ export = {
     MaxSkew: "Sesgo máximo",
     MaxSkewPart: "Sesgo máximo por parte",
     Mean: "Media",
+    MeanBytesOut: "Bytes medios fuera",
     MemberOf: "Miembro de",
     Members: "Miembros",
     Message: "Mensaje",
     MethodConfiguration: "Configuracion de Método",
     Methods: "Métodos",
+    Metrics: "Métrica",
+    MetricsGraph: "Métricas / Gráfico",
     Min: "Minimo",
     Mine: "Mío",
     MinNode: "Nodo mínimo",
@@ -460,6 +485,7 @@ export = {
     MonitorSub: "Sub monitor",
     Month: "Mez",
     More: "Mas",
+    Move: "Mover",
     MustContainUppercaseAndSymbol: "Debe Contener mayúscula y símbolo",
     NA: "No Applica",
     Name: "Nombre",
@@ -501,6 +527,7 @@ export = {
     OpenInNewPageNoFrame: "Abrir en nueva pagina (No Marco)",
     OpenLegacyECLWatch: "Abrir ECL Watch viejo",
     OpenLegacyMode: "Abrir (legacia)",
+    OpenModernECLWatch: "Abrir ECL Watch moderno",
     OpenNativeMode: "Abrir (nativo)",
     OpenSafeMode: "Abrir (modo seguro)",
     OpenSource: "Código Abierto",
@@ -514,6 +541,8 @@ export = {
     OrphanFile2: "Archivo huérfano",
     OrphanMessage: "Un archivo huérfano tiene solo algunas de sus partes en disco. Sin embargo, el conjunto completo de partes no esta disponible para construir un archivo logico completo. No hay referencias a estas partes de archivo en el servidor Dali.",
     OSStats: "Estadísticas del sistema operativo",
+    Other: "Otro",
+    Others: "Otros",
     Outputs: "Salidas",
     Overview: "Visión de conjunto",
     Overwrite: "Sobreescribir",
@@ -545,6 +574,8 @@ export = {
     PctComplete: "% completado",
     PercentCompressed: "Porcentaje comprimido",
     PercentDone: "Porcentaje completado",
+    Percentile97: "Percentil 97",
+    Percentile97Estimate: "Estimación del percentil 97",
     PercentUsed: "% Usado",
     PerformingLayout: "Generando disposición...",
     Permission: "Permiso",
@@ -692,7 +723,11 @@ export = {
     SearchResults: "Resultados de búsqueda",
     SecondsRemaining: "Segundos que faltan",
     Security: "Seguridad",
+    SeeConfigurationManager: "Ver Administrador de configuración",
+    SelectA: "Seleccione un",
+    SelectEllipsis: "Seleccione...",
     SelectPackageFile: "Seleccione &lsquo;Package File&rsquo;",
+    SelectValue: "Seleccione un valor",
     SendEmail: "Enviar correo electrónico",
     Separators: "Seperadores",
     Server: "Servidor",
@@ -706,9 +741,11 @@ export = {
     Severity: "Severidad",
     ShareWorkunit: "Compartir workunit",
     Show: "Mostrar",
+    ShowPassword: "Mostrar contraseña",
     ShowProcessesUsingFilter: "Mostrar procesos usando filtro",
     ShowSVG: "Mostrar SVG",
     Size: "Tamaño",
+    SizeMeanPeakMemory: "Promedio maximo de memoria",
     Skew: "Desbalance",
     SkewNegative: "Desbalanceado(-)",
     SkewPositive: "Desbalanceado(+)",
@@ -734,6 +771,7 @@ export = {
     Start: "Comienzo",
     Started: "Comenzado",
     Starting: "Comenzando",
+    StartTime: "Hora de inicio",
     State: "Estado",
     Stats: "Estatísticas",
     Status: "Estado",
@@ -741,12 +779,14 @@ export = {
     Stopping: "Deteniendo",
     StorageInformation: "Información del almacenamiento",
     Subgraph: "Subgrafo",
+    SubgraphLabel: "Etiqueta de subgrafo",
     Subgraphs: "Sub-gráficos",
     Submit: "Enviar",
     Subtype: "Subtipo",
     SuccessfullySaved: "Guardado",
     Summary: "Resumen",
     SummaryMessage: "Mensaje resumido",
+    SummaryStatistics: "Resumen Estadístico",
     SuperFile: "Super File",
     Superfile: "Superfile",
     Superfiles: "Super-Archivos",
@@ -785,6 +825,9 @@ export = {
     ThorNetworkAddress: "Dirección de red de Thor",
     ThorProcess: "Proceso de Thor",
     Time: "Tiempo",
+    TimeMaxTotalExecuteMinutes: "Maximo tiempo total de ejecucion en minutos",
+    TimeMeanTotalExecuteMinutes: "Total tiempo total de ejecucion en minutos",
+    TimeMinTotalExecuteMinutes: "Minomo tiempo total de ejecucion en minutos",
     Timers: "Cronómetros",
     TimeSeconds: "Tiempo (Segundos)",
     TimeStamp: "Marca de tiempo",
@@ -893,6 +936,7 @@ export = {
     UpdateDFs: "Actualizar DFS",
     UpdateSuperFiles: "Actualizar superfile",
     Upload: "Subir",
+    Uploading: "Subiendo",
     UpTime: "Tiempo de trabajo",
     URL: "URL",
     Usage: "Utilización",
@@ -914,6 +958,16 @@ export = {
     ValidateResult: "=====Velida el Resultado=====\n\n",
     ValidateResultHere: "(resultado de la validación)",
     Validating: "Validando…",
+    ValidationErrorEnterNumber: "Ingrese un numero valido",
+    ValidationErrorExpireDaysMinimum: "No debe ser inferior a 1 día.",
+    ValidationErrorNamePrefix: "Debe coincidir con el patrón 'algunos :: prefijo'",
+    ValidationErrorNumberGreater: "No puede ser mayor que",
+    ValidationErrorNumberLess: "No puede ser menor que",
+    ValidationErrorRecordSizeNumeric: "La longitud del registro debe ser un número",
+    ValidationErrorRecordSizeRequired: "Se requiere la longitud del registro",
+    ValidationErrorRequired: "Este campo es obligatorio",
+    ValidationErrorTargetNameInvalid: "Nombre de archivo inválido",
+    ValidationErrorTargetNameRequired: "El nombre del archivo es obligatorio",
     Value: "Valor",
     Variable: "Variable",
     VariableBigendian: "Variable &lsquo;Big-endian&rsquo;",
@@ -923,6 +977,7 @@ export = {
     ViewByScope: "&lsquo;Ver Por Ámbito&rsquo;",
     Views: "Vistas",
     ViewSparkClusterInfo: "Ver Información de Sistema Spark",
+    Visualizations: "Visualizaciones",
     Visualize: "Visualizar",
     WarnIfAvailableDiskSpaceIsUnder: "Advertencia si disco disponible esta debajo de",
     WarnIfAvailableMemoryIsUnder: "Advertencia si memoria disponible esta debajo de",
@@ -967,5 +1022,6 @@ export = {
     ZoomAll: "Aumentar todo",
     ZoomMinus: "Enfocar menos",
     ZoomPlus: "Enfocar más",
+    ZoomSelection: "Selección de zoom",
     ZoomWidth: "Aumentar al ancho"
 }

+ 2 - 1
testing/regress/ecl-test

@@ -312,7 +312,8 @@ class RegressMain:
         self.config = Config(self.args.config).configObj
         if ('server' in self.args) and (self.args.server != None):
             if ':' in self.args.server:
-                ip, port = self.args.server.split(':')
+                ipAndPort =  self.args.server.split('//')[-1]     #Remove any prefix like 'http://' if the seerver address is something like tthis: 'http://192.168.1.54:30521'
+                ip, port =ipAndPort.split(':')
                 if isPositiveIntNum(port):
                     self.config.set('espSocket', port)
                 else:

+ 4 - 2
testing/regress/ecl-test-azure.json

@@ -50,8 +50,10 @@
         ],
         "Params":[
             "PassTest.ecl:bla='A value'",
-            "httpcall_multiheader.ecl:TargetIP=.",
-            "soapcall_multihttpheader.ecl:TargetIP=."
+            "httpcall_multiheader.ecl:TargetIP=40.88.243.151",
+            "httpcall_jsonpost.ecl:targetIP=52.226.177.210",
+            "httpcall_xmlpost.ecl:targetIP=52.226.177.210",
+            "soapcall_multihttpheader.ecl:TargetIP=40.88.243.151"
         ],
         "engineParams":[
             "failOnLeaks",

+ 1 - 1
testing/regress/hpcc/common/shell.py

@@ -69,5 +69,5 @@ class Shell:
                 err_msg += str(''.join([_f for _f in [stdout] if _f]))
             exception.output = err_msg +"'"
             logger.debug("exception.output:'%s'",  err_msg)
-            raise Error('1001', err=str(err_msg))
+            #raise Error('1001', err=str(err_msg))  # Unnecessary noise. The problem will be reported later in the test case result.
         return stdout, stderr

+ 2 - 2
testing/regress/hpcc/regression/regress.py

@@ -570,13 +570,13 @@ class Regression:
                                               server=self.config.espIp,
                                               username=self.config.username,
                                               password=self.config.password,
-                                              retryCount=self.config.maxAttemptCount)
+                                              retryCount=int(self.config.maxAttemptCount))
                         else:
                             res = eclCmd.runCmd("run", engine, cluster, query, report[0],
                                               server=self.config.espIp,
                                               username=self.config.username,
                                               password=self.config.password,
-                                              retryCount=self.config.maxAttemptCount)
+                                              retryCount=int(self.config.maxAttemptCount))
                     except Error as e:
                         logger.debug("Exception raised:'%s' (line: %s )"  % ( str(e), str(inspect.stack()[0][2]) ),  extra={'taskId':cnt})
                         res = False

+ 17 - 11
testing/regress/hpcc/util/ecl/command.py

@@ -25,7 +25,7 @@ import traceback
 
 from ...common.shell import Shell
 from ...common.error import Error
-from ...util.util import queryWuid, getConfig, clearOSCache
+from ...util.util import queryWuid, getConfig, clearOSCache, printException
 
 import xml.etree.ElementTree as ET
 
@@ -133,19 +133,21 @@ class ECLcmd(Shell):
                 if "aborted" in i:
                     state = "aborted"
                 if cnt > 4:
-                    if i.startswith('<Warning>') or i.startswith('<Exception>'):
+                    if (i.startswith('<Warning>') or i.startswith('<Exception>')) and ('Filename' in i ):
                         # Remove absolute path from filename to 
                         # enable to compare it with same part of keyfile
-                        xml = ET.fromstring(i)
                         try:
+                            xml = ET.fromstring(i)
                             path = xml.find('.//Filename').text
                             logger.debug("%3d. path:'%s'", eclfile.getTaskId(),  path )
                             filename = os.path.basename(path)
                             xml.find('.//Filename').text = filename
-                        except:
-                            logger.debug("%3d. Unexpected error: %s (line: %s) ", eclfile.getTaskId(), str(sys.exc_info()[0]), str(inspect.stack()[0][2]))
+                        except Exception as e: 
+                            logger.debug("%3d. Unexpected error: %s - %s (line: %s) ", eclfile.getTaskId(), str(sys.exc_info()[0]), str(e), str(inspect.stack()[0][2]))
+                            printException(repr(e) + " runCmd()",  debug=False)
+                            
                         finally:
-                            i = ET.tostring(xml).decode("utf-8")
+                            i = ET.tostring(xml, short_empty_elements=False).decode("utf-8")
                         logger.debug("%3d. ret:'%s'", eclfile.getTaskId(),  i )
                         pass
                     try:
@@ -236,17 +238,21 @@ class ECLcmd(Shell):
                 elif (res['state'] == 'failed'):
                     logger.debug("%3d. in state == failed 'wuid':'%s', 'state':'%s', data':'%s', ", eclfile.getTaskId(), res['wuid'], res['state'], data)
                     resultLines = data.strip().split('\n')
+                    resultLinesLen = len(resultLines)
                     resultLineIndex = 0;
-                    #                                                   It has some output what should compare    
-                    while resultLineIndex < len(resultLines) and not resultLines[resultLineIndex].startswith('<'):
+                    #                                                 It has some output what should compare
+                    while resultLineIndex <resultLinesLen and not resultLines[resultLineIndex].startswith('<'):
                         resultLineIndex += 1
-                    logger.debug("%3d. State is fail (resultLineIndex:%d, resultLines:'%s' )", eclfile.getTaskId(), resultLineIndex,  resultLines)
+                    logger.debug("%3d. State is fail (resultLineIndex:%d, resultLinesLen:%d, resultLines:'%s' )", eclfile.getTaskId(), resultLineIndex, resultLinesLen, resultLines)
                     data = '\n'.join(resultLines[resultLineIndex:])+ "\n"
                     eclfile.addResults(data, wuid)
                     logger.debug("%3d. State is fail (resultLineIndex:%d, data:'%s' )", eclfile.getTaskId(), resultLineIndex,  data)
-                    test = False
-                    if not resultLines[resultLineIndex].startswith('Error ('):
+                    if ( resultLinesLen > 0 ) and ( resultLineIndex < resultLinesLen ) and ( not resultLines[resultLineIndex].startswith('Error (') ) and resultLines[resultLineIndex].startswith('<') and True :
                         test = eclfile.testResults()
+                    else:
+                        test = False
+                        eclfile.diff = ("%3d. Test: %s\n") % (eclfile.taskId, eclfile.getBaseEclRealName())
+                        eclfile.diff += '\tNo output\n'
                 else:
                     test = eclfile.testResults()
             report.addResult(eclfile)