Option Explicit

'***********************************************************************
'
'   ClusResGroups and related tests
'
'***********************************************************************
'
'Following are marks for lines to be included in translated script version of test
StartTest

'----------------------------------------------------------------------
Sub StartTest()

On Error Resume Next

Dim oLogView

'Set oLogView = CreateObject("Atl1.LogView")

'oLogView.logFileName = "d:\nt\private\cluster\admin\msclus\vbscript\vbResGroups.log"
'oLogView.logFileName = "d:\\projects\\msclust\\vb\\jsResGroups.log"
ResGroupsTest oLogView
End Sub

'-----------------------------------------------------------------------

Sub ResGroupsTest(oLogView)
On Error Resume Next

Dim oCluster
Dim collResGroups

'oLogView.AddResult1 1, "Creating object MSCluster.Cluster"
'JS_TRY<
Set oCluster = CreateObject("MSCluster.Cluster")
'JS_CATCH>
If Err.Number <> 0 Then
    'oLogView.AddResult1 2, "Cluster creation failed:" & Err.Description
Exit Sub
Else
    'oLogView.AddResult1 8, "Instance of Cluster created"
End If

'JS_TRY<
oCluster.Open ("GALENB-CLUS")
'JS_CATCH>
If Err.Number <> 0 Then
    'oLogView.AddResult1 2, "Cluster open failed:" & Err.Description
    Exit Sub
Else
    'oLogView.AddResult1 8, "Cluster IGORPCLUS opened successfuly"
End If

'JS_TRY<
Set collResGroups = oCluster.ResourceGroups
'JS_CATCH>
If Err.Number <> 0 Then
    'oLogView.AddResult1 2, "Cluster:ResGroups failed:" & Err.Description
    Exit Sub
Else
    'oLogView.AddResult1 8, "Cluster:ResGroups retrieved"
End If

RunResGroupsTests oLogView, collResGroups

End Sub
'-----------------------------------------------------------------------
Sub RunResGroupsTests(oLogView, collResGroups)
On Error Resume Next

Dim count
Dim oResGroup

'JS_TRY<
count = collResGroups.count
'JS_CATCH>
If Err.Number <> 0 Then
    'oLogView.AddResult1 2, "ClusResGroups:Count failed:" & Err.Description
    Exit Sub
Else
    'oLogView.AddResult1 8, "ClusResGroups:Count: " & count
End If

'test collection's Refresh
TestRefresh oLogView, collResGroups

'---------- Create new group
'JS_TRY<
Set oResGroup = collResGroups.CreateItem("8TestGroup")
'JS_CATCH>
If Err.Number <> 0 Then
    'oLogView.AddResult1 2, "ClusResGroups:CreateItem(8TestGroup) failed:" & Err.Description
    Exit Sub 'nothing to test
Else
    'oLogView.AddResult1 8, "ClusResGroups:CreateItem(8TestGroup) succeeded"

    TestResGroup oLogView, oResGroup

    TestPreferredOwners oLogView, oResGroup

    'JS_TRY<
    collResGroups.DeleteItem ("8TestGroup")
    'JS_CATCH>
    If Err.Number <> 0 Then
        'oLogView.AddResult1 2, "ClusResGroups:DeleteItem(8TestGroup) failed:" & Err.Description
        Err.Clear 'clean exit
    Else
        'oLogView.AddResult1 8, "ClusResGroups:DeleteItem(8TestGroup) succeeded"
    End If
End If

End Sub
'-----------------------------------------------------------------------
Sub TestResGroup(oLogView, oResGroup)
On Error Resume Next
' all common stuff is tested in common test

Dim state
Dim oCluster
Dim groupName

'----------- test renaming
'oLogView.AddResult1 1, "Testing ClusResGroup.Name member"
'JS_TRY
groupName = oResGroup.Name
'JS_CATCH
If Err.Number <> 0 Then
    'oLogView.AddResult1 2, "Get ClusResGroup.Name failed:" & Err.Description
    Err.Clear
Else
    'oLogView.AddResult1 8, "ClusResGroup.Name: " & groupName
    'JS_TRY
    oResGroup.Name = "8TestAnotherName"
    'JS_CATCH
    If Err.Number <> 0 Then
        'oLogView.AddResult1 2, "Renaming ClusResGroup.Name failed:" & Err.Description
        Err.Clear
    Else
        'oLogView.AddResult1 8, "New ClusResGroup.Name: " & oResGroup.Name
        'JS_TRY
       oResGroup.Name = groupName
        'JS_CATCH
        If Err.Number <> 0 Then
            'oLogView.AddResult1 2, "Renaming to original name failed:" & Err.Description
            Err.Clear
        Else
            'oLogView.AddResult1 8, "Original ClusResGroup.Name restored: " & groupName
        End If
    End If
End If

'----------- state
'JS_TRY<
state = oResGroup.state
'JS_CATCH>
If Err.Number <> 0 Then
    'oLogView.AddResult1 2, "ClusResGroup.State failed:" & Err.Description
    Err.Clear
Else
    'oLogView.AddResult1 8, "ClusResGroup.State: " & state
    'should be offline - freshly created
    If state = 1 Then 'ClusterGroupOffline
        TestGroupResources oLogView, oResGroup
    Else
        'oLogView.AddResult1 3, "Created group " & oResGroup.Name & " not in expected offline state. Current state: " & state
    End If 'no offline
End If

End Sub
'-----------------------------------------------------------------------
Sub TestGroupResources(oLogView, oResGroup)
On Error Resume Next

Dim collResources
Dim oResource
Dim lCount
Dim oOwnerNode
Dim state
Dim oAnotherOwner 'this time as VARIANT

'JS_TRY<
Set collResources = oResGroup.Resources
lCount = collResources.count
'JS_CATCH>
If Err.Number <> 0 Then
    'oLogView.AddResult1 2, "Get ClusResGroup.Resources failed:" & Err.Description
    Exit Sub
Else
    'oLogView.AddResult1 8, "Get ClusResGroup.Resources succeeded. Number of resources: " & lCount
    'add item
    'JS_TRY<
    Set oResource = collResources.CreateItem("8TestResource", "Generic Application", 0)
    collResources.Refresh
    'JS_CATCH>
    If Err.Number <> 0 Then
        'oLogView.AddResult1 2, "ClusResGroupResource.CreateItem failed:" & Err.Description
        Err.Clear
    Else
        'oLogView.AddResult1 8, "ClusResGroupResource.CreateItem( Generic application) succeeded"
    End If

    If collResources.count <> 1 Then
        'oLogView.AddResult1 2, "ClusResGroup.Resources.CreateItem: added resource not in collection"
    Else
        'oLogView.AddResult1 8, "ClusResGroup.Resources.CreateItem: count = 1"
    End If

    'JS_TRY<
    collResources.DeleteItem ("8TestResource")
    collResources.Refresh
    'JS_CATCH>
    If Err.Number <> 0 Then
        'oLogView.AddResult1 2, "ClusResGroup.Resources.DeleteItem failed: " & Err.Description
        Err.Clear
    Else
        'oLogView.AddResult1 8, "ClusResGroup.Resources.DeleteItem succeeded"
    End If
    If collResources.count <> 0 Then
        'oLogView.AddResult1 2, "ClusResGroup.Resources.DeleteItem: refresh after DeleteItem failure"
    Else
        'oLogView.AddResult1 8, "ClusResGroup.Resources.DeleteItem Refresh count = 0"
    End If

    '------------ online
    'JS_TRY<
		MsgBox "Online"
    oResGroup.Online( 10000 )
    'JS_CATCH>
    If Err.Number <> 0 Then
		MsgBox "Online Error " & Err.Description
        'oLogView.AddResult1 2, "ClusResGroup.Online failed: " & Err.Description
        Err.Clear
    Else
		MsgBox "Online succeeded"
        'oLogView.AddResult1 8, "ClusResGroup.Online succeeded"
    End If

    '------------ offline
    'JS_TRY<
    oResGroup.Offline 10000
    'JS_CATCH>
    If Err.Number <> 0 Then
        'oLogView.AddResult1 2, "ClusResGroup.Offline failed: " & Err.Description
        Err.Clear
    Else
        'oLogView.AddResult1 8, "ClusResGroup.Offline succeeded"
    End If

    '------------- OwnerNode
    'JS_TRY<
    Set oOwnerNode = oResGroup.OwnerNode
    'JS_CATCH>
    If Err.Number <> 0 Then
        'oLogView.AddResult1 2, "ClusResGroup.OwnerNode failed: " & Err.Description
        Err.Clear
    Else
        'oLogView.AddResult1 8, "ClusResGroup.OwnerNode succeeded"
    End If

    '------------- move
    'JS_TRY<
    oResGroup.Move 10000
    'JS_CATCH>
    If Err.Number <> 0 Then
        'oLogView.AddResult1 2, "ClusResGroup.Move failed: " & Err.Description
        Err.Clear
    Else
        'oLogView.AddResult1 8, "ClusResGroup.Move succeeded"
        Set oAnotherOwner = oResGroup.OwnerNode
        If oAnotherOwner.Name <> oOwnerNode.Name Then
            'oLogView.AddResult1 8, "New owner of test group: " & oAnotherOwner.Name
        Else
            'oLogView.AddResult1 2, "New owner of test group after Move is the same as original: " & oAnotherOwner.Name
        End If
    End If

    'move back
    'JS_TRY<
    oResGroup.Move 10000, oOwnerNode
    'JS_CATCH>
    If Err.Number <> 0 Then
        'oLogView.AddResult1 2, "ClusResGroup.Move to original node failed: " & Err.Description
        Err.Clear
    Else
        'oLogView.AddResult1 8, "ClusResGroup.Move to original node succeeded"
        Set oAnotherOwner = oResGroup.OwnerNode
        If oAnotherOwner.Name = oOwnerNode.Name Then
            'oLogView.AddResult1 8, "New owner of test group is original node " & oAnotherOwner.Name
        Else
            'oLogView.AddResult1 2, "New owner of test group after Move differs original: " & oAnotherOwner.Name
        End If
    End If

    Set oAnotherOwner = Nothing

    'move it again and bring online on original node
    'JS_TRY<
    oResGroup.Move 10000
    oResGroup.Online 10000, oOwnerNode
    'JS_CATCH>
    If Err.Number <> 0 Then
        'oLogView.AddResult1 2, "ClusResGroup.Move/Online failed: " & Err.Description
        Err.Clear
    Else
        'oLogView.AddResult1 8, "ClusResGroup.Move/Online succeeded"
        'check that node is online on expected node
        state = oResGroup.state
        If state <> 0 Then 'ClusterGroupOnline
            'oLogView.AddResult1 2, "State after ClusResGroup.Move/Online differs from expected online: " & state
        Else
            'oLogView.AddResult1 8, "State after ClusResGroup.Move/Online as expected: online"
        End If

        Set oAnotherOwner = oResGroup.OwnerNode
        If oAnotherOwner.Name = oOwnerNode.Name Then
            'oLogView.AddResult1 8, "New owner of test group is original node " & oAnotherOwner.Name
        Else
            'oLogView.AddResult1 2, "New owner of test group after Move differs original: " & oAnotherOwner.Name
        End If
    End If

    oResGroup.Offline 10000

End If

End Sub
'-----------------------------------------------------------------------
Sub TestPreferredOwners(oLogView, oResGroup)
On Error Resume Next

Dim collPreferredOwnerNodes
Dim lCount
Dim oClusNode 'try this as VARIANT

'JS_TRY<
Set collPreferredOwnerNodes = oResGroup.PreferredOwnerNodes
'JS_CATCH>
If Err.Number <> 0 Then
    'oLogView.AddResult1 2, "Get ClusResGroup.PreferredOwnerNodes failed: " & Err.Description
    Exit Sub
Else

    TestRefresh oLogView, collPreferredOwnerNodes

    'JS_TRY<
    'check number of preferred owners in collection
    lCount = collPreferredOwnerNodes.count
    'JS_CATCH>
    If Err.Number <> 0 Then
        'oLogView.AddResult1 2, "ClusResGroupPreferredOwnerNodes.Count failed: " & Err.Description
        Exit Sub
    Else
        'add node to the group
        'JS_TRY<
        Set oClusNode = oResGroup.OwnerNode
        collPreferredOwnerNodes.InsertItem oClusNode
        'JS_CATCH>
        If Err.Number <> 0 Then
            'oLogView.AddResult1 2, "ClusResGroupPreferredOwnerNodes.InsertItem failed: " & Err.Description
            Err.Clear
        Else
            'oLogView.AddResult1 8, "ClusResGroupPreferredOwnerNodes.InsertItem succeeded"
            'check that Modified flag is set
            If collPreferredOwnerNodes.Modified <> 0 Then 'we expect true here
                'oLogView.AddResult1 8, "Flag ClusResGroupPreferredOwnerNodes.Modify set after InsertItem"
            Else
                'oLogView.AddResult1 3, "Flag ClusResGroupPreferredOwnerNodes.Modify NOT set after InsertItem"
            End If
            collPreferredOwnerNodes.Refresh
            If collPreferredOwnerNodes.Modified <> 0 Then 'we expect false here
                'oLogView.AddResult1 3, "Flag ClusResGroupPreferredOwnerNodes.Modify set after Refresh after InsertItem"
            Else
                'oLogView.AddResult1 8, "Flag ClusResGroupPreferredOwnerNodes.Modify not set after Refresh after InsertItem"
            End If
            'check number of items in collection
            If collPreferredOwnerNodes.count = 1 Then
                'oLogView.AddResult1 8, "ClusResGroupPreferredOwnerNodes.count is 1"
            Else
                'oLogView.AddResult1 2, "ClusResGroupPreferredOwnerNodes.count is NOT 1: " & collPreferredOwnerNodes.count
            End If

            '--------- now remove item from collection
            'JS_TRY<
            collPreferredOwnerNodes.RemoveItem oClusNode.Name
            'JS_CATCH>
            If Err.Number <> 0 Then
                'oLogView.AddResult1 2, "ClusResGroupPreferredOwnerNodes.RemoveItem failed: " & Err.Description
                Err.Clear
            Else
                'oLogView.AddResult1 8, "ClusResGroupPreferredOwnerNodes.RemoveItem succeeded"
                'check that Modified flag is set
                If collPreferredOwnerNodes.Modified <> 0 Then 'we expect true here
                    'oLogView.AddResult1 8, "Flag ClusResGroupPreferredOwnerNodes.Modify set after RemoveItem"
                Else
                    'oLogView.AddResult1 3, "Flag ClusResGroupPreferredOwnerNodes.Modify NOT set after RemoveItem"
                End If
                collPreferredOwnerNodes.Refresh
                If collPreferredOwnerNodes.Modified <> 0 Then 'we expect false here
                    'oLogView.AddResult1 3, "Flag ClusResGroupPreferredOwnerNodes.Modify set after Refresh after RemoveItem"
                Else
                    'oLogView.AddResult1 8, "Flag ClusResGroupPreferredOwnerNodes.Modify not set after Refresh after RemoveItem"
                End If
                'check number of items in collection
                If collPreferredOwnerNodes.count = 0 Then
                    'oLogView.AddResult1 8, "ClusResGroupPreferredOwnerNodes.count is 0"
                Else
                    'oLogView.AddResult1 2, "ClusResGroupPreferredOwnerNodes.count is NOT 0"
                End If
            End If
        End If
    End If

End If

End Sub
'-----------------------------------------------------------------------
'-----------------------------------------------------------------------
Sub TestRefresh(oLogObject, colCollection)

On Error Resume Next

Dim origCount
Dim afterCount

'JS_TRY<
origCount = colCollection.count
colCollection.Refresh
afterCount = colCollection.count
'JS_CATCH>
If Err.Number <> 0 Then
    'oLogObject.AddResult1 2, "Refresh failed with error:" & Err.Description
Else
    If origCount <> afterCount Then 'counts are not equal
        'oLogObject.AddResult1 2, "Count changes after Refresh:" & origCount & " differs from " & afterCount
    Else
        'oLogObject.AddResult1 8, "Refresh succeeded"
    End If
End If

End Sub
'----------------------- End of file -----------------------------------

'*****************************************************************************
'*
'*  Translated by VB2script translator on Thu Feb 18 17:31:58 1999
'*  from file resgroups.bas
'*
'*****************************************************************************