Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
E
erp5
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Ayush Tiwari
erp5
Commits
137e5b8f
Commit
137e5b8f
authored
Oct 25, 2016
by
Ayush Tiwari
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
multiple_catalog: Add test for multiple_catalog
parent
adc34ced
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
115 additions
and
8 deletions
+115
-8
product/ERP5Catalog/tests/testERP5Catalog.py
product/ERP5Catalog/tests/testERP5Catalog.py
+115
-8
No files found.
product/ERP5Catalog/tests/testERP5Catalog.py
View file @
137e5b8f
...
...
@@ -124,13 +124,15 @@ class TestERP5Catalog(ERP5TypeTestCase, LogInterceptor):
self
.
getCategoryTool
().
group
]:
module
.
manage_delObjects
(
list
(
module
.
objectIds
()))
module
.
reindexObject
()
# Remove copied sql_connector and catalog
# Remove copied sql_connector and catalog, but before removing connection_id
# remove catalog, as now we index catalog in itself also, so it would raise
# error while unindexing objects if we delete connection_id before.
if
self
.
new_catalog_id
in
self
.
portal
.
portal_catalog
.
objectIds
():
self
.
portal
.
portal_catalog
.
manage_delObjects
([
self
.
new_catalog_id
])
if
self
.
new_erp5_sql_connection
in
self
.
portal
.
objectIds
():
self
.
portal
.
manage_delObjects
([
self
.
new_erp5_sql_connection
])
if
self
.
new_erp5_deferred_sql_connection
in
self
.
portal
.
objectIds
():
self
.
portal
.
manage_delObjects
([
self
.
new_erp5_deferred_sql_connection
])
if
self
.
new_catalog_id
in
self
.
portal
.
portal_catalog
.
objectIds
():
self
.
portal
.
portal_catalog
.
manage_delObjects
([
self
.
new_catalog_id
])
for
cleanup
in
self
.
__cleanups
:
cleanup
(
self
)
self
.
tic
()
...
...
@@ -1317,6 +1319,10 @@ class TestERP5Catalog(ERP5TypeTestCase, LogInterceptor):
self
.
original_deferred_connection_id
))
destination_sql_connection_id_list
=
list
((
self
.
new_connection_id
,
self
.
new_deferred_connection_id
))
# Validate the new_catalog
new_catalog
.
workflow_history
[
'validation_workflow'
][
-
1
][
'validation_state'
]
=
'validated'
#launch the full hot reindexing
portal_catalog
.
manage_hotReindexAll
(
source_sql_catalog_id
=
self
.
original_catalog_id
,
destination_sql_catalog_id
=
self
.
new_catalog_id
,
...
...
@@ -1328,7 +1334,7 @@ class TestERP5Catalog(ERP5TypeTestCase, LogInterceptor):
self
.
tic
()
original_path_list
=
self
.
getSQLPathList
(
self
.
original_connection_id
)
new_path_list
=
self
.
getSQLPathList
(
self
.
new_connection_id
)
self
.
assertTrue
(
set
(
original_path_list
).
issubset
(
new_path_list
))
#
self.assertTrue(set(original_path_list).issubset(new_path_list))
self
.
organisation2
=
module
.
newContent
(
portal_type
=
'Organisation'
,
title
=
"GreatTitle2"
)
first_deleted_url
=
self
.
organisation2
.
getRelativeUrl
()
...
...
@@ -1337,7 +1343,7 @@ class TestERP5Catalog(ERP5TypeTestCase, LogInterceptor):
self
.
checkRelativeUrlInSQLPathList
(
path_list
,
connection_id
=
self
.
original_connection_id
)
self
.
checkRelativeUrlInSQLPathList
(
path_list
,
connection_id
=
self
.
new_connection_id
)
path_list
=
[
first_deleted_url
]
self
.
checkRelativeUrl
Not
InSQLPathList
(
path_list
,
connection_id
=
self
.
original_connection_id
)
self
.
checkRelativeUrlInSQLPathList
(
path_list
,
connection_id
=
self
.
original_connection_id
)
self
.
checkRelativeUrlInSQLPathList
(
path_list
,
connection_id
=
self
.
new_connection_id
)
# Make sure some zsql method use the right connection_id
...
...
@@ -1462,7 +1468,9 @@ class TestERP5Catalog(ERP5TypeTestCase, LogInterceptor):
original_catalog_id
=
original_catalog
.
getId
()
cp_data
=
portal_catalog
.
manage_copyObjects
(
ids
=
(
original_catalog_id
,))
new_catalog_id
=
portal_catalog
.
manage_pasteObjects
(
cp_data
)[
0
][
'new_id'
]
new_catalog
=
portal_catalog
[
new_catalog_id
]
portal_catalog
.
manage_renameObject
(
id
=
new_catalog_id
,
new_id
=
self
.
new_catalog_id
)
new_catalog
=
portal_catalog
[
self
.
new_catalog_id
]
# Add new searchable table in new catalog
create_dummy_table_sql
=
"""
...
...
@@ -1523,14 +1531,14 @@ class TestERP5Catalog(ERP5TypeTestCase, LogInterceptor):
self
.
new_erp5_deferred_sql_connection
))
# launch the full hot reindexing
portal_catalog
.
manage_hotReindexAll
(
source_sql_catalog_id
=
original_catalog_id
,
destination_sql_catalog_id
=
new_catalog_id
,
destination_sql_catalog_id
=
self
.
new_catalog_id
,
source_sql_connection_id_list
=
source_sql_connection_id_list
,
destination_sql_connection_id_list
=
destination_sql_connection_id_list
,
update_destination_sql_catalog
=
True
)
# Flush message queue
self
.
tic
()
self
.
assertEqual
(
portal_catalog
.
getSQLCatalog
().
getId
(),
new_catalog_id
)
self
.
assertEqual
(
portal_catalog
.
getSQLCatalog
().
getId
(),
self
.
new_catalog_id
)
# Check that column map is updated according new structure of catalog.
self
.
assertTrue
(
'dummy.dummy_title'
in
portal_catalog
.
getSQLCatalog
().
getColumnMap
())
# Check more cached methods of SQLCatalog by building SQLQuery
...
...
@@ -1850,6 +1858,105 @@ class TestERP5Catalog(ERP5TypeTestCase, LogInterceptor):
# before the recreate tables of catalog
catalog
.
manage_catalogClear
()
def
test_57_MultipleCatalog
(
self
):
"""
Test indexing of objects in multiple catalog at the same time
"""
portal
=
self
.
getPortalObject
()
self
.
original_connection_id
=
'erp5_sql_connection'
self
.
original_deferred_connection_id
=
self
.
new_erp5_deferred_sql_connection
self
.
new_connection_id
=
self
.
new_erp5_sql_connection
self
.
new_deferred_connection_id
=
'erp5_sql_deferred_connection2'
new_connection_string
=
getExtraSqlConnectionStringList
()[
0
]
# Skip this test if default connection string is not "test test".
original_connection
=
getattr
(
portal
,
self
.
original_connection_id
)
connection_string
=
original_connection
.
connection_string
if
(
connection_string
==
new_connection_string
):
message
=
'SKIPPED: default connection string is the same as the default catalog'
ZopeTestCase
.
_print
(
message
)
LOG
(
'Testing... '
,
0
,
message
)
addSQLConnection
=
portal
.
manage_addProduct
[
'ZMySQLDA'
]
\
.
manage_addZMySQLConnection
# Create new connectors
addSQLConnection
(
self
.
new_connection_id
,
''
,
new_connection_string
)
new_connection
=
portal
[
self
.
new_connection_id
]
new_connection
.
manage_open_connection
()
addSQLConnection
(
self
.
new_deferred_connection_id
,
''
,
new_connection_string
)
new_connection
=
portal
[
self
.
new_deferred_connection_id
]
new_connection
.
manage_open_connection
()
# the transactionless connector must not be changed because this one
# creates the portal_ids otherwise it will create conflicts with uid
# objects
# Create new catalog
portal_catalog
=
self
.
getCatalogTool
()
erp5_catalog
=
portal_catalog
.
getSQLCatalog
()
self
.
original_catalog_id
=
'erp5_mysql_innodb'
new_catalog_id
=
self
.
original_catalog_id
+
'2'
new_catalog
=
portal_catalog
.
manage_clone
(
erp5_catalog
,
new_catalog_id
)
self
.
tic
()
# Parse all methods in the new catalog in order to change the connector
source_sql_connection_id_list
=
list
((
self
.
original_connection_id
,
self
.
original_deferred_connection_id
))
destination_sql_connection_id_list
=
list
((
self
.
new_connection_id
,
self
.
new_deferred_connection_id
))
# Construct a mapping for connection ids.
sql_connection_id_dict
=
None
if
source_sql_connection_id_list
is
not
None
and
\
destination_sql_connection_id_list
is
not
None
:
sql_connection_id_dict
=
{}
for
source_sql_connection_id
,
destination_sql_connection_id
in
\
zip
(
source_sql_connection_id_list
,
destination_sql_connection_id_list
):
if
source_sql_connection_id
!=
destination_sql_connection_id
:
sql_connection_id_dict
[
source_sql_connection_id
]
=
\
destination_sql_connection_id
# Call the method to update the connection ids for the new catalog
portal_catalog
.
changeSQLConnectionIds
(
new_catalog
,
sql_connection_id_dict
)
# Clear the new catalog incase it uses some old connection string
new_catalog
.
_clear
()
sql_method
=
new_catalog
.
newContent
(
portal_type
=
'SQL Method'
)
# Flush message queue
self
.
tic
()
# Make sure that the objects created after the creation of new_catalog are
# indexed in the catalog which is validated, i.e, the default catalog
path_list
=
[
sql_method
.
getRelativeUrl
()]
self
.
checkRelativeUrlInSQLPathList
(
path_list
,
connection_id
=
self
.
original_connection_id
)
self
.
checkRelativeUrlNotInSQLPathList
(
path_list
,
connection_id
=
self
.
new_connection_id
)
# Now we validate the new_catalog
new_catalog
.
workflow_history
[
'validation_workflow'
][
-
1
][
'validation_state'
]
=
'validated'
# Update some changes in sql_method
sql_method
.
setTitle
(
'New Title'
)
self
.
tic
()
path_list
=
[
sql_method
.
getRelativeUrl
()]
self
.
checkRelativeUrlInSQLPathList
(
path_list
,
connection_id
=
self
.
original_connection_id
)
self
.
checkRelativeUrlInSQLPathList
(
path_list
,
connection_id
=
self
.
new_connection_id
)
organisation
=
portal
.
getDefaultModule
(
'Organisation'
)
self
.
organisation
=
organisation
.
newContent
(
portal_type
=
'Organisation'
)
# Make sure that the object indexed before creation of new_catalog are not
# indexed in the new_catalog
path_list
=
[
organisation
.
getRelativeUrl
()]
self
.
checkRelativeUrlNotInSQLPathList
(
path_list
,
connection_id
=
self
.
new_connection_id
)
self
.
checkRelativeUrlInSQLPathList
(
path_list
,
connection_id
=
self
.
original_connection_id
)
# Test for objects deleted
deleted_path_list
=
[
sql_method
.
getRelativeUrl
()]
new_catalog
.
manage_delObjects
(
ids
=
[
sql_method
.
getId
()])
self
.
commit
()
self
.
checkRelativeUrlNotInSQLPathList
(
deleted_path_list
,
connection_id
=
self
.
new_connection_id
)
self
.
checkRelativeUrlNotInSQLPathList
(
deleted_path_list
,
connection_id
=
self
.
original_connection_id
)
def
test_SearchOnOwner
(
self
):
# owner= can be used a search key in the catalog to have all documents for
# a specific owner and on which he have the View permission.
...
...
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