t_api_search.py revision 1895
76b43e4417bab52e913da39b5f5bc2a130d3f149Timo Sirainen#!/usr/bin/python
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen#
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen# CDDL HEADER START
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen#
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen# The contents of this file are subject to the terms of the
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen# Common Development and Distribution License (the "License").
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen# You may not use this file except in compliance with the License.
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen#
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen# or http://www.opensolaris.org/os/licensing.
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen# See the License for the specific language governing permissions
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen# and limitations under the License.
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen#
f16c114c20bbd7d292d93415d1e56c8dd6abd3e7Timo Sirainen# When distributing Covered Code, include this CDDL HEADER in each
f16c114c20bbd7d292d93415d1e56c8dd6abd3e7Timo Sirainen# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
f16c114c20bbd7d292d93415d1e56c8dd6abd3e7Timo Sirainen# If applicable, add the following below this CDDL HEADER, with the
f16c114c20bbd7d292d93415d1e56c8dd6abd3e7Timo Sirainen# fields enclosed by brackets "[]" replaced with your own identifying
f16c114c20bbd7d292d93415d1e56c8dd6abd3e7Timo Sirainen# information: Portions Copyright [yyyy] [name of copyright owner]
f16c114c20bbd7d292d93415d1e56c8dd6abd3e7Timo Sirainen#
f16c114c20bbd7d292d93415d1e56c8dd6abd3e7Timo Sirainen# CDDL HEADER END
f16c114c20bbd7d292d93415d1e56c8dd6abd3e7Timo Sirainen#
f16c114c20bbd7d292d93415d1e56c8dd6abd3e7Timo Sirainen
f16c114c20bbd7d292d93415d1e56c8dd6abd3e7Timo Sirainen# Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
f16c114c20bbd7d292d93415d1e56c8dd6abd3e7Timo Sirainen
f16c114c20bbd7d292d93415d1e56c8dd6abd3e7Timo Sirainenimport testutils
f16c114c20bbd7d292d93415d1e56c8dd6abd3e7Timo Sirainenif __name__ == "__main__":
f16c114c20bbd7d292d93415d1e56c8dd6abd3e7Timo Sirainen testutils.setup_environment("../../../proto")
f16c114c20bbd7d292d93415d1e56c8dd6abd3e7Timo Sirainenimport pkg5unittest
f16c114c20bbd7d292d93415d1e56c8dd6abd3e7Timo Sirainen
f16c114c20bbd7d292d93415d1e56c8dd6abd3e7Timo Sirainenimport copy
f16c114c20bbd7d292d93415d1e56c8dd6abd3e7Timo Sirainenimport difflib
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainenimport os
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainenimport re
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainenimport shutil
8fcff4c5b52f24d9c681805fdf06b486f1d0fcbeTimo Sirainenimport sys
16f816d3f3c32ae3351834253f52ddd0212bcbf3Timo Sirainenimport tempfile
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainenimport time
98c1cf256927e254f0c092acd2ddcd7ea50bd009Timo Sirainenimport unittest
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainenimport urllib2
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainenimport pkg.client.api as api
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainenimport pkg.client.api_errors as api_errors
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainenimport pkg.client.query_parser as query_parser
98c1cf256927e254f0c092acd2ddcd7ea50bd009Timo Sirainenimport pkg.client.progress as progress
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainenimport pkg.fmri as fmri
8fcff4c5b52f24d9c681805fdf06b486f1d0fcbeTimo Sirainenimport pkg.indexer as indexer
022412398e56a8f31ef111cfd7271498d64af9a9Timo Sirainenimport pkg.portable as portable
98c1cf256927e254f0c092acd2ddcd7ea50bd009Timo Sirainenimport pkg.search_storage as ss
8fcff4c5b52f24d9c681805fdf06b486f1d0fcbeTimo Sirainenimport pkg.server.repository as srepo
9aa52288a4b53186d81b0ec9afa7d9e0a8ee8753Timo Sirainen
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainenclass TestApiSearchBasics(pkg5unittest.SingleDepotTestCase):
e06c0b65c16ccce69bbee009ead14d7d3d17a256Timo Sirainen
7a6b45405fb1544ac476e6eb1402a70cc1ddcdcfTimo Sirainen example_pkg10 = """
e05ea8311ae16687295048e88ca205dfe29fbcbfTimo Sirainen open example_pkg@1.0,5.11-0
8fcff4c5b52f24d9c681805fdf06b486f1d0fcbeTimo Sirainen add dir mode=0755 owner=root group=bin path=/bin
8fcff4c5b52f24d9c681805fdf06b486f1d0fcbeTimo Sirainen add dir mode=0755 owner=root group=bin path=/bin/example_dir
98c1cf256927e254f0c092acd2ddcd7ea50bd009Timo Sirainen add dir mode=0755 owner=root group=bin path=/usr/lib/python2.6/vendor-packages/OpenSSL
98c1cf256927e254f0c092acd2ddcd7ea50bd009Timo Sirainen add file tmp/example_file mode=0555 owner=root group=bin path=/bin/example_path
f7d43647acc6dc80064c8c4cacf5bf86f754c530Timo Sirainen add set name=com.sun.service.incorporated_changes value="6556919 6627937"
98c1cf256927e254f0c092acd2ddcd7ea50bd009Timo Sirainen add set name=com.sun.service.random_test value=42 value=79
98c1cf256927e254f0c092acd2ddcd7ea50bd009Timo Sirainen add set name=com.sun.service.bug_ids value=4641790 value=4725245 value=4817791 value=4851433 value=4897491 value=4913776 value=6178339 value=6556919 value=6627937
98c1cf256927e254f0c092acd2ddcd7ea50bd009Timo Sirainen add set name=com.sun.service.keywords value="sort null -n -m -t sort 0x86 separator"
98c1cf256927e254f0c092acd2ddcd7ea50bd009Timo Sirainen add set name=com.sun.service.info_url value=http://service.opensolaris.com/xml/pkg/SUNWcsu@0.5.11,5.11-1:20080514I120000Z
98c1cf256927e254f0c092acd2ddcd7ea50bd009Timo Sirainen add set name=description value='FOOO bAr O OO OOO' value="whee fun"
a2637488c8d514ec1ac3914811deee814f9761b3Timo Sirainen add set name='weirdness' value='] [ * ?'
a2637488c8d514ec1ac3914811deee814f9761b3Timo Sirainen add signature pkg.sig_bit1=sig_bit_val1 pkg.sig_bit2=sig_bit_val2
a2637488c8d514ec1ac3914811deee814f9761b3Timo Sirainen add set name=smf.fmri value=svc:/milestone/multi-user-server:default
a2637488c8d514ec1ac3914811deee814f9761b3Timo Sirainen close """
a2637488c8d514ec1ac3914811deee814f9761b3Timo Sirainen
b6d817f0effeff645aadc01fd468a7d4084ba1f2Timo Sirainen example_pkg11 = """
a2637488c8d514ec1ac3914811deee814f9761b3Timo Sirainen open example_pkg@1.1,5.11-0
a2637488c8d514ec1ac3914811deee814f9761b3Timo Sirainen add dir mode=0755 owner=root group=bin path=/bin
a2637488c8d514ec1ac3914811deee814f9761b3Timo Sirainen add file tmp/example_file mode=0555 owner=root group=bin path=/bin/example_path11
a2637488c8d514ec1ac3914811deee814f9761b3Timo Sirainen close """
a2637488c8d514ec1ac3914811deee814f9761b3Timo Sirainen
a2637488c8d514ec1ac3914811deee814f9761b3Timo Sirainen incorp_pkg10 = """
a2637488c8d514ec1ac3914811deee814f9761b3Timo Sirainen open incorp_pkg@1.0,5.11-0
a2637488c8d514ec1ac3914811deee814f9761b3Timo Sirainen add depend fmri=example_pkg@1.0,5.11-0 type=incorporate
a2637488c8d514ec1ac3914811deee814f9761b3Timo Sirainen close """
a2637488c8d514ec1ac3914811deee814f9761b3Timo Sirainen
a2637488c8d514ec1ac3914811deee814f9761b3Timo Sirainen incorp_pkg11 = """
a2637488c8d514ec1ac3914811deee814f9761b3Timo Sirainen open incorp_pkg@1.1,5.11-0
02b79f9c2636da1829eee5b92753602bba8b67edTimo Sirainen add depend fmri=example_pkg@1.1,5.11-0 type=incorporate
02b79f9c2636da1829eee5b92753602bba8b67edTimo Sirainen close """
02b79f9c2636da1829eee5b92753602bba8b67edTimo Sirainen
a2637488c8d514ec1ac3914811deee814f9761b3Timo Sirainen another_pkg10 = """
02b79f9c2636da1829eee5b92753602bba8b67edTimo Sirainen open another_pkg@1.0,5.11-0
02b79f9c2636da1829eee5b92753602bba8b67edTimo Sirainen add dir mode=0755 owner=root group=bin path=/bazbin
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen close """
02b79f9c2636da1829eee5b92753602bba8b67edTimo Sirainen
02b79f9c2636da1829eee5b92753602bba8b67edTimo Sirainen bad_pkg10 = """
02b79f9c2636da1829eee5b92753602bba8b67edTimo Sirainen open bad_pkg@1.0,5.11-0
02b79f9c2636da1829eee5b92753602bba8b67edTimo Sirainen add dir path=badfoo/ mode=0755 owner=root group=bin
02b79f9c2636da1829eee5b92753602bba8b67edTimo Sirainen close """
a2637488c8d514ec1ac3914811deee814f9761b3Timo Sirainen
299183fbb6ec5d0828a0880da372540421ac4665Timo Sirainen space_pkg10 = """
299183fbb6ec5d0828a0880da372540421ac4665Timo Sirainen open space_pkg@1.0,5.11-0
299183fbb6ec5d0828a0880da372540421ac4665Timo Sirainen add file tmp/example_file mode=0444 owner=nobody group=sys path='unique/with a space'
a2637488c8d514ec1ac3914811deee814f9761b3Timo Sirainen add dir mode=0755 owner=root group=bin path=unique_dir
a2637488c8d514ec1ac3914811deee814f9761b3Timo Sirainen close """
299183fbb6ec5d0828a0880da372540421ac4665Timo Sirainen
299183fbb6ec5d0828a0880da372540421ac4665Timo Sirainen cat_pkg10 = """
a2637488c8d514ec1ac3914811deee814f9761b3Timo Sirainen open cat@1.0,5.11-0
299183fbb6ec5d0828a0880da372540421ac4665Timo Sirainen add set name=info.classification value=org.opensolaris.category.2008:System/Security value=org.random:Other/Category
299183fbb6ec5d0828a0880da372540421ac4665Timo Sirainen close """
299183fbb6ec5d0828a0880da372540421ac4665Timo Sirainen
299183fbb6ec5d0828a0880da372540421ac4665Timo Sirainen cat2_pkg10 = """
6288d3611eda14a017dae9927b73f46afb646c96Timo Sirainen open cat2@1.0,5.11-0
a2637488c8d514ec1ac3914811deee814f9761b3Timo Sirainen add set name=info.classification value="org.opensolaris.category.2008:Applications/Sound and Video" value=Developer/C
299183fbb6ec5d0828a0880da372540421ac4665Timo Sirainen close """
299183fbb6ec5d0828a0880da372540421ac4665Timo Sirainen
299183fbb6ec5d0828a0880da372540421ac4665Timo Sirainen cat3_pkg10 = """
299183fbb6ec5d0828a0880da372540421ac4665Timo Sirainen open cat3@1.0,5.11-0
299183fbb6ec5d0828a0880da372540421ac4665Timo Sirainen add set name=info.classification value="org.opensolaris.category.2008:foo/bar/baz/bill/beam/asda"
299183fbb6ec5d0828a0880da372540421ac4665Timo Sirainen close """
299183fbb6ec5d0828a0880da372540421ac4665Timo Sirainen
299183fbb6ec5d0828a0880da372540421ac4665Timo Sirainen bad_cat_pkg10 = """
299183fbb6ec5d0828a0880da372540421ac4665Timo Sirainen open badcat@1.0,5.11-0
299183fbb6ec5d0828a0880da372540421ac4665Timo Sirainen add set name=info.classification value="TestBad1/TestBad2"
299183fbb6ec5d0828a0880da372540421ac4665Timo Sirainen close """
299183fbb6ec5d0828a0880da372540421ac4665Timo Sirainen
299183fbb6ec5d0828a0880da372540421ac4665Timo Sirainen bad_cat2_pkg10 = """
299183fbb6ec5d0828a0880da372540421ac4665Timo Sirainen open badcat2@1.0,5.11-0
299183fbb6ec5d0828a0880da372540421ac4665Timo Sirainen add set name=info.classification value="org.opensolaris.category.2008:TestBad1:TestBad2"
299183fbb6ec5d0828a0880da372540421ac4665Timo Sirainen close """
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen fat_pkg10 = """
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainenopen fat@1.0,5.11-0
313fe89df4d91cd0cd7f3558dc6d7fd21ad39eeeTimo Sirainenadd set name=variant.arch value=sparc value=i386
9e59a1f3f095b3099478562cf3f3970a24736970Timo Sirainenadd set name=description value="i386 variant" variant.arch=i386
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainenadd set name=description value="sparc variant" variant.arch=sparc
178511b57faa7c3f8203dd8b7e4059d00cbfc23aTimo Sirainenclose """
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen bogus_pkg10 = """
2e937ed8585299b2e879a28314902a5f644813d2Timo Sirainenset name=pkg.fmri value=pkg:/bogus_pkg@1.0,5.11-0:20090326T233451Z
313fe89df4d91cd0cd7f3558dc6d7fd21ad39eeeTimo Sirainenset name=description value=""validation with simple chains of constraints ""
313fe89df4d91cd0cd7f3558dc6d7fd21ad39eeeTimo Sirainenset name=pkg.description value="pseudo-hashes as arrays tied to a "type" (list of fields)"
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainendepend fmri=XML-Atom-Entry
313fe89df4d91cd0cd7f3558dc6d7fd21ad39eeeTimo Sirainenset name=com.sun.service.incorporated_changes value="6556919 6627937"
313fe89df4d91cd0cd7f3558dc6d7fd21ad39eeeTimo Sirainen"""
4d25408732be27e91f0430f71e87242760c2517cTimo Sirainen bogus_fmri = fmri.PkgFmri("bogus_pkg@1.0,5.11-0:20090326T233451Z")
e68309fcfa2eaa88217fd51e7b4900fc9c20ef5dTimo Sirainen
313fe89df4d91cd0cd7f3558dc6d7fd21ad39eeeTimo Sirainen hierarchical_named_pkg = """
313fe89df4d91cd0cd7f3558dc6d7fd21ad39eeeTimo Sirainenopen pa/pb/pc/pfoo@1.0,5.11-0
313fe89df4d91cd0cd7f3558dc6d7fd21ad39eeeTimo Sirainenclose """
e5c08648676d1989f6e70b95e5990c26b3e8b96bTimo Sirainen
4d25408732be27e91f0430f71e87242760c2517cTimo Sirainen bug_8492_manf_1 = """
c3412ddeb9abc13f99d3caf50faf76cd99f7e9d2Timo Sirainenopen b1@1.0,5.11-0
313fe89df4d91cd0cd7f3558dc6d7fd21ad39eeeTimo Sirainenadd set description="Image Packaging System"
313fe89df4d91cd0cd7f3558dc6d7fd21ad39eeeTimo Sirainenclose """
313fe89df4d91cd0cd7f3558dc6d7fd21ad39eeeTimo Sirainen
313fe89df4d91cd0cd7f3558dc6d7fd21ad39eeeTimo Sirainen bug_8492_manf_2 = """
02b79f9c2636da1829eee5b92753602bba8b67edTimo Sirainenopen b2@1.0,5.11-0
313fe89df4d91cd0cd7f3558dc6d7fd21ad39eeeTimo Sirainenadd set description="Image Packaging System"
1e76a5b92f9d82d557f81f080f3dfad1c9d8f200Timo Sirainenclose """
1e76a5b92f9d82d557f81f080f3dfad1c9d8f200Timo Sirainen
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen res_8492_1 = set([('pkg:/b1@1.0-0', 'Image Packaging System', 'set name=description value="Image Packaging System"')])
9a06cabdfdf4d5e2f19a07e506c3c7d08a7e7038Timo Sirainen res_8492_2 = set([('pkg:/b2@1.0-0', 'Image Packaging System', 'set name=description value="Image Packaging System"')])
9a06cabdfdf4d5e2f19a07e506c3c7d08a7e7038Timo Sirainen
9a06cabdfdf4d5e2f19a07e506c3c7d08a7e7038Timo Sirainen remote_fmri_string = ('pkg:/example_pkg@1.0-0', 'test/example_pkg',
e8a35266a5ceacdfafeeffd6bddae77931ff97ebTimo Sirainen 'set name=pkg.fmri value=pkg://test/example_pkg@1.0,5.11-0:')
9aa52288a4b53186d81b0ec9afa7d9e0a8ee8753Timo Sirainen
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen res_remote_pkg = set([
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen remote_fmri_string
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen ])
b08b33d1f5ce3721dc2d83586c9cb0ca141331fdTimo Sirainen
b08b33d1f5ce3721dc2d83586c9cb0ca141331fdTimo Sirainen res_remote_path = set([
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen ("pkg:/example_pkg@1.0-0", "basename","file a686473102ba73bd7920fc0ab1d97e00a24ed704 chash=f88920ce1f61db185d127ccb32dc8cf401ae7a83 group=bin mode=0555 owner=root path=bin/example_path pkg.csize=30 pkg.size=12")
f6699a08521aacc4c2bb5b6175691dad5f715f8cTimo Sirainen ])
6843896c40bee4f9b6680ca7ced598c446e9f999Timo Sirainen
6843896c40bee4f9b6680ca7ced598c446e9f999Timo Sirainen res_remote_path_of_example_path = set([
6843896c40bee4f9b6680ca7ced598c446e9f999Timo Sirainen ("pkg:/example_pkg@1.0-0", "path","file a686473102ba73bd7920fc0ab1d97e00a24ed704 chash=f88920ce1f61db185d127ccb32dc8cf401ae7a83 group=bin mode=0555 owner=root path=bin/example_path pkg.csize=30 pkg.size=12")
6843896c40bee4f9b6680ca7ced598c446e9f999Timo Sirainen ])
b08b33d1f5ce3721dc2d83586c9cb0ca141331fdTimo Sirainen
022412398e56a8f31ef111cfd7271498d64af9a9Timo Sirainen res_remote_bin = set([
022412398e56a8f31ef111cfd7271498d64af9a9Timo Sirainen ("pkg:/example_pkg@1.0-0", "path", "dir group=bin mode=0755 owner=root path=bin")
022412398e56a8f31ef111cfd7271498d64af9a9Timo Sirainen ])
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen
313fe89df4d91cd0cd7f3558dc6d7fd21ad39eeeTimo Sirainen res_remote_openssl = set([
313fe89df4d91cd0cd7f3558dc6d7fd21ad39eeeTimo Sirainen ("pkg:/example_pkg@1.0-0", "basename", "dir group=bin mode=0755 owner=root path=usr/lib/python2.6/vendor-packages/OpenSSL")
73b50eecfc31750a312e2f940023f522eb07178cTimo Sirainen ])
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen res_remote_bug_id = set([
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen ("pkg:/example_pkg@1.0-0", "4851433", 'set name=com.sun.service.bug_ids value=4641790 value=4725245 value=4817791 value=4851433 value=4897491 value=4913776 value=6178339 value=6556919 value=6627937')
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen ])
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen
73b50eecfc31750a312e2f940023f522eb07178cTimo Sirainen res_remote_bug_id_4725245 = set([
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen ("pkg:/example_pkg@1.0-0", "4725245", 'set name=com.sun.service.bug_ids value=4641790 value=4725245 value=4817791 value=4851433 value=4897491 value=4913776 value=6178339 value=6556919 value=6627937')
f6699a08521aacc4c2bb5b6175691dad5f715f8cTimo Sirainen ])
f6699a08521aacc4c2bb5b6175691dad5f715f8cTimo Sirainen
73b50eecfc31750a312e2f940023f522eb07178cTimo Sirainen
f6699a08521aacc4c2bb5b6175691dad5f715f8cTimo Sirainen res_remote_inc_changes = set([
f6699a08521aacc4c2bb5b6175691dad5f715f8cTimo Sirainen ("pkg:/example_pkg@1.0-0", "6556919 6627937", 'set name=com.sun.service.incorporated_changes value="6556919 6627937"'),
df4018ae2f0a95be602f724ca70df7e0e3bd6a7dTimo Sirainen ("pkg:/example_pkg@1.0-0", "6556919", 'set name=com.sun.service.bug_ids value=4641790 value=4725245 value=4817791 value=4851433 value=4897491 value=4913776 value=6178339 value=6556919 value=6627937')
df4018ae2f0a95be602f724ca70df7e0e3bd6a7dTimo Sirainen ])
a393d9d6dabdc46cf724f8cb004a652b4036d53dTimo Sirainen
73b50eecfc31750a312e2f940023f522eb07178cTimo Sirainen res_remote_random_test = set([
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen ("pkg:/example_pkg@1.0-0", "42", "set name=com.sun.service.random_test value=42 value=79")
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen ])
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen res_remote_random_test_79 = set([
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen ("pkg:/example_pkg@1.0-0", "79", "set name=com.sun.service.random_test value=42 value=79")
a393d9d6dabdc46cf724f8cb004a652b4036d53dTimo Sirainen ])
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen res_remote_keywords = set([
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen ("pkg:/example_pkg@1.0-0", "sort null -n -m -t sort 0x86 separator", 'set name=com.sun.service.keywords value="sort null -n -m -t sort 0x86 separator"')
2bf7bb14894faf721518e2122a14a2389ef94078Timo Sirainen ])
9a06cabdfdf4d5e2f19a07e506c3c7d08a7e7038Timo Sirainen
a2637488c8d514ec1ac3914811deee814f9761b3Timo Sirainen res_remote_wildcard = res_remote_path.union(set([
9a06cabdfdf4d5e2f19a07e506c3c7d08a7e7038Timo Sirainen remote_fmri_string,
2bf7bb14894faf721518e2122a14a2389ef94078Timo Sirainen ('pkg:/example_pkg@1.0-0', 'basename', 'dir group=bin mode=0755 owner=root path=bin/example_dir')
2bf7bb14894faf721518e2122a14a2389ef94078Timo Sirainen ]))
2bf7bb14894faf721518e2122a14a2389ef94078Timo Sirainen
73b50eecfc31750a312e2f940023f522eb07178cTimo Sirainen res_remote_glob = set([
9a06cabdfdf4d5e2f19a07e506c3c7d08a7e7038Timo Sirainen remote_fmri_string,
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen ('pkg:/example_pkg@1.0-0', 'path', 'dir group=bin mode=0755 owner=root path=bin/example_dir'),
a2637488c8d514ec1ac3914811deee814f9761b3Timo Sirainen ('pkg:/example_pkg@1.0-0', 'basename', 'dir group=bin mode=0755 owner=root path=bin/example_dir'),
7f773564b94e6054a40d3785cb63c29f1e4d4deeTimo Sirainen ('pkg:/example_pkg@1.0-0', 'path', 'file a686473102ba73bd7920fc0ab1d97e00a24ed704 chash=f88920ce1f61db185d127ccb32dc8cf401ae7a83 group=bin mode=0555 owner=root path=bin/example_path pkg.csize=30 pkg.size=12')
2bf7bb14894faf721518e2122a14a2389ef94078Timo Sirainen ]) | res_remote_path
2bf7bb14894faf721518e2122a14a2389ef94078Timo Sirainen
73b50eecfc31750a312e2f940023f522eb07178cTimo Sirainen res_remote_foo = set([
9a06cabdfdf4d5e2f19a07e506c3c7d08a7e7038Timo Sirainen ('pkg:/example_pkg@1.0-0', 'FOOO bAr O OO OOO', 'set name=description value="FOOO bAr O OO OOO" value="whee fun"')
73b50eecfc31750a312e2f940023f522eb07178cTimo Sirainen ])
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen res_remote_weird = set([
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen ('pkg:/example_pkg@1.0-0', '] [ * ?', 'set name=weirdness value="] [ * ?"')
6843896c40bee4f9b6680ca7ced598c446e9f999Timo Sirainen ])
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen local_fmri_string = ('pkg:/example_pkg@1.0-0', 'test/example_pkg',
73b50eecfc31750a312e2f940023f522eb07178cTimo Sirainen 'set name=pkg.fmri value=pkg://test/example_pkg@1.0,5.11-0:')
73b50eecfc31750a312e2f940023f522eb07178cTimo Sirainen
73b50eecfc31750a312e2f940023f522eb07178cTimo Sirainen res_local_pkg = set([
7f3be7d885c75cdd77f536929a45bc9764595960Timo Sirainen local_fmri_string
7f3be7d885c75cdd77f536929a45bc9764595960Timo Sirainen ])
7f3be7d885c75cdd77f536929a45bc9764595960Timo Sirainen
7f3be7d885c75cdd77f536929a45bc9764595960Timo Sirainen res_local_path = copy.copy(res_remote_path)
7f3be7d885c75cdd77f536929a45bc9764595960Timo Sirainen
f6699a08521aacc4c2bb5b6175691dad5f715f8cTimo Sirainen res_local_bin = copy.copy(res_remote_bin)
f6699a08521aacc4c2bb5b6175691dad5f715f8cTimo Sirainen
73b50eecfc31750a312e2f940023f522eb07178cTimo Sirainen res_local_bug_id = copy.copy(res_remote_bug_id)
f6699a08521aacc4c2bb5b6175691dad5f715f8cTimo Sirainen
f6699a08521aacc4c2bb5b6175691dad5f715f8cTimo Sirainen res_local_inc_changes = copy.copy(res_remote_inc_changes)
df4018ae2f0a95be602f724ca70df7e0e3bd6a7dTimo Sirainen
df4018ae2f0a95be602f724ca70df7e0e3bd6a7dTimo Sirainen res_local_random_test = copy.copy(res_remote_random_test)
7f3be7d885c75cdd77f536929a45bc9764595960Timo Sirainen
73b50eecfc31750a312e2f940023f522eb07178cTimo Sirainen res_local_keywords = copy.copy(res_remote_keywords)
73b50eecfc31750a312e2f940023f522eb07178cTimo Sirainen
73b50eecfc31750a312e2f940023f522eb07178cTimo Sirainen res_local_wildcard = copy.copy(res_remote_wildcard)
73b50eecfc31750a312e2f940023f522eb07178cTimo Sirainen res_local_wildcard.add(local_fmri_string)
73b50eecfc31750a312e2f940023f522eb07178cTimo Sirainen
f0f9c8e94abac18f8acd91b9e724c4c32863723aTimo Sirainen res_local_glob = copy.copy(res_remote_glob)
7f3be7d885c75cdd77f536929a45bc9764595960Timo Sirainen res_local_glob.add(local_fmri_string)
7f3be7d885c75cdd77f536929a45bc9764595960Timo Sirainen
7f3be7d885c75cdd77f536929a45bc9764595960Timo Sirainen res_local_foo = copy.copy(res_remote_foo)
7f3be7d885c75cdd77f536929a45bc9764595960Timo Sirainen
7f3be7d885c75cdd77f536929a45bc9764595960Timo Sirainen res_local_openssl = copy.copy(res_remote_openssl)
7f3be7d885c75cdd77f536929a45bc9764595960Timo Sirainen
7f3be7d885c75cdd77f536929a45bc9764595960Timo Sirainen res_local_path_example11 = set([
7f3be7d885c75cdd77f536929a45bc9764595960Timo Sirainen ("pkg:/example_pkg@1.1-0", "basename", "file a686473102ba73bd7920fc0ab1d97e00a24ed704 chash=f88920ce1f61db185d127ccb32dc8cf401ae7a83 group=bin mode=0555 owner=root path=bin/example_path11 pkg.csize=30 pkg.size=12")
7f3be7d885c75cdd77f536929a45bc9764595960Timo Sirainen ])
7f3be7d885c75cdd77f536929a45bc9764595960Timo Sirainen
7f3be7d885c75cdd77f536929a45bc9764595960Timo Sirainen res_local_bin_example11 = set([
73b50eecfc31750a312e2f940023f522eb07178cTimo Sirainen ("pkg:/example_pkg@1.1-0", "path", "dir group=bin mode=0755 owner=root path=bin")
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen ])
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen
6ef7e31619edfaa17ed044b45861d106a86191efTimo Sirainen res_local_pkg_example11 = set([
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen ("pkg:/example_pkg@1.1-0", "test/example_pkg", "set name=pkg.fmri value=pkg://test/example_pkg@1.1,5.11-0:")
4d25408732be27e91f0430f71e87242760c2517cTimo Sirainen ])
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen res_local_wildcard_example11 = set([
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen ("pkg:/example_pkg@1.1-0", "basename", "file a686473102ba73bd7920fc0ab1d97e00a24ed704 chash=f88920ce1f61db185d127ccb32dc8cf401ae7a83 group=bin mode=0555 owner=root path=bin/example_path11 pkg.csize=30 pkg.size=12"),
4d25408732be27e91f0430f71e87242760c2517cTimo Sirainen ]).union(res_local_pkg_example11)
73b50eecfc31750a312e2f940023f522eb07178cTimo Sirainen
73b50eecfc31750a312e2f940023f522eb07178cTimo Sirainen res_cat_pkg10 = set([
73b50eecfc31750a312e2f940023f522eb07178cTimo Sirainen ('pkg:/cat@1.0-0', 'System/Security', 'set name=info.classification value=org.opensolaris.category.2008:System/Security value=org.random:Other/Category')
4d25408732be27e91f0430f71e87242760c2517cTimo Sirainen ])
4d25408732be27e91f0430f71e87242760c2517cTimo Sirainen
73b50eecfc31750a312e2f940023f522eb07178cTimo Sirainen res_cat_pkg10_2 = set([
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen ('pkg:/cat@1.0-0', 'Other/Category', 'set name=info.classification value=org.opensolaris.category.2008:System/Security value=org.random:Other/Category')
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen ])
8af07808ba203f8709e2ff9eaf2291e1c4a4d53dTimo Sirainen
7797aa2479e99aeb71057b7a2584b2cb72e4d3f8Timo Sirainen res_cat2_pkg10 = set([
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen ('pkg:/cat2@1.0-0', 'Applications/Sound and Video', 'set name=info.classification value="org.opensolaris.category.2008:Applications/Sound and Video" value=Developer/C')
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen ])
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen
bb10ebcf076c959c752f583746d83805d7686df8Timo Sirainen res_cat2_pkg10_2 = set([
bb10ebcf076c959c752f583746d83805d7686df8Timo Sirainen ('pkg:/cat2@1.0-0', 'Developer/C', 'set name=info.classification value="org.opensolaris.category.2008:Applications/Sound and Video" value=Developer/C')
bb10ebcf076c959c752f583746d83805d7686df8Timo Sirainen ])
bb10ebcf076c959c752f583746d83805d7686df8Timo Sirainen
bb10ebcf076c959c752f583746d83805d7686df8Timo Sirainen res_cat3_pkg10 = set([
bb10ebcf076c959c752f583746d83805d7686df8Timo Sirainen ('pkg:/cat3@1.0-0', 'foo/bar/baz/bill/beam/asda', 'set name=info.classification value=org.opensolaris.category.2008:foo/bar/baz/bill/beam/asda')
bb10ebcf076c959c752f583746d83805d7686df8Timo Sirainen ])
61f5256ef248d35459b53534ae428bf6d016e1c5Timo Sirainen
61f5256ef248d35459b53534ae428bf6d016e1c5Timo Sirainen res_fat10_i386 = set([
61f5256ef248d35459b53534ae428bf6d016e1c5Timo Sirainen ('pkg:/fat@1.0-0', 'i386 variant', 'set name=description value="i386 variant" variant.arch=i386'),
bb10ebcf076c959c752f583746d83805d7686df8Timo Sirainen ('pkg:/fat@1.0-0', 'i386 variant', 'set name=description value="i386 variant" variant.arch=i386'),
bb10ebcf076c959c752f583746d83805d7686df8Timo Sirainen ('pkg:/fat@1.0-0', 'i386', 'set name=variant.arch value=sparc value=i386'),
d5cebe7f98e63d4e2822863ef2faa4971e8b3a5dTimo Sirainen ])
bb10ebcf076c959c752f583746d83805d7686df8Timo Sirainen
bb10ebcf076c959c752f583746d83805d7686df8Timo Sirainen res_fat10_sparc = set([
73b50eecfc31750a312e2f940023f522eb07178cTimo Sirainen ('pkg:/fat@1.0-0', 'sparc variant', 'set name=description value="sparc variant" variant.arch=sparc'),
a0b0d629931773c17a236f6214adbe0e13b9b3fdTimo Sirainen ('pkg:/fat@1.0-0', 'sparc', 'set name=variant.arch value=sparc value=i386')
a0b0d629931773c17a236f6214adbe0e13b9b3fdTimo Sirainen ])
a0b0d629931773c17a236f6214adbe0e13b9b3fdTimo Sirainen
a0b0d629931773c17a236f6214adbe0e13b9b3fdTimo Sirainen fat_10_fmri_string = set([('pkg:/fat@1.0-0', 'test/fat', 'set name=pkg.fmri value=pkg://test/fat@1.0,5.11-0:')])
a0b0d629931773c17a236f6214adbe0e13b9b3fdTimo Sirainen
73b50eecfc31750a312e2f940023f522eb07178cTimo Sirainen res_remote_fat10_star = fat_10_fmri_string | res_fat10_sparc | res_fat10_i386
73b50eecfc31750a312e2f940023f522eb07178cTimo Sirainen
73b50eecfc31750a312e2f940023f522eb07178cTimo Sirainen res_local_fat10_i386_star = res_fat10_i386.union(set([
a0b0d629931773c17a236f6214adbe0e13b9b3fdTimo Sirainen ('pkg:/fat@1.0-0', 'sparc', 'set name=variant.arch value=sparc value=i386')
a0b0d629931773c17a236f6214adbe0e13b9b3fdTimo Sirainen ])).union(fat_10_fmri_string)
a0b0d629931773c17a236f6214adbe0e13b9b3fdTimo Sirainen
a0b0d629931773c17a236f6214adbe0e13b9b3fdTimo Sirainen res_local_fat10_sparc_star = res_fat10_sparc.union(set([
a0b0d629931773c17a236f6214adbe0e13b9b3fdTimo Sirainen ('pkg:/fat@1.0-0', 'i386', 'set name=variant.arch value=sparc value=i386')
a0b0d629931773c17a236f6214adbe0e13b9b3fdTimo Sirainen ])).union(fat_10_fmri_string)
a0b0d629931773c17a236f6214adbe0e13b9b3fdTimo Sirainen
a0b0d629931773c17a236f6214adbe0e13b9b3fdTimo Sirainen res_space_with_star = set([
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen ('pkg:/space_pkg@1.0-0', 'basename', 'file a686473102ba73bd7920fc0ab1d97e00a24ed704 chash=f88920ce1f61db185d127ccb32dc8cf401ae7a83 group=sys mode=0444 owner=nobody path="unique/with a space" pkg.csize=30 pkg.size=12')
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen ])
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen res_space_space_star = set([
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen ('pkg:/space_pkg@1.0-0', 'basename', 'file a686473102ba73bd7920fc0ab1d97e00a24ed704 chash=f88920ce1f61db185d127ccb32dc8cf401ae7a83 group=sys mode=0444 owner=nobody path="unique/with a space" pkg.csize=30 pkg.size=12'), ('pkg:/space_pkg@1.0-0', 'path', 'file a686473102ba73bd7920fc0ab1d97e00a24ed704 chash=f88920ce1f61db185d127ccb32dc8cf401ae7a83 group=sys mode=0444 owner=nobody path="unique/with a space" pkg.csize=30 pkg.size=12')
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen ])
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen res_space_unique = set([
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen ('pkg:/space_pkg@1.0-0', 'basename', 'dir group=bin mode=0755 owner=root path=unique_dir')
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen ])
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen # This is a copy of the 3.81%2C5.11-0.89%3A20080527T163123Z version of
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen # SUNWgmake from ipkg with the file and liscense actions changed so
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen # that they all take /tmp/example file when sending.
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen bug_983_manifest = """
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainenopen SUNWgmake@3.81,5.11-0.89
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainenadd dir group=sys mode=0755 owner=root path=usr
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainenadd dir group=bin mode=0755 owner=root path=usr/bin
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainenadd dir group=bin mode=0755 owner=root path=usr/gnu
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainenadd dir group=bin mode=0755 owner=root path=usr/gnu/bin
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainenadd link path=usr/gnu/bin/make target=../../bin/gmake
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainenadd dir group=sys mode=0755 owner=root path=usr/gnu/share
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainenadd dir group=bin mode=0755 owner=root path=usr/gnu/share/man
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainenadd dir group=bin mode=0755 owner=root path=usr/gnu/share/man/man1
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainenadd link path=usr/gnu/share/man/man1/make.1 target=../../../../share/man/man1/gmake.1
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainenadd dir group=bin mode=0755 owner=root path=usr/sfw
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainenadd dir group=bin mode=0755 owner=root path=usr/sfw/bin
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainenadd link path=usr/sfw/bin/gmake target=../../bin/gmake
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainenadd dir group=bin mode=0755 owner=root path=usr/sfw/share
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainenadd dir group=bin mode=0755 owner=root path=usr/sfw/share/man
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainenadd dir group=bin mode=0755 owner=root path=usr/sfw/share/man/man1
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainenadd link path=usr/sfw/share/man/man1/gmake.1 target=../../../../share/man/man1/gmake.1
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainenadd dir group=sys mode=0755 owner=root path=usr/share
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainenadd dir group=bin mode=0755 owner=root path=usr/share/info
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainenadd dir group=bin mode=0755 owner=root path=usr/share/man
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainenadd dir group=bin mode=0755 owner=root path=usr/share/man/man1
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainenadd file tmp/example_file elfarch=i386 elfbits=32 elfhash=68cca393e816e6adcbac1e8ffe9c618de70413e0 group=bin mode=0555 owner=root path=usr/bin/gmake pkg.size=12
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainenadd file tmp/example_file group=bin mode=0444 owner=root path=usr/share/info/make.info pkg.size=12
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainenadd file tmp/example_file group=bin mode=0444 owner=root path=usr/share/info/make.info-1 pkg.size=12
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainenadd file tmp/example_file group=bin mode=0444 owner=root path=usr/share/info/make.info-2 pkg.size=12
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainenadd file tmp/example_file group=bin mode=0444 owner=root path=usr/share/man/man1/gmake.1 pkg.size=12
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainenadd license tmp/example_file license=SUNWgmake.copyright pkg.size=12 transaction_id=1211931083_pkg%3A%2FSUNWgmake%403.81%2C5.11-0.89%3A20080527T163123Z
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainenadd depend fmri=pkg:/SUNWcsl@0.5.11-0.89 type=require
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainenadd depend fmri=SUNWtestbar@0.5.11-0.111 type=require
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainenadd depend fmri=SUNWtestfoo@0.5.11-0.111 type=incorporate
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainenadd set name=description value="gmake - GNU make"
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainenadd legacy arch=i386 category=system desc="GNU make - A utility used to build software (gmake) 3.81" hotline="Please contact your local service provider" name="gmake - GNU make" pkg=SUNWgmake vendor="Sun Microsystems, Inc." version=11.11.0,REV=2008.04.29.02.08
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainenclose
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen"""
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen res_bug_983 = set([
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen ("pkg:/SUNWgmake@3.81-0.89", "basename", "link path=usr/sfw/bin/gmake target=../../bin/gmake"),
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen ('pkg:/SUNWgmake@3.81-0.89', 'basename', 'file a686473102ba73bd7920fc0ab1d97e00a24ed704 chash=f88920ce1f61db185d127ccb32dc8cf401ae7a83 elfarch=i386 elfbits=32 elfhash=68cca393e816e6adcbac1e8ffe9c618de70413e0 group=bin mode=0555 owner=root path=usr/bin/gmake pkg.csize=30 pkg.size=12'),
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen ('pkg:/SUNWgmake@3.81-0.89', 'gmake - GNU make', 'set name=description value="gmake - GNU make"')
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen ])
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen res_983_csl_dependency = set([
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen ('pkg:/SUNWgmake@3.81-0.89', 'require', 'depend fmri=pkg:/SUNWcsl@0.5.11-0.89 type=require')
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen ])
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen res_983_bar_dependency = set([
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen ('pkg:/SUNWgmake@3.81-0.89', 'require', 'depend fmri=SUNWtestbar@0.5.11-0.111 type=require')
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen ])
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen res_983_foo_dependency = set([
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen ('pkg:/SUNWgmake@3.81-0.89', 'incorporate', 'depend fmri=SUNWtestfoo@0.5.11-0.111 type=incorporate')
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen ])
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen res_local_pkg_ret_pkg = set([
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen "pkg:/example_pkg@1.0-0"
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen ])
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen res_remote_pkg_ret_pkg = set([
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen "pkg:/example_pkg@1.0-0"
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen ])
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen res_remote_file = set([
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen ('pkg:/example_pkg@1.0-0',
73b50eecfc31750a312e2f940023f522eb07178cTimo Sirainen 'path',
73b50eecfc31750a312e2f940023f522eb07178cTimo Sirainen 'file a686473102ba73bd7920fc0ab1d97e00a24ed704 chash=f88920ce1f61db185d127ccb32dc8cf401ae7a83 group=bin mode=0555 owner=root path=bin/example_path pkg.csize=30 pkg.size=12'),
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen ('pkg:/example_pkg@1.0-0',
5137d2d80255938a0f5fb8f3c1a21b34cf11ada3Timo Sirainen 'a686473102ba73bd7920fc0ab1d97e00a24ed704',
33d63688ed8b26dc333e3c2edbfb2fe6e412604dTimo Sirainen 'file a686473102ba73bd7920fc0ab1d97e00a24ed704 chash=f88920ce1f61db185d127ccb32dc8cf401ae7a83 group=bin mode=0555 owner=root path=bin/example_path pkg.csize=30 pkg.size=12')
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen ]) | res_remote_path
bb10ebcf076c959c752f583746d83805d7686df8Timo Sirainen
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen res_remote_url = set([
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen ('pkg:/example_pkg@1.0-0',
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen 'http://service.opensolaris.com/xml/pkg/SUNWcsu@0.5.11,5.11-1:20080514I120000Z',
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen 'set name=com.sun.service.info_url value=http://service.opensolaris.com/xml/pkg/SUNWcsu@0.5.11,5.11-1:20080514I120000Z'),
d0d7fcf3ce44f26fdf34c1542a25cec644c5c4c7Timo Sirainen ])
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen
d0d7fcf3ce44f26fdf34c1542a25cec644c5c4c7Timo Sirainen res_remote_path_extra = set([
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen ('pkg:/example_pkg@1.0-0',
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen 'basename',
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen 'file a686473102ba73bd7920fc0ab1d97e00a24ed704 chash=f88920ce1f61db185d127ccb32dc8cf401ae7a83 group=bin mode=0555 owner=root path=bin/example_path pkg.csize=30 pkg.size=12'),
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen ('pkg:/example_pkg@1.0-0',
16c89b1260c9d07c01c83a9219424d3727069b2eTimo Sirainen 'path',
bb10ebcf076c959c752f583746d83805d7686df8Timo Sirainen 'file a686473102ba73bd7920fc0ab1d97e00a24ed704 chash=f88920ce1f61db185d127ccb32dc8cf401ae7a83 group=bin mode=0555 owner=root path=bin/example_path pkg.csize=30 pkg.size=12'),
7f3be7d885c75cdd77f536929a45bc9764595960Timo Sirainen ('pkg:/example_pkg@1.0-0',
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen 'a686473102ba73bd7920fc0ab1d97e00a24ed704',
7797aa2479e99aeb71057b7a2584b2cb72e4d3f8Timo Sirainen 'file a686473102ba73bd7920fc0ab1d97e00a24ed704 chash=f88920ce1f61db185d127ccb32dc8cf401ae7a83 group=bin mode=0555 owner=root path=bin/example_path pkg.csize=30 pkg.size=12')
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen ])
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen
7f3be7d885c75cdd77f536929a45bc9764595960Timo Sirainen res_bad_pkg = set([
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen ('pkg:/bad_pkg@1.0-0', 'basename',
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen 'dir group=bin mode=0755 owner=root path=badfoo/')
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen ])
3f26c5aced2e71efc783f26bb8a7ac53f7504622Timo Sirainen
3f26c5aced2e71efc783f26bb8a7ac53f7504622Timo Sirainen hierarchical_named_pkg_res = set([
3f26c5aced2e71efc783f26bb8a7ac53f7504622Timo Sirainen ("pkg:/pa/pb/pc/pfoo@1.0-0", "test/pa/pb/pc/pfoo", "set name=pkg.fmri value=pkg://test/pa/pb/pc/pfoo@1.0,5.11-0:")
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen ])
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen fast_add_after_install = set([
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen "VERSION: 2\n",
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen "pkg22@1.0,5.11",
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen "pkg21@1.0,5.11"
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen ])
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen fast_remove_after_install = set([
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen "VERSION: 2\n",
16c89b1260c9d07c01c83a9219424d3727069b2eTimo Sirainen ])
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen fast_add_after_first_update = set([
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen "VERSION: 2\n",
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen "pkg0@2.0,5.11",
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen "pkg22@1.0,5.11",
bb10ebcf076c959c752f583746d83805d7686df8Timo Sirainen "pkg21@1.0,5.11",
a0b0d629931773c17a236f6214adbe0e13b9b3fdTimo Sirainen "pkg1@2.0,5.11"
a0b0d629931773c17a236f6214adbe0e13b9b3fdTimo Sirainen ])
73b50eecfc31750a312e2f940023f522eb07178cTimo Sirainen
73b50eecfc31750a312e2f940023f522eb07178cTimo Sirainen fast_remove_after_first_update = set([
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen "VERSION: 2\n",
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen "pkg0@1.0,5.11",
c84985f66c5c83db642d136aefa8864cb45158cfTimo Sirainen "pkg1@1.0,5.11"
c84985f66c5c83db642d136aefa8864cb45158cfTimo Sirainen ])
c84985f66c5c83db642d136aefa8864cb45158cfTimo Sirainen
c84985f66c5c83db642d136aefa8864cb45158cfTimo Sirainen res_smf_svc = set([
1d3f7c1278168d5b1cbfa9a2cc9929a0909056b4Timo Sirainen ('pkg:/example_pkg@1.0-0',
a8b8cce8569753ed47c94782283a24fb11c5ab52Timo Sirainen 'svc:/milestone/multi-user-server:default',
a8b8cce8569753ed47c94782283a24fb11c5ab52Timo Sirainen 'set name=smf.fmri value=svc:/milestone/multi-user-server:default')
e8a35266a5ceacdfafeeffd6bddae77931ff97ebTimo Sirainen ])
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen fast_add_after_second_update = set(["VERSION: 2\n"])
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen
6ef7e31619edfaa17ed044b45861d106a86191efTimo Sirainen fast_remove_after_second_update = set(["VERSION: 2\n"])
73b50eecfc31750a312e2f940023f522eb07178cTimo Sirainen
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen debug_features = []
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen # We wire the contents of the example file to a well known string
e68309fcfa2eaa88217fd51e7b4900fc9c20ef5dTimo Sirainen # so that the hash is also well known.
e68309fcfa2eaa88217fd51e7b4900fc9c20ef5dTimo Sirainen misc_files = { "tmp/example_file" : "magic banana" }
e68309fcfa2eaa88217fd51e7b4900fc9c20ef5dTimo Sirainen
e68309fcfa2eaa88217fd51e7b4900fc9c20ef5dTimo Sirainen def setUp(self):
e68309fcfa2eaa88217fd51e7b4900fc9c20ef5dTimo Sirainen pkg5unittest.SingleDepotTestCase.setUp(self,
e68309fcfa2eaa88217fd51e7b4900fc9c20ef5dTimo Sirainen debug_features=self.debug_features, start_depot=True)
e68309fcfa2eaa88217fd51e7b4900fc9c20ef5dTimo Sirainen self.testdata_dir = os.path.join(self.test_root,
4d25408732be27e91f0430f71e87242760c2517cTimo Sirainen "search_results")
e68309fcfa2eaa88217fd51e7b4900fc9c20ef5dTimo Sirainen os.mkdir(self.testdata_dir)
4d25408732be27e91f0430f71e87242760c2517cTimo Sirainen self._dir_restore_functions = [self._restore_dir,
e68309fcfa2eaa88217fd51e7b4900fc9c20ef5dTimo Sirainen self._restore_dir_preserve_hash]
e68309fcfa2eaa88217fd51e7b4900fc9c20ef5dTimo Sirainen self.make_misc_files(self.misc_files)
e68309fcfa2eaa88217fd51e7b4900fc9c20ef5dTimo Sirainen
e68309fcfa2eaa88217fd51e7b4900fc9c20ef5dTimo Sirainen def _check(self, proposed_answer, correct_answer):
e68309fcfa2eaa88217fd51e7b4900fc9c20ef5dTimo Sirainen if correct_answer == proposed_answer:
e68309fcfa2eaa88217fd51e7b4900fc9c20ef5dTimo Sirainen return True
e68309fcfa2eaa88217fd51e7b4900fc9c20ef5dTimo Sirainen else:
e68309fcfa2eaa88217fd51e7b4900fc9c20ef5dTimo Sirainen self.debug("Proposed Answer: " + str(proposed_answer))
e68309fcfa2eaa88217fd51e7b4900fc9c20ef5dTimo Sirainen self.debug("Correct Answer : " + str(correct_answer))
e68309fcfa2eaa88217fd51e7b4900fc9c20ef5dTimo Sirainen if isinstance(correct_answer, set) and \
e68309fcfa2eaa88217fd51e7b4900fc9c20ef5dTimo Sirainen isinstance(proposed_answer, set):
e68309fcfa2eaa88217fd51e7b4900fc9c20ef5dTimo Sirainen self.debug("Missing: " +
e68309fcfa2eaa88217fd51e7b4900fc9c20ef5dTimo Sirainen str(correct_answer - proposed_answer))
e68309fcfa2eaa88217fd51e7b4900fc9c20ef5dTimo Sirainen self.debug("Extra : " +
e68309fcfa2eaa88217fd51e7b4900fc9c20ef5dTimo Sirainen str(proposed_answer - correct_answer))
e68309fcfa2eaa88217fd51e7b4900fc9c20ef5dTimo Sirainen self.assertEqual(correct_answer, proposed_answer)
e68309fcfa2eaa88217fd51e7b4900fc9c20ef5dTimo Sirainen
e68309fcfa2eaa88217fd51e7b4900fc9c20ef5dTimo Sirainen @staticmethod
e68309fcfa2eaa88217fd51e7b4900fc9c20ef5dTimo Sirainen def _replace_act(act):
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen if act.startswith('set name=pkg.fmri'):
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen return act.strip().rsplit(":", 1)[0] + ":"
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen else:
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen return act.strip()
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen @staticmethod
16aba431c576c1dbd99cbaae4f9d65eea9ad73c2Timo Sirainen def _extract_action_from_res(it):
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen return (
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen (fmri.PkgFmri(str(pkg_name)).get_short_fmri(), piece,
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen TestApiSearchBasics._replace_act(act))
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen for query_num, auth, (version, return_type,
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen (pkg_name, piece, act))
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen in it
16aba431c576c1dbd99cbaae4f9d65eea9ad73c2Timo Sirainen )
16aba431c576c1dbd99cbaae4f9d65eea9ad73c2Timo Sirainen
16aba431c576c1dbd99cbaae4f9d65eea9ad73c2Timo Sirainen @staticmethod
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen def _extract_package_from_res(it):
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen return (
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen (fmri.PkgFmri(str(pkg_name)).get_short_fmri())
16aba431c576c1dbd99cbaae4f9d65eea9ad73c2Timo Sirainen for query_num, auth, (version, return_type, pkg_name)
a2637488c8d514ec1ac3914811deee814f9761b3Timo Sirainen in it
16aba431c576c1dbd99cbaae4f9d65eea9ad73c2Timo Sirainen )
16aba431c576c1dbd99cbaae4f9d65eea9ad73c2Timo Sirainen
16aba431c576c1dbd99cbaae4f9d65eea9ad73c2Timo Sirainen @staticmethod
16aba431c576c1dbd99cbaae4f9d65eea9ad73c2Timo Sirainen def _get_lines(fp):
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen fh = open(fp, "rb")
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen lines = fh.readlines()
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen fh.close()
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen return lines
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen def _search_op(self, api_obj, remote, token, test_value,
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen case_sensitive=False, return_actions=True, num_to_return=None,
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen start_point=None, servers=None, prune_versions=True):
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen query = [api.Query(token, case_sensitive, return_actions,
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen num_to_return, start_point)]
a2637488c8d514ec1ac3914811deee814f9761b3Timo Sirainen self._search_op_common(api_obj, remote, query, test_value,
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen return_actions, servers, prune_versions)
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen def _search_op_multi(self, api_obj, remote, tokens, test_value,
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen case_sensitive=False, return_actions=True, num_to_return=None,
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen start_point=None, servers=None, prune_versions=True):
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen query = [api.Query(token, case_sensitive, return_actions,
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen num_to_return, start_point) for token in tokens]
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen self._search_op_common(api_obj, remote, query, test_value,
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen return_actions, servers, prune_versions)
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen def _search_op_common(self, api_obj, remote, query, test_value,
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen return_actions, servers, prune_versions):
299183fbb6ec5d0828a0880da372540421ac4665Timo Sirainen self.debug("Search for: %s" % " ".join([str(q) for q in query]))
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen search_func = api_obj.local_search
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen if remote:
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen search_func = lambda x: api_obj.remote_search(x,
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen servers=servers, prune_versions=prune_versions)
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen init_time = time.time()
e68309fcfa2eaa88217fd51e7b4900fc9c20ef5dTimo Sirainen
064bfeee2f9156683b191cc0f3f7b242720942f7Timo Sirainen # servers may not be ready immediately - retry search
e68309fcfa2eaa88217fd51e7b4900fc9c20ef5dTimo Sirainen # operation for 5 seconds
e68309fcfa2eaa88217fd51e7b4900fc9c20ef5dTimo Sirainen
e68309fcfa2eaa88217fd51e7b4900fc9c20ef5dTimo Sirainen while (time.time() - init_time) < 5:
b225c3c65f360d7b833f09f9b2fb3035ed5ea600Timo Sirainen try:
064bfeee2f9156683b191cc0f3f7b242720942f7Timo Sirainen res = search_func(query)
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen if return_actions:
e68309fcfa2eaa88217fd51e7b4900fc9c20ef5dTimo Sirainen res = self._extract_action_from_res(res)
e68309fcfa2eaa88217fd51e7b4900fc9c20ef5dTimo Sirainen else:
e68309fcfa2eaa88217fd51e7b4900fc9c20ef5dTimo Sirainen res = self._extract_package_from_res(res)
299183fbb6ec5d0828a0880da372540421ac4665Timo Sirainen res = set(res)
e68309fcfa2eaa88217fd51e7b4900fc9c20ef5dTimo Sirainen break
e68309fcfa2eaa88217fd51e7b4900fc9c20ef5dTimo Sirainen except api_errors.ProblematicSearchServers, e:
e68309fcfa2eaa88217fd51e7b4900fc9c20ef5dTimo Sirainen pass
8907d617ce7c4f390c0f42f6f694db2fecdd5775Timo Sirainen
01cbf4ac5d44137ab434791be7f838d98d0fcf3bTimo Sirainen self._check(set(res), test_value)
01cbf4ac5d44137ab434791be7f838d98d0fcf3bTimo Sirainen
39775ad03c459efe64cce924658da5094ba417e1Timo Sirainen def _search_op_slow(self, api_obj, remote, token, test_value,
39775ad03c459efe64cce924658da5094ba417e1Timo Sirainen case_sensitive=False, return_actions=True, num_to_return=None,
ab3c1eab9ca13916358a9e8b12df8212fefb7dbfTimo Sirainen start_point=None):
01cbf4ac5d44137ab434791be7f838d98d0fcf3bTimo Sirainen query = [api.Query(token, case_sensitive, return_actions,
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen num_to_return, start_point)]
3021a062b16ff0138408be6107d6bcd0ced280b9Timo Sirainen self._search_op_slow_common(api_obj, query, test_value,
39775ad03c459efe64cce924658da5094ba417e1Timo Sirainen return_actions)
39775ad03c459efe64cce924658da5094ba417e1Timo Sirainen
1e76a5b92f9d82d557f81f080f3dfad1c9d8f200Timo Sirainen def _search_op_slow_multi(self, api_obj, remote, tokens, test_value,
e5c08648676d1989f6e70b95e5990c26b3e8b96bTimo Sirainen case_sensitive=False, return_actions=True, num_to_return=None,
e5c08648676d1989f6e70b95e5990c26b3e8b96bTimo Sirainen start_point=None):
e05ea8311ae16687295048e88ca205dfe29fbcbfTimo Sirainen query = [api.Query(token, case_sensitive, return_actions,
39775ad03c459efe64cce924658da5094ba417e1Timo Sirainen num_to_return, start_point) for token in tokens]
39775ad03c459efe64cce924658da5094ba417e1Timo Sirainen self._search_op_slow_common(api_obj, query, test_value,
6a19e109ee8c5a6f688da83a86a7f6abeb71abddTimo Sirainen return_actions)
01cbf4ac5d44137ab434791be7f838d98d0fcf3bTimo Sirainen
01cbf4ac5d44137ab434791be7f838d98d0fcf3bTimo Sirainen def _search_op_slow_common(self, api_obj, query, test_value,
01cbf4ac5d44137ab434791be7f838d98d0fcf3bTimo Sirainen return_actions):
8907d617ce7c4f390c0f42f6f694db2fecdd5775Timo Sirainen search_func = api_obj.local_search
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen tmp = search_func(query)
c35d0c3eb4ba89432896e1f9770ab31cc63c232bTimo Sirainen res = []
5137d2d80255938a0f5fb8f3c1a21b34cf11ada3Timo Sirainen ssu = False
5137d2d80255938a0f5fb8f3c1a21b34cf11ada3Timo Sirainen try:
5137d2d80255938a0f5fb8f3c1a21b34cf11ada3Timo Sirainen for i in tmp:
5137d2d80255938a0f5fb8f3c1a21b34cf11ada3Timo Sirainen res.append(i)
5137d2d80255938a0f5fb8f3c1a21b34cf11ada3Timo Sirainen except api_errors.SlowSearchUsed:
5137d2d80255938a0f5fb8f3c1a21b34cf11ada3Timo Sirainen ssu = True
e063aca6bc2f08bec516d4b631052ea9191f011dTimo Sirainen self.assert_(ssu)
c35d0c3eb4ba89432896e1f9770ab31cc63c232bTimo Sirainen if return_actions:
1e76a5b92f9d82d557f81f080f3dfad1c9d8f200Timo Sirainen res = self._extract_action_from_res(res)
4d25408732be27e91f0430f71e87242760c2517cTimo Sirainen else:
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen res = self._extract_package_from_res(res)
4d25408732be27e91f0430f71e87242760c2517cTimo Sirainen res = set(res)
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._check(set(res), test_value)
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen
5137d2d80255938a0f5fb8f3c1a21b34cf11ada3Timo Sirainen def _run_full_remote_tests(self, api_obj):
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._search_op(api_obj, True, "example_pkg",
c35d0c3eb4ba89432896e1f9770ab31cc63c232bTimo Sirainen self.res_remote_pkg)
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._search_op(api_obj, True, "example_path",
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self.res_remote_path)
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._search_op(api_obj, True, "(example_path)",
c35d0c3eb4ba89432896e1f9770ab31cc63c232bTimo Sirainen self.res_remote_path)
c35d0c3eb4ba89432896e1f9770ab31cc63c232bTimo Sirainen self._search_op(api_obj, True, "<exam*:::>",
c35d0c3eb4ba89432896e1f9770ab31cc63c232bTimo Sirainen self.res_remote_pkg_ret_pkg, return_actions=False)
c35d0c3eb4ba89432896e1f9770ab31cc63c232bTimo Sirainen self._search_op(api_obj, True, "::com.sun.service.info_url:",
2be66b9eddad3841a1195fe9aeb1eaf0f28f1116Timo Sirainen self.res_remote_url)
2be66b9eddad3841a1195fe9aeb1eaf0f28f1116Timo Sirainen self._search_op(api_obj, True, ":::e* AND *path",
c35d0c3eb4ba89432896e1f9770ab31cc63c232bTimo Sirainen self.res_remote_path)
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._search_op(api_obj, True, "e* AND *path",
8fcff4c5b52f24d9c681805fdf06b486f1d0fcbeTimo Sirainen self.res_remote_path)
c35d0c3eb4ba89432896e1f9770ab31cc63c232bTimo Sirainen self._search_op(api_obj, True, "<e*>",
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self.res_remote_pkg_ret_pkg, return_actions=False)
b2ecd50bb98c44816cb07c17aa17fae2b425f941Timo Sirainen self._search_op(api_obj, True, "<e*> AND <e*>",
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self.res_remote_pkg_ret_pkg, return_actions=False)
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._search_op(api_obj, True, "<e*> OR <e*>",
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self.res_remote_pkg_ret_pkg, return_actions=False)
c35d0c3eb4ba89432896e1f9770ab31cc63c232bTimo Sirainen self._search_op(api_obj, True, "<exam:::>",
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self.res_remote_pkg_ret_pkg, return_actions=False)
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._search_op(api_obj, True, "exam:::e*path",
8fcff4c5b52f24d9c681805fdf06b486f1d0fcbeTimo Sirainen self.res_remote_path)
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._search_op(api_obj, True, "exam:::e*path AND e*:::",
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self.res_remote_path)
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._search_op(api_obj, True, "e*::: AND exam:::*path",
b2ecd50bb98c44816cb07c17aa17fae2b425f941Timo Sirainen self.res_remote_path_extra)
c35d0c3eb4ba89432896e1f9770ab31cc63c232bTimo Sirainen self._search_op(api_obj, True, "example*",
7fd72a47d7ddfbd38c8697e228b6951f495dfb61Timo Sirainen self.res_remote_wildcard)
7fd72a47d7ddfbd38c8697e228b6951f495dfb61Timo Sirainen self._search_op(api_obj, True, "/bin", self.res_remote_bin)
7fd72a47d7ddfbd38c8697e228b6951f495dfb61Timo Sirainen self._search_op(api_obj, True, "4851433",
7fd72a47d7ddfbd38c8697e228b6951f495dfb61Timo Sirainen self.res_remote_bug_id)
7fd72a47d7ddfbd38c8697e228b6951f495dfb61Timo Sirainen self._search_op(api_obj, True, "<4851433> AND <4725245>",
c35d0c3eb4ba89432896e1f9770ab31cc63c232bTimo Sirainen self.res_remote_pkg_ret_pkg, return_actions=False)
c35d0c3eb4ba89432896e1f9770ab31cc63c232bTimo Sirainen self._search_op(api_obj, True, "4851433 AND 4725245",
7fd72a47d7ddfbd38c8697e228b6951f495dfb61Timo Sirainen self.res_remote_bug_id)
7fd72a47d7ddfbd38c8697e228b6951f495dfb61Timo Sirainen self._search_op(api_obj, True,
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen "4851433 AND 4725245 OR example_path",
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self.res_remote_bug_id)
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._search_op(api_obj, True,
313fe89df4d91cd0cd7f3558dc6d7fd21ad39eeeTimo Sirainen "4851433 AND (4725245 OR example_path)",
bb10ebcf076c959c752f583746d83805d7686df8Timo Sirainen self.res_remote_bug_id)
6a1e4eb2c6a267bec1e8704ce9137bebb7792702Timo Sirainen self._search_op(api_obj, True,
60d3fa9883237e896a8704275b6116fa46f7ffdaTimo Sirainen "(4851433 AND 4725245) OR example_path",
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self.res_remote_bug_id | self.res_remote_path)
659fe5d24825b160cae512538088020d97a60239Timo Sirainen self._search_op(api_obj, True, "4851433 OR 4725245",
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self.res_remote_bug_id | self.res_remote_bug_id_4725245)
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._search_op(api_obj, True, "6556919",
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self.res_remote_inc_changes)
c35d0c3eb4ba89432896e1f9770ab31cc63c232bTimo Sirainen self._search_op(api_obj, True, "6556?19",
c35d0c3eb4ba89432896e1f9770ab31cc63c232bTimo Sirainen self.res_remote_inc_changes)
c35d0c3eb4ba89432896e1f9770ab31cc63c232bTimo Sirainen self._search_op(api_obj, True, "42",
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self.res_remote_random_test)
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._search_op(api_obj, True, "79",
064bfeee2f9156683b191cc0f3f7b242720942f7Timo Sirainen self.res_remote_random_test_79)
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._search_op(api_obj, True, "separator",
7fd72a47d7ddfbd38c8697e228b6951f495dfb61Timo Sirainen self.res_remote_keywords)
7fd72a47d7ddfbd38c8697e228b6951f495dfb61Timo Sirainen self._search_op(api_obj, True, "\"sort 0x86\"",
7fd72a47d7ddfbd38c8697e228b6951f495dfb61Timo Sirainen self.res_remote_keywords)
7fd72a47d7ddfbd38c8697e228b6951f495dfb61Timo Sirainen self._search_op(api_obj, True, "*example*",
c35d0c3eb4ba89432896e1f9770ab31cc63c232bTimo Sirainen self.res_remote_glob)
7fd72a47d7ddfbd38c8697e228b6951f495dfb61Timo Sirainen self._search_op(api_obj, True, "fooo", self.res_remote_foo)
b2ecd50bb98c44816cb07c17aa17fae2b425f941Timo Sirainen self._search_op(api_obj, True, "fo*", self.res_remote_foo)
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen self._search_op(api_obj, True, "bar", self.res_remote_foo)
bb10ebcf076c959c752f583746d83805d7686df8Timo Sirainen self._search_op(api_obj, True, "openssl",
7a6b45405fb1544ac476e6eb1402a70cc1ddcdcfTimo Sirainen self.res_remote_openssl)
7a6b45405fb1544ac476e6eb1402a70cc1ddcdcfTimo Sirainen self._search_op(api_obj, True, "OPENSSL",
7a6b45405fb1544ac476e6eb1402a70cc1ddcdcfTimo Sirainen self.res_remote_openssl)
7a6b45405fb1544ac476e6eb1402a70cc1ddcdcfTimo Sirainen self._search_op(api_obj, True, "OpEnSsL",
7a6b45405fb1544ac476e6eb1402a70cc1ddcdcfTimo Sirainen self.res_remote_openssl)
7a6b45405fb1544ac476e6eb1402a70cc1ddcdcfTimo Sirainen # Test for bug 11235, case insensitive phrase search, and bug
6a1e4eb2c6a267bec1e8704ce9137bebb7792702Timo Sirainen # 11354, mangled fields during phrase search.
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._search_op(api_obj, True, "'OpEnSsL'",
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self.res_remote_openssl)
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._search_op(api_obj, True, "OpEnS*",
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self.res_remote_openssl)
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen
8fcff4c5b52f24d9c681805fdf06b486f1d0fcbeTimo Sirainen # These tests are included because a specific bug
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen # was found during development. This prevents regression back
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen # to that bug. Exit status of 1 is expected because the
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen # token isn't in the packages.
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._search_op(api_obj, True, "a_non_existent_token", set())
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._search_op(api_obj, True, "42 AND 4641790", set())
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self.assertRaises(api_errors.BooleanQueryException,
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._search_op, api_obj, True, "<e*> AND e*", set())
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self.assertRaises(api_errors.BooleanQueryException,
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._search_op, api_obj, True, "e* AND <e*>", set())
1e76a5b92f9d82d557f81f080f3dfad1c9d8f200Timo Sirainen self.assertRaises(api_errors.BooleanQueryException,
36816b5af1472ae76a1909ae3cf29fd614b2ebfcTimo Sirainen self._search_op, api_obj, True, "<e*> OR e*", set())
829c036d4ddfbd9ea49bd8a7c54e3057177d346eTimo Sirainen self.assertRaises(api_errors.BooleanQueryException,
36816b5af1472ae76a1909ae3cf29fd614b2ebfcTimo Sirainen self._search_op, api_obj, True, "e* OR <e*>", set())
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen # Test for bug 15284, \ not being treated as an escape character
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen # for : as well as testing that \: when used with field queries
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen # works as expected.
dc8552739fa29f011ab71ec383ec6d580a5a9661Timo Sirainen svc_name = "svc\:/milestone/multi-user-server\:default"
dc8552739fa29f011ab71ec383ec6d580a5a9661Timo Sirainen self._search_op(api_obj, True,
8d5991f5c4a8840bf1ea754093dbec505564ab78Timo Sirainen svc_name,
dc8552739fa29f011ab71ec383ec6d580a5a9661Timo Sirainen self.res_smf_svc)
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._search_op(api_obj, True,
39775ad03c459efe64cce924658da5094ba417e1Timo Sirainen "example_pkg:set:smf.fmri:%s" % svc_name,
313fe89df4d91cd0cd7f3558dc6d7fd21ad39eeeTimo Sirainen self.res_smf_svc)
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._search_op(api_obj, True,
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen "set:smf.fmri:%s" % svc_name,
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self.res_smf_svc)
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._search_op(api_obj, True,
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen "smf.fmri:%s" %svc_name,
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self.res_smf_svc)
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._search_op(api_obj, True,
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen ":set:smf.fmri:%s" % svc_name,
4214b59ac7f3899f8d887d055ef519f5a622d249Timo Sirainen self.res_smf_svc)
7a6b45405fb1544ac476e6eb1402a70cc1ddcdcfTimo Sirainen self._search_op(api_obj, True,
f5b4979e2780c4df112a300967d647e2fdd73511Timo Sirainen "%s *milestone*" % svc_name,
8fcff4c5b52f24d9c681805fdf06b486f1d0fcbeTimo Sirainen self.res_smf_svc)
2cb565cd978aafd5714792b5161889986d49e431Timo Sirainen self._search_op(api_obj, True,
2cb565cd978aafd5714792b5161889986d49e431Timo Sirainen "example_pkg:set:smf.fmri:%s %s" % (svc_name, svc_name),
343a527f805ca5cce78496b959d6def70e5d0cd4Timo Sirainen self.res_smf_svc)
5486e1e123484f3a8d7d895e8ac41156f2a96305Timo Sirainen self._search_op(api_obj, True,
5486e1e123484f3a8d7d895e8ac41156f2a96305Timo Sirainen "example_pkg:set:smf.fmri:%s example_pkg:set:smf.fmri:%s" %
5486e1e123484f3a8d7d895e8ac41156f2a96305Timo Sirainen (svc_name, svc_name),
5486e1e123484f3a8d7d895e8ac41156f2a96305Timo Sirainen self.res_smf_svc)
f5b4979e2780c4df112a300967d647e2fdd73511Timo Sirainen self._search_op(api_obj, True,
5486e1e123484f3a8d7d895e8ac41156f2a96305Timo Sirainen "%s example_pkg:set:smf.fmri:%s" %
5486e1e123484f3a8d7d895e8ac41156f2a96305Timo Sirainen (svc_name, svc_name),
5486e1e123484f3a8d7d895e8ac41156f2a96305Timo Sirainen self.res_smf_svc)
5486e1e123484f3a8d7d895e8ac41156f2a96305Timo Sirainen # Test that a single escaped colon doesn't cause a traceback.
6e4cd4ba520bc22ce375de378f4751136ebcf75aTimo Sirainen self._search_op(api_obj, True, "\:", set())
b2ecd50bb98c44816cb07c17aa17fae2b425f941Timo Sirainen
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen def _run_remote_tests(self, api_obj):
dc8552739fa29f011ab71ec383ec6d580a5a9661Timo Sirainen self._search_op(api_obj, True, "example_pkg",
dc8552739fa29f011ab71ec383ec6d580a5a9661Timo Sirainen self.res_remote_pkg)
dc8552739fa29f011ab71ec383ec6d580a5a9661Timo Sirainen self._search_op(api_obj, True, "example_path",
dc8552739fa29f011ab71ec383ec6d580a5a9661Timo Sirainen self.res_remote_path)
dc8552739fa29f011ab71ec383ec6d580a5a9661Timo Sirainen self._search_op(api_obj, True, "::com.sun.service.info_url:",
dc8552739fa29f011ab71ec383ec6d580a5a9661Timo Sirainen self.res_remote_url)
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._search_op(api_obj, True, "<e*>",
dc8552739fa29f011ab71ec383ec6d580a5a9661Timo Sirainen self.res_remote_pkg_ret_pkg, return_actions=False)
b2ecd50bb98c44816cb07c17aa17fae2b425f941Timo Sirainen self._search_op(api_obj, True, "<exam:::>",
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self.res_remote_pkg_ret_pkg, return_actions=False)
6a1e4eb2c6a267bec1e8704ce9137bebb7792702Timo Sirainen self._search_op(api_obj, True, "exam:::e*path",
4214b59ac7f3899f8d887d055ef519f5a622d249Timo Sirainen self.res_remote_path)
4214b59ac7f3899f8d887d055ef519f5a622d249Timo Sirainen self._search_op(api_obj, True, "example*",
4214b59ac7f3899f8d887d055ef519f5a622d249Timo Sirainen self.res_remote_wildcard)
4214b59ac7f3899f8d887d055ef519f5a622d249Timo Sirainen self._search_op(api_obj, True, "/bin", self.res_remote_bin)
8d5991f5c4a8840bf1ea754093dbec505564ab78Timo Sirainen self._search_op(api_obj, True, "4851433",
6a1e4eb2c6a267bec1e8704ce9137bebb7792702Timo Sirainen self.res_remote_bug_id)
6a1e4eb2c6a267bec1e8704ce9137bebb7792702Timo Sirainen self._search_op(api_obj, True, "4725245",
4214b59ac7f3899f8d887d055ef519f5a622d249Timo Sirainen self.res_remote_bug_id_4725245)
4214b59ac7f3899f8d887d055ef519f5a622d249Timo Sirainen self._search_op(api_obj, True, "6556919",
6a1e4eb2c6a267bec1e8704ce9137bebb7792702Timo Sirainen self.res_remote_inc_changes)
930dcf1576f99057ad572420d9c75f3212e46a2eTimo Sirainen self._search_op(api_obj, True, "42",
930dcf1576f99057ad572420d9c75f3212e46a2eTimo Sirainen self.res_remote_random_test)
930dcf1576f99057ad572420d9c75f3212e46a2eTimo Sirainen self._search_op(api_obj, True, "79",
6a1e4eb2c6a267bec1e8704ce9137bebb7792702Timo Sirainen self.res_remote_random_test_79)
930dcf1576f99057ad572420d9c75f3212e46a2eTimo Sirainen self._search_op(api_obj, True, "separator",
c9a03c8a03a782488981f81bd7c6b5e01ff55f06Timo Sirainen self.res_remote_keywords)
829c036d4ddfbd9ea49bd8a7c54e3057177d346eTimo Sirainen self._search_op(api_obj, True, "\"sort 0x86\"",
6a1e4eb2c6a267bec1e8704ce9137bebb7792702Timo Sirainen self.res_remote_keywords)
7a6b45405fb1544ac476e6eb1402a70cc1ddcdcfTimo Sirainen self._search_op(api_obj, True, "*example*",
39775ad03c459efe64cce924658da5094ba417e1Timo Sirainen self.res_remote_glob)
39775ad03c459efe64cce924658da5094ba417e1Timo Sirainen self._search_op(api_obj, True, "fooo", self.res_remote_foo)
6a1e4eb2c6a267bec1e8704ce9137bebb7792702Timo Sirainen self._search_op(api_obj, True, "bar", self.res_remote_foo)
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._search_op(api_obj, True, "OpEnSsL",
6a1e4eb2c6a267bec1e8704ce9137bebb7792702Timo Sirainen self.res_remote_openssl)
6a1e4eb2c6a267bec1e8704ce9137bebb7792702Timo Sirainen
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen # These tests are included because a specific bug
7a6b45405fb1544ac476e6eb1402a70cc1ddcdcfTimo Sirainen # was found during development. This prevents regression back
6a1e4eb2c6a267bec1e8704ce9137bebb7792702Timo Sirainen # to that bug.
6a1e4eb2c6a267bec1e8704ce9137bebb7792702Timo Sirainen self._search_op(api_obj, True, "a_non_existent_token", set())
6a1e4eb2c6a267bec1e8704ce9137bebb7792702Timo Sirainen
6a1e4eb2c6a267bec1e8704ce9137bebb7792702Timo Sirainen def _run_full_local_tests(self, api_obj):
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen outfile = os.path.join(self.testdata_dir, "res")
b2ecd50bb98c44816cb07c17aa17fae2b425f941Timo Sirainen
a2637488c8d514ec1ac3914811deee814f9761b3Timo Sirainen # This finds something because the client side
a614397cf1a4dde152eb1a38493a6ec3d817da16Timo Sirainen # manifest has had the name of the package inserted
a614397cf1a4dde152eb1a38493a6ec3d817da16Timo Sirainen # into it.
a614397cf1a4dde152eb1a38493a6ec3d817da16Timo Sirainen
a614397cf1a4dde152eb1a38493a6ec3d817da16Timo Sirainen self._search_op(api_obj, False, "example_pkg",
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self.res_local_pkg)
b2ecd50bb98c44816cb07c17aa17fae2b425f941Timo Sirainen self._search_op(api_obj, False, "example_path",
8907d617ce7c4f390c0f42f6f694db2fecdd5775Timo Sirainen self.res_local_path)
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._search_op(api_obj, False, "(example_path)",
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self.res_local_path)
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._search_op(api_obj, False, "<exam*:::>",
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self.res_local_pkg_ret_pkg, return_actions=False)
01cbf4ac5d44137ab434791be7f838d98d0fcf3bTimo Sirainen self._search_op(api_obj, False, "::com.sun.service.info_url:",
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self.res_remote_url)
6a1e4eb2c6a267bec1e8704ce9137bebb7792702Timo Sirainen self._search_op(api_obj, False, ":::e* AND *path",
39775ad03c459efe64cce924658da5094ba417e1Timo Sirainen self.res_local_path)
343a527f805ca5cce78496b959d6def70e5d0cd4Timo Sirainen self._search_op(api_obj, False, "e* AND *path",
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self.res_local_path)
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._search_op(api_obj, False, "<e*>",
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self.res_local_pkg_ret_pkg, return_actions=False)
abe8230dd1dd37d7ccf0163100e934bb5e658c20Timo Sirainen self._search_op(api_obj, False, "<e*> AND <e*>",
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen self.res_local_pkg_ret_pkg, return_actions=False)
abe8230dd1dd37d7ccf0163100e934bb5e658c20Timo Sirainen self._search_op(api_obj, False, "<e*> OR <e*>",
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen self.res_local_pkg_ret_pkg, return_actions=False)
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen self._search_op(api_obj, False, "<exam:::>",
319944c0f35b311c998854e96d6463a084fd90aeTimo Sirainen self.res_local_pkg_ret_pkg, return_actions=False)
6ef7e31619edfaa17ed044b45861d106a86191efTimo Sirainen self._search_op(api_obj, False, "exam:::e*path",
6ef7e31619edfaa17ed044b45861d106a86191efTimo Sirainen self.res_local_path)
abe8230dd1dd37d7ccf0163100e934bb5e658c20Timo Sirainen self._search_op(api_obj, False, "exam:::e*path AND e*:::",
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen self.res_local_path)
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen self._search_op(api_obj, False, "e*::: AND exam:::*path",
ccc895c0358108d2304239063e940b7d75f364abTimo Sirainen self.res_remote_path_extra)
ff7056842f14fd3b30a2d327dfab165b9d15dd30Timo Sirainen self._search_op(api_obj, False, "example*",
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen self.res_local_wildcard)
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen self._search_op(api_obj, False, "/bin", self.res_local_bin)
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen self._search_op(api_obj, False, "4851433",
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen self.res_local_bug_id)
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen self._search_op(api_obj, False, "<4851433> AND <4725245>",
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen self.res_local_pkg_ret_pkg, return_actions=False)
abe8230dd1dd37d7ccf0163100e934bb5e658c20Timo Sirainen self._search_op(api_obj, False, "4851433 AND 4725245",
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen self.res_local_bug_id)
f12aabfeba81f0d741971d2b7e4a5008eb4383caTimo Sirainen self._search_op(api_obj, False,
f12aabfeba81f0d741971d2b7e4a5008eb4383caTimo Sirainen "4851433 AND 4725245 OR example_path",
f12aabfeba81f0d741971d2b7e4a5008eb4383caTimo Sirainen self.res_local_bug_id)
f12aabfeba81f0d741971d2b7e4a5008eb4383caTimo Sirainen self._search_op(api_obj, False,
f12aabfeba81f0d741971d2b7e4a5008eb4383caTimo Sirainen "4851433 AND (4725245 OR example_path)",
f12aabfeba81f0d741971d2b7e4a5008eb4383caTimo Sirainen self.res_local_bug_id)
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen self._search_op(api_obj, False,
f12aabfeba81f0d741971d2b7e4a5008eb4383caTimo Sirainen "(4851433 AND 4725245) OR example_path",
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen self.res_local_bug_id | self.res_local_path)
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen self._search_op(api_obj, False, "4851433 OR 4725245",
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen self.res_local_bug_id | self.res_remote_bug_id_4725245)
a2637488c8d514ec1ac3914811deee814f9761b3Timo Sirainen self._search_op(api_obj, False, "6556919",
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen self.res_local_inc_changes)
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen self._search_op(api_obj, False, "65569??",
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen self.res_local_inc_changes)
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen self._search_op(api_obj, False, "42",
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen self.res_local_random_test)
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen self._search_op(api_obj, False, "79",
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen self.res_remote_random_test_79)
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen self._search_op(api_obj, False, "separator",
abe8230dd1dd37d7ccf0163100e934bb5e658c20Timo Sirainen self.res_local_keywords)
319944c0f35b311c998854e96d6463a084fd90aeTimo Sirainen self._search_op(api_obj, False, "\"sort 0x86\"",
319944c0f35b311c998854e96d6463a084fd90aeTimo Sirainen self.res_remote_keywords)
88187ee880b4829443e0d55ea7d145d9d5880217Timo Sirainen self._search_op(api_obj, False, "*example*",
88187ee880b4829443e0d55ea7d145d9d5880217Timo Sirainen self.res_local_glob)
319944c0f35b311c998854e96d6463a084fd90aeTimo Sirainen self._search_op(api_obj, False, "fooo", self.res_local_foo)
319944c0f35b311c998854e96d6463a084fd90aeTimo Sirainen self._search_op(api_obj, False, "fo*", self.res_local_foo)
319944c0f35b311c998854e96d6463a084fd90aeTimo Sirainen self._search_op(api_obj, False, "bar", self.res_local_foo)
a393d9d6dabdc46cf724f8cb004a652b4036d53dTimo Sirainen self._search_op(api_obj, False, "openssl",
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen self.res_local_openssl)
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen self._search_op(api_obj, False, "OPENSSL",
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen self.res_local_openssl)
cece2b9cd692c06025cc0a7a0ff54d996a8c90efTimo Sirainen self._search_op(api_obj, False, "OpEnSsL",
cece2b9cd692c06025cc0a7a0ff54d996a8c90efTimo Sirainen self.res_local_openssl)
cece2b9cd692c06025cc0a7a0ff54d996a8c90efTimo Sirainen # Test for bug 11235, case insensitive phrase search, and bug
cece2b9cd692c06025cc0a7a0ff54d996a8c90efTimo Sirainen # 11354, mangled fields during phrase search.
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen self._search_op(api_obj, False, "'OpEnSsL'",
f0569d9fbb25c8437760be69f194595a841ad711Timo Sirainen self.res_remote_openssl)
db7c9201c88e3d9bee10485194ee5b0c67249916Timo Sirainen self._search_op(api_obj, False, "OpEnS*",
755fe6da51ab7f54aa1d86913cb344bffef60e79Timo Sirainen self.res_local_openssl)
abe8230dd1dd37d7ccf0163100e934bb5e658c20Timo Sirainen # These tests are included because a specific bug
abe8230dd1dd37d7ccf0163100e934bb5e658c20Timo Sirainen # was found during development. These tests prevent regression
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen # back to that bug. Exit status of 1 is expected because the
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen # token isn't in the packages.
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen self._search_op(api_obj, False, "a_non_existent_token", set())
a10e5606a9e93f49cf13b3a35c8dc3f5d6ab5909Timo Sirainen self._search_op(api_obj, False, "42 AND 4641790", set())
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen self.assertRaises(api_errors.BooleanQueryException,
b225c3c65f360d7b833f09f9b2fb3035ed5ea600Timo Sirainen self._search_op, api_obj, False, "<e*> AND e*", set())
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen self.assertRaises(api_errors.BooleanQueryException,
f6699a08521aacc4c2bb5b6175691dad5f715f8cTimo Sirainen self._search_op, api_obj, False, "e* AND <e*>", set())
f6699a08521aacc4c2bb5b6175691dad5f715f8cTimo Sirainen self.assertRaises(api_errors.BooleanQueryException,
3da614c39dd29f536c485089e67839b4cf89fed3Timo Sirainen self._search_op, api_obj, False, "<e*> OR e*", set())
3da614c39dd29f536c485089e67839b4cf89fed3Timo Sirainen self.assertRaises(api_errors.BooleanQueryException,
0a6f8311541ae59381171620b77f82be58be562eTimo Sirainen self._search_op, api_obj, False, "e* OR <e*>", set())
34d2ee1fa2b299267fcefd378f80690e7f601dfbTimo Sirainen # Test for bug 15284, \ not being treated as an escape character
b225c3c65f360d7b833f09f9b2fb3035ed5ea600Timo Sirainen # for : as well as testing that \: when used with field queries
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen # works as expected.
b225c3c65f360d7b833f09f9b2fb3035ed5ea600Timo Sirainen svc_name = "svc\:/milestone/multi-user-server\:default"
b225c3c65f360d7b833f09f9b2fb3035ed5ea600Timo Sirainen self._search_op(api_obj, False,
b225c3c65f360d7b833f09f9b2fb3035ed5ea600Timo Sirainen svc_name,
b225c3c65f360d7b833f09f9b2fb3035ed5ea600Timo Sirainen self.res_smf_svc)
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen self._search_op(api_obj, False,
b225c3c65f360d7b833f09f9b2fb3035ed5ea600Timo Sirainen "example_pkg:set:smf.fmri:%s" % svc_name,
a2637488c8d514ec1ac3914811deee814f9761b3Timo Sirainen self.res_smf_svc)
0a6f8311541ae59381171620b77f82be58be562eTimo Sirainen self._search_op(api_obj, False,
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen "set:smf.fmri:%s" % svc_name,
0a6f8311541ae59381171620b77f82be58be562eTimo Sirainen self.res_smf_svc)
0a6f8311541ae59381171620b77f82be58be562eTimo Sirainen self._search_op(api_obj, False,
a10e5606a9e93f49cf13b3a35c8dc3f5d6ab5909Timo Sirainen "smf.fmri:%s" %svc_name,
df4018ae2f0a95be602f724ca70df7e0e3bd6a7dTimo Sirainen self.res_smf_svc)
0a6f8311541ae59381171620b77f82be58be562eTimo Sirainen self._search_op(api_obj, False,
0a6f8311541ae59381171620b77f82be58be562eTimo Sirainen ":set:smf.fmri:%s" % svc_name,
0a6f8311541ae59381171620b77f82be58be562eTimo Sirainen self.res_smf_svc)
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen self._search_op(api_obj, False,
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen "%s *milestone*" % svc_name,
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen self.res_smf_svc)
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen self._search_op(api_obj, False,
6ef7e31619edfaa17ed044b45861d106a86191efTimo Sirainen "example_pkg:set:smf.fmri:%s %s" % (svc_name, svc_name),
6ef7e31619edfaa17ed044b45861d106a86191efTimo Sirainen self.res_smf_svc)
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._search_op(api_obj, False,
022412398e56a8f31ef111cfd7271498d64af9a9Timo Sirainen "example_pkg:set:smf.fmri:%s example_pkg:set:smf.fmri:%s" %
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen (svc_name, svc_name),
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self.res_smf_svc)
f6699a08521aacc4c2bb5b6175691dad5f715f8cTimo Sirainen self._search_op(api_obj, False,
f6699a08521aacc4c2bb5b6175691dad5f715f8cTimo Sirainen "%s example_pkg:set:smf.fmri:%s" %
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen (svc_name, svc_name),
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen self.res_smf_svc)
022412398e56a8f31ef111cfd7271498d64af9a9Timo Sirainen # Test that a single escaped colon doesn't cause a traceback.
022412398e56a8f31ef111cfd7271498d64af9a9Timo Sirainen self._search_op(api_obj, True, "\:", set())
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen def _run_local_tests(self, api_obj):
1d3f7c1278168d5b1cbfa9a2cc9929a0909056b4Timo Sirainen outfile = os.path.join(self.testdata_dir, "res")
1d3f7c1278168d5b1cbfa9a2cc9929a0909056b4Timo Sirainen
1d3f7c1278168d5b1cbfa9a2cc9929a0909056b4Timo Sirainen # This finds something because the client side
1d3f7c1278168d5b1cbfa9a2cc9929a0909056b4Timo Sirainen # manifest has had the name of the package inserted
1d3f7c1278168d5b1cbfa9a2cc9929a0909056b4Timo Sirainen # into it.
1d3f7c1278168d5b1cbfa9a2cc9929a0909056b4Timo Sirainen
022412398e56a8f31ef111cfd7271498d64af9a9Timo Sirainen self._search_op(api_obj, False, "example_pkg",
1d3f7c1278168d5b1cbfa9a2cc9929a0909056b4Timo Sirainen self.res_local_pkg)
1d3f7c1278168d5b1cbfa9a2cc9929a0909056b4Timo Sirainen self._search_op(api_obj, False, "example_path",
1d3f7c1278168d5b1cbfa9a2cc9929a0909056b4Timo Sirainen self.res_local_path)
1d3f7c1278168d5b1cbfa9a2cc9929a0909056b4Timo Sirainen self._search_op(api_obj, False, "::com.sun.service.info_url:",
1d3f7c1278168d5b1cbfa9a2cc9929a0909056b4Timo Sirainen self.res_remote_url)
1d3f7c1278168d5b1cbfa9a2cc9929a0909056b4Timo Sirainen self._search_op(api_obj, False, "<e*>",
1d3f7c1278168d5b1cbfa9a2cc9929a0909056b4Timo Sirainen self.res_local_pkg_ret_pkg, return_actions=False)
1d3f7c1278168d5b1cbfa9a2cc9929a0909056b4Timo Sirainen self._search_op(api_obj, False, "<exam:::>",
022412398e56a8f31ef111cfd7271498d64af9a9Timo Sirainen self.res_local_pkg_ret_pkg, return_actions=False)
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen self._search_op(api_obj, False, "exam:::e*path",
022412398e56a8f31ef111cfd7271498d64af9a9Timo Sirainen self.res_local_path)
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen self._search_op(api_obj, False, "example*",
022412398e56a8f31ef111cfd7271498d64af9a9Timo Sirainen self.res_local_wildcard)
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen self._search_op(api_obj, False, "/bin", self.res_local_bin)
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen self._search_op(api_obj, False, "4851433",
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen self.res_local_bug_id)
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen self._search_op(api_obj, False, "4725245",
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen self.res_remote_bug_id_4725245)
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen self._search_op(api_obj, False, "6556919",
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen self.res_local_inc_changes)
abe8230dd1dd37d7ccf0163100e934bb5e658c20Timo Sirainen self._search_op(api_obj, False, "42",
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen self.res_local_random_test)
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen self._search_op(api_obj, False, "79",
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen self.res_remote_random_test_79)
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen self._search_op(api_obj, False, "separator",
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen self.res_local_keywords)
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen self._search_op(api_obj, False, "\"sort 0x86\"",
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen self.res_remote_keywords)
abe8230dd1dd37d7ccf0163100e934bb5e658c20Timo Sirainen self._search_op(api_obj, False, "*example*",
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen self.res_local_glob)
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen self._search_op(api_obj, False, "fooo", self.res_local_foo)
abe8230dd1dd37d7ccf0163100e934bb5e658c20Timo Sirainen self._search_op(api_obj, False, "bar", self.res_local_foo)
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen self._search_op(api_obj, False, "OpEnSsL",
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen self.res_local_openssl)
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen # These tests are included because a specific bug
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen # was found during development. These tests prevent regression
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen # back to that bug.
755fe6da51ab7f54aa1d86913cb344bffef60e79Timo Sirainen self._search_op(api_obj, False, "a_non_existent_token", set())
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen def _run_degraded_local_tests(self, api_obj):
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen outfile = os.path.join(self.testdata_dir, "res")
f6699a08521aacc4c2bb5b6175691dad5f715f8cTimo Sirainen
f6699a08521aacc4c2bb5b6175691dad5f715f8cTimo Sirainen # This finds something because the client side
f6699a08521aacc4c2bb5b6175691dad5f715f8cTimo Sirainen # manifest has had the name of the package inserted
f6699a08521aacc4c2bb5b6175691dad5f715f8cTimo Sirainen # into it.
f6699a08521aacc4c2bb5b6175691dad5f715f8cTimo Sirainen
f6699a08521aacc4c2bb5b6175691dad5f715f8cTimo Sirainen self._search_op_slow(api_obj, False, "example_pkg",
f6699a08521aacc4c2bb5b6175691dad5f715f8cTimo Sirainen self.res_local_pkg)
f6699a08521aacc4c2bb5b6175691dad5f715f8cTimo Sirainen self._search_op_slow(api_obj, False, "example_path",
f6699a08521aacc4c2bb5b6175691dad5f715f8cTimo Sirainen self.res_local_path)
f6699a08521aacc4c2bb5b6175691dad5f715f8cTimo Sirainen self._search_op_slow(api_obj, False, "(example_path)",
f6699a08521aacc4c2bb5b6175691dad5f715f8cTimo Sirainen self.res_local_path)
f6699a08521aacc4c2bb5b6175691dad5f715f8cTimo Sirainen self._search_op_slow(api_obj, False, "<exam*:::>",
f6699a08521aacc4c2bb5b6175691dad5f715f8cTimo Sirainen self.res_local_pkg_ret_pkg, return_actions=False)
f6699a08521aacc4c2bb5b6175691dad5f715f8cTimo Sirainen self._search_op_slow(api_obj, False,
f6699a08521aacc4c2bb5b6175691dad5f715f8cTimo Sirainen "::com.sun.service.info_url:",
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen self.res_remote_url)
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen self._search_op_slow(api_obj, False, ":::e* AND *path",
6ef7e31619edfaa17ed044b45861d106a86191efTimo Sirainen self.res_local_path)
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen self._search_op_slow(api_obj, False, "e* AND *path",
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen self.res_local_path)
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen self._search_op_slow(api_obj, False, "<e*>",
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen self.res_local_pkg_ret_pkg, return_actions=False)
6ef7e31619edfaa17ed044b45861d106a86191efTimo Sirainen self._search_op_slow(api_obj, False, "<e*> AND <e*>",
d31c4d7c161f9d7efa59964c7c958e83e05b218cTimo Sirainen self.res_local_pkg_ret_pkg, return_actions=False)
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen self._search_op_slow(api_obj, False, "<e*> OR <e*>",
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen self.res_local_pkg_ret_pkg, return_actions=False)
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen self._search_op_slow(api_obj, False, "<exam:::>",
755fe6da51ab7f54aa1d86913cb344bffef60e79Timo Sirainen self.res_local_pkg_ret_pkg, return_actions=False)
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen self._search_op_slow(api_obj, False, "exam:::e*path",
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen self.res_local_path)
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen self._search_op_slow(api_obj, False, "exam:::e*path AND e*:::",
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen self.res_local_path)
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen self._search_op_slow(api_obj, False, "e*::: AND exam:::*path",
71a74e26cf070a205d31cf6c6fae003f90027b63Timo Sirainen self.res_remote_path_extra)
a486ed03dce069ff60ab5a65d0ae24a1862f22fcTimo Sirainen self._search_op_slow(api_obj, False, "example*",
a486ed03dce069ff60ab5a65d0ae24a1862f22fcTimo Sirainen self.res_local_wildcard)
a486ed03dce069ff60ab5a65d0ae24a1862f22fcTimo Sirainen self._search_op_slow(api_obj, False, "/bin", self.res_local_bin)
a486ed03dce069ff60ab5a65d0ae24a1862f22fcTimo Sirainen self._search_op_slow(api_obj, False, "4851433",
a486ed03dce069ff60ab5a65d0ae24a1862f22fcTimo Sirainen self.res_local_bug_id)
a486ed03dce069ff60ab5a65d0ae24a1862f22fcTimo Sirainen self._search_op_slow(api_obj, False, "<4851433> AND <4725245>",
a486ed03dce069ff60ab5a65d0ae24a1862f22fcTimo Sirainen self.res_local_pkg_ret_pkg, return_actions=False)
a486ed03dce069ff60ab5a65d0ae24a1862f22fcTimo Sirainen self._search_op_slow(api_obj, False, "4851433 AND 4725245",
d31c4d7c161f9d7efa59964c7c958e83e05b218cTimo Sirainen self.res_local_bug_id)
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._search_op_slow(api_obj, False,
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen "4851433 AND 4725245 OR example_path",
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self.res_local_bug_id)
f6699a08521aacc4c2bb5b6175691dad5f715f8cTimo Sirainen self._search_op_slow(api_obj, False,
f6699a08521aacc4c2bb5b6175691dad5f715f8cTimo Sirainen "4851433 AND (4725245 OR example_path)",
f6699a08521aacc4c2bb5b6175691dad5f715f8cTimo Sirainen self.res_local_bug_id)
f6699a08521aacc4c2bb5b6175691dad5f715f8cTimo Sirainen self._search_op_slow(api_obj, False,
f6699a08521aacc4c2bb5b6175691dad5f715f8cTimo Sirainen "(4851433 AND 4725245) OR example_path",
319944c0f35b311c998854e96d6463a084fd90aeTimo Sirainen self.res_local_bug_id | self.res_local_path)
319944c0f35b311c998854e96d6463a084fd90aeTimo Sirainen self._search_op_slow(api_obj, False, "4851433 OR 4725245",
912e870dcab2dadac8a6b20b42367999cdd8b5a1Timo Sirainen self.res_local_bug_id | self.res_remote_bug_id_4725245)
319944c0f35b311c998854e96d6463a084fd90aeTimo Sirainen self._search_op_slow(api_obj, False, "6556919",
319944c0f35b311c998854e96d6463a084fd90aeTimo Sirainen self.res_local_inc_changes)
b8765f6093ab35fc2345293d78132d35794cbff5Timo Sirainen self._search_op_slow(api_obj, False, "65569??",
b8765f6093ab35fc2345293d78132d35794cbff5Timo Sirainen self.res_local_inc_changes)
b8765f6093ab35fc2345293d78132d35794cbff5Timo Sirainen self._search_op_slow(api_obj, False, "42",
a2637488c8d514ec1ac3914811deee814f9761b3Timo Sirainen self.res_local_random_test)
b8765f6093ab35fc2345293d78132d35794cbff5Timo Sirainen self._search_op_slow(api_obj, False, "79",
b8765f6093ab35fc2345293d78132d35794cbff5Timo Sirainen self.res_remote_random_test_79)
b8765f6093ab35fc2345293d78132d35794cbff5Timo Sirainen self._search_op_slow(api_obj, False, "separator",
b8765f6093ab35fc2345293d78132d35794cbff5Timo Sirainen self.res_local_keywords)
319944c0f35b311c998854e96d6463a084fd90aeTimo Sirainen self._search_op_slow(api_obj, False, "\"sort 0x86\"",
319944c0f35b311c998854e96d6463a084fd90aeTimo Sirainen self.res_remote_keywords)
d31c4d7c161f9d7efa59964c7c958e83e05b218cTimo Sirainen self._search_op_slow(api_obj, False, "*example*",
d31c4d7c161f9d7efa59964c7c958e83e05b218cTimo Sirainen self.res_local_glob)
319944c0f35b311c998854e96d6463a084fd90aeTimo Sirainen self._search_op_slow(api_obj, False, "fooo", self.res_local_foo)
1e76a5b92f9d82d557f81f080f3dfad1c9d8f200Timo Sirainen self._search_op_slow(api_obj, False, "fo*", self.res_local_foo)
907723f35f4d3dfc774ca42d00a8a7b8ef90dd5dTimo Sirainen self._search_op_slow(api_obj, False, "bar", self.res_local_foo)
907723f35f4d3dfc774ca42d00a8a7b8ef90dd5dTimo Sirainen self._search_op_slow(api_obj, False, "openssl",
2ae575a66f2a302f047f6de062a70b75f8bebc7bTimo Sirainen self.res_local_openssl)
cdaf255d6a3daeef0ac85edaa60bfa6d1f945bffTimo Sirainen self._search_op_slow(api_obj, False, "OPENSSL",
73b50eecfc31750a312e2f940023f522eb07178cTimo Sirainen self.res_local_openssl)
73b50eecfc31750a312e2f940023f522eb07178cTimo Sirainen self._search_op_slow(api_obj, False, "OpEnSsL",
6843896c40bee4f9b6680ca7ced598c446e9f999Timo Sirainen self.res_local_openssl)
7f3be7d885c75cdd77f536929a45bc9764595960Timo Sirainen self._search_op_slow(api_obj, False, "OpEnS*",
2ae575a66f2a302f047f6de062a70b75f8bebc7bTimo Sirainen self.res_local_openssl)
2ae575a66f2a302f047f6de062a70b75f8bebc7bTimo Sirainen # These tests are included because a specific bug
2ae575a66f2a302f047f6de062a70b75f8bebc7bTimo Sirainen # was found during development. These tests prevent regression
cdaf255d6a3daeef0ac85edaa60bfa6d1f945bffTimo Sirainen # back to that bug. Exit status of 1 is expected because the
1e76a5b92f9d82d557f81f080f3dfad1c9d8f200Timo Sirainen # token isn't in the packages.
2ae575a66f2a302f047f6de062a70b75f8bebc7bTimo Sirainen self._search_op_slow(api_obj, False, "a_non_existent_token",
2ae575a66f2a302f047f6de062a70b75f8bebc7bTimo Sirainen set())
7a6b45405fb1544ac476e6eb1402a70cc1ddcdcfTimo Sirainen
7a6b45405fb1544ac476e6eb1402a70cc1ddcdcfTimo Sirainen def _run_remove_root_search(self, search_func, remote, api_obj, ip):
7a6b45405fb1544ac476e6eb1402a70cc1ddcdcfTimo Sirainen search_func(api_obj, remote, [ip + "example_pkg"], set())
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen search_func(api_obj, remote, [ip + "bin/example_path"],
7f3be7d885c75cdd77f536929a45bc9764595960Timo Sirainen self.res_remote_path_of_example_path)
73b50eecfc31750a312e2f940023f522eb07178cTimo Sirainen search_func(api_obj, remote, ["(%sbin/example_path)" % ip],
73b50eecfc31750a312e2f940023f522eb07178cTimo Sirainen self.res_remote_path_of_example_path)
7f3be7d885c75cdd77f536929a45bc9764595960Timo Sirainen search_func(api_obj, remote, ["<%sexam*:::>" % ip],
7a6b45405fb1544ac476e6eb1402a70cc1ddcdcfTimo Sirainen set(), return_actions=False)
7a6b45405fb1544ac476e6eb1402a70cc1ddcdcfTimo Sirainen search_func(api_obj, remote,
7a6b45405fb1544ac476e6eb1402a70cc1ddcdcfTimo Sirainen ["::%scom.sun.service.info_url:" % ip], set())
c9fe52d819c608b890620f7fe36ff509b14eb350Timo Sirainen search_func(api_obj, remote,
c9fe52d819c608b890620f7fe36ff509b14eb350Timo Sirainen ["%sbin/e* AND %s*path" % (ip, ip)],
c9fe52d819c608b890620f7fe36ff509b14eb350Timo Sirainen self.res_remote_path_of_example_path)
b08b33d1f5ce3721dc2d83586c9cb0ca141331fdTimo Sirainen search_func(api_obj, remote,
b08b33d1f5ce3721dc2d83586c9cb0ca141331fdTimo Sirainen ["(4851433 AND 4725245) OR :file::%sbin/example_path" % ip],
b08b33d1f5ce3721dc2d83586c9cb0ca141331fdTimo Sirainen self.res_remote_bug_id |
c9fe52d819c608b890620f7fe36ff509b14eb350Timo Sirainen self.res_remote_path_of_example_path)
1e76a5b92f9d82d557f81f080f3dfad1c9d8f200Timo Sirainen search_func(api_obj, remote,
c9fe52d819c608b890620f7fe36ff509b14eb350Timo Sirainen [":::%sbin/example_path OR (4851433 AND 4725245)" % ip],
c9fe52d819c608b890620f7fe36ff509b14eb350Timo Sirainen self.res_remote_bug_id |
c9fe52d819c608b890620f7fe36ff509b14eb350Timo Sirainen self.res_remote_path_of_example_path)
e9d68b41c007f0e545de361f8012f6f231bfec8bTimo Sirainen search_func(api_obj, remote,
c9fe52d819c608b890620f7fe36ff509b14eb350Timo Sirainen ["%sbin/example_path OR %sbin/example_path" % (ip, ip)],
c9fe52d819c608b890620f7fe36ff509b14eb350Timo Sirainen self.res_remote_path_of_example_path)
e9d68b41c007f0e545de361f8012f6f231bfec8bTimo Sirainen search_func(api_obj, remote,
e9d68b41c007f0e545de361f8012f6f231bfec8bTimo Sirainen ["<::path:%sbin/example_path> OR <(a AND b)>" % ip],
7f3be7d885c75cdd77f536929a45bc9764595960Timo Sirainen self.res_remote_pkg_ret_pkg, return_actions=False)
7f3be7d885c75cdd77f536929a45bc9764595960Timo Sirainen search_func(api_obj, remote,
1e76a5b92f9d82d557f81f080f3dfad1c9d8f200Timo Sirainen ["<(a AND b)> OR <%sbin/example_path>" % ip],
71a74e26cf070a205d31cf6c6fae003f90027b63Timo Sirainen self.res_remote_pkg_ret_pkg, return_actions=False)
71a74e26cf070a205d31cf6c6fae003f90027b63Timo Sirainen # The tests below here are for testing that multiple queries
a393d9d6dabdc46cf724f8cb004a652b4036d53dTimo Sirainen # to search return the results from both queries (bug 10365)
71a74e26cf070a205d31cf6c6fae003f90027b63Timo Sirainen search_func(api_obj, remote,
71a74e26cf070a205d31cf6c6fae003f90027b63Timo Sirainen ["<(a AND b)>", "example_path"],
71a74e26cf070a205d31cf6c6fae003f90027b63Timo Sirainen self.res_remote_path)
a486ed03dce069ff60ab5a65d0ae24a1862f22fcTimo Sirainen search_func(api_obj, remote,
a486ed03dce069ff60ab5a65d0ae24a1862f22fcTimo Sirainen ["example_path", "<(a AND b)>"],
a486ed03dce069ff60ab5a65d0ae24a1862f22fcTimo Sirainen self.res_remote_path)
a486ed03dce069ff60ab5a65d0ae24a1862f22fcTimo Sirainen search_func(api_obj, remote,
a486ed03dce069ff60ab5a65d0ae24a1862f22fcTimo Sirainen [":::%sbin/example_path" % ip, "(4851433 AND 4725245)"],
a486ed03dce069ff60ab5a65d0ae24a1862f22fcTimo Sirainen self.res_remote_bug_id |
ccc895c0358108d2304239063e940b7d75f364abTimo Sirainen self.res_remote_path_of_example_path)
a486ed03dce069ff60ab5a65d0ae24a1862f22fcTimo Sirainen search_func(api_obj, remote,
a486ed03dce069ff60ab5a65d0ae24a1862f22fcTimo Sirainen ["(4851433 AND 4725245)", ":::%sbin/example_path" % ip],
a486ed03dce069ff60ab5a65d0ae24a1862f22fcTimo Sirainen self.res_remote_bug_id |
a486ed03dce069ff60ab5a65d0ae24a1862f22fcTimo Sirainen self.res_remote_path_of_example_path)
a486ed03dce069ff60ab5a65d0ae24a1862f22fcTimo Sirainen
a486ed03dce069ff60ab5a65d0ae24a1862f22fcTimo Sirainen def _run_local_tests_example11_installed(self, api_obj):
6843896c40bee4f9b6680ca7ced598c446e9f999Timo Sirainen outfile = os.path.join(self.testdata_dir, "res")
6843896c40bee4f9b6680ca7ced598c446e9f999Timo Sirainen
6843896c40bee4f9b6680ca7ced598c446e9f999Timo Sirainen # This finds something because the client side
1dd9801f7ace40777ecf8ed9a98c093bc40467a4Timo Sirainen # manifest has had the name of the package inserted
6843896c40bee4f9b6680ca7ced598c446e9f999Timo Sirainen # into it.
1e76a5b92f9d82d557f81f080f3dfad1c9d8f200Timo Sirainen
b428c5993b01f4cffacdd24377ca2873fcc12184Timo Sirainen self._search_op(api_obj, False, "example_pkg",
d0e5f8252516c4d4df2fbcdae4d37f9e5f931199Timo Sirainen self.res_local_pkg_example11)
f0569d9fbb25c8437760be69f194595a841ad711Timo Sirainen self._search_op(api_obj, False, "example_path", set())
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen self._search_op(api_obj, False, "example_path11",
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen self.res_local_path_example11)
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen self._search_op(api_obj, False, "example*",
8907d617ce7c4f390c0f42f6f694db2fecdd5775Timo Sirainen self.res_local_wildcard_example11)
8907d617ce7c4f390c0f42f6f694db2fecdd5775Timo Sirainen self._search_op(api_obj, False, "/bin",
f0569d9fbb25c8437760be69f194595a841ad711Timo Sirainen self.res_local_bin_example11)
f0569d9fbb25c8437760be69f194595a841ad711Timo Sirainen
8907d617ce7c4f390c0f42f6f694db2fecdd5775Timo Sirainen def _run_local_empty_tests(self, api_obj):
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._search_op(api_obj, False, "example_pkg", set())
b2ecd50bb98c44816cb07c17aa17fae2b425f941Timo Sirainen self._search_op(api_obj, False, "example_path", set())
1e76a5b92f9d82d557f81f080f3dfad1c9d8f200Timo Sirainen self._search_op(api_obj, False, "example*", set())
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen self._search_op(api_obj, False, "/bin", set())
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen
1cd97699af9c77d8f5920832ec3374884544fd68Timo Sirainen def _run_remote_empty_tests(self, api_obj):
907723f35f4d3dfc774ca42d00a8a7b8ef90dd5dTimo Sirainen self._search_op(api_obj, True, "example_pkg", set())
e68309fcfa2eaa88217fd51e7b4900fc9c20ef5dTimo Sirainen self._search_op(api_obj, True, "example_path", set())
e68309fcfa2eaa88217fd51e7b4900fc9c20ef5dTimo Sirainen self._search_op(api_obj, True, "example*", set())
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._search_op(api_obj, True, "/bin", set())
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._search_op(api_obj, True, "*unique*", set())
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen @staticmethod
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen def _restore_dir(index_dir, index_dir_tmp):
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen shutil.rmtree(index_dir)
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen shutil.move(index_dir_tmp, index_dir)
02b79f9c2636da1829eee5b92753602bba8b67edTimo Sirainen
02b79f9c2636da1829eee5b92753602bba8b67edTimo Sirainen @staticmethod
abe8230dd1dd37d7ccf0163100e934bb5e658c20Timo Sirainen def _restore_dir_preserve_hash(index_dir, index_dir_tmp):
abe8230dd1dd37d7ccf0163100e934bb5e658c20Timo Sirainen tmp_file = "full_fmri_list.hash"
abe8230dd1dd37d7ccf0163100e934bb5e658c20Timo Sirainen portable.remove(os.path.join(index_dir_tmp, tmp_file))
a2637488c8d514ec1ac3914811deee814f9761b3Timo Sirainen shutil.move(os.path.join(index_dir, tmp_file),
abe8230dd1dd37d7ccf0163100e934bb5e658c20Timo Sirainen index_dir_tmp)
abe8230dd1dd37d7ccf0163100e934bb5e658c20Timo Sirainen fh = open(os.path.join(index_dir_tmp, ss.MAIN_FILE), "r")
abe8230dd1dd37d7ccf0163100e934bb5e658c20Timo Sirainen fh.seek(0)
abe8230dd1dd37d7ccf0163100e934bb5e658c20Timo Sirainen fh.seek(9)
abe8230dd1dd37d7ccf0163100e934bb5e658c20Timo Sirainen ver = fh.read(1)
abe8230dd1dd37d7ccf0163100e934bb5e658c20Timo Sirainen fh.close()
02b79f9c2636da1829eee5b92753602bba8b67edTimo Sirainen fh = open(os.path.join(index_dir_tmp, tmp_file), "r+")
02b79f9c2636da1829eee5b92753602bba8b67edTimo Sirainen fh.seek(0)
abe8230dd1dd37d7ccf0163100e934bb5e658c20Timo Sirainen fh.seek(9)
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen # Overwrite the existing version number.
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen # By definition, the version 0 is never used.
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen fh.write("%s" % ver)
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen shutil.rmtree(index_dir)
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen shutil.move(index_dir_tmp, index_dir)
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen
abe8230dd1dd37d7ccf0163100e934bb5e658c20Timo Sirainen def _get_index_dirs(self):
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen index_dir = os.path.join(self.img_path, "var","pkg","index")
abe8230dd1dd37d7ccf0163100e934bb5e658c20Timo Sirainen index_dir_tmp = index_dir + "TMP"
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen return index_dir, index_dir_tmp
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen @staticmethod
178511b57faa7c3f8203dd8b7e4059d00cbfc23aTimo Sirainen def _overwrite_version_number(file_path):
abe8230dd1dd37d7ccf0163100e934bb5e658c20Timo Sirainen fh = open(file_path, "r+")
a393d9d6dabdc46cf724f8cb004a652b4036d53dTimo Sirainen fh.seek(0)
a393d9d6dabdc46cf724f8cb004a652b4036d53dTimo Sirainen fh.seek(9)
abe8230dd1dd37d7ccf0163100e934bb5e658c20Timo Sirainen # Overwrite the existing version number.
e68309fcfa2eaa88217fd51e7b4900fc9c20ef5dTimo Sirainen # By definition, the version 0 is never used.
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen fh.write("0")
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen fh.close()
d31c4d7c161f9d7efa59964c7c958e83e05b218cTimo Sirainen
d31c4d7c161f9d7efa59964c7c958e83e05b218cTimo Sirainen @staticmethod
d31c4d7c161f9d7efa59964c7c958e83e05b218cTimo Sirainen def _overwrite_on_disk_format_version_number(file_path):
d31c4d7c161f9d7efa59964c7c958e83e05b218cTimo Sirainen fh = open(file_path, "r+")
d31c4d7c161f9d7efa59964c7c958e83e05b218cTimo Sirainen fh.seek(0)
d31c4d7c161f9d7efa59964c7c958e83e05b218cTimo Sirainen fh.seek(16)
d31c4d7c161f9d7efa59964c7c958e83e05b218cTimo Sirainen # Overwrite the existing version number.
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen # By definition, the version 0 is never used.
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen fh.write("9")
3cfff0ca01961d885bdbd6ef08d761880116af07Timo Sirainen fh.close()
f7d43647acc6dc80064c8c4cacf5bf86f754c530Timo Sirainen
98c1cf256927e254f0c092acd2ddcd7ea50bd009Timo Sirainen @staticmethod
98c1cf256927e254f0c092acd2ddcd7ea50bd009Timo Sirainen def _overwrite_on_disk_format_version_number_with_letter(file_path):
9d2040fbb941f411d57fd850b4cdc3b1cccc1168Timo Sirainen fh = open(file_path, "r+")
9d2040fbb941f411d57fd850b4cdc3b1cccc1168Timo Sirainen fh.seek(0)
b225c3c65f360d7b833f09f9b2fb3035ed5ea600Timo Sirainen fh.seek(16)
b225c3c65f360d7b833f09f9b2fb3035ed5ea600Timo Sirainen # Overwrite the existing version number.
9d2040fbb941f411d57fd850b4cdc3b1cccc1168Timo Sirainen # By definition, the version 0 is never used.
9d2040fbb941f411d57fd850b4cdc3b1cccc1168Timo Sirainen fh.write("a")
9d2040fbb941f411d57fd850b4cdc3b1cccc1168Timo Sirainen fh.close()
98c1cf256927e254f0c092acd2ddcd7ea50bd009Timo Sirainen
98c1cf256927e254f0c092acd2ddcd7ea50bd009Timo Sirainen @staticmethod
98c1cf256927e254f0c092acd2ddcd7ea50bd009Timo Sirainen def _replace_on_disk_format_version(dir):
98c1cf256927e254f0c092acd2ddcd7ea50bd009Timo Sirainen file_path = os.path.join(dir, ss.BYTE_OFFSET_FILE)
98c1cf256927e254f0c092acd2ddcd7ea50bd009Timo Sirainen fh = open(file_path, "r")
98c1cf256927e254f0c092acd2ddcd7ea50bd009Timo Sirainen lst = fh.readlines()
98c1cf256927e254f0c092acd2ddcd7ea50bd009Timo Sirainen fh.close()
98c1cf256927e254f0c092acd2ddcd7ea50bd009Timo Sirainen fh = open(file_path, "w")
98c1cf256927e254f0c092acd2ddcd7ea50bd009Timo Sirainen fh.write(lst[0])
f7d43647acc6dc80064c8c4cacf5bf86f754c530Timo Sirainen for l in lst[2:]:
f7d43647acc6dc80064c8c4cacf5bf86f754c530Timo Sirainen fh.write(l)
98c1cf256927e254f0c092acd2ddcd7ea50bd009Timo Sirainen fh.close()
98c1cf256927e254f0c092acd2ddcd7ea50bd009Timo Sirainen
98c1cf256927e254f0c092acd2ddcd7ea50bd009Timo Sirainen @staticmethod
9d2040fbb941f411d57fd850b4cdc3b1cccc1168Timo Sirainen def _overwrite_hash(ffh_path):
98c1cf256927e254f0c092acd2ddcd7ea50bd009Timo Sirainen fd, tmp = tempfile.mkstemp()
b225c3c65f360d7b833f09f9b2fb3035ed5ea600Timo Sirainen portable.copyfile(ffh_path, tmp)
b225c3c65f360d7b833f09f9b2fb3035ed5ea600Timo Sirainen fh = open(tmp, "r+")
98c1cf256927e254f0c092acd2ddcd7ea50bd009Timo Sirainen fh.seek(0)
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen fh.seek(20)
98c1cf256927e254f0c092acd2ddcd7ea50bd009Timo Sirainen fh.write("*")
98c1cf256927e254f0c092acd2ddcd7ea50bd009Timo Sirainen fh.close()
98c1cf256927e254f0c092acd2ddcd7ea50bd009Timo Sirainen portable.rename(tmp, ffh_path)
98c1cf256927e254f0c092acd2ddcd7ea50bd009Timo Sirainen
98c1cf256927e254f0c092acd2ddcd7ea50bd009Timo Sirainen def _check_no_index(self):
b8bbfab97eed17fcb00b5a86128e1d7a3babc35cTimo Sirainen ind_dir, ind_dir_tmp = self._get_index_dirs()
b8bbfab97eed17fcb00b5a86128e1d7a3babc35cTimo Sirainen if os.listdir(ind_dir):
98c1cf256927e254f0c092acd2ddcd7ea50bd009Timo Sirainen self.assert_(0)
2be66b9eddad3841a1195fe9aeb1eaf0f28f1116Timo Sirainen if os.path.exists(ind_dir_tmp):
2be66b9eddad3841a1195fe9aeb1eaf0f28f1116Timo Sirainen self.assert_(0)
2be66b9eddad3841a1195fe9aeb1eaf0f28f1116Timo Sirainen
98c1cf256927e254f0c092acd2ddcd7ea50bd009Timo Sirainen @staticmethod
98c1cf256927e254f0c092acd2ddcd7ea50bd009Timo Sirainen def validateAssertRaises(ex_type, validate_func, func, *args, **kwargs):
98c1cf256927e254f0c092acd2ddcd7ea50bd009Timo Sirainen try:
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen func(*args, **kwargs)
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen except ex_type, e:
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen validate_func(e)
b225c3c65f360d7b833f09f9b2fb3035ed5ea600Timo Sirainen else:
f5b919e9b07dfd9d2401b998ef8759e5f0312719Timo Sirainen raise RuntimeError("Didn't raise expected exception.")
33ae95df45c9b5ec51332a6b39eb5322038686b9Timo Sirainen
178511b57faa7c3f8203dd8b7e4059d00cbfc23aTimo Sirainen @staticmethod
abe8230dd1dd37d7ccf0163100e934bb5e658c20Timo Sirainen def _check_err(e, expected_str, expected_code):
abe8230dd1dd37d7ccf0163100e934bb5e658c20Timo Sirainen err = e.read()
abe8230dd1dd37d7ccf0163100e934bb5e658c20Timo Sirainen if expected_code != e.code:
abe8230dd1dd37d7ccf0163100e934bb5e658c20Timo Sirainen raise RuntimeError("Got wrong code, expected %s got "
abe8230dd1dd37d7ccf0163100e934bb5e658c20Timo Sirainen "%s" % (expected_code, e.code))
7d207b1e77a7b5e3fda640e353acfc86d261fedfTimo Sirainen if expected_str not in err:
b225c3c65f360d7b833f09f9b2fb3035ed5ea600Timo Sirainen raise RuntimeError("Got unexpected error message of:\n"
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen "%s" % err)
b225c3c65f360d7b833f09f9b2fb3035ed5ea600Timo Sirainen
b225c3c65f360d7b833f09f9b2fb3035ed5ea600Timo Sirainen
8166e8a706078efc71923719ca285e84902883c0Timo Sirainenclass TestApiSearchBasicsP(TestApiSearchBasics):
8166e8a706078efc71923719ca285e84902883c0Timo Sirainen # Only start/stop the depot once (instead of for every test)
8166e8a706078efc71923719ca285e84902883c0Timo Sirainen persistent_setup = True
8166e8a706078efc71923719ca285e84902883c0Timo Sirainen
8166e8a706078efc71923719ca285e84902883c0Timo Sirainen def __init__(self, *args, **kwargs):
b225c3c65f360d7b833f09f9b2fb3035ed5ea600Timo Sirainen TestApiSearchBasics.__init__(self, *args, **kwargs)
09b9cbde9e7a0f9adea1fb054a7c62f35ad901e1Timo Sirainen self.sent_pkgs = set()
a2637488c8d514ec1ac3914811deee814f9761b3Timo Sirainen
f87702d8d147f66d3fb6c41e5695c67f6d00612eTimo Sirainen def pkgsend_bulk(self, durl, pkg, optional=True):
09b9cbde9e7a0f9adea1fb054a7c62f35ad901e1Timo Sirainen if pkg not in self.sent_pkgs or optional == False:
09b9cbde9e7a0f9adea1fb054a7c62f35ad901e1Timo Sirainen self.sent_pkgs.add(pkg)
09b9cbde9e7a0f9adea1fb054a7c62f35ad901e1Timo Sirainen TestApiSearchBasics.pkgsend_bulk(self, durl, pkg)
09b9cbde9e7a0f9adea1fb054a7c62f35ad901e1Timo Sirainen
09b9cbde9e7a0f9adea1fb054a7c62f35ad901e1Timo Sirainen def setUp(self):
5edfc0f1c3c55e906d8316d9cdeaa3b0c7000c19Timo Sirainen TestApiSearchBasics.setUp(self)
686cb2418d4daa7bc747d3551783c1895e7c41b9Timo Sirainen durl = self.dc.get_depot_url()
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen self.pkgsend_bulk(durl, self.example_pkg10)
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self.pkgsend_bulk(durl, self.fat_pkg10)
b225c3c65f360d7b833f09f9b2fb3035ed5ea600Timo Sirainen self.pkgsend_bulk(durl, self.another_pkg10)
b225c3c65f360d7b833f09f9b2fb3035ed5ea600Timo Sirainen
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen def test_010_remote(self):
f16c114c20bbd7d292d93415d1e56c8dd6abd3e7Timo Sirainen """Test remote search."""
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen durl = self.dc.get_depot_url()
f16c114c20bbd7d292d93415d1e56c8dd6abd3e7Timo Sirainen api_obj = self.image_create(durl)
e68309fcfa2eaa88217fd51e7b4900fc9c20ef5dTimo Sirainen time.sleep(1)
f5b919e9b07dfd9d2401b998ef8759e5f0312719Timo Sirainen # This should be a full test to test all functionality.
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._run_full_remote_tests(api_obj)
f5b919e9b07dfd9d2401b998ef8759e5f0312719Timo Sirainen self._search_op(api_obj, True, ":file::", self.res_remote_file)
e68309fcfa2eaa88217fd51e7b4900fc9c20ef5dTimo Sirainen
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen def test_020_local_0(self):
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen """Install one package, and run the search suite."""
e68309fcfa2eaa88217fd51e7b4900fc9c20ef5dTimo Sirainen durl = self.dc.get_depot_url()
6a1e4eb2c6a267bec1e8704ce9137bebb7792702Timo Sirainen api_obj = self.image_create(durl)
fc1696e32dd732a5bbabc3c8f64810448e327043Timo Sirainen
b225c3c65f360d7b833f09f9b2fb3035ed5ea600Timo Sirainen self._api_install(api_obj, ["example_pkg"])
f5b919e9b07dfd9d2401b998ef8759e5f0312719Timo Sirainen
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen self._run_full_local_tests(api_obj)
6a1e4eb2c6a267bec1e8704ce9137bebb7792702Timo Sirainen
b8bbfab97eed17fcb00b5a86128e1d7a3babc35cTimo Sirainen def test_030_degraded_local(self):
b8bbfab97eed17fcb00b5a86128e1d7a3babc35cTimo Sirainen """Install one package, and run the search suite."""
b8bbfab97eed17fcb00b5a86128e1d7a3babc35cTimo Sirainen durl = self.dc.get_depot_url()
b8bbfab97eed17fcb00b5a86128e1d7a3babc35cTimo Sirainen api_obj = self.image_create(durl)
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen
fc1696e32dd732a5bbabc3c8f64810448e327043Timo Sirainen self._api_install(api_obj, ["example_pkg@1.0"])
299183fbb6ec5d0828a0880da372540421ac4665Timo Sirainen
6a1e4eb2c6a267bec1e8704ce9137bebb7792702Timo Sirainen index_dir = os.path.join(self.img_path, "var","pkg","index")
f4b93a46e140823a64d88763ea6ef9f03c49844eTimo Sirainen shutil.rmtree(index_dir)
6a1e4eb2c6a267bec1e8704ce9137bebb7792702Timo Sirainen
6a1e4eb2c6a267bec1e8704ce9137bebb7792702Timo Sirainen self._run_degraded_local_tests(api_obj)
6a1e4eb2c6a267bec1e8704ce9137bebb7792702Timo Sirainen
6a1e4eb2c6a267bec1e8704ce9137bebb7792702Timo Sirainen def test_040_repeated_install_uninstall(self):
abe8230dd1dd37d7ccf0163100e934bb5e658c20Timo Sirainen """Install and uninstall a package. Checking search both
8907d617ce7c4f390c0f42f6f694db2fecdd5775Timo Sirainen after each change to the image."""
99be58a447b69d62cbd9e764000a06226b9c9c89Timo Sirainen # During development, the index could become corrupted by
abe8230dd1dd37d7ccf0163100e934bb5e658c20Timo Sirainen # repeated installing and uninstalling a package. This
39775ad03c459efe64cce924658da5094ba417e1Timo Sirainen # tests if that has been fixed.
343a527f805ca5cce78496b959d6def70e5d0cd4Timo Sirainen repeat = 3
313fe89df4d91cd0cd7f3558dc6d7fd21ad39eeeTimo Sirainen
313fe89df4d91cd0cd7f3558dc6d7fd21ad39eeeTimo Sirainen durl = self.dc.get_depot_url()
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen api_obj = self.image_create(durl)
b225c3c65f360d7b833f09f9b2fb3035ed5ea600Timo Sirainen
b225c3c65f360d7b833f09f9b2fb3035ed5ea600Timo Sirainen self._api_install(api_obj, ["example_pkg@1.0"])
a2637488c8d514ec1ac3914811deee814f9761b3Timo Sirainen self._api_uninstall(api_obj, ["example_pkg"])
b225c3c65f360d7b833f09f9b2fb3035ed5ea600Timo Sirainen
299183fbb6ec5d0828a0880da372540421ac4665Timo Sirainen for i in range(1, repeat):
299183fbb6ec5d0828a0880da372540421ac4665Timo Sirainen self._api_install(api_obj, ["example_pkg"])
b397a802ec245a9169dab6b62efa4f7f877c07f6Timo Sirainen self._run_local_tests(api_obj)
b397a802ec245a9169dab6b62efa4f7f877c07f6Timo Sirainen self._api_uninstall(api_obj, ["example_pkg"])
b397a802ec245a9169dab6b62efa4f7f877c07f6Timo Sirainen api_obj.reset()
b397a802ec245a9169dab6b62efa4f7f877c07f6Timo Sirainen self._run_local_empty_tests(api_obj)
b397a802ec245a9169dab6b62efa4f7f877c07f6Timo Sirainen
b397a802ec245a9169dab6b62efa4f7f877c07f6Timo Sirainen def test_050_local_case_sensitive(self):
5edfc0f1c3c55e906d8316d9cdeaa3b0c7000c19Timo Sirainen """Test local case sensitive search"""
5edfc0f1c3c55e906d8316d9cdeaa3b0c7000c19Timo Sirainen durl = self.dc.get_depot_url()
eb276c05bf6b0a383c772d61e31cf09a8dbd36c7Timo Sirainen api_obj = self.image_create(durl)
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._api_install(api_obj, ["example_pkg@1.0"])
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._search_op(api_obj, False, "fooo", set(), True)
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._search_op(api_obj, False, "fo*", set(), True)
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._search_op(api_obj, False, "bar", set(), True)
b225c3c65f360d7b833f09f9b2fb3035ed5ea600Timo Sirainen self._search_op(api_obj, False, "FOOO", self.res_local_foo,
b225c3c65f360d7b833f09f9b2fb3035ed5ea600Timo Sirainen True)
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen self._search_op(api_obj, False, "bAr", self.res_local_foo, True)
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen
9aa52288a4b53186d81b0ec9afa7d9e0a8ee8753Timo Sirainen def test_060_missing_files(self):
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen """Test to check for stack trace when files missing.
98c1cf256927e254f0c092acd2ddcd7ea50bd009Timo Sirainen Bug 2753"""
f7d43647acc6dc80064c8c4cacf5bf86f754c530Timo Sirainen durl = self.dc.get_depot_url()
98c1cf256927e254f0c092acd2ddcd7ea50bd009Timo Sirainen api_obj = self.image_create(durl)
98c1cf256927e254f0c092acd2ddcd7ea50bd009Timo Sirainen
98c1cf256927e254f0c092acd2ddcd7ea50bd009Timo Sirainen self._api_install(api_obj, ["example_pkg@1.0"])
db7c9201c88e3d9bee10485194ee5b0c67249916Timo Sirainen
299183fbb6ec5d0828a0880da372540421ac4665Timo Sirainen index_dir = os.path.join(self.img_path, "var","pkg","index")
9aa52288a4b53186d81b0ec9afa7d9e0a8ee8753Timo Sirainen
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen first = True
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen for d in query_parser.TermQuery._get_gdd(index_dir).values():
af6d4a24cb6d18e50d172540cf49b1448a6f9872Timo Sirainen orig_fn = d.get_file_name()
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen orig_path = os.path.join(index_dir, orig_fn)
b225c3c65f360d7b833f09f9b2fb3035ed5ea600Timo Sirainen dest_fn = orig_fn + "TMP"
1d3f7c1278168d5b1cbfa9a2cc9929a0909056b4Timo Sirainen dest_path = os.path.join(index_dir, dest_fn)
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen portable.rename(orig_path, dest_path)
7d207b1e77a7b5e3fda640e353acfc86d261fedfTimo Sirainen self.assertRaises(api_errors.InconsistentIndexException,
b225c3c65f360d7b833f09f9b2fb3035ed5ea600Timo Sirainen self._search_op, api_obj, False,
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen "exam:::example_pkg", [])
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen if first:
8fcff4c5b52f24d9c681805fdf06b486f1d0fcbeTimo Sirainen # Run the shell version once to check that no
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen # stack trace happens.
e05ea8311ae16687295048e88ca205dfe29fbcbfTimo Sirainen self.pkg("search -l 'exam:::example_pkg'",
e05ea8311ae16687295048e88ca205dfe29fbcbfTimo Sirainen exit=1)
e05ea8311ae16687295048e88ca205dfe29fbcbfTimo Sirainen first = False
e05ea8311ae16687295048e88ca205dfe29fbcbfTimo Sirainen portable.rename(dest_path, orig_path)
e05ea8311ae16687295048e88ca205dfe29fbcbfTimo Sirainen self._search_op(api_obj, False, "exam:::example_pkg",
e05ea8311ae16687295048e88ca205dfe29fbcbfTimo Sirainen self.res_local_pkg)
e05ea8311ae16687295048e88ca205dfe29fbcbfTimo Sirainen
e05ea8311ae16687295048e88ca205dfe29fbcbfTimo Sirainen def test_070_mismatched_versions(self):
e05ea8311ae16687295048e88ca205dfe29fbcbfTimo Sirainen """Test to check for stack trace when files missing.
e05ea8311ae16687295048e88ca205dfe29fbcbfTimo Sirainen Bug 2753"""
e05ea8311ae16687295048e88ca205dfe29fbcbfTimo Sirainen durl = self.dc.get_depot_url()
e05ea8311ae16687295048e88ca205dfe29fbcbfTimo Sirainen api_obj = self.image_create(durl)
e05ea8311ae16687295048e88ca205dfe29fbcbfTimo Sirainen self._api_install(api_obj, ["example_pkg@1.0"])
e05ea8311ae16687295048e88ca205dfe29fbcbfTimo Sirainen
e05ea8311ae16687295048e88ca205dfe29fbcbfTimo Sirainen index_dir = os.path.join(self.img_path, "var","pkg","index")
e05ea8311ae16687295048e88ca205dfe29fbcbfTimo Sirainen
e05ea8311ae16687295048e88ca205dfe29fbcbfTimo Sirainen first = True
e05ea8311ae16687295048e88ca205dfe29fbcbfTimo Sirainen
e05ea8311ae16687295048e88ca205dfe29fbcbfTimo Sirainen for d in query_parser.TermQuery._get_gdd(index_dir).values():
e05ea8311ae16687295048e88ca205dfe29fbcbfTimo Sirainen orig_fn = d.get_file_name()
e05ea8311ae16687295048e88ca205dfe29fbcbfTimo Sirainen orig_path = os.path.join(index_dir, orig_fn)
e05ea8311ae16687295048e88ca205dfe29fbcbfTimo Sirainen dest_fn = orig_fn + "TMP"
e05ea8311ae16687295048e88ca205dfe29fbcbfTimo Sirainen dest_path = os.path.join(index_dir, dest_fn)
e05ea8311ae16687295048e88ca205dfe29fbcbfTimo Sirainen shutil.copy(orig_path, dest_path)
e05ea8311ae16687295048e88ca205dfe29fbcbfTimo Sirainen self._overwrite_version_number(orig_path)
e05ea8311ae16687295048e88ca205dfe29fbcbfTimo Sirainen api_obj.reset()
e05ea8311ae16687295048e88ca205dfe29fbcbfTimo Sirainen self.assertRaises(api_errors.InconsistentIndexException,
e05ea8311ae16687295048e88ca205dfe29fbcbfTimo Sirainen self._search_op, api_obj, False,
e05ea8311ae16687295048e88ca205dfe29fbcbfTimo Sirainen "exam:::example_pkg", [])
e05ea8311ae16687295048e88ca205dfe29fbcbfTimo Sirainen if first:
e05ea8311ae16687295048e88ca205dfe29fbcbfTimo Sirainen # Run the shell version once to check that no
e05ea8311ae16687295048e88ca205dfe29fbcbfTimo Sirainen # stack trace happens.
dc42ce2d44e84d9d05a9310c11f8764f319eb3abTimo Sirainen self.pkg("search -l 'exam:::example_pkg'",
dc42ce2d44e84d9d05a9310c11f8764f319eb3abTimo Sirainen exit=1)
8166e8a706078efc71923719ca285e84902883c0Timo Sirainen first = False
dc42ce2d44e84d9d05a9310c11f8764f319eb3abTimo Sirainen portable.rename(dest_path, orig_path)
06fc140d5f0b03524e63a15d45d1cdc8b691372cTimo Sirainen self._search_op(api_obj, False, "example_pkg",
06fc140d5f0b03524e63a15d45d1cdc8b691372cTimo Sirainen self.res_local_pkg)
06fc140d5f0b03524e63a15d45d1cdc8b691372cTimo Sirainen self._overwrite_version_number(orig_path)
06fc140d5f0b03524e63a15d45d1cdc8b691372cTimo Sirainen self.assertRaises(
06fc140d5f0b03524e63a15d45d1cdc8b691372cTimo Sirainen api_errors.WrapSuccessfulIndexingException,
06fc140d5f0b03524e63a15d45d1cdc8b691372cTimo Sirainen self._api_uninstall, api_obj, ["example_pkg"])
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen api_obj.reset()
fcfd317f7eb1f0216764c75c5fab3555020552d4Timo Sirainen self._search_op(api_obj, False, "example_pkg", set())
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._overwrite_version_number(orig_path)
aa38d1a0945f0bc13a225d043f53fad2eec666b1Timo Sirainen self.assertRaises(
fcfd317f7eb1f0216764c75c5fab3555020552d4Timo Sirainen api_errors.WrapSuccessfulIndexingException,
9e59a1f3f095b3099478562cf3f3970a24736970Timo Sirainen self._api_install, api_obj, ["example_pkg"])
178511b57faa7c3f8203dd8b7e4059d00cbfc23aTimo Sirainen api_obj.reset()
b3febb0933fdce10394d25093e23ce0a5aadddd3Timo Sirainen self._search_op(api_obj, False, "example_pkg",
b3febb0933fdce10394d25093e23ce0a5aadddd3Timo Sirainen self.res_local_pkg)
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen
fcfd317f7eb1f0216764c75c5fab3555020552d4Timo Sirainen ffh = ss.IndexStoreSetHash(ss.FULL_FMRI_HASH_FILE)
aa38d1a0945f0bc13a225d043f53fad2eec666b1Timo Sirainen ffh_path = os.path.join(index_dir, ffh.get_file_name())
fcfd317f7eb1f0216764c75c5fab3555020552d4Timo Sirainen dest_fh, dest_path = tempfile.mkstemp()
fcfd317f7eb1f0216764c75c5fab3555020552d4Timo Sirainen shutil.copy(ffh_path, dest_path)
b225c3c65f360d7b833f09f9b2fb3035ed5ea600Timo Sirainen self._overwrite_hash(ffh_path)
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen self.assertRaises(api_errors.IncorrectIndexFileHash,
b225c3c65f360d7b833f09f9b2fb3035ed5ea600Timo Sirainen self._search_op, api_obj, False, "example_pkg", set())
e06c0b65c16ccce69bbee009ead14d7d3d17a256Timo Sirainen # Run the shell version of the test to check for a stack trace.
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self.pkg("search -l 'exam:::example_pkg'", exit=1)
e06c0b65c16ccce69bbee009ead14d7d3d17a256Timo Sirainen portable.rename(dest_path, ffh_path)
aa38d1a0945f0bc13a225d043f53fad2eec666b1Timo Sirainen self._search_op(api_obj, False, "example_pkg",
e06c0b65c16ccce69bbee009ead14d7d3d17a256Timo Sirainen self.res_local_pkg)
b225c3c65f360d7b833f09f9b2fb3035ed5ea600Timo Sirainen self._overwrite_hash(ffh_path)
b225c3c65f360d7b833f09f9b2fb3035ed5ea600Timo Sirainen self.assertRaises(api_errors.WrapSuccessfulIndexingException,
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen self._api_uninstall, api_obj, ["example_pkg"])
b225c3c65f360d7b833f09f9b2fb3035ed5ea600Timo Sirainen self._search_op(api_obj, False, "example_pkg", set())
e06c0b65c16ccce69bbee009ead14d7d3d17a256Timo Sirainen
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen def test_080_weird_patterns(self):
e06c0b65c16ccce69bbee009ead14d7d3d17a256Timo Sirainen """Test strange patterns to ensure they're handled correctly"""
aa38d1a0945f0bc13a225d043f53fad2eec666b1Timo Sirainen durl = self.dc.get_depot_url()
e06c0b65c16ccce69bbee009ead14d7d3d17a256Timo Sirainen api_obj = self.image_create(durl)
e06c0b65c16ccce69bbee009ead14d7d3d17a256Timo Sirainen
ed14c2db5436d6d89aa65bc8e09af0c316359553Timo Sirainen self._search_op(api_obj, True, "[*]", self.res_remote_weird)
ed14c2db5436d6d89aa65bc8e09af0c316359553Timo Sirainen self._search_op(api_obj, True, "[?]", self.res_remote_weird)
1d3f7c1278168d5b1cbfa9a2cc9929a0909056b4Timo Sirainen self._search_op(api_obj, True, "[[]", self.res_remote_weird)
1d3f7c1278168d5b1cbfa9a2cc9929a0909056b4Timo Sirainen self._search_op(api_obj, True, "[]]", self.res_remote_weird)
1d3f7c1278168d5b1cbfa9a2cc9929a0909056b4Timo Sirainen self._search_op(api_obj, True, "FO[O]O", self.res_remote_foo)
1d3f7c1278168d5b1cbfa9a2cc9929a0909056b4Timo Sirainen self._search_op(api_obj, True, "FO[?O]O", self.res_remote_foo)
1d3f7c1278168d5b1cbfa9a2cc9929a0909056b4Timo Sirainen self._search_op(api_obj, True, "FO[*O]O", self.res_remote_foo)
1d3f7c1278168d5b1cbfa9a2cc9929a0909056b4Timo Sirainen self._search_op(api_obj, True, "FO[]O]O", self.res_remote_foo)
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen def test_090_bug_7660(self):
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen """Test that installing a package doesn't prevent searching on
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen package names from working on previously installed packages."""
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen durl = self.dc.get_depot_url()
e06c0b65c16ccce69bbee009ead14d7d3d17a256Timo Sirainen api_obj = self.image_create(durl)
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen tmp_dir = os.path.join(self.img_path, "var", "pkg", "index",
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen "TMP")
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._api_install(api_obj, ["example_pkg"])
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen api_obj.rebuild_search_index()
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._api_install(api_obj, ["fat"])
39775ad03c459efe64cce924658da5094ba417e1Timo Sirainen self.assert_(not os.path.exists(tmp_dir))
343a527f805ca5cce78496b959d6def70e5d0cd4Timo Sirainen self._run_local_tests(api_obj)
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen
022412398e56a8f31ef111cfd7271498d64af9a9Timo Sirainen def test_100_bug_6712_i386(self):
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen """Install one package, and run the search suite."""
734f2ff794505007ac7310af12e1adef5643c36eTimo Sirainen durl = self.dc.get_depot_url()
c263e92d73889da530b308c9ab28b4b74031550eTimo Sirainen
f6699a08521aacc4c2bb5b6175691dad5f715f8cTimo Sirainen variants = { "variant.arch": "i386" }
f6699a08521aacc4c2bb5b6175691dad5f715f8cTimo Sirainen api_obj = self.image_create(durl, variants=variants)
f6699a08521aacc4c2bb5b6175691dad5f715f8cTimo Sirainen remote = True
f6699a08521aacc4c2bb5b6175691dad5f715f8cTimo Sirainen
28b30e9bd1a0a8b9019124abd821cb2989a03910Timo Sirainen self._search_op(api_obj, remote, "fat:::*",
f6699a08521aacc4c2bb5b6175691dad5f715f8cTimo Sirainen self.res_remote_fat10_star)
f6699a08521aacc4c2bb5b6175691dad5f715f8cTimo Sirainen self._api_install(api_obj, ["fat"])
f0569d9fbb25c8437760be69f194595a841ad711Timo Sirainen remote = False
c263e92d73889da530b308c9ab28b4b74031550eTimo Sirainen self._search_op(api_obj, remote, "fat:::*",
aa38d1a0945f0bc13a225d043f53fad2eec666b1Timo Sirainen self.res_local_fat10_i386_star)
a393d9d6dabdc46cf724f8cb004a652b4036d53dTimo Sirainen
c263e92d73889da530b308c9ab28b4b74031550eTimo Sirainen def test_110_bug_6712_sparc(self):
c263e92d73889da530b308c9ab28b4b74031550eTimo Sirainen """Install one package, and run the search suite."""
c263e92d73889da530b308c9ab28b4b74031550eTimo Sirainen durl = self.dc.get_depot_url()
c263e92d73889da530b308c9ab28b4b74031550eTimo Sirainen
325f4573edfa5b751832ac01023f3e81be992bf0Timo Sirainen variants = { "variant.arch": "sparc" }
9e59a1f3f095b3099478562cf3f3970a24736970Timo Sirainen api_obj = self.image_create(durl, variants=variants)
a2637488c8d514ec1ac3914811deee814f9761b3Timo Sirainen remote = True
b6d817f0effeff645aadc01fd468a7d4084ba1f2Timo Sirainen
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._search_op(api_obj, remote, "fat:::*",
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self.res_remote_fat10_star)
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen self._api_install(api_obj, ["fat"])
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen remote = False
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._search_op(api_obj, remote, "fat:::*",
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self.res_local_fat10_sparc_star)
b225c3c65f360d7b833f09f9b2fb3035ed5ea600Timo Sirainen
a486ed03dce069ff60ab5a65d0ae24a1862f22fcTimo Sirainen def test_120_bug_3046(self):
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen """Checks if directories ending in / break the indexer."""
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen durl = self.dc.get_depot_url()
7d207b1e77a7b5e3fda640e353acfc86d261fedfTimo Sirainen self.pkgsend_bulk(durl, self.bad_pkg10)
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen api_obj = self.image_create(durl)
34d2ee1fa2b299267fcefd378f80690e7f601dfbTimo Sirainen
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen self._search_op(api_obj, True, "foo", set())
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen self._search_op(api_obj, True, "/", set())
299183fbb6ec5d0828a0880da372540421ac4665Timo Sirainen
e05ea8311ae16687295048e88ca205dfe29fbcbfTimo Sirainen def test_130_bug_1059(self):
9d0e1fa945103f2875cdf6d18b2013809f566ea7Timo Sirainen """Checks whether the fallback of removing the image root works.
e05ea8311ae16687295048e88ca205dfe29fbcbfTimo Sirainen Also tests whether multiple queries submitted via the api work.
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen """
6060b7c8edf8fce73470d0df6a2479b69b01c537Timo Sirainen durl = self.dc.get_depot_url()
6060b7c8edf8fce73470d0df6a2479b69b01c537Timo Sirainen api_obj = self.image_create(durl)
6060b7c8edf8fce73470d0df6a2479b69b01c537Timo Sirainen
6060b7c8edf8fce73470d0df6a2479b69b01c537Timo Sirainen ip = self.get_img_path()
6060b7c8edf8fce73470d0df6a2479b69b01c537Timo Sirainen if not ip.endswith("/"):
6060b7c8edf8fce73470d0df6a2479b69b01c537Timo Sirainen ip += "/"
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen # Do remote searches
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen self._run_remove_root_search(self._search_op_multi, True,
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen api_obj, ip)
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen self._api_install(api_obj, ["example_pkg"])
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen # Do local searches
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen self._run_remove_root_search(self._search_op_multi, False,
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen api_obj, ip)
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen index_dir = os.path.join(self.img_path, "var","pkg","index")
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen shutil.rmtree(index_dir)
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen # Do slow local searches
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen self._run_remove_root_search(self._search_op_slow_multi, False,
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen api_obj, ip)
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen def test_bug_2849(self):
345212e8f61ebf14ff4f80df26df9e655eb5121eTimo Sirainen """Checks if things with spaces break the indexer."""
abe8230dd1dd37d7ccf0163100e934bb5e658c20Timo Sirainen durl = self.dc.get_depot_url()
abe8230dd1dd37d7ccf0163100e934bb5e658c20Timo Sirainen self.pkgsend_bulk(durl, self.space_pkg10)
b6d817f0effeff645aadc01fd468a7d4084ba1f2Timo Sirainen api_obj = self.image_create(durl)
a486ed03dce069ff60ab5a65d0ae24a1862f22fcTimo Sirainen
b6d817f0effeff645aadc01fd468a7d4084ba1f2Timo Sirainen self._api_install(api_obj, ["space_pkg"])
a486ed03dce069ff60ab5a65d0ae24a1862f22fcTimo Sirainen time.sleep(1)
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen self.pkgsend_bulk(durl, self.space_pkg10, optional=False)
b3febb0933fdce10394d25093e23ce0a5aadddd3Timo Sirainen api_obj.refresh(immediate=True)
b6d817f0effeff645aadc01fd468a7d4084ba1f2Timo Sirainen
b6d817f0effeff645aadc01fd468a7d4084ba1f2Timo Sirainen self._api_install(api_obj, ["space_pkg"])
b6d817f0effeff645aadc01fd468a7d4084ba1f2Timo Sirainen
b6d817f0effeff645aadc01fd468a7d4084ba1f2Timo Sirainen remote = False
b6d817f0effeff645aadc01fd468a7d4084ba1f2Timo Sirainen self._search_op(api_obj, remote, 'with', set())
b6d817f0effeff645aadc01fd468a7d4084ba1f2Timo Sirainen self._search_op(api_obj, remote, 'with*',
b6d817f0effeff645aadc01fd468a7d4084ba1f2Timo Sirainen self.res_space_with_star)
b6d817f0effeff645aadc01fd468a7d4084ba1f2Timo Sirainen self._search_op(api_obj, remote, '*space',
b6d817f0effeff645aadc01fd468a7d4084ba1f2Timo Sirainen self.res_space_space_star)
b6d817f0effeff645aadc01fd468a7d4084ba1f2Timo Sirainen self._search_op(api_obj, remote, 'space', set())
b6d817f0effeff645aadc01fd468a7d4084ba1f2Timo Sirainen self._search_op(api_obj, remote, 'unique_dir',
b6d817f0effeff645aadc01fd468a7d4084ba1f2Timo Sirainen self.res_space_unique)
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen remote = True
a486ed03dce069ff60ab5a65d0ae24a1862f22fcTimo Sirainen self._search_op(api_obj, remote, 'with', set())
9aa52288a4b53186d81b0ec9afa7d9e0a8ee8753Timo Sirainen self._search_op(api_obj, remote, 'with*',
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen self.res_space_with_star)
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._search_op(api_obj, remote, '*space',
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self.res_space_space_star)
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._search_op(api_obj, remote, 'space', set())
db7c9201c88e3d9bee10485194ee5b0c67249916Timo Sirainen time.sleep(1)
db7c9201c88e3d9bee10485194ee5b0c67249916Timo Sirainen self.pkgsend_bulk(durl, self.space_pkg10, optional=False)
db7c9201c88e3d9bee10485194ee5b0c67249916Timo Sirainen # Need to add install of subsequent package and
022412398e56a8f31ef111cfd7271498d64af9a9Timo Sirainen # local side search as well as remote
db7c9201c88e3d9bee10485194ee5b0c67249916Timo Sirainen self._search_op(api_obj, remote, 'with', set())
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._search_op(api_obj, remote, 'with*',
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self.res_space_with_star)
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._search_op(api_obj, remote, '*space',
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self.res_space_space_star)
9aa52288a4b53186d81b0ec9afa7d9e0a8ee8753Timo Sirainen self._search_op(api_obj, remote, 'space', set())
9aa52288a4b53186d81b0ec9afa7d9e0a8ee8753Timo Sirainen self._search_op(api_obj, remote, 'unique_dir',
6ef7e31619edfaa17ed044b45861d106a86191efTimo Sirainen self.res_space_unique)
32d9a75612a5df455e4169b56538bb31dfe359e4Timo Sirainen
32d9a75612a5df455e4169b56538bb31dfe359e4Timo Sirainen def test_bug_2863(self):
32d9a75612a5df455e4169b56538bb31dfe359e4Timo Sirainen """Check that disabling indexing works as expected"""
32d9a75612a5df455e4169b56538bb31dfe359e4Timo Sirainen durl = self.dc.get_depot_url()
32d9a75612a5df455e4169b56538bb31dfe359e4Timo Sirainen api_obj = self.image_create(durl)
32d9a75612a5df455e4169b56538bb31dfe359e4Timo Sirainen
32d9a75612a5df455e4169b56538bb31dfe359e4Timo Sirainen self._check_no_index()
32d9a75612a5df455e4169b56538bb31dfe359e4Timo Sirainen self._api_install(api_obj, ["example_pkg"], update_index=False)
0b17b95357d5d73d941f1eb4ca9fc543bc510e42Timo Sirainen self._check_no_index()
0b17b95357d5d73d941f1eb4ca9fc543bc510e42Timo Sirainen api_obj.rebuild_search_index()
04ab375449dd97eed50ada88dd0df2abab01cfeeTimo Sirainen self._run_local_tests(api_obj)
04ab375449dd97eed50ada88dd0df2abab01cfeeTimo Sirainen self._api_uninstall(api_obj, ["example_pkg"], update_index=False)
0b17b95357d5d73d941f1eb4ca9fc543bc510e42Timo Sirainen # Running empty test because search will notice the index
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen # does not match the installed packages and complain.
04ab375449dd97eed50ada88dd0df2abab01cfeeTimo Sirainen self.assertRaises(api_errors.IncorrectIndexFileHash,
7d207b1e77a7b5e3fda640e353acfc86d261fedfTimo Sirainen self._search_op, api_obj, False, "example_pkg", set())
04ab375449dd97eed50ada88dd0df2abab01cfeeTimo Sirainen api_obj.rebuild_search_index()
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen self._run_local_empty_tests(api_obj)
04ab375449dd97eed50ada88dd0df2abab01cfeeTimo Sirainen self._api_install(api_obj, ["example_pkg"])
04ab375449dd97eed50ada88dd0df2abab01cfeeTimo Sirainen self._run_local_tests(api_obj)
04ab375449dd97eed50ada88dd0df2abab01cfeeTimo Sirainen self.pkgsend_bulk(durl, self.example_pkg11)
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen api_obj.refresh(immediate=True)
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen self._api_image_update(api_obj, update_index=False)
04ab375449dd97eed50ada88dd0df2abab01cfeeTimo Sirainen # Running empty test because search will notice the index
04ab375449dd97eed50ada88dd0df2abab01cfeeTimo Sirainen # does not match the installed packages and complain.
04ab375449dd97eed50ada88dd0df2abab01cfeeTimo Sirainen self.assertRaises(api_errors.IncorrectIndexFileHash,
0b17b95357d5d73d941f1eb4ca9fc543bc510e42Timo Sirainen self._search_op, api_obj, False, "example_pkg", set())
32d9a75612a5df455e4169b56538bb31dfe359e4Timo Sirainen api_obj.rebuild_search_index()
0b17b95357d5d73d941f1eb4ca9fc543bc510e42Timo Sirainen self._run_local_tests_example11_installed(api_obj)
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen self._api_uninstall(api_obj, ["example_pkg"],
04ab375449dd97eed50ada88dd0df2abab01cfeeTimo Sirainen update_index=False)
04ab375449dd97eed50ada88dd0df2abab01cfeeTimo Sirainen # Running empty test because search will notice the index
04ab375449dd97eed50ada88dd0df2abab01cfeeTimo Sirainen # does not match the installed packages and complain.
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen self.assertRaises(api_errors.IncorrectIndexFileHash,
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen self._search_op, api_obj, False, "example_pkg", set())
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen api_obj.rebuild_search_index()
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen self._run_local_empty_tests(api_obj)
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen
e05ea8311ae16687295048e88ca205dfe29fbcbfTimo Sirainen def test_bug_2989_1(self):
e05ea8311ae16687295048e88ca205dfe29fbcbfTimo Sirainen durl = self.dc.get_depot_url()
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen
e05ea8311ae16687295048e88ca205dfe29fbcbfTimo Sirainen for f in self._dir_restore_functions:
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen api_obj = self.image_create(durl)
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen api_obj.rebuild_search_index()
0b17b95357d5d73d941f1eb4ca9fc543bc510e42Timo Sirainen
0b17b95357d5d73d941f1eb4ca9fc543bc510e42Timo Sirainen index_dir, index_dir_tmp = self._get_index_dirs()
ccb70ccfd9a25e490aab46d15d9b8323ad9ea3bfTimo Sirainen
ccb70ccfd9a25e490aab46d15d9b8323ad9ea3bfTimo Sirainen shutil.copytree(index_dir, index_dir_tmp)
022412398e56a8f31ef111cfd7271498d64af9a9Timo Sirainen
ccb70ccfd9a25e490aab46d15d9b8323ad9ea3bfTimo Sirainen self._api_install(api_obj, ["example_pkg"])
d5cebe7f98e63d4e2822863ef2faa4971e8b3a5dTimo Sirainen
648d24583c1574441c4fa0331a90bd4d6e7996c5Timo Sirainen f(index_dir, index_dir_tmp)
648d24583c1574441c4fa0331a90bd4d6e7996c5Timo Sirainen
d5cebe7f98e63d4e2822863ef2faa4971e8b3a5dTimo Sirainen self.assertRaises(
d5cebe7f98e63d4e2822863ef2faa4971e8b3a5dTimo Sirainen api_errors.WrapSuccessfulIndexingException,
ccb70ccfd9a25e490aab46d15d9b8323ad9ea3bfTimo Sirainen self._api_uninstall, api_obj, ["example_pkg"])
ccb70ccfd9a25e490aab46d15d9b8323ad9ea3bfTimo Sirainen
ccb70ccfd9a25e490aab46d15d9b8323ad9ea3bfTimo Sirainen self.image_destroy()
4b41116563110d00330896a568eff1078c382827Timo Sirainen
9aa52288a4b53186d81b0ec9afa7d9e0a8ee8753Timo Sirainen def test_bug_2989_2(self):
9aa52288a4b53186d81b0ec9afa7d9e0a8ee8753Timo Sirainen durl = self.dc.get_depot_url()
0b17b95357d5d73d941f1eb4ca9fc543bc510e42Timo Sirainen
aa0647f2debf0d48d504a321186f66c85596aaf4Timo Sirainen for f in self._dir_restore_functions:
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen api_obj = self.image_create(durl)
2d39dc1a453546892109b35c0d9770369011a13dTimo Sirainen
63a61b7a739ae0f3f520215137d9c50f94d0f34fTimo Sirainen self._api_install(api_obj, ["example_pkg"])
dcd50ecbfe796bd76f2d63483c534cc0e4e94164Timo Sirainen
dcd50ecbfe796bd76f2d63483c534cc0e4e94164Timo Sirainen index_dir, index_dir_tmp = self._get_index_dirs()
ccb70ccfd9a25e490aab46d15d9b8323ad9ea3bfTimo Sirainen
7c6ad06e2bed011e3c0425bf1ceb5df3dc33b638Timo Sirainen shutil.copytree(index_dir, index_dir_tmp)
ccb70ccfd9a25e490aab46d15d9b8323ad9ea3bfTimo Sirainen
ccb70ccfd9a25e490aab46d15d9b8323ad9ea3bfTimo Sirainen self._api_install(api_obj, ["another_pkg"])
9aa52288a4b53186d81b0ec9afa7d9e0a8ee8753Timo Sirainen
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen f(index_dir, index_dir_tmp)
d252f81a2ff1bdd5439f9d2b3df715b70a4bcd3dTimo Sirainen
d252f81a2ff1bdd5439f9d2b3df715b70a4bcd3dTimo Sirainen self.assertRaises(
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen api_errors.WrapSuccessfulIndexingException,
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen self._api_uninstall, api_obj, ["another_pkg"])
63a61b7a739ae0f3f520215137d9c50f94d0f34fTimo Sirainen
63a61b7a739ae0f3f520215137d9c50f94d0f34fTimo Sirainen self.image_destroy()
63a61b7a739ae0f3f520215137d9c50f94d0f34fTimo Sirainen
6060b7c8edf8fce73470d0df6a2479b69b01c537Timo Sirainen def test_bug_2989_3(self):
6060b7c8edf8fce73470d0df6a2479b69b01c537Timo Sirainen durl = self.dc.get_depot_url()
d9de52132072d80b8c268094b879c0ef5a108db3Timo Sirainen self.pkgsend_bulk(durl, self.example_pkg11)
345212e8f61ebf14ff4f80df26df9e655eb5121eTimo Sirainen
6ef7e31619edfaa17ed044b45861d106a86191efTimo Sirainen for f in self._dir_restore_functions:
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen api_obj = self.image_create(durl)
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen self._api_install(api_obj, ["example_pkg@1.0,5.11-0"])
345212e8f61ebf14ff4f80df26df9e655eb5121eTimo Sirainen
345212e8f61ebf14ff4f80df26df9e655eb5121eTimo Sirainen index_dir, index_dir_tmp = self._get_index_dirs()
63a61b7a739ae0f3f520215137d9c50f94d0f34fTimo Sirainen
345212e8f61ebf14ff4f80df26df9e655eb5121eTimo Sirainen shutil.copytree(index_dir, index_dir_tmp)
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen
d9de52132072d80b8c268094b879c0ef5a108db3Timo Sirainen self._api_install(api_obj, ["example_pkg"])
d9de52132072d80b8c268094b879c0ef5a108db3Timo Sirainen
d9de52132072d80b8c268094b879c0ef5a108db3Timo Sirainen f(index_dir, index_dir_tmp)
d9de52132072d80b8c268094b879c0ef5a108db3Timo Sirainen
d9de52132072d80b8c268094b879c0ef5a108db3Timo Sirainen self.assertRaises(
d9de52132072d80b8c268094b879c0ef5a108db3Timo Sirainen api_errors.WrapSuccessfulIndexingException,
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen self._api_uninstall, api_obj, ["example_pkg"])
d9de52132072d80b8c268094b879c0ef5a108db3Timo Sirainen
d9de52132072d80b8c268094b879c0ef5a108db3Timo Sirainen self.image_destroy()
d9de52132072d80b8c268094b879c0ef5a108db3Timo Sirainen
f2b79667fc7a8f7c2c72cad18bd71d49730e36f6Timo Sirainen def test_bug_2989_4(self):
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen durl = self.dc.get_depot_url()
f2b79667fc7a8f7c2c72cad18bd71d49730e36f6Timo Sirainen self.pkgsend_bulk(durl, self.example_pkg11)
7e0bb2b365cc38645313a3513fa79bd32d34b63cTimo Sirainen
d9de52132072d80b8c268094b879c0ef5a108db3Timo Sirainen for f in self._dir_restore_functions:
d9de52132072d80b8c268094b879c0ef5a108db3Timo Sirainen api_obj = self.image_create(durl)
d9de52132072d80b8c268094b879c0ef5a108db3Timo Sirainen
d9de52132072d80b8c268094b879c0ef5a108db3Timo Sirainen self._api_install(api_obj, ["another_pkg"])
d9de52132072d80b8c268094b879c0ef5a108db3Timo Sirainen
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen index_dir, index_dir_tmp = self._get_index_dirs()
30975737820f5855e2c26d81b574ae5f03a05407Timo Sirainen
30975737820f5855e2c26d81b574ae5f03a05407Timo Sirainen shutil.copytree(index_dir, index_dir_tmp)
30975737820f5855e2c26d81b574ae5f03a05407Timo Sirainen
30975737820f5855e2c26d81b574ae5f03a05407Timo Sirainen self._api_install(api_obj, ["example_pkg@1.0,5.11-0"])
30975737820f5855e2c26d81b574ae5f03a05407Timo Sirainen
30975737820f5855e2c26d81b574ae5f03a05407Timo Sirainen f(index_dir, index_dir_tmp)
30975737820f5855e2c26d81b574ae5f03a05407Timo Sirainen
30975737820f5855e2c26d81b574ae5f03a05407Timo Sirainen self.assertRaises(
30975737820f5855e2c26d81b574ae5f03a05407Timo Sirainen api_errors.WrapSuccessfulIndexingException,
30975737820f5855e2c26d81b574ae5f03a05407Timo Sirainen self._api_image_update, api_obj)
30975737820f5855e2c26d81b574ae5f03a05407Timo Sirainen
d9de52132072d80b8c268094b879c0ef5a108db3Timo Sirainen self.image_destroy()
d9de52132072d80b8c268094b879c0ef5a108db3Timo Sirainen
2d39dc1a453546892109b35c0d9770369011a13dTimo Sirainen def test_bug_4239(self):
2d39dc1a453546892109b35c0d9770369011a13dTimo Sirainen """Tests whether categories are indexed and searched for
2d39dc1a453546892109b35c0d9770369011a13dTimo Sirainen correctly."""
2d39dc1a453546892109b35c0d9770369011a13dTimo Sirainen
2d39dc1a453546892109b35c0d9770369011a13dTimo Sirainen def _run_cat_tests(self, remote):
8f8315e4b4e27ead12dd1c3da65bf4dee3762f18Timo Sirainen self._search_op(api_obj, remote, "System",
8f8315e4b4e27ead12dd1c3da65bf4dee3762f18Timo Sirainen self.res_cat_pkg10, case_sensitive=False)
8f8315e4b4e27ead12dd1c3da65bf4dee3762f18Timo Sirainen self._search_op(api_obj, remote, "Security",
8f8315e4b4e27ead12dd1c3da65bf4dee3762f18Timo Sirainen self.res_cat_pkg10, case_sensitive=False)
8f8315e4b4e27ead12dd1c3da65bf4dee3762f18Timo Sirainen self._search_op(api_obj, remote, "System/Security",
8f8315e4b4e27ead12dd1c3da65bf4dee3762f18Timo Sirainen self.res_cat_pkg10, case_sensitive=False)
8f8315e4b4e27ead12dd1c3da65bf4dee3762f18Timo Sirainen self._search_op(api_obj, remote, "Other/Category",
8f8315e4b4e27ead12dd1c3da65bf4dee3762f18Timo Sirainen self.res_cat_pkg10_2, case_sensitive=False)
d6a1fa1d65c6d1996937802c2482c0f14dd821a7Timo Sirainen self._search_op(api_obj, remote, "Other",
8f8315e4b4e27ead12dd1c3da65bf4dee3762f18Timo Sirainen self.res_cat_pkg10_2, case_sensitive=False)
8f8315e4b4e27ead12dd1c3da65bf4dee3762f18Timo Sirainen self._search_op(api_obj, remote, "Category",
0b17b95357d5d73d941f1eb4ca9fc543bc510e42Timo Sirainen self.res_cat_pkg10_2, case_sensitive=False)
0b17b95357d5d73d941f1eb4ca9fc543bc510e42Timo Sirainen
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen def _run_cat2_tests(self, remote):
d9de52132072d80b8c268094b879c0ef5a108db3Timo Sirainen self._search_op(api_obj, remote, "Applications",
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen self.res_cat2_pkg10, case_sensitive=False)
9aa52288a4b53186d81b0ec9afa7d9e0a8ee8753Timo Sirainen self._search_op(api_obj, True, "Sound",
0b17b95357d5d73d941f1eb4ca9fc543bc510e42Timo Sirainen self.res_cat2_pkg10, case_sensitive=False)
9aa52288a4b53186d81b0ec9afa7d9e0a8ee8753Timo Sirainen self._search_op(api_obj, remote, "Sound and Video",
1d3f7c1278168d5b1cbfa9a2cc9929a0909056b4Timo Sirainen self.res_cat2_pkg10, case_sensitive=False)
1d3f7c1278168d5b1cbfa9a2cc9929a0909056b4Timo Sirainen self._search_op(api_obj, remote, "Sound*",
1d3f7c1278168d5b1cbfa9a2cc9929a0909056b4Timo Sirainen self.res_cat2_pkg10, case_sensitive=False)
1d3f7c1278168d5b1cbfa9a2cc9929a0909056b4Timo Sirainen self._search_op(api_obj, remote, "*Video",
1d3f7c1278168d5b1cbfa9a2cc9929a0909056b4Timo Sirainen self.res_cat2_pkg10, case_sensitive=False)
1d3f7c1278168d5b1cbfa9a2cc9929a0909056b4Timo Sirainen self._search_op(api_obj, remote,
1d3f7c1278168d5b1cbfa9a2cc9929a0909056b4Timo Sirainen "'Applications/Sound and Video'",
88553367d677170a4b703b9d52aac9eabf91c656Timo Sirainen self.res_cat2_pkg10, case_sensitive=False)
d9de52132072d80b8c268094b879c0ef5a108db3Timo Sirainen # This is a test for bug 11002 which ensures that the
7e0bb2b365cc38645313a3513fa79bd32d34b63cTimo Sirainen # unquoting is being performed correctly.
d9de52132072d80b8c268094b879c0ef5a108db3Timo Sirainen self._search_op(api_obj, remote,
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen "'Applications/Sound%20and%20Video'",
4d10cf8c7879ccd377e7fb136913b2a258ba8d93Timo Sirainen set(), case_sensitive=False)
4d10cf8c7879ccd377e7fb136913b2a258ba8d93Timo Sirainen self._search_op(api_obj, remote, "Developer/C",
4d10cf8c7879ccd377e7fb136913b2a258ba8d93Timo Sirainen self.res_cat2_pkg10_2, case_sensitive=False)
d5cebe7f98e63d4e2822863ef2faa4971e8b3a5dTimo Sirainen self._search_op(api_obj, remote, "Developer",
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen self.res_cat2_pkg10_2, case_sensitive=False)
4d10cf8c7879ccd377e7fb136913b2a258ba8d93Timo Sirainen self._search_op(api_obj, remote, "C",
4d10cf8c7879ccd377e7fb136913b2a258ba8d93Timo Sirainen self.res_cat2_pkg10_2, case_sensitive=False)
88553367d677170a4b703b9d52aac9eabf91c656Timo Sirainen
88553367d677170a4b703b9d52aac9eabf91c656Timo Sirainen def _run_cat3_tests(self, remote):
88553367d677170a4b703b9d52aac9eabf91c656Timo Sirainen self._search_op(api_obj, remote, "foo",
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self.res_cat3_pkg10,case_sensitive=False)
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen self._search_op(api_obj, remote, "baz",
de4288b7369945a31c4001add9445fd0195a358dTimo Sirainen self.res_cat3_pkg10, case_sensitive=False)
b20fb5b1df9d604a7541f5118fc5b4b466d211efTimo Sirainen self._search_op(api_obj, remote, "asda",
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self.res_cat3_pkg10, case_sensitive=False)
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self._search_op(api_obj, remote,
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen "foo/bar/baz/bill/beam/asda", self.res_cat3_pkg10,
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen case_sensitive=False)
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen
aa0647f2debf0d48d504a321186f66c85596aaf4Timo Sirainen durl = self.dc.get_depot_url()
2e937ed8585299b2e879a28314902a5f644813d2Timo Sirainen self.pkgsend_bulk(durl, self.cat_pkg10)
76e3062a60f585a638e0933bb71d3c8c9b0d8e2aTimo Sirainen self.pkgsend_bulk(durl, self.cat2_pkg10)
343a527f805ca5cce78496b959d6def70e5d0cd4Timo Sirainen self.pkgsend_bulk(durl, self.cat3_pkg10)
343a527f805ca5cce78496b959d6def70e5d0cd4Timo Sirainen self.pkgsend_bulk(durl, self.bad_cat_pkg10)
bb10ebcf076c959c752f583746d83805d7686df8Timo Sirainen self.pkgsend_bulk(durl, self.bad_cat2_pkg10)
bb10ebcf076c959c752f583746d83805d7686df8Timo Sirainen api_obj = self.image_create(durl)
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen
33ae95df45c9b5ec51332a6b39eb5322038686b9Timo Sirainen remote = True
91dca97b367c54a139c268b56a0c67f564bd9197Timo Sirainen _run_cat_tests(self, remote)
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen _run_cat2_tests(self, remote)
ccb70ccfd9a25e490aab46d15d9b8323ad9ea3bfTimo Sirainen _run_cat3_tests(self, remote)
ccb70ccfd9a25e490aab46d15d9b8323ad9ea3bfTimo Sirainen
ccb70ccfd9a25e490aab46d15d9b8323ad9ea3bfTimo Sirainen remote = False
022412398e56a8f31ef111cfd7271498d64af9a9Timo Sirainen self._api_install(api_obj, ["cat"])
022412398e56a8f31ef111cfd7271498d64af9a9Timo Sirainen _run_cat_tests(self, remote)
022412398e56a8f31ef111cfd7271498d64af9a9Timo Sirainen
022412398e56a8f31ef111cfd7271498d64af9a9Timo Sirainen self._api_install(api_obj, ["cat2"])
022412398e56a8f31ef111cfd7271498d64af9a9Timo Sirainen _run_cat2_tests(self, remote)
ccb70ccfd9a25e490aab46d15d9b8323ad9ea3bfTimo Sirainen
ccb70ccfd9a25e490aab46d15d9b8323ad9ea3bfTimo Sirainen self._api_install(api_obj, ["cat3"])
ccb70ccfd9a25e490aab46d15d9b8323ad9ea3bfTimo Sirainen _run_cat3_tests(self, remote)
6ef7e31619edfaa17ed044b45861d106a86191efTimo Sirainen
022412398e56a8f31ef111cfd7271498d64af9a9Timo Sirainen self._api_install(api_obj, ["badcat"])
ccb70ccfd9a25e490aab46d15d9b8323ad9ea3bfTimo Sirainen self._api_install(api_obj, ["badcat2"])
b08b33d1f5ce3721dc2d83586c9cb0ca141331fdTimo Sirainen _run_cat_tests(self, remote)
30975737820f5855e2c26d81b574ae5f03a05407Timo Sirainen _run_cat2_tests(self, remote)
30975737820f5855e2c26d81b574ae5f03a05407Timo Sirainen _run_cat3_tests(self, remote)
022412398e56a8f31ef111cfd7271498d64af9a9Timo Sirainen
ccb70ccfd9a25e490aab46d15d9b8323ad9ea3bfTimo Sirainen def test_bug_7628(self):
ccb70ccfd9a25e490aab46d15d9b8323ad9ea3bfTimo Sirainen """Checks whether incremental update generates wrong
7e0bb2b365cc38645313a3513fa79bd32d34b63cTimo Sirainen additional lines."""
ccb70ccfd9a25e490aab46d15d9b8323ad9ea3bfTimo Sirainen durl = self.dc.get_depot_url()
ccb70ccfd9a25e490aab46d15d9b8323ad9ea3bfTimo Sirainen depotpath = self.dc.get_repodir()
ccb70ccfd9a25e490aab46d15d9b8323ad9ea3bfTimo Sirainen ind_dir = os.path.join(depotpath, "index")
ccb70ccfd9a25e490aab46d15d9b8323ad9ea3bfTimo Sirainen tok_file = os.path.join(ind_dir, ss.BYTE_OFFSET_FILE)
ccb70ccfd9a25e490aab46d15d9b8323ad9ea3bfTimo Sirainen main_file = os.path.join(ind_dir, ss.MAIN_FILE)
ccb70ccfd9a25e490aab46d15d9b8323ad9ea3bfTimo Sirainen self.pkgsend_bulk(durl, self.example_pkg10)
ccb70ccfd9a25e490aab46d15d9b8323ad9ea3bfTimo Sirainen time.sleep(1)
ccb70ccfd9a25e490aab46d15d9b8323ad9ea3bfTimo Sirainen fh = open(tok_file)
7e0bb2b365cc38645313a3513fa79bd32d34b63cTimo Sirainen tok_1 = fh.readlines()
ccb70ccfd9a25e490aab46d15d9b8323ad9ea3bfTimo Sirainen tok_len = len(tok_1)
ccb70ccfd9a25e490aab46d15d9b8323ad9ea3bfTimo Sirainen fh.close()
ccb70ccfd9a25e490aab46d15d9b8323ad9ea3bfTimo Sirainen fh = open(main_file)
ccb70ccfd9a25e490aab46d15d9b8323ad9ea3bfTimo Sirainen main_1 = fh.readlines()
ccb70ccfd9a25e490aab46d15d9b8323ad9ea3bfTimo Sirainen main_len = len(main_1)
ccb70ccfd9a25e490aab46d15d9b8323ad9ea3bfTimo Sirainen self.pkgsend_bulk(durl, self.example_pkg10, optional=False)
ccb70ccfd9a25e490aab46d15d9b8323ad9ea3bfTimo Sirainen time.sleep(1)
ccb70ccfd9a25e490aab46d15d9b8323ad9ea3bfTimo Sirainen fh = open(tok_file)
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen tok_2 = fh.readlines()
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen new_tok_len = len(tok_2)
d6e2b2761c8e0b6923c883fb2ead2665ee954be5Timo Sirainen fh.close()
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen fh = open(main_file)
7a6b45405fb1544ac476e6eb1402a70cc1ddcdcfTimo Sirainen main_2 = fh.readlines()
de4288b7369945a31c4001add9445fd0195a358dTimo Sirainen new_main_len = len(main_2)
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen fh.close()
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen # Since the server now adds a set action for the FMRI to
aa0647f2debf0d48d504a321186f66c85596aaf4Timo Sirainen # manifests during publication, there should be one
aa0647f2debf0d48d504a321186f66c85596aaf4Timo Sirainen # additional line for the token file.
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen self.assertEqual(new_tok_len, tok_len + 1)
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen self.assertEqual(new_main_len, main_len + 1)
36e2fa21c22452470c1509cc63de20f7415c7b5eTimo Sirainen
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen def test_bug_983(self):
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen """Test for known bug 983."""
9aa52288a4b53186d81b0ec9afa7d9e0a8ee8753Timo Sirainen durl = self.dc.get_depot_url()
b3febb0933fdce10394d25093e23ce0a5aadddd3Timo Sirainen self.pkgsend_bulk(durl, self.bug_983_manifest)
ccb70ccfd9a25e490aab46d15d9b8323ad9ea3bfTimo Sirainen time.sleep(2)
dda2c506c8fc8ac2f88272de4523ded42baa0aa0Timo Sirainen api_obj = self.image_create(durl)
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen
59ef34eafaf74d31ed88af444b22d1a0738a30aaTimo Sirainen self._search_op(api_obj, True, "gmake", self.res_bug_983)
59ef34eafaf74d31ed88af444b22d1a0738a30aaTimo Sirainen self._search_op(api_obj, True, "SUNWcsl@0.5.11-0.89",
59ef34eafaf74d31ed88af444b22d1a0738a30aaTimo Sirainen self.res_983_csl_dependency)
59ef34eafaf74d31ed88af444b22d1a0738a30aaTimo Sirainen self._search_op(api_obj, True, "SUNWcsl",
84e1634acc701d14e358e27f1beff5ad74f5004aTimo Sirainen self.res_983_csl_dependency)
b3febb0933fdce10394d25093e23ce0a5aadddd3Timo Sirainen self._search_op(api_obj, True, "SUNWtestbar@0.5.11-0.111",
b3febb0933fdce10394d25093e23ce0a5aadddd3Timo Sirainen self.res_983_bar_dependency)
bfea67960b2c2b479f9869b7df9a0d179370ce5fTimo Sirainen self._search_op(api_obj, True, "SUNWtestbar",
bfea67960b2c2b479f9869b7df9a0d179370ce5fTimo Sirainen self.res_983_bar_dependency)
9d0e1fa945103f2875cdf6d18b2013809f566ea7Timo Sirainen self._search_op(api_obj, True, "SUNWtestfoo@0.5.11-0.111",
9d0e1fa945103f2875cdf6d18b2013809f566ea7Timo Sirainen self.res_983_foo_dependency)
9d0e1fa945103f2875cdf6d18b2013809f566ea7Timo Sirainen self._search_op(api_obj, True, "SUNWtestfoo",
9d0e1fa945103f2875cdf6d18b2013809f566ea7Timo Sirainen self.res_983_foo_dependency)
9d0e1fa945103f2875cdf6d18b2013809f566ea7Timo Sirainen self._search_op(api_obj, True, "depend:require:",
9d0e1fa945103f2875cdf6d18b2013809f566ea7Timo Sirainen self.res_983_csl_dependency | self.res_983_bar_dependency)
9d0e1fa945103f2875cdf6d18b2013809f566ea7Timo Sirainen self._search_op(api_obj, True, "depend:incorporate:",
9d0e1fa945103f2875cdf6d18b2013809f566ea7Timo Sirainen self.res_983_foo_dependency)
9d0e1fa945103f2875cdf6d18b2013809f566ea7Timo Sirainen self._search_op(api_obj, True, "depend::",
9d0e1fa945103f2875cdf6d18b2013809f566ea7Timo Sirainen self.res_983_csl_dependency | self.res_983_bar_dependency |
9d0e1fa945103f2875cdf6d18b2013809f566ea7Timo Sirainen self.res_983_foo_dependency)
9d0e1fa945103f2875cdf6d18b2013809f566ea7Timo Sirainen
9d0e1fa945103f2875cdf6d18b2013809f566ea7Timo Sirainen def test_bug_7534(self):
9d0e1fa945103f2875cdf6d18b2013809f566ea7Timo Sirainen """Tests that an automatic reindexing is detected by the test
34d2ee1fa2b299267fcefd378f80690e7f601dfbTimo Sirainen suite."""
34d2ee1fa2b299267fcefd378f80690e7f601dfbTimo Sirainen durl = self.dc.get_depot_url()
181c1aff950e6f8e0556f8974e79d0747845ac0fTimo Sirainen self.pkgsend_bulk(durl, self.example_pkg10)
181c1aff950e6f8e0556f8974e79d0747845ac0fTimo Sirainen api_obj = self.image_create(durl)
181c1aff950e6f8e0556f8974e79d0747845ac0fTimo Sirainen
181c1aff950e6f8e0556f8974e79d0747845ac0fTimo Sirainen index_dir = os.path.join(self.img_path, "var","pkg","index")
181c1aff950e6f8e0556f8974e79d0747845ac0fTimo Sirainen
181c1aff950e6f8e0556f8974e79d0747845ac0fTimo Sirainen orig_fn = os.path.join(index_dir,
181c1aff950e6f8e0556f8974e79d0747845ac0fTimo Sirainen query_parser.TermQuery._get_gdd(index_dir).values()[0].\
181c1aff950e6f8e0556f8974e79d0747845ac0fTimo Sirainen get_file_name())
34d2ee1fa2b299267fcefd378f80690e7f601dfbTimo Sirainen dest_fn = orig_fn + "TMP"
2c7ab05ef98c46eb70c8ba6ea85e49749aafb2a3Timo Sirainen
d9de52132072d80b8c268094b879c0ef5a108db3Timo Sirainen self._api_install(api_obj, ["example_pkg"])
2c7ab05ef98c46eb70c8ba6ea85e49749aafb2a3Timo Sirainen api_obj.rebuild_search_index()
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen
2c7ab05ef98c46eb70c8ba6ea85e49749aafb2a3Timo Sirainen portable.rename(orig_fn, dest_fn)
2c7ab05ef98c46eb70c8ba6ea85e49749aafb2a3Timo Sirainen self.assertRaises(api_errors.WrapSuccessfulIndexingException,
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen self._api_uninstall, api_obj, ["example_pkg"])
2c7ab05ef98c46eb70c8ba6ea85e49749aafb2a3Timo Sirainen
d9de52132072d80b8c268094b879c0ef5a108db3Timo Sirainen def test_bug_8492(self):
2c7ab05ef98c46eb70c8ba6ea85e49749aafb2a3Timo Sirainen """Tests that field queries and phrase queries work together.
2c7ab05ef98c46eb70c8ba6ea85e49749aafb2a3Timo Sirainen """
2c7ab05ef98c46eb70c8ba6ea85e49749aafb2a3Timo Sirainen durl = self.dc.get_depot_url()
34d2ee1fa2b299267fcefd378f80690e7f601dfbTimo Sirainen self.pkgsend_bulk(durl, self.bug_8492_manf_1)
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen self.pkgsend_bulk(durl, self.bug_8492_manf_2)
9aa52288a4b53186d81b0ec9afa7d9e0a8ee8753Timo Sirainen time.sleep(2)
9aa52288a4b53186d81b0ec9afa7d9e0a8ee8753Timo Sirainen api_obj = self.image_create(durl)
9aa52288a4b53186d81b0ec9afa7d9e0a8ee8753Timo Sirainen
ccb70ccfd9a25e490aab46d15d9b8323ad9ea3bfTimo Sirainen self._search_op(api_obj, True, "set::'image packaging'",
9aa52288a4b53186d81b0ec9afa7d9e0a8ee8753Timo Sirainen self.res_8492_1 | self.res_8492_2)
8fcff4c5b52f24d9c681805fdf06b486f1d0fcbeTimo Sirainen self._search_op(api_obj, True, "b1:set::'image packaging'",
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen self.res_8492_1)
4b41116563110d00330896a568eff1078c382827Timo Sirainen
4b41116563110d00330896a568eff1078c382827Timo Sirainen self._api_install(api_obj, ["b1", "b2"])
4b41116563110d00330896a568eff1078c382827Timo Sirainen
4b41116563110d00330896a568eff1078c382827Timo Sirainen self._search_op(api_obj, False, "set::'image packaging'",
4b41116563110d00330896a568eff1078c382827Timo Sirainen self.res_8492_1 | self.res_8492_2)
4b41116563110d00330896a568eff1078c382827Timo Sirainen self._search_op(api_obj, False, "b2:set::'image packaging'",
4b41116563110d00330896a568eff1078c382827Timo Sirainen self.res_8492_2)
4b41116563110d00330896a568eff1078c382827Timo Sirainen
4b41116563110d00330896a568eff1078c382827Timo Sirainen api_obj.rebuild_search_index()
4b41116563110d00330896a568eff1078c382827Timo Sirainen
4b41116563110d00330896a568eff1078c382827Timo Sirainen self._search_op(api_obj, True, "set::'image packaging'",
4b41116563110d00330896a568eff1078c382827Timo Sirainen self.res_8492_1 | self.res_8492_2)
4b41116563110d00330896a568eff1078c382827Timo Sirainen self._search_op(api_obj, True, "b1:set::'image packaging'",
d756ebcfa96bd7cff02097c8f26df9df368b81b1Timo Sirainen self.res_8492_1)
d756ebcfa96bd7cff02097c8f26df9df368b81b1Timo Sirainen
8fcff4c5b52f24d9c681805fdf06b486f1d0fcbeTimo Sirainen def test_bug_9845_01(self):
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen """Test that a corrupt query doesn't break the server."""
f1901fd21906911f7be075c965ac882f6a87b4c3Timo Sirainen durl = self.dc.get_depot_url()
d756ebcfa96bd7cff02097c8f26df9df368b81b1Timo Sirainen expected_string = _("A query is expected to have five fields: "
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen "case sensitivity, return type, number of results to "
013e3b3942e9550fde619a0b3ce6bdd04edc4268Timo Sirainen "return, the number at which to start returning results, "
013e3b3942e9550fde619a0b3ce6bdd04edc4268Timo Sirainen "and the text of the query. The query provided lacked at "
5fb3bff645380804c9db2510940c41db6b8fdb01Timo Sirainen "least one of those fields:")
b7ad29db8cf906da01ee4626730868881087950bTimo Sirainen expected_code = 404
29e945d8550f297707f3a5f627a938401046c0ccTimo Sirainen q_str = "foo"
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen self.validateAssertRaises(urllib2.HTTPError,
95ed89440faab05cbb4f2473f2f4af19e848bde8Timo Sirainen lambda x: self._check_err(x, expected_string,
e5ee67f18b03015c88b579c8c1f17ebe6ce19b76Timo Sirainen expected_code),
e5ee67f18b03015c88b579c8c1f17ebe6ce19b76Timo Sirainen urllib2.urlopen, durl + "/search/1/" + q_str)
b5e6f6f27c1461f0f9f202615eeb738a645188c3Timo Sirainen
95ed89440faab05cbb4f2473f2f4af19e848bde8Timo Sirainen def test_bug_9845_02(self):
8fcff4c5b52f24d9c681805fdf06b486f1d0fcbeTimo Sirainen """Test that a corrupt case_sensitive value doesn't break the "
d756ebcfa96bd7cff02097c8f26df9df368b81b1Timo Sirainen server."""
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen durl = self.dc.get_depot_url()
expected_string = _("%(name)s had a bad value of '%(bv)s'") % {
"name": "case_sensitive",
"bv": "FAlse"
}
expected_code = 404
q_str = "FAlse_2_None_None_foo"
self.validateAssertRaises(urllib2.HTTPError,
lambda x: self._check_err(x, expected_string,
expected_code),
urllib2.urlopen, durl + "/search/1/" + q_str)
def test_bug_9845_03(self):
"""Test that a corrupt return_type value doesn't break the "
server."""
durl = self.dc.get_depot_url()
expected_string = _("%(name)s had a bad value of '%(bv)s'") % {
"name": "return_type",
"bv": "3"
}
expected_code = 404
q_str = "False_3_None_None_foo"
self.validateAssertRaises(urllib2.HTTPError,
lambda x: self._check_err(x, expected_string,
expected_code),
urllib2.urlopen, durl + "/search/1/" + q_str)
def test_bug_9845_04(self):
"""Test that a corrupt return_type value doesn't break the "
server."""
durl = self.dc.get_depot_url()
expected_string = _("%(name)s had a bad value of '%(bv)s'") % {
"name": "return_type",
"bv": "A"
}
expected_code = 404
q_str = "False_A_None_None_foo"
self.validateAssertRaises(urllib2.HTTPError,
lambda x: self._check_err(x, expected_string,
expected_code),
urllib2.urlopen, durl + "/search/1/" + q_str)
def test_bug_9845_05(self):
"""Test that a corrupt num_to_return value doesn't break the "
server."""
durl = self.dc.get_depot_url()
expected_string = _("%(name)s had a bad value of '%(bv)s'") % {
"name": "num_to_return",
"bv": "NOne"
}
expected_code = 404
q_str = "False_2_NOne_None_foo"
self.validateAssertRaises(urllib2.HTTPError,
lambda x: self._check_err(x, expected_string,
expected_code),
urllib2.urlopen, durl + "/search/1/" + q_str)
def test_bug_9845_06(self):
"""Test that a corrupt start_point value doesn't break the "
server."""
durl = self.dc.get_depot_url()
expected_string = _("%(name)s had a bad value of '%(bv)s'") % {
"name": "start_point",
"bv": "NOne"
}
expected_code = 404
q_str = "False_2_None_NOne_foo"
self.validateAssertRaises(urllib2.HTTPError,
lambda x: self._check_err(x, expected_string,
expected_code),
urllib2.urlopen, durl + "/search/1/" + q_str)
def test_bug_9845_07(self):
"""Test that a corrupt case_sensitive value doesn't break the "
server."""
durl = self.dc.get_depot_url()
expected_string = _("%(name)s had a bad value of '%(bv)s'") % {
"name": "case_sensitive",
"bv": ""
}
expected_code = 404
q_str = "_2_None_None_foo"
self.validateAssertRaises(urllib2.HTTPError,
lambda x: self._check_err(x, expected_string,
expected_code),
urllib2.urlopen, durl + "/search/1/" + q_str)
def test_bug_9845_08(self):
"""Test that a missing return_type value doesn't break the "
server."""
durl = self.dc.get_depot_url()
expected_string = _("%(name)s had a bad value of '%(bv)s'") % {
"name": "return_type",
"bv": ""
}
expected_code = 404
q_str = "False__None_None_foo"
self.validateAssertRaises(urllib2.HTTPError,
lambda x: self._check_err(x, expected_string,
expected_code),
urllib2.urlopen, durl + "/search/1/" + q_str)
def test_bug_9845_09(self):
"""Test that a missing num_to_return value doesn't break the "
server."""
durl = self.dc.get_depot_url()
expected_string = _("%(name)s had a bad value of '%(bv)s'") % {
"name": "num_to_return",
"bv": ""
}
expected_code = 404
q_str = "False_2__None_foo"
self.validateAssertRaises(urllib2.HTTPError,
lambda x: self._check_err(x, expected_string,
expected_code),
urllib2.urlopen, durl + "/search/1/" + q_str)
def test_bug_9845_10(self):
"""Test that a missing start_point value doesn't break the "
server."""
durl = self.dc.get_depot_url()
expected_string = _("%(name)s had a bad value of '%(bv)s'") % {
"name": "start_point",
"bv": ""
}
expected_code = 404
q_str = "False_2_None__foo"
self.validateAssertRaises(urllib2.HTTPError,
lambda x: self._check_err(x, expected_string,
expected_code),
urllib2.urlopen, durl + "/search/1/" + q_str)
def test_bug_9845_11(self):
"""Test that missing query text doesn't break the server."""
durl = self.dc.get_depot_url()
expected_string = _("Could not parse query.")
expected_code = 400
q_str = "False_2_None_None_"
self.validateAssertRaises(urllib2.HTTPError,
lambda x: self._check_err(x, expected_string,
expected_code),
urllib2.urlopen, durl + "/search/1/" + q_str)
def test_bug_14177(self):
def run_tests(api_obj, remote):
self._search_op(api_obj, remote, "pfoo",
self.hierarchical_named_pkg_res,
case_sensitive=False)
self._search_op(api_obj, remote, "pc/pfoo",
self.hierarchical_named_pkg_res,
case_sensitive=False)
self._search_op(api_obj, remote, "pb/pc/pfoo",
self.hierarchical_named_pkg_res,
case_sensitive=False)
self._search_op(api_obj, remote, "pa/pb/pc/pfoo",
self.hierarchical_named_pkg_res,
case_sensitive=False)
self._search_op(api_obj, remote, "test/pa/pb/pc/pfoo",
self.hierarchical_named_pkg_res,
case_sensitive=False)
durl = self.dc.get_depot_url()
self.pkgsend_bulk(durl, self.hierarchical_named_pkg)
api_obj = self.image_create(durl)
# XXX wait for depot to be ready.
time.sleep(1)
remote = True
run_tests(api_obj, remote)
self._api_install(api_obj, ["pfoo"])
remote = False
run_tests(api_obj, remote)
api_obj.rebuild_search_index()
api_obj.reset()
run_tests(api_obj, remote)
class TestApiSearchBasics_nonP(TestApiSearchBasics):
def setUp(self):
self.debug_features = ["headers"]
TestApiSearchBasics.setUp(self)
def test_local_image_update(self):
"""Test that the index gets updated by image-update and
that rebuilding the index works after updating the
image. Specifically, this tests that rebuilding indexes with
gaps in them works correctly."""
durl = self.dc.get_depot_url()
self.pkgsend_bulk(durl, self.example_pkg10)
api_obj = self.image_create(durl)
self._api_install(api_obj, ["example_pkg"])
self.pkgsend_bulk(durl, self.example_pkg11)
api_obj.refresh(immediate=True)
self._api_image_update(api_obj)
self._run_local_tests_example11_installed(api_obj)
api_obj.rebuild_search_index()
self._run_local_tests_example11_installed(api_obj)
def test_bug_4048_1(self):
"""Checks whether the server deals with partial indexing."""
durl = self.dc.get_depot_url()
depotpath = self.dc.get_repodir()
tmp_dir = os.path.join(depotpath, "index", "TMP")
os.mkdir(tmp_dir)
self.pkgsend_bulk(durl, self.example_pkg10)
api_obj = self.image_create(durl)
self._run_remote_empty_tests(api_obj)
os.rmdir(tmp_dir)
offset = 2
depot_logfile = os.path.join(self.test_root,
"depot_logfile%d" % offset)
tmp_dc = self.prep_depot(12000 + offset, depotpath,
depot_logfile, refresh_index=True, start=True)
time.sleep(1)
# This should do something other than sleep for 1 sec
self._run_remote_tests(api_obj)
tmp_dc.kill()
def test_bug_4048_2(self):
"""Checks whether the server deals with partial indexing."""
durl = self.dc.get_depot_url()
depotpath = self.dc.get_repodir()
tmp_dir = os.path.join(depotpath, "index", "TMP")
os.mkdir(tmp_dir)
self.pkgsend_bulk(durl, self.space_pkg10)
api_obj = self.image_create(durl)
self._run_remote_empty_tests(api_obj)
os.rmdir(tmp_dir)
self.pkgsend_bulk(durl, self.example_pkg10)
time.sleep(1)
self._run_remote_tests(api_obj)
self._search_op(api_obj, True, "unique_dir",
self.res_space_unique)
self._search_op(api_obj, True, "with*",
self.res_space_with_star)
def test_bug_6177(self):
durl = self.dc.get_depot_url()
self.pkgsend_bulk(durl, self.example_pkg10)
self.pkgsend_bulk(durl, self.example_pkg11)
self.pkgsend_bulk(durl, self.incorp_pkg10)
self.pkgsend_bulk(durl, self.incorp_pkg11)
api_obj = self.image_create(durl)
res_both_actions = set([
('pkg:/example_pkg@1.1-0', 'path',
'dir group=bin mode=0755 owner=root path=bin'),
('pkg:/example_pkg@1.0-0', 'path',
'dir group=bin mode=0755 owner=root path=bin')
])
res_10_action = set([
('pkg:/example_pkg@1.0-0', 'path',
'dir group=bin mode=0755 owner=root path=bin')
])
res_11_action = set([
('pkg:/example_pkg@1.1-0', 'path',
'dir group=bin mode=0755 owner=root path=bin')
])
res_both_packages = set([
"pkg:/example_pkg@1.1-0",
"pkg:/example_pkg@1.0-0"
])
res_10_package = set([
"pkg:/example_pkg@1.0-0"
])
res_11_package = set([
"pkg:/example_pkg@1.1-0"
])
self._search_op(api_obj, True, "/bin", res_both_actions)
# Test that if a package is installed, its version and newer
# versions are shown.
self._api_install(api_obj, ["example_pkg@1.0"])
self._search_op(api_obj, True, "/bin", res_both_actions)
self._search_op(api_obj, True, "/bin", res_both_actions,
prune_versions=False)
# Check that after uninstall, back to returning all versions.
self._api_uninstall(api_obj, ["example_pkg"])
self._search_op(api_obj, True, "/bin", res_both_actions)
self._search_op(api_obj, True, "/bin", res_both_packages,
return_actions=False)
# Test that if a package is installed, its version and newer
# versions are shown. Older versions should not be shown.
self._api_install(api_obj, ["example_pkg@1.1"])
self._search_op(api_obj, True, "/bin", res_11_action)
self._search_op(api_obj, True, "</bin>", res_11_package,
return_actions=False)
self._search_op(api_obj, True, "/bin", res_both_actions,
prune_versions=False)
self._search_op(api_obj, True, "</bin>", res_both_packages,
return_actions=False, prune_versions=False)
# Check that after uninstall, back to returning all versions.
self._api_uninstall(api_obj, ["example_pkg"])
self._search_op(api_obj, True, "/bin", res_both_actions)
# Check that only the incorporated package is returned.
self._api_install(api_obj, ["incorp_pkg@1.0"])
self._search_op(api_obj, True, "/bin", res_10_action)
self._search_op(api_obj, True, "/bin", res_10_package,
return_actions=False)
self._search_op(api_obj, True, "/bin", res_both_actions,
prune_versions=False)
self._search_op(api_obj, True, "/bin", res_both_packages,
return_actions=False, prune_versions=False)
# Should now show the 1.1 version of example_pkg since the
# version has been upgraded.
self._api_install(api_obj, ["incorp_pkg"])
self._search_op(api_obj, True, "/bin", res_11_action)
self._search_op(api_obj, True, "</bin>", res_11_package,
return_actions=False)
self._search_op(api_obj, True, "/bin", res_both_actions,
prune_versions=False)
self._search_op(api_obj, True, "</bin>", res_both_packages,
return_actions=False, prune_versions=False)
# Should now show both again since the incorporation has been
# removed.
self._api_uninstall(api_obj, ["incorp_pkg"])
self._search_op(api_obj, True, "/bin", res_both_actions)
# Check that installed and incorporated work correctly together.
self._api_install(api_obj,
["incorp_pkg@1.0", "example_pkg@1.0"])
self._search_op(api_obj, True, "/bin", res_10_action)
self._search_op(api_obj, True, "</bin>", res_10_package,
return_actions=False)
self._search_op(api_obj, True, "/bin", res_both_actions,
prune_versions=False)
self._search_op(api_obj, True, "</bin>", res_both_packages,
return_actions=False, prune_versions=False)
# And that it works after the incorporation has been changed.
self._api_install(api_obj, ["incorp_pkg"])
self._search_op(api_obj, True, "/bin", res_11_action)
self._search_op(api_obj, True, "</bin>", res_11_package,
return_actions=False)
self._search_op(api_obj, True, "/bin", res_both_actions,
prune_versions=False)
self._search_op(api_obj, True, "</bin>", res_both_packages,
return_actions=False, prune_versions=False)
def __corrupt_depot(self, ind_dir):
self.dc.stop()
if os.path.exists(os.path.join(ind_dir, ss.MAIN_FILE)):
shutil.move(os.path.join(ind_dir, ss.MAIN_FILE),
os.path.join(ind_dir, "main_dict.ascii.v1"))
self.dc.start()
def __wait_for_indexing(self, d):
init_time = time.time()
there = True
while there and ((time.time() - init_time) < 10):
there = os.path.exists(d)
self.assert_(not there)
time.sleep(1)
def test_bug_7358_1(self):
"""Move files so that an inconsistent index is created and
check that the server rebuilds the index when possible, and
doesn't stack trace when it can't write to the directory."""
durl = self.dc.get_depot_url()
depotpath = self.dc.get_repodir()
ind_dir = os.path.join(depotpath, "index")
api_obj = self.image_create(durl)
# Check when depot is empty.
self.__corrupt_depot(ind_dir)
self.__wait_for_indexing(os.path.join(ind_dir, "TMP"))
# Since the depot is empty, should return no results but
# not error.
self._search_op(api_obj, True, 'e*', set())
self.pkgsend_bulk(durl, self.example_pkg10)
self.__wait_for_indexing(os.path.join(ind_dir, "TMP"))
# Check when depot contains a package.
self.__corrupt_depot(ind_dir)
self.__wait_for_indexing(os.path.join(ind_dir, "TMP"))
self._run_remote_tests(api_obj)
def test_bug_7358_2(self):
"""Does same check as 7358_1 except it checks for interactions
with writable root."""
durl = self.dc.get_depot_url()
depotpath = self.dc.get_repodir()
ind_dir = os.path.join(depotpath, "index")
shutil.rmtree(ind_dir)
writable_root = os.path.join(self.test_root,
"writ_root")
writ_dir = os.path.join(writable_root, "index")
self.dc.set_writable_root(writable_root)
api_obj = self.image_create(durl)
# Check when depot is empty.
self.__corrupt_depot(writ_dir)
# Since the depot is empty, should return no results but
# not error.
self.assert_(not os.path.isdir(ind_dir))
self.__wait_for_indexing(os.path.join(writ_dir, "TMP"))
self._search_op(api_obj, True, 'e*', set())
self.pkgsend_bulk(durl, self.example_pkg10)
self.__wait_for_indexing(os.path.join(writ_dir, "TMP"))
# Check when depot contains a package.
self.__corrupt_depot(writ_dir)
self.__wait_for_indexing(os.path.join(writ_dir, "TMP"))
self.assert_(not os.path.isdir(ind_dir))
self._run_remote_tests(api_obj)
def test_bug_8318(self):
durl = self.dc.get_depot_url()
self.pkgsend_bulk(durl, self.example_pkg10)
api_obj = self.image_create(durl)
uuids = []
for p in api_obj.img.gen_publishers():
uuids.append(p.client_uuid)
# XXX wait for depot to be ready.
time.sleep(1)
self._search_op(api_obj, True, "example_path",
self.res_remote_path)
self._search_op(api_obj, True, "example_path",
self.res_remote_path, servers=[{"origin": durl}])
lfh = file(self.dc.get_logpath(), "rb")
found = 0
num_expected = 6
for line in lfh:
if "X-IPKG-UUID:" in line:
tmp = line.split()
s_uuid = tmp[1]
if s_uuid not in uuids:
raise RuntimeError("Uuid found:%s not "
"found in list of possible "
"uuids:%s" % (s_uuid, uuids))
found += 1
if found != num_expected:
raise RuntimeError(("Found %s instances of a "
"client uuid, expected to find %s.") %
(found, num_expected))
def test_bug_9729_1(self):
"""Test that installing more than
indexer.MAX_ADDED_NUMBER_PACKAGES packages at a time doesn't
cause any type of indexing error."""
durl = self.dc.get_depot_url()
pkg_list = []
for i in range(0, indexer.MAX_ADDED_NUMBER_PACKAGES + 1):
self.pkgsend_bulk(durl,
"open pkg%s@1.0,5.11-0\nclose\n" % i)
pkg_list.append("pkg%s" % i)
api_obj = self.image_create(durl)
self._api_install(api_obj, pkg_list)
def test_bug_9729_2(self):
"""Test that installing more than
indexer.MAX_ADDED_NUMBER_PACKAGES packages one after another
doesn't cause any type of indexing error."""
def _remove_extra_info(v):
return v.split("-")[0]
durl = self.dc.get_depot_url()
pkg_list = []
for i in range(0, indexer.MAX_ADDED_NUMBER_PACKAGES + 3):
self.pkgsend_bulk(durl,
"open pkg%s@1.0,5.11-0\nclose\n" % i)
pkg_list.append("pkg%s" % i)
api_obj = self.image_create(durl)
fast_add_loc = os.path.join(self._get_index_dirs()[0],
"fast_add.v1")
fast_remove_loc = os.path.join(self._get_index_dirs()[0],
"fast_remove.v1")
api_obj.rebuild_search_index()
for p in pkg_list:
self._api_install(api_obj, [p])
# Test for bug 11104. The fast_add.v1 file was not being updated
# correctly by install or image update, it was growing with
# each modification.
self._check(set((
_remove_extra_info(v)
for v in self._get_lines(fast_add_loc)
)), self.fast_add_after_install)
self._check(set((
_remove_extra_info(v)
for v in self._get_lines(fast_remove_loc)
)), self.fast_remove_after_install)
# Now check that image update also handles fast_add
# appropriately when a small number of packages have changed.
for i in range(0, 2):
self.pkgsend_bulk(durl,
"open pkg%s@2.0,5.11-0\nclose\n" % i)
pkg_list.append("pkg%s" % i)
api_obj.refresh(immediate=True)
self._api_image_update(api_obj)
self._check(set((
_remove_extra_info(v)
for v in self._get_lines(fast_add_loc)
)), self.fast_add_after_first_update)
self._check(set((
_remove_extra_info(v)
for v in self._get_lines(fast_remove_loc)
)), self.fast_remove_after_first_update)
# Now check that image update also handles fast_add
# appropriately when a large number of packages have changed.
for i in range(3, indexer.MAX_ADDED_NUMBER_PACKAGES + 3):
self.pkgsend_bulk(durl,
"open pkg%s@2.0,5.11-0\nclose\n" % i)
pkg_list.append("pkg%s" % i)
api_obj.refresh(immediate=True)
self._api_image_update(api_obj)
self._check(set((
_remove_extra_info(v)
for v in self._get_lines(fast_add_loc)
)), self.fast_add_after_second_update)
self._check(set((
_remove_extra_info(v)
for v in self._get_lines(fast_remove_loc)
)), self.fast_remove_after_second_update)
def test_bug_13485(self):
"""Test that indexer.Indexer's check_for_updates function works
as excepted. This needs to be a separate test because other
tests are likely to conintue working while reindexing more
frequently than they should."""
durl = self.dc.get_depot_url()
depotpath = self.dc.get_repodir()
ind_dir = os.path.join(depotpath, "index")
repo = srepo.Repository(repo_root=depotpath, read_only=True,
fork_allowed=False, refresh_index=False)
# Check that an empty index works correctly.
fmris = indexer.Indexer.check_for_updates(ind_dir, repo.catalog)
self.assertEqual(set(), fmris)
self.pkgsend_bulk(durl, self.example_pkg10)
self.__wait_for_indexing(os.path.join(ind_dir, "TMP"))
repo = srepo.Repository(repo_root=depotpath, fork_allowed=False)
self.assertEqual(len(set(repo.catalog.fmris())), 1)
# Check that after publishing one package, no packages need
# indexing.
fmris = indexer.Indexer.check_for_updates(ind_dir, repo.catalog)
self.assertEqual(set(), fmris)
back_dir = ind_dir + ".BACKUP"
shutil.copytree(ind_dir, back_dir)
self.pkgsend_bulk(durl, self.example_pkg10)
repo = srepo.Repository(repo_root=depotpath, fork_allowed=False)
self.assertEqual(len(set(repo.catalog.fmris())), 2)
# Check that publishing a second package also works.
fmris = indexer.Indexer.check_for_updates(ind_dir, repo.catalog)
self.assertEqual(set(), fmris)
# Check that a package that was publisher but not index is
# reported.
fmris = indexer.Indexer.check_for_updates(back_dir,
repo.catalog)
self.assertEqual(len(fmris), 1)
class TestApiSearchMulti(pkg5unittest.ManyDepotTestCase):
example_pkg10 = """
open example_pkg@1.0,5.11-0
add dir mode=0755 owner=root group=bin path=/bin/example_dir
close """
res_alternate_server_local = set([
('pkg:/example_pkg@1.0-0', 'test2/example_pkg',
'set name=pkg.fmri value=pkg://test2/example_pkg@1.0,5.11-0:')
])
def setUp(self):
pkg5unittest.ManyDepotTestCase.setUp(self, ["test1", "test2",
"test3"], debug_features=["headers"], start_depots=True)
self.durl1 = self.dcs[1].get_depot_url()
self.durl2 = self.dcs[2].get_depot_url()
self.durl3 = self.dcs[3].get_depot_url()
self.pkgsend_bulk(self.durl2, self.example_pkg10)
self.image_create(self.durl1, prefix="test1")
self.pkg("set-publisher -O " + self.durl2 + " test2")
def _check(self, proposed_answer, correct_answer):
if correct_answer == proposed_answer:
return True
else:
self.debug("Proposed Answer: " + str(proposed_answer))
self.debug("Correct Answer : " + str(correct_answer))
if isinstance(correct_answer, set) and \
isinstance(proposed_answer, set):
self.debug("Missing: " +
str(correct_answer - proposed_answer))
self.debug("Extra : " +
str(proposed_answer - correct_answer))
self.assertEqual(correct_answer, proposed_answer)
@staticmethod
def _extract_action_from_res(it, err):
res = []
if err:
try:
for query_num, auth, (version, return_type,
(pkg_name, piece, act)) in it:
res.append((fmri.PkgFmri(str(
pkg_name)).get_short_fmri(), piece,
TestApiSearchBasics._replace_act(
act)),)
except err, e:
return res
else:
raise RuntimeError(
"Didn't get expected error:%s" % err)
else:
return TestApiSearchBasics._extract_action_from_res(it)
def _search_op(self, api_obj, remote, token, test_value,
case_sensitive=False, return_actions=True, num_to_return=None,
start_point=None, servers=None, expected_err=None):
search_func = api_obj.local_search
query = api.Query(token, case_sensitive, return_actions,
num_to_return, start_point)
if remote:
search_func = api_obj.remote_search
res = set(self._extract_action_from_res(
search_func([query], servers=servers),
expected_err))
else:
res = set(TestApiSearchBasics._extract_action_from_res(
search_func([query])))
self._check(set(res), test_value)
def test_bug_2955(self):
"""See http://defect.opensolaris.org/bz/show_bug.cgi?id=2955"""
api_obj = self.get_img_api_obj()
self._api_install(api_obj, ["example_pkg"])
# Test for bug 10690 by checking whether the fmri names
# for packages installed from the non-preferred publisher
# are parsed correctly. Specifically, test whether the name
# alone is searchable, as well as the publisher/name
# combination.
self._search_op(api_obj, False, "set::test2/example_pkg",
self.res_alternate_server_local)
self._search_op(api_obj, False, "set::example_pkg",
self.res_alternate_server_local)
self._search_op(api_obj, False, "set::test2/*",
self.res_alternate_server_local)
api_obj.rebuild_search_index()
self._search_op(api_obj, False, "set::test2/example_pkg",
self.res_alternate_server_local)
self._search_op(api_obj, False, "set::example_pkg",
self.res_alternate_server_local)
self._search_op(api_obj, False, "set::test2/*",
self.res_alternate_server_local)
self._api_uninstall(api_obj, ["example_pkg"])
def test_bug_8318(self):
api_obj = self.get_img_api_obj()
self._search_op(api_obj, True,
"this_should_not_match_any_token", set())
self._search_op(api_obj, True, "example_path",
set(), servers=[{"origin": self.durl1}])
self._search_op(api_obj, True, "example_path",
set(), servers=[{"origin": self.durl3}])
num_expected = { 1: 6, 2: 5, 3: 0 }
for d in range(1,(len(self.dcs) + 1)):
try:
pub = api_obj.img.get_publisher(
origin=self.dcs[d].get_depot_url())
c_uuid = pub.client_uuid
except api_errors.UnknownPublisher:
c_uuid = None
lfh = file(self.dcs[d].get_logpath(), "rb")
found = 0
for line in lfh:
if "X-IPKG-UUID:" in line:
tmp = line.split()
s_uuid = tmp[1]
if s_uuid != c_uuid:
raise RuntimeError(
"Found uuid:%s doesn't "
"match expected uuid:%s, "
"d:%s, durl:%s" %
(s_uuid, c_uuid, d,
self.dcs[d].get_depot_url()))
found += 1
if found != num_expected[d]:
raise RuntimeError("d:%s, found %s instances of"
" a client uuid, expected to find %s." %
(d, found, num_expected[d]))
def test_bug_12739(self):
api_obj = self.get_img_api_obj()
self._search_op(api_obj, True, "example_dir",
set([("pkg:/example_pkg@1.0-0", "basename",
"dir group=bin mode=0755 owner=root "
"path=bin/example_dir")]))
self.dcs[1].stop()
self._search_op(api_obj, True, "example_dir",
set([("pkg:/example_pkg@1.0-0", "basename",
"dir group=bin mode=0755 owner=root "
"path=bin/example_dir")]),
expected_err=api_errors.ProblematicSearchServers)
self.pkg("search example_dir", exit=3)
if __name__ == "__main__":
unittest.main()