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, 
&paramValue };
+    const SaImmAdminOperationParamsT_2 *params[] = { &param,  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, 
&paramValue };
+    const SaImmAdminOperationParamsT_2 *params[] = { &param,  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

Reply via email to