Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
Amer
erp5
Commits
ac4390fb
Commit
ac4390fb
authored
11 years ago
by
Benjamin Blanc
Browse files
Options
Download
Email Patches
Plain Diff
erp5_test_result: scalability (1)
parent
847cb0ab
Changes
69
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
1154 additions
and
0 deletions
+1154
-0
bt5/erp5_test_result/ActionTemplateItem/portal_types/Scalability%20Test%20Suite/generatedConfigurationView.xml
...Scalability%20Test%20Suite/generatedConfigurationView.xml
+85
-0
bt5/erp5_test_result/ActionTemplateItem/portal_types/Scalability%20Test%20Suite/vcs_repository.xml
...ortal_types/Scalability%20Test%20Suite/vcs_repository.xml
+85
-0
bt5/erp5_test_result/ActionTemplateItem/portal_types/Scalability%20Test%20Suite/view.xml
...lateItem/portal_types/Scalability%20Test%20Suite/view.xml
+85
-0
bt5/erp5_test_result/DocumentTemplateItem/ERP5ScalabilityDistributor.py
...result/DocumentTemplateItem/ERP5ScalabilityDistributor.py
+415
-0
bt5/erp5_test_result/ExtensionTemplateItem/ScalabilityTestSuiteUtils.py
...result/ExtensionTemplateItem/ScalabilityTestSuiteUtils.py
+155
-0
bt5/erp5_test_result/PortalTypeAllowedContentTypeTemplateItem/allowed_content_types.xml
...eAllowedContentTypeTemplateItem/allowed_content_types.xml
+4
-0
bt5/erp5_test_result/PortalTypeBaseCategoryTemplateItem/base_category_list.xml
...PortalTypeBaseCategoryTemplateItem/base_category_list.xml
+3
-0
bt5/erp5_test_result/PortalTypePropertySheetTemplateItem/property_sheet_list.xml
...rtalTypePropertySheetTemplateItem/property_sheet_list.xml
+5
-0
bt5/erp5_test_result/PortalTypeRolesTemplateItem/Scalability%20Test%20Suite.xml
...ortalTypeRolesTemplateItem/Scalability%20Test%20Suite.xml
+7
-0
bt5/erp5_test_result/PortalTypeRolesTemplateItem/Test%20Node%20Module.xml
...sult/PortalTypeRolesTemplateItem/Test%20Node%20Module.xml
+7
-0
bt5/erp5_test_result/PortalTypeRolesTemplateItem/Test%20Node.xml
...5_test_result/PortalTypeRolesTemplateItem/Test%20Node.xml
+7
-0
bt5/erp5_test_result/PortalTypeRolesTemplateItem/Test%20Suite%20Module.xml
...ult/PortalTypeRolesTemplateItem/Test%20Suite%20Module.xml
+7
-0
bt5/erp5_test_result/PortalTypeRolesTemplateItem/Test%20Suite.xml
..._test_result/PortalTypeRolesTemplateItem/Test%20Suite.xml
+7
-0
bt5/erp5_test_result/PortalTypeTemplateItem/portal_types/Scalability%20Test%20Suite.xml
...eTemplateItem/portal_types/Scalability%20Test%20Suite.xml
+72
-0
bt5/erp5_test_result/PortalTypeWorkflowChainTemplateItem/workflow_chain_type.xml
...rtalTypeWorkflowChainTemplateItem/workflow_chain_type.xml
+4
-0
bt5/erp5_test_result/PropertySheetTemplateItem/portal_property_sheets/ScalabilityTestSuite.xml
...plateItem/portal_property_sheets/ScalabilityTestSuite.xml
+66
-0
bt5/erp5_test_result/PropertySheetTemplateItem/portal_property_sheets/ScalabilityTestSuite/cluster_configuration_property.xml
...s/ScalabilityTestSuite/cluster_configuration_property.xml
+38
-0
bt5/erp5_test_result/PropertySheetTemplateItem/portal_property_sheets/ScalabilityTestSuite/cluster_constraint_property.xml
...eets/ScalabilityTestSuite/cluster_constraint_property.xml
+38
-0
bt5/erp5_test_result/PropertySheetTemplateItem/portal_property_sheets/ScalabilityTestSuite/graph_coordinate_property.xml
...sheets/ScalabilityTestSuite/graph_coordinate_property.xml
+32
-0
bt5/erp5_test_result/PropertySheetTemplateItem/portal_property_sheets/ScalabilityTestSuite/randomized_path_property.xml
..._sheets/ScalabilityTestSuite/randomized_path_property.xml
+32
-0
No files found.
bt5/erp5_test_result/ActionTemplateItem/portal_types/Scalability%20Test%20Suite/generatedConfigurationView.xml
0 → 100644
View file @
ac4390fb
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"ActionInformation"
module=
"Products.CMFCore.ActionInformation"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
action
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
categories
</string>
</key>
<value>
<tuple>
<string>
action_type/object_view
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
category
</string>
</key>
<value>
<string>
object_view
</string>
</value>
</item>
<item>
<key>
<string>
condition
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
icon
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
generatedConfigurationView
</string>
</value>
</item>
<item>
<key>
<string>
permissions
</string>
</key>
<value>
<tuple>
<string>
View
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
portal_type
</string>
</key>
<value>
<string>
Action Information
</string>
</value>
</item>
<item>
<key>
<string>
priority
</string>
</key>
<value>
<float>
1.0
</float>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Generated Configuration
</string>
</value>
</item>
<item>
<key>
<string>
visible
</string>
</key>
<value>
<int>
1
</int>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Expression"
module=
"Products.CMFCore.Expression"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
text
</string>
</key>
<value>
<string>
string:${object_url}/ScalabilityTestSuite_viewGeneratedConfiguration
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
This diff is collapsed.
Click to expand it.
bt5/erp5_test_result/ActionTemplateItem/portal_types/Scalability%20Test%20Suite/vcs_repository.xml
0 → 100644
View file @
ac4390fb
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"ActionInformation"
module=
"Products.CMFCore.ActionInformation"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
action
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
categories
</string>
</key>
<value>
<tuple>
<string>
action_type/object_action
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
category
</string>
</key>
<value>
<string>
object_action
</string>
</value>
</item>
<item>
<key>
<string>
condition
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
icon
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
vcs_repository
</string>
</value>
</item>
<item>
<key>
<string>
permissions
</string>
</key>
<value>
<tuple>
<string>
Add Documents, Images, and Files
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
portal_type
</string>
</key>
<value>
<string>
Action Information
</string>
</value>
</item>
<item>
<key>
<string>
priority
</string>
</key>
<value>
<float>
1.0
</float>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
VCS-Repository
</string>
</value>
</item>
<item>
<key>
<string>
visible
</string>
</key>
<value>
<int>
1
</int>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Expression"
module=
"Products.CMFCore.Expression"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
text
</string>
</key>
<value>
<string>
string:${object_url}
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
This diff is collapsed.
Click to expand it.
bt5/erp5_test_result/ActionTemplateItem/portal_types/Scalability%20Test%20Suite/view.xml
0 → 100644
View file @
ac4390fb
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"ActionInformation"
module=
"Products.CMFCore.ActionInformation"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
action
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
categories
</string>
</key>
<value>
<tuple>
<string>
action_type/object_view
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
category
</string>
</key>
<value>
<string>
object_view
</string>
</value>
</item>
<item>
<key>
<string>
condition
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
icon
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
view
</string>
</value>
</item>
<item>
<key>
<string>
permissions
</string>
</key>
<value>
<tuple>
<string>
View
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
portal_type
</string>
</key>
<value>
<string>
Action Information
</string>
</value>
</item>
<item>
<key>
<string>
priority
</string>
</key>
<value>
<float>
1.0
</float>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
View
</string>
</value>
</item>
<item>
<key>
<string>
visible
</string>
</key>
<value>
<int>
1
</int>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Expression"
module=
"Products.CMFCore.Expression"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
text
</string>
</key>
<value>
<string>
string:${object_url}/ScalabilityTestSuite_view
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
This diff is collapsed.
Click to expand it.
bt5/erp5_test_result/DocumentTemplateItem/ERP5ScalabilityDistributor.py
0 → 100644
View file @
ac4390fb
##############################################################################
# Copyright (c) 2013 Nexedi SA and Contributors. All Rights Reserved.
# Sebastien Robin <seb@nexedi.com>
#
# WARNING: This program as such is intended to be used by professional
# programmers who take the whole responsibility of assessing all potential
# consequences resulting from its eventual inadequacies and bugs
# End users who are looking for a ready-to-use solution with commercial
# guarantees and support are strongly advised to contract a Free Software
# Service Company
#
# This program is Free Software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
##############################################################################
from
Products.ERP5.Document.ERP5ProjectUnitTestDistributor
import
ERP5ProjectUnitTestDistributor
import
string
import
erp5.util.taskdistribution
from
Products.ERP5Type.Log
import
log
from
AccessControl
import
ClassSecurityInfo
from
Products.ERP5Type
import
Permissions
import
json
import
random
from
Products.ERP5.Tool.TaskDistributionTool
import
TaskDistributionTool
class
ERP5ScalabilityDistributor
(
ERP5ProjectUnitTestDistributor
):
security
=
ClassSecurityInfo
()
security
.
declareObjectProtected
(
Permissions
.
AccessContentsInformation
)
security
.
declareProtected
(
Permissions
.
ManagePortal
,
"optimizeConfiguration"
)
def
optimizeConfiguration
(
self
):
"""
Do master testnode selection and associate testsuites.
"""
# Get modules
portal
=
self
.
getPortalObject
()
test_node_module
=
self
.
_getTestNodeModule
()
test_suite_module
=
self
.
_getTestSuiteModule
()
# Get lists of test node wich belong to the current distributor
all_test_node_list
=
test_node_module
.
searchFolder
(
portal_type
=
"Test Node"
,
specialise_uid
=
self
.
getUid
())
test_node_list
=
[
x
.
getObject
()
for
x
in
all_test_node_list
if
x
.
validationState
()
==
'validated'
]
invalid_test_node_list
=
[
x
.
getObject
()
for
x
in
all_test_node_list
if
x
.
validationState
()
!=
'validated'
]
log
(
"test_node_list:"
)
log
([(
x
.
getTitle
(),
x
.
getMaster
())
for
x
in
test_node_list
])
log
(
"invalid_test_node_list:"
)
log
([(
x
.
getTitle
(),
x
.
getMaster
())
for
x
in
invalid_test_node_list
])
# Set master property to False for all invalid testnode
for
node
in
invalid_test_node_list
:
node
.
setMaster
(
False
)
# Get all valid slave testnodes
slave_test_node_list
=
[
x
.
getObject
()
for
x
in
test_node_list
if
x
.
getMaster
()
!=
True
]
master_test_node_list
=
[
x
.
getObject
()
for
x
in
test_node_list
if
x
.
getMaster
()
==
True
]
log
(
"---2--"
)
log
(
"test_node_list:"
)
log
([(
x
.
getTitle
(),
x
.
getMaster
())
for
x
in
test_node_list
])
log
(
"invalid_test_node_list:"
)
log
([(
x
.
getTitle
(),
x
.
getMaster
())
for
x
in
invalid_test_node_list
])
log
(
"slave_test_node_list:"
)
log
([(
x
.
getTitle
(),
x
.
getMaster
())
for
x
in
slave_test_node_list
])
log
(
"master_test_node_list:"
)
log
([(
x
.
getTitle
(),
x
.
getMaster
())
for
x
in
master_test_node_list
])
# if there is validated testnodes
if
len
(
test_node_list
)
>
0
:
# Only one testnode must be the master
# if there is no or more than 1 master
if
len
(
master_test_node_list
)
!=
1
:
# No master: elect the first testnode as master
if
len
(
master_test_node_list
)
==
0
:
test_node_list
[
0
].
setMaster
(
True
)
else
:
# Too many master: keep as master only the the first of list
for
node
in
master_test_node_list
[
1
:]:
node
.
setMaster
(
False
)
# Update testnode lists
slave_test_node_list
=
[
x
.
getObject
()
for
x
in
test_node_list
if
x
.
getMaster
()
!=
True
]
master_test_node_list
=
[
x
.
getObject
()
for
x
in
test_node_list
if
x
.
getMaster
()
==
True
]
log
(
"---3--"
)
log
(
"test_node_list:"
)
log
([(
x
.
getTitle
(),
x
.
getMaster
())
for
x
in
test_node_list
])
log
(
"invalid_test_node_list:"
)
log
([(
x
.
getTitle
(),
x
.
getMaster
())
for
x
in
invalid_test_node_list
])
log
(
"slave_test_node_list:"
)
log
([(
x
.
getTitle
(),
x
.
getMaster
())
for
x
in
slave_test_node_list
])
log
(
"master_test_node_list:"
)
log
([(
x
.
getTitle
(),
x
.
getMaster
())
for
x
in
master_test_node_list
])
# Get test suites and aggregate them to all valid testnode
test_suite_list
=
[
x
.
getTitle
()
for
x
in
test_suite_module
.
searchFolder
(
portal_type
=
"Scalability Test Suite"
,
validation_state
=
"validated"
,
specialise_uid
=
self
.
getUid
())]
for
test_node
in
test_node_list
:
test_node
.
setAggregateList
(
test_suite_list
)
security
.
declarePublic
(
"getInvolvedNodeList"
)
def
getInvolvedNodeList
(
self
):
"""
getInvolvedNodeList doc
"""
test_node_module
=
self
.
_getTestNodeModule
()
distributor_title
=
self
.
getTitle
()
involved_nodes
=
[]
involved_nodes
=
involved_nodes
+
[
x
.
getObject
()
for
x
in
test_node_module
.
searchFolder
(
validation_state
=
'validated'
)
if
(
x
.
getSpecialiseTitle
()
==
distributor_title
)
]
return
involved_nodes
security
.
declarePublic
(
"subscribeNode"
)
def
subscribeNode
(
self
,
title
,
computer_guid
,
batch_mode
=
0
):
"""
subscribeNode doc
"""
test_node_module
=
self
.
_getTestNodeModule
()
portal
=
self
.
getPortalObject
()
tag
=
"%s_%s"
%
(
self
.
getRelativeUrl
(),
title
)
if
portal
.
portal_activities
.
countMessageWithTag
(
tag
)
==
0
:
test_node_list
=
test_node_module
.
searchFolder
(
portal_type
=
"Test Node"
,
title
=
title
)
assert
len
(
test_node_list
)
in
(
0
,
1
),
"Unable to find testnode : %s"
%
title
test_node
=
None
if
len
(
test_node_list
)
==
1
:
test_node
=
test_node_list
[
0
].
getObject
()
if
test_node
.
getValidationState
()
!=
'validated'
:
try
:
test_node
.
validate
()
except
e
:
LOG
(
'Test Node Validate'
,
ERROR
,
'%s'
%
e
)
if
test_node
is
None
:
test_node
=
test_node_module
.
newContent
(
portal_type
=
"Test Node"
,
title
=
title
,
computer_guid
=
computer_guid
,
specialise
=
self
.
getRelativeUrl
(),
activate_kw
=
{
'tag'
:
tag
})
self
.
activate
(
after_tag
=
tag
).
optimizeConfiguration
()
test_node
.
setPingDate
()
return
test_node
return
None
security
.
declarePublic
(
"getTestNode"
)
def
getTestNode
(
self
,
title
,
batch_mode
=
0
):
"""
getTestNode doc
"""
test_node_module
=
self
.
_getTestNodeModule
()
portal
=
self
.
getPortalObject
()
tag
=
"%s_%s"
%
(
self
.
getRelativeUrl
(),
title
)
if
portal
.
portal_activities
.
countMessageWithTag
(
tag
)
==
0
:
test_node_list
=
test_node_module
.
searchFolder
(
portal_type
=
"Test Node"
,
title
=
title
)
assert
len
(
test_node_list
)
in
(
0
,
1
),
"Unable to find testnode : %s"
%
title
test_node
=
None
if
len
(
test_node_list
)
==
1
:
test_node
=
test_node_list
[
0
].
getObject
()
if
test_node
.
getValidationState
()
!=
'validated'
:
try
:
test_node
.
validate
()
except
e
:
LOG
(
'Test Node Validate'
,
ERROR
,
'%s'
%
e
)
return
test_node
return
None
security
.
declarePublic
(
"isMasterTestnode"
)
def
isMasterTestnode
(
self
,
title
,
batch_mode
=
0
):
"""
isMasterTestnode : return True if the node given in parameter exists and is a validated master
"""
test_node_module
=
self
.
_getTestNodeModule
()
test_node_master
=
[
node
for
node
in
test_node_module
.
searchFolder
(
portal_type
=
"Test Node"
,
title
=
title
,
specialise
=
self
.
getRelativeUrl
(),
validation_state
=
"validated"
)
if
node
.
getMaster
()
==
1
]
if
len
(
test_node_master
)
==
1
:
return
True
else
:
return
False
security
.
declarePublic
(
"getTestType"
)
def
getTestType
(
self
,
batch_mode
=
0
):
"""
getTestType : return a string defining the type of tests
"""
return
'ScalabilityTest'
security
.
declarePublic
(
"startTestSuite"
)
def
startTestSuite
(
self
,
title
,
batch_mode
=
0
):
"""
startTestSuite : subscribe node + return testsuite list to the master
"""
config_list
=
[]
test_node
=
self
.
getTestNode
(
title
,
batch_mode
)
test_suite_module
=
self
.
_getTestSuiteModule
()
test_node_module
=
self
.
_getTestNodeModule
()
portal
=
self
.
getPortalObject
()
# If the testnode wich request testsuites is not the master
# he does not have to receive any testsuites
master_test_node_title
=
[
x
.
getTitle
()
for
x
in
test_node_module
.
searchFolder
(
validatation_state
=
'validated'
)
if
(
x
.
getMaster
()
==
True
)
][
0
]
if
title
!=
master_test_node_title
:
if
batch_mode
:
return
[]
return
json
.
dumps
([])
if
test_node
!=
None
:
test_suite_list
=
test_node
.
getAggregateList
()
# We sort the list according to timestamp
choice_list
=
[]
if
len
(
test_suite_list
):
choice_list
=
[
x
.
getObject
()
for
x
in
test_suite_module
.
searchFolder
(
sort_on
=
[(
'indexation_timestamp'
,
'ascending'
)],
)
if
x
.
getTitle
()
in
test_suite_list
]
# XXX we should have first test suite with no test node working on
# them since a long time. However we do not have this information yet,
# so random sort is better for now.
choice_list
.
sort
(
key
=
lambda
x
:
random
.
random
())
for
test_suite
in
choice_list
:
config
=
{}
config
[
"project_title"
]
=
test_suite
.
getSourceProjectTitle
()
config
[
"test_suite"
]
=
test_suite
.
getTestSuite
()
config
[
"test_suite_title"
]
=
test_suite
.
getTitle
()
config
[
"additional_bt5_repository_id"
]
=
test_suite
.
getAdditionalBt5RepositoryId
()
config
[
"test_suite_reference"
]
=
test_suite
.
getReference
()
# config["cluster_configuration"] = test_suite.getClusterConfiguration()
# config["cluster_constraint"] = test_suite.getClusterConstraint()
#config["number_configuration"] = test_suite.getNumberConfiguration()
config
[
"number_configuration"
]
=
len
(
test_suite
.
getGraphCoordinate
())
vcs_repository_list
=
[]
#In this case objectValues is faster than searchFolder
for
repository
in
test_suite
.
objectValues
(
portal_type
=
"Test Suite Repository"
):
repository_dict
=
{}
for
property_name
in
[
"git_url"
,
"profile_path"
,
"buildout_section_id"
,
"branch"
]:
property_value
=
repository
.
getProperty
(
property_name
)
# the property name url returns the object's url, so it is mandatory use another name.
if
property_name
==
"git_url"
:
property_name
=
"url"
if
property_value
is
not
None
:
repository_dict
[
property_name
]
=
property_value
vcs_repository_list
.
append
(
repository_dict
)
config
[
"vcs_repository_list"
]
=
vcs_repository_list
to_delete_key_list
=
[
x
for
x
,
y
in
config
.
items
()
if
y
==
None
]
[
config
.
pop
(
x
)
for
x
in
to_delete_key_list
]
config_list
.
append
(
config
)
if
batch_mode
:
return
config_list
return
json
.
dumps
(
config_list
)
security
.
declarePublic
(
"generateConfiguration"
)
def
generateConfiguration
(
self
,
test_suite_title
,
batch_mode
=
0
):
"""
generateConfiguration : this is just a proxy to an external method
"""
generated_configuration
=
self
.
ScalabilityTestSuiteUtils_generateConfigurationList
(
self
,
test_suite_title
)
if
batch_mode
:
return
generated_configuration
return
json
.
dumps
(
generated_configuration
)
security
.
declarePublic
(
"getTestCaseSimulationState"
)
def
getTestCaseSimulationState
(
self
,
test_result_line_path
,
batch_mode
=
0
):
"""
getTestCaseSimulationState : return getTestCaseSimulationState of test result line
"""
portal
=
self
.
getPortalObject
()
test_result_line
=
portal
.
restrictedTraverse
(
test_result_line_path
)
return
test_result_line
.
getSimulationState
()
security
.
declarePublic
(
"isTestCaseRunning"
)
def
isTestCaseRunning
(
self
,
test_result_line_path
,
batch_mode
=
0
):
"""
isTestCaseRunning : return True if test case is running
"""
return
self
.
getTestCaseSimulationState
(
test_result_line_path
)
==
'started'
security
.
declarePublic
(
"isTestCaseFailed"
)
def
isTestCaseFailed
(
self
,
test_result_line_path
,
batch_mode
=
0
):
"""
isTestCaseFailed : return True if test case is Failed
"""
return
self
.
getTestCaseSimulationState
(
test_result_line_path
)
==
'failed'
security
.
declarePublic
(
"isTestCaseCompleted"
)
def
isTestCaseCompleted
(
self
,
test_result_line_path
,
batch_mode
=
0
):
"""
isTestCaseCompleted : return True if test case is completed
"""
return
self
.
getTestCaseSimulationState
(
test_result_line_path
)
==
'stopped'
security
.
declarePublic
(
"isTestCaseCancelled"
)
def
isTestCaseCancelled
(
self
,
test_result_line_path
,
batch_mode
=
0
):
"""
isTestCaseCancelled : return True if test case is cancelled
"""
return
self
.
getTestCaseSimulationState
(
test_result_line_path
)
==
'cancelled'
security
.
declarePublic
(
"setTestCaseSimulationState"
)
def
setTestCaseSimulationState
(
self
,
test_result_line_path
,
state
,
batch_mode
=
0
):
"""
setTestCasesimulationState : set the Simulation state of a test case/test result line
"""
portal
=
self
.
getPortalObject
()
test_result_line
=
portal
.
restrictedTraverse
(
test_result_line_path
)
return
test_result_line
.
setSimulationState
(
state
)
security
.
declarePublic
(
"startTestCase"
)
def
startTestCase
(
self
,
test_result_line_path
,
batch_mode
=
0
):
"""
startTestCase : change the simulation state of the test Case(result line) to started
"""
portal
=
self
.
getPortalObject
()
test_result_line
=
portal
.
restrictedTraverse
(
test_result_line_path
)
test_result_line
.
start
()
security
.
declarePublic
(
"stopTestCase"
)
def
stopTestCase
(
self
,
test_result_line_path
,
batch_mode
=
0
):
"""
stopTestCase : change the simulation state of the test Case(result line) to stopped
"""
portal
=
self
.
getPortalObject
()
test_result_line
=
portal
.
restrictedTraverse
(
test_result_line_path
)
test_result_line
.
stop
()
security
.
declarePublic
(
"cancelTestCase"
)
def
cancelTestCase
(
self
,
test_result_line_path
,
batch_mode
=
0
):
"""
cancelTestCase : change the simulation state of the test Case(result line) to cancelled
"""
portal
=
self
.
getPortalObject
()
test_result_line
=
portal
.
restrictedTraverse
(
test_result_line_path
)
test_result_line
.
cancel
()
security
.
declarePublic
(
"getTestResult"
)
def
getTestResult
(
self
,
test_result_path
,
batch_mode
=
0
):
"""
xxx :
"""
portal
=
self
.
getPortalObject
()
test_result
=
portal
.
restrictedTraverse
(
test_result_path
)
return
test_result
security
.
declarePublic
(
"stopTest"
)
def
stopTest
(
self
,
test_result_path
,
batch_mode
=
0
):
"""
xxx :
"""
portal
=
self
.
getPortalObject
()
test_result
=
portal
.
restrictedTraverse
(
test_result_path
)
return
test_result
.
stop
()
security
.
declarePublic
(
"failTest"
)
def
failTest
(
self
,
test_result_path
,
batch_mode
=
0
):
"""
xxx :
"""
portal
=
self
.
getPortalObject
()
test_result
=
portal
.
restrictedTraverse
(
test_result_path
)
return
test_result
.
fail
()
def
getNextTestCase
(
self
,
test_result_path
,
batch_mode
=
0
):
"""
getNextTestCase : return informations about the running test case,
if no running test_case, return None
"""
test_result
=
self
.
getTestResult
(
test_result_path
)
test_result_lines
=
test_result
.
objectValues
(
portal_type
=
"Test Result Line"
,
sort_on
=
'int_index'
)
count
=
0
for
test_result_line
in
test_result_lines
:
count
+=
1
state
=
test_result_line
.
getSimulationState
()
if
state
==
"started"
:
relative_path
=
test_result_line
.
getRelativeUrl
()
title
=
test_result_line
.
getTitle
()
break
;
else
:
return
None
next_test
=
{
"relative_path"
:
relative_path
,
"title"
:
title
,
"count"
:
count
,
}
if
batch_mode
:
return
next_test
return
json
.
dumps
(
next_test
)
\ No newline at end of file
This diff is collapsed.
Click to expand it.
bt5/erp5_test_result/ExtensionTemplateItem/ScalabilityTestSuiteUtils.py
0 → 100644
View file @
ac4390fb
##############################################################################
#
# Copyright (c) 2002-2013 Nexedi SA and Contributors. All Rights Reserved.
#
# WARNING: This program as such is intended to be used by professional
# programmers who take the whole responsibility of assessing all potential
# consequences resulting from its eventual inadequacies and bugs
# End users who are looking for a ready-to-use solution with commercial
# guarantees and support are strongly adviced to contract a Free Software
# Service Company return "OK"
#
# This program is Free Software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
##############################################################################
import
jinja2
import
json
def
getGeneratedConfigurationList
(
self
,
*
args
,
**
kw
):
document_list
=
[]
template
=
jinja2
.
Template
(
self
.
getClusterConfiguration
())
max
=
len
(
self
.
getGraphCoordinate
())
#max = self.getNumberConfiguration()
compListView
=
[
"COMP-%i"
%
(
x
)
for
x
in
range
(
0
,
max
+
1
)
]
for
count
in
xrange
(
1
,
max
+
1
):
templateVars
=
{
"count"
:
count
,
"comp"
:
compListView
}
outputText
=
template
.
render
(
templateVars
)
description
=
json
.
dumps
(
json
.
loads
(
outputText
),
sort_keys
=
True
,
indent
=
4
,
separators
=
(
','
,
': '
))
# Create a temp object
document_list
.
append
(
self
.
newContent
(
temp_object
=
1
,
title
=
"%i"
%
count
,
description
=
"%s"
%
(
description
)))
return
document_list
def
generateConfigurationList
(
self
,
test_suite_title
):
"""
generateConfigurationList : generate a dict wich contains a list
of cluster configurations for testnodes, using a test_suite and
available testnodes.
If it is not possible to generate a configuration, the 'launchable'
entry is False, otherwise it is True.
"""
def
_unvalidateConfig
(
my_dict
):
my_dict
[
'launchable'
]
=
False
if
'launcher_nodes_computer_guid'
in
my_dict
:
my_dict
[
'launcher_nodes_computer_guid'
]
=
{}
if
'involved_nodes_computer_guid'
in
my_dict
:
my_dict
[
'involved_nodes_computer_guid'
]
=
{}
if
'configuration_list'
in
my_dict
:
my_dict
[
'configuration_list'
]
=
[]
def
_isInMyDictOrListRec
(
my_container
,
my_value
):
def
_isInMyDictOrList
(
current_container
):
if
current_container
==
my_value
:
return
True
elif
type
(
current_container
)
==
type
({}):
for
k
,
v
in
current_container
.
items
():
if
_isInMyDictOrList
(
current_container
[
k
])
:
return
True
elif
type
(
current_container
)
==
type
([]):
for
sub_container
in
current_container
:
if
_isInMyDictOrList
(
sub_container
)
:
return
True
# Not found at this level and below
return
False
return
_isInMyDictOrList
(
my_container
)
portal
=
self
.
getPortalObject
()
test_suite_module
=
portal
.
test_suite_module
test_node_module
=
portal
.
test_node_module
portal_task_distribution
=
portal
.
portal_task_distribution
# Get test_suite informations from his title given in parameter
test_suite
=
test_suite_module
.
searchFolder
(
title
=
test_suite_title
)[
0
]
lll
=
portal_task_distribution
.
searchFolder
(
title
=
test_suite
.
getSpecialiseTitle
())
distributor_uid
=
lll
[
0
].
getUid
()
cluster_configuration
=
test_suite
.
getClusterConfiguration
()
cluster_constraint
=
test_suite
.
getClusterConstraint
()
#number_configuration = test_suite.getNumberConfiguration()
number_configuration
=
len
(
test_suite
.
getGraphCoordinate
())
randomized_path
=
test_suite
.
getRandomizedPath
()
# Get testnodes available for this distributor
unvalid_node
=
"_my_unvalidated_dummy_node"
# Validated nodes wich are available to run test
available_nodes
=
test_node_module
.
searchFolder
(
portal_type
=
"Test Node"
,
validation_state
=
"validated"
,
specialise_uid
=
distributor_uid
)
# Remaining node are nodes that can be insert in the template (so, excluded launcher nodes)
remaining_nodes
=
list
(
available_nodes
)
launcher_nodes
=
[]
launcher_nodes
.
append
(
remaining_nodes
.
pop
()
)
# Make list with only the computer_guid property of each node (to be used directly by template)
remaining_nodes_computer_guid
=
[
unvalid_node
]
+
[
node
.
getComputerGuid
()
for
node
in
remaining_nodes
]
+
[
unvalid_node
]
launcher_nodes_computer_guid
=
[
node
.
getComputerGuid
()
for
node
in
launcher_nodes
]
configuration_list_json
=
[]
return_dict
=
{}
return_dict
[
'error_message'
]
=
'No error.'
return_dict
[
'randomized_path'
]
=
randomized_path
# Will be modified after
return_dict
[
'launchable'
]
=
False
# source of possible error :
# bad json configuration
try
:
template
=
jinja2
.
Template
(
cluster_configuration
)
for
count
in
xrange
(
1
,
number_configuration
+
1
):
template_vars
=
{
"count"
:
count
,
"comp"
:
remaining_nodes_computer_guid
}
configuration_list_json
.
append
(
json
.
loads
(
template
.
render
(
template_vars
)
)
)
return_dict
[
'launchable'
]
=
True
return_dict
[
'configuration_list'
]
=
configuration_list_json
return_dict
[
'launcher_nodes_computer_guid'
]
=
launcher_nodes_computer_guid
except
:
return_dict
[
'error_message'
]
=
'Bad json cluster_configuration ?'
_unvalidateConfig
(
return_dict
)
# If the number of available nodes is lower than
# the number of nodes required by the template
if
_isInMyDictOrListRec
(
return_dict
,
unvalid_node
):
_unvalidateConfig
(
return_dict
)
return_dict
[
'error_message'
]
=
'The number of testnodes available for running
\
the current test (%s) is insufficient.'
%
(
test_suite_title
)
# Get the list of all nodes wich will are involved in the test
involved_nodes_computer_guid
=
[]
for
node
in
available_nodes
:
computer_guid
=
node
.
getComputerGuid
()
if
_isInMyDictOrListRec
(
return_dict
,
computer_guid
):
involved_nodes_computer_guid
.
append
(
computer_guid
)
return_dict
[
'involved_nodes_computer_guid'
]
=
involved_nodes_computer_guid
return
return_dict
\ No newline at end of file
This diff is collapsed.
Click to expand it.
bt5/erp5_test_result/PortalTypeAllowedContentTypeTemplateItem/allowed_content_types.xml
View file @
ac4390fb
...
...
@@ -2,6 +2,9 @@
<portal_type
id=
"Benchmark Result"
>
<item>
Benchmark Result Line
</item>
</portal_type>
<portal_type
id=
"Scalability Test Suite"
>
<item>
Test Suite Repository
</item>
</portal_type>
<portal_type
id=
"Task Distribution Tool"
>
<item>
Cloud Performance Unit Test Distributor
</item>
<item>
ERP5 Project Unit Test Distributor
</item>
...
...
@@ -21,6 +24,7 @@
<item>
Test Suite Repository
</item>
</portal_type>
<portal_type
id=
"Test Suite Module"
>
<item>
Scalability Test Suite
</item>
<item>
Test Suite
</item>
</portal_type>
</allowed_content_type_list>
\ No newline at end of file
This diff is collapsed.
Click to expand it.
bt5/erp5_test_result/PortalTypeBaseCategoryTemplateItem/base_category_list.xml
View file @
ac4390fb
...
...
@@ -2,6 +2,9 @@
<portal_type
id=
"Benchmark Result"
>
<item>
source_project
</item>
</portal_type>
<portal_type
id=
"Scalability Test Suite"
>
<item>
specialise
</item>
</portal_type>
<portal_type
id=
"Test Node"
>
<item>
aggregate
</item>
<item>
specialise
</item>
...
...
This diff is collapsed.
Click to expand it.
bt5/erp5_test_result/PortalTypePropertySheetTemplateItem/property_sheet_list.xml
View file @
ac4390fb
...
...
@@ -7,6 +7,11 @@
<portal_type
id=
"Benchmark Result Line"
>
<item>
Task
</item>
</portal_type>
<portal_type
id=
"Scalability Test Suite"
>
<item>
Arrow
</item>
<item>
ScalabilityTestSuite
</item>
<item>
TestSuite
</item>
</portal_type>
<portal_type
id=
"Test Node"
>
<item>
DublinCore
</item>
</portal_type>
...
...
This diff is collapsed.
Click to expand it.
bt5/erp5_test_result/PortalTypeRolesTemplateItem/Scalability%20Test%20Suite.xml
0 → 100644
View file @
ac4390fb
<type_roles>
<role
id=
'Assignor; Assignee; Associate; Auditor; Author; Owner'
>
<property
id=
'title'
>
Default
</property>
<property
id=
'description'
>
Configured by Ben.
</property>
<multi_property
id=
'category'
>
group/my_group
</multi_property>
</role>
</type_roles>
\ No newline at end of file
This diff is collapsed.
Click to expand it.
bt5/erp5_test_result/PortalTypeRolesTemplateItem/Test%20Node%20Module.xml
0 → 100644
View file @
ac4390fb
<type_roles>
<role
id=
'Assignor; Assignee; Associate; Auditor; Author'
>
<property
id=
'title'
>
Default
</property>
<property
id=
'description'
>
Configured by Ben
</property>
<multi_property
id=
'category'
>
group/my_group
</multi_property>
</role>
</type_roles>
\ No newline at end of file
This diff is collapsed.
Click to expand it.
bt5/erp5_test_result/PortalTypeRolesTemplateItem/Test%20Node.xml
0 → 100644
View file @
ac4390fb
<type_roles>
<role
id=
'Assignor; Assignee; Associate; Auditor; Author'
>
<property
id=
'title'
>
Default
</property>
<property
id=
'description'
>
Configured by Ben
</property>
<multi_property
id=
'category'
>
group/my_group
</multi_property>
</role>
</type_roles>
\ No newline at end of file
This diff is collapsed.
Click to expand it.
bt5/erp5_test_result/PortalTypeRolesTemplateItem/Test%20Suite%20Module.xml
0 → 100644
View file @
ac4390fb
<type_roles>
<role
id=
'Assignor; Assignee; Associate; Auditor; Author'
>
<property
id=
'title'
>
Default
</property>
<property
id=
'description'
>
Configured by Ben.
</property>
<multi_property
id=
'category'
>
group/my_group
</multi_property>
</role>
</type_roles>
\ No newline at end of file
This diff is collapsed.
Click to expand it.
bt5/erp5_test_result/PortalTypeRolesTemplateItem/Test%20Suite.xml
0 → 100644
View file @
ac4390fb
<type_roles>
<role
id=
'Assignor; Assignee; Associate; Auditor; Author'
>
<property
id=
'title'
>
Default
</property>
<property
id=
'description'
>
Configured by Ben.
</property>
<multi_property
id=
'category'
>
group/my_group
</multi_property>
</role>
</type_roles>
\ No newline at end of file
This diff is collapsed.
Click to expand it.
bt5/erp5_test_result/PortalTypeTemplateItem/portal_types/Scalability%20Test%20Suite.xml
0 → 100644
View file @
ac4390fb
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"Base Type"
module=
"erp5.portal_type"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
acquire_local_roles
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
content_icon
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
group_list
</string>
</key>
<value>
<tuple>
<string>
embedded_document
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
Scalability Test Suite
</string>
</value>
</item>
<item>
<key>
<string>
init_script
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
permission
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
portal_type
</string>
</key>
<value>
<string>
Base Type
</string>
</value>
</item>
<item>
<key>
<string>
type_class
</string>
</key>
<value>
<string>
TextDocument
</string>
</value>
</item>
<item>
<key>
<string>
type_interface
</string>
</key>
<value>
<tuple/>
</value>
</item>
<item>
<key>
<string>
type_mixin
</string>
</key>
<value>
<tuple/>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
This diff is collapsed.
Click to expand it.
bt5/erp5_test_result/PortalTypeWorkflowChainTemplateItem/workflow_chain_type.xml
View file @
ac4390fb
...
...
@@ -7,6 +7,10 @@
<type>
Benchmark Result Line
</type>
<workflow>
edit_workflow, test_result_workflow
</workflow>
</chain>
<chain>
<type>
Scalability Test Suite
</type>
<workflow>
edit_workflow, test_suite_workflow
</workflow>
</chain>
<chain>
<type>
Test Node
</type>
<workflow>
edit_workflow, test_node_workflow
</workflow>
...
...
This diff is collapsed.
Click to expand it.
bt5/erp5_test_result/PropertySheetTemplateItem/portal_property_sheets/ScalabilityTestSuite.xml
0 → 100644
View file @
ac4390fb
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"Property Sheet"
module=
"erp5.portal_type"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_count
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
_mt_index
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAM=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
_tree
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAQ=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
ScalabilityTestSuite
</string>
</value>
</item>
<item>
<key>
<string>
portal_type
</string>
</key>
<value>
<string>
Property Sheet
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Length"
module=
"BTrees.Length"
/>
</pickle>
<pickle>
<int>
0
</int>
</pickle>
</record>
<record
id=
"3"
aka=
"AAAAAAAAAAM="
>
<pickle>
<global
name=
"OOBTree"
module=
"BTrees.OOBTree"
/>
</pickle>
<pickle>
<none/>
</pickle>
</record>
<record
id=
"4"
aka=
"AAAAAAAAAAQ="
>
<pickle>
<global
name=
"OOBTree"
module=
"BTrees.OOBTree"
/>
</pickle>
<pickle>
<none/>
</pickle>
</record>
</ZopeData>
This diff is collapsed.
Click to expand it.
bt5/erp5_test_result/PropertySheetTemplateItem/portal_property_sheets/ScalabilityTestSuite/cluster_configuration_property.xml
0 → 100644
View file @
ac4390fb
<?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/string
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<string>
The configuration of the cluster.
</string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
cluster_configuration_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>
This diff is collapsed.
Click to expand it.
bt5/erp5_test_result/PropertySheetTemplateItem/portal_property_sheets/ScalabilityTestSuite/cluster_constraint_property.xml
0 → 100644
View file @
ac4390fb
<?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/string
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<string>
The hardaware constrains used for the selection of cluster-nodes.
</string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
cluster_constraint_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>
This diff is collapsed.
Click to expand it.
bt5/erp5_test_result/PropertySheetTemplateItem/portal_property_sheets/ScalabilityTestSuite/graph_coordinate_property.xml
0 → 100644
View file @
ac4390fb
<?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/object
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<string>
The list of abscissa coordinate of each test. The size of the list determinates the number of configuration to test.
</string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
graph_coordinate_property
</string>
</value>
</item>
<item>
<key>
<string>
portal_type
</string>
</key>
<value>
<string>
Standard Property
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
This diff is collapsed.
Click to expand it.
bt5/erp5_test_result/PropertySheetTemplateItem/portal_property_sheets/ScalabilityTestSuite/randomized_path_property.xml
0 → 100644
View file @
ac4390fb
<?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/string
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<string>
A random string wich defines a relative path to acces to the software.cfg file.
</string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
randomized_path_property
</string>
</value>
</item>
<item>
<key>
<string>
portal_type
</string>
</key>
<value>
<string>
Standard Property
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
This diff is collapsed.
Click to expand it.
Prev
1
2
3
4
Next
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