tests/immsv/common/immtest.c | 4 +-
tests/immsv/management/test_saImmOmClassCreate_2.c | 661 +++++++++++++++++++++
2 files changed, 663 insertions(+), 2 deletions(-)
Add test cases for default value removal.
diff --git a/tests/immsv/common/immtest.c b/tests/immsv/common/immtest.c
--- a/tests/immsv/common/immtest.c
+++ b/tests/immsv/common/immtest.c
@@ -22,8 +22,8 @@
#include <pthread.h>
#include "immtest.h"
-const SaVersionT constImmVersion = {'A', 0x02, 0x0f};
-SaVersionT immVersion = {'A', 0x02, 0x0f};
+const SaVersionT constImmVersion = {'A', 0x02, 0x10};
+SaVersionT immVersion = {'A', 0x02, 0x10};
SaAisErrorT rc;
SaImmHandleT immOmHandle;
SaImmHandleT immOiHandle;
diff --git a/tests/immsv/management/test_saImmOmClassCreate_2.c
b/tests/immsv/management/test_saImmOmClassCreate_2.c
--- a/tests/immsv/management/test_saImmOmClassCreate_2.c
+++ b/tests/immsv/management/test_saImmOmClassCreate_2.c
@@ -299,6 +299,650 @@ void saImmOmClassCreate_2_17(void)
safassert(saImmOmFinalize(immOmHandle), SA_AIS_OK);
}
+#define OPENSAF_IMM_NOSTD_FLAG_PARAM "opensafImmNostdFlags"
+#define OPENSAF_IMM_NOSTD_FLAG_ON 1
+#define OPENSAF_IMM_NOSTD_FLAG_OFF 2
+#define OPENSAF_IMM_IMMSV_ADMO "safImmService"
+
+static int enableSchemaChange()
+{
+ /*
+ * If schema change is already enabled, do nothing and return 1
+ * If schema change is disabled, enable it and return 0
+ */
+ int rc = 0;
+ SaNameT objectName;
+ objectName.length = strlen(OPENSAF_IMM_OBJECT_DN);
+ strncpy((char *) objectName.value, OPENSAF_IMM_OBJECT_DN,
objectName.length);
+ SaImmAccessorHandleT accessorHandle;
+ const SaImmAttrNameT attName = (char *) OPENSAF_IMM_ATTR_NOSTD_FLAGS;
+ SaImmAttrNameT attNames[] = {attName, NULL};
+ SaImmAttrValuesT_2 ** resultAttrs;
+
+ safassert(saImmOmInitialize(&immOmHandle, &immOmCallbacks, &immVersion),
SA_AIS_OK);
+ safassert(saImmOmAccessorInitialize(immOmHandle, &accessorHandle),
SA_AIS_OK);
+ safassert(saImmOmAccessorGet_2(accessorHandle, &objectName, attNames,
&resultAttrs), SA_AIS_OK);
+ assert(resultAttrs[0] && (resultAttrs[0]->attrValueType ==
SA_IMM_ATTR_SAUINT32T));
+ assert(resultAttrs[0]->attrValuesNumber == 1);
+
+ if (*((SaUint32T *) resultAttrs[0]->attrValues[0]) &
OPENSAF_IMM_FLAG_SCHCH_ALLOW) {
+ rc = 1;
+ goto done;
+ }
+
+ SaImmAdminOwnerHandleT ownerHandle;
+ const SaImmAdminOwnerNameT adminOwnerName = OPENSAF_IMM_IMMSV_ADMO;
+ const SaNameT* objectNames[] = { &objectName, NULL };
+ SaStringT paramName = OPENSAF_IMM_NOSTD_FLAG_PARAM;
+ SaUint32T paramValue = OPENSAF_IMM_FLAG_SCHCH_ALLOW;
+ SaImmAdminOperationParamsT_2 param = { paramName, SA_IMM_ATTR_SAUINT32T,
¶mValue };
+ const SaImmAdminOperationParamsT_2 *params[] = { ¶m, NULL };
+ SaAisErrorT operation_return_value;
+
+ safassert(saImmOmAdminOwnerInitialize(immOmHandle, adminOwnerName,
SA_TRUE, &ownerHandle), SA_AIS_OK);
+ safassert(saImmOmAdminOwnerSet(ownerHandle, objectNames, SA_IMM_ONE),
SA_AIS_OK);
+ safassert(saImmOmAdminOperationInvoke_2(ownerHandle, &objectName, 1,
OPENSAF_IMM_NOSTD_FLAG_ON,
+ params, &operation_return_value, SA_TIME_ONE_MINUTE), SA_AIS_OK);
+ safassert(saImmOmAdminOwnerRelease(ownerHandle, objectNames, SA_IMM_ONE),
SA_AIS_OK);
+
+ done:
+ safassert(saImmOmFinalize(immOmHandle), SA_AIS_OK);
+ return rc;
+}
+
+static void disableSchemaChange()
+{
+ SaNameT objectName;
+ objectName.length = strlen(OPENSAF_IMM_OBJECT_DN);
+ strncpy((char *) objectName.value, OPENSAF_IMM_OBJECT_DN,
objectName.length);
+ SaImmAdminOwnerHandleT ownerHandle;
+ const SaImmAdminOwnerNameT adminOwnerName = OPENSAF_IMM_IMMSV_ADMO;
+ const SaNameT* objectNames[] = { &objectName, NULL };
+ SaStringT paramName = OPENSAF_IMM_NOSTD_FLAG_PARAM;
+ SaUint32T paramValue = OPENSAF_IMM_FLAG_SCHCH_ALLOW;
+ SaImmAdminOperationParamsT_2 param = { paramName, SA_IMM_ATTR_SAUINT32T,
¶mValue };
+ const SaImmAdminOperationParamsT_2 *params[] = { ¶m, NULL };
+ SaAisErrorT operation_return_value;
+
+ safassert(saImmOmInitialize(&immOmHandle, &immOmCallbacks, &immVersion),
SA_AIS_OK);
+ safassert(saImmOmAdminOwnerInitialize(immOmHandle, adminOwnerName,
SA_TRUE, &ownerHandle), SA_AIS_OK);
+ safassert(saImmOmAdminOwnerSet(ownerHandle, objectNames, SA_IMM_ONE),
SA_AIS_OK);
+ safassert(saImmOmAdminOperationInvoke_2(ownerHandle, &objectName, 1,
OPENSAF_IMM_NOSTD_FLAG_OFF,
+ params, &operation_return_value, SA_TIME_ONE_MINUTE), SA_AIS_OK);
+ safassert(saImmOmAdminOwnerRelease(ownerHandle, objectNames, SA_IMM_ONE),
SA_AIS_OK);
+ safassert(saImmOmFinalize(immOmHandle), SA_AIS_OK);
+}
+
+void saImmOmClassCreate_SchemaChange_2_01(void)
+{
+ /*
+ * [CONFIG_CLASS] Remove default value by adding DEFAULT_REMOVED flag
+ */
+ int schemaChangeEnabled = enableSchemaChange();
+ safassert(saImmOmInitialize(&immOmHandle, &immOmCallbacks, &immVersion),
SA_AIS_OK);
+
+ const SaImmClassNameT className = (SaImmClassNameT) __FUNCTION__;
+ SaImmAttrDefinitionT_2 rdn =
+ {"rdn", SA_IMM_ATTR_SANAMET, SA_IMM_ATTR_CONFIG | SA_IMM_ATTR_RDN,
NULL};
+ SaUint32T defaultVal = 100;
+ SaImmAttrDefinitionT_2 hasDefault =
+ {"attr", SA_IMM_ATTR_SAUINT32T, SA_IMM_ATTR_CONFIG |
SA_IMM_ATTR_WRITABLE, &defaultVal};
+ SaImmAttrDefinitionT_2 defaultRemoved =
+ {"attr", SA_IMM_ATTR_SAUINT32T, SA_IMM_ATTR_CONFIG |
SA_IMM_ATTR_WRITABLE | SA_IMM_ATTR_DEFAULT_REMOVED, NULL};
+ const SaImmAttrDefinitionT_2 *attrDefinitions[] = {&rdn, NULL, NULL};
+
+ attrDefinitions[1] = &hasDefault;
+ safassert(saImmOmClassCreate_2(immOmHandle, className,
SA_IMM_CLASS_CONFIG, attrDefinitions), SA_AIS_OK);
+ attrDefinitions[1] = &defaultRemoved;
+ rc = saImmOmClassCreate_2(immOmHandle, className, SA_IMM_CLASS_CONFIG,
attrDefinitions);
+ test_validate(rc, SA_AIS_OK);
+ safassert(saImmOmClassDelete(immOmHandle, className), SA_AIS_OK);
+
+ safassert(saImmOmFinalize(immOmHandle), SA_AIS_OK);
+ if (!schemaChangeEnabled) disableSchemaChange();
+}
+
+void saImmOmClassCreate_SchemaChange_2_02(void)
+{
+ /*
+ * [CONFIG_CLASS] Add default value to default-removed attribute
+ */
+ int schemaChangeEnabled = enableSchemaChange();
+ safassert(saImmOmInitialize(&immOmHandle, &immOmCallbacks, &immVersion),
SA_AIS_OK);
+
+ const SaImmClassNameT className = (SaImmClassNameT) __FUNCTION__;
+ SaImmAttrDefinitionT_2 rdn =
+ {"rdn", SA_IMM_ATTR_SANAMET, SA_IMM_ATTR_CONFIG | SA_IMM_ATTR_RDN,
NULL};
+ SaUint32T defaultVal = 100;
+ SaImmAttrDefinitionT_2 hasDefault =
+ {"attr", SA_IMM_ATTR_SAUINT32T, SA_IMM_ATTR_CONFIG |
SA_IMM_ATTR_WRITABLE, &defaultVal};
+ SaImmAttrDefinitionT_2 defaultRemoved =
+ {"attr", SA_IMM_ATTR_SAUINT32T, SA_IMM_ATTR_CONFIG |
SA_IMM_ATTR_WRITABLE | SA_IMM_ATTR_DEFAULT_REMOVED, NULL};
+ const SaImmAttrDefinitionT_2 *attrDefinitions[] = {&rdn, NULL, NULL};
+
+ attrDefinitions[1] = &hasDefault;
+ safassert(saImmOmClassCreate_2(immOmHandle, className,
SA_IMM_CLASS_CONFIG, attrDefinitions), SA_AIS_OK);
+ attrDefinitions[1] = &defaultRemoved;
+ safassert(saImmOmClassCreate_2(immOmHandle, className,
SA_IMM_CLASS_CONFIG, attrDefinitions), SA_AIS_OK);
+ attrDefinitions[1] = &hasDefault;
+ rc = saImmOmClassCreate_2(immOmHandle, className, SA_IMM_CLASS_CONFIG,
attrDefinitions);
+ test_validate(rc, SA_AIS_OK);
+ safassert(saImmOmClassDelete(immOmHandle, className), SA_AIS_OK);
+
+ safassert(saImmOmFinalize(immOmHandle), SA_AIS_OK);
+ if (!schemaChangeEnabled) disableSchemaChange();
+}
+
+void saImmOmClassCreate_SchemaChange_2_03(void)
+{
+ /*
+ * [CONFIG_CLASS] Remove default value from attribute that doesn't have
default value
+ */
+ int schemaChangeEnabled = enableSchemaChange();
+ safassert(saImmOmInitialize(&immOmHandle, &immOmCallbacks, &immVersion),
SA_AIS_OK);
+
+ const SaImmClassNameT className = (SaImmClassNameT) __FUNCTION__;
+ SaImmAttrDefinitionT_2 rdn =
+ {"rdn", SA_IMM_ATTR_SANAMET, SA_IMM_ATTR_CONFIG | SA_IMM_ATTR_RDN,
NULL};
+ SaImmAttrDefinitionT_2 noDefault =
+ {"attr", SA_IMM_ATTR_SAUINT32T, SA_IMM_ATTR_CONFIG |
SA_IMM_ATTR_WRITABLE, NULL};
+ SaImmAttrDefinitionT_2 defaultRemoved =
+ {"attr", SA_IMM_ATTR_SAUINT32T, SA_IMM_ATTR_CONFIG |
SA_IMM_ATTR_WRITABLE | SA_IMM_ATTR_DEFAULT_REMOVED, NULL};
+ const SaImmAttrDefinitionT_2 *attrDefinitions[] = {&rdn, NULL, NULL};
+
+ attrDefinitions[1] = &noDefault;
+ safassert(saImmOmClassCreate_2(immOmHandle, className,
SA_IMM_CLASS_CONFIG, attrDefinitions), SA_AIS_OK);
+ attrDefinitions[1] = &defaultRemoved;
+ rc = saImmOmClassCreate_2(immOmHandle, className, SA_IMM_CLASS_CONFIG,
attrDefinitions);
+ test_validate(rc, SA_AIS_ERR_EXIST);
+ safassert(saImmOmClassDelete(immOmHandle, className), SA_AIS_OK);
+
+ safassert(saImmOmFinalize(immOmHandle), SA_AIS_OK);
+ if (!schemaChangeEnabled) disableSchemaChange();
+}
+
+void saImmOmClassCreate_SchemaChange_2_04(void)
+{
+ /*
+ * [CONFIG_CLASS] Remove DEFAULT_REMOVED flag without adding default value
+ */
+ int schemaChangeEnabled = enableSchemaChange();
+ safassert(saImmOmInitialize(&immOmHandle, &immOmCallbacks, &immVersion),
SA_AIS_OK);
+
+ const SaImmClassNameT className = (SaImmClassNameT) __FUNCTION__;
+ SaImmAttrDefinitionT_2 rdn =
+ {"rdn", SA_IMM_ATTR_SANAMET, SA_IMM_ATTR_CONFIG | SA_IMM_ATTR_RDN,
NULL};
+ SaImmAttrDefinitionT_2 noDefault =
+ {"attr", SA_IMM_ATTR_SAUINT32T, SA_IMM_ATTR_CONFIG |
SA_IMM_ATTR_WRITABLE, NULL};
+ SaUint32T defaultVal = 100;
+ SaImmAttrDefinitionT_2 hasDefault =
+ {"attr", SA_IMM_ATTR_SAUINT32T, SA_IMM_ATTR_CONFIG |
SA_IMM_ATTR_WRITABLE, &defaultVal};
+ SaImmAttrDefinitionT_2 defaultRemoved =
+ {"attr", SA_IMM_ATTR_SAUINT32T, SA_IMM_ATTR_CONFIG |
SA_IMM_ATTR_WRITABLE | SA_IMM_ATTR_DEFAULT_REMOVED, NULL};
+ const SaImmAttrDefinitionT_2 *attrDefinitions[] = {&rdn, NULL, NULL};
+
+ attrDefinitions[1] = &hasDefault;
+ safassert(saImmOmClassCreate_2(immOmHandle, className,
SA_IMM_CLASS_CONFIG, attrDefinitions), SA_AIS_OK);
+ attrDefinitions[1] = &defaultRemoved;
+ safassert(saImmOmClassCreate_2(immOmHandle, className,
SA_IMM_CLASS_CONFIG, attrDefinitions), SA_AIS_OK);
+ attrDefinitions[1] = &noDefault;
+ rc = saImmOmClassCreate_2(immOmHandle, className, SA_IMM_CLASS_CONFIG,
attrDefinitions);
+ test_validate(rc, SA_AIS_ERR_EXIST);
+ safassert(saImmOmClassDelete(immOmHandle, className), SA_AIS_OK);
+
+ safassert(saImmOmFinalize(immOmHandle), SA_AIS_OK);
+ if (!schemaChangeEnabled) disableSchemaChange();
+}
+
+void saImmOmClassCreate_SchemaChange_2_05(void)
+{
+ /*
+ * [CONFIG_CLASS] Add new attribute with DEFAULT_REMOVED flag to a class
+ */
+ int schemaChangeEnabled = enableSchemaChange();
+ safassert(saImmOmInitialize(&immOmHandle, &immOmCallbacks, &immVersion),
SA_AIS_OK);
+
+ const SaImmClassNameT className = (SaImmClassNameT) __FUNCTION__;
+ SaImmAttrDefinitionT_2 rdn =
+ {"rdn", SA_IMM_ATTR_SANAMET, SA_IMM_ATTR_CONFIG | SA_IMM_ATTR_RDN,
NULL};
+ SaImmAttrDefinitionT_2 defaultRemoved =
+ {"attr", SA_IMM_ATTR_SAUINT32T, SA_IMM_ATTR_CONFIG |
SA_IMM_ATTR_WRITABLE | SA_IMM_ATTR_DEFAULT_REMOVED, NULL};
+ const SaImmAttrDefinitionT_2 *attrDefinitions[] = {&rdn, NULL, NULL};
+
+ safassert(saImmOmClassCreate_2(immOmHandle, className,
SA_IMM_CLASS_CONFIG, attrDefinitions), SA_AIS_OK);
+ attrDefinitions[1] = &defaultRemoved;
+ rc = saImmOmClassCreate_2(immOmHandle, className, SA_IMM_CLASS_CONFIG,
attrDefinitions);
+ test_validate(rc, SA_AIS_ERR_EXIST);
+ safassert(saImmOmClassDelete(immOmHandle, className), SA_AIS_OK);
+
+ safassert(saImmOmFinalize(immOmHandle), SA_AIS_OK);
+ if (!schemaChangeEnabled) disableSchemaChange();
+}
+
+void saImmOmClassCreate_SchemaChange_2_06(void)
+{
+ /*
+ * [CONFIG_CLASS] Create new class with DEFAULT_REMOVED flag
+ */
+ int schemaChangeEnabled = enableSchemaChange();
+ safassert(saImmOmInitialize(&immOmHandle, &immOmCallbacks, &immVersion),
SA_AIS_OK);
+
+ const SaImmClassNameT className = (SaImmClassNameT) __FUNCTION__;
+ SaImmAttrDefinitionT_2 rdn =
+ {"rdn", SA_IMM_ATTR_SANAMET, SA_IMM_ATTR_CONFIG | SA_IMM_ATTR_RDN,
NULL};
+ SaImmAttrDefinitionT_2 defaultRemoved =
+ {"attr", SA_IMM_ATTR_SAUINT32T, SA_IMM_ATTR_CONFIG |
SA_IMM_ATTR_WRITABLE | SA_IMM_ATTR_DEFAULT_REMOVED, NULL};
+ const SaImmAttrDefinitionT_2 *attrDefinitions[] = {&rdn, &defaultRemoved,
NULL};
+
+ rc = saImmOmClassCreate_2(immOmHandle, className, SA_IMM_CLASS_CONFIG,
attrDefinitions);
+ test_validate(rc, SA_AIS_ERR_INVALID_PARAM);
+
+ safassert(saImmOmFinalize(immOmHandle), SA_AIS_OK);
+ if (!schemaChangeEnabled) disableSchemaChange();
+}
+
+void saImmOmClassCreate_SchemaChange_2_07(void)
+{
+ /*
+ * [CONFIG_CLASS] Set value of default-removed attribute to empty when
creating an object
+ */
+ int schemaChangeEnabled = enableSchemaChange();
+ safassert(saImmOmInitialize(&immOmHandle, &immOmCallbacks, &immVersion),
SA_AIS_OK);
+
+ const SaImmClassNameT className = (SaImmClassNameT) __FUNCTION__;
+ SaImmAttrDefinitionT_2 rdn =
+ {"rdn", SA_IMM_ATTR_SANAMET, SA_IMM_ATTR_CONFIG | SA_IMM_ATTR_RDN,
NULL};
+ SaUint32T defaultVal = 100;
+ SaImmAttrDefinitionT_2 hasDefault =
+ {"attr", SA_IMM_ATTR_SAUINT32T, SA_IMM_ATTR_CONFIG |
SA_IMM_ATTR_WRITABLE, &defaultVal};
+ SaImmAttrDefinitionT_2 defaultRemoved =
+ {"attr", SA_IMM_ATTR_SAUINT32T, SA_IMM_ATTR_CONFIG |
SA_IMM_ATTR_WRITABLE | SA_IMM_ATTR_DEFAULT_REMOVED, NULL};
+ const SaImmAttrDefinitionT_2 *attrDefinitions[] = {&rdn, NULL, NULL};
+
+ attrDefinitions[1] = &hasDefault;
+ safassert(saImmOmClassCreate_2(immOmHandle, className,
SA_IMM_CLASS_CONFIG, attrDefinitions), SA_AIS_OK);
+ attrDefinitions[1] = &defaultRemoved;
+ safassert(saImmOmClassCreate_2(immOmHandle, className,
SA_IMM_CLASS_CONFIG, attrDefinitions), SA_AIS_OK);
+
+ SaImmAdminOwnerHandleT ownerHandle;
+ const SaImmAdminOwnerNameT adminOwnerName = (SaImmAdminOwnerNameT)
__FUNCTION__;
+ SaImmCcbHandleT ccbHandle;
+ SaNameT objectName;
+ objectName.length = strlen(__FUNCTION__);
+ strncpy((char *) objectName.value, __FUNCTION__, objectName.length);
+ SaNameT* nameValues[] = {&objectName};
+ SaImmAttrValuesT_2 rdnValue = {"rdn", SA_IMM_ATTR_SANAMET, 1, (void**)
nameValues};
+ const SaImmAttrValuesT_2 * attrValues[] = {&rdnValue, NULL};
+ safassert(saImmOmAdminOwnerInitialize(immOmHandle, adminOwnerName,
SA_TRUE, &ownerHandle), SA_AIS_OK);
+ safassert(saImmOmCcbInitialize(ownerHandle, 0, &ccbHandle), SA_AIS_OK);
+
+ /* Create object */
+ safassert(saImmOmCcbObjectCreate_2(ccbHandle, className, NULL,
attrValues), SA_AIS_OK);
+ safassert(saImmOmCcbApply(ccbHandle), SA_AIS_OK);
+
+ /* Check value of the attribute */
+ SaImmAccessorHandleT accessorHandle;
+ const SaImmAttrNameT attName = "attr";
+ SaImmAttrNameT attNames[] = {attName, NULL};
+ SaImmAttrValuesT_2 ** resultAttrs;
+ safassert(saImmOmAccessorInitialize(immOmHandle, &accessorHandle),
SA_AIS_OK);
+ safassert(saImmOmAccessorGet_2(accessorHandle, &objectName, attNames,
&resultAttrs), SA_AIS_OK);
+ assert(resultAttrs[0] && (resultAttrs[0]->attrValueType ==
SA_IMM_ATTR_SAUINT32T));
+ test_validate(resultAttrs[0]->attrValuesNumber, 0);
+
+ /* Delete Object */
+ safassert(saImmOmCcbObjectDelete(ccbHandle, &objectName), SA_AIS_OK);
+ safassert(saImmOmCcbApply(ccbHandle), SA_AIS_OK);
+
+ safassert(saImmOmCcbFinalize(ccbHandle), SA_AIS_OK);
+ safassert(saImmOmAdminOwnerFinalize(ownerHandle), SA_AIS_OK);
+
+ safassert(saImmOmClassDelete(immOmHandle, className), SA_AIS_OK);
+
+ safassert(saImmOmFinalize(immOmHandle), SA_AIS_OK);
+ if (!schemaChangeEnabled) disableSchemaChange();
+}
+
+void saImmOmClassCreate_SchemaChange_2_08(void)
+{
+ /*
+ * [CONFIG_CLASS] Set value of default-restored attribute to empty when
creating an object
+ */
+ int schemaChangeEnabled = enableSchemaChange();
+ safassert(saImmOmInitialize(&immOmHandle, &immOmCallbacks, &immVersion),
SA_AIS_OK);
+
+ const SaImmClassNameT className = (SaImmClassNameT) __FUNCTION__;
+ SaImmAttrDefinitionT_2 rdn =
+ {"rdn", SA_IMM_ATTR_SANAMET, SA_IMM_ATTR_CONFIG | SA_IMM_ATTR_RDN,
NULL};
+ SaUint32T defaultVal = 100;
+ SaImmAttrDefinitionT_2 hasDefault =
+ {"attr", SA_IMM_ATTR_SAUINT32T, SA_IMM_ATTR_CONFIG |
SA_IMM_ATTR_WRITABLE, &defaultVal};
+ SaImmAttrDefinitionT_2 defaultRemoved =
+ {"attr", SA_IMM_ATTR_SAUINT32T, SA_IMM_ATTR_CONFIG |
SA_IMM_ATTR_WRITABLE | SA_IMM_ATTR_DEFAULT_REMOVED, NULL};
+ const SaImmAttrDefinitionT_2 *attrDefinitions[] = {&rdn, NULL, NULL};
+
+ attrDefinitions[1] = &hasDefault;
+ safassert(saImmOmClassCreate_2(immOmHandle, className,
SA_IMM_CLASS_CONFIG, attrDefinitions), SA_AIS_OK);
+ attrDefinitions[1] = &defaultRemoved;
+ safassert(saImmOmClassCreate_2(immOmHandle, className,
SA_IMM_CLASS_CONFIG, attrDefinitions), SA_AIS_OK);
+ attrDefinitions[1] = &hasDefault;
+ safassert(saImmOmClassCreate_2(immOmHandle, className,
SA_IMM_CLASS_CONFIG, attrDefinitions), SA_AIS_OK);
+
+ SaImmAdminOwnerHandleT ownerHandle;
+ const SaImmAdminOwnerNameT adminOwnerName = (SaImmAdminOwnerNameT)
__FUNCTION__;
+ SaImmCcbHandleT ccbHandle;
+ SaNameT objectName;
+ objectName.length = strlen(__FUNCTION__);
+ strncpy((char *) objectName.value, __FUNCTION__, objectName.length);
+ SaNameT* nameValues[] = {&objectName};
+ SaImmAttrValuesT_2 rdnValue = {"rdn", SA_IMM_ATTR_SANAMET, 1, (void**)
nameValues};
+ const SaImmAttrValuesT_2 * attrValues[] = {&rdnValue, NULL};
+ safassert(saImmOmAdminOwnerInitialize(immOmHandle, adminOwnerName,
SA_TRUE, &ownerHandle), SA_AIS_OK);
+ safassert(saImmOmCcbInitialize(ownerHandle, 0, &ccbHandle), SA_AIS_OK);
+
+ /* Create object */
+ safassert(saImmOmCcbObjectCreate_2(ccbHandle, className, NULL,
attrValues), SA_AIS_OK);
+ safassert(saImmOmCcbApply(ccbHandle), SA_AIS_OK);
+
+ /* Check value of the attribute */
+ SaImmAccessorHandleT accessorHandle;
+ const SaImmAttrNameT attName = "attr";
+ SaImmAttrNameT attNames[] = {attName, NULL};
+ SaImmAttrValuesT_2 ** resultAttrs;
+ safassert(saImmOmAccessorInitialize(immOmHandle, &accessorHandle),
SA_AIS_OK);
+ safassert(saImmOmAccessorGet_2(accessorHandle, &objectName, attNames,
&resultAttrs), SA_AIS_OK);
+ assert(resultAttrs[0] && (resultAttrs[0]->attrValueType ==
SA_IMM_ATTR_SAUINT32T));
+ assert(resultAttrs[0]->attrValuesNumber == 1);
+ test_validate(*((SaUint32T *) resultAttrs[0]->attrValues[0]), defaultVal);
+
+ /* Delete Object */
+ safassert(saImmOmCcbObjectDelete(ccbHandle, &objectName), SA_AIS_OK);
+ safassert(saImmOmCcbApply(ccbHandle), SA_AIS_OK);
+
+ safassert(saImmOmCcbFinalize(ccbHandle), SA_AIS_OK);
+ safassert(saImmOmAdminOwnerFinalize(ownerHandle), SA_AIS_OK);
+
+ safassert(saImmOmClassDelete(immOmHandle, className), SA_AIS_OK);
+
+ safassert(saImmOmFinalize(immOmHandle), SA_AIS_OK);
+ if (!schemaChangeEnabled) disableSchemaChange();
+}
+
+void saImmOmClassCreate_SchemaChange_2_09(void)
+{
+ /*
+ * [RUNTIME_CLASS] Remove default value by adding DEFAULT_REMOVED flag
+ */
+ int schemaChangeEnabled = enableSchemaChange();
+ safassert(saImmOmInitialize(&immOmHandle, &immOmCallbacks, &immVersion),
SA_AIS_OK);
+
+ const SaImmClassNameT className = (SaImmClassNameT) __FUNCTION__;
+ SaImmAttrDefinitionT_2 rdn =
+ {"rdn", SA_IMM_ATTR_SANAMET, SA_IMM_ATTR_RUNTIME | SA_IMM_ATTR_CACHED
| SA_IMM_ATTR_RDN, NULL};
+ SaUint32T defaultVal = 100;
+ SaImmAttrDefinitionT_2 hasDefault =
+ {"attr", SA_IMM_ATTR_SAUINT32T, SA_IMM_ATTR_RUNTIME |
SA_IMM_ATTR_CACHED, &defaultVal};
+ SaImmAttrDefinitionT_2 defaultRemoved =
+ {"attr", SA_IMM_ATTR_SAUINT32T, SA_IMM_ATTR_RUNTIME |
SA_IMM_ATTR_CACHED | SA_IMM_ATTR_DEFAULT_REMOVED, NULL};
+ const SaImmAttrDefinitionT_2 *attrDefinitions[] = {&rdn, NULL, NULL};
+
+ attrDefinitions[1] = &hasDefault;
+ safassert(saImmOmClassCreate_2(immOmHandle, className,
SA_IMM_CLASS_RUNTIME, attrDefinitions), SA_AIS_OK);
+ attrDefinitions[1] = &defaultRemoved;
+ rc = saImmOmClassCreate_2(immOmHandle, className, SA_IMM_CLASS_RUNTIME,
attrDefinitions);
+ test_validate(rc, SA_AIS_OK);
+ safassert(saImmOmClassDelete(immOmHandle, className), SA_AIS_OK);
+
+ safassert(saImmOmFinalize(immOmHandle), SA_AIS_OK);
+ if (!schemaChangeEnabled) disableSchemaChange();
+}
+
+void saImmOmClassCreate_SchemaChange_2_10(void)
+{
+ /*
+ * [RUNTIME_CLASS] Add default value to default-removed attribute
+ */
+ int schemaChangeEnabled = enableSchemaChange();
+ safassert(saImmOmInitialize(&immOmHandle, &immOmCallbacks, &immVersion),
SA_AIS_OK);
+
+ const SaImmClassNameT className = (SaImmClassNameT) __FUNCTION__;
+ SaImmAttrDefinitionT_2 rdn =
+ {"rdn", SA_IMM_ATTR_SANAMET, SA_IMM_ATTR_RUNTIME | SA_IMM_ATTR_CACHED
| SA_IMM_ATTR_RDN, NULL};
+ SaUint32T defaultVal = 100;
+ SaImmAttrDefinitionT_2 hasDefault =
+ {"attr", SA_IMM_ATTR_SAUINT32T, SA_IMM_ATTR_RUNTIME |
SA_IMM_ATTR_CACHED, &defaultVal};
+ SaImmAttrDefinitionT_2 defaultRemoved =
+ {"attr", SA_IMM_ATTR_SAUINT32T, SA_IMM_ATTR_RUNTIME |
SA_IMM_ATTR_CACHED | SA_IMM_ATTR_DEFAULT_REMOVED, NULL};
+ const SaImmAttrDefinitionT_2 *attrDefinitions[] = {&rdn, NULL, NULL};
+
+ attrDefinitions[1] = &hasDefault;
+ safassert(saImmOmClassCreate_2(immOmHandle, className,
SA_IMM_CLASS_RUNTIME, attrDefinitions), SA_AIS_OK);
+ attrDefinitions[1] = &defaultRemoved;
+ safassert(saImmOmClassCreate_2(immOmHandle, className,
SA_IMM_CLASS_RUNTIME, attrDefinitions), SA_AIS_OK);
+ attrDefinitions[1] = &hasDefault;
+ rc = saImmOmClassCreate_2(immOmHandle, className, SA_IMM_CLASS_RUNTIME,
attrDefinitions);
+ test_validate(rc, SA_AIS_OK);
+ safassert(saImmOmClassDelete(immOmHandle, className), SA_AIS_OK);
+
+ safassert(saImmOmFinalize(immOmHandle), SA_AIS_OK);
+ if (!schemaChangeEnabled) disableSchemaChange();
+}
+
+void saImmOmClassCreate_SchemaChange_2_11(void)
+{
+ /*
+ * [RUNTIME_CLASS] Remove default value from attribute that doesn't have
default value
+ */
+ int schemaChangeEnabled = enableSchemaChange();
+ safassert(saImmOmInitialize(&immOmHandle, &immOmCallbacks, &immVersion),
SA_AIS_OK);
+
+ const SaImmClassNameT className = (SaImmClassNameT) __FUNCTION__;
+ SaImmAttrDefinitionT_2 rdn =
+ {"rdn", SA_IMM_ATTR_SANAMET, SA_IMM_ATTR_RUNTIME | SA_IMM_ATTR_CACHED
| SA_IMM_ATTR_RDN, NULL};
+ SaImmAttrDefinitionT_2 noDefault =
+ {"attr", SA_IMM_ATTR_SAUINT32T, SA_IMM_ATTR_RUNTIME |
SA_IMM_ATTR_CACHED, NULL};
+ SaImmAttrDefinitionT_2 defaultRemoved =
+ {"attr", SA_IMM_ATTR_SAUINT32T, SA_IMM_ATTR_RUNTIME |
SA_IMM_ATTR_CACHED | SA_IMM_ATTR_DEFAULT_REMOVED, NULL};
+ const SaImmAttrDefinitionT_2 *attrDefinitions[] = {&rdn, NULL, NULL};
+
+ attrDefinitions[1] = &noDefault;
+ safassert(saImmOmClassCreate_2(immOmHandle, className,
SA_IMM_CLASS_RUNTIME, attrDefinitions), SA_AIS_OK);
+ attrDefinitions[1] = &defaultRemoved;
+ rc = saImmOmClassCreate_2(immOmHandle, className, SA_IMM_CLASS_RUNTIME,
attrDefinitions);
+ test_validate(rc, SA_AIS_ERR_EXIST);
+ safassert(saImmOmClassDelete(immOmHandle, className), SA_AIS_OK);
+
+ safassert(saImmOmFinalize(immOmHandle), SA_AIS_OK);
+ if (!schemaChangeEnabled) disableSchemaChange();
+}
+
+void saImmOmClassCreate_SchemaChange_2_12(void)
+{
+ /*
+ * [RUNTIME_CLASS] Remove DEFAULT_REMOVED flag without adding default value
+ */
+ int schemaChangeEnabled = enableSchemaChange();
+ safassert(saImmOmInitialize(&immOmHandle, &immOmCallbacks, &immVersion),
SA_AIS_OK);
+
+ const SaImmClassNameT className = (SaImmClassNameT) __FUNCTION__;
+ SaImmAttrDefinitionT_2 rdn =
+ {"rdn", SA_IMM_ATTR_SANAMET, SA_IMM_ATTR_RUNTIME | SA_IMM_ATTR_CACHED
| SA_IMM_ATTR_RDN, NULL};
+ SaImmAttrDefinitionT_2 noDefault =
+ {"attr", SA_IMM_ATTR_SAUINT32T, SA_IMM_ATTR_RUNTIME |
SA_IMM_ATTR_CACHED, NULL};
+ SaUint32T defaultVal = 100;
+ SaImmAttrDefinitionT_2 hasDefault =
+ {"attr", SA_IMM_ATTR_SAUINT32T, SA_IMM_ATTR_RUNTIME |
SA_IMM_ATTR_CACHED, &defaultVal};
+ SaImmAttrDefinitionT_2 defaultRemoved =
+ {"attr", SA_IMM_ATTR_SAUINT32T, SA_IMM_ATTR_RUNTIME |
SA_IMM_ATTR_CACHED | SA_IMM_ATTR_DEFAULT_REMOVED, NULL};
+ const SaImmAttrDefinitionT_2 *attrDefinitions[] = {&rdn, NULL, NULL};
+
+ attrDefinitions[1] = &hasDefault;
+ safassert(saImmOmClassCreate_2(immOmHandle, className,
SA_IMM_CLASS_RUNTIME, attrDefinitions), SA_AIS_OK);
+ attrDefinitions[1] = &defaultRemoved;
+ safassert(saImmOmClassCreate_2(immOmHandle, className,
SA_IMM_CLASS_RUNTIME, attrDefinitions), SA_AIS_OK);
+ attrDefinitions[1] = &noDefault;
+ rc = saImmOmClassCreate_2(immOmHandle, className, SA_IMM_CLASS_RUNTIME,
attrDefinitions);
+ test_validate(rc, SA_AIS_ERR_EXIST);
+ safassert(saImmOmClassDelete(immOmHandle, className), SA_AIS_OK);
+
+ safassert(saImmOmFinalize(immOmHandle), SA_AIS_OK);
+ if (!schemaChangeEnabled) disableSchemaChange();
+}
+
+void saImmOmClassCreate_SchemaChange_2_13(void)
+{
+ /*
+ * [RUNTIME_CLASS] Add new attribute with DEFAULT_REMOVED flag to a class
+ */
+ int schemaChangeEnabled = enableSchemaChange();
+ safassert(saImmOmInitialize(&immOmHandle, &immOmCallbacks, &immVersion),
SA_AIS_OK);
+
+ const SaImmClassNameT className = (SaImmClassNameT) __FUNCTION__;
+ SaImmAttrDefinitionT_2 rdn =
+ {"rdn", SA_IMM_ATTR_SANAMET, SA_IMM_ATTR_RUNTIME | SA_IMM_ATTR_CACHED
| SA_IMM_ATTR_RDN, NULL};
+ SaImmAttrDefinitionT_2 defaultRemoved =
+ {"attr", SA_IMM_ATTR_SAUINT32T, SA_IMM_ATTR_RUNTIME |
SA_IMM_ATTR_CACHED | SA_IMM_ATTR_DEFAULT_REMOVED, NULL};
+ const SaImmAttrDefinitionT_2 *attrDefinitions[] = {&rdn, NULL, NULL};
+
+ safassert(saImmOmClassCreate_2(immOmHandle, className,
SA_IMM_CLASS_RUNTIME, attrDefinitions), SA_AIS_OK);
+ attrDefinitions[1] = &defaultRemoved;
+ rc = saImmOmClassCreate_2(immOmHandle, className, SA_IMM_CLASS_RUNTIME,
attrDefinitions);
+ test_validate(rc, SA_AIS_ERR_EXIST);
+ safassert(saImmOmClassDelete(immOmHandle, className), SA_AIS_OK);
+
+ safassert(saImmOmFinalize(immOmHandle), SA_AIS_OK);
+ if (!schemaChangeEnabled) disableSchemaChange();
+}
+
+void saImmOmClassCreate_SchemaChange_2_14(void)
+{
+ /*
+ * [RUNTIME_CLASS] Create new class with DEFAULT_REMOVED flag
+ */
+ int schemaChangeEnabled = enableSchemaChange();
+ safassert(saImmOmInitialize(&immOmHandle, &immOmCallbacks, &immVersion),
SA_AIS_OK);
+
+ const SaImmClassNameT className = (SaImmClassNameT) __FUNCTION__;
+ SaImmAttrDefinitionT_2 rdn =
+ {"rdn", SA_IMM_ATTR_SANAMET, SA_IMM_ATTR_RUNTIME | SA_IMM_ATTR_CACHED
| SA_IMM_ATTR_RDN, NULL};
+ SaImmAttrDefinitionT_2 defaultRemoved =
+ {"attr", SA_IMM_ATTR_SAUINT32T, SA_IMM_ATTR_RUNTIME |
SA_IMM_ATTR_CACHED | SA_IMM_ATTR_DEFAULT_REMOVED, NULL};
+ const SaImmAttrDefinitionT_2 *attrDefinitions[] = {&rdn, &defaultRemoved,
NULL};
+
+ rc = saImmOmClassCreate_2(immOmHandle, className, SA_IMM_CLASS_RUNTIME,
attrDefinitions);
+ test_validate(rc, SA_AIS_ERR_INVALID_PARAM);
+
+ safassert(saImmOmFinalize(immOmHandle), SA_AIS_OK);
+ if (!schemaChangeEnabled) disableSchemaChange();
+}
+
+void saImmOmClassCreate_SchemaChange_2_15(void)
+{
+ /*
+ * [RUNTIME_CLASS] Set value of default-removed attribute to empty when
creating an object
+ */
+ int schemaChangeEnabled = enableSchemaChange();
+ safassert(saImmOmInitialize(&immOmHandle, &immOmCallbacks, &immVersion),
SA_AIS_OK);
+
+ const SaImmClassNameT className = (SaImmClassNameT) __FUNCTION__;
+ SaImmAttrDefinitionT_2 rdn =
+ {"rdn", SA_IMM_ATTR_SANAMET, SA_IMM_ATTR_RUNTIME | SA_IMM_ATTR_CACHED
| SA_IMM_ATTR_RDN, NULL};
+ SaUint32T defaultVal = 100;
+ SaImmAttrDefinitionT_2 hasDefault =
+ {"attr", SA_IMM_ATTR_SAUINT32T, SA_IMM_ATTR_RUNTIME |
SA_IMM_ATTR_CACHED, &defaultVal};
+ SaImmAttrDefinitionT_2 defaultRemoved =
+ {"attr", SA_IMM_ATTR_SAUINT32T, SA_IMM_ATTR_RUNTIME |
SA_IMM_ATTR_CACHED | SA_IMM_ATTR_DEFAULT_REMOVED, NULL};
+ const SaImmAttrDefinitionT_2 *attrDefinitions[] = {&rdn, NULL, NULL};
+
+ attrDefinitions[1] = &hasDefault;
+ safassert(saImmOmClassCreate_2(immOmHandle, className,
SA_IMM_CLASS_RUNTIME, attrDefinitions), SA_AIS_OK);
+ attrDefinitions[1] = &defaultRemoved;
+ safassert(saImmOmClassCreate_2(immOmHandle, className,
SA_IMM_CLASS_RUNTIME, attrDefinitions), SA_AIS_OK);
+
+ SaImmOiImplementerNameT implementerName = (SaImmOiImplementerNameT)
__FUNCTION__;
+ SaNameT objectName;
+ objectName.length = strlen(__FUNCTION__);
+ strncpy((char *) objectName.value, __FUNCTION__, objectName.length);
+ SaNameT* nameValues[] = {&objectName};
+ SaImmAttrValuesT_2 rdnValue = {"rdn", SA_IMM_ATTR_SANAMET, 1, (void**)
nameValues};
+ const SaImmAttrValuesT_2 * attrValues[] = {&rdnValue, NULL};
+ safassert(saImmOiInitialize_2(&immOiHandle, &immOiCallbacks, &immVersion),
SA_AIS_OK);
+ safassert(saImmOiImplementerSet(immOiHandle, implementerName), SA_AIS_OK);
+
+ /* Create object */
+ rc = saImmOiRtObjectCreate_2(immOiHandle, className, NULL, attrValues);
+ test_validate(rc, SA_AIS_ERR_INVALID_PARAM);
+
+ safassert(saImmOiImplementerClear(immOiHandle), SA_AIS_OK);
+ safassert(saImmOiFinalize(immOiHandle), SA_AIS_OK);
+
+ safassert(saImmOmClassDelete(immOmHandle, className), SA_AIS_OK);
+
+ safassert(saImmOmFinalize(immOmHandle), SA_AIS_OK);
+ if (!schemaChangeEnabled) disableSchemaChange();
+}
+
+void saImmOmClassCreate_SchemaChange_2_16(void)
+{
+ /*
+ * [RUNTIME_CLASS] Set value of default-restored attribute to empty when
creating an object
+ */
+ int schemaChangeEnabled = enableSchemaChange();
+ safassert(saImmOmInitialize(&immOmHandle, &immOmCallbacks, &immVersion),
SA_AIS_OK);
+
+ const SaImmClassNameT className = (SaImmClassNameT) __FUNCTION__;
+ SaImmAttrDefinitionT_2 rdn =
+ {"rdn", SA_IMM_ATTR_SANAMET, SA_IMM_ATTR_RUNTIME | SA_IMM_ATTR_CACHED
| SA_IMM_ATTR_RDN, NULL};
+ SaUint32T defaultVal = 100;
+ SaImmAttrDefinitionT_2 hasDefault =
+ {"attr", SA_IMM_ATTR_SAUINT32T, SA_IMM_ATTR_RUNTIME |
SA_IMM_ATTR_CACHED, &defaultVal};
+ SaImmAttrDefinitionT_2 defaultRemoved =
+ {"attr", SA_IMM_ATTR_SAUINT32T, SA_IMM_ATTR_RUNTIME |
SA_IMM_ATTR_CACHED | SA_IMM_ATTR_DEFAULT_REMOVED, NULL};
+ const SaImmAttrDefinitionT_2 *attrDefinitions[] = {&rdn, NULL, NULL};
+
+ attrDefinitions[1] = &hasDefault;
+ safassert(saImmOmClassCreate_2(immOmHandle, className,
SA_IMM_CLASS_RUNTIME, attrDefinitions), SA_AIS_OK);
+ attrDefinitions[1] = &defaultRemoved;
+ safassert(saImmOmClassCreate_2(immOmHandle, className,
SA_IMM_CLASS_RUNTIME, attrDefinitions), SA_AIS_OK);
+ attrDefinitions[1] = &hasDefault;
+ safassert(saImmOmClassCreate_2(immOmHandle, className,
SA_IMM_CLASS_RUNTIME, attrDefinitions), SA_AIS_OK);
+
+ SaImmOiImplementerNameT implementerName = (SaImmOiImplementerNameT)
__FUNCTION__;
+ SaNameT objectName;
+ objectName.length = strlen(__FUNCTION__);
+ strncpy((char *) objectName.value, __FUNCTION__, objectName.length);
+ SaNameT* nameValues[] = {&objectName};
+ SaImmAttrValuesT_2 rdnValue = {"rdn", SA_IMM_ATTR_SANAMET, 1, (void**)
nameValues};
+ const SaImmAttrValuesT_2 * attrValues[] = {&rdnValue, NULL};
+ safassert(saImmOiInitialize_2(&immOiHandle, &immOiCallbacks, &immVersion),
SA_AIS_OK);
+ safassert(saImmOiImplementerSet(immOiHandle, implementerName), SA_AIS_OK);
+
+ /* Create object */
+ safassert(saImmOiRtObjectCreate_2(immOiHandle, className, NULL,
attrValues), SA_AIS_OK);
+
+ /* Check value of the attribute
+ There's no pure runtime attributes so there will be no deadlock here */
+ SaImmAccessorHandleT accessorHandle;
+ const SaImmAttrNameT attName = "attr";
+ SaImmAttrNameT attNames[] = {attName, NULL};
+ SaImmAttrValuesT_2 ** resultAttrs;
+ safassert(saImmOmAccessorInitialize(immOmHandle, &accessorHandle),
SA_AIS_OK);
+ safassert(saImmOmAccessorGet_2(accessorHandle, &objectName, attNames,
&resultAttrs), SA_AIS_OK);
+ assert(resultAttrs[0] && (resultAttrs[0]->attrValueType ==
SA_IMM_ATTR_SAUINT32T));
+ assert(resultAttrs[0]->attrValuesNumber == 1);
+ test_validate(*((SaUint32T *) resultAttrs[0]->attrValues[0]), defaultVal);
+
+ /* Delete Object */
+ safassert(saImmOiRtObjectDelete(immOiHandle, &objectName), SA_AIS_OK);
+
+ safassert(saImmOiImplementerClear(immOiHandle), SA_AIS_OK);
+ safassert(saImmOiFinalize(immOiHandle), SA_AIS_OK);
+
+ safassert(saImmOmClassDelete(immOmHandle, className), SA_AIS_OK);
+
+ safassert(saImmOmFinalize(immOmHandle), SA_AIS_OK);
+ if (!schemaChangeEnabled) disableSchemaChange();
+}
extern void saImmOmClassDescriptionGet_2_01(void);
extern void saImmOmClassDescriptionGet_2_02(void);
@@ -351,5 +995,22 @@ extern void saImmOmClassDelete_2_04(void
test_case_add(2, saImmOmClassDelete_2_03, "saImmOmClassDelete_2 -
SA_AIS_ERR_NOT_EXIST, className does not exist");
test_case_add(2, saImmOmClassCreate_2_13, "saImmOmClassCreate_2 UPGRADE -
SA_AIS_OK/SA_AIS_ERR_EXIST, Added attribute to class");
test_case_add(2, saImmOmClassDelete_2_04, "saImmOmClassDelete_2 -
SA_AIS_ERR_INVALID_PARAM, Empty classname");
+
+ test_case_add(2, saImmOmClassCreate_SchemaChange_2_01, "SchemaChange -
SA_AIS_OK, Remove default value by adding DEFAULT_REMOVED flag (Config class)");
+ test_case_add(2, saImmOmClassCreate_SchemaChange_2_02, "SchemaChange -
SA_AIS_OK, Add default value to default-removed attribute (Config class)");
+ test_case_add(2, saImmOmClassCreate_SchemaChange_2_03, "SchemaChange -
SA_AIS_ERR_EXIST, Remove default value from attribute that doesn't have default
value (Config class)");
+ test_case_add(2, saImmOmClassCreate_SchemaChange_2_04, "SchemaChange -
SA_AIS_ERR_EXIST, Remove DEFAULT_REMOVED flag without adding default value
(Config class)");
+ test_case_add(2, saImmOmClassCreate_SchemaChange_2_05, "SchemaChange -
SA_AIS_ERR_EXIST, Add new attribute with DEFAULT_REMOVED flag to a class
(Config class)");
+ test_case_add(2, saImmOmClassCreate_SchemaChange_2_06, "SchemaChange -
SA_AIS_ERR_INVALID_PARAM, Create new class with DEFAULT_REMOVED flag (Config
class)");
+ test_case_add(2, saImmOmClassCreate_SchemaChange_2_07, "SchemaChange - Set
value of default-removed attribute to empty when creating an object (Config
class)");
+ test_case_add(2, saImmOmClassCreate_SchemaChange_2_08, "SchemaChange - Set
value of default-restored attribute to empty when creating an object (Config
class)");
+ test_case_add(2, saImmOmClassCreate_SchemaChange_2_09, "SchemaChange -
SA_AIS_OK, Remove default value by adding DEFAULT_REMOVED flag (Runtime
class)");
+ test_case_add(2, saImmOmClassCreate_SchemaChange_2_10, "SchemaChange -
SA_AIS_OK, Add default value to default-removed attribute (Runtime class)");
+ test_case_add(2, saImmOmClassCreate_SchemaChange_2_11, "SchemaChange -
SA_AIS_ERR_EXIST, Remove default value from attribute that doesn't have default
value (Runtime class)");
+ test_case_add(2, saImmOmClassCreate_SchemaChange_2_12, "SchemaChange -
SA_AIS_ERR_EXIST, Remove DEFAULT_REMOVED flag without adding default value
(Runtime class)");
+ test_case_add(2, saImmOmClassCreate_SchemaChange_2_13, "SchemaChange -
SA_AIS_ERR_EXIST, Add new attribute with DEFAULT_REMOVED flag to a class
(Runtime class)");
+ test_case_add(2, saImmOmClassCreate_SchemaChange_2_14, "SchemaChange -
SA_AIS_ERR_INVALID_PARAM, Create new class with DEFAULT_REMOVED flag (Runtime
class)");
+ test_case_add(2, saImmOmClassCreate_SchemaChange_2_15, "SchemaChange -
SA_AIS_ERR_INVALID_PARAM, Set value of default-removed attribute to empty when
creating an object (Runtime class)");
+ test_case_add(2, saImmOmClassCreate_SchemaChange_2_16, "SchemaChange - Set
value of default-restored attribute to empty when creating an object (Runtime
class)");
}
------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel