Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
erp5
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Labels
Merge Requests
139
Merge Requests
139
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Jobs
Commits
Open sidebar
nexedi
erp5
Commits
da44845a
Commit
da44845a
authored
Feb 20, 2023
by
Thomas Gambier
🚴🏼
Committed by
Lu Xu
Mar 27, 2023
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
erp5_test_result: rework slapos agent distributor
parent
27c22d64
Changes
28
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
28 changed files
with
562 additions
and
256 deletions
+562
-256
bt5/erp5_test_result/DocumentTemplateItem/portal_components/document.erp5.ERP5ProjectUnitTestDistributor.py
...omponents/document.erp5.ERP5ProjectUnitTestDistributor.py
+6
-4
bt5/erp5_test_result/DocumentTemplateItem/portal_components/document.erp5.ERP5ScalabilityDistributor.py
...al_components/document.erp5.ERP5ScalabilityDistributor.py
+1
-1
bt5/erp5_test_result/DocumentTemplateItem/portal_components/document.erp5.SlapOSAgentDistributor.py
...portal_components/document.erp5.SlapOSAgentDistributor.py
+91
-15
bt5/erp5_test_result/DocumentTemplateItem/portal_components/document.erp5.SlapOSAgentDistributor.xml
...ortal_components/document.erp5.SlapOSAgentDistributor.xml
+3
-1
bt5/erp5_test_result/ExtensionTemplateItem/portal_components/extension.erp5.ScalabilityTestSuiteUtils.py
...al_components/extension.erp5.ScalabilityTestSuiteUtils.py
+2
-2
bt5/erp5_test_result/PropertySheetTemplateItem/portal_property_sheets/SlapOSSoftwareReleaseUnitTest/filter_kw_property.xml
...eets/SlapOSSoftwareReleaseUnitTest/filter_kw_property.xml
+34
-0
bt5/erp5_test_result/PropertySheetTemplateItem/portal_property_sheets/SlapOSSoftwareReleaseUnitTest/shared_property.xml
..._sheets/SlapOSSoftwareReleaseUnitTest/shared_property.xml
+38
-0
bt5/erp5_test_result/PropertySheetTemplateItem/portal_property_sheets/SlapOSSoftwareReleaseUnitTest/software_type_property.xml
.../SlapOSSoftwareReleaseUnitTest/software_type_property.xml
+38
-0
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/SlapOSSoftwareReleaseUnitTest_view.xml
...s/erp5_test_result/SlapOSSoftwareReleaseUnitTest_view.xml
+3
-0
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/SlapOSSoftwareReleaseUnitTest_view/my_filter_kw.xml
...esult/SlapOSSoftwareReleaseUnitTest_view/my_filter_kw.xml
+54
-61
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/SlapOSSoftwareReleaseUnitTest_view/my_shared.xml
...t_result/SlapOSSoftwareReleaseUnitTest_view/my_shared.xml
+184
-0
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/SlapOSSoftwareReleaseUnitTest_view/my_software_type.xml
...t/SlapOSSoftwareReleaseUnitTest_view/my_software_type.xml
+3
-26
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/SlapOSSoftwareReleaseUnitTest_view/my_text_content.xml
...lt/SlapOSSoftwareReleaseUnitTest_view/my_text_content.xml
+1
-1
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/TaskDistributorAlarm_optimize.py
...l_skins/erp5_test_result/TaskDistributorAlarm_optimize.py
+2
-2
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/TestResultLine_getResultHistoryList.py
...s/erp5_test_result/TestResultLine_getResultHistoryList.py
+2
-2
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/TestResultLine_view/my_duration.xml
...kins/erp5_test_result/TestResultLine_view/my_duration.xml
+14
-53
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/TestResultModule_reportCompleted.py
...kins/erp5_test_result/TestResultModule_reportCompleted.py
+1
-1
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/TestResult_getJsonScalabilityStats.py
...ns/erp5_test_result/TestResult_getJsonScalabilityStats.py
+3
-3
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/TestResult_getJumpVCSResultList.py
...skins/erp5_test_result/TestResult_getJumpVCSResultList.py
+3
-3
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/TestResult_getSummaryForRSS.py
...tal_skins/erp5_test_result/TestResult_getSummaryForRSS.py
+8
-8
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/TestResult_getTestSuiteList.py
...tal_skins/erp5_test_result/TestResult_getTestSuiteList.py
+1
-1
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/TestResult_getTitleForRSS.py
...ortal_skins/erp5_test_result/TestResult_getTitleForRSS.py
+1
-1
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/TestResult_statTestResultLineList.py
...ins/erp5_test_result/TestResult_statTestResultLineList.py
+1
-2
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/TestResult_view.xml
...ateItem/portal_skins/erp5_test_result/TestResult_view.xml
+0
-2
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/TestSuiteModule_addTestSuite.py
...al_skins/erp5_test_result/TestSuiteModule_addTestSuite.py
+1
-1
bt5/erp5_test_result/TestTemplateItem/portal_components/test.erp5.testTaskDistribution.py
...eItem/portal_components/test.erp5.testTaskDistribution.py
+63
-63
bt5/erp5_test_result/ToolComponentTemplateItem/portal_components/tool.erp5.TaskDistributionTool.py
...eItem/portal_components/tool.erp5.TaskDistributionTool.py
+3
-2
bt5/erp5_test_result/WorkflowTemplateItem/portal_workflow/test_result_workflow/script_TestResult_fail.py
...l_workflow/test_result_workflow/script_TestResult_fail.py
+1
-1
No files found.
bt5/erp5_test_result/DocumentTemplateItem/portal_components/document.erp5.ERP5ProjectUnitTestDistributor.py
View file @
da44845a
...
@@ -28,7 +28,7 @@ from Products.ERP5Type.XMLObject import XMLObject
...
@@ -28,7 +28,7 @@ from Products.ERP5Type.XMLObject import XMLObject
from
DateTime
import
DateTime
from
DateTime
import
DateTime
import
json
import
json
import
random
import
random
from
zLOG
import
LOG
,
DEBUG
,
ERROR
from
zLOG
import
LOG
,
DEBUG
,
ERROR
,
INFO
from
AccessControl
import
ClassSecurityInfo
from
AccessControl
import
ClassSecurityInfo
from
Products.ERP5Type
import
Permissions
from
Products.ERP5Type
import
Permissions
from
Products.ZSQLCatalog.SQLCatalog
import
SimpleQuery
from
Products.ZSQLCatalog.SQLCatalog
import
SimpleQuery
...
@@ -271,7 +271,7 @@ class ERP5ProjectUnitTestDistributor(XMLObject):
...
@@ -271,7 +271,7 @@ class ERP5ProjectUnitTestDistributor(XMLObject):
if
test_node
.
getValidationState
()
!=
'validated'
:
if
test_node
.
getValidationState
()
!=
'validated'
:
try
:
try
:
test_node
.
validate
()
test_node
.
validate
()
except
Exception
as
e
:
except
Exception
,
e
:
LOG
(
'Test Node Validate'
,
ERROR
,
'%s'
%
e
)
LOG
(
'Test Node Validate'
,
ERROR
,
'%s'
%
e
)
if
test_node
is
None
:
if
test_node
is
None
:
test_node
=
test_node_module
.
newContent
(
portal_type
=
"Test Node"
,
title
=
title
,
computer_guid
=
computer_guid
,
test_node
=
test_node_module
.
newContent
(
portal_type
=
"Test Node"
,
title
=
title
,
computer_guid
=
computer_guid
,
...
@@ -384,7 +384,7 @@ class ERP5ProjectUnitTestDistributor(XMLObject):
...
@@ -384,7 +384,7 @@ class ERP5ProjectUnitTestDistributor(XMLObject):
for
x
in
to_delete_key_list
:
for
x
in
to_delete_key_list
:
config
.
pop
(
x
)
config
.
pop
(
x
)
config_list
.
append
(
config
)
config_list
.
append
(
config
)
LOG
(
'ERP5ProjectUnitTestDistributor.startTestSuite, config_list'
,
DEBUG
,
config_list
)
LOG
(
'ERP5ProjectUnitTestDistributor.startTestSuite, config_list'
,
INFO
,
config_list
)
if
batch_mode
:
if
batch_mode
:
return
config_list
return
config_list
return
json
.
dumps
(
config_list
)
return
json
.
dumps
(
config_list
)
...
@@ -395,12 +395,13 @@ class ERP5ProjectUnitTestDistributor(XMLObject):
...
@@ -395,12 +395,13 @@ class ERP5ProjectUnitTestDistributor(XMLObject):
"""
"""
Here this is only a proxy to the task distribution tool
Here this is only a proxy to the task distribution tool
"""
"""
LOG
(
'ERP5ProjectUnitTestDistributor.createTestResult'
,
DEBUG
,
(
node_title
,
test_title
))
LOG
(
'ERP5ProjectUnitTestDistributor.createTestResult'
,
INFO
,
(
node_title
,
test_title
))
portal
=
self
.
getPortalObject
()
portal
=
self
.
getPortalObject
()
if
node_title
:
if
node_title
:
test_node
=
self
.
_getTestNodeFromTitle
(
node_title
)
test_node
=
self
.
_getTestNodeFromTitle
(
node_title
)
test_node
.
setPingDate
()
test_node
.
setPingDate
()
test_suite
=
self
.
_getTestSuiteFromTitle
(
test_title
)
test_suite
=
self
.
_getTestSuiteFromTitle
(
test_title
)
LOG
(
'ERP5ProjectUnitTestDistributor.createTestResult 2'
,
INFO
,
(
test_suite
))
if
test_suite
is
not
None
:
if
test_suite
is
not
None
:
if
not
allow_restart
and
test_suite
.
isEnabled
():
if
not
allow_restart
and
test_suite
.
isEnabled
():
# in case if allow_restart is not enforced by client and test_node
# in case if allow_restart is not enforced by client and test_node
...
@@ -430,6 +431,7 @@ class ERP5ProjectUnitTestDistributor(XMLObject):
...
@@ -430,6 +431,7 @@ class ERP5ProjectUnitTestDistributor(XMLObject):
return
test_node
return
test_node
def
_getTestSuiteFromTitle
(
self
,
suite_title
):
def
_getTestSuiteFromTitle
(
self
,
suite_title
):
LOG
(
'ERP5ProjectUnitTestDistributor._getTestSuiteFromTitle'
,
INFO
,
(
suite_title
,
self
.
_getTestSuiteModule
()))
test_suite_list
=
self
.
_getTestSuiteModule
().
searchFolder
(
test_suite_list
=
self
.
_getTestSuiteModule
().
searchFolder
(
portal_type
=
'Test Suite'
,
portal_type
=
'Test Suite'
,
title
=
SimpleQuery
(
comparison_operator
=
'='
,
title
=
suite_title
),
title
=
SimpleQuery
(
comparison_operator
=
'='
,
title
=
suite_title
),
...
...
bt5/erp5_test_result/DocumentTemplateItem/portal_components/document.erp5.ERP5ScalabilityDistributor.py
View file @
da44845a
...
@@ -128,7 +128,7 @@ class ERP5ScalabilityDistributor(ERP5ProjectUnitTestDistributor, object):
...
@@ -128,7 +128,7 @@ class ERP5ScalabilityDistributor(ERP5ProjectUnitTestDistributor, object):
if
test_node
.
getValidationState
()
!=
'validated'
:
if
test_node
.
getValidationState
()
!=
'validated'
:
try
:
try
:
test_node
.
validate
()
test_node
.
validate
()
except
Exception
as
e
:
except
Exception
,
e
:
LOG
(
'Test Node Validate'
,
ERROR
,
'%s'
%
e
)
LOG
(
'Test Node Validate'
,
ERROR
,
'%s'
%
e
)
return
test_node
return
test_node
return
None
return
None
...
...
bt5/erp5_test_result/DocumentTemplateItem/portal_components/document.erp5.SlapOSAgentDistributor.py
View file @
da44845a
...
@@ -26,7 +26,9 @@
...
@@ -26,7 +26,9 @@
##############################################################################
##############################################################################
from
erp5.component.document.ERP5ProjectUnitTestDistributor
import
ERP5ProjectUnitTestDistributor
from
erp5.component.document.ERP5ProjectUnitTestDistributor
import
ERP5ProjectUnitTestDistributor
from
DateTime
import
DateTime
from
zLOG
import
LOG
,
DEBUG
,
ERROR
,
INFO
from
Products.ZSQLCatalog.SQLCatalog
import
SimpleQuery
from
AccessControl
import
ClassSecurityInfo
from
AccessControl
import
ClassSecurityInfo
from
Products.ERP5Type
import
Permissions
from
Products.ERP5Type
import
Permissions
import
json
import
json
...
@@ -65,41 +67,115 @@ class SlapOSAgentDistributor(ERP5ProjectUnitTestDistributor):
...
@@ -65,41 +67,115 @@ class SlapOSAgentDistributor(ERP5ProjectUnitTestDistributor):
"""
"""
return
'SlapOSAgentTest'
return
'SlapOSAgentTest'
security
.
declarePublic
(
"createTestResult"
)
def
createTestResult
(
self
,
name
,
revision
,
test_name_list
,
allow_restart
,
test_title
=
None
,
node_title
=
None
,
project_title
=
None
):
"""
Here this is only a proxy to the task distribution tool
"""
LOG
(
'SlapOSAgentDistributor.createTestResult'
,
INFO
,
(
node_title
,
test_title
,
revision
))
portal
=
self
.
getPortalObject
()
if
node_title
:
test_node
=
self
.
_getTestNodeFromTitle
(
node_title
)
test_node
.
setPingDate
()
test_suite
=
self
.
_getTestSuiteFromTitle
(
test_title
)
LOG
(
'SlapOSAgentDistributor.createTestResult 2'
,
INFO
,
(
test_suite
))
if
test_suite
is
not
None
:
if
not
allow_restart
and
test_suite
.
isEnabled
():
# in case if allow_restart is not enforced by client and test_node
# periodicity is enabled control the restartability based on test_suite
# periodicity
current_date
=
DateTime
()
alarm_date
=
test_suite
.
getAlarmDate
()
if
alarm_date
is
None
or
alarm_date
<=
current_date
:
allow_restart
=
True
test_suite
.
setAlarmDate
(
test_suite
.
getNextPeriodicalDate
(
current_date
,
alarm_date
))
#test_suite.setPingDate()
return
portal
.
portal_task_distribution
.
createTestResult
(
name
,
revision
,
test_name_list
,
allow_restart
,
test_title
=
test_title
,
node_title
=
node_title
,
project_title
=
project_title
)
def
_getTestNodeFromTitle
(
self
,
node_title
):
test_node_list
=
self
.
_getTestNodeModule
().
searchFolder
(
portal_type
=
"Test Node"
,
title
=
SimpleQuery
(
comparison_operator
=
'='
,
title
=
node_title
),
limit
=
2
)
assert
len
(
test_node_list
)
==
1
,
"We found %i test nodes for %s"
%
(
len
(
test_node_list
),
node_title
)
test_node
=
test_node_list
[
0
].
getObject
()
return
test_node
def
_getTestSuiteFromTitle
(
self
,
suite_title
):
LOG
(
'SlapOSAgentDistributor._getTestSuiteFromTitle'
,
INFO
,
(
suite_title
,
self
.
_getTestSuiteModule
()))
test_suite_list
=
self
.
_getTestSuiteModule
().
searchFolder
(
portal_type
=
'SlapOS Agent Test Suite'
,
title
=
SimpleQuery
(
comparison_operator
=
'='
,
title
=
suite_title
),
validation_state
=
'validated'
,
limit
=
2
)
assert
len
(
test_suite_list
)
<=
1
,
"We found %i test suite for %s"
%
(
len
(
test_suite_list
),
suite_title
)
test_suite
=
None
if
len
(
test_suite_list
):
test_suite
=
test_suite_list
[
0
].
getObject
()
return
test_suite
security
.
declarePublic
(
"generateConfiguration"
)
security
.
declarePublic
(
"generateConfiguration"
)
def
generateConfiguration
(
self
,
test_suite_title
,
batch_mode
=
0
):
def
generateConfiguration
(
self
,
test_suite_title
,
batch_mode
=
0
):
"""
"""
generateConfiguration :
this is just a proxy to an external method
generateConfiguration :
not used for slapos agent
"""
"""
test_suite_module
=
self
.
_getTestSuiteModule
(
)
return
json
.
dumps
({
"configuration_list"
:
[{}]}
)
security
.
declarePublic
(
"getServiceList"
)
def
getServiceList
(
self
,
test_suite_title
):
"""
getServiceList : return a dict containing the list of services to request to slapos master before running the test
"""
LOG
(
'[SlapOSAgentDistributor] getServiceList'
,
INFO
,
test_suite_title
)
test_suite_module
=
self
.
_getTestSuiteModule
()
test_suite_list
=
test_suite_module
.
searchFolder
(
test_suite_list
=
test_suite_module
.
searchFolder
(
title
=
test_suite_title
,
title
=
test_suite_title
,
validation_state
=
"validated"
,
validation_state
=
"validated"
,
specialise_uid
=
self
.
getUid
())
specialise_uid
=
self
.
getUid
())
service_list
=
{}
if
len
(
test_suite_list
)
==
0
:
if
len
(
test_suite_list
)
==
0
:
return
json
.
dumps
({})
error_message
=
'Error getting test suite information. Bad test suite title? '
LOG
(
'[SlapOSAgentDistributor] getServiceList'
,
ERROR
,
error_message
)
return
json
.
dumps
({
'error_message'
:
error_message
})
generated_configuration
=
{}
for
unit_test
in
test_suite_list
[
0
].
searchFolder
(
for
unit_test
in
test_suite_list
[
0
].
searchFolder
(
portal_type
=
"SlapOS Software Release Unit Test"
):
portal_type
=
"SlapOS Software Release Unit Test"
):
generated_configuration
[
unit_test
.
getTitle
()]
=
{
LOG
(
'[SlapOSAgentDistributor] getServiceList, unit_test: '
,
INFO
,
unit_test
.
getTitle
())
service_list
[
unit_test
.
getTitle
()]
=
{
"title"
:
unit_test
.
getTitle
(),
"title"
:
unit_test
.
getTitle
(),
"url"
:
unit_test
.
getUrlString
(),
"url"
:
unit_test
.
getUrlString
(),
"group"
:
unit_test
.
getGroupReference
(
"default"
)}
"group"
:
unit_test
.
getGroupReference
(
"default"
),
"shared"
:
unit_test
.
getShared
(),
if
unit_test
.
getTextContent
()
is
not
None
:
"software_type"
:
unit_test
.
getSoftwareType
(),
generated_configuration
[
unit_test
.
getTitle
()][
'request_kw'
]
=
unit_test
.
getTextContent
()
"partition_parameter_kw"
:
unit_test
.
getTextContent
(),
"filter_kw"
:
unit_test
.
getFilterKw
()
}
if
unit_test
.
getSupplyComputer
()
is
not
None
:
if
unit_test
.
getSupplyComputer
()
is
not
None
:
generated_configuration
[
unit_test
.
getTitle
()][
'supply_computer'
]
=
unit_test
.
getSupplyComputer
()
service_list
[
unit_test
.
getTitle
()][
'supply_computer'
]
=
unit_test
.
getSupplyComputer
()
return
json
.
dumps
(
generated_configuration
)
LOG
(
'[SlapOSAgentDistributor] getServiceList, final service_list: '
,
INFO
,
service_list
)
return
json
.
dumps
(
service_list
)
def
_getSortedNodeTestSuiteToRun
(
self
,
test_node
):
"""
Returned ordered list of test suites of a test node.
For now do nothing
"""
test_suite_list
=
test_node
.
getAggregateValueList
()
return
test_suite_list
...
...
bt5/erp5_test_result/DocumentTemplateItem/portal_components/document.erp5.SlapOSAgentDistributor.xml
View file @
da44845a
...
@@ -39,7 +39,9 @@
...
@@ -39,7 +39,9 @@
<item>
<item>
<key>
<string>
text_content_warning_message
</string>
</key>
<key>
<string>
text_content_warning_message
</string>
</key>
<value>
<value>
<tuple/>
<tuple>
<string>
W: 30, 0: Unused DEBUG imported from zLOG (unused-import)
</string>
</tuple>
</value>
</value>
</item>
</item>
<item>
<item>
...
...
bt5/erp5_test_result/ExtensionTemplateItem/portal_components/extension.erp5.ScalabilityTestSuiteUtils.py
View file @
da44845a
bt5/erp5_test_result/PropertySheetTemplateItem/portal_property_sheets/SlapOSSoftwareReleaseUnitTest/filter_kw_property.xml
0 → 100644
View file @
da44845a
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"Standard Property"
module=
"erp5.portal_type"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
categories
</string>
</key>
<value>
<tuple>
<string>
elementary_type/text
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
filter_kw_property
</string>
</value>
</item>
<item>
<key>
<string>
portal_type
</string>
</key>
<value>
<string>
Standard Property
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_test_result/PropertySheetTemplateItem/portal_property_sheets/SlapOSSoftwareReleaseUnitTest/shared_property.xml
0 → 100644
View file @
da44845a
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"Standard Property"
module=
"erp5.portal_type"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
categories
</string>
</key>
<value>
<tuple>
<string>
elementary_type/boolean
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<string>
Is it shared instance
</string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
shared_property
</string>
</value>
</item>
<item>
<key>
<string>
portal_type
</string>
</key>
<value>
<string>
Standard Property
</string>
</value>
</item>
<item>
<key>
<string>
property_default
</string>
</key>
<value>
<none/>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_test_result/PropertySheetTemplateItem/portal_property_sheets/SlapOSSoftwareReleaseUnitTest/software_type_property.xml
0 → 100644
View file @
da44845a
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"Standard Property"
module=
"erp5.portal_type"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
categories
</string>
</key>
<value>
<tuple>
<string>
elementary_type/text
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<string>
software_type used for the service
</string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
software_type_property
</string>
</value>
</item>
<item>
<key>
<string>
portal_type
</string>
</key>
<value>
<string>
Standard Property
</string>
</value>
</item>
<item>
<key>
<string>
property_default
</string>
</key>
<value>
<none/>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/SlapOSSoftwareReleaseUnitTest_view.xml
View file @
da44845a
...
@@ -104,6 +104,9 @@
...
@@ -104,6 +104,9 @@
<string>
my_url_string
</string>
<string>
my_url_string
</string>
<string>
my_supply_computer
</string>
<string>
my_supply_computer
</string>
<string>
my_group_reference
</string>
<string>
my_group_reference
</string>
<string>
my_software_type
</string>
<string>
my_shared
</string>
<string>
my_filter_kw
</string>
</list>
</list>
</value>
</value>
</item>
</item>
...
...
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/
TestResult_view/your_real_duration
.xml
→
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/
SlapOSSoftwareReleaseUnitTest_view/my_filter_kw
.xml
View file @
da44845a
This diff is collapsed.
Click to expand it.
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/SlapOSSoftwareReleaseUnitTest_view/my_shared.xml
0 → 100644
View file @
da44845a
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"CheckBoxField"
module=
"Products.Formulator.StandardFields"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
my_shared
</string>
</value>
</item>
<item>
<key>
<string>
message_values
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
external_validator_failed
</string>
</key>
<value>
<string>
The input failed the external validator.
</string>
</value>
</item>
<item>
<key>
<string>
required_not_found
</string>
</key>
<value>
<string>
This field is mandatory.
</string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
overrides
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
alternate_name
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
css_class
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
default
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
editable
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
enabled
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
external_validator
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
extra
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
hidden
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
required
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
tales
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
alternate_name
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
css_class
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
default
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
editable
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
enabled
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
external_validator
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
extra
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
hidden
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
required
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
values
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
alternate_name
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
css_class
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
default
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
editable
</string>
</key>
<value>
<int>
1
</int>
</value>
</item>
<item>
<key>
<string>
enabled
</string>
</key>
<value>
<int>
1
</int>
</value>
</item>
<item>
<key>
<string>
external_validator
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
extra
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
hidden
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
required
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Shared
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/
TestResult_view/listbox_duration
.xml
→
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/
SlapOSSoftwareReleaseUnitTest_view/my_software_type
.xml
View file @
da44845a
...
@@ -8,7 +8,7 @@
...
@@ -8,7 +8,7 @@
<dictionary>
<dictionary>
<item>
<item>
<key>
<string>
id
</string>
</key>
<key>
<string>
id
</string>
</key>
<value>
<string>
listbox_duration
</string>
</value>
<value>
<string>
my_software_type
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
message_values
</string>
</key>
<key>
<string>
message_values
</string>
</key>
...
@@ -77,10 +77,6 @@
...
@@ -77,10 +77,6 @@
<key>
<string>
hidden
</string>
</key>
<key>
<string>
hidden
</string>
</key>
<value>
<string></string>
</value>
<value>
<string></string>
</value>
</item>
</item>
<item>
<key>
<string>
input_type
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<item>
<key>
<string>
max_length
</string>
</key>
<key>
<string>
max_length
</string>
</key>
<value>
<string></string>
</value>
<value>
<string></string>
</value>
...
@@ -122,9 +118,7 @@
...
@@ -122,9 +118,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
default
</string>
</key>
<key>
<string>
default
</string>
</key>
<value>
<value>
<string></string>
</value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
description
</string>
</key>
<key>
<string>
description
</string>
</key>
...
@@ -158,10 +152,6 @@
...
@@ -158,10 +152,6 @@
<key>
<string>
hidden
</string>
</key>
<key>
<string>
hidden
</string>
</key>
<value>
<string></string>
</value>
<value>
<string></string>
</value>
</item>
</item>
<item>
<key>
<string>
input_type
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<item>
<key>
<string>
max_length
</string>
</key>
<key>
<string>
max_length
</string>
</key>
<value>
<string></string>
</value>
<value>
<string></string>
</value>
...
@@ -251,7 +241,7 @@
...
@@ -251,7 +241,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
title
</string>
</key>
<key>
<string>
title
</string>
</key>
<value>
<string>
Duration
</string>
</value>
<value>
<string>
Software Type
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
truncate
</string>
</key>
<key>
<string>
truncate
</string>
</key>
...
@@ -271,17 +261,4 @@
...
@@ -271,17 +261,4 @@
</dictionary>
</dictionary>
</pickle>
</pickle>
</record>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"TALESMethod"
module=
"Products.Formulator.TALESField"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_text
</string>
</key>
<value>
<string>
python: modules[\'datetime\'].timedelta(seconds=cell.getProperty(\'duration\'))
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
</ZopeData>
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/SlapOSSoftwareReleaseUnitTest_view/my_text_content.xml
View file @
da44845a
...
@@ -257,7 +257,7 @@
...
@@ -257,7 +257,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
title
</string>
</key>
<key>
<string>
title
</string>
</key>
<value>
<string>
Request KW
(json format)
</string>
</value>
<value>
<string>
partition_parameter_kw
(json format)
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
unicode
</string>
</key>
<key>
<string>
unicode
</string>
</key>
...
...
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/TaskDistributorAlarm_optimize.py
View file @
da44845a
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/TestResultLine_getResultHistoryList.py
View file @
da44845a
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/TestResultLine_view/my_duration.xml
View file @
da44845a
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
<ZopeData>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<pickle>
<global
name=
"
String
Field"
module=
"Products.Formulator.StandardFields"
/>
<global
name=
"
Float
Field"
module=
"Products.Formulator.StandardFields"
/>
</pickle>
</pickle>
<pickle>
<pickle>
<dictionary>
<dictionary>
...
@@ -19,12 +19,12 @@
...
@@ -19,12 +19,12 @@
<value>
<string>
The input failed the external validator.
</string>
</value>
<value>
<string>
The input failed the external validator.
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
required_not_found
</string>
</key>
<key>
<string>
not_float
</string>
</key>
<value>
<string>
Input is required but no input given
.
</string>
</value>
<value>
<string>
You did not enter a floating point number
.
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
too_long
</string>
</key>
<key>
<string>
required_not_found
</string>
</key>
<value>
<string>
Too much input was
given.
</string>
</value>
<value>
<string>
Input is required but no input
given.
</string>
</value>
</item>
</item>
</dictionary>
</dictionary>
</value>
</value>
...
@@ -78,11 +78,11 @@
...
@@ -78,11 +78,11 @@
<value>
<string></string>
</value>
<value>
<string></string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
input_
typ
e
</string>
</key>
<key>
<string>
input_
styl
e
</string>
</key>
<value>
<string></string>
</value>
<value>
<string></string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
max_length
</string>
</key>
<key>
<string>
precision
</string>
</key>
<value>
<string></string>
</value>
<value>
<string></string>
</value>
</item>
</item>
<item>
<item>
...
@@ -93,14 +93,6 @@
...
@@ -93,14 +93,6 @@
<key>
<string>
title
</string>
</key>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
<value>
<string></string>
</value>
</item>
</item>
<item>
<key>
<string>
truncate
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
unicode
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<item>
<key>
<string>
whitespace_preserve
</string>
</key>
<key>
<string>
whitespace_preserve
</string>
</key>
<value>
<string></string>
</value>
<value>
<string></string>
</value>
...
@@ -122,9 +114,7 @@
...
@@ -122,9 +114,7 @@
</item>
</item>
<item>
<item>
<key>
<string>
default
</string>
</key>
<key>
<string>
default
</string>
</key>
<value>
<value>
<string></string>
</value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
description
</string>
</key>
<key>
<string>
description
</string>
</key>
...
@@ -159,11 +149,11 @@
...
@@ -159,11 +149,11 @@
<value>
<string></string>
</value>
<value>
<string></string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
input_
typ
e
</string>
</key>
<key>
<string>
input_
styl
e
</string>
</key>
<value>
<string></string>
</value>
<value>
<string></string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
max_length
</string>
</key>
<key>
<string>
precision
</string>
</key>
<value>
<string></string>
</value>
<value>
<string></string>
</value>
</item>
</item>
<item>
<item>
...
@@ -174,14 +164,6 @@
...
@@ -174,14 +164,6 @@
<key>
<string>
title
</string>
</key>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
<value>
<string></string>
</value>
</item>
</item>
<item>
<key>
<string>
truncate
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
unicode
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<item>
<key>
<string>
whitespace_preserve
</string>
</key>
<key>
<string>
whitespace_preserve
</string>
</key>
<value>
<string></string>
</value>
<value>
<string></string>
</value>
...
@@ -238,12 +220,12 @@
...
@@ -238,12 +220,12 @@
<value>
<int>
0
</int>
</value>
<value>
<int>
0
</int>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
input_
typ
e
</string>
</key>
<key>
<string>
input_
styl
e
</string>
</key>
<value>
<string>
text
</string>
</value>
<value>
<string>
-1 234.5
</string>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
max_length
</string>
</key>
<key>
<string>
precision
</string>
</key>
<value>
<
string></string
>
</value>
<value>
<
int>
3
</int
>
</value>
</item>
</item>
<item>
<item>
<key>
<string>
required
</string>
</key>
<key>
<string>
required
</string>
</key>
...
@@ -253,14 +235,6 @@
...
@@ -253,14 +235,6 @@
<key>
<string>
title
</string>
</key>
<key>
<string>
title
</string>
</key>
<value>
<string>
Duration
</string>
</value>
<value>
<string>
Duration
</string>
</value>
</item>
</item>
<item>
<key>
<string>
truncate
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
unicode
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<item>
<key>
<string>
whitespace_preserve
</string>
</key>
<key>
<string>
whitespace_preserve
</string>
</key>
<value>
<int>
0
</int>
</value>
<value>
<int>
0
</int>
</value>
...
@@ -271,17 +245,4 @@
...
@@ -271,17 +245,4 @@
</dictionary>
</dictionary>
</pickle>
</pickle>
</record>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"TALESMethod"
module=
"Products.Formulator.TALESField"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_text
</string>
</key>
<value>
<string>
python: modules[\'datetime\'].timedelta(seconds=context.getProperty(\'duration\'))
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
</ZopeData>
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/TestResultModule_reportCompleted.py
View file @
da44845a
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/TestResult_getJsonScalabilityStats.py
View file @
da44845a
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/TestResult_getJumpVCSResultList.py
View file @
da44845a
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/TestResult_getSummaryForRSS.py
View file @
da44845a
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/TestResult_getTestSuiteList.py
View file @
da44845a
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/TestResult_getTitleForRSS.py
View file @
da44845a
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/TestResult_statTestResultLineList.py
View file @
da44845a
import
datetime
from
Products.PythonScripts.standard
import
Object
from
Products.PythonScripts.standard
import
Object
return
[
Object
(
duration
=
datetime
.
timedelta
(
seconds
=
context
.
getProperty
(
'duration'
,
0
)),
return
[
Object
(
duration
=
int
(
context
.
getProperty
(
'duration'
,
0
)),
all_tests
=
context
.
getProperty
(
'all_tests'
),
all_tests
=
context
.
getProperty
(
'all_tests'
),
errors
=
context
.
getProperty
(
'errors'
),
errors
=
context
.
getProperty
(
'errors'
),
failures
=
context
.
getProperty
(
'failures'
),
failures
=
context
.
getProperty
(
'failures'
),
...
...
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/TestResult_view.xml
View file @
da44845a
...
@@ -87,7 +87,6 @@
...
@@ -87,7 +87,6 @@
<list>
<list>
<string>
listbox_string_index
</string>
<string>
listbox_string_index
</string>
<string>
listbox_start_date
</string>
<string>
listbox_start_date
</string>
<string>
listbox_duration
</string>
</list>
</list>
</value>
</value>
</item>
</item>
...
@@ -100,7 +99,6 @@
...
@@ -100,7 +99,6 @@
<string>
my_id
</string>
<string>
my_id
</string>
<string>
my_start_date
</string>
<string>
my_start_date
</string>
<string>
my_stop_date
</string>
<string>
my_stop_date
</string>
<string>
your_real_duration
</string>
</list>
</list>
</value>
</value>
</item>
</item>
...
...
bt5/erp5_test_result/SkinTemplateItem/portal_skins/erp5_test_result/TestSuiteModule_addTestSuite.py
View file @
da44845a
bt5/erp5_test_result/TestTemplateItem/portal_components/test.erp5.testTaskDistribution.py
View file @
da44845a
This diff is collapsed.
Click to expand it.
bt5/erp5_test_result/ToolComponentTemplateItem/portal_components/tool.erp5.TaskDistributionTool.py
View file @
da44845a
...
@@ -31,7 +31,7 @@ from AccessControl import ClassSecurityInfo
...
@@ -31,7 +31,7 @@ from AccessControl import ClassSecurityInfo
from
Products.ERP5Type
import
Permissions
from
Products.ERP5Type
import
Permissions
from
Products.ERP5Type.Tool.BaseTool
import
BaseTool
from
Products.ERP5Type.Tool.BaseTool
import
BaseTool
from
Products.ZSQLCatalog.SQLCatalog
import
SimpleQuery
,
NegatedQuery
from
Products.ZSQLCatalog.SQLCatalog
import
SimpleQuery
,
NegatedQuery
from
zLOG
import
LOG
,
DEBUG
from
zLOG
import
LOG
,
DEBUG
,
INFO
from
xmlrpclib
import
Binary
from
xmlrpclib
import
Binary
class
TaskDistributionTool
(
BaseTool
):
class
TaskDistributionTool
(
BaseTool
):
...
@@ -89,7 +89,7 @@ class TaskDistributionTool(BaseTool):
...
@@ -89,7 +89,7 @@ class TaskDistributionTool(BaseTool):
-> (test_result_path, revision) or None if already completed
-> (test_result_path, revision) or None if already completed
"""
"""
LOG
(
'
createTestResult'
,
DEBUG
,
(
name
,
revision
,
test_title
,
project_title
))
LOG
(
'
tool.erp5.TaskDistributionTool.createTestResult'
,
INFO
,
(
name
,
revision
,
test_title
,
project_title
))
portal
=
self
.
getPortalObject
()
portal
=
self
.
getPortalObject
()
if
test_title
is
None
:
if
test_title
is
None
:
test_title
=
name
test_title
=
name
...
@@ -215,6 +215,7 @@ class TaskDistributionTool(BaseTool):
...
@@ -215,6 +215,7 @@ class TaskDistributionTool(BaseTool):
# following 2 functions only call 'newContent' on test_result
# following 2 functions only call 'newContent' on test_result
createTestResultLineList
(
test_result
,
test_name_list
)
createTestResultLineList
(
test_result
,
test_name_list
)
createNode
(
test_result
,
node_title
)
createNode
(
test_result
,
node_title
)
LOG
(
'createTestResult RESULT'
,
INFO
,
(
test_result
.
getRelativeUrl
(),
revision
))
return
test_result
.
getRelativeUrl
(),
revision
return
test_result
.
getRelativeUrl
(),
revision
security
.
declarePublic
(
'startUnitTest'
)
security
.
declarePublic
(
'startUnitTest'
)
...
...
bt5/erp5_test_result/WorkflowTemplateItem/portal_workflow/test_result_workflow/script_TestResult_fail.py
View file @
da44845a
...
@@ -15,4 +15,4 @@ if test_result.getPortalType() == 'Test Result Node':
...
@@ -15,4 +15,4 @@ if test_result.getPortalType() == 'Test Result Node':
edit_kw
[
key
]
=
key_value
edit_kw
[
key
]
=
key_value
test_result
.
edit
(
**
edit_kw
)
test_result
.
edit
(
**
edit_kw
)
else
:
else
:
cont
ainer
.
script_
TestResult_complete
(
sci
)
cont
ext
.
TestResult_complete
(
sci
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment