opends/tests/staf-tests/functional-tests/shared/data/aci/global_acis/mod_entry3.ldif
New file @@ -0,0 +1,29 @@ # 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 opends/tests/staf-tests/functional-tests/shared/data/fractional-replication/basic-master.ldif
File was deleted opends/tests/staf-tests/functional-tests/shared/data/fractional-replication/basic-master.template
@@ -52,5 +52,9 @@ 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> opends/tests/staf-tests/functional-tests/shared/data/fractional-replication/basic-masterModify.ldif
@@ -21,7 +21,62 @@ # 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== opends/tests/staf-tests/functional-tests/shared/data/fractional-replication/basic-masterModifyDN.ldif
@@ -38,23 +38,26 @@ 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 @@ -64,23 +67,26 @@ 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 @@ -90,23 +96,26 @@ 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 opends/tests/staf-tests/functional-tests/shared/data/fractional-replication/basic-masterModifyDN.template
@@ -59,6 +59,9 @@ 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> opends/tests/staf-tests/functional-tests/shared/data/fractional-replication/basic-masterOnlineImport.ldif
File was deleted opends/tests/staf-tests/functional-tests/shared/data/fractional-replication/basic-masterOnlineImport.template
@@ -50,5 +50,8 @@ 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> opends/tests/staf-tests/functional-tests/shared/data/fractional-replication/basic-replicaIncludeAdd.ldif
@@ -24,8 +24,11 @@ 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 opends/tests/staf-tests/functional-tests/testcases/aci/global_acis.xml
@@ -865,16 +865,16 @@ #@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'"> @@ -882,7 +882,41 @@ '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'"/> opends/tests/staf-tests/functional-tests/testcases/clu/clu_rebuild-index_checkbehavior.xml
@@ -424,8 +424,7 @@ { 'dsBaseDN' : 'dc=com' , 'dsIndexList' : [ 'st' ] , 'dsCountErrors' : 'TRUE' , 'knownIssue' : 4293 'dsCountErrors' : 'TRUE' } </call> @@ -446,7 +445,7 @@ </call> <script> msg1 = 'Statistics for entries that have' msg1 = 'Statistics for records that have' msg2 = 'exceeded the entry limit:' </script> <call function="'checktestString'"> @@ -457,7 +456,7 @@ </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'"> opends/tests/staf-tests/functional-tests/testcases/fractional-replication/basic.xml
@@ -344,12 +344,12 @@ <call function="'stopServers'"> [ Pservers ] </call> <!-- server 1 import basic-master.ldif --> <!-- server 1 import basic-master.ldif --> <call function="'ImportLdifWithScript'"> { "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, } @@ -448,7 +448,7 @@ } </call> <call function="'ImportLdifWithScript'"> <call function="'ImportLdifWithScript'"> { 'location' : Pservers[0].getHostname(), 'dsPath' : '%s/%s' % (Pservers[0].getDir(),OPENDSNAME), 'dsInstanceHost' : Pservers[0].getHostname(), @@ -459,11 +459,11 @@ '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> <call function="'ImportLdifWithScript'"> <call function="'ImportLdifWithScript'"> { 'location' : Pservers[1].getHostname(), 'dsPath' : '%s/%s' % (Pservers[1].getDir(),OPENDSNAME), 'dsInstanceHost' : Pservers[1].getHostname(), @@ -474,7 +474,7 @@ '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> opends/tests/staf-tests/functional-tests/testcases/fractional-replication/config.xml
@@ -29,558 +29,683 @@ <defaultcall function="fractional-replication_config"/> <function name="fractional-replication_config"> <sequence> <block name="'config'"> <try> <sequence> <!--- Test Suite information #@TestSuiteName fractional-replication config #@TestSuitePurpose Verify various configuration fractional replication #@TestSuiteID config tests #@TestSuiteGroup config #@TestMarker fractional-replication config #@TestGroup fractional-replication #@TestScript config.xml #@TestHTMLLink http://opends.dev.java.net/ --> <script> if not CurrentTestPath.has_key('group'): CurrentTestPath['group']='fractional-replication' CurrentTestPath['suite']=STAXCurrentBlock </script> <sequence> <!--- Test Suite information #@TestSuiteName fractional-replication config #@TestSuitePurpose Verify various configuration fractional replication #@TestSuiteID config tests #@TestSuiteGroup config #@TestMarker fractional-replication config #@TestGroup fractional-replication #@TestScript config.xml #@TestHTMLLink http://opends.dev.java.net/ --> <script> if not CurrentTestPath.has_key('group'): CurrentTestPath['group']='fractional-replication' CurrentTestPath['suite']=STAXCurrentBlock </script> <call function="'testSuite_Preamble'"/> <call function="'testSuite_Preamble'"/> <try> <sequence> <!-- fractional-replication setup --> <import machine="STAF_LOCAL_HOSTNAME" file="'%s/testcases/fractional-replication/fractional-replication_setup.xml' % (TESTS_DIR)"/> <call function="'fractional-replication_setup'" /> <script> server = _topologyServerList[0] ldapServer = '%s:%s' % (server.getHostname(), server.getPort()) fractionalTypes = ['fractional-include','fractional-exclude'] </script> <message level="'debug'">'ldapServer=%s' % ldapServer</message> <!-- fractional-replication setup --> <import machine="STAF_LOCAL_HOSTNAME" file="'%s/testcases/fractional-replication/fractional-replication_setup.xml' % (TESTS_DIR)"/> <call function="'fractional-replication_setup'" /> <!-- Retrieve replication-domain name --> <call function="'dsconfig'"> { 'location' : server.getHostname(), 'dsPath' : '%s/%s' \ % (server.getDir(),OPENDSNAME), 'dsInstanceHost' : server.getHostname(), 'dsInstanceAdminPort' : server.getAdminPort(), 'dsInstanceDn' : server.getRootDn(), 'dsInstancePswd' : server.getRootPwd(), 'subcommand' : 'list-replication-domains', 'objectType' : 'provider-name', 'objectName' : 'Multimaster Synchronization', } </call> <if expr='RC == 0'> <sequence> <script> replicationDomains = STAXResult[0][1] for line in replicationDomains.splitlines(): if line.startswith(synchroSuffix): colSplit = line.split(':') domain = colSplit[0].strip() serverId = colSplit[2] domainMap[ldapServer] = (domain,serverId) break </script> <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> <script> server = _topologyServerList[0] ldapServer = '%s:%s' % (server.getHostname(), server.getPort()) fractionalTypes = ['fractional-include','fractional-exclude'] </script> <message level="'debug'">'ldapServer=%s' % ldapServer</message> <!-- Execute the Tests --> <iterate var="__test" in="testsList"> <sequence> <call function="'%s' % (__test)" /> </sequence> </iterate> </sequence> <!-- Retrieve replication-domain name --> <call function="'dsconfig'"> { 'location' : server.getHostname(), 'dsPath' : '%s/%s' \ % (server.getDir(),OPENDSNAME), 'dsInstanceHost' : server.getHostname(), 'dsInstanceAdminPort' : server.getAdminPort(), 'dsInstanceDn' : server.getRootDn(), 'dsInstancePswd' : server.getRootPwd(), 'subcommand' : 'list-replication-domains', 'objectType' : 'provider-name', 'objectName' : 'Multimaster Synchronization', } </call> <if expr='RC == 0'> <finally> <message>'Test Cases Completed.'</message> </finally> </try> </sequence> <finally> <sequence> <script> replicationDomains = STAXResult[0][1] for line in replicationDomains.splitlines(): if line.startswith(synchroSuffix): colSplit = line.split(':') domain = colSplit[0].strip() serverId = colSplit[2] domainMap[ldapServer] = (domain,serverId) break </script> <message level="'debug'">'domainMap=%s' % domainMap</message> <!-- 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> </if> <!--- Test Case information #@TestMarker fractional-replication config #@TestName Mutual Exclusiv #@TestID Mutual Exclusiv #@TestPurpose Check that fractional-include is mutual exclusiv against fractional-exclude. #@TestPreamble #@TestSteps test setting include and exclude to empty #@TestSteps test setting together include and exclude #@TestSteps test setting include after setting exclude #@TestPostamble #@TestResult Success if conflict is detected for both steps --> <testcase name="getTestCaseName('mutual exclusiv config')"> <sequence> <call function="'testCase_Preamble'"/> <message> 'test setting include and exclude to empty' </message> <call function="'set-ops-fractional-replication-attributes'"> { "server" : server, "replicationDomain" : domainMap[ldapServer][0], "include" : [('set','')], "exclude" : [('reset',None)], "expectedRC" : 1 } </call> <call function="'set-ops-fractional-replication-attributes'"> { "server" : server, "replicationDomain" : domainMap[ldapServer][0], "include" : [('reset',None)], "exclude" : [('set','')], "expectedRC" : 1 } </call> <message> 'test setting together include and exclude' </message> <call function="'reset-fractional-replication-attributes'"> { "replicationDomain" : domainMap[ldapServer][0], "server" : server, } </call> <call function="'set-ops-fractional-replication-attributes'"> { "replicationDomain" : domainMap[ldapServer][0], "server" : server, "include" : [('set','inetOrgPerson:description,audio')], "exclude" : [('set','*:mail')], "expectedRC" : 1 } </call> <call function="'get-fractional-replication-attributes'"> { 'replicationDomain' : domainMap[ldapServer][0], "server" : server, } </call> <message> 'test setting include after setting exclude' </message> <call function="'set-ops-fractional-replication-attributes'"> { "server" : server, "replicationDomain" : domainMap[ldapServer][0], "include" : [('reset',None)], "exclude" : [('set','*:mail')], "expectedRC" : 0 } </call> <call function="'get-fractional-replication-attributes'"> { 'replicationDomain' : domainMap[ldapServer][0], 'server' : server, } </call> <call function="'set-ops-fractional-replication-attributes'"> { "server" : server, "replicationDomain" : domainMap[ldapServer][0], "include" : [('set','inetOrgPerson:description,audio')], "expectedRC" : 1 } </call> <call function="'get-fractional-replication-attributes'"> { 'replicationDomain' : domainMap[ldapServer][0], 'server' : server, } </call> <call function="'testCase_Postamble'"/> </sequence> </testcase> <!--- Test Case information #@TestMarker fractional-replication config #@TestName only optional attributes #@TestID only optional attributes #@TestPurpose Check that we can only refer to optionals attributes #@TestPreamble #@TestSteps reject fractional-exclude: inetOrgPerson:sn #@TestSteps reject fractional-include: inetOrgPerson:surnAme #@TestSteps test we get error when making opt attribute mandatory #@TestPostamble #@TestResult Success if conflict is detected for both steps --> <testcase name="getTestCaseName('only optional attributes allowed')"> <sequence> <call function="'testCase_Preamble'"/> <call function="'get-fractional-replication-attributes'"> { 'replicationDomain' : domainMap[ldapServer][0], 'server' : server, } </call> <message> 'reject fractional-exclude: inetOrgPerson:sn' </message> <call function="'set-ops-fractional-replication-attributes'"> { "server" : server, "replicationDomain" : domainMap[ldapServer][0], "include" : [('reset',None)], "exclude" : [('set','inetOrgPerson:sn')], "expectedRC" : 1 } </call> <call function="'get-fractional-replication-attributes'"> { 'replicationDomain' : domainMap[ldapServer][0], 'server' : server, } </call> <message> 'reject fractional-exclude: inetOrgPerson:surnAme' </message> <call function="'set-ops-fractional-replication-attributes'"> { "server" : server, "replicationDomain" : domainMap[ldapServer][0], "include" : [('reset',None)], "exclude" : [('set','inetOrgPerson:surnAme')], "expectedRC" : 1 } </call> <call function="'testCase_Postamble'"/> </sequence> </testcase> <!--- Test Case information #@TestMarker fractional-replication config #@TestName alias attributes #@TestID alias attributes #@TestPurpose Check that alias opt/mandatory attributes are treated equaly to non alias counterpart #@TestPreamble #@TestSteps fractional-exclude rejects inetOrgPerson:surname (aka 'sn') #@TestSteps fractional-exclude accepts inetOrgPerson:homeTelephoneNumber (aka 'homePhone') #@TestSteps test we get error when making opt attribute mandatory #@TestPostamble #@TestResult Success if conflict is detected for both steps --> <testcase name="getTestCaseName('alias attributes')"> <sequence> <call function="'testCase_Preamble'"/> <call function="'reset-fractional-replication-attributes'"> { 'replicationDomain' : domainMap[ldapServer][0], 'server' : server, } </call> <message> 'fractional-exclude rejects *:surname (aka "sn")' </message> <call function="'set-ops-fractional-replication-attributes'"> { "server" : server, "replicationDomain" : domainMap[ldapServer][0], "include" : [('reset',None)], "exclude" : [('set','inetOrgPerson:surname')], "expectedRC" : 1 } </call> <call function="'get-fractional-replication-attributes'"> { 'replicationDomain' : domainMap[ldapServer][0], 'server' : server, } </call> <!-- TODO verify we can add a entries for which schema make surname : optional -> surname attribute is removed from entry surname : mandatory -> surname attribute is left in entry --> <message> 'fractional-exclude accepts inetOrgPerson:homeTelephoneNumber (aka "homePhone")' </message> <call function="'set-ops-fractional-replication-attributes'"> { "server" : server, "replicationDomain" : domainMap[ldapServer][0], "include" : [('add','inetOrgPerson:homeTelephoneNumber,mail')], "exclude" : [('reset',None)], "expectedRC" : 0 } </call> <call function="'get-fractional-replication-attributes'"> { 'replicationDomain' : domainMap[ldapServer][0], 'server' : server, } </call> <!-- TODO verify we can add a entry without homeTelephoneNumber and reject entry with homeTelephoneNumber --> <call function="'testCase_Postamble'"/> </sequence> </testcase> <!--- Test Case information #@TestMarker fractional-replication config #@TestName mixing add/set/reset/remove #@TestID mixing add/set/reset/remove #@TestPurpose Check that we can mix set/reset/add/remove #@TestPreamble #@TestSteps test removing exclude and adding include #@TestSteps test partially removing include + adding exclude and include #@TestPostamble #@TestResult Success if conflict is detected for both steps --> <testcase name="getTestCaseName('mixing add/set/reset/remove')"> <sequence> <call function="'testCase_Preamble'"/> <call function="'reset-fractional-replication-attributes'"> { 'replicationDomain' : domainMap[ldapServer][0], 'server' : server, } </call> <message> 'test removing include and adding include' </message> <call function="'set-ops-fractional-replication-attributes'"> { "server" : server, "replicationDomain" : domainMap[ldapServer][0], "include" : [('add','inetOrgPerson:description,audio')], "exclude" : [('remove','inetOrgPerson:mail')], "expectedRC" : 1 } </call> <call function="'get-fractional-replication-attributes'"> { 'replicationDomain' : domainMap[ldapServer][0], 'server' : server, } </call> <call function="'set-ops-fractional-replication-attributes'"> { "server" : server, "replicationDomain" : domainMap[ldapServer][0], "include" : [('add','inetOrgPerson:description,audio')], "expectedRC" : 0 } </call> <call function="'get-fractional-replication-attributes'"> { 'replicationDomain' : domainMap[ldapServer][0], 'server' : server, } </call> <message> 'test partially removing include + adding exclude and include' </message> <call function="'set-ops-fractional-replication-attributes'"> { "server" : server, "replicationDomain" : domainMap[ldapServer][0], "include" : [('remove','inetOrgPerson:audio'), ('add','netOrgPerson:jpegPhoto,initials') ], "exclude" : [('add','*:mail')], "expectedRC" : 1 } </call> <call function="'get-fractional-replication-attributes'"> { 'replicationDomain' : domainMap[ldapServer][0], 'server' : server, } </call> <call function="'set-ops-fractional-replication-attributes'"> { "server" : server, "replicationDomain" : domainMap[ldapServer][0], "include" : [('add','inetOrgPerson:jpegPhoto,employeeNumber'), ('remove','inetOrgPerson:jpegPhoto') ], "expectedRC" : 1 } </call> <call function="'get-fractional-replication-attributes'"> { 'replicationDomain' : domainMap[ldapServer][0], 'server' : server, } </call> <!-- TODO verify that the inetOrgPerson:audio was removed --> <call function="'testCase_Postamble'"/> </sequence> </testcase> <!--- Test Case information #@TestMarker fractional-replication config #@TestName mixing literal/OID #@TestID mixing literal/OID #@TestPurpose Check that we can mix literal/OID #@TestPreamble #@TestSteps reset fractional-replication settings #@TestSteps try to exclude mandatory literal attribute #@TestSteps try to exclude mandatory OID attribute #@TestSteps try to include mandatory literal attribute #@TestSteps try to include mandatory OID attribute #@TestSteps reset fractional-replication settings #@TestSteps test setting OID for class #@TestSteps test setting OID for attribute #@TestSteps test setting OID for class and attribute #@TestSteps test setting mix OID and literal for class and attribute #@TestPostamble #@TestResult Success if mixing in all context --> <testcase name="getTestCaseName('mixing literal/OIDs')"> <sequence> <call function="'testCase_Preamble'"/> <message> 'reset fractional-replication settings' </message> <call function="'reset-fractional-replication-attributes'"> { 'replicationDomain' : domainMap[ldapServer][0], 'server' : server, } </call> <message level="'user1'"> 'try to exclude mandatory literal attribute' </message> <message level="'user1'"> 'try to exclude mandatory OID attribute' </message> <message level="'user1'"> 'try to include mandatory literal attribute' </message> <message level="'user1'"> 'try to include mandatory OID attribute' </message> <message> 'reset fractional-replication settings' </message> <call function="'reset-fractional-replication-attributes'"> { 'replicationDomain' : domainMap[ldapServer][0], 'server' : server, } </call> <message level="'user1'"> 'test setting OID for class' </message> <call function="'set-ops-fractional-replication-attributes'"> { "server" : server, "replicationDomain" : domainMap[ldapServer][0], "include" : [('reset',None)], "exclude" : [('add','2.16.840.1.113730.3.2.2:jpegPhoto')], "expectedRC" : 0 } </call> <call function="'get-fractional-replication-attributes'"> { 'replicationDomain' : domainMap[ldapServer][0], 'server' : server, } </call> <message level="'user1'"> 'test setting OID for attribute' </message> <message level="'user1'"> 'test setting OID for class and attribute' </message> <call function="'set-ops-fractional-replication-attributes'"> { "server" : server, "replicationDomain" : domainMap[ldapServer][0], "include" : [('reset',None)], "exclude" : [('add','*:0.9.2342.19200300.100.1.60'), ('add','inetOrgPerson:0.9.2342.19200300.100.1.60'), ('add','2.16.840.1.113730.3.2.2:0.9.2342.19200300.100.1.60') ], "expectedRC" : 0 } </call> <call function="'get-fractional-replication-attributes'"> { 'replicationDomain' : domainMap[ldapServer][0], 'server' : server, } </call> <message level="'user1'"> 'test setting mix OID and literal for class and attribute' </message> <call function="'set-ops-fractional-replication-attributes'"> { "server" : server, "replicationDomain" : domainMap[ldapServer][0], "include" : [('reset',None)], "exclude" : [('add','*:mail,jpegPhoto,0.9.2342.19200300.100.1.60'), ('add','inetOrgPerson:jpegPhoto,0.9.2342.19200300.100.1.60'), ('add','2.16.840.1.113730.3.2.2:jpegPhoto,0.9.2342.19200300.100.1.60') ], "expectedRC" : 0 } </call> <call function="'get-fractional-replication-attributes'"> { 'replicationDomain' : domainMap[ldapServer][0], 'server' : server, } </call> <call function="'set-ops-fractional-replication-attributes'"> { "server" : server, "replicationDomain" : domainMap[ldapServer][0], "include" : [('reset',None)], "exclude" : [('remove','*:mail,jpegPhoto'), ('remove','*:0.9.2342.19200300.100.1.60'), ('remove','InetOrgPerson:0.9.2342.19200300.100.1.60') ], "expectedRC" : 0, "knownIssue" : '0000', } </call> <call function="'get-fractional-replication-attributes'"> { 'replicationDomain' : domainMap[ldapServer][0], 'server' : server, } </call> <!-- # TODO - verify # should be removed # *:jpegPhoto # *:0.9.2342.19200300.100.1.60 # InetOrgPerso:jpegPhoto # InetOrgPerson:0.9.2342.19200300.100.1.60 # 2.16.840.1.113730.3.2.2:jpegPhoto,0.9.2342.19200300.100.1.60 --> <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> </finally> </try> </block> </sequence> </function> <function name="mutual_exclusiv"> <!--- Test Case information #@TestMarker fractional-replication config #@TestName Mutual Exclusiv #@TestID Mutual Exclusiv #@TestPurpose Check that fractional-include is mutual exclusiv against fractional-exclude. #@TestPreamble #@TestSteps test setting include and exclude to empty #@TestSteps test setting together include and exclude #@TestSteps test setting include after setting exclude #@TestPostamble #@TestResult Success if conflict is detected for both steps --> <testcase name="getTestCaseName('mutual exclusiv config')"> <sequence> <call function="'testCase_Preamble'"/> <message> 'test setting include and exclude to empty' </message> <call function="'set-ops-fractional-replication-attributes'"> { "server" : server, "replicationDomain" : domainMap[ldapServer][0], "include" : [('set','')], "exclude" : [('reset',None)], "expectedRC" : 1 } </call> <call function="'set-ops-fractional-replication-attributes'"> { "server" : server, "replicationDomain" : domainMap[ldapServer][0], "include" : [('reset',None)], "exclude" : [('set','')], "expectedRC" : 1 } </call> <message> 'test setting together include and exclude' </message> <call function="'reset-fractional-replication-attributes'"> { "replicationDomain" : domainMap[ldapServer][0], "server" : server, } </call> <call function="'set-ops-fractional-replication-attributes'"> { "replicationDomain" : domainMap[ldapServer][0], "server" : server, "include" : [('set','inetOrgPerson:description,audio')], "exclude" : [('set','*:mail')], "expectedRC" : 1 } </call> <call function="'get-fractional-replication-attributes'"> { 'replicationDomain' : domainMap[ldapServer][0], "server" : server, } </call> <message> 'test setting include after setting exclude' </message> <call function="'set-ops-fractional-replication-attributes'"> { "server" : server, "replicationDomain" : domainMap[ldapServer][0], "include" : [('reset',None)], "exclude" : [('set','*:mail')], "expectedRC" : 0 } </call> <call function="'get-fractional-replication-attributes'"> { 'replicationDomain' : domainMap[ldapServer][0], 'server' : server, } </call> <call function="'set-ops-fractional-replication-attributes'"> { "server" : server, "replicationDomain" : domainMap[ldapServer][0], "include" : [('set','inetOrgPerson:description,audio')], "expectedRC" : 1 } </call> <call function="'get-fractional-replication-attributes'"> { 'replicationDomain' : domainMap[ldapServer][0], 'server' : server, } </call> <call function="'testCase_Postamble'"/> </sequence> </testcase> </function> <function name="only_optional"> <!--- Test Case information #@TestMarker fractional-replication config #@TestName only optional attributes #@TestID only optional attributes #@TestPurpose Check that we can only refer to optionals attributes #@TestPreamble #@TestSteps reject fractional-exclude: inetOrgPerson:sn #@TestSteps reject fractional-include: inetOrgPerson:surnAme #@TestSteps test we get error when making opt attribute mandatory #@TestPostamble #@TestResult Success if conflict is detected for both steps --> <testcase name="getTestCaseName('only optional attributes allowed')"> <sequence> <call function="'testCase_Preamble'"/> <call function="'get-fractional-replication-attributes'"> { 'replicationDomain' : domainMap[ldapServer][0], 'server' : server, } </call> <message> 'reject fractional-exclude: inetOrgPerson:sn' </message> <call function="'set-ops-fractional-replication-attributes'"> { "server" : server, "replicationDomain" : domainMap[ldapServer][0], "include" : [('reset',None)], "exclude" : [('set','inetOrgPerson:sn')], "expectedRC" : 1 } </call> <call function="'get-fractional-replication-attributes'"> { 'replicationDomain' : domainMap[ldapServer][0], 'server' : server, } </call> <message> 'reject fractional-exclude: inetOrgPerson:surnAme' </message> <call function="'set-ops-fractional-replication-attributes'"> { "server" : server, "replicationDomain" : domainMap[ldapServer][0], "include" : [('reset',None)], "exclude" : [('set','inetOrgPerson:surnAme')], "expectedRC" : 1 } </call> <call function="'testCase_Postamble'"/> </sequence> </testcase> </function> <function name="alias_attributes"> <!--- Test Case information #@TestMarker fractional-replication config #@TestName alias attributes #@TestID alias attributes #@TestPurpose Check that alias opt/mandatory attributes are treated equaly to non alias counterpart #@TestPreamble #@TestSteps fractional-exclude rejects inetOrgPerson:surname (aka 'sn') #@TestSteps fractional-exclude accepts inetOrgPerson:homeTelephoneNumber (aka 'homePhone') #@TestSteps test we get error when making opt attribute mandatory #@TestPostamble #@TestResult Success if conflict is detected for both steps --> <testcase name="getTestCaseName('alias attributes')"> <sequence> <call function="'testCase_Preamble'"/> <call function="'reset-fractional-replication-attributes'"> { 'replicationDomain' : domainMap[ldapServer][0], 'server' : server, } </call> <message> 'fractional-exclude rejects *:surname (aka "sn")' </message> <call function="'set-ops-fractional-replication-attributes'"> { "server" : server, "replicationDomain" : domainMap[ldapServer][0], "include" : [('reset',None)], "exclude" : [('set','inetOrgPerson:surname')], "expectedRC" : 1 } </call> <call function="'get-fractional-replication-attributes'"> { 'replicationDomain' : domainMap[ldapServer][0], 'server' : server, } </call> <!-- TODO verify we can add a entries for which schema make surname : optional -> surname attribute is removed from entry surname : mandatory -> surname attribute is left in entry --> <message> 'fractional-exclude accepts inetOrgPerson:homeTelephoneNumber (aka "homePhone")' </message> <call function="'set-ops-fractional-replication-attributes'"> { "server" : server, "replicationDomain" : domainMap[ldapServer][0], "include" : [('add','inetOrgPerson:homeTelephoneNumber,mail')], "exclude" : [('reset',None)], "expectedRC" : 0 } </call> <call function="'get-fractional-replication-attributes'"> { 'replicationDomain' : domainMap[ldapServer][0], 'server' : server, } </call> <!-- TODO verify we can add a entry without homeTelephoneNumber and reject entry with homeTelephoneNumber --> <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 #@TestID mixing add/set/reset/remove #@TestPurpose Check that we can mix set/reset/add/remove #@TestPreamble #@TestSteps test removing exclude and adding include #@TestSteps test partially removing include + adding exclude and include #@TestPostamble #@TestResult Success if conflict is detected for both steps --> <testcase name="getTestCaseName('mixing add/set/reset/remove')"> <sequence> <call function="'testCase_Preamble'"/> <call function="'reset-fractional-replication-attributes'"> { 'replicationDomain' : domainMap[ldapServer][0], 'server' : server, } </call> <message> 'test removing include and adding include' </message> <call function="'set-ops-fractional-replication-attributes'"> { "server" : server, "replicationDomain" : domainMap[ldapServer][0], "include" : [('add','inetOrgPerson:description,audio')], "exclude" : [('remove','inetOrgPerson:mail')], "expectedRC" : 1 } </call> <call function="'get-fractional-replication-attributes'"> { 'replicationDomain' : domainMap[ldapServer][0], 'server' : server, } </call> <call function="'set-ops-fractional-replication-attributes'"> { "server" : server, "replicationDomain" : domainMap[ldapServer][0], "include" : [('add','inetOrgPerson:description,audio')], "expectedRC" : 0 } </call> <call function="'get-fractional-replication-attributes'"> { 'replicationDomain' : domainMap[ldapServer][0], 'server' : server, } </call> <message> 'test partially removing include + adding exclude and include' </message> <call function="'set-ops-fractional-replication-attributes'"> { "server" : server, "replicationDomain" : domainMap[ldapServer][0], "include" : [('remove','inetOrgPerson:audio'), ('add','netOrgPerson:jpegPhoto,initials') ], "exclude" : [('add','*:mail')], "expectedRC" : 1 } </call> <call function="'get-fractional-replication-attributes'"> { 'replicationDomain' : domainMap[ldapServer][0], 'server' : server, } </call> <call function="'set-ops-fractional-replication-attributes'"> { "server" : server, "replicationDomain" : domainMap[ldapServer][0], "include" : [('add','inetOrgPerson:jpegPhoto,employeeNumber'), ('remove','inetOrgPerson:jpegPhoto') ], "expectedRC" : 1 } </call> <call function="'get-fractional-replication-attributes'"> { 'replicationDomain' : domainMap[ldapServer][0], 'server' : server, } </call> <!-- TODO verify that the inetOrgPerson:audio was removed --> <call function="'testCase_Postamble'"/> </sequence> </testcase> </function> <function name="mixing_literal_OID"> <!--- Test Case information #@TestMarker fractional-replication config #@TestName mixing literal/OID #@TestID mixing literal/OID #@TestPurpose Check that we can mix literal/OID #@TestPreamble #@TestSteps reset fractional-replication settings #@TestSteps try to exclude mandatory literal attribute #@TestSteps try to exclude mandatory OID attribute #@TestSteps try to include mandatory literal attribute #@TestSteps try to include mandatory OID attribute #@TestSteps reset fractional-replication settings #@TestSteps test setting OID for class #@TestSteps test setting OID for attribute #@TestSteps test setting OID for class and attribute #@TestSteps test setting mix OID and literal for class and attribute #@TestPostamble #@TestResult Success if mixing in all context --> <testcase name="getTestCaseName('mixing literal/OIDs')"> <sequence> <call function="'testCase_Preamble'"/> <message> 'reset fractional-replication settings' </message> <call function="'reset-fractional-replication-attributes'"> { 'replicationDomain' : domainMap[ldapServer][0], 'server' : server, } </call> <message level="'user1'"> 'try to exclude mandatory literal attribute' </message> <message level="'user1'"> 'try to exclude mandatory OID attribute' </message> <message level="'user1'"> 'try to include mandatory literal attribute' </message> <message level="'user1'"> 'try to include mandatory OID attribute' </message> <message> 'reset fractional-replication settings' </message> <call function="'reset-fractional-replication-attributes'"> { 'replicationDomain' : domainMap[ldapServer][0], 'server' : server, } </call> <message level="'user1'"> 'test setting OID for class' </message> <call function="'set-ops-fractional-replication-attributes'"> { "server" : server, "replicationDomain" : domainMap[ldapServer][0], "include" : [('reset',None)], "exclude" : [('add','2.16.840.1.113730.3.2.2:jpegPhoto')], "expectedRC" : 0 } </call> <call function="'get-fractional-replication-attributes'"> { 'replicationDomain' : domainMap[ldapServer][0], 'server' : server, } </call> <message level="'user1'"> 'test setting OID for attribute' </message> <message level="'user1'"> 'test setting OID for class and attribute' </message> <call function="'set-ops-fractional-replication-attributes'"> { "server" : server, "replicationDomain" : domainMap[ldapServer][0], "include" : [('reset',None)], "exclude" : [('add','*:0.9.2342.19200300.100.1.60'), ('add','inetOrgPerson:0.9.2342.19200300.100.1.60'), ('add','2.16.840.1.113730.3.2.2:0.9.2342.19200300.100.1.60') ], "expectedRC" : 0 } </call> <call function="'get-fractional-replication-attributes'"> { 'replicationDomain' : domainMap[ldapServer][0], 'server' : server, } </call> <message level="'user1'"> 'test setting mix OID and literal for class and attribute' </message> <call function="'set-ops-fractional-replication-attributes'"> { "server" : server, "replicationDomain" : domainMap[ldapServer][0], "include" : [('reset',None)], "exclude" : [('add','*:mail,jpegPhoto,0.9.2342.19200300.100.1.60'), ('add','inetOrgPerson:jpegPhoto,0.9.2342.19200300.100.1.60'), ('add','2.16.840.1.113730.3.2.2:jpegPhoto,0.9.2342.19200300.100.1.60') ], "expectedRC" : 0 } </call> <call function="'get-fractional-replication-attributes'"> { 'replicationDomain' : domainMap[ldapServer][0], 'server' : server, } </call> <call function="'set-ops-fractional-replication-attributes'"> { "server" : server, "replicationDomain" : domainMap[ldapServer][0], "include" : [('reset',None)], "exclude" : [('remove','*:mail,jpegPhoto'), ('remove','*:0.9.2342.19200300.100.1.60'), ('remove','InetOrgPerson:0.9.2342.19200300.100.1.60') ], "expectedRC" : 0, "knownIssue" : '0000', } </call> <call function="'get-fractional-replication-attributes'"> { 'replicationDomain' : domainMap[ldapServer][0], 'server' : server, } </call> <!-- # TODO - verify # should be removed # *:jpegPhoto # *:0.9.2342.19200300.100.1.60 # InetOrgPerso:jpegPhoto # InetOrgPerson:0.9.2342.19200300.100.1.60 # 2.16.840.1.113730.3.2.2:jpegPhoto,0.9.2342.19200300.100.1.60 --> <call function="'testCase_Postamble'"/> </sequence> </testcase> </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> opends/tests/staf-tests/functional-tests/testcases/fractional-replication/utils.xml
@@ -373,7 +373,7 @@ </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 @@ -400,8 +400,9 @@ } </call> <script> oidDict = OIDDict() oidDict.parseSchema(STAXResult[0][1]) schemaContent = STAXResult[0][1] oidDict = OIDDict() oidDict.parseSchema(schemaContent) </script> <return>oidDict</return> </sequence> @@ -515,7 +516,7 @@ </if> <if expr="RC == 0"> <sequence> <call function="'LdifDiffWithScript'"> <call function="'LdifDiffWithScript-new'"> { 'location' : dsMaster.getHostname(), 'dsPath' : dsMasterPath, 'sourceLdif' : '%s/%s' % (remote.temp, filteredRefTree), @@ -523,36 +524,38 @@ 'outputLdif' : '%s/%s' % (remote.temp,treeDiffs) } </call> <if expr="STAXResult == 0"> <sequence> <return>0, None</return> </sequence> <else> <sequence> <script> import time tmstamp = time.time() </script> <call function="'copyFile'"> { 'location' : dsMaster.getHostname(), 'srcfile' : '%s/%s' % (remote.temp,treeDiffs), 'destfile' : '%s/%s.%s' % (remote.temp,treeDiffs,tmstamp) } </call> <call function="'getFile'"> { 'location' : dsMaster.getHostname(), 'filename' : '%s/%s' % (remote.temp,treeDiffs) } </call> <if expr="RC == 0"> <return>1, STAXResult[1]</return> <else> <return>1, None</return> </else> </if> </sequence> </else> </if> </sequence> </if> <if expr="RC == 0"> <return>0, None</return> <else> <sequence> <script> import time tmstamp = time.time() </script> <call function="'copyFile'"> { 'location' : dsMaster.getHostname(), 'srcfile' : '%s/%s' % (remote.temp,treeDiffs), 'destfile' : '%s/%s.%s' % (remote.temp,treeDiffs,tmstamp) } </call> <call function="'getFile'"> { 'location' : dsMaster.getHostname(), 'filename' : '%s/%s' % (remote.temp,treeDiffs) } </call> <if expr="RC == 0"> <return>1, STAXResult[1]</return> <else> <return>1, None</return> </else> </if> </sequence> </else> </if> </sequence> </function> opends/tests/staf-tests/functional-tests/testcases/groups/group_cleanup.xml
New file @@ -0,0 +1,79 @@ <?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> opends/tests/staf-tests/functional-tests/testcases/groups/group_setup.xml
New file @@ -0,0 +1,95 @@ <?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> opends/tests/staf-tests/functional-tests/testcases/replication/externalchangelog/externalchangelog.xml
@@ -33,61 +33,71 @@ <sequence> <block name="'externalchangelog'"> <sequence> <script> if not CurrentTestPath.has_key('group'): CurrentTestPath['group']='replication' CurrentTestPath['suite']=STAXCurrentBlock _group = 'replication' _suite = 'externalchangelog' </script> <call function="'testSuite_Preamble'"/> <!--- Test Suite information #@TestSuiteName Replication External Changelog Tests #@TestSuitePurpose Test the event notification system provided by the External Changelog. #@TestSuiteID External Changelog Tests #@TestSuiteGroup External Changelog #@TestGroup Replication #@TestScript replication_externalchangelog.xml #@TestHTMLLink http://opends.dev.java.net/ --> <import machine="STAF_LOCAL_HOSTNAME" file="'%s/testcases/replication/replication_setup.xml' % (TESTS_DIR)"/> <call function="'replication_setup'"/> <!-- 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' CurrentTestPath['suite']=STAXCurrentBlock _group = 'replication' _suite = 'externalchangelog' </script> <call function="'testSuite_Preamble'"/> <!--- Test Suite information #@TestSuiteName Replication External Changelog Tests #@TestSuitePurpose Test the event notification system provided by the External Changelog. #@TestSuiteID External Changelog Tests #@TestSuiteGroup External Changelog #@TestGroup Replication #@TestScript replication_externalchangelog.xml #@TestHTMLLink http://opends.dev.java.net/ --> <import machine="STAF_LOCAL_HOSTNAME" file="'%s/testcases/replication/replication_setup.xml' % (TESTS_DIR)"/> <call function="'replication_setup'"/> <!-- Run common set of ECL tests in opends proprietary mode --> <import machine="STAF_LOCAL_HOSTNAME" file="'%s/testcases/%s/%s/%s_common_ecl_tests.xml' % (TESTS_DIR, _group, _suite, _suite)"/> <call function="'common_ecl_tests'"> { 'ecl_mode' : 'opends' } </call> <!-- Run common set of ECL tests in changelog draft-compatible ! mode --> <import machine="STAF_LOCAL_HOSTNAME" file="'%s/testcases/%s/%s/%s_common_ecl_tests.xml' % (TESTS_DIR, _group, _suite, _suite)"/> <call function="'common_ecl_tests'"> { 'ecl_mode' : 'draft' } </call> <import machine="STAF_LOCAL_HOSTNAME" file="'%s/testcases/replication/replication_cleanup.xml' % (TESTS_DIR)"/> <call function="'replication_cleanup'" /> <!-- Run common set of ECL tests in opends proprietary mode --> <import machine="STAF_LOCAL_HOSTNAME" file="'%s/testcases/%s/%s/%s_common_ecl_tests.xml' % (TESTS_DIR, _group, _suite, _suite)"/> <call function="'common_ecl_tests'"> { 'ecl_mode' : 'opends' } </call> <!-- Run common set of ECL tests in changelog draft-compatible ! mode --> <import machine="STAF_LOCAL_HOSTNAME" file="'%s/testcases/%s/%s/%s_common_ecl_tests.xml' % (TESTS_DIR, _group, _suite, _suite)"/> <call function="'common_ecl_tests'"> { 'ecl_mode' : 'draft' } </call> <import machine="STAF_LOCAL_HOSTNAME" file="'%s/testcases/replication/replication_cleanup.xml' % (TESTS_DIR)"/> <call function="'replication_cleanup'" /> <call function="'testSuite_Postamble'"/> <call function="'testSuite_Postamble'"/> </sequence> </if> </sequence> </block> </sequence> opends/tests/staf-tests/functional-tests/testcases/replication/externalchangelog/externalchangelog_common_ecl_tests.xml
@@ -2362,15 +2362,20 @@ 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=*', @@ -4815,9 +4820,69 @@ </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 @@ -4895,13 +4960,21 @@ <!-- 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=*', @@ -4947,18 +5020,6 @@ </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, @@ -5017,7 +5078,12 @@ { 'ldifEntries' : searchResult } </call> <script> addedEntries += STAXResult 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> <else> @@ -5059,6 +5125,9 @@ </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, @@ -5070,7 +5139,8 @@ 'dsBaseDN' : 'cn=changelog', 'dsFilter' : '(objectclass=*)', 'changeNumberFilter' : chgNumberFilter, 'changelogCookie' : lastCookie 'changelogCookie' : lastCookie, 'knownIssue' : '4329' } </call> <script> @@ -5386,6 +5456,9 @@ </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, @@ -5397,7 +5470,8 @@ 'dsBaseDN' : eclSearchBaseDn, 'dsFilter' : eclSearchFilter, 'changeNumberFilter' : chgNumberFilter, 'changelogCookie' : lastCookie 'changelogCookie' : lastCookie, 'knownIssue' : '4329' } </call> <script> @@ -5594,6 +5668,9 @@ </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, @@ -5605,7 +5682,8 @@ 'dsBaseDN' : eclSearchBaseDn, 'dsFilter' : eclSearchFilter, 'changeNumberFilter' : chgNumberFilter, 'changelogCookie' : lastCookie 'changelogCookie' : lastCookie, 'knownIssue' : '4329' } </call> <script> @@ -5787,6 +5865,24 @@ 'replicationDnList' : [newReplSuffix] } </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> opends/tests/staf-tests/shared/ant/build.properties
@@ -33,7 +33,7 @@ # 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 opends/tests/staf-tests/shared/functions/utils.xml
@@ -1105,7 +1105,7 @@ 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") opends/tests/staf-tests/shared/python/common.py
@@ -47,7 +47,9 @@ "list2dn", "dn2rfcmailaddr", "java_properties", "xmldoc_service" ] "xmldoc_service" , "xml_create_report" , "group_to_run" ] class format_testcase: 'Format the Test name objects' @@ -681,4 +683,66 @@ tag.setAttributeNode(newAttribute) 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 opends/tests/staf-tests/shared/python/schema.py
@@ -39,10 +39,13 @@ 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 @@ -50,6 +53,7 @@ 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) @@ -58,11 +62,17 @@ # populate the NAME to OID : "dict" dictionary NAMES = self._getStr(line,'NAME') if NAMES: # TODO encoded schema is not handled for now self.dict.update({OID:NAMES}) for name in NAMES: self.dict.update({name:OID}) # populate SUP and MUST / MAY, : "sup", "may", "must" dictionaries if line.startswith('objectClasses:'): # TODO encoded schema is not handled for now self.objDict.update({OID:NAMES}) for name in NAMES: 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') if r: @@ -70,9 +80,15 @@ 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 @@ -111,7 +127,7 @@ 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): @@ -160,38 +176,46 @@ 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: lines.append(line) # populate the OID <-> Names dictionary self._getOID(line) line =f[:-1] line = f.strip() line = f[:-1] 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(): @@ -214,3 +238,15 @@ 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 opends/tests/staf-tests/shared/tests/runTests.xml
@@ -39,30 +39,20 @@ <script> listOfChildren=[] xml=xmldoc_service() 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) 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 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 -->