Frontport of 2.2 tests to the trunk
2 files deleted
3 files added
18 files modified
| New file |
| | |
| | | # CDDL HEADER START |
| | | # |
| | | # The contents of this file are subject to the terms of the |
| | | # Common Development and Distribution License, Version 1.0 only |
| | | # (the "License"). You may not use this file except in compliance |
| | | # with the License. |
| | | # |
| | | # You can obtain a copy of the license at |
| | | # trunk/opends/resource/legal-notices/OpenDS.LICENSE |
| | | # or https://OpenDS.dev.java.net/OpenDS.LICENSE. |
| | | # See the License for the specific language governing permissions |
| | | # and limitations under the License. |
| | | # |
| | | # When distributing Covered Code, include this CDDL HEADER in each |
| | | # file and include the License file at |
| | | # trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, |
| | | # add the following below this CDDL HEADER, with the fields enclosed |
| | | # by brackets "[]" replaced with your own identifying information: |
| | | # Portions Copyright [yyyy] [name of copyright owner] |
| | | # |
| | | # CDDL HEADER END |
| | | # |
| | | # Copyright 2009 Sun Microsystems, Inc. |
| | | # |
| | | |
| | | dn: uid=auser, ou=People, o=ACI Tests, dc=example,dc=com |
| | | changetype: modify |
| | | replace: telephoneNumber |
| | | telephoneNumber: +33 01234567890 |
| | |
| | | postalCode: <random:numeric:5> |
| | | postalAddress: {cn} - {street} - {l}, {st} {postalCode} |
| | | description: This is the description for {cn}. |
| | | description: This is qnother description for {cn}. |
| | | description;lang-fr: Ceci est la description en Français pour {cn} |
| | | description;lang-es: Eso es la Descripción en Español para {cn} |
| | | description;lang-jp: {cn}の日本語の説明です。 |
| | | jpegPhoto:: <random:base64:1000> |
| | | |
| | |
| | | # |
| | | |
| | | dn: uid=user.0,ou=People,o=example |
| | | changetype: modify |
| | | replace: postalCode |
| | | postalCode: 70000 |
| | | changeType: modify |
| | | replace: description |
| | | description: Yet another description added by ldapmodify. |
| | | |
| | | dn: uid=user.1,ou=People,o=example |
| | | changeType: modify |
| | | replace: description |
| | | description: Yet another description added by ldapmodify. |
| | | |
| | | dn: uid=user.2,ou=People,o=example |
| | | changeType: modify |
| | | replace: description |
| | | description: Yet another description added by ldapmodify. |
| | | |
| | | dn: uid=user.0,ou=People,o=example |
| | | changeType: modify |
| | | replace: description;lang-fr |
| | | description;lang-fr:: VW5lIG5vdXZlbGxlIGRlc2NyaXB0aW9uIGVuIEZyYW7Dp2Fpcy4= |
| | | |
| | | dn: uid=user.1,ou=People,o=example |
| | | changeType: modify |
| | | replace: description;lang-fr |
| | | description;lang-fr:: VW5lIG5vdXZlbGxlIGRlc2NyaXB0aW9uIGVuIEZyYW7Dp2Fpcy4= |
| | | |
| | | dn: uid=user.2,ou=People,o=example |
| | | changeType: modify |
| | | replace: description;lang-fr |
| | | description;lang-fr:: VW5lIG5vdXZlbGxlIGRlc2NyaXB0aW9uIGVuIEZyYW7Dp2Fpcy4= |
| | | |
| | | dn: uid=user.0,ou=People,o=example |
| | | changeType: modify |
| | | replace: description;lang-es |
| | | description;lang-es:: VW5hIG90cmEgZXMgbGEgRGVzY3JpcGNpw7NuIGVuIEVzcGHDsW9sLg== |
| | | |
| | | dn: uid=user.1,ou=People,o=example |
| | | changeType: modify |
| | | replace: description;lang-es |
| | | description;lang-es:: VW5hIG90cmEgZXMgbGEgRGVzY3JpcGNpw7NuIGVuIEVzcGHDsW9sLg== |
| | | |
| | | dn: uid=user.2,ou=People,o=example |
| | | changeType: modify |
| | | replace: description;lang-es |
| | | description;lang-es:: VW5hIG90cmEgZXMgbGEgRGVzY3JpcGNpw7NuIGVuIEVzcGHDsW9sLg== |
| | | |
| | | dn: uid=user.0,ou=People,o=example |
| | | changeType: modify |
| | | replace: description;lang-jp |
| | | description;lang-jp:: MuaXpeacrOiqnuOBruiqrOaYjuOBp+OBmeOAgg== |
| | | |
| | | dn: uid=user.1,ou=People,o=example |
| | | changeType: modify |
| | | replace: description;lang-jp |
| | | description;lang-jp:: MuaXpeacrOiqnuOBruiqrOaYjuOBp+OBmeOAgg== |
| | | |
| | | dn: uid=user.2,ou=People,o=example |
| | | changeType: modify |
| | | replace: description;lang-jp |
| | | description;lang-jp:: MuaXpeacrOiqnuOBruiqrOaYjuOBp+OBmeOAgg== |
| | | |
| | |
| | | givenName: Aaccf |
| | | sn: Amar |
| | | cn: Aaccf Amar |
| | | initials: AUA |
| | | initials: AFA |
| | | employeeNumber: 0 |
| | | uid: user.0 |
| | | mail: user.0@example.com |
| | | userPassword: password |
| | | telephoneNumber: +1 496 709 1644 |
| | | pager: +1 542 068 5162 |
| | | mobile: +1 830 626 1904 |
| | | street: 25322 Hill Street |
| | | l: Parkersburg |
| | | st: ID |
| | | postalCode: 07186 |
| | | postalAddress: Aaccf Amar - 25322 Hill Street - Parkersburg, ID 07186 |
| | | telephoneNumber: +1 003 310 8190 |
| | | pager: +1 940 190 8318 |
| | | mobile: +1 099 164 8705 |
| | | street: 06275 Main Street |
| | | l: Clarksburg |
| | | st: GA |
| | | postalCode: 25027 |
| | | postalAddress: Aaccf Amar - 06275 Main Street - Clarksburg, GA 25027 |
| | | description: This is the description for Aaccf Amar. |
| | | description: This is a seconde description 0548608245 |
| | | jpegPhoto:: SJgn1C9SQgIxuCggSnAuaHJQ2lrVX05UUZLqcxORI6vmmmQqy0kX/kNYb8QoXTmfE6T+J9vAG+TLAIEqK6edJAkWU+Nsm4JG8TXY8UQO1qS4CxSGGThjPh5AgTJYOSKceYqwmTZRM1/Bpdwln8iMQOEXbDqIuuwOd3Cbz8nzpDSUfOd+fjiCF0oe7mGydRdQFYOlD708ziC4k95xwnos/xWE3tDoGokYmG8dufCDrCh0KOqkcDa14/N8Zw3wIH4pAikmv3FDtIky0qyZ7IPpcOYX5HwnW4M7fIeRj3PjLiwflYZ/UF5TWY05+vTzoeL72o9g4kgIJlZbv8IgOm4RfXzF17L+FwodSnzYdIP3I+foXRkzGoljxl3TQ0ZIJ/dMy6ZTeT27InYgRY7oaU9BcbAsPn0FCNJgVm1+ifp4ngg1eoc0u5gtvIGWH3v9TFc69cHr2NC6gJ74MG8/dZsG+emRQq7Ymq/7txbVBWKMSmpuzpaouR+QYWc1QPmTy0K4PiwjRqNPQOGCHhjTnDXGwuX99BIu6UYjdSa19F2j0MNxkMRjmv+fWcMvwNZuzXWzv68bzX9BpYfPNmS1wTzkaGw7mI24cQF2LTrhTZjHOa+m0Vu/f3Tt5ytolLuz65PijLNEu6LNYoE/JwoLiIwrCU3ECcr0M4YXJjN6m6K+nnVxQdqmZS8wy8rZT33+Ya7dRI7rbinF5qACoJhb1TozUh/z6bVTJrrV42SqJgIjLNhJutxYBp4Nem9dfc3MCd5osE6xy9d7Z81+QdQ0wdiCBcfwHJCHe5lSY6YWtCpuCiupuG20BCz6BKplaZ0di1pXYJYNL+BrLA7TBP7eF3FAA/Zn6VFpFNXpulYKjnKjZ1FccGP7p/4BPZ4BassmOxWSau9GuZSo1fy7boS0XxrLxXXxbrWHuUIHE1trMPpeNGK5LqNmCAQ2mzHgxpS5pvJ80qBAYof4NUsNyvREb0/zhsCO6LwQh4PkeCLgmOBw |
| | | jpegPhoto:: aBrvAyl0HWGpWm0Q7M2xMZ5xYuLjNZ2N8xsdHczaMgbInCOMAZ2XP4dO9tXKpxcwh3+09g1lpr8cf+w8YouZgej3K0dtYuCeU3dH+rWIe9qdrSU/ErWLtkZq+/YjmRwg0QAB4lzsD6nD+Lkx86pgY6/1OjoocY7cuJQI/Pydwx3SI0Lwlek087rA0bUCZEt7oVjqdh8nxu0tbhUViVI4AdPbHOxta3/PrRpFsJsusFdUPCwLTpCk1jcy0Q61JyiUJcPLJ045yf0Ejn49nBmF07Q1pgKbD0UODvoxMWk8QtSug/BPyp5CMNWNaW+8jzJojG8SNBqNH21EwdWP3gxKc6S0UeGi2ouWUTXG6H6QKxWA4deDY4k2QiLINdRyK3jDc3fVolZrdZKuoh1kmC2UF4sPST22YrrCuDH0VzcZ35AdONDnE+Dt+t3LoEvCEcFFuVUJHhaAXkj6l0lkdd6fa1IXjNQUNe1nSmIWnLX+BDm1XEtfF0xJaPCuw2YQ/VFXt5OQ9M/sGJ0aInuu3V7Hqqe0DGz6YyvFWFjjhMUPmqy4drZg9xuu+dIKiRhq7N5e+0uwQliL6EloyNo1z3ZsApB81wL1KiLvflTl4X0IQWGAZXe6JJSi+a0rpKzvX0h8Z8ChlnILtRecRbadCGPlpuWaCNdHtQHyy8+kjiIHaLV67Nvf8TkqqVItXaVM+2uF2sbIKh5rTGPFOHbmAsUi2HpNRAjArVC29Lwd4GzVzTGD0i/+U9/a4jAhWYofoHp2dBI+wObVRR1FoL3+MNkiBnVEj0aq2T16xkO3y+cPXLEY/R2Totz/L6V2tu4vKb9xUPrMvbTgDgE6kF0xz3WKAGqEdSbP930i2xX0BzT4wav/JSZtkMquWukclp0KmkTxh5362Gbl3QrGXi44J2qo38MvS+t3GatAR5YaXuFhexheyzFOyp3fpKhkZ2ALkPwLFwE+csVFzXe0i/szgFfISbWuOGnlrFJad3n700a/ |
| | | description: This is a seconde description 5140681120 |
| | | description;lang-fr:: Q2VjaSBlc3QgbGEgZGVzY3JpcHRpb24gZW4gRnJhbsOnYWlzIHBvdXIgQWFjY2YgQW1hcg== |
| | | description;lang-es:: RXNvIGVzIGxhIERlc2NyaXBjacOzbiBlbiBFc3Bhw7FvbCBwYXJhIEFhY2NmIEFtYXI= |
| | | description;lang-jp:: QWFjY2YgQW1hcuOBruaXpeacrOiqnuOBruiqrOaYjuOBp+OBmeOAgg== |
| | | jpegPhoto:: bmGNzx1l2/nHeLBc7vxIE6gEKt0XRSVnL2u1aWyWsScAU7PyQ2N8JOJk3pAQhXIpZIsJm+vp89ZgQQ04Zty3GvMpe5MxqqTnMhq238CpJ52Tnn0atnENTPYRIcwZVpjt6lrq7WCekR2hrw5Csw/9zHa2nzboL0HXqOzdvOHgeoYXHALkk/EdxHSWz0pqOjxMXzaTFWYa5n49z/ShWaB7/znDk8JQSSFnIXNEwOKINEknrtSkOianJ0eomqPmrnvIxE5A0cXoAleBNiipTVp2iBnalja0Ss+dI/fAMXo8Ik+ynvXd6593UzykGTZB6gw0aHdpzYPux0rR1UG090uZHijJWhdXdjlQMYlIBHE0ocvdcFxYA+AHhtbCEMy6JSz2aKJ9CXEcXer4EdN0mKRrhKL5jiVfG7hHb0aTLKyZK2jcuxIq12N7/6q0EXKbFC/UkFMSXUmlQozgrdJpjDxVW8zM8xXLo6yx69qCeKz7wON3oRDZzif6447QKo97I0MWsNZfv5eXlkku2/B5meAOfikm6IGSxZk60Zc+I6QYgCq60m/XSDow8GZraOh/8CFEmm2p095lL+y4BPGGCySowidLnGy3n04HsmEmlFk/wPj6Iw/q5VejcXHQYmnTdGE7c7D8OgD0AvZXKip3LZm+T2pzdwGcvXORSYxf/UzGDAM5PssnM+aw1fxW6/yzwlUOmp1WJBtlCvvrXtQ/brj5Y3MdTsvVUKUiaWYRLByQCNMzm/yb/biqrymReXzb4idfD4Otjrky5rbnRypSqTqBl8un+IMxUb3lqICy7mgFWGZD2wRIDnRRXuKoA59fqb2zarqE0d7jgIdMpR72ZMNGskDkTtQPXg8m55A+B9Id06hp/F2EgDWy9cdTN9wRo/LUIwtDBWA66DMEr7a1Q/lxE9wyyq3oLJKsrSQJp9pJAbA1oOKFavjg7cilWp8U7Nvmc4IMdnud7BcavBGv58GlQ90Lqpgmac8yiFW2S4oH |
| | | jpegPhoto:: uo1MJ5H1P+oNC7hKvmONDM/04l9C49xH2ybFnCQTtNi1ZyNfYxKv+KY+rP+DMy/JXTQPIdO7gUJPBnZcVugzy46E+iPwNuo9JU90IE6cp/quFFyt4jtz9z7e7Q4GSKxIakkpZU0gAsTxoFGQS7U5GOjC2OSHtDokHfNUobfa4zy4iYWK7E276sHAgbT8dGtx7h8vRC3Ow2wyArCZqyXk31XI6UYJkHvNxGISb8X3tSnxdR+RWkbHyFHtMTF3x+Xt03Lp0vNoC5ik+qXRtas68+s8Wd7KIX4OSn/wNxdmN/hRY7EWv3eGNnod5q/0oucXIjg7qH+cajxofIba77TNxXJ9IlSKpoj78G931rpBI1WzWQSeH9e9h0S90Nw2zb5FuLTvvKa2ttxCiXIHAhdyfOPyJj8ISURAm0nYUrmwe20ETTDaAUX827t1Gbg+0pYzr+GbM1HuBufc7laAI5IDm9fxWqNg+yLzw0bi2Z/0d+zS5lUMNl0NOk08DTzZA/VYi87nszrB99ycQSQs6NalAMNI7TdBdMTWt2dM2zhKEifwwW9aX1xq6G4UmOBKvYXOQzmz1Xk1JH+pULnMYl4/pjupYR3v9JXo3flFwd9ZL+jHN7odRQecCq4fkkdFdyWgfeJjcC278n67YSUsYDA9mr310nojhfBA+dbzTPIM0kuBxFP7PY10USZoU0nAEP75GrxG4fQxuLbdm7vBQLqRy9ee6voJcvkDLGf5MwOneB6UuUtDR4AdlKTa70Ur72XwhlhbACnFj+xKBE9ZTxcx4dv4Jiv8oOPGYLEPZ4jLYIctmLc4nrryTpVskpJ0HqR7aVP9vzA0vX4mR/XxklAXH8tg6VeiOP0NO+d0xI6Lup042mIt25LMhb2JGqYzoie23tDjC9ZoECqWhw1lBPu+WkuIy5P7wTjrq5qDdkUR9jzWNMHSgwmGEtksXCgVdZgREwiOX0iEykhBB+PVrsttp1ydWlE91Vk1yh52htd8 |
| | | |
| | | dn: uid=user.1,ou=A,ou=masterModifyDN,o=example |
| | | objectClass: top |
| | |
| | | givenName: Aaren |
| | | sn: Atp |
| | | cn: Aaren Atp |
| | | initials: APA |
| | | initials: AXA |
| | | employeeNumber: 1 |
| | | uid: user.1 |
| | | mail: user.1@example.com |
| | | userPassword: password |
| | | telephoneNumber: +1 099 123 0399 |
| | | pager: +1 060 238 2392 |
| | | mobile: +1 792 029 9403 |
| | | street: 19012 Ninth Street |
| | | l: Jacksonville |
| | | st: KY |
| | | postalCode: 06553 |
| | | postalAddress: Aaren Atp - 19012 Ninth Street - Jacksonville, KY 06553 |
| | | telephoneNumber: +1 762 034 0810 |
| | | pager: +1 083 168 7625 |
| | | mobile: +1 222 086 9809 |
| | | street: 03740 Laurel Street |
| | | l: Parkersburg |
| | | st: UT |
| | | postalCode: 42252 |
| | | postalAddress: Aaren Atp - 03740 Laurel Street - Parkersburg, UT 42252 |
| | | description: This is the description for Aaren Atp. |
| | | description: This is a seconde description 5540536681 |
| | | jpegPhoto:: QviSbNRxrKCS6wN3AcXUyg+fE/xzh0eeuJlORDPEnnSlCy65IFPymAHoCQ46bI47FKW6G6sRpTpRJrU0816QRUMDp8UvRphiL0qTw4HK1VI/ID1CiqFtxgCZ2aMAQl3r1D9hxyTvJxkBwyBt5OpI3LQNtxlnZMTIX6EVjwvagRm1dko1eV820lu2zxLBKZMDDKZSMAjvsAiXpOD9k6CGDUOlCUbfRstBXipYk7Pec15yqRpOd7Y1THjODO9Kv6zBlqUq1bEsTotLdM+XZaPlR8ex9TJYn75zvhkLPhMXuoCP08tpEuSUaCIg2wbaraxq2hy3g5UM0O3BQ+M5NsYFe2cUiGSoSpPHFGs2WCUzN07JhFFtl0N+0JAbLSJMH83qwR1umhU7eQlhxKrkAiG+fnwJ4LazpmVd+EFBbIrX01RaQ3i2KVAcChNRRbnb8WXWGiODh8VyDQz69mxMrufS5btbdwI4Z+0a2Wcft0ZGJLm5X7eyuaeo4i4+QdJN8HhMW1HlGyx3CeqTbo5itTwYA9bBVW6M8aQV2FjRcR+YuFY7iEwXIZzWeOz1g+Uvijb0B01ZCqglaCIe6IZx84R7+OfcuV42FXIrifpa2K3tk/yPug0B5SHrjJItg43CqmfZr9XyIyMt317BtpXzZ1IWyvAU4j7SkPsqLv+Bdgzob48doKUcasRvI3wo097/b+Qx9YUn76Wd4YCAJdZtyjRCJILOw4O7ty6lFvFBBweQcZx9mGwLuII/e3OI1BE0N/254QVSw0mcA4yQ+uL/l47uzRYNEpi31DRfzPeN/yzgWOEcK9wT1vU+r60xdgk2Pm2v3aAKgHA6JJPFBerIYEtfLD4oygnJC99j3at5OJgaKGd29/0/Lkqjl+RWaVVlqV1/peYZwOLjYhVeSAfs8XRcvjvwKvpysMRnrHRIi0jYLHe2G4+GMP7se1cu4xQfFdJ30H5UR5j0g2Lv3iB/s8Woxeneb8f57wImYXmVkZus |
| | | jpegPhoto:: 85cvWkS03ZE55m8yTPHkupTngCrbUAfw0UQ35x3OvdPfeot4qpGrWzhMvm2bIH0aJukCTLfu+QPrTkbQzI8x7OBr1RsuQ9tQOp3Bcn09QG5GBaYLZzDusUrD5MHbECcQf67VizWO6E8I/1x86o4gRAg7rICon3U8vwACvpIbmCjglAXEwSs0B0vtXxAxzuSUwxav+Ubcvq3nwzYP6gjvNcX6Lo0Y01LYR6G8ty+Cpbr0KCOw6uqQ1i8hyo/xDpuzfB588eUSO5M5rI9amF/rBNHLbON0Pc/0Ak1ET5mk60ws0zcTGyQ2KGTv5D53SABIR20iYUk+xTlE5KASnyDphuDZ/WGdA0oMwbkJHYdn94Bi+0LjX8t+jPvhO1QPv/NVPKJLLjz6UbOxcrmcRRF9ApnvuO088FPbCLqGyvD+ZZYtbKMrQ4tvUUozQb9CihLOYs88T8hFlg0E3ll1v+jq+NP4+Qd9TipUhsr/ZW0Hd0K3b7f+yVs0VnIc3qb63hd7JafH2dk7tuxeIlr97MvgI8+kw6bW9EVevwfL9zzL1C6TNkiaLUKZho3DiySOL1X5reCCm/ollIMFVsnpzoSu93KoyDXs0M72vQ3B6uj1PcRBIbmcjBRydX1NFGjuMazjVohw0Y19gsGgdPHNKi4uxL+ViEoLzyKl70OKkNyQZjzSmEJi6D8t7XQPjKZrOKZTKO7i08J7gJK1IGM+7KyRcqTho5LA1zWNcDhHgqR0i9roFwMFvXcMiO2U8XOcHLYBNk896nHSAXI3fx0u48m6WMLBeFIUuLUhMR0hBCkFW0oRWuk0DjnLUdJbSJczlkpP9/SP0vQKH0o7zrBHDB1L7Fjq8Seowm85IrI0v71og0xcF3Tp8maKPG0ZVfpXJxfn8NaTj4jvQMXGZFSBnUbL328y60uiQGDBW+SB2pe6nROhZ0DXePG0xp42nJR+kP5/zT6IFlIwn9I8LvXP4MkjkSFR241aEN9UUtUItOQK |
| | | description: This is a seconde description 3783019910 |
| | | description;lang-fr:: Q2VjaSBlc3QgbGEgZGVzY3JpcHRpb24gZW4gRnJhbsOnYWlzIHBvdXIgQWFyZW4gQXRw |
| | | description;lang-es:: RXNvIGVzIGxhIERlc2NyaXBjacOzbiBlbiBFc3Bhw7FvbCBwYXJhIEFhcmVuIEF0cA== |
| | | description;lang-jp:: QWFyZW4gQXRw44Gu5pel5pys6Kqe44Gu6Kqs5piO44Gn44GZ44CC |
| | | jpegPhoto:: csSPIvKkWHoVSX417JnA0tHqAoCijGVFiWMlT35MYknOv9KRKbUq7klpbAqj8hw/VwgemAi8ypos7ptfY62dva0QzIWHm8KW4uk/zF0dn5phy42sePKDF85AqQJkjOOMTowEU193D3Mv4jxUsHvqUGLncS3XNuTWP+ieHvPWO2w1CdUWJHCVR0La/9QRWbT4F7akpRlPU704c0HL8oiQd0QNaMAdYQiS82JLoMdCy6wM34OeVoV0wULkux9PuNg0cnPo3psYavj5C/avikZ+fRd/0Cmem83IhHQQ2Wbes26HNa7IhyxbAwDnSwK7ibCftKfaiOfQG+n0JangTRikucnPrMB+0fYLw/vF4cz6lkFsyzz2o6x3hNbeKaRgNu0ER8L5W8NV/ETTtBXUxGkwldQ4Fj0F7i1MNtUZe1k3kywYbOvNy7T52+/S1dtLp0RvLAOKP574xXPl9B1lDR3HuLmVaVb92IXTOtsOjFMwq85Hg6HLLKLgSLtwo1p3TjfzW9w6X/0nB+P8nvyrNp9XGHwJfuX3xRIFbdMLNl0q64O8OygK00/RJGQjzeyj6w00feNnPoz+p+Gf0qtKGoo9e7mfwc+wTkBPkpHkZoEE4mFK5Ah+JsOVN3bnVcnJ03GeRBlGmO6AgPMuCI3R8AsVCeP7bcOR8oN0VyUPtIA44JZMhAfAckV8DpYvGdntnwVZA1nqo68Z5tfXjtK96xw0HU1B7oBT50G9Fid+GqpnUR3bz2jPMA2WqlAsdRTIS34t/MGlzAkgNHJyGqgir8+h2n97pX0Atkq9eYsi6Co5CWyK2CDWKvXcd0h2iEWtIzEiPi5cF/dYaUa9OKiyVWQbwsVDnU0SISWIY47kOkZgh4QoJJsxff0gOVaV5y8n2iaar7We7qEtwEMypH5ZorhXjEeqP2nBter+jSb0NiwvUoAtSqDujQU4CNOxuuiaJrSXA9P2JBr7DPHFANGH6CI4m3Om87Qanr9rb4J1Udus |
| | | jpegPhoto:: VGoE8Wwf1Of0AcmHhpd0WxFL6MUJM0cEqq7Hdo7WiCMYy0Yy0j8JKx0lvkVklmHaCiX0jXvEwJPCa92rQhnzor8mpNIpCqRBpYpLPN5OvZy4/2XDVsP36wGwjJyE0AbPDZUwWdkxp+MxbiJ4HlDqj00gl/osHS/OjZ0aQL7G0BeR7+veRijO3+XHpCgviagGGjV9DF8ziee+JDJLuCtGwhKLz9/+v0HC78YawV7numfDjy9Y6jbesIoQmj+v5CWronL0zyjvFy7pZM8InL0LATUTOXIEnNCU7XnwvoKcFrJcEmunQxHcIX/rTY0zNeon6JQa0C4Pb0MC0o56xB5aNO4aqSshTlw6zSsA5eAKfTFTKsAhRzwI2KdN6D9q4n1FgDFRC3GiI1z0d4ii+mHtRDB8wEWf9WOPgVY/tYV0+/xJHkMO8L6tFtYlVie0cUgoflxeWhq+3BHWFfYgPYErG1QeBWC2oK9oRoWvnHOpacjFCRFqsK5EerU1ZeodFoaw0AkFJJXtiSr+tv0+VnTRvzYz0gIwBPTCLSk+BXQMgmR55aKyNTO6lVkpC5s03P0Akib+Fn2H/b8Jz++OD3OQFKbcUdkxvYRXm9U0gBd37Iay0wnjJT6K7xFBpZHu8zSTZzX6l9ufCSqo7TmA/LV2E/lbpbKgJHlK+VwA0vV2hqgqJDdYsS/NTu0eU4MM5SeIpCPVFN+mDG0991zCj2QHa3/6qpynqwo8Px+Q9J9FSSb4qspzY4zQ8ups00UeFY574g0eXGPHSXyQmdHJqbFv3z88M3miXqh5XqdKapHOwo2XmnOJycedzU3z34tC33ZL0YSEKtKcNDM/0BICLYUP78gE6fDkjM5F0BEaBaDTymPcIzVPBKHbpyH0fJfV09g4soHYD+eE/nZrGJlMUWL0/nrPU1fRV9PaAFpZbL6mEKsDGTgsvTjXkiwuK0kRCtyhuuNCTwqQvHHgDaCv/sktOyGOyJ678zbqFv8+tbdh |
| | | |
| | | dn: uid=user.2,ou=A,ou=masterModifyDN,o=example |
| | | objectClass: top |
| | |
| | | givenName: Aarika |
| | | sn: Atpco |
| | | cn: Aarika Atpco |
| | | initials: AUA |
| | | initials: AFA |
| | | employeeNumber: 2 |
| | | uid: user.2 |
| | | mail: user.2@example.com |
| | | userPassword: password |
| | | telephoneNumber: +1 060 723 1059 |
| | | pager: +1 440 777 5507 |
| | | mobile: +1 734 805 0238 |
| | | street: 04305 Ash Street |
| | | l: Presque Isle |
| | | st: MO |
| | | postalCode: 42519 |
| | | postalAddress: Aarika Atpco - 04305 Ash Street - Presque Isle, MO 42519 |
| | | telephoneNumber: +1 152 586 1075 |
| | | pager: +1 533 854 0877 |
| | | mobile: +1 475 007 5496 |
| | | street: 97831 Cherry Street |
| | | l: Corpus Christi |
| | | st: RI |
| | | postalCode: 02334 |
| | | postalAddress: Aarika Atpco - 97831 Cherry Street - Corpus Christi, RI 02334 |
| | | description: This is the description for Aarika Atpco. |
| | | description: This is a seconde description 1046409666 |
| | | jpegPhoto:: bm01wvP1qOQJeoZI7tpr02E9CqxwWcg7kEkVxJq/0YVVEC3qLU/ZqcEcmjuXMTbQGkB/23daAbruqBCQLKjr2k3wgTiPNyAsD/XweF0EjTOw/JYglJ8RSO4yZbbOtqRrab8RpmzUDkK7nmOcacY4ixb6c499F0ZDoE0XG2aKKpQBm05+O82bGtHGPW0D09AUQUYHqqq57ebae28TOxDO8j1X4Bk0jFxVUdswcd3PIuviMZs0vdq/egZAtA5OAKf82HDbpj2AnTdeRXkqzFYwq404MD3fnxONvegAXVqSPDijoGSt/7Aej68fuHwHQudf+nRdJZC3LBJGEoxTaKqpVzgbOJ2WFyz/r+OOeVTg5VyaSBZl8K1sNZ5X6xpFhh1kffpnrCKSKlNiayiIh1sRFTLV0JPQDR0aUiagaH03/sGZI8jr7W7bS70ybnI2lUIjMjwoA6AqmepDcfF5YIPUzurtIx/XMP26D2zLlBjMJie57y9mpIZbkMxwjJGRqg2IOg0YQBhSp843fdIKJhT4dmwSMXheb8IYn7rFgx5+hEOJBIO8WVUIK/0bb3E9Nu3YZSy7W8THej9tElkOc6cUw4XGEIHlKRTpxpVsUM6GCCGvwwNH3IWhUuT0fn/6fhvHE89MItJSCR5qgZ3EeL6sIz2br6SG5HA8sufRX4FwREH+MPn8su/24bMiexyBT+WOxxqWy2bx2M3D+CrLq+LgcaqDqZOab5qffUoPs/EappmehO+UClhrBaXLyh9+qc/8FSoYyUe8okV8D0TnoOG/LG4jR38DoyxIlGiKV2UeLeTvvUI6OBJa1WADPDHrg/9+JehNigNSVbjE0tTw88SA8L5occ6YhS/tV1uJOu0W8RIhERb0We6cA34E1854XZ0PqlzmLFguywYnVpxXG1SXpo59i4Hr/bgxUQq0RjxBpGdg3yBJpJ0oWnvMQHJ8HYAmOYINXEjoaEF257JWILCgFah9Rx0qHZv9/9jwKscS |
| | | jpegPhoto:: Aetnjx+7gLWcm2bKic6alq7hcFfQ83cEOg7/W6k7wJ+DTXTfrNc2nx9r9EYcubkJnYzv+IzYnSVivjru8svlUNnOWkT5v4soXj+AWXbH83rb1ggiBLWAQ+AdpKlwb/bI/eqARHeB8IKx+A0QN+jWIT1HZOlqZ0YyBB/Jy45O+ymXF4YGsR3cWt31rDV4++LwrPrn685/DuVyI3tLtzDc+37x6PW68BA8U01B/6aOJrBf94BpBzAdMPVbReNouX9qM7O07GB60yjLZwkjrjgjfPpp0ZaVtKpaw6jAPVPAw6022JxGWodqe9q81GJqI2GQD0HduWPaXdx82VvWJdMm42A9Gb7U9flqWC0atY/IqiEta07b0jPbpuLSbIaue9cyEuL1isg0rVPhM9oJbLLhO1cWBxOg0RjXT681MW+7iuPxkcGbVy1KkG6jFTorHcZ849h2/TxYKUsoSsUd5ns1slS0Q0V+vthgojQOIZFFYngCOQMWZUw0uEaGigY0HMI6dsTlp0DmDnFA48vShoGbsuAV/81IlEzcMwTdIR58ms+NXCi4J2rmyHBfVykFx2HG2k/Hs+8SmlEK+dHhy0K0FR94tjNuGg0HXgKP/KgJl6Nbqi0iMnHSD6/xw86Q/lwKdqB7TJoiF1kcBEMk4PzrZyR00DDi4GNCpDesfX0r4+MloHXrbjdy0bsH4gQC7qImw6FkZ2ZgO2Rjyqpp4Lu05pyo9GIx51tb0v7UFQQwsT7OPTD/IQj93niWRcIXaa41o961EEtG1XVtoxSaDvAD566FkWhgfiIbW9Qg1yFtFej0/fgiw82A7lbmXCBlcpg7KoWwRRjpQ0tCuynUq0sh6zhrq80D0uU8kvspRkK7gKxivTIB0cHI+ItiHn+szukl8hRqOWqiUs53+R3SiEeF2k5bPG7nZ0HG8CBd8RNz5iAueeLF1NYg0HWTHczVVzBuvyx0Km93eHSMUao45sHIK0gGyjueY4NAYOCMo4kk |
| | | description: This is a seconde description 8392364400 |
| | | description;lang-fr:: Q2VjaSBlc3QgbGEgZGVzY3JpcHRpb24gZW4gRnJhbsOnYWlzIHBvdXIgQWFyaWthIEF0cGNv |
| | | description;lang-es:: RXNvIGVzIGxhIERlc2NyaXBjacOzbiBlbiBFc3Bhw7FvbCBwYXJhIEFhcmlrYSBBdHBjbw== |
| | | description;lang-jp:: QWFyaWthIEF0cGNv44Gu5pel5pys6Kqe44Gu6Kqs5piO44Gn44GZ44CC |
| | | jpegPhoto:: KaLFOE7CYVgvDMnJ2J3Qn8EZKLkzbMwnw5+B40lKXXAw8Ap08cUMmUr1G320tidylKJ9Tc2gEJH5om00VlZ000PlJJdlxO7OUZ3fTiV6FkL0RnQQ2OvwV8+INPmcccIWkMcf3LXh+bIsJJM7xpOhyr0WOFWXgLUQO354y0XtiJi41pJiObDQBufdgMqUQ8NJY0ZhtpTRYLLMQnjIl5DuvbDwMflYIwTRKF8jjGR8Qi2SgQIXM6zKzmADa41ls4UeDDDWMtuFpkX39QUxYlLyxE8Oxv22gzREY+mOzzN6KbNtQfeXwWt+Iuy1kVueSymlBDh7L05pFuJ43lLCmsDBRjjfQ8KEK6UqgC4Z+MASyPXsPfX85emslQ1J4z74/hJ9Sozuq3igQp1ftXtP+BFITp40LGWV6KS/MUVUkM06pyHdw3QYUkXEUqmnWssZEMjOXu9+swofvBWbVv9FgZH54c63DtF5NeL/EAZnXfucZinYciRrku0H5gK/J8frt8nmUGIf9Y6TT+nCeAX8l2d2lfA03IW1qYVTJcoUMO0KTs0ZSkrtdZzlwwB1WLWi46ikpjw2xnnmCCh7rwF8ClL+zWD3/FdOYn2K5pPTPKjYcSy0zvTEYk3B9dOfA4bPv+2aYqSPjAy0WtL85w6WdNKOIixIrEi2qrsWnIKUwX0YBIOW7XuS0blw2ONt9nkpsxlF7Mws/pKU1o53o9t60/bVzGx+45fdHcMDnwjtVWm9n0mUVAGfaa+nl79p9MxhzPFdSuT6Zoq/oAdbciUxrzNSEvCZs3sWczElhX/EzsNOsl0sWJEyw6C554kcM/npt7XRv2tdy30iM2I+JsAGlRVMlQ2LXlw0pM+eTo0MQTEIg0RFEEs4OXMar2zUu96CIUyjGLBuWoAEpZ9cP5QAxGGw2nLGpNHioYlG3yfxDCiP2nnOdXTX6+hFqKjB+6CR1LUVfWG9mZ6XZSmAIlTDb827ce5uo7FJnq/27V6C90Oc |
| | | jpegPhoto:: +Krza1bjbueP7oHE/tioCChMn6OFyQGgsJyPhb7QLxwtsS/ydNUrlE4oZ9j34belO0Rz4Hyj0BHDxt/HBltKXSn+SijO56ZDKeMmw0/j32Xpwwt54zz0qX0JuDFJUghFA3OZ4jFHX/v0LZAC1G2QY7WQ+2vML6LuZfudL0Qz80giV+487dUyzGHV/vc92YK1YCFPmw05c+F+heDrJkAbcXSOPog3T1TrdAl8RCzYahxJr6E40+oW662oHWS8tGskDZMQgb7KdmAPJRapOBa5MYk+PkR0qaeAZDWvT99+HoWqYX57QVqssZPhUjGeUKk4CKQIb/P0qouUNDSACs5ipBOZLfmXht+G5AK1WSsVmTlpduCgcS1dpYssAl8Jpvnjpbk0omyE/1Yg/wNZ09aTVK9k3S32hYOOvF9m4vg9euzWAtwjfkVo/9vjboGrALep+ynttYHB95Yg4NsckstMm0XqK8oSplarbbOT2y61R/4sQQ1NYsRpvmykeEIoNUxsB3LAGqI/fVBjvAX4RUmx1fzKYcim2f7pkvrPN7TY6sEjdS0LQKDGbM9pSjmQfJn8Q70kvWN91Rt0x20KmNnBifm//Cg15FLIvP5aKcP3Wti3qX9oi/dIUWxYLivMr41cpYyyU8Bbacfg0LwY+tZBsd9l46rJEyF4oatdgnobJpNyrt2TLGJzKOCmQRlU8pjREdCaU4a6m9hz6nwAYZXmzX//8eg2DEtT/5PR+Y4qQpMtAxQjs4osT3koLVXZFuG0sqFLUtURqXeoSsdygSACQY3KkM2WiFpf2IHOkv5eTy7vvLkfhYvRcJ/w0nyEaI8uHamKjd0WmV+lrFTXSBi9YnruH2GbHlCAUickvQgtjCRbVbDzBOwY5BjVO0aZ05aTyn2oopvbGsIEAluWSDWx4BnhXAF2+Mx932EvFfa+Sn3Uk1RGzfwyMc0pCf4wsjimRQYYGs4pLKuLbI82I6goqdCXI4T60dO1QapqPhgU |
| | | |
| | | dn: ou=B,ou=masterModifyDN,o=example |
| | | objectClass: top |
| | |
| | | postalCode: <random:numeric:5> |
| | | postalAddress: {cn} - {street} - {l}, {st} {postalCode} |
| | | description: This is the description for {cn}. |
| | | description;lang-fr: Ceci est la description en Français pour {cn} |
| | | description;lang-es: Eso es la Descripción en Español para {cn} |
| | | description;lang-jp: {cn}の日本語の説明です。 |
| | | description: This is a seconde description <random:numeric:10> |
| | | jpegPhoto:: <random:base64:1000> |
| | | jpegPhoto:: <random:base64:1000> |
| | |
| | | postalCode: <random:numeric:5> |
| | | postalAddress: {cn} - {street} - {l}, {st} {postalCode} |
| | | description: This is the description for {cn}. |
| | | description;lang-fr: Ceci est la description en Français pour {cn} |
| | | description;lang-es: Eso es la Descripción en Español para {cn} |
| | | description;lang-jp: {cn}の日本語の説明です。 |
| | | jpegPhoto:: <random:base64:1000> |
| | | |
| | |
| | | objectClass: person |
| | | objectClass: inetorgperson |
| | | objectClass: organizationalperson |
| | | description: This is the description for Aaccf Amar blah. |
| | | description: This is the description for added-user.1 |
| | | description: This is another description |
| | | description;lang-fr:: Q2VjaSBlc3QgbGEgZGVzY3JpcHRpb24gZW4gRnJhbsOnYWlzIHBvdXIgYWRkZWQtdXNlci4w |
| | | description;lang-es:: RXNvIGVzIGxhIERlc2NyaXBjacOzbiBlbiBFc3Bhw7FvbCBwYXJhIGFkZGVkLXVzZXIuMA== |
| | | description;lang-jp:: YWRkZWQtdXNlci4w44Gu5pel5pys6Kqe44Gu6Kqs5piO44Gn44GZ44CC |
| | | cn: added-user.1 |
| | | sn: Amar |
| | | |
| | |
| | | #@TestIssue 1402 |
| | | #@TestPurpose Modify self against default global acis |
| | | #@TestPreamble none |
| | | #@TestStep Client modifies attribute in the user entry. |
| | | #@TestStep Client modifies allowed attribute in the user entry. |
| | | #@TestPostamble none |
| | | #@TestResult Success if OpenDS returns 0. |
| | | --> |
| | | <testcase name="getTestCaseName('Self Modify')"> |
| | | <testcase name="getTestCaseName('Self Modify Allow')"> |
| | | <sequence> |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'ACI: Global: Self Modify, user modifying itself' |
| | | 'ACI: Global: Self Modify Allow, user modifying itself' |
| | | </message> |
| | | |
| | | <call function="'modifyEntry'"> |
| | |
| | | 'dsInstancePort' : DIRECTORY_INSTANCE_PORT , |
| | | 'dsInstanceDn' : 'uid=auser,ou=people,o=ACI Tests,dc=example,dc=com' , |
| | | 'dsInstancePswd' : 'ACIRules' , |
| | | 'entryToBeModified' : '%s/aci/global_acis/mod_entry2.ldif' % remote.data } |
| | | 'entryToBeModified' : '%s/aci/global_acis/mod_entry3.ldif' % remote.data } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | </testcase> |
| | | |
| | | <!--- |
| | | Place test-specific test information here. |
| | | The tag, TestMarker, must be the same as the tag, TestSuiteName. |
| | | #@TestMarker ACI Global Tests |
| | | #@TestName Global ACI Modify Self |
| | | #@TestIssue 1402 |
| | | #@TestPurpose Modify self against default global acis |
| | | #@TestPreamble none |
| | | #@TestStep Client modifies denied attribute in the user entry. |
| | | #@TestPostamble none |
| | | #@TestResult Success if OpenDS returns 50. |
| | | --> |
| | | <testcase name="getTestCaseName('Self Modify Deny')"> |
| | | <sequence> |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'ACI: Global: Self Modify Deny, user modifying itself' |
| | | </message> |
| | | |
| | | <call function="'modifyEntry'"> |
| | | { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST , |
| | | 'dsInstancePort' : DIRECTORY_INSTANCE_PORT , |
| | | 'dsInstanceDn' : 'uid=auser,ou=people,o=ACI Tests,dc=example,dc=com' , |
| | | 'dsInstancePswd' : 'ACIRules' , |
| | | 'entryToBeModified' : '%s/aci/global_acis/mod_entry2.ldif' % remote.data , |
| | | 'expectedRC' : 50 } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | |
| | | { |
| | | 'dsBaseDN' : 'dc=com' , |
| | | 'dsIndexList' : [ 'st' ] , |
| | | 'dsCountErrors' : 'TRUE' , |
| | | 'knownIssue' : 4293 |
| | | 'dsCountErrors' : 'TRUE' |
| | | } |
| | | </call> |
| | | |
| | |
| | | </call> |
| | | |
| | | <script> |
| | | msg1 = 'Statistics for entries that have' |
| | | msg1 = 'Statistics for records that have' |
| | | msg2 = 'exceeded the entry limit:' |
| | | </script> |
| | | <call function="'checktestString'"> |
| | |
| | | </call> |
| | | |
| | | <script> |
| | | msg1 = 'File dc_com_st.equality has 51 such entrie\(s\)' |
| | | msg1 = 'File dc_com_st.equality has 51 such record\(s\)' |
| | | msg2 = 'min=14 max=31 median=20' |
| | | </script> |
| | | <call function="'checktestString'"> |
| | |
| | | { "location" : Pservers[0].getHostname(), |
| | | "dsPath" : '%s/%s' % (Pservers[0].getDir(),OPENDSNAME), |
| | | "dsBackEnd" : "userRoot", |
| | | "dsLdifFile" : "%s/%s/fractional-replication/basic-master.ldif" % \ |
| | | "dsTemplateFile" : "%s/%s/fractional-replication/basic-master.template" % \ |
| | | (Pservers[0].getDir(),remote.reldatadir), |
| | | "dsReplaceExisting" : True, |
| | | } |
| | |
| | | 'dsAppend' : True, |
| | | 'dsRejectFile' : '%s/basic-masterOnlineImport.rejected' % remote.temp, |
| | | 'dsOverWriteRejects' : True, |
| | | 'dsLdifFile' : '%s/%s/fractional-replication/basic-masterOnlineImport.ldif' % \ |
| | | 'dsTemplateFile' : '%s/%s/fractional-replication/basic-masterOnlineImport.template' % \ |
| | | (Pservers[0].getDir(),remote.reldatadir) |
| | | } |
| | | </call> |
| | |
| | | 'dsAppend' : True, |
| | | 'dsRejectFile' : '%s/basic-masterOnlineImport.rejected' % remote.temp, |
| | | 'dsOverWriteRejects' : True, |
| | | 'dsLdifFile' : '%s/%s/fractional-replication/basic-masterOnlineImport.ldif' % \ |
| | | 'dsTemplateFile' : '%s/%s/fractional-replication/basic-masterOnlineImport.template' % \ |
| | | (Pservers[1].getDir(),remote.reldatadir) |
| | | } |
| | | </call> |
| | |
| | | <defaultcall function="fractional-replication_config"/> |
| | | |
| | | <function name="fractional-replication_config"> |
| | | |
| | | <sequence> |
| | | |
| | | <block name="'config'"> |
| | | |
| | | <try> |
| | | <sequence> |
| | | <!--- Test Suite information |
| | | #@TestSuiteName fractional-replication config |
| | |
| | | |
| | | <call function="'testSuite_Preamble'"/> |
| | | |
| | | |
| | | <try> |
| | | <sequence> |
| | | <!-- fractional-replication setup --> |
| | | <import machine="STAF_LOCAL_HOSTNAME" |
| | | file="'%s/testcases/fractional-replication/fractional-replication_setup.xml' |
| | |
| | | <message level="'debug'">'domainMap=%s' % domainMap</message> |
| | | </sequence> |
| | | </if> |
| | | <script> |
| | | testsList=[] |
| | | testsList.append('mutual_exclusiv') |
| | | testsList.append('only_optional') |
| | | testsList.append('alias_attributes') |
| | | testsList.append('mixing_add_set_reset_remove') |
| | | testsList.append('mixing_literal_OID') |
| | | testsList.append('exclude_scalability') |
| | | </script> |
| | | |
| | | <!-- Execute the Tests --> |
| | | <iterate var="__test" in="testsList"> |
| | | <sequence> |
| | | <call function="'%s' % (__test)" /> |
| | | </sequence> |
| | | </iterate> |
| | | </sequence> |
| | | |
| | | <finally> |
| | | <message>'Test Cases Completed.'</message> |
| | | </finally> |
| | | </try> |
| | | </sequence> |
| | | <finally> |
| | | <sequence> |
| | | <!-- Test Suite Cleanup --> |
| | | <message>'Finally: Global Schema Cleanup.'</message> |
| | | <try> |
| | | <sequence> |
| | | <!-- fractional-replication cleanup --> |
| | | <import machine="STAF_LOCAL_HOSTNAME" |
| | | file="'%s/testcases/fractional-replication/fractional-replication_cleanup.xml' |
| | | % (TESTS_DIR)"/> |
| | | <call function="'fractional-replication_cleanup'" /> |
| | | </sequence> |
| | | <catch exception="'STAFException'"> |
| | | <sequence> |
| | | <message log="1" level="'fatal'">'Cleanup of test suite failed.'</message> |
| | | </sequence> |
| | | </catch> |
| | | <finally> |
| | | <call function="'testSuite_Postamble'"/> |
| | | </finally> |
| | | </try> |
| | | </sequence> |
| | | </finally> |
| | | </try> |
| | | </block> |
| | | </sequence> |
| | | </function> |
| | | |
| | | <function name="mutual_exclusiv"> |
| | | <!--- Test Case information |
| | | #@TestMarker fractional-replication config |
| | | #@TestName Mutual Exclusiv |
| | |
| | | <call function="'testCase_Postamble'"/> |
| | | </sequence> |
| | | </testcase> |
| | | </function> |
| | | |
| | | <function name="only_optional"> |
| | | <!--- Test Case information |
| | | #@TestMarker fractional-replication config |
| | | #@TestName only optional attributes |
| | |
| | | <call function="'testCase_Postamble'"/> |
| | | </sequence> |
| | | </testcase> |
| | | </function> |
| | | |
| | | <function name="alias_attributes"> |
| | | <!--- Test Case information |
| | | #@TestMarker fractional-replication config |
| | | #@TestName alias attributes |
| | |
| | | <call function="'testCase_Postamble'"/> |
| | | </sequence> |
| | | </testcase> |
| | | </function> |
| | | |
| | | <function name="mixing_add_set_reset_remove"> |
| | | <!--- Test Case information |
| | | #@TestMarker fractional-replication config |
| | | #@TestName mixing add/set/reset/remove |
| | |
| | | <call function="'testCase_Postamble'"/> |
| | | </sequence> |
| | | </testcase> |
| | | </function> |
| | | |
| | | <function name="mixing_literal_OID"> |
| | | <!--- Test Case information |
| | | #@TestMarker fractional-replication config |
| | | #@TestName mixing literal/OID |
| | |
| | | <call function="'testCase_Postamble'"/> |
| | | </sequence> |
| | | </testcase> |
| | | |
| | | <!-- fractional-replication cleanup --> |
| | | <import machine="STAF_LOCAL_HOSTNAME" |
| | | file="'%s/testcases/fractional-replication/fractional-replication_cleanup.xml' |
| | | % (TESTS_DIR)"/> |
| | | <call function="'fractional-replication_cleanup'" /> |
| | | |
| | | <call function="'testSuite_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </block> |
| | | |
| | | </sequence> |
| | | |
| | | </function> |
| | | |
| | | <function name="exclude_scalability"> |
| | | <!--- Test Case information |
| | | #@TestMarker fractional-replication config |
| | | #@TestName exclude scalability |
| | | #@TestID exclude scalability |
| | | #@TestPurpose Check that we can exclude all optional attribute |
| | | #@TestPreamble |
| | | #@TestSteps reset fractional-replication settings |
| | | #@TestSteps exclude all optional attributes |
| | | #@TestSteps test setting mix OID and literal for class and |
| | | attribute |
| | | #@TestPostamble |
| | | #@TestResult Success if mixing in all context |
| | | --> |
| | | <testcase name="getTestCaseName('exclude scalability')"> |
| | | <sequence> |
| | | <call function="'testCase_Preamble'"/> |
| | | <call function="'reset-fractional-replication-attributes'"> |
| | | { |
| | | 'replicationDomain' : domainMap[ldapServer][0], |
| | | 'server' : server, |
| | | } |
| | | </call> |
| | | <script> |
| | | # generating fractional-exclude option for all optional regardless of objectClass |
| | | excludeAllOptional = '*:'+','.join(schemaMap[ldapServer].allmay) |
| | | </script> |
| | | <call function="'set-ops-fractional-replication-attributes'"> |
| | | { |
| | | "server" : server, |
| | | "replicationDomain" : domainMap[ldapServer][0], |
| | | "include" : [('reset',None)], |
| | | "exclude" : [('set',excludeAllOptional)], |
| | | "expectedRC" : 0 |
| | | } |
| | | </call> |
| | | <call function="'get-fractional-replication-attributes'"> |
| | | { |
| | | "replicationDomain" : domainMap[ldapServer][0], |
| | | "server" : server, |
| | | } |
| | | </call> |
| | | <script> |
| | | # generating fractional-exclude option for all optional regardless of objectClass |
| | | from java.util import Random |
| | | from java.lang import System |
| | | rnd = Random(System.nanoTime()) |
| | | objClassesMay = [] |
| | | for objClass, mayAttrs in schemaMap[ldapServer].may.items(): |
| | | objClassesMay.append(objClass + ':' + ','.join(mayAttrs)) |
| | | mixMayAttrs = [] |
| | | for ma in mayAttrs: |
| | | if rnd.nextBoolean() and ma in schemaMap[ldapServer].attrDict.keys(): |
| | | # replacing literal with OID value of the attribute |
| | | mixMayAttrs.append(schemaMap[ldapServer].attrDict[ma]) |
| | | else: |
| | | mixMayAttrs.append(ma) |
| | | if rnd.nextBoolean(): |
| | | objClassesMay.append(schemaMap[ldapServer].objDict[objClass] + ':' + ','.join(mixMayAttrs)) |
| | | else: |
| | | objClassesMay.append(objClass + ':' + ','.join(mixMayAttrs)) |
| | | excludeAllObjClassesMay = ','.join(objClassesMay) |
| | | </script> |
| | | <call function="'set-ops-fractional-replication-attributes'"> |
| | | { |
| | | "server" : server, |
| | | "replicationDomain" : domainMap[ldapServer][0], |
| | | "include" : [('reset',None)], |
| | | "exclude" : [('add','%s' % oc) for oc in objClassesMay], |
| | | "expectedRC" : 0 |
| | | } |
| | | </call> |
| | | <call function="'get-fractional-replication-attributes'"> |
| | | { |
| | | "replicationDomain" : domainMap[ldapServer][0], |
| | | "server" : server, |
| | | } |
| | | </call> |
| | | <call function="'testCase_Postamble'"/> |
| | | </sequence> |
| | | </testcase> |
| | | </function> |
| | | </stax> |
| | |
| | | </sequence> |
| | | </function> |
| | | |
| | | <function name="getSchemaDict"> |
| | | <function name="getSchemaDict" scope="local"> |
| | | <function-prolog> |
| | | check the schema for the equivalent of a given argument |
| | | if argument is OID then returns literal |
| | |
| | | } |
| | | </call> |
| | | <script> |
| | | schemaContent = STAXResult[0][1] |
| | | oidDict = OIDDict() |
| | | oidDict.parseSchema(STAXResult[0][1]) |
| | | oidDict.parseSchema(schemaContent) |
| | | </script> |
| | | <return>oidDict</return> |
| | | </sequence> |
| | |
| | | </if> |
| | | <if expr="RC == 0"> |
| | | <sequence> |
| | | <call function="'LdifDiffWithScript'"> |
| | | <call function="'LdifDiffWithScript-new'"> |
| | | { 'location' : dsMaster.getHostname(), |
| | | 'dsPath' : dsMasterPath, |
| | | 'sourceLdif' : '%s/%s' % (remote.temp, filteredRefTree), |
| | |
| | | 'outputLdif' : '%s/%s' % (remote.temp,treeDiffs) |
| | | } |
| | | </call> |
| | | </sequence> |
| | | </if> |
| | | <if expr="RC == 0"> |
| | | <if expr="STAXResult == 0"> |
| | | <sequence> |
| | | <return>0, None</return> |
| | | </sequence> |
| | | <else> |
| | | <sequence> |
| | | <script> |
| | |
| | | </else> |
| | | </if> |
| | | </sequence> |
| | | </if> |
| | | </sequence> |
| | | </function> |
| | | |
| | | </stax> |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8" standalone="no"?> |
| | | <!DOCTYPE stax SYSTEM "../../../shared/stax.dtd"> |
| | | <!-- |
| | | ! CDDL HEADER START |
| | | ! |
| | | ! The contents of this file are subject to the terms of the |
| | | ! Common Development and Distribution License, Version 1.0 only |
| | | ! (the "License"). You may not use this file except in compliance |
| | | ! with the License. |
| | | ! |
| | | ! You can obtain a copy of the license at |
| | | ! trunk/opends/resource/legal-notices/OpenDS.LICENSE |
| | | ! or https://OpenDS.dev.java.net/OpenDS.LICENSE. |
| | | ! See the License for the specific language governing permissions |
| | | ! and limitations under the License. |
| | | ! |
| | | ! When distributing Covered Code, include this CDDL HEADER in each |
| | | ! file and include the License file at |
| | | ! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, |
| | | ! add the following below this CDDL HEADER, with the fields enclosed |
| | | ! by brackets "[]" replaced with your own identifying information: |
| | | ! Portions Copyright [yyyy] [name of copyright owner] |
| | | ! |
| | | ! CDDL HEADER END |
| | | ! |
| | | ! Copyright 2008-2009 Sun Microsystems, Inc. |
| | | ! --> |
| | | <stax> |
| | | |
| | | <defaultcall function="group_cleanup"/> |
| | | |
| | | <function name="group_cleanup"> |
| | | <function-map-args> |
| | | <function-arg-def name="stopDS" type="optional" default="True"> |
| | | <function-arg-description> |
| | | Optional stop the Directory Server |
| | | </function-arg-description> |
| | | <function-arg-property name="type" value="boolean"/> |
| | | </function-arg-def> |
| | | </function-map-args> |
| | | |
| | | <sequence> |
| | | |
| | | <block name="'cleanup'"> |
| | | |
| | | <sequence> |
| | | |
| | | <if expr="stopDS == True"> |
| | | <sequence> |
| | | <message> |
| | | 'Stop DS running on port %s' % (DIRECTORY_INSTANCE_PORT) |
| | | </message> |
| | | |
| | | <call function="'StopDsWithScript'"> |
| | | { 'location' : STAF_REMOTE_HOSTNAME, |
| | | 'dsHost' : DIRECTORY_INSTANCE_HOST, |
| | | 'dsAdminPort' : DIRECTORY_INSTANCE_ADMIN_PORT, |
| | | 'dsBindDN' : DIRECTORY_INSTANCE_DN, |
| | | 'dsBindPwd' : DIRECTORY_INSTANCE_PSWD } |
| | | </call> |
| | | |
| | | </sequence> |
| | | |
| | | </if> |
| | | |
| | | <message> |
| | | 'Remove DS topology created for the Test Suite' |
| | | </message> |
| | | |
| | | <call function="'removeTopology'"/> |
| | | |
| | | </sequence> |
| | | </block> |
| | | |
| | | </sequence> |
| | | |
| | | </function> |
| | | |
| | | </stax> |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8" standalone="no"?> |
| | | <!DOCTYPE stax SYSTEM "../../../shared/stax.dtd"> |
| | | <!-- |
| | | ! CDDL HEADER START |
| | | ! |
| | | ! The contents of this file are subject to the terms of the |
| | | ! Common Development and Distribution License, Version 1.0 only |
| | | ! (the "License"). You may not use this file except in compliance |
| | | ! with the License. |
| | | ! |
| | | ! You can obtain a copy of the license at |
| | | ! trunk/opends/resource/legal-notices/OpenDS.LICENSE |
| | | ! or https://OpenDS.dev.java.net/OpenDS.LICENSE. |
| | | ! See the License for the specific language governing permissions |
| | | ! and limitations under the License. |
| | | ! |
| | | ! When distributing Covered Code, include this CDDL HEADER in each |
| | | ! file and include the License file at |
| | | ! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, |
| | | ! add the following below this CDDL HEADER, with the fields enclosed |
| | | ! by brackets "[]" replaced with your own identifying information: |
| | | ! Portions Copyright [yyyy] [name of copyright owner] |
| | | ! |
| | | ! CDDL HEADER END |
| | | ! |
| | | ! Copyright 2009 Sun Microsystems, Inc. |
| | | ! --> |
| | | |
| | | <stax> |
| | | |
| | | <defaultcall function="group_setup"/> |
| | | |
| | | <function name="group_setup"> |
| | | <function-map-args> |
| | | <function-arg-def name="startDS" type="optional" default="True"> |
| | | <function-arg-description> |
| | | Optional start the Directory Server |
| | | </function-arg-description> |
| | | <function-arg-property name="type" value="boolean"/> |
| | | </function-arg-def> |
| | | <function-arg-def name="loadBackend" type="optional" default="True"> |
| | | <function-arg-description> |
| | | Specifies whether the backend should be loaded with some data. |
| | | </function-arg-description> |
| | | <function-arg-property name="type" value="boolean"/> |
| | | </function-arg-def> |
| | | <function-arg-def name="globalAcis" type="optional" default="True"> |
| | | <function-arg-description> |
| | | Specifies whether the test should use global acis. |
| | | </function-arg-description> |
| | | <function-arg-property name="type" value="boolean"/> |
| | | </function-arg-def> |
| | | </function-map-args> |
| | | |
| | | <sequence> |
| | | |
| | | <block name="'setup'"> |
| | | <sequence> |
| | | |
| | | <if expr="globalAcis == True"> |
| | | |
| | | <sequence> |
| | | <message>'Adding global ACIs.'</message> |
| | | <call function="'ldapModifyWithScript'"> |
| | | { |
| | | 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST , |
| | | 'dsInstancePort' : DIRECTORY_INSTANCE_PORT , |
| | | 'dsInstanceDn' : DIRECTORY_INSTANCE_DN , |
| | | 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD , |
| | | 'dsFilename' : '%s/groups/global_acis.ldif' % remote.data |
| | | } |
| | | </call> |
| | | </sequence> |
| | | <else> |
| | | <sequence> |
| | | <message>'Adding entry ACIs.'</message> |
| | | <call function="'ldapModifyWithScript'"> |
| | | { |
| | | 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST , |
| | | 'dsInstancePort' : DIRECTORY_INSTANCE_PORT , |
| | | 'dsInstanceDn' : DIRECTORY_INSTANCE_DN , |
| | | 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD , |
| | | 'dsFilename' : '%s/groups/entry_acis.ldif' % remote.data |
| | | } |
| | | </call> |
| | | </sequence> |
| | | </else> |
| | | </if> |
| | | |
| | | </sequence> |
| | | </block> |
| | | </sequence> |
| | | </function> |
| | | |
| | | </stax> |
| | |
| | | <sequence> |
| | | <block name="'externalchangelog'"> |
| | | <sequence> |
| | | |
| | | <!-- Do not run the tests if servers are split, as it is not supported |
| | | ! by External Changelog to have RS separated from DS --> |
| | | <if expr="globalSplitServers != True"> |
| | | <sequence> |
| | | |
| | | <script> |
| | | if not CurrentTestPath.has_key('group'): |
| | | CurrentTestPath['group']='replication' |
| | |
| | | <call function="'replication_cleanup'" /> |
| | | |
| | | <call function="'testSuite_Postamble'"/> |
| | | |
| | | </sequence> |
| | | </if> |
| | | |
| | | </sequence> |
| | | </block> |
| | | </sequence> |
| | |
| | | else: |
| | | lastIndexAttr = 'lastchangenumber' |
| | | |
| | | serverPath = '%s/%s' % (server.getDir(), OPENDSNAME) |
| | | if globalSplitServers: |
| | | replServer = _topologyReplServerList[indx] |
| | | else: |
| | | replServer = server |
| | | |
| | | replServerPath = '%s/%s' % (replServer.getDir(), OPENDSNAME) |
| | | </script> |
| | | <call function="'ldapSearchWithScript'"> |
| | | { 'location' : server.getHostname(), |
| | | 'dsPath' : serverPath, |
| | | 'dsInstanceHost' : server.getHostname(), |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | { 'location' : replServer.getHostname(), |
| | | 'dsPath' : replServerPath, |
| | | 'dsInstanceHost' : replServer.getHostname(), |
| | | 'dsInstancePort' : replServer.getPort(), |
| | | 'dsInstanceDn' : replServer.getRootDn(), |
| | | 'dsInstancePswd' : replServer.getRootPwd(), |
| | | 'dsScope' : 'base', |
| | | 'dsBaseDN' : ' ', |
| | | 'dsFilter' : 'objectclass=*', |
| | |
| | | </call> |
| | | </sequence> |
| | | </if> |
| | | |
| | | <if expr="globalSplitServers"> |
| | | <sequence> |
| | | <script> |
| | | if master.isOnlyLdapServer(): |
| | | masterReplPort = None |
| | | else: |
| | | masterReplPort = masterReplicationServer.getPort() |
| | | |
| | | replServer = _topologyReplServerList[indx] |
| | | replServerReplPort = replServer.getChangelogServer().getPort() |
| | | |
| | | replicatedDnList = [newReplSuffix] |
| | | </script> |
| | | |
| | | <message> |
| | | 'Enable replication for server:\nHost: %s\nLdap port: %s\n\ |
| | | Replication port: %s\nReplicated DN list: %s' \ |
| | | % (replServer.getHostname(), replServer.getPort(), |
| | | replServerReplPort, replicatedDnList) |
| | | </message> |
| | | |
| | | <call function="'enableReplication'"> |
| | | { 'location' : clientHost, |
| | | 'dsPath' : clientPath, |
| | | 'refInstanceHost' : masterHost, |
| | | 'refInstanceAdminPort' : master.getAdminPort(), |
| | | 'refInstanceDn' : master.getRootDn(), |
| | | 'refInstancePswd' : master.getRootPwd(), |
| | | 'refReplicationPort' : masterReplPort, |
| | | 'refSecureReplication' : secureReplication, |
| | | 'refOnlyLdapServer' : master.isOnlyLdapServer(), |
| | | 'refOnlyReplServer' : master.isOnlyReplServer(), |
| | | 'dsInstanceHost' : replServer.getHostname(), |
| | | 'dsInstanceAdminPort' : replServer.getAdminPort(), |
| | | 'dsInstanceDn' : replServer.getRootDn(), |
| | | 'dsInstancePswd' : replServer.getRootPwd(), |
| | | 'dsReplicationPort' : replServerReplPort, |
| | | 'dsSecureReplication' : secureReplication, |
| | | 'dsOnlyLdapServer' : replServer.isOnlyLdapServer(), |
| | | 'dsOnlyReplServer' : replServer.isOnlyReplServer(), |
| | | 'replicationDnList' : replicatedDnList |
| | | } |
| | | </call> |
| | | </sequence> |
| | | </if> |
| | | </sequence> |
| | | </iterate> |
| | | |
| | | |
| | | <!-- Add new entries --> |
| | | <call function="'addAnEntry'"> |
| | | { 'location' : masterHost, |
| | | 'dsPath' : masterPath, |
| | | 'dsInstanceHost' : masterHost, |
| | | 'dsInstancePort' : master.getPort(), |
| | | 'dsInstanceDn' : master.getRootDn(), |
| | | 'dsInstancePswd' : master.getRootPwd(), |
| | | 'DNToAdd' : newReplSuffix, |
| | | 'listAttributes' : newRootEntryAttrs |
| | | } |
| | | </call> |
| | | |
| | | <script> |
| | | firstSearchIndex = searchIndex |
| | | |
| | |
| | | |
| | | <!-- New replicated suffix added => resync required => |
| | | ! Retrieve lastExternalChangelogCookie from root DSE --> |
| | | <script> |
| | | if globalSplitServers: |
| | | replServer = _topologyReplServerList[0] |
| | | else: |
| | | replServer = master |
| | | |
| | | replServerPath = '%s/%s' % (replServer.getDir(), OPENDSNAME) |
| | | </script> |
| | | <call function="'ldapSearchWithScript'"> |
| | | { 'location' : masterHost, |
| | | 'dsPath' : masterPath, |
| | | 'dsInstanceHost' : masterHost, |
| | | 'dsInstancePort' : master.getPort(), |
| | | 'dsInstanceDn' : master.getRootDn(), |
| | | 'dsInstancePswd' : master.getRootPwd(), |
| | | { 'location' : replServer.getHostname(), |
| | | 'dsPath' : replServerPath, |
| | | 'dsInstanceHost' : replServer.getHostname(), |
| | | 'dsInstancePort' : replServer.getPort(), |
| | | 'dsInstanceDn' : replServer.getRootDn(), |
| | | 'dsInstancePswd' : replServer.getRootPwd(), |
| | | 'dsScope' : 'base', |
| | | 'dsBaseDN' : ' ', |
| | | 'dsFilter' : 'objectclass=*', |
| | |
| | | </sequence> |
| | | </if> |
| | | |
| | | <!-- Add new entries --> |
| | | <call function="'addAnEntry'"> |
| | | { 'location' : masterHost, |
| | | 'dsPath' : masterPath, |
| | | 'dsInstanceHost' : masterHost, |
| | | 'dsInstancePort' : master.getPort(), |
| | | 'dsInstanceDn' : master.getRootDn(), |
| | | 'dsInstancePswd' : master.getRootPwd(), |
| | | 'DNToAdd' : newReplSuffix, |
| | | 'listAttributes' : newRootEntryAttrs |
| | | } |
| | | </call> |
| | | <call function="'addAnEntry'"> |
| | | { 'location' : masterHost, |
| | | 'dsPath' : masterPath, |
| | |
| | | { 'ldifEntries' : searchResult } |
| | | </call> |
| | | <script> |
| | | if ecl_mode == 'opends': |
| | | # because of the resync, the first add will be missed when |
| | | # searching the ECL |
| | | addedEntries += STAXResult[1:] |
| | | else: |
| | | addedEntries += STAXResult |
| | | </script> |
| | | </sequence> |
| | |
| | | </message> |
| | | |
| | | <!-- Search for entry add --> |
| | | <!-- In draft-mode, this may fail because of issue #4329: |
| | | ! draft mode: after adding new suffix, can not search ECL |
| | | ! because of invalid cookie! --> |
| | | <call function="'SearchExternalChangelog'"> |
| | | { 'location' : replServer.getHostname(), |
| | | 'dsPath' : replServerPath, |
| | |
| | | 'dsBaseDN' : 'cn=changelog', |
| | | 'dsFilter' : '(objectclass=*)', |
| | | 'changeNumberFilter' : chgNumberFilter, |
| | | 'changelogCookie' : lastCookie |
| | | 'changelogCookie' : lastCookie, |
| | | 'knownIssue' : '4329' |
| | | } |
| | | </call> |
| | | <script> |
| | |
| | | </message> |
| | | |
| | | <!-- Search for entry adds in synchroSuffix --> |
| | | <!-- In draft-mode, this may fail because of issue #4329: |
| | | ! draft mode: after adding new suffix, can not search ECL |
| | | ! because of invalid cookie! --> |
| | | <call function="'SearchExternalChangelog'"> |
| | | { 'location' : replServer.getHostname(), |
| | | 'dsPath' : replServerPath, |
| | |
| | | 'dsBaseDN' : eclSearchBaseDn, |
| | | 'dsFilter' : eclSearchFilter, |
| | | 'changeNumberFilter' : chgNumberFilter, |
| | | 'changelogCookie' : lastCookie |
| | | 'changelogCookie' : lastCookie, |
| | | 'knownIssue' : '4329' |
| | | } |
| | | </call> |
| | | <script> |
| | |
| | | </message> |
| | | |
| | | <!-- Search for entry adds in newReplSuffix --> |
| | | <!-- In draft-mode, this may fail because of issue #4329: |
| | | ! draft mode: after adding new suffix, can not search ECL |
| | | ! because of invalid cookie! --> |
| | | <call function="'SearchExternalChangelog'"> |
| | | { 'location' : replServer.getHostname(), |
| | | 'dsPath' : replServerPath, |
| | |
| | | 'dsBaseDN' : eclSearchBaseDn, |
| | | 'dsFilter' : eclSearchFilter, |
| | | 'changeNumberFilter' : chgNumberFilter, |
| | | 'changelogCookie' : lastCookie |
| | | 'changelogCookie' : lastCookie, |
| | | 'knownIssue' : '4329' |
| | | } |
| | | </call> |
| | | <script> |
| | |
| | | } |
| | | </call> |
| | | |
| | | <if expr="globalSplitServers"> |
| | | <sequence> |
| | | <script> |
| | | replServer = _topologyReplServerList[indx] |
| | | replServerPath = '%s/%s' % (replServer.getDir(), OPENDSNAME) |
| | | </script> |
| | | <call function="'disableReplication'"> |
| | | { 'location' : replServer.getHostname(), |
| | | 'dsPath' : replServerPath, |
| | | 'dsInstanceHost' : replServer.getHostname(), |
| | | 'dsInstanceAdminPort' : replServer.getAdminPort(), |
| | | 'replicationDnList' : [newReplSuffix] |
| | | } |
| | | </call> |
| | | </sequence> |
| | | </if> |
| | | |
| | | |
| | | <!-- Remove newReplSuffix --> |
| | | <message> |
| | | 'Remove suffix %s on server %s:%s' % \ |
| | |
| | | |
| | | # Archives section |
| | | staf.default=true |
| | | staf.url=http://superb-east.dl.sourceforge.net/sourceforge/staf |
| | | staf.url=http://prdownloads.sourceforge.net/sourceforge/staf |
| | | staf.version=334 |
| | | staf.port=6500 |
| | | stax.version=337 |
| | |
| | | |
| | | qa = doc.getDocumentElement() |
| | | ft = qa.getChildNodes().item(1) |
| | | results = ft.getChildNodes().item(1) |
| | | results = ft.getChildNodes().item(3) |
| | | |
| | | #Create testgroup element |
| | | xml.testgroup = doc.createElement("testgroup") |
| | |
| | | "list2dn", |
| | | "dn2rfcmailaddr", |
| | | "java_properties", |
| | | "xmldoc_service" ] |
| | | "xmldoc_service" , |
| | | "xml_create_report" , |
| | | "group_to_run" ] |
| | | |
| | | class format_testcase: |
| | | 'Format the Test name objects' |
| | |
| | | except: |
| | | print "exception: %s" % traceback.format_exception(*sys.exc_info()) |
| | | |
| | | def xml_add_text_node(doc,parent,name,ntext): |
| | | |
| | | node = doc.createElement(name) |
| | | text = doc.createTextNode('%s' % ntext) |
| | | node.appendChild(text) |
| | | parent.appendChild(node) |
| | | |
| | | def xml_create_report(pname,type,path,info,misc,testdir,report): |
| | | |
| | | xml=xmldoc_service() |
| | | |
| | | builder = xml.createBlankDocument() |
| | | |
| | | doc = builder.newDocument() |
| | | root = doc.createElement("qa") |
| | | doc.appendChild(root) |
| | | ft = doc.createElement("%s" % type) |
| | | root.appendChild(ft); |
| | | |
| | | # Identification |
| | | id = doc.createElement("identification") |
| | | ft.appendChild(id) |
| | | |
| | | sut = doc.createElement("sut") |
| | | xml.createAttr(doc,sut,"product","opends") |
| | | id.appendChild(sut) |
| | | |
| | | xml_add_text_node(doc,sut,'name',pname) |
| | | xml_add_text_node(doc,sut,'path',path) |
| | | xml_add_text_node(doc,sut,'version',info['server version']) |
| | | xml_add_text_node(doc,sut,'buildid',info['server buildid']) |
| | | xml_add_text_node(doc,sut,'revision',info['svn revision']) |
| | | xml_add_text_node(doc,sut,'hostname',info['system name']) |
| | | xml_add_text_node(doc,sut,'platform',info['system os']) |
| | | xml_add_text_node(doc,sut,'jvm-version',info['jvm version']) |
| | | xml_add_text_node(doc,sut,'jvm-label',misc['jvm label']) |
| | | xml_add_text_node(doc,sut,'jvm-vendor',info['jvm vendor']) |
| | | xml_add_text_node(doc,sut,'jvm-arch',info['jvm architecture']) |
| | | xml_add_text_node(doc,sut,'jvm-args','TBD') |
| | | xml_add_text_node(doc,sut,'jvm-home','TBD') |
| | | xml_add_text_node(doc,sut,'jvm-bin','TDB') |
| | | xml_add_text_node(doc,sut,'os-label',misc['os label']) |
| | | xml_add_text_node(doc,sut,'server-package',misc['server package']) |
| | | xml_add_text_node(doc,sut,'snmp-jarfile',misc['snmp jarfile']) |
| | | xml_add_text_node(doc,sut,'md5-sum','TBD') |
| | | |
| | | xml_add_text_node(doc,id,'tests-dir',testdir) |
| | | |
| | | # Test Results |
| | | results = doc.createElement("results") |
| | | ft.appendChild(results) |
| | | |
| | | xml.writeXMLfile(doc,report) |
| | | |
| | | class group_to_run: |
| | | def __init__(self, name): |
| | | self.name = name |
| | | |
| | | def getName(self): |
| | | return self.name |
| | | |
| | | |
| | |
| | | of both objeclasses, and attributtypes""" |
| | | |
| | | def __init__(self, schema=None): |
| | | self.dict = {} |
| | | self.attrDict = {} |
| | | self.objDict = {} |
| | | self.sup = {} |
| | | self.may = {} |
| | | self.must = {} |
| | | self.allmay = [] |
| | | self.allmust = [] |
| | | |
| | | def _getOID(self, line): |
| | | """given a schema entry definition for objectclass/attributtype |
| | |
| | | the List of aliases starts from list of names[1:] when exist. for ex : |
| | | attributeTypes: ( 2.5.4.4 NAME ( 'sn' 'surname' ) SUP name X-ORIGIN 'RFC 4519' ) |
| | | (2.5.4.4,['sn','surname'] |
| | | More details : https://www.opends.org/wiki/page/AttributeTypeDescriptionFormat |
| | | """ |
| | | pNdx = line.find('(') |
| | | nNdx = line.find('NAME',pNdx) |
| | |
| | | # populate the NAME to OID : "dict" dictionary |
| | | NAMES = self._getStr(line,'NAME') |
| | | if NAMES: |
| | | if line.startswith('objectClasses:'): |
| | | # TODO encoded schema is not handled for now |
| | | self.dict.update({OID:NAMES}) |
| | | self.objDict.update({OID:NAMES}) |
| | | for name in NAMES: |
| | | self.dict.update({name:OID}) |
| | | self.objDict.update({name:OID}) |
| | | elif line.startswith('attributeTypes:'): |
| | | # TODO encoded schema is not handled for now |
| | | self.attrDict.update({OID:NAMES}) |
| | | for name in NAMES: |
| | | self.attrDict.update({name:OID}) |
| | | # populate SUP and MUST / MAY, : "sup", "may", "must" dictionaries |
| | | if line.startswith('objectClasses:'): |
| | | r = self._getStr(line,'SUP') |
| | |
| | | r = self._getStr(line,'MUST') |
| | | if r: |
| | | self.must.update({NAMES[0]:r}) |
| | | for m in r: |
| | | if not m in self.allmust: |
| | | self.allmust.append(m) |
| | | r = self._getStr(line,'MAY') |
| | | if r: |
| | | self.may.update({NAMES[0]:r}) |
| | | for m in r: |
| | | if not m in self.allmay: |
| | | self.allmay.append(m) |
| | | |
| | | return OID, NAMES |
| | | |
| | |
| | | elif s[0] != '$' and s[0] != '|': |
| | | if s[0] == '\'' and s[-1] == '\'': |
| | | s = s[1:-1] |
| | | realStrs.append(s) |
| | | realStrs.append(s.lower()) |
| | | return realStrs |
| | | |
| | | def getMust(self, objectclassname): |
| | |
| | | and attributetypes only.""" |
| | | lines=[] |
| | | line='' |
| | | for f in ref_content: |
| | | for f in ref_content.splitlines(): |
| | | if len(line) == 0 and \ |
| | | not (f.startswith("objectClasses") or \ |
| | | f.startswith("attributeTypes")): |
| | | # not handled for now |
| | | continue |
| | | elif len(line) > 0 and f[0].isspace(): |
| | | elif len(line) > 0 and len(f) > 0 and f[0].isspace(): |
| | | # line continuation aggregated into 'line' |
| | | line += f[1:-1] |
| | | line += f[1:] |
| | | |
| | | elif f.startswith("objectClasses") or f.startswith("attributeTypes"): |
| | | if len(line) > 0: |
| | |
| | | # populate the OID <-> Names dictionary |
| | | self._getOID(line) |
| | | line =f[:-1] |
| | | line = f.strip() |
| | | line = f |
| | | if len(line) > 0: |
| | | # parsing the last line |
| | | self._getOID(line) |
| | | lines.append(line) |
| | | f=open('/tmp/lines.ldif','w') |
| | | f.write('\n'.join(lines)) |
| | | f.close() |
| | | |
| | | if __name__ == '__main__': |
| | | """get example schema.ldif file with : |
| | | ldapsearch -b 'cn=schema' -Dcn=directory\ manager -s base -wpassword objectclass=* objectClasses attributeTypes |
| | | ldapsearch -b 'cn=schema' -Dcn=directory\ manager -s base -wpassword objectclass=* objectClasses attributeTypes > /tmp/schema.ldif |
| | | """ |
| | | objectClassesFileName='/tmp/schema.ldif' |
| | | f = open(objectClassesFileName) |
| | | fc = f.readlines() |
| | | f.close() |
| | | oidDict = OIDDict() |
| | | oidDict.parseSchema(fc) |
| | | print '[ dictionary ]'.center(80, '-') |
| | | for k,v in oidDict.dict.items(): |
| | | oidDict.parseSchema(''.join(fc)) |
| | | print '[ Objectclasses dictionary ]'.center(80, '-') |
| | | for k,v in oidDict.objDict.items(): |
| | | print "%s\t%s"%(k,v) |
| | | print '[ AttributeTypes dictionary ]'.center(80, '-') |
| | | for k,v in oidDict.attrDict.items(): |
| | | print "%s\t%s"%(k,v) |
| | | print '[ must ]'.center(80, '-') |
| | | for k,v in oidDict.must.items(): |
| | |
| | | print 'MAY',oidDict.getMay(cn) |
| | | except Exception, e: |
| | | print e.message |
| | | print '[ all must ]'.center(80,'-') |
| | | mustSize = 0 |
| | | for m in oidDict.allmust: |
| | | mustSize += len(m) |
| | | print 'got %s MUSTs size = %sKb' % (len(oidDict.allmust),mustSize/1024.0) |
| | | print oidDict.allmust |
| | | print '[ all may ]'.center(80,'-') |
| | | maySize = 0 |
| | | for m in oidDict.allmay: |
| | | maySize += len(m) |
| | | print 'got %s MAYs size = %sKb' % (len(oidDict.allmay),maySize/1024.0) |
| | | print oidDict.allmay |
| | |
| | | <script> |
| | | listOfChildren=[] |
| | | |
| | | xml=xmldoc_service() |
| | | my_path='%s/%s' % (DIRECTORY_INSTANCE_BIN,OPENDSNAME) |
| | | my_report='%s/results2.xml' % logs.reports |
| | | my_info={} |
| | | my_info['jvm label']=TEST_JVM_STRING |
| | | my_info['os label']=TEST_OS_STRING |
| | | my_info['server package']='%s/%s' % (ZIPPATH,ZIPNAME) |
| | | my_info['snmp jarfile']=SNMP_OPENDMK_JARFILE |
| | | |
| | | builder = xml.createBlankDocument() |
| | | |
| | | doc = builder.newDocument() |
| | | root = doc.createElement("qa") |
| | | doc.appendChild(root) |
| | | ft = doc.createElement("%s" % TESTS_TYPE) |
| | | root.appendChild(ft); |
| | | results = doc.createElement("results") |
| | | ft.appendChild(results); |
| | | |
| | | xml.writeXMLfile(doc,"%s/results2.xml" % logs.reports) |
| | | |
| | | class groupToRun: |
| | | def __init__(self, name): |
| | | self.name = name |
| | | |
| | | def getName(self): |
| | | return self.name |
| | | xml_create_report(PRODUCTNAME,TESTS_TYPE,my_path, \ |
| | | DSInfo.ServerDict,my_info,local.directory,my_report) |
| | | |
| | | groupsToRun = [] |
| | | for line in TEST_PLAN_CUSTOM.split(","): |
| | | groupsToRun.append(groupToRun(line.rstrip())) |
| | | groupsToRun.append(group_to_run(line.rstrip())) |
| | | </script> |
| | | |
| | | <!-- TODO: If no groupsToRun then iterate will throw exception --> |